diff --git a/Insurance/KdoJeLékař/kdojelekar_20250101.py b/Insurance/KdoJeLékař/kdojelekar_20250101.py new file mode 100644 index 0000000..db2f8a7 --- /dev/null +++ b/Insurance/KdoJeLékař/kdojelekar_20250101.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +kdojelekar_20250101.py +====================== +Jednorázový skript: vybere pacienty registrované k 01.01.2025 +a dotáže se VZP B2B na jejich registrujícího lékaře k tomuto datu. +Výsledky uloží do stejných MySQL tabulek jako týdenní skript +(vzp_registrace_lekari, vzp_registrace_raw) s k_datu = 2025-01-01. + +Resumovatelný — přeskočí pacienty, kteří již mají raw XML pro k_datu=2025-01-01. +""" + +import sys +import time +from pathlib import Path +from datetime import date + +PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent +sys.path.insert(0, str(PROJECT_ROOT)) + +from Knihovny.vzpb2b_client import VZPB2BClient +from Knihovny.mysql_db import connect_mysql +from Knihovny.medicus_db import get_medicus_connection + +# ── KONFIGURACE ─────────────────────────────────────────────────────────────── + +K_DATU = date(2025, 1, 1) +API_PAUSE = 2 + +PFX_PATH = Path(__file__).resolve().parent.parent / "Certificates" / "picka.pfx" +PFX_PASS = "Vlado7309208104+" +ODBORNOSTI = None # None = bez filtru odborností + +# ── INIT ────────────────────────────────────────────────────────────────────── + +vzp = VZPB2BClient("prod", str(PFX_PATH), PFX_PASS) +mysql = connect_mysql() + +# ── PACIENTI Z MEDICUS (registrovaní k 01.01.2025) ─────────────────────────── + +import fdb, socket + +computer_name = socket.gethostname().upper() +dsn_map = { + "LEKAR": r"localhost:M:\medicus\data\medicus.fdb", + "SESTRA": r"192.168.1.10:m:\medicus\data\medicus.fdb", + "LENOVO": r"192.168.1.10:m:\medicus\data\medicus.fdb", +} +dsn = dsn_map.get(computer_name, r"localhost:c:\medicus 3\data\medicus.fdb") +fb_conn = fdb.connect(dsn=dsn, user="SYSDBA", password="masterkey", charset="win1250") +fb_cur = fb_conn.cursor() + +fb_cur.execute(""" + SELECT kar.rodcis, kar.prijmeni, kar.jmeno, kar.poj + FROM kar + WHERE kar.vyrazen = 'N' + AND kar.rodcis IS NOT NULL + AND kar.rodcis <> '' + AND EXISTS ( + SELECT r.id FROM registr r + JOIN icp i ON r.idicp = i.idicp + WHERE r.idpac = kar.idpac + AND r.datum <= ? + AND (r.datum_zruseni IS NULL OR r.datum_zruseni >= ?) + AND r.priznak IN ('V', 'D', 'A') + AND i.icp = '09305001' + AND i.odb = '001' + ) + ORDER BY kar.prijmeni, kar.rodcis +""", (K_DATU.isoformat(), K_DATU.isoformat())) + +cols = [d[0].strip().lower() for d in fb_cur.description] +pacienti = [dict(zip(cols, row)) for row in fb_cur.fetchall()] +fb_conn.close() + +print(f"Pacientu registrovanych k {K_DATU}: {len(pacienti)}") + +# ── RESUME: přeskočit již hotové ───────────────────────────────────────────── + +with mysql.cursor() as cur: + cur.execute("SELECT rc FROM vzp_registrace_raw WHERE k_datu = %s", (K_DATU,)) + hotove = {row[0] for row in cur.fetchall()} + +pacienti = [p for p in pacienti if (p.get("rodcis") or "").strip() not in hotove] +print(f"Zbyvá zpracovat: {len(pacienti)} ({len(hotove)} již hotovo)\n") + +# ── BATCH ───────────────────────────────────────────────────────────────────── + +call_count = 0 + +for i, pac in enumerate(pacienti): + rc = (pac.get("rodcis") or "").strip() + prijmeni = (pac.get("prijmeni") or "").strip() + jmeno = (pac.get("jmeno") or "").strip() + + if not rc: + continue + + if call_count > 0: + time.sleep(API_PAUSE) + call_count += 1 + + print(f"[{i+1}/{len(pacienti)}] {prijmeni} {jmeno} ({rc}) ...", end=" ", flush=True) + + try: + xml = vzp.registrace_lekare(rc=rc, k_datu=K_DATU.isoformat(), odbornosti=ODBORNOSTI) + zaznamy = vzp.parse_registrace_lekare(xml) + except Exception as e: + print(f"CHYBA: {e}") + continue + + print(f"{len(zaznamy)} lekar(u)") + + for z in zaznamy: + print(f" {z['kod_odbornosti']}: {z['nazev_lekare']} / {z['nazev_zzz']}" + f" [{z['datum_zahajeni']} - {z['datum_ukonceni']}]") + + if not zaznamy: + print(" (zadny lekar v zadne odbornosti)") + + with mysql.cursor() as cur: + cur.execute(""" + INSERT INTO vzp_registrace_raw (rc, k_datu, raw_xml) + VALUES (%s, %s, %s) + ON DUPLICATE KEY UPDATE raw_xml=VALUES(raw_xml) + """, (rc, K_DATU, xml)) + + with mysql.cursor() as cur: + for z in zaznamy: + cur.execute(""" + INSERT INTO vzp_registrace_lekari + (rc, prijmeni, jmeno, k_datu, kod_odbornosti, ma_lekare, + ICZ, ICP, nazev_lekare, nazev_zzz, + poj_kod, poj_zkratka, + datum_registrace, datum_zahajeni, datum_ukonceni, + stav_vyrizeni) + VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) + ON DUPLICATE KEY UPDATE + prijmeni=VALUES(prijmeni), jmeno=VALUES(jmeno), + ma_lekare=VALUES(ma_lekare), + ICZ=VALUES(ICZ), ICP=VALUES(ICP), + nazev_lekare=VALUES(nazev_lekare), nazev_zzz=VALUES(nazev_zzz), + poj_kod=VALUES(poj_kod), poj_zkratka=VALUES(poj_zkratka), + datum_registrace=VALUES(datum_registrace), + datum_zahajeni=VALUES(datum_zahajeni), + datum_ukonceni=VALUES(datum_ukonceni), + stav_vyrizeni=VALUES(stav_vyrizeni) + """, ( + rc, prijmeni, jmeno, K_DATU, z["kod_odbornosti"], 1 if z["ma_lekare"] else 0, + z["ICZ"], z["ICP"], z["nazev_lekare"], z["nazev_zzz"], + z["poj_kod"], z["poj_zkratka"], + z["datum_registrace"], z["datum_zahajeni"], z["datum_ukonceni"], + z["stav_vyrizeni"], + )) + +print(f"\nHotovo. VZP dotazu: {call_count}") +mysql.close() diff --git a/Medevio/60 ScansProcessing/corrections.json b/Medevio/60 ScansProcessing/corrections.json index 6895e53..7a08d22 100644 --- a/Medevio/60 ScansProcessing/corrections.json +++ b/Medevio/60 ScansProcessing/corrections.json @@ -538,5 +538,77 @@ { "original": "7209160057 2026-04-20 Procházka, David [žádost o předání zdravotních informací] [MUDr. Buzálková].pdf", "corrected": "7209160057 2026-04-20 Procházka, David [žádost o předání zdravotních informací] [pro nového PL MUDr. Drahomíra Krivosudská].pdf" + }, + { + "original": "7701120955 2026-04-28 Moudrý, Michal [ABPM] [24h monitoring, SYS avg 134, DIA avg 82, extreme dipper SYS-23% DIA-28%].pdf", + "corrected": "7701120955 2026-04-28 Moudrý, Michal [HolterTK] [denní hypertenze, noc OK].pdf" + }, + { + "original": "6761150341 2026-01-29 Písaříková, Helena [LZ neurologie] [RS RR forma, přechod do sek. progrese, Mayzent 10 měs., EDSS 4.5, bez progrese].pdf", + "corrected": "6761150341 2026-01-29 Písaříková, Helena [LZ neurologie] [RS RR forma, jejich pravidelná kontrola].pdf" + }, + { + "original": "0151200214 2017-12-19 Menciová, Štěpánka [sono břicha] [komplikovaný cystoid pr. adnex 91x47x38mm, odtlačuje uterus, nutné gynek. vyš.].pdf", + "corrected": "0151200214 2017-12-19 Menclová, Štěpánka [sono břicha] [komplikovaný cystoid pr. adnex 91x47x38mm, odtlačuje uterus, nutné gynek. vyš.].pdf" + }, + { + "original": "7412080214 2023-02-01 Malina, Miroslav [Laboratoř] [dg. Z000 - laktózová intolerance, homozygot C/C a G/G].pdf", + "corrected": "7412080214 2023-02-01 Malina, Miroslav [Laboratoř] [dg. Z000 - laktózová intolerance, homozygot CC a GG].pdf" + }, + { + "original": "465525112 2025-11-06 Hoserová, Marie [LZ diabetologie] [DM typ 2 recentní záchyt, malá dávka PAD, HbA1c 56mmol/mol, výborná kompenzace].pdf", + "corrected": "465525112 2025-11-06 Hoserová, Marie [LZ diabetologie] [DM typ 2 recentní záchyt, malá dávka PAD, HbA1c 56mmolmol, výborná kompenzace].pdf" + }, + { + "original": "426203053 2026-04-28 Hercíková, Irena [LZ neurologie] [Chronický CC a CB syndrom, neradikulární, M. Ménieri, somatizační porucha].pdf", + "corrected": "426203053 2026-04-28 Hercíková, Irena [LZ neurologie] [Chronický CC a CB syndrom, neradikulární, M. Ménier, somatizační porucha].pdf" + }, + { + "original": "385312025 2026-04-21 Aubrechtová, Iva [LZ rehabilitace] [polyneuropatie a radikulopatie L5, doporučena rehabilitace, event. lázeňská terapie].pdf", + "corrected": "385312025 2026-04-21 Aubrechtová, Iva [LZ rehabilitace] [polyneuropatie a radikulopatie L5, doporučena rehabilitace, event. lázeňská terapie VI_2].pdf" + }, + { + "original": "385312025 2026-04-22 Aubrechtová, Iva [LZ kardiologie] [ICHS II st.p. covidové myokarditidě, St.p. těžké sideropenické anémii, AB zhoršeno po Covidu 2025].pdf", + "corrected": "385312025 2026-04-22 Aubrechtová, Iva [LZ kardiologie] [kontrola, ICHS II st.p. covidové myokarditidě, St.p. těžké sideropenické anémii, AB zhoršeno po Covidu 2025].pdf" + }, + { + "original": "385312025 2026-04-21 Aubrechtová, Iva [LZ rehabilitace] [polyneuropatie a radikulopatie L5, doporučena rehabilitace za 3 měs.].pdf", + "corrected": "385312025 2026-04-21 Aubrechtová, Iva [LZ rehabilitace] [EMG DK, polyneuropatie a radikulopatie L5, doporučena rehabilitace za 3 měs.].pdf" + }, + { + "original": "385312025 2026-04-22 Aubrechtová, Iva [LZ neurologie] [PNP DKK axonální distální symetrická, CB syndrom l dx, ls syndrom, blok SIk vpravo, iritační lese L5 dx, KT bilat].pdf", + "corrected": "385312025 2026-04-22 Aubrechtová, Iva [LZ neurologie] [PNP DKK axonální distální symetrická, CB syndrom l dx, ls syndrom, blok SIk vpravo, iritační lese L5 dx, KT bilat, doporučení KLL VI_2 dg G629].pdf" + }, + { + "original": "0151200214 2016-10-14 Menclová, Štěpánka [PZ infekční] [04OCT2016–14OCT2016 neuroborrelioza, IgM i IgG ELISA i WB pozit.].pdf", + "corrected": "0151200214 2016-10-14 Menclová, Štěpánka [PZ infekční] [04–14OCT2016 neuroborrelioza a primoinfekce CMV, IgM i IgG ELISA i WB pozit.].pdf" + }, + { + "original": "405720062 2026-04-21 Havlínová, Věra [LZ kardiologie] [Normální koronarografie. Dominance: Pravotyp.].pdf", + "corrected": "405720062 2026-04-21 Havlínová, Věra [LZ kardiologie] [Normální koronarografie. Dominance Pravotyp.].pdf" + }, + { + "original": "6860241553 2025-02-07 Šímová, Helena [LZ infekční] [Herpes zoster L2 vpravo, Herpesin 800mg 5x denně, vakcin. za 6-12 měs.].pdf", + "corrected": "6860241553 2025-02-07 Šímová, Helena [LZ infekční] [Herpes zoster L2 vpravo, Herpesin 800mg 5x denně, doporučena vakcin. za 6-12 měs.].pdf" + }, + { + "original": "7755043516 2026-04-07 Králová, Jana [Laboratoř] [dg. E119 - glukóza OGTT 0min 7.4, OGTT 120min 12.1 mmolL].pdf", + "corrected": "7755043516 2026-04-07 Králová, Jana [Laboratoř] [dg. E119, zvýšená Glu nalačno, porušená Glu tolerance - glukóza OGTT 0min 7.4, OGTT 120min 12.1 mmolL].pdf" + }, + { + "original": "7412080214 2026-04-28 Malina, Miroslav [EKG] [HR 63/min, PQ 118ms, QRS 150ms, QT 368ms, QTc 379ms, široký QRS].pdf", + "corrected": "7412080214 2026-04-28 Malina, Miroslav [EKG] [HR 63min, PQ 118ms, QRS 150ms, QT 368ms, QTc 379ms, široký QRS].pdf" + }, + { + "original": "Pages from 2026-04-29-09-25-41-2.pdf", + "corrected": "9705624511 2026-04-28 [EKG] [bez hodnocení].pdf" + }, + { + "original": "Pages from 2026-04-29-09-25-41-3.pdf", + "corrected": "0151200214 2026-04-28 [EKG] [bez hodnocení].pdf" + }, + { + "original": "7412080214 2024-04-22 Malina, Miroslav [EKG] [Lehká porucha nitrokomor. vedení, veget. stigmata, bez čerstvých lož. změn a dysrytmií].pdf", + "corrected": "7412080214 2024-04-22 Malina, Miroslav [EKG] [Lehká porucha nitrokomor. vedení, veget. stigmata, bez čerstvých lož. změn a dysrytmií, bez vývoje].pdf" } ] \ No newline at end of file