From 4b6e0917096fac7a4ff12306143df443ea7f3a17 Mon Sep 17 00:00:00 2001 From: "michaela.buzalkova" Date: Fri, 24 Apr 2026 06:00:37 +0200 Subject: [PATCH] lenovo --- Insurance/Tests/test_pojistovna_shoda.py | 80 ++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Insurance/Tests/test_pojistovna_shoda.py diff --git a/Insurance/Tests/test_pojistovna_shoda.py b/Insurance/Tests/test_pojistovna_shoda.py new file mode 100644 index 0000000..a57d324 --- /dev/null +++ b/Insurance/Tests/test_pojistovna_shoda.py @@ -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()