notebookvb

This commit is contained in:
Vladimir Buzalka
2026-04-27 07:02:24 +02:00
parent c98001ae93
commit 4c81529718
8 changed files with 2 additions and 2 deletions
@@ -0,0 +1,80 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Porovná pojišťovnu z VZP odpovědi (MySQL) vs. pojišťovnu v Medicusu (Firebird)
pro nejvyšší k_datu v tabulce vzp_stav_pojisteni.
"""
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent
sys.path.insert(0, str(PROJECT_ROOT))
from Knihovny.mysql_db import connect_mysql
from Knihovny.medicus_db import MedicusDB
HOST = "192.168.1.10"
DB_PATH = r"M:\Medicus\Data\Medicus.fdb"
# ── připojení ──────────────────────────────────────────────────────────────
mysql = connect_mysql()
db = MedicusDB(HOST, DB_PATH)
# ── nejvyšší k_datu ────────────────────────────────────────────────────────
with mysql.cursor() as cur:
cur.execute("SELECT MAX(k_datu) FROM vzp_stav_pojisteni")
max_datum = cur.fetchone()[0]
if max_datum is None:
print("Tabulka vzp_stav_pojisteni je prázdná.")
sys.exit(1)
print(f"Porovnávám k datu: {max_datum}\n")
# ── načtení VZP výsledků pro max_datum ────────────────────────────────────
with mysql.cursor() as cur:
cur.execute(
"SELECT rc, kod_pojistovny FROM vzp_stav_pojisteni WHERE k_datu = %s",
(max_datum,)
)
vzp_data = {row[0]: row[1] for row in cur.fetchall()}
# ── načtení registrovaných pacientů z Medicusu ────────────────────────────
pacienti = db.get_active_registered_patients()
medicus_data = {rc.strip(): str(poj).strip() for rc, _, _, poj in pacienti if rc}
# ── porovnání ──────────────────────────────────────────────────────────────
shoda = []
rozdil = []
chybi_vzp = []
for rc, med_poj in medicus_data.items():
if rc not in vzp_data:
chybi_vzp.append((rc, med_poj))
continue
vzp_poj = (vzp_data[rc] or "").strip()
if med_poj == vzp_poj:
shoda.append(rc)
else:
rozdil.append((rc, med_poj, vzp_poj))
# ── výsledek ───────────────────────────────────────────────────────────────
print(f"Shoduje se: {len(shoda)}")
print(f"Liší se: {len(rozdil)}")
print(f"Chybí ve VZP: {len(chybi_vzp)}")
if rozdil:
print("\n--- ROZDÍLY (rc | Medicus | VZP) ---")
for rc, med, vzp in rozdil:
print(f" {rc:15s} Medicus={med:5s} VZP={vzp}")
if chybi_vzp:
print("\n--- CHYBÍ VE VZP (nebylo kontrolováno k tomuto datu) ---")
for rc, poj in chybi_vzp[:20]:
print(f" {rc:15s} poj={poj}")
if len(chybi_vzp) > 20:
print(f" ... a dalších {len(chybi_vzp) - 20}")
db.close()
mysql.close()