notebook vb
This commit is contained in:
@@ -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.
|
||||||
Reference in New Issue
Block a user