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