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