z230
This commit is contained in:
@@ -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()
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user