Files
ordinaceprojekt/Medicus/MedicusWithClaudeDekurz/DEKURZY_REPORT.md
T
Vladimir Buzalka a9c143ba24 notebookvb
2026-04-29 06:51:47 +02:00

4.7 KiB
Raw Blame History

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

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.