Files
ordinaceprojekt/Medevio/80 Pacienti/analyze_extras.py
T
Vladimir Buzalka 5607649162 notebookvb
2026-05-16 07:59:59 +02:00

93 lines
2.8 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Analýza 129 extra pacientů v Medeviu (nejsou v Medicusu):
- Mají účet v Medeviu?
- Jaké jsou jejich statusy?
"""
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
DB_CONFIG = {
"host": "192.168.1.76",
"port": 3306,
"user": "root",
"password": "Vlado9674+",
"database": "medevio",
"charset": "utf8mb4",
"cursorclass": pymysql.cursors.DictCursor,
}
def main():
# Načti registrované v Medicusu
db = get_medicus_db()
rows = db.get_active_registered_patients()
medicus_rc = {r[0].strip() for r in rows if r[0]}
db.close()
# Najdi všechny ACTIVE v Medeviu, co nejsou v Medicusu
conn = pymysql.connect(**DB_CONFIG)
with conn.cursor() as cur:
cur.execute("""
SELECT patient_id, name, surname, identification_number, user_id, status
FROM medevio_pacient
WHERE status = 'ACTIVE'
AND identification_number IS NOT NULL
ORDER BY surname, name
""")
all_active = cur.fetchall()
conn.close()
# Filtruj ty mimo Medicus
extras = [
r for r in all_active
if r["identification_number"] not in medicus_rc
]
print(f"{'=' * 80}")
print(f"EXTRA PACIENTI V MEDEVIU (mimo Medicus): {len(extras)}")
print(f"{'=' * 80}\n")
# Rozdělení podle user_id
with_account = [r for r in extras if r["user_id"]]
without_account = [r for r in extras if not r["user_id"]]
print(f"S účtem (user_id NOT NULL): {len(with_account)}")
print(f"Bez účtu (user_id IS NULL): {len(without_account)}\n")
if without_account:
print("" * 80)
print("BEZ ÚČTU — KANDIDÁTI NA REMOVE:")
print("" * 80)
for r in without_account[:10]: # První 10
print(f" {r['surname']} {r['name']} RC: {r['identification_number']}")
if len(without_account) > 10:
print(f" ... a dalších {len(without_account) - 10}")
if with_account:
print("\n" + "" * 80)
print("S ÚČTEM — NORMÁLNÍ PACIENTI (nejsou v Medicusu, ale mají Medevio účet):")
print("" * 80)
for r in with_account[:10]: # První 10
print(f" {r['surname']} {r['name']} RC: {r['identification_number']}")
if len(with_account) > 10:
print(f" ... a dalších {len(with_account) - 10}")
print(f"\n{'=' * 80}")
if __name__ == "__main__":
main()