diff --git a/MedicusWithClaudeDekurz/DEKURZY_REPORT.md b/MedicusWithClaudeDekurz/DEKURZY_REPORT.md new file mode 100644 index 0000000..a0b9033 --- /dev/null +++ b/MedicusWithClaudeDekurz/DEKURZY_REPORT.md @@ -0,0 +1,140 @@ +# 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.