5.4 KiB
FinalReconcilliation — sledování stavu registrovaných pacientů
Cíl
Jednoznačně roztřídit pacienty registrované v Medicusu podle skutečnosti ověřené u pojišťovny: kdo je k danému dni jejich registrující praktik (odbornost 001) dle VZP B2B.
- praktik = Buzalková (IČP 09305001) → pacient je v zakoupeném souboru pacientů (OK)
- praktik = kdokoli jiný / žádný → „NEBYL V ZAKOUPENÉM SOUBORU PACIENTŮ"
„Registrovaný v Medicusu" je jen stav v software; tohle ověřuje realitu u pojišťovny.
Úložiště — MongoDB
| Server | mongodb://192.168.1.76:27017 (stejný stroj jako MySQL medevio) |
| Databáze | ordinace |
| Kolekce | registrovani_tracking |
| Klíč | _id = rodné číslo (1 dokument na pacienta) |
Schéma dokumentu
{
"_id": "8202...", "rc": "8202...", "prijmeni": "...", "jmeno": "...",
"pojistovna": {"kod": "111", "zkratka": "VZP"},
"vychozi_datum": "2025-01-01",
"aktualni": { ...snímek... },
"historie": [ { ...snímek..., "zmena": "výchozí snímek" } ],
"created_at": ISODate, "updated_at": ISODate
}
Snímek (aktualni i položky historie[]):
k_datu, kategorie, kategorie_popis, v_zakoupenem_souboru (bool), flag, flag_duvod, praktik_nazev, praktik_icz, praktik_icp, praktik_od, datum_zahajeni, datum_ukonceni
praktik_nazev/praktik_icz/praktik_icp= KDO je registrující praktik dle VZP (uOK_BUZALKOVABuzalková, uJINY_PRAKTIKcizí ZZZ).praktik_od(=datum_zahajeni) = OD KDY je u tohoto praktika registrován.flag_duvod= čitelný důvod mimo soubor, např."jiný praktik: MOJE AMBULANCE A.S. (IČZ 91777000) od 2014-01-01".
Kategorie (plné podkategorie)
| kategorie | význam | v souboru |
|---|---|---|
OK_BUZALKOVA |
praktik 001 = Buzalková (IČP 09305001) | ✅ ano |
JINY_PRAKTIK |
praktik 001 je jiné ZZZ | 🚩 ne |
BEZ_PRAKTIKA_VZP |
u VZP záznam (jiná odb.), ale praktik 001 ne | 🚩 ne |
BEZ_ZAZNAMU_VZP |
VZP nevrátila žádný záznam (jiná pojišťovna / neplatné RČ / zaniklé pojištění) | 🚩 ne |
Stav k výchozímu snímku 1.1.2025
Populace = 1688 pacientů registrovaných v Medicusu k 1.1.2025 (= RČ v vzp_registrace_raw pro to datum).
| kategorie | počet |
|---|---|
| OK_BUZALKOVA | 1537 |
| JINY_PRAKTIK | 53 |
| BEZ_ZAZNAMU_VZP | 50 |
| BEZ_PRAKTIKA_VZP | 48 |
| v souboru / mimo | 1537 / 151 |
Skript seed_tracking.py
Zdroj klasifikace = MySQL medevio tabulky vzp_registrace_raw + vzp_registrace_lekari
(plní je skripty z Insurance/KdoJeLekar/).
python seed_tracking.py # výchozí snímek k 2025-01-01
python seed_tracking.py 2026-05-02 # aplikuje další snímek (appendne změny do historie)
Funkce apply_snapshot(coll, mysql, k_datu):
- nový pacient → vloží dokument s historií
["výchozí snímek"] - existující pacient → při změně
kategorienebopraktik_icpappendne položku dohistorie[]a aktualizujeaktualni; jinak jenupdated_at
→ tím se postupně trackují změny stavu mezi jednotlivými běhy.
Doplnění jmen (BEZ_ZAZNAMU_VZP)
50 pacientů bez žádného VZP záznamu nemá jméno v MySQL vzp_registrace_lekari.
Jména + pojišťovnu jim doplňujeme z Medicus Firebird (tabulka kar) — uloženo i pole
medicus_poj. Pozn.: kdo má medicus_poj=111 (VZP), ale je BEZ_ZAZNAMU_VZP, je reálně
podezřelý (zaniklé pojištění/úmrtí); 201/205/207/211 jsou prostě jiné pojišťovny.
Reconciliation workflow — statusy
Zakoupený soubor (příloha smlouvy) = Inputs/2025-01-01 seznam_pacientu_jmeno_rc.csv
(OCR ze skenu; ;-CSV, UTF-8 BOM; sloupce Příjmení a jméno; Rodné číslo; Strana; Řádek).
1712 RČ. (Opraven 1 OCR překlep RČ: Slavíková Zuzana 8956534235→8956039037.)
Každý dokument nese workflow stav:
| pole | význam |
|---|---|
status (int) |
aktuální stav workflow |
status_popis |
název stavu |
status_datum |
datum platnosti stavu |
status_historie[] |
postup stavů (status, status_popis, status_datum, zapsano) |
ve_smlouve (bool) |
je pacient v zakoupeném souboru 1712? |
mimo_vzp_populaci |
true = doplněn ze smlouvy, nebyl ve VZP populaci k 1.1.2025 |
Stavy
| status | popis | datum | skript |
|---|---|---|---|
| 0 | Zakoupeno | 31.12.2024 | 01_zakoupeno.py |
01_zakoupeno.py (idempotentní): nastaví status 0 všem 1712 ze smlouvy.
- 1678 už v Mongo → status 0
- 34 chybělo (odhlášeni u Buzalkové před předáním) → doplněno z
kar,mimo_vzp_populaci=true,aktualni.kategorie="ODHLASEN_PRED_PREDANIM"+medicus_zruseni - 10 v Mongo mimo smlouvu →
ve_smlouve=false(status 0 nedostali)
Kolekce po kroku 0: 1722 dokumentů (1712 ve smlouvě + 10 mimo).
Reconciliation 1712 (k 1.1.2025)
1712 zakoupeno (status 0)
−34 registrace zrušena před 1.1.2025 (mimo_vzp_populaci)
─────
1678 registrovaní v Medicusu k 1.1.2025
├ 1531 OK Buzalková · 50 jiný praktik · 49 bez záznamu · 48 bez praktika
Další kroky (workflow)
- Definovat status 1, 2, … (např. 1 = ověřeno u VZP / registrovaný u Buzalkové).
- Aplikovat snímky z dalších běhů (29.4. a 2.5.2026 v MySQL) → naplní
historie[]. - Doplnit ověření stavu pojištění (
vzp_stav_pojisteni). - Finální reconciliation Excel + MCP nástroj nad kolekcí.