z230
This commit is contained in:
@@ -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 4–6s 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é
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user