From a5aa385ebf4464b7c1805d57a4ef151fa06b33ab Mon Sep 17 00:00:00 2001 From: Vladimir Buzalka Date: Sun, 11 Jan 2026 17:15:52 +0100 Subject: [PATCH] notebookVB --- .../2026-01-10 Test kdo jsou registrovaní.py | 52 +++++++++++++++ 10 Tests/20260111 Jednorázové ověření | 63 +++++++++++++++++++ knihovny/medicus_db.py | 14 +++++ 3 files changed, 129 insertions(+) create mode 100644 10 Tests/2026-01-10 Test kdo jsou registrovaní.py create mode 100644 10 Tests/20260111 Jednorázové ověření diff --git a/10 Tests/2026-01-10 Test kdo jsou registrovaní.py b/10 Tests/2026-01-10 Test kdo jsou registrovaní.py new file mode 100644 index 0000000..d64281f --- /dev/null +++ b/10 Tests/2026-01-10 Test kdo jsou registrovaní.py @@ -0,0 +1,52 @@ +from knihovny.medicus_db import MedicusDB +import pymysql + +# ========================================== +# CONFIGURATION +# ========================================== +HOST = "192.168.1.4" +DB_PATH = r"z:\Medicus 3\data\MEDICUS.FDB" +db = MedicusDB(HOST, DB_PATH) +patients = db.get_all_patients(as_dict=True) + +patients_by_rc = {p["rodcis"]: p for p in patients} +print(f"Loaded {len(patients_by_rc)} registered patients") +print(patients_by_rc) +print(len(patients_by_rc)) + + +# exit(0) + +MYSQL_CONFIG = { + "host": "192.168.1.76", + "port": 3307, + "user": "root", + "password": "Vlado9674+", + "database": "medevio", + "charset": "utf8mb4", + "autocommit": True +} +mysql = pymysql.connect( + cursorclass=pymysql.cursors.DictCursor, + **MYSQL_CONFIG +) + +with mysql.cursor() as cur: + cur.execute("select distinct rc from vzp_stav_pojisteni where prijmeni is null or jmeno is null") + + for radek in cur.fetchall(): + print(radek, radek['rc'] in patients_by_rc) + rodcis=radek['rc'] + # if radek['jmeno'] is None or radek['prijmeni'] is None: + # if radek['rc'] in patients_by_rc: + # with mysql.cursor() as tmpcur: + # tmpcur.execute('update vzp_stav_pojisteni set prijmeni=%s, jmeno=%s where id=%s', + # (patients_by_rc[radek['rc']]['prijmeni'],patients_by_rc[radek['rc']]['jmeno'],int(radek['id']))) + if rodcis in patients_by_rc: + jmeno=patients_by_rc[rodcis]['jmeno'] + prijmeni=patients_by_rc[rodcis]['prijmeni'] + with mysql.cursor() as tmpcur: + tmpcur.execute("update vzp_stav_pojisteni set prijmeni=%s, jmeno=%s where rc=%s",(prijmeni, jmeno, rodcis)) + + + diff --git a/10 Tests/20260111 Jednorázové ověření b/10 Tests/20260111 Jednorázové ověření new file mode 100644 index 0000000..8c5cd2d --- /dev/null +++ b/10 Tests/20260111 Jednorázové ověření @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import time +import logging +from vzpb2b_client import VZPB2BClient +from datetime import date + +# ========================================== +# KONFIGURACE (Zůstává stejná jako ve vašem skriptu) +# ========================================== +PFX_PATH = r"MBcert.pfx" +PFX_PASSWORD = "Vlado7309208104++" + +ENV = "prod" +ICZ = "00000000" # Sem doplňte své reálné ICZ +DIC = "00000000" # Sem doplňte své reálné DIČ + +# ========================================== +# MANUÁLNÍ DOTAZ - ZDE ZADEJTE RODNÉ ČÍSLO +# ========================================== +rodcitoquery = "155328072" # <--- Sem vložte hledané rodné číslo +k_datu = date.today().isoformat() + +# ========================================== +# INIT VZP CLIENT +# ========================================== +print(f"--- Inicializace připojení pro RC: {rodcitoquery} ---") +try: + vzp = VZPB2BClient(ENV, PFX_PATH, PFX_PASSWORD, icz=ICZ, dic=DIC) +except Exception as e: + print(f"Chyba při inicializaci certifikátu: {e}") + exit() + +# ========================================== +# DOTAZ NA VZP A VÝPIS RAW RESPONSE +# ========================================== +print(f"Odesílám dotaz na VZP (k datu {k_datu})...") + +try: + # Volání API + xml = vzp.stav_pojisteni(rc=rodcitoquery, k_datu=k_datu) + + print("\n" + "="*50) + print(" RAW RESPONSE Z WEBU VZP (XML)") + print("="*50) + print(xml) + print("="*50 + "\n") + + # Pokus o parsování (pro kontrolu, zda je odpověď validní) + if xml.strip().startswith("<"): + try: + result = vzp.parse_stav_pojisteni(xml) + print(f"Interpretovaný výsledek: {result}") + except Exception as parse_err: + print(f"Upozornění: XML nelze automaticky parsovat: {parse_err}") + else: + print("Upozornění: Odpověď nezačíná jako XML. Pravděpodobně chyba komunikace nebo timeout.") + +except Exception as e: + print(f"❌ CHYBA PŘI KOMUNIKACI: {e}") + +print("\nHotovo.") \ No newline at end of file diff --git a/knihovny/medicus_db.py b/knihovny/medicus_db.py index c652dfa..45a5cd7 100644 --- a/knihovny/medicus_db.py +++ b/knihovny/medicus_db.py @@ -35,6 +35,20 @@ class MedicusDB: AND registr.priznak IN ('A','D','V') AND kar.rodcis IS NOT NULL AND kar.rodcis <> '' + AND kar.vyrazen <> 'A' + """ + if as_dict: + return self.query_dict(sql) + return self.query(sql) + + def get_all_patients(self, as_dict=False): + sql = """ + SELECT + kar.rodcis, + kar.prijmeni, + kar.jmeno, + kar.poj + FROM kar """ if as_dict: return self.query_dict(sql)