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