notebookvb

This commit is contained in:
2026-04-11 11:56:54 +02:00
parent 24635b955d
commit c2d94b2362
10 changed files with 507 additions and 35 deletions
@@ -0,0 +1,93 @@
import uuid
from datetime import datetime, timezone
from requests import Session
from requests_pkcs12 import Pkcs12Adapter
# --- Konfigurace ---
PFX_FILE = r"C:\Users\vlado\PycharmProjects\Recepty\AMBSUKL214235369G_31DEC2024.pfx"
PFX_PASSWORD = "Vlado7309208104++"
API_USER = "e08c89c6-2b1a-4eba-8ed9-4e3e63618379"
API_PASS = "Buzalka@Vladimir2025"
UZIVATEL = "E08C89C6-2B1A-4EBA-8ED9-4E3E63618379"
PRACOVISTE = "00214235367"
ENDPOINT = "https://lekar-soap.erecept.sukl.cz/cuer/Lekar2"
NAMESPACE = "http://www.sukl.cz/erp/201912"
# --- Pacient ---
PRIJMENI = "Buzalka"
JMENA = "Vladimír"
DATUM_NAROZENI = "1973-09-20"
# --- Doklad totožnosti ---
# DruhDokladu: "ID" = občanský průkaz, "P" = cestovní pas
# CisloDokladu: číslo dokladu, max 9 znaků (jen číslice)
DRUH_DOKLADU = "ID"
CISLO_DOKLADU = "" # <-- sem vyplnit číslo občanského průkazu pacienta
POCET_ZNAKU_ATC = 7 # pouze 5 nebo 7
POCET_MESICU = 60 # max 99, volitelné
def nacist_lekovy_zaznam_s_obcankou():
if not CISLO_DOKLADU:
print("CHYBA: Není vyplněno CISLO_DOKLADU!")
return
sess = Session()
sess.mount("https://", Pkcs12Adapter(pkcs12_filename=PFX_FILE, pkcs12_password=PFX_PASSWORD))
sess.auth = (API_USER, API_PASS)
id_zpravy = str(uuid.uuid4())
odeslano = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S+00:00")
soap_body = (
'<?xml version="1.0" encoding="UTF-8"?>'
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">'
'<soapenv:Body>'
f'<NacistLekovyZaznamLekarDotaz xmlns="{NAMESPACE}">'
f'<Doklad>'
f'<Pristupujici>'
f'<Uzivatel>{UZIVATEL}</Uzivatel>'
f'<Pracoviste>{PRACOVISTE}</Pracoviste>'
f'</Pristupujici>'
f'<PocetZnakuATC>{POCET_ZNAKU_ATC}</PocetZnakuATC>'
f'<PocetMesicu>{POCET_MESICU}</PocetMesicu>'
f'<Pacient>'
f'<Totoznost>'
f'<Jmeno><Prijmeni>{PRIJMENI}</Prijmeni><Jmena>{JMENA}</Jmena></Jmeno>'
f'<DatumNarozeni>{DATUM_NAROZENI}</DatumNarozeni>'
f'<DruhDokladu>{DRUH_DOKLADU}</DruhDokladu>'
f'<CisloDokladu>{CISLO_DOKLADU}</CisloDokladu>'
f'</Totoznost>'
f'</Pacient>'
f'</Doklad>'
f'<Zprava>'
f'<ID_Zpravy>{id_zpravy}</ID_Zpravy>'
f'<Verze>202501A</Verze>'
f'<Odeslano>{odeslano}</Odeslano>'
f'<SW_Klienta>MEDICUS_____</SW_Klienta>'
f'</Zprava>'
f'</NacistLekovyZaznamLekarDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistLekovyZaznam"',
"User-Agent": "Medicus"
}
print(f"Pacient: {PRIJMENI} {JMENA}, nar. {DATUM_NAROZENI}")
print(f"Doklad: {DRUH_DOKLADU} {CISLO_DOKLADU}")
print(f"Volám: {ENDPOINT}\n")
resp = sess.post(ENDPOINT, data=soap_body.encode("utf-8"), headers=headers, timeout=15)
print(f"HTTP {resp.status_code} | {len(resp.content)} bytů\n")
print(resp.text)
if __name__ == "__main__":
nacist_lekovy_zaznam_s_obcankou()