import pymysql from knihovny.medicus_db import MedicusDB # ========================================== # CONFIGURATION # ========================================== MEDICUS_HOST = "192.168.1.4" MEDICUS_DB_PATH = r"z:\Medicus 3\data\MEDICUS.FDB" MYSQL_CONFIG = { "host": "192.168.1.76", "port": 3307, "user": "root", "password": "Vlado9674+", "database": "medevio", "charset": "utf8mb4", "autocommit": True } # ========================================== # INIT CONNECTIONS # ========================================== print("Connecting to Medicus...") medicus = MedicusDB(MEDICUS_HOST, MEDICUS_DB_PATH) print("Connecting to MySQL...") mysql = pymysql.connect( cursorclass=pymysql.cursors.DictCursor, **MYSQL_CONFIG ) # ========================================== # FETCH REGISTERED PATIENTS (MEDICUS) # ========================================== print("Fetching registered patients from Medicus...") patients = medicus.get_active_registered_patients(as_dict=True) patients_by_rc = { p["rodcis"]: p for p in patients } print(f"Loaded {len(patients_by_rc)} registered patients") # ========================================== # FETCH LAST INSURANCE STATES (MYSQL) # ========================================== print("Fetching last insurance states from MySQL...") sql_last_states = """ SELECT rc, stav FROM ( SELECT rc, stav, ROW_NUMBER() OVER ( PARTITION BY rc ORDER BY k_datu DESC ) AS rn FROM vzp_stav_pojisteni ) t WHERE t.rn = 1 """ with mysql.cursor() as cur: cur.execute(sql_last_states) last_states = cur.fetchall() print(f"Loaded {len(last_states)} last insurance states") # ========================================== # COMPARE & FIND NON-OK STATES # ========================================== suspected = [] for row in last_states: rc = row["rc"] stav = row["stav"] if rc in patients_by_rc and stav != "1": p = patients_by_rc[rc] suspected.append({ "rc": rc, "prijmeni": p["prijmeni"], "jmeno": p["jmeno"], "poj": p["poj"], "stav": stav }) # ========================================== # OUTPUT # ========================================== print("\n==========================================") print("PACIENTI S NEOK STAVEM POJIŠTĚNÍ") print("==========================================") if not suspected: print("✔️ Všichni registrovaní pacienti mají stav 1") else: for s in suspected: print( f'{s["rc"]} | {s["prijmeni"]} {s["jmeno"]} ' f'| pojišťovna={s["poj"]} | stav={s["stav"]}' ) print("\nCelkem nalezeno:", len(suspected)) # ========================================== # CLEANUP # ========================================== medicus.close() mysql.close()