Files
medicus/MedicusWithClaudeDekurz/DEKURZY_REPORT.md
T
2026-04-01 06:05:21 +02:00

141 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dekurzy report dokumentace
## Co report dělá
Generuje Excel soubor s přehledem všech dekurzů z ordinace MUDr. Buzalkové za zadané období.
Hlavní list **Dekurz** zobrazuje každý dekurz jako jeden řádek. Čísla v sloupcích jsou klikatelné hyperlinkové zkratky, které přeskočí na příslušný detailní list (Recepty, Výkony, Soubory apod.).
---
## Spuštění
```
python dekurz_report.py
```
**Vstupní parametry** (nastavit přímo v souboru):
| Proměnná | Výchozí hodnota | Popis |
|---|---|---|
| `DATUM_OD` | `2025-01-01` | Začátek období |
| `DATUM_DO` | dnešní datum | Konec období (automaticky) |
| `VYSTUPNI_ADRESAR` | `u:\Dropbox\Ordinace\Reporty` | Kam se ukládá |
| `NAZEV_REPORTU` | `Dekurzy` | Část názvu souboru |
**Výstupní soubor:** `YYYY-MM-DD HH-MM-SS Dekurzy.xlsx`
Starý soubor se stejným názvem je automaticky smazán.
---
## Zdroj dat
Databáze Firebird: `localhost:c:\medicus 3\data\medicus.fdb`
Připojení: SYSDBA / masterkey, charset win1250
### Hlavní dotaz
```sql
SELECT d.DATUM, d.CAS, u.ZKRATKA, k.PRIJMENI, k.JMENO, k.RODCIS, k.POJ, d.DEKURS
FROM DEKURS d
JOIN KAR k ON k.IDPAC = d.IDPAC
LEFT JOIN UZIVATEL u ON u.IDUZI = d.IDUZI
WHERE d.DATUM >= '2025-01-01' AND d.DATUM <= dnes
ORDER BY d.DATUM DESC, d.CAS DESC, k.PRIJMENI, k.JMENO
```
Řazení: nejnovější záznamy nahoře.
---
## Jak funguje parsování RTF bookmarků
Každý dekurz je uložen jako RTF blob ve sloupci `DEKURS.DEKURS`.
Medicus do RTF hlavičky zapisuje **bookmarky** hypertextové odkazy na propojené záznamy:
```
{\info{\bookmarks "ATORIS","Rec:322528",17;"01543","VykA:189603",8}}
```
Formát: `"název","TYP:ID",číslo_stylu`
Skript parsuje regex `"([^"]+)","([A-Za-z]+):(\d+)"` a extrahuje typ a ID záznamu.
### Typy bookmarků a jejich tabulky
| Bookmark | List v Excelu | Tabulka v DB | PK | Zobrazované sloupce |
|---|---|---|---|---|
| `Rec` | Recepty | `RECEPT` | `ID` | LEK, DSIG (lék, dávkování) |
| `VykA` | Výkony | `DOKLADD` | `ID` | KOD, DDGN (kód výkonu, diagnóza) |
| `Files` | Soubory | `FILES` | `ID` | FILENAME, DATUM |
| `MEDLAB` | MedLab | `HISTDOC` | `ID` | DATUM, TYP (žádanka do laboratoře) |
| `Lab` | Lab | `LABVH` | `IDVH` | DATUM, CISLO (výsledky laboratoře) |
| `Ock` | Očkování | `OCKZAZ` | `ID` | DATUM, LATKA (vakcína) |
| `Nes` | Neschop. | `NES` | `ID` | ZACNES, KONNES (od do) |
| `Lec` | Léčiva | `LECD` | `ID` | KOD, DATOSE (léčivo podané v ordinaci) |
| `SpecVys` | SpecVys | `SPECVYS` | `IDSPECVYS` | TYP, DATUM (Tonotrack, holter…) |
| `PlaPac` | Platby | `PLA` | `IDPLA` | DATUM, CENA, DOKLAD |
| ostatní | Ostatní | | | TYP, ID, Název (formuláře, poukazy…) |
**Ostatní typy** (méně časté):
`ORTOPE` ePoukaz na ortopedickou pomůcku
`ZDRINF` Žádost o předání zdravotních informací
`PROHLAS` Prohlášení
`POTDPN` Potvrzení DPN
`MOTORVO` Posudek motorového vozidla
`LAZPEC` Lázně
`VypZdrD` Výpis ze zdravotní dokumentace
`VYMLIST` Výměnný list
`PouRTG` Poukaz RTG
`ZPUPRN` Způsobilost k práci/řízení
`EPOSMRO` ePosudek MRO
`ZNESUP` Potvrzení neschopnosti uchazeče o zaměstnání
> Všechny výše uvedené jdou do listu **Ostatní** s uvedením typu, ID a názvu.
---
## Struktura Excel souboru
### List Dekurz (hlavní)
| Sloupec | Zdroj | Popis |
|---|---|---|
| Datum | `DEKURS.DATUM` | Datum dekurzu |
| Čas | `DEKURS.CAS` | Čas (HH:MM) |
| Lékař | `UZIVATEL.ZKRATKA` | MBU / VBU / ISE |
| Jméno | `KAR.PRIJMENI + JMENO` | Formát: `Příjmení, I.` |
| Rodné číslo | `KAR.RODCIS` | |
| Pojišťovna | `KAR.POJ` | Kód pojišťovny (111, 201…) |
| Rec … PlaPac | RTF bookmark | Počet záznamů **klikací hyperlink** na detailní list |
| Ostatní | RTF bookmark | Počet ostatních typů hyperlink na list Ostatní |
### Detailní listy
Každý list má:
- Záhlaví s vlastní barevnou kombinací
- Sloupce: Datum, Jméno + specifické sloupce dle typu
- Střídání bílých a barevných řádků
- Tenké šedé ohraničení všech buněk
- Zmrazený první řádek
- Autofiltr
---
## Technické poznámky
- Firebird limit `IN (...)` je 1500 hodnot dotazy na detaily se automaticky dělí do dávek po 1000
- RTF blob je čten přes `blob.read()` nebo přímo jako string
- Jméno pacienta: `Příjmení, I.` (iniciála prvního písmene jména)
- Chybová hláška `BlobReader.close: invalid BLOB handle` je neškodná GC uzavírá handlery po odpojení DB
---
## Scheduled Task
Spouštěcí příkaz:
```
python "C:\Users\vlado\PycharmProjects\Medicus\MedicusWithClaudeDekurz\dekurz_report.py"
```
Doporučené spouštění: každý den ráno (např. 6:00), aby byl vždy čerstvý soubor v Dropboxu.