This commit is contained in:
2026-04-16 14:20:38 +02:00
parent e23735d07e
commit ef7c5d77dc
441 changed files with 1913 additions and 14 deletions
@@ -172,7 +172,7 @@ Jeden řádek na celý recept (ID_Dokladu).
| Sloupec | Typ | Poznámka |
|---------|-----|----------|
| `id_dokladu` | VARCHAR(20) PK | ERP kód |
| `stav` | ENUM | PREDEPSANY / CASTECNE_VYDANY / PLNE_VYDANY / ZRUSENY |
| `stav` | ENUM | PREDEPSANY / PRIPRAVOVANY / CASTECNE_VYDANY / PLNE_VYDANY / ZRUSENY |
| `stav_terminal` | TINYINT(1) | 1 = nepotřebuje další stahování |
| `datum_vystaveni` | DATE | |
| `platnost_do` | DATE | |
@@ -180,7 +180,7 @@ Jeden řádek na celý recept (ID_Dokladu).
| `akutni` | TINYINT(1) | |
| `rodina` | TINYINT(1) | ad usum proprium |
| `opakovani` | INT | NULL = není opakovací |
| `druh_pojisteni` | ENUM | VEREJNE / OSTATNI |
| `druh_pojisteni` | ENUM | VEREJNE / OSTATNI / POJISTENI_EU |
| `modry_pruh` | TINYINT(1) | |
| `pozn` | VARCHAR(1000) | |
| `zap_doplatek` | DECIMAL(10,2) | ZapocitatelnyDoplatekZbyvaDoLimitu |
@@ -245,6 +245,9 @@ Výsledek = Python set. Pro každý ERP kód z Medicusu:
- je v setu → přeskočit (vydaný / zrušený / expirovaný)
- není v setu → stáhnout
Stornované recepty jsou filtrovány přímo v dotazu do Firebirdu (`AND r.STORNO = 'F'`),
takže se pro ně SOAP volání na SÚKL vůbec neprovádí.
### Co je terminální (`stav_terminal = 1`)
- `stav IN ('PLNE_VYDANY', 'ZRUSENY')`
@@ -270,10 +273,12 @@ DATUM_FILTR = None # např. "2026-04-14", nebo None = celý archiv
### Co dělá
1. Najde nejnovější XML pro každý ERP kód (nejvyšší datum v adresářové struktuře)
2. Naparsuje stav, platnost, pacient, předepisující, PLP položky
3. `recept_doklad`: INSERT ... ON DUPLICATE KEY UPDATE (stav se může změnit)
4. `recept_plp`: INSERT IGNORE (UUID je stabilní)
1. Načte z MySQL `{id_dokladu: xml_soubor}` pro všechny již zpracované záznamy
2. Najde nejnovější XML pro každý ERP kód (nejvyšší datum v adresářové struktuře)
3. Přeskočí soubory, jejichž cesta se nezměnila oproti DB — zpracuje jen nově stažené
4. Naparsuje stav, platnost, pacient, předepisující, PLP položky
5. `recept_doklad`: INSERT ... ON DUPLICATE KEY UPDATE (stav se může změnit)
6. `recept_plp`: INSERT IGNORE (UUID je stabilní)
### Správné pořadí spuštění
@@ -286,11 +291,11 @@ Bez spuštění `11` budou terminální recepty znovu stahovány.
---
## Ověřeno (14. 4. 2026)
## Ověřeno (16. 4. 2026)
- Hromadné stažení od 1. 1. 2025 spuštěno (`LIMIT = None`)
- Průběžně zpracováno 2 167 / 9 595 receptů bez chyb
- Odhad celkového běhu: ~16 hodin při 46s náhodné pauze
- Hromadné stažení od 1. 1. 2025 dokončeno (`LIMIT = None`)
- Staženo 9 616 receptů (po filtraci stornovaných z Firebirdu)
- `11_ParseXML.py` přeskakuje nezměněné soubory — opakované spuštění zpracuje jen nově stažené
---