#!/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()