From 371eed997123b11bddc4d52288d6959cd797652c Mon Sep 17 00:00:00 2001 From: Vladimir Buzalka Date: Sun, 3 May 2026 07:02:22 +0200 Subject: [PATCH] notebookvb --- Insurance/SeznamPojistencu/01_parse_seznam.py | 114 +++++++ Insurance/SeznamPojistencu/02_import_do_db.py | 165 ++++++++++ .../SeznamPojistencu/03_porovnani_davek.py | 226 +++++++++++++ Insurance/SeznamPojistencu/04_najdi_zlomy.py | 233 ++++++++++++++ .../SeznamPojistencu/06_nasledny_lekar.py | 219 +++++++++++++ Insurance/SeznamPojistencu/99_report_excel.py | 303 ++++++++++++++++++ .../{ => Tests}/zadej_davku.py | 0 .../SeznamPojistencu/porovnani_davek.xlsx | Bin 0 -> 14038 bytes .../SeznamPojistencu/report_pojistenci.xlsx | Bin 0 -> 117073 bytes 9 files changed, 1260 insertions(+) create mode 100644 Insurance/SeznamPojistencu/01_parse_seznam.py create mode 100644 Insurance/SeznamPojistencu/02_import_do_db.py create mode 100644 Insurance/SeznamPojistencu/03_porovnani_davek.py create mode 100644 Insurance/SeznamPojistencu/04_najdi_zlomy.py create mode 100644 Insurance/SeznamPojistencu/06_nasledny_lekar.py create mode 100644 Insurance/SeznamPojistencu/99_report_excel.py rename Insurance/SeznamPojistencu/{ => Tests}/zadej_davku.py (100%) create mode 100644 Insurance/SeznamPojistencu/porovnani_davek.xlsx create mode 100644 Insurance/SeznamPojistencu/report_pojistenci.xlsx diff --git a/Insurance/SeznamPojistencu/01_parse_seznam.py b/Insurance/SeznamPojistencu/01_parse_seznam.py new file mode 100644 index 0000000..2e05979 --- /dev/null +++ b/Insurance/SeznamPojistencu/01_parse_seznam.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys as _sys +_sys.stdout.reconfigure(encoding="utf-8", errors="replace") +_sys.stderr.reconfigure(encoding="utf-8", errors="replace") +""" +01_parse_seznam.py +================== +Najde a rozparsuje dávky VZP – Seznam registrovaných pojištěnců (III-1.1.2). +Formát souboru: Fxxxmmur.nnn, pevná šířka, kódování CP852. + +Záhlaví (typ H, délka 20): + HTYP C 1 0 typ věty 'H' + HICP N 8 1 IČP lékaře + HPUP N 5 9 počet uznávaných pojištěnců + HROK N 2 14 poslední dvojčíslí roku + HMES N 2 16 měsíc + HDEN N 2 18 den + +Registrace (typ I, délka 82): + ITYP C 1 0 typ věty 'I' + IPOR N 4 1 pořadové číslo + IVS N 2 5 věková skupina + IPRI C 30 7 příjmení + IJME C 24 37 jméno + ICIP C 10 61 číslo pojištěnce + IDUOD D 8 71 datum uznání registrace (DDMMRRRR) + ICPO C 3 79 kód pojišťovny +""" + +import re +from pathlib import Path +from datetime import date, timedelta + +DAVKY_DIR = Path(r"U:\Dropbox\Ordinace\Dokumentace_ke_zpracování\Zúčtovací zprávy\111 VZP Podání") +ENCODING = "cp852" + + +def parse_davku(path: Path) -> dict: + """Vrátí dict s klíči 'hlavicka' a 'pojistenci'.""" + lines = path.read_bytes().splitlines() + hlavicka = None + pojistenci = [] + + for raw in lines: + line = raw.decode(ENCODING, errors="replace") + if not line: + continue + + if line[0] == "H": + hlavicka = { + "icp": line[1:9].strip(), + "pocet": int(line[9:14].strip() or 0), + "rok": 2000 + int(line[14:16]), + "mesic": int(line[16:18]), + "den": int(line[18:20]), + } + + elif line[0] == "I": + if len(line) < 82: + continue + dat_raw = line[71:79] # DDMMRRRR + try: + datum = date(int(dat_raw[4:8]), int(dat_raw[2:4]), int(dat_raw[0:2])) + except ValueError: + datum = None + + pojistenci.append({ + "por": int(line[1:5].strip() or 0), + "vs": line[5:7].strip(), + "prijmeni": line[7:37].strip(), + "jmeno": line[37:61].strip(), + "cip": line[61:71].strip(), + "datum_od": datum, + "pojistovna": line[79:82].strip(), + }) + + return {"hlavicka": hlavicka, "pojistenci": pojistenci, "soubor": path.name} + + +def najdi_davky(adresar: Path) -> list[Path]: + """Vrátí seřazený seznam souborů odpovídajících vzoru Fxxx*.nnn.""" + return sorted( + [p for p in adresar.iterdir() + if re.search(r"F\d{3}.*\.\d{3}$", p.name, re.IGNORECASE)], + key=lambda p: p.name + ) + + +def tiskni_davku(d: dict) -> None: + h = d["hlavicka"] + if h: + print(f"\n=== {d['soubor']} ===") + print(f" IČP: {h['icp']} | datum: {h['den']:02d}.{h['mesic']:02d}.{h['rok']} | pojištěnců: {h['pocet']}") + print(f" {'#':>4} {'Příjmení':<30} {'Jméno':<24} {'ČIP':<10} {'Datum od':>10} Pojiš.") + print(f" {'-'*4} {'-'*30} {'-'*24} {'-'*10} {'-'*10} {'-'*6}") + else: + print(f"\n=== {d['soubor']} === (záhlaví chybí)") + + for p in d["pojistenci"]: + datum_str = p["datum_od"].strftime("%d.%m.%Y") if p["datum_od"] else "?" + print(f" {p['por']:>4} {p['prijmeni']:<30} {p['jmeno']:<24} {p['cip']:<10} {datum_str:>10} {p['pojistovna']}") + + +# ── MAIN ────────────────────────────────────────────────────────────────────── + +davky = najdi_davky(DAVKY_DIR) +print(f"Nalezeno dávek: {len(davky)}") + +for cesta in davky: + data = parse_davku(cesta) + tiskni_davku(data) + +print(f"\nCelkem dávek: {len(davky)}") diff --git a/Insurance/SeznamPojistencu/02_import_do_db.py b/Insurance/SeznamPojistencu/02_import_do_db.py new file mode 100644 index 0000000..5a3cad1 --- /dev/null +++ b/Insurance/SeznamPojistencu/02_import_do_db.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys as _sys +_sys.stdout.reconfigure(encoding="utf-8", errors="replace") +_sys.stderr.reconfigure(encoding="utf-8", errors="replace") +""" +02_import_do_db.py +================== +Vytvoří tabulku seznam_pojistencu_davky v medevio DB a naimportuje +všechny dávky F111*.nnn ze složky Podání. + +Spuštění: + python 02_import_do_db.py # import všech dávek + python 02_import_do_db.py --reset # smaže a znovu vytvoří tabulku před importem +""" + +import re +import sys +import argparse +from pathlib import Path +from datetime import date + +sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "Knihovny")) +from mysql_db import connect_mysql + +DAVKY_DIR = Path(r"U:\Dropbox\Ordinace\Dokumentace_ke_zpracování\Zúčtovací zprávy\111 VZP Podání") +ENCODING = "cp852" + +CREATE_SQL = """ +CREATE TABLE IF NOT EXISTS seznam_pojistencu_davky ( + id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + soubor VARCHAR(60) NOT NULL COMMENT 'Název souboru dávky', + icp VARCHAR(8) NOT NULL COMMENT 'IČP lékaře (HICP)', + davka_rok SMALLINT NOT NULL COMMENT 'Rok dávky (HROK)', + davka_mesic TINYINT NOT NULL COMMENT 'Měsíc dávky (HMES)', + davka_den TINYINT NOT NULL COMMENT 'Den pořízení seznamu (HDEN)', + por SMALLINT NOT NULL COMMENT 'Pořadové číslo v dávce (IPOR)', + vs VARCHAR(2) NOT NULL COMMENT 'Věková skupina (IVS)', + prijmeni VARCHAR(30) NOT NULL COMMENT 'Příjmení pojištěnce (IPRI)', + jmeno VARCHAR(24) NOT NULL COMMENT 'Jméno pojištěnce (IJME)', + cip VARCHAR(10) NOT NULL COMMENT 'Číslo pojištěnce (ICIP)', + datum_od DATE NULL COMMENT 'Datum uznání registrace (IDUOD)', + pojistovna VARCHAR(3) NOT NULL COMMENT 'Kód pojišťovny (ICPO)', + vytvoreno TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + UNIQUE KEY uq_soubor_por (soubor, por) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci + COMMENT='VZP seznam registrovaných pojištěnců III-1.1.2'; +""" + + +def parse_davku(path: Path) -> dict: + lines = path.read_bytes().splitlines() + hlavicka = None + pojistenci = [] + + for raw in lines: + line = raw.decode(ENCODING, errors="replace") + if not line: + continue + + if line[0] == "H": + hlavicka = { + "icp": line[1:9].strip(), + "pocet": int(line[9:14].strip() or 0), + "rok": 2000 + int(line[14:16]), + "mesic": int(line[16:18]), + "den": int(line[18:20]), + } + + elif line[0] == "I": + if len(line) < 82: + continue + dat_raw = line[71:79] # DDMMRRRR + try: + datum = date(int(dat_raw[4:8]), int(dat_raw[2:4]), int(dat_raw[0:2])) + except ValueError: + datum = None + + pojistenci.append({ + "por": int(line[1:5].strip() or 0), + "vs": line[5:7].strip(), + "prijmeni": line[7:37].strip(), + "jmeno": line[37:61].strip(), + "cip": line[61:71].strip(), + "datum_od": datum, + "pojistovna": line[79:82].strip(), + }) + + return {"hlavicka": hlavicka, "pojistenci": pojistenci, "soubor": path.name} + + +def najdi_davky(adresar: Path) -> list[Path]: + return sorted( + [p for p in adresar.iterdir() + if re.search(r"F\d{3}.*\.\d{3}$", p.name, re.IGNORECASE)], + key=lambda p: p.name + ) + + +def import_davku(cur, davka: dict) -> tuple[int, int]: + """Vrátí (vloženo, přeskočeno duplicit).""" + h = davka["hlavicka"] + if not h: + print(f" SKIP {davka['soubor']} — chybí záhlaví") + return 0, 0 + + rows = [ + (davka["soubor"], h["icp"], h["rok"], h["mesic"], h["den"], + p["por"], p["vs"], p["prijmeni"], p["jmeno"], + p["cip"], p["datum_od"], p["pojistovna"]) + for p in davka["pojistenci"] + ] + + # INSERT IGNORE přeskočí duplicity (unikátní klíč soubor+por) bez chyby + affected = cur.executemany( + """INSERT IGNORE INTO seznam_pojistencu_davky + (soubor, icp, davka_rok, davka_mesic, davka_den, + por, vs, prijmeni, jmeno, cip, datum_od, pojistovna) + VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", + rows + ) + vlozeno = affected if affected else 0 + preskoceno = len(rows) - vlozeno + return vlozeno, preskoceno + + +# ── MAIN ────────────────────────────────────────────────────────────────────── + +parser = argparse.ArgumentParser(description="Import VZP dávek do MySQL") +parser.add_argument("--reset", action="store_true", + help="Smaže a znovu vytvoří tabulku před importem") +args = parser.parse_args() + +conn = connect_mysql() +cur = conn.cursor() + +if args.reset: + print("DROP TABLE seznam_pojistencu_davky ...") + cur.execute("DROP TABLE IF EXISTS seznam_pojistencu_davky") + +print("Vytváření tabulky (pokud neexistuje) ...") +cur.execute(CREATE_SQL) + +davky = najdi_davky(DAVKY_DIR) +print(f"Nalezeno dávek: {len(davky)}\n") + +celkem_vlozeno = celkem_preskoceno = 0 + +for cesta in davky: + davka = parse_davku(cesta) + h = davka["hlavicka"] + if h: + print(f"{davka['soubor']} ({h['den']:02d}.{h['mesic']:02d}.{h['rok']}, {len(davka['pojistenci'])} záznamů)") + else: + print(f"{davka['soubor']} (záhlaví chybí)") + + vlozeno, preskoceno = import_davku(cur, davka) + celkem_vlozeno += vlozeno + celkem_preskoceno += preskoceno + print(f" → vloženo: {vlozeno}, duplicit přeskočeno: {preskoceno}") + +cur.close() +conn.close() + +print(f"\nHotovo. Celkem vloženo: {celkem_vlozeno}, přeskočeno: {celkem_preskoceno}") diff --git a/Insurance/SeznamPojistencu/03_porovnani_davek.py b/Insurance/SeznamPojistencu/03_porovnani_davek.py new file mode 100644 index 0000000..4862eaa --- /dev/null +++ b/Insurance/SeznamPojistencu/03_porovnani_davek.py @@ -0,0 +1,226 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys as _sys +_sys.stdout.reconfigure(encoding="utf-8", errors="replace") +_sys.stderr.reconfigure(encoding="utf-8", errors="replace") +""" +03_porovnani_davek.py +===================== +Porovná všechny po sobě jdoucí dávky VZP a vytvoří Excel se třemi listy: + 1. Přehled – souhrnná tabulka přechodů (kolik odešlo / přibylo) + 2. Odešli – detail všech, kdo v dané dávce chyběli oproti předchozí + 3. Přibylo – detail všech, kdo v dané dávce přibyly oproti předchozí + +Pro data s více soubory se použijí unikátní CIPy (dávky jsou totožné). +""" + +import sys +from datetime import date +from pathlib import Path +from collections import defaultdict + +import openpyxl +from openpyxl.styles import Font, PatternFill, Alignment, Border, Side +from openpyxl.utils import get_column_letter + +sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "Knihovny")) +from mysql_db import connect_mysql + +OUTPUT = Path(__file__).parent / "porovnani_davek.xlsx" + +# ── Barvy ───────────────────────────────────────────────────────────────────── +CLR_HEADER = "1F4E79" # tmavě modrá +CLR_SUBHDR = "2E75B6" # střední modrá +CLR_ODEŠLI = "FCE4D6" # světle lososová +CLR_PŘIBYLO = "E2EFDA" # světle zelená +CLR_ZEBRA = "F2F2F2" # šedá pro zebra řádky +CLR_SUMMARY = "DEEAF1" # světle modrá pro souhrn + +# ── Styly ───────────────────────────────────────────────────────────────────── +def hdr_font(white=True): + return Font(bold=True, color="FFFFFF" if white else "000000", size=11) + +def cell_border(): + thin = Side(style="thin", color="BFBFBF") + return Border(left=thin, right=thin, top=thin, bottom=thin) + +def set_header(cell, text, bg=CLR_HEADER, white=True): + cell.value = text + cell.font = hdr_font(white) + cell.fill = PatternFill("solid", fgColor=bg) + cell.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True) + cell.border = cell_border() + +def set_cell(cell, value, bg=None, bold=False, align="left", num_fmt=None): + cell.value = value + cell.font = Font(bold=bold, size=10) + cell.alignment = Alignment(horizontal=align, vertical="center") + cell.border = cell_border() + if bg: + cell.fill = PatternFill("solid", fgColor=bg) + if num_fmt: + cell.number_format = num_fmt + +# ── Načtení dat z DB ────────────────────────────────────────────────────────── + +print("Připojuji se k DB ...") +conn = connect_mysql() +cur = conn.cursor() + +# Unikátní CIPy per datum + jméno (z prvního souboru daného data) +cur.execute(""" + SELECT davka_rok, davka_mesic, davka_den, cip, + MIN(prijmeni) AS prijmeni, MIN(jmeno) AS jmeno + FROM seznam_pojistencu_davky + GROUP BY davka_rok, davka_mesic, davka_den, cip + ORDER BY davka_rok, davka_mesic, davka_den +""") +rows = cur.fetchall() +conn.close() + +# Seskupení do dict: datum -> {cip: (prijmeni, jmeno)} +davky: dict[date, dict[str, tuple]] = defaultdict(dict) +for rok, mes, den, cip, pri, jme in rows: + d = date(rok, mes, den) + davky[d][cip] = (pri, jme) + +data = sorted(davky.keys()) +print(f"Nalezeno {len(data)} unikátních datumů dávek.") + +# ── Porovnání ──────────────────────────────────────────────────────────────── + +prehled = [] # (dat_od, dat_do, stav_od, odešlo, přibylo, stav_do) +odešli = [] # (dat_do, cip, prijmeni, jmeno) +přibylo = [] # (dat_do, cip, prijmeni, jmeno) + +for i in range(1, len(data)): + d1, d2 = data[i-1], data[i] + cip1 = set(davky[d1]) + cip2 = set(davky[d2]) + + vyšli = cip1 - cip2 + vstou = cip2 - cip1 + + prehled.append((d1, d2, len(cip1), len(vyšli), len(vstou), len(cip2))) + + for cip in sorted(vyšli): + pri, jme = davky[d1][cip] + odešli.append((d2, cip, pri, jme)) + + for cip in sorted(vstou): + pri, jme = davky[d2][cip] + přibylo.append((d2, cip, pri, jme)) + +# ── Excel ───────────────────────────────────────────────────────────────────── + +wb = openpyxl.Workbook() + +# ── List 1: Přehled ─────────────────────────────────────────────────────────── +ws = wb.active +ws.title = "Přehled" +ws.freeze_panes = "A3" + +# Nadpis +ws.merge_cells("A1:F1") +t = ws["A1"] +t.value = "Porovnání po sobě jdoucích dávek VZP – seznam registrovaných pojištěnců" +t.font = Font(bold=True, size=13, color="FFFFFF") +t.fill = PatternFill("solid", fgColor=CLR_HEADER) +t.alignment = Alignment(horizontal="center", vertical="center") +ws.row_dimensions[1].height = 28 + +# Záhlaví sloupců +headers = ["Datum od", "Datum do", "Stav\nna začátku", "Odešlo", "Přibylo", "Stav\nna konci"] +for col, h in enumerate(headers, 1): + set_header(ws.cell(2, col), h) +ws.row_dimensions[2].height = 32 + +# Data +for row_i, (d1, d2, stav_od, vyšli, vstou, stav_do) in enumerate(prehled, 3): + bg = CLR_ZEBRA if row_i % 2 == 0 else None + set_cell(ws.cell(row_i, 1), d1.strftime("%d.%m.%Y"), bg, align="center") + set_cell(ws.cell(row_i, 2), d2.strftime("%d.%m.%Y"), bg, align="center") + set_cell(ws.cell(row_i, 3), stav_od, bg, align="right") + set_cell(ws.cell(row_i, 4), -vyšli, CLR_ODEŠLI if vyšli else bg, bold=bool(vyšli), align="right") + set_cell(ws.cell(row_i, 5), vstou, CLR_PŘIBYLO if vstou else bg, bold=bool(vstou), align="right") + set_cell(ws.cell(row_i, 6), stav_do, bg, align="right") + +# Souhrnný řádek +sr = len(prehled) + 3 +ws.merge_cells(f"A{sr}:B{sr}") +sc = ws.cell(sr, 1) +sc.value = "CELKEM pohybů" +sc.font = Font(bold=True, size=10) +sc.fill = PatternFill("solid", fgColor=CLR_SUMMARY) +sc.alignment = Alignment(horizontal="center", vertical="center") +sc.border = cell_border() + +celk_odešlo = sum(p[3] for p in prehled) +celk_přibylo = sum(p[4] for p in prehled) +set_cell(ws.cell(sr, 3), "", CLR_SUMMARY) +set_cell(ws.cell(sr, 4), -celk_odešlo, CLR_SUMMARY, bold=True, align="right") +set_cell(ws.cell(sr, 5), celk_přibylo, CLR_SUMMARY, bold=True, align="right") +set_cell(ws.cell(sr, 6), "", CLR_SUMMARY) + +# Šířky sloupců +for col, w in zip(range(1, 7), [14, 14, 14, 10, 10, 12]): + ws.column_dimensions[get_column_letter(col)].width = w + +# ── List 2: Odešli ──────────────────────────────────────────────────────────── +ws2 = wb.create_sheet("Odešli") +ws2.freeze_panes = "A3" + +ws2.merge_cells("A1:D1") +t2 = ws2["A1"] +t2.value = f"Pacienti, kteří odešli – celkem {len(odešli)} pohybů" +t2.font = Font(bold=True, size=13, color="FFFFFF") +t2.fill = PatternFill("solid", fgColor="C55A11") +t2.alignment = Alignment(horizontal="center", vertical="center") +ws2.row_dimensions[1].height = 28 + +for col, h in enumerate(["Datum dávky", "Číslo pojištěnce", "Příjmení", "Jméno"], 1): + set_header(ws2.cell(2, col), h, bg="C55A11") +ws2.row_dimensions[2].height = 24 + +for row_i, (dat, cip, pri, jme) in enumerate(odešli, 3): + bg = CLR_ODEŠLI if row_i % 2 == 0 else None + set_cell(ws2.cell(row_i, 1), dat.strftime("%d.%m.%Y"), bg, align="center") + set_cell(ws2.cell(row_i, 2), cip, bg, align="center") + set_cell(ws2.cell(row_i, 3), pri, bg) + set_cell(ws2.cell(row_i, 4), jme, bg) + +for col, w in zip(range(1, 5), [14, 16, 28, 22]): + ws2.column_dimensions[get_column_letter(col)].width = w + +# ── List 3: Přibylo ─────────────────────────────────────────────────────────── +ws3 = wb.create_sheet("Přibylo") +ws3.freeze_panes = "A3" + +ws3.merge_cells("A1:D1") +t3 = ws3["A1"] +t3.value = f"Pacienti, kteří přibylo – celkem {len(přibylo)} pohybů" +t3.font = Font(bold=True, size=13, color="FFFFFF") +t3.fill = PatternFill("solid", fgColor="375623") +t3.alignment = Alignment(horizontal="center", vertical="center") +ws3.row_dimensions[1].height = 28 + +for col, h in enumerate(["Datum dávky", "Číslo pojištěnce", "Příjmení", "Jméno"], 1): + set_header(ws3.cell(2, col), h, bg="375623") +ws3.row_dimensions[2].height = 24 + +for row_i, (dat, cip, pri, jme) in enumerate(přibylo, 3): + bg = CLR_PŘIBYLO if row_i % 2 == 0 else None + set_cell(ws3.cell(row_i, 1), dat.strftime("%d.%m.%Y"), bg, align="center") + set_cell(ws3.cell(row_i, 2), cip, bg, align="center") + set_cell(ws3.cell(row_i, 3), pri, bg) + set_cell(ws3.cell(row_i, 4), jme, bg) + +for col, w in zip(range(1, 5), [14, 16, 28, 22]): + ws3.column_dimensions[get_column_letter(col)].width = w + +# ── Uložení ─────────────────────────────────────────────────────────────────── +wb.save(OUTPUT) +print(f"\nExcel uložen: {OUTPUT}") +print(f" Přehled: {len(prehled)} přechodů") +print(f" Odešli: {len(odešli)} pohybů") +print(f" Přibylo: {len(přibylo)} pohybů") diff --git a/Insurance/SeznamPojistencu/04_najdi_zlomy.py b/Insurance/SeznamPojistencu/04_najdi_zlomy.py new file mode 100644 index 0000000..43eb626 --- /dev/null +++ b/Insurance/SeznamPojistencu/04_najdi_zlomy.py @@ -0,0 +1,233 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys as _sys +_sys.stdout.reconfigure(encoding="utf-8", errors="replace") +_sys.stderr.reconfigure(encoding="utf-8", errors="replace") +""" +04_najdi_zlomy.py +================= +Pro pacienty z seznam_pojistencu_davky, kteří NEMAJÍ záznam v vzp_registrace_lekari +(skript kdojelekar je nezachytil), najde bod zlomu registrace u naší ambulance. + +Algoritmus: + 1. Dotaz VZP dnes — je pacient stále registrován u nás (ICP=09305001)? + ANO → datum_ukonceni z odpovědi = výsledek + 2. NE → hledáme rokem dozadu (od dnes, −1 rok, −2 roky …) + dokud nenajdeme rok kdy BYL registrován → tím ohraničíme interval [lo, hi] + 3. V intervalu [lo, hi] binární hledání na den přesně + (nebo pokud datum_ukonceni z VZP odpovědi není 3000, použijeme ho přímo) + +Výsledek se uloží do tabulky seznam_pojistencu_zlomy a vytiskne na konzoli. +""" + +import time +import sys +from datetime import date, timedelta +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "Knihovny")) +from mysql_db import connect_mysql +from vzpb2b_client import VZPB2BClient + +# ── Konfigurace ─────────────────────────────────────────────────────────────── +PFX_PATH = str(Path(__file__).resolve().parents[1] / "Certificates" / "picka.pfx") +PFX_PASSWORD = "Vlado7309208104+" +ICZ = "09305000" +NASA_ICP = "09305001" +API_PAUSE = 2 # sekundy mezi VZP dotazy + +CREATE_SQL = """ +CREATE TABLE IF NOT EXISTS seznam_pojistencu_zlomy ( + id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + cip VARCHAR(12) NOT NULL, + prijmeni VARCHAR(30) NOT NULL, + jmeno VARCHAR(24) NOT NULL, + posledni_davka DATE NOT NULL COMMENT 'Poslední měsíc kdy byl v dávce', + zlom_datum DATE NULL COMMENT 'Poslední den registrace u nás (NULL=stále aktivní)', + zlom_zdroj VARCHAR(60) NULL COMMENT 'Jak byl zlom určen', + stav VARCHAR(20) NOT NULL COMMENT 'aktivní / ukončen / nenalezen', + dotazeno_dne DATE NOT NULL, + UNIQUE KEY uq_cip (cip) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Zlomy registrace pro pacienty bez záznamu v kdojelekar'; +""" + +# ── VZP klient ──────────────────────────────────────────────────────────────── +vzp = VZPB2BClient("prod", PFX_PATH, PFX_PASSWORD, icz=ICZ) + + +def je_registrovan(rc: str, k_datu: date) -> tuple[bool, date | None]: + """ + Vrátí (registrován_u_nas: bool, datum_ukonceni: date|None). + datum_ukonceni = None pokud nelze parsovat nebo pacient není u nás. + """ + xml = vzp.registrace_lekare(rc, k_datu.isoformat(), odbornosti=["001"]) + time.sleep(API_PAUSE) + try: + zaznamy = vzp.parse_registrace_lekare(xml) + except Exception as e: + print(f" [CHYBA parsování] {e}") + return False, None + + for z in zaznamy: + if z.get("ma_lekare") and z.get("ICP") == NASA_ICP and z.get("kod_odbornosti") == "001": + du_str = z.get("datum_ukonceni") + try: + du = date.fromisoformat(du_str) if du_str else None + except ValueError: + du = None + return True, du + + return False, None + + +def najdi_zlom(rc: str, posledni_davka: date) -> tuple[date | None, str, str]: + """ + Vrátí (zlom_datum, zlom_zdroj, stav). + zlom_datum = poslední den kdy byl registrován (None = stále aktivní). + """ + today = date.today() + + # ── Krok 1: dotaz dnes ──────────────────────────────────────────────────── + print(f" [dnes {today}]", end=" ", flush=True) + reg, du = je_registrovan(rc, today) + + if reg: + if du and du.year < 3000: + print(f"registrován, ukončení {du}") + return du, "VZP datum_ukonceni (dnes)", "ukončen" + else: + print("registrován, bez data ukončení → stále aktivní") + return None, "VZP dnes aktivní", "aktivní" + + print("NENÍ registrován") + + # ── Krok 2: hledání po rocích dozadu ───────────────────────────────────── + # lo = víme, že tam BYL (posledni_davka) + # hi = víme, že tam NENÍ (today) + lo: date = posledni_davka + hi: date = today + + probe = today.replace(year=today.year - 1) + while probe >= posledni_davka: + print(f" [rok {probe}]", end=" ", flush=True) + reg_p, du_p = je_registrovan(rc, probe) + if reg_p: + lo = probe + print(f"registrován") + if du_p and du_p.year < 3000: + print(f" → datum_ukonceni z VZP: {du_p}") + return du_p, f"VZP datum_ukonceni (dotaz {probe})", "ukončen" + break + else: + hi = probe + print("není") + try: + probe = probe.replace(year=probe.year - 1) + except ValueError: + break + else: + # Ani v posledni_davka není registrován — neobvyklé + print(f" ! Ani k datu {posledni_davka} není registrován — zkouším přímo") + reg_lo, du_lo = je_registrovan(rc, posledni_davka) + if not reg_lo: + return None, "nenalezen ani k datu poslední dávky", "nenalezen" + lo = posledni_davka + if du_lo and du_lo.year < 3000: + return du_lo, f"VZP datum_ukonceni ({posledni_davka})", "ukončen" + + # ── Krok 3: binární hledání v intervalu [lo, hi] ───────────────────────── + print(f" Binární hledání: {lo} … {hi}") + iterace = 0 + while (hi - lo).days > 1: + iterace += 1 + mid = lo + timedelta(days=(hi - lo).days // 2) + print(f" [{iterace}. iterace: {mid}]", end=" ", flush=True) + reg_m, du_m = je_registrovan(rc, mid) + if reg_m: + lo = mid + print("registrován") + if du_m and du_m.year < 3000: + print(f" → datum_ukonceni z VZP: {du_m}") + return du_m, f"VZP datum_ukonceni (binární {mid})", "ukončen" + else: + hi = mid + print("není") + + print(f" → Zlom: poslední den registrace = {lo}") + return lo, f"binární hledání ({iterace} kroků)", "ukončen" + + +# ── Načtení pacientů ────────────────────────────────────────────────────────── + +conn = connect_mysql() +cur = conn.cursor() +cur.execute(CREATE_SQL) + +# Unikátní CIP v seznamu (VZP, pojišťovna 111) +cur.execute("SELECT DISTINCT cip FROM seznam_pojistencu_davky WHERE pojistovna='111'") +vsechny_cip = {r[0] for r in cur.fetchall()} + +# CIP které jsou v registrace_lekari (u nás, odb 001) +cur.execute(""" + SELECT DISTINCT rc FROM vzp_registrace_lekari + WHERE kod_odbornosti='001' AND ICP='09305001' AND ma_lekare=1 +""") +zname_cip = {r[0] for r in cur.fetchall()} + +# Nespárované +nesparovane_cip = vsechny_cip - zname_cip + +# Doplním jméno a posledni_davka +cur.execute(""" + SELECT cip, MIN(prijmeni), MIN(jmeno), + MAX(DATE(CONCAT(davka_rok, '-', LPAD(davka_mesic,2,'0'), '-01'))) + FROM seznam_pojistencu_davky + WHERE pojistovna='111' + GROUP BY cip +""") +info = {r[0]: (r[1], r[2], r[3]) for r in cur.fetchall()} + +pacienti = [ + (cip, *info[cip]) + for cip in sorted(nesparovane_cip) + if cip in info +] + +print(f"Pacientů ke zpracování: {len(pacienti)}\n") +print("=" * 70) + +# ── Hlavní smyčka ───────────────────────────────────────────────────────────── + +vysledky = [] +for cip, prijmeni, jmeno, posledni_davka in pacienti: + print(f"\n{prijmeni} {jmeno} (CIP: {cip}, poslední dávka: {posledni_davka})") + try: + zlom, zdroj, stav = najdi_zlom(cip, posledni_davka) + except Exception as e: + print(f" CHYBA: {e}") + zlom, zdroj, stav = None, f"chyba: {e}", "chyba" + + vysledky.append((cip, prijmeni, jmeno, posledni_davka, zlom, zdroj, stav)) + + cur.execute(""" + INSERT INTO seznam_pojistencu_zlomy + (cip, prijmeni, jmeno, posledni_davka, zlom_datum, zlom_zdroj, stav, dotazeno_dne) + VALUES (%s, %s, %s, %s, %s, %s, %s, %s) + ON DUPLICATE KEY UPDATE + posledni_davka=VALUES(posledni_davka), + zlom_datum=VALUES(zlom_datum), + zlom_zdroj=VALUES(zlom_zdroj), + stav=VALUES(stav), + dotazeno_dne=VALUES(dotazeno_dne) + """, (cip, prijmeni, jmeno, posledni_davka, zlom, zdroj, stav, date.today())) + +cur.close() +conn.close() + +# ── Výsledky ────────────────────────────────────────────────────────────────── +print("\n" + "=" * 70) +print(f"\n{'Příjmení':<25} {'Jméno':<20} {'CIP':<12} {'Poslední dávka':<15} {'Zlom':<12} Stav") +print("-" * 95) +for cip, pri, jme, pd, zd, zdroj, stav in vysledky: + zlom_str = str(zd) if zd else "—" + print(f"{pri:<25} {jme:<20} {cip:<12} {str(pd):<15} {zlom_str:<12} {stav}") diff --git a/Insurance/SeznamPojistencu/06_nasledny_lekar.py b/Insurance/SeznamPojistencu/06_nasledny_lekar.py new file mode 100644 index 0000000..23204b4 --- /dev/null +++ b/Insurance/SeznamPojistencu/06_nasledny_lekar.py @@ -0,0 +1,219 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys as _sys +_sys.stdout.reconfigure(encoding="utf-8", errors="replace") +_sys.stderr.reconfigure(encoding="utf-8", errors="replace") +""" +06_nasledny_lekar.py +==================== +Pro všechny ukončené pacienty (103) se dotáže VZP ke dni ukonceni+1 +na jejich nového praktického lékaře (odbornost 001). + +Výsledek je jeden ze tří stavů: + nenalezen → pacient u VZP neexistuje (zemřel / přestal být pojištěný) + bez_lekare → pacient existuje, ale nemá GP (dosud se nepřehlásil) + prehlasil → přehlásil se k novému lékaři (ukládáme ICP, jméno, datum) + +Ukládá do tabulky seznam_pojistencu_nasledny_lekar. +Přeskočí pacienty, kteří tam už jsou (resumovatelný běh). +""" + +import sys +import time +import xml.etree.ElementTree as ET +from datetime import date, timedelta +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "Knihovny")) +from mysql_db import connect_mysql +from vzpb2b_client import VZPB2BClient + +PFX_PATH = str(Path(__file__).resolve().parents[1] / "Certificates" / "picka.pfx") +PFX_PASSWORD = "Vlado7309208104+" +ICZ = "09305000" +API_PAUSE = 2 + +CREATE_SQL = """ +CREATE TABLE IF NOT EXISTS seznam_pojistencu_nasledny_lekar ( + id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + cip VARCHAR(12) NOT NULL, + prijmeni VARCHAR(60) NOT NULL, + jmeno VARCHAR(40) NOT NULL, + datum_ukonceni DATE NOT NULL COMMENT 'Datum ukončení u nás', + datum_dotazu DATE NOT NULL COMMENT 'Dotaz k datu ukonceni+1', + stav_vzp VARCHAR(20) NOT NULL COMMENT 'nenalezen / bez_lekare / prehlasil', + stav_vyrizeni VARCHAR(10) NULL COMMENT 'stavVyrizeniPozadavku z VZP', + novy_icp VARCHAR(20) NULL, + novy_icz VARCHAR(20) NULL, + novy_nazev VARCHAR(200) NULL COMMENT 'nazevSZZ — jméno lékaře', + novy_ordinace VARCHAR(200) NULL COMMENT 'nazevICP — název ordinace', + datum_prehlaseni DATE NULL COMMENT 'datumRegistrace u nového lékaře', + dotazeno_dne DATE NOT NULL, + UNIQUE KEY uq_cip (cip) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 + COMMENT='Stav pojištěnce ke dni ukončení registrace u naší ordinace'; +""" + +NS = "http://xmlns.gemsystem.cz/B2B/RegistracePojistencePZSB2B/1" + + +def parse_nasledny(xml_text: str) -> dict: + """ + Vrátí dict s klíči: stav_vzp, stav_vyrizeni, novy_icp, novy_icz, + novy_nazev, novy_ordinace, datum_prehlaseni. + """ + try: + root = ET.fromstring(xml_text) + except ET.ParseError: + return {"stav_vzp": "chyba_xml", "stav_vyrizeni": None, + "novy_icp": None, "novy_icz": None, "novy_nazev": None, + "novy_ordinace": None, "datum_prehlaseni": None} + + def find(el, tag): + e = el.find(f"{{{NS}}}{tag}") + return e.text.strip() if e is not None and e.text else None + + stav_vyrizeni = find(root, "stavVyrizeniPozadavku") + + # Hledám odbornost 001 s jiným lékařem + odbornosti = root.findall(f".//{{{NS}}}odbornost") + for odb in odbornosti: + # Vnější element — má ICZ + icz = find(odb, "ICZ") + icp = find(odb, "ICP") + if not icp: + continue + # Ověřím odbornost (vnořený subelement) + sub = odb.find(f"{{{NS}}}odbornost") + if sub is None: + continue + kod = find(sub, "kod") + if kod != "001": + continue + # Nalezen nový GP + dr = date.fromisoformat(find(odb, "datumRegistrace")) \ + if find(odb, "datumRegistrace") else None + return { + "stav_vzp": "prehlasil", + "stav_vyrizeni": stav_vyrizeni, + "novy_icp": icp, + "novy_icz": icz, + "novy_nazev": find(odb, "nazevSZZ"), + "novy_ordinace": find(odb, "nazevICP"), + "datum_prehlaseni": dr, + } + + # Žádná odbornost 001 nenalezena + if stav_vyrizeni == "0": + stav = "nenalezen" + elif stav_vyrizeni == "1": + stav = "bez_lekare" + else: + # Zkusím ještě — pokud jsou nějaké záznamy ale ne 001, je to bez_lekare + stav = "nenalezen" if not odbornosti else "bez_lekare" + + return {"stav_vzp": stav, "stav_vyrizeni": stav_vyrizeni, + "novy_icp": None, "novy_icz": None, "novy_nazev": None, + "novy_ordinace": None, "datum_prehlaseni": None} + + +# ── Načtení ukončených pacientů ─────────────────────────────────────────────── + +conn = connect_mysql() +cur = conn.cursor() +cur.execute(CREATE_SQL) + +# Ukončení z vzp_registrace_lekari +cur.execute(""" + SELECT r.rc, r.prijmeni, r.jmeno, r.datum_ukonceni + FROM vzp_registrace_lekari r + INNER JOIN ( + SELECT rc, MAX(k_datu) mk + FROM vzp_registrace_lekari + WHERE kod_odbornosti='001' AND ICP='09305001' AND ma_lekare=1 + GROUP BY rc + ) l ON r.rc=l.rc AND r.k_datu=l.mk + WHERE r.kod_odbornosti='001' AND r.ICP='09305001' + AND r.datum_ukonceni < '3000-01-01' AND r.datum_ukonceni < CURDATE() +""") +pacienti = [(r[0], r[1] or "", r[2] or "", r[3]) for r in cur.fetchall()] + +# Doplním ze zlomů (13 nespárovaných) +cur.execute(""" + SELECT cip, prijmeni, jmeno, zlom_datum + FROM seznam_pojistencu_zlomy + WHERE stav='ukončen' AND zlom_datum IS NOT NULL AND zlom_datum < CURDATE() +""") +for r in cur.fetchall(): + if r[0] not in {p[0] for p in pacienti}: + pacienti.append((r[0], r[1], r[2], r[3])) + +# Přeskočím již zpracované +cur.execute("SELECT cip FROM seznam_pojistencu_nasledny_lekar") +hotovi = {r[0] for r in cur.fetchall()} +ke_zpracovani = [(c, p, j, d) for c, p, j, d in pacienti if c not in hotovi] + +print(f"Ukončených celkem: {len(pacienti)}") +print(f"Již zpracováno: {len(hotovi)}") +print(f"Ke zpracování: {len(ke_zpracovani)}") + +if not ke_zpracovani: + print("Vše již zpracováno.") + cur.close(); conn.close(); sys.exit(0) + +vzp = VZPB2BClient("prod", PFX_PATH, PFX_PASSWORD, icz=ICZ) + +# ── Hlavní smyčka ───────────────────────────────────────────────────────────── +print() +sirka = max(len(f"{p} {j}") for _, p, j, _ in ke_zpracovani) + 2 + +for i, (cip, pri, jme, du) in enumerate(ke_zpracovani, 1): + datum_dotazu = du + timedelta(days=1) + jmeno_str = f"{pri} {jme}" + print(f"[{i:>3}/{len(ke_zpracovani)}] {jmeno_str:<{sirka}} ({cip}) k {datum_dotazu}", end=" ", flush=True) + + try: + xml = vzp.registrace_lekare(cip, datum_dotazu.isoformat(), odbornosti=["001"]) + time.sleep(API_PAUSE) + vysl = parse_nasledny(xml) + except Exception as e: + print(f"CHYBA: {e}") + vysl = {"stav_vzp": "chyba", "stav_vyrizeni": str(e), + "novy_icp": None, "novy_icz": None, "novy_nazev": None, + "novy_ordinace": None, "datum_prehlaseni": None} + + # Výpis + stav = vysl["stav_vzp"] + if stav == "prehlasil": + print(f"→ přehlásil se: {vysl['novy_nazev']} (ICP {vysl['novy_icp']}, od {vysl['datum_prehlaseni']})") + elif stav == "bez_lekare": + print("→ bez nového lékaře") + elif stav == "nenalezen": + print("→ nenalezen (zemřel / nepojištěný)") + else: + print(f"→ {stav}") + + cur.execute(""" + INSERT INTO seznam_pojistencu_nasledny_lekar + (cip, prijmeni, jmeno, datum_ukonceni, datum_dotazu, stav_vzp, + stav_vyrizeni, novy_icp, novy_icz, novy_nazev, novy_ordinace, + datum_prehlaseni, dotazeno_dne) + VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) + ON DUPLICATE KEY UPDATE + datum_ukonceni=VALUES(datum_ukonceni), + datum_dotazu=VALUES(datum_dotazu), + stav_vzp=VALUES(stav_vzp), stav_vyrizeni=VALUES(stav_vyrizeni), + novy_icp=VALUES(novy_icp), novy_icz=VALUES(novy_icz), + novy_nazev=VALUES(novy_nazev), novy_ordinace=VALUES(novy_ordinace), + datum_prehlaseni=VALUES(datum_prehlaseni), + dotazeno_dne=VALUES(dotazeno_dne) + """, (cip, pri, jme, du, datum_dotazu, stav, + vysl["stav_vyrizeni"], vysl["novy_icp"], vysl["novy_icz"], + vysl["novy_nazev"], vysl["novy_ordinace"], vysl["datum_prehlaseni"], + date.today())) + +cur.close() +conn.close() + +# ── Souhrn ──────────────────────────────────────────────────────────────────── +print(f"\nHotovo. Zpracováno {len(ke_zpracovani)} pacientů.") diff --git a/Insurance/SeznamPojistencu/99_report_excel.py b/Insurance/SeznamPojistencu/99_report_excel.py new file mode 100644 index 0000000..f4d756b --- /dev/null +++ b/Insurance/SeznamPojistencu/99_report_excel.py @@ -0,0 +1,303 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys as _sys +_sys.stdout.reconfigure(encoding="utf-8", errors="replace") +_sys.stderr.reconfigure(encoding="utf-8", errors="replace") +""" +05_report_excel.py +================== +Kompletní Excel report všech VZP pojištěnců z dávek. +Kombinuje čtyři zdroje: + - seznam_pojistencu_davky → první/poslední dávka, zda v aktuální + - vzp_registrace_lekari → datum_ukonceni od VZP (989 pacientů) + - seznam_pojistencu_zlomy → bod zlomu pro 13 nespárovaných + - seznam_pojistencu_nasledny_lekar → nový lékař / nenalezen po ukončení + +Listy: + 1. Všichni pojištěnci – kompletní přehled, řazeno příjmení + 2. Aktivní – stále registrováni + 3. Ukončení – registrace ukončena + nový lékař / osud + 4. Nenalezeni – bez dostatečných dat +""" + +import sys +from datetime import date +from pathlib import Path + +import openpyxl +from openpyxl.styles import Font, PatternFill, Alignment, Border, Side +from openpyxl.utils import get_column_letter + +sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "Knihovny")) +from mysql_db import connect_mysql + +TODAY = date.today() +OUTPUT = Path(__file__).parent / "report_pojistenci.xlsx" + +# ── Barvy ───────────────────────────────────────────────────────────────────── +C_HDR_DARK = "1F4E79" +C_HDR_MED = "2E75B6" +C_AKTIVNI = "E2EFDA" # zelená +C_UKONCEN = "FCE4D6" # lososová +C_NENALEZEN = "FFF2CC" # žlutá +C_ZEBRA = "F2F2F2" +C_TITLE_AKT = "375623" +C_TITLE_UKO = "C55A11" +C_TITLE_NEN = "7F6000" + +THIN = Side(style="thin", color="BFBFBF") + +def border(): + return Border(left=THIN, right=THIN, top=THIN, bottom=THIN) + +def hdr(cell, text, bg=C_HDR_DARK, fg="FFFFFF", size=10): + cell.value = text + cell.font = Font(bold=True, color=fg, size=size) + cell.fill = PatternFill("solid", fgColor=bg) + cell.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True) + cell.border = border() + +def cell(ws, row, col, value, bg=None, bold=False, align="left", fmt=None, color="000000"): + c = ws.cell(row, col, value) + c.font = Font(bold=bold, size=10, color=color) + c.alignment = Alignment(horizontal=align, vertical="center") + c.border = border() + if bg: + c.fill = PatternFill("solid", fgColor=bg) + if fmt: + c.number_format = fmt + return c + +def title_row(ws, row, text, ncols, bg, fg="FFFFFF", height=26): + ws.merge_cells(start_row=row, start_column=1, end_row=row, end_column=ncols) + c = ws.cell(row, 1) + c.value = text + c.font = Font(bold=True, size=13, color=fg) + c.fill = PatternFill("solid", fgColor=bg) + c.alignment = Alignment(horizontal="center", vertical="center") + ws.row_dimensions[row].height = height + +def autofit(ws, widths): + for i, w in enumerate(widths, 1): + ws.column_dimensions[get_column_letter(i)].width = w + +# ── Načtení dat ─────────────────────────────────────────────────────────────── +print("Načítám data z DB ...") +conn = connect_mysql() +cur = conn.cursor() + +# 1. Ze seznam_pojistencu_davky: rozsah přítomnosti + počet dávek +cur.execute(""" + SELECT + cip, + MIN(prijmeni) AS prijmeni, + MIN(jmeno) AS jmeno, + MIN(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-01'))) AS prvni_davka, + MAX(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-01'))) AS posledni_davka, + COUNT(DISTINCT CONCAT(davka_rok,davka_mesic)) AS pocet_davek + FROM seznam_pojistencu_davky + WHERE pojistovna='111' + GROUP BY cip +""") +seznam = {r[0]: {"prijmeni": r[1], "jmeno": r[2], + "prvni": r[3], "posledni": r[4], "pocet_davek": r[5]} + for r in cur.fetchall()} + +# Nejnovější datum dávky (pro sloupec "v aktuální dávce") +cur.execute(""" + SELECT MAX(DATE(CONCAT(davka_rok,'-',LPAD(davka_mesic,2,'0'),'-01'))) + FROM seznam_pojistencu_davky WHERE pojistovna='111' +""") +nejnovejsi_davka = cur.fetchone()[0] + +cur.execute(""" + SELECT DISTINCT cip FROM seznam_pojistencu_davky + WHERE pojistovna='111' + AND CONCAT(davka_rok,LPAD(davka_mesic,2,'0')) = ( + SELECT MAX(CONCAT(davka_rok,LPAD(davka_mesic,2,'0'))) + FROM seznam_pojistencu_davky WHERE pojistovna='111' + ) +""") +v_aktualni = {r[0] for r in cur.fetchall()} + +# 2. Z vzp_registrace_lekari: nejnovější záznam na pacienta (u nás, odb 001) +cur.execute(""" + SELECT r.rc, r.datum_zahajeni, r.datum_ukonceni, r.k_datu + FROM vzp_registrace_lekari r + INNER JOIN ( + SELECT rc, MAX(k_datu) AS max_k + FROM vzp_registrace_lekari + WHERE kod_odbornosti='001' AND ICP='09305001' AND ma_lekare=1 + GROUP BY rc + ) latest ON r.rc = latest.rc AND r.k_datu = latest.max_k + WHERE r.kod_odbornosti='001' AND r.ICP='09305001' AND r.ma_lekare=1 +""") +registrace = {r[0]: {"zahajeni": r[1], "ukonceni": r[2], "k_datu": r[3]} + for r in cur.fetchall()} + +# 3. Ze seznam_pojistencu_zlomy (13 nespárovaných) +cur.execute("SELECT cip, zlom_datum, zlom_zdroj, stav FROM seznam_pojistencu_zlomy") +zlomy = {r[0]: {"ukonceni": r[1], "zdroj": r[2], "stav": r[3]} + for r in cur.fetchall()} + +# 4. Následný lékař po ukončení +cur.execute(""" + SELECT cip, stav_vzp, novy_nazev, novy_ordinace, novy_icp, datum_prehlaseni + FROM seznam_pojistencu_nasledny_lekar +""") +nasledni = {r[0]: {"stav_vzp": r[1], "novy_nazev": r[2], + "novy_ordinace": r[3], "novy_icp": r[4], + "datum_prehlaseni": r[5]} + for r in cur.fetchall()} + +cur.close() +conn.close() + +# ── Sestavení řádků ─────────────────────────────────────────────────────────── +print(f"Pacientů celkem: {len(seznam)}") + +radky = [] +for cip, s in seznam.items(): + v_akt = cip in v_aktualni + + if cip in registrace: + reg = registrace[cip] + du = reg["ukonceni"] + zdroj = f"vzp_registrace ({reg['k_datu']})" + elif cip in zlomy: + z = zlomy[cip] + du = z["ukonceni"] + zdroj = z["zdroj"] + else: + du = None + zdroj = "—" + + if du is None: + stav = "aktivní" + elif du.year >= 3000: + stav = "aktivní" + du = None # nezobrazujeme 3000-01-01 + elif du >= TODAY: + stav = "aktivní" + else: + stav = "ukončen" + + if zdroj == "—" and not v_akt: + stav = "nenalezen" + + # Následný lékař + nl = nasledni.get(cip) + if nl: + po_ukonceni = nl["stav_vzp"] # prehlasil / nenalezen / bez_lekare + novy_lekar = nl["novy_nazev"] or nl["novy_ordinace"] or "" + if nl["novy_icp"]: + novy_lekar += f" (ICP {nl['novy_icp']})" + datum_prehl = nl["datum_prehlaseni"] + else: + po_ukonceni = "" + novy_lekar = "" + datum_prehl = None + + radky.append({ + "cip": cip, + "prijmeni": s["prijmeni"], + "jmeno": s["jmeno"], + "prvni": s["prvni"], + "posledni": s["posledni"], + "pocet_davek": s["pocet_davek"], + "v_aktualni": v_akt, + "ukonceni": du, + "zdroj": zdroj, + "stav": stav, + "po_ukonceni": po_ukonceni, + "novy_lekar": novy_lekar, + "datum_prehl": datum_prehl, + }) + +radky.sort(key=lambda r: (r["prijmeni"], r["jmeno"])) + +aktivni = [r for r in radky if r["stav"] == "aktivní"] +ukonceni = sorted([r for r in radky if r["stav"] == "ukončen"], + key=lambda r: r["ukonceni"] or date.min) +nenalezeni = [r for r in radky if r["stav"] == "nenalezen"] + +print(f" Aktivní: {len(aktivni)}") +print(f" Ukončení: {len(ukonceni)}") +print(f" Nenalezeni: {len(nenalezeni)}") + +# ── Excel ───────────────────────────────────────────────────────────────────── +SLOUPCE_ALL = ["Příjmení", "Jméno", "ČIP", "První\ndávka", "Poslední\ndávka", + "Počet\ndávek", "V aktuální\ndávce", "Ukončení\nregistrace", + "Stav", "Po ukončení", "Nový lékař / poznámka", "Datum\npřehlášení"] +WIDTHS_ALL = [24, 18, 13, 12, 13, 9, 10, 14, 10, 13, 40, 13] + +SLOUPCE = SLOUPCE_ALL # alias pro funkci zapsat_list +WIDTHS = WIDTHS_ALL +NCOLS = len(SLOUPCE) +DATE_FMT = "DD.MM.YYYY" + +def zapsat_list(ws, nadpis, bg_title, seznam_radku, stav_bg): + ws.freeze_panes = "A3" + title_row(ws, 1, nadpis, NCOLS, bg_title) + ws.row_dimensions[2].height = 30 + for col, h in enumerate(SLOUPCE, 1): + hdr(ws.cell(2, col), h) + autofit(ws, WIDTHS) + + PO_CLR = {"prehlasil": "375623", "nenalezen": "C55A11", + "bez_lekare": "7F6000", "": "000000"} + PO_TXT = {"prehlasil": "přehlásil se", "nenalezen": "nenalezen", + "bez_lekare": "bez lékaře", "": ""} + + for ri, r in enumerate(seznam_radku, 3): + bg = stav_bg if ri % 2 == 0 else None + cell(ws, ri, 1, r["prijmeni"], bg) + cell(ws, ri, 2, r["jmeno"], bg) + cell(ws, ri, 3, r["cip"], bg, align="center") + cell(ws, ri, 4, r["prvni"], bg, align="center", fmt=DATE_FMT) + cell(ws, ri, 5, r["posledni"], bg, align="center", fmt=DATE_FMT) + cell(ws, ri, 6, r["pocet_davek"], bg, align="right") + akt_txt = "✓" if r["v_aktualni"] else "–" + akt_clr = "375623" if r["v_aktualni"] else "C55A11" + cell(ws, ri, 7, akt_txt, bg, bold=True, align="center", color=akt_clr) + cell(ws, ri, 8, r["ukonceni"], bg, align="center", fmt=DATE_FMT) + cell(ws, ri, 9, r["stav"], bg, align="center", bold=True, + color=("375623" if r["stav"]=="aktivní" else + "C55A11" if r["stav"]=="ukončen" else "7F6000")) + po = r.get("po_ukonceni", "") + cell(ws, ri, 10, PO_TXT.get(po, po), bg, align="center", bold=bool(po), + color=PO_CLR.get(po, "000000")) + cell(ws, ri, 11, r.get("novy_lekar", ""), bg) + cell(ws, ri, 12, r.get("datum_prehl"), bg, align="center", fmt=DATE_FMT) + +wb = openpyxl.Workbook() + +# List 1 – Všichni +ws1 = wb.active +ws1.title = "Všichni pojištěnci" +zapsat_list(ws1, + f"VZP pojištěnci — kompletní přehled ({TODAY.strftime('%d.%m.%Y')}) | " + f"celkem: {len(radky)} | aktivní: {len(aktivni)} | ukončení: {len(ukonceni)}", + C_HDR_DARK, radky, C_ZEBRA) + +# List 2 – Aktivní +ws2 = wb.create_sheet("Aktivní") +zapsat_list(ws2, + f"Aktivní pojištěnci ({TODAY.strftime('%d.%m.%Y')}) — celkem: {len(aktivni)}", + C_TITLE_AKT, aktivni, C_AKTIVNI) + +# List 3 – Ukončení +ws3 = wb.create_sheet("Ukončení") +zapsat_list(ws3, + f"Ukončená registrace — celkem: {len(ukonceni)}", + C_TITLE_UKO, ukonceni, C_UKONCEN) + +# List 4 – Nenalezeni +if nenalezeni: + ws4 = wb.create_sheet("Nenalezeni") + zapsat_list(ws4, + f"Bez dostatečných dat — celkem: {len(nenalezeni)}", + C_TITLE_NEN, nenalezeni, C_NENALEZEN) + +wb.save(OUTPUT) +print(f"\nExcel uložen: {OUTPUT}") diff --git a/Insurance/SeznamPojistencu/zadej_davku.py b/Insurance/SeznamPojistencu/Tests/zadej_davku.py similarity index 100% rename from Insurance/SeznamPojistencu/zadej_davku.py rename to Insurance/SeznamPojistencu/Tests/zadej_davku.py diff --git a/Insurance/SeznamPojistencu/porovnani_davek.xlsx b/Insurance/SeznamPojistencu/porovnani_davek.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bd992f42c5ed22d9deae4203c206981e4be3c699 GIT binary patch literal 14038 zcmZ{L1yEhfvi91zySoQ>cY?bFf&~fg?oM#m;0^&2+}$Nea3{FCyZ)SW>;Cthymxoi ztW~S_^f%Vi-P6;pBnu9K0RR9DP{ES_N#dux)YrGKk+*{KR*Y;7l^ksC9GO1b*)h6V zTgi{f!*??yK&^GCxHP1O6BQtd34~|0jxjn1)zer9KAavy2-ž&r9hLKU#r-+|3 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 z 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
b2jl^}lMxr}Q=c57jzLs+`UE885 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

)7$(4BnE5>=+C#hvLvex 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 B5<>t0 literal 0 HcmV?d00001