93 lines
2.8 KiB
Python
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()
|