#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Kontrola statusu pacientů po remove skriptu: - Kolik je označeno jako REMOVED? - Kolik zbývá ACTIVE bez účtu a bez registrace v Medicusu? """ import sys try: sys.stdout.reconfigure(encoding="utf-8") sys.stderr.reconfigure(encoding="utf-8") except AttributeError: import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8") sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding="utf-8") sys.path.insert(0, 'U:/OrdinaceProjekt') import pymysql from Knihovny.medicus_db import get_medicus_db # ==================== CONFIG ==================== DB_CONFIG = { "host": "192.168.1.76", "port": 3306, "user": "root", "password": "Vlado9674+", "database": "medevio", "charset": "utf8mb4", "cursorclass": pymysql.cursors.DictCursor, } # ==================== MAIN ==================== def main(): print("=" * 70) print("KONTROLA STATUSU PACIENTŮ V MEDEVIO") print("=" * 70) # --- Medevio (MySQL) --- print("\n[Medevio — MySQL]") conn = pymysql.connect(**DB_CONFIG) with conn.cursor() as cur: cur.execute("SELECT COUNT(*) as cnt FROM medevio_pacient WHERE status = 'ACTIVE'") active = cur.fetchone()["cnt"] cur.execute("SELECT COUNT(*) as cnt FROM medevio_pacient WHERE status = 'REMOVED'") removed = cur.fetchone()["cnt"] cur.execute(""" SELECT COUNT(*) as cnt FROM medevio_pacient WHERE status = 'ACTIVE' AND user_id IS NULL """) active_no_account = cur.fetchone()["cnt"] conn.close() print(f" ACTIVE pacientů: {active}") print(f" REMOVED pacientů: {removed}") print(f" ACTIVE bez účtu (user_id NULL): {active_no_account}") # --- Medicus (Firebird) --- print("\n[Medicus — Firebird]") db = get_medicus_db() rows = db.get_active_registered_patients() medicus_registered = len(rows) medicus_rc = {r[0].strip() for r in rows if r[0]} db.close() print(f" Registrovaní pacienti: {medicus_registered}") # --- Kandidáti na REMOVED --- print("\n[Analýza]") print(f" ACTIVE bez účtu: {active_no_account}") # Zjisti, kolik z těch ACTIVE bez účtu nejsou v Medicusu conn = pymysql.connect(**DB_CONFIG) with conn.cursor() as cur: cur.execute(""" SELECT patient_id, name, surname, identification_number FROM medevio_pacient WHERE status = 'ACTIVE' AND user_id IS NULL AND identification_number IS NOT NULL """) candidates_raw = cur.fetchall() conn.close() candidates_not_in_medicus = [ r for r in candidates_raw if r["identification_number"] not in medicus_rc ] print(f" Z toho mimo Medicus (kandidáti na REMOVED): {len(candidates_not_in_medicus)}") print("\n" + "=" * 70) if __name__ == "__main__": main()