diff --git a/LékovýZáznamWithClaude/06UlozitDoMySQL.py b/LékovýZáznamWithClaude/06UlozitDoMySQL.py
index 1906353..547eefa 100644
--- a/LékovýZáznamWithClaude/06UlozitDoMySQL.py
+++ b/LékovýZáznamWithClaude/06UlozitDoMySQL.py
@@ -579,6 +579,11 @@ def uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici,
Ulozi parsovana data do MySQL.
pacient_id — FK na tabulku pacient (None pokud volano primo z 06)
xml_soubor — relativni cesta k archivnimu XML souboru (None pokud neni archivovano)
+
+ Vraci dict se statistikami:
+ predpisy_novych, predpisy_celkem,
+ vydeji_novych, vydeji_celkem,
+ predpis_slozka, vydej_slozka
"""
iplp_predpisu = 0
iplp_vydejuu = 0
@@ -604,7 +609,6 @@ def uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici,
stazeno = CURRENT_TIMESTAMP
""", zprava_row)
zprava_id = _najdi_id(cur, "zprava", "id_zpravy", zprava["id_zpravy"])
- print(f" zprava id={zprava_id} ({zprava['id_zpravy']})")
# ── predpisy + jejich slozky ───────────────────────────────────────────
vlozeno_p = 0
@@ -640,9 +644,6 @@ def uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici,
""", s)
vlozeno_ps += 1
- print(f" predpisy: {vlozeno_p} novych (celkem {len(predpisy)})")
- print(f" predpis_slozka: {vlozeno_ps} slozek z {iplp_predpisu} IPLP predpisu")
-
# ── vydeji + jejich slozky ────────────────────────────────────────────
vlozeno_v = 0
vlozeno_vs = 0
@@ -679,11 +680,7 @@ def uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici,
""", s)
vlozeno_vs += 1
- print(f" vydeji: {vlozeno_v} novych (celkem {len(vydeji)})")
- print(f" vydej_slozka: {vlozeno_vs} slozek z {iplp_vydejuu} IPLP vydejuu")
-
# ── predepisujici ─────────────────────────────────────────────────────
- vlozeno_pre = 0
for row in predepisujici:
if not row.get("lekar_kod"):
continue
@@ -705,11 +702,8 @@ def uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici,
psc = VALUES(psc),
telefon = VALUES(telefon)
""", row)
- vlozeno_pre += cur.rowcount
- print(f" predepisujici: {vlozeno_pre} radku (celkem {len(predepisujici)})")
# ── vydavajici ────────────────────────────────────────────────────────
- vlozeno_vyd = 0
for row in vydavajici:
if not row.get("lekarnik_kod"):
continue
@@ -729,11 +723,18 @@ def uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici,
psc = VALUES(psc),
telefon = VALUES(telefon)
""", row)
- vlozeno_vyd += cur.rowcount
- print(f" vydavajici: {vlozeno_vyd} radku (celkem {len(vydavajici)})")
conn.commit()
+ return dict(
+ predpisy_novych = vlozeno_p,
+ predpisy_celkem = len(predpisy),
+ vydeji_novych = vlozeno_v,
+ vydeji_celkem = len(vydeji),
+ predpis_slozka = vlozeno_ps,
+ vydej_slozka = vlozeno_vs,
+ )
+
# ── main ──────────────────────────────────────────────────────────────────────
@@ -751,7 +752,10 @@ def main():
try:
vytvor_schema(conn)
print("Ukladani ...")
- uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici)
+ stats = uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici)
+ print(f" predpisy: {stats['predpisy_novych']} novych (celkem {stats['predpisy_celkem']})")
+ print(f" vydeji: {stats['vydeji_novych']} novych (celkem {stats['vydeji_celkem']})")
+ print(f" slozky: {stats['predpis_slozka']} predpis / {stats['vydej_slozka']} vydej")
print("Hotovo OK")
finally:
conn.close()
diff --git a/LékovýZáznamWithClaude/07StahnoutVsechny.py b/LékovýZáznamWithClaude/07StahnoutVsechny.py
index 1664996..9a6b11e 100644
--- a/LékovýZáznamWithClaude/07StahnoutVsechny.py
+++ b/LékovýZáznamWithClaude/07StahnoutVsechny.py
@@ -8,9 +8,16 @@ Spusteni:
# vsichni registrovani pacienti
python 07StahnoutVsechny.py
+ # davkovani po castech
+ python 07StahnoutVsechny.py --offset 100 --limit 50
+
+Vystup:
+ Konzole — jeden stručny radek na pacienta
+ Logs/ — kompletni log se vsemi detaily (UTF-8)
+
Logika poctu mesicu:
- prvni stazeni pacienta → 60 mesicu (maximum)
- - opakowane stazeni → ceil(pocet_dni_od_posledniho / 30) + 1
+ - opakovane stazeni → ceil(pocet_dni_od_posledniho / 30) + 1
(prekryv 1 mesic pro jistotu, INSERT IGNORE zajisti bez duplikatu)
XML archiv:
@@ -20,14 +27,12 @@ XML archiv:
import argparse
import importlib.util
+import logging
import math
+import random
import sys
import time
import uuid
-
-# Windows konzole — nahrad neunikatni znaky misto padu
-if hasattr(sys.stdout, "reconfigure"):
- sys.stdout.reconfigure(errors="replace")
from datetime import datetime, timezone, date
from pathlib import Path
from xml.sax.saxutils import escape as xml_escape
@@ -38,6 +43,10 @@ import pymysql.cursors
from requests import Session
from requests_pkcs12 import Pkcs12Adapter
+# Windows konzole — nahrad neunikatni znaky misto padu
+if hasattr(sys.stdout, "reconfigure"):
+ sys.stdout.reconfigure(errors="replace")
+
# ── Import parsovaci logiky z 06 ──────────────────────────────────────────────
_spec = importlib.util.spec_from_file_location(
"m06", Path(__file__).parent / "06UlozitDoMySQL.py"
@@ -58,9 +67,10 @@ UZIVATEL = "E08C89C6-2B1A-4EBA-8ED9-4E3E63618379"
PRACOVISTE = "00214235367"
ENDPOINT = "https://lekar-soap.erecept.sukl.cz/cuer/Lekar2"
-POCET_ZNAKU_ATC = 7
+POCET_ZNAKU_ATC = 7
POCET_MESICU_MAX = 60
-PAUZA_MEZI_VOLANIMI = 15 # sekund
+PAUZA_MIN = 10 # sekund
+PAUZA_MAX = 20 # sekund
# ── Konfigurace Firebird ──────────────────────────────────────────────────────
FB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb'
@@ -80,8 +90,36 @@ DB = dict(
cursorclass = pymysql.cursors.DictCursor,
)
-# ── XML archiv ────────────────────────────────────────────────────────────────
-XML_DIR = Path(__file__).parent / "xml_archive"
+# ── Adresare ──────────────────────────────────────────────────────────────────
+XML_DIR = Path(__file__).parent / "xml_archive"
+LOGS_DIR = Path(__file__).parent / "Logs"
+
+
+# ── Logging ───────────────────────────────────────────────────────────────────
+
+def setup_logging(dnes_str, cas_str):
+ """
+ Dva handlery:
+ - soubor (DEBUG) → Logs/YYYY-MM-DD_HH-MM-SS.log — vse vcetne detailu
+ - konzole (INFO) → stdout — jen souhrnne radky
+ """
+ LOGS_DIR.mkdir(exist_ok=True)
+ log_soubor = LOGS_DIR / f"{dnes_str}_{cas_str}.log"
+
+ log = logging.getLogger("lz")
+ log.setLevel(logging.DEBUG)
+
+ fh = logging.FileHandler(log_soubor, encoding="utf-8")
+ fh.setLevel(logging.DEBUG)
+ fh.setFormatter(logging.Formatter("%(asctime)s %(message)s", datefmt="%H:%M:%S"))
+
+ ch = logging.StreamHandler(sys.stdout)
+ ch.setLevel(logging.INFO)
+ ch.setFormatter(logging.Formatter("%(message)s"))
+
+ log.addHandler(fh)
+ log.addHandler(ch)
+ return log, log_soubor
# ── Firebird: nacteni registrovanych pacientu ─────────────────────────────────
@@ -121,10 +159,6 @@ _SQL_FILTR = """
def nacti_pacienty(prijmeni_filtr=None):
- """
- Vraci seznam dict {idpac, prijmeni, jmeno, datnar}.
- prijmeni_filtr: list prijmeni (napr. ['Buzalka', 'Buzalkova']) nebo None = vsichni.
- """
conn = fdb.connect(dsn=FB_DSN, user=FB_USER, password=FB_PASS, charset=FB_CHARSET)
try:
cur = conn.cursor()
@@ -143,10 +177,6 @@ def nacti_pacienty(prijmeni_filtr=None):
# ── MySQL: pacient UPSERT ─────────────────────────────────────────────────────
def upsert_pacient(cur, pac):
- """
- Vlozi nebo aktualizuje pacienta v tabulce pacient.
- Vraci MySQL id radku.
- """
cur.execute("""
INSERT INTO pacient (idpac, prijmeni, jmena, datum_narozeni)
VALUES (%s, %s, %s, %s)
@@ -159,7 +189,6 @@ def upsert_pacient(cur, pac):
def posledni_stazeni(cur, pacient_id):
- """Vraci datetime posledniho stazeni, nebo None pro noveho pacienta."""
cur.execute(
"SELECT MAX(stazeno) AS posledni FROM zprava WHERE pacient_id = %s",
(pacient_id,)
@@ -169,52 +198,13 @@ def posledni_stazeni(cur, pacient_id):
def vypocti_pocet_mesicu(posledni):
- """60 pro prvni stazeni, jinak delta v mesicich + 1 (prekryv)."""
if posledni is None:
return POCET_MESICU_MAX
delta_dni = (datetime.now() - posledni).days
return min(math.ceil(delta_dni / 30) + 1, POCET_MESICU_MAX)
-# ── SOAP volani ───────────────────────────────────────────────────────────────
-
-def extrahuj_soap_fault(xml_text):
- """
- Pokud XML obsahuje SOAP Fault, vraci text chyby (str).
- Pokud je odpoved v poradku, vraci None.
- """
- try:
- import xml.etree.ElementTree as ET
- NS_SOAP = "http://schemas.xmlsoap.org/soap/envelope/"
- NS_SUKL = "http://www.sukl.cz/erp/201912"
- root = ET.fromstring(xml_text)
- body = root.find(f"{{{NS_SOAP}}}Body")
- if body is None:
- return "Chybejici SOAP Body"
- # Zkontroluj SOAP Fault
- fault = body.find(f"{{{NS_SOAP}}}Fault")
- if fault is None:
- fault = body.find("Fault") # nektery server posila bez namespace
- if fault is not None:
- faultstring = fault.findtext("faultstring") or fault.findtext("faultcode") or "Nezname SOAP Fault"
- detail = fault.find("detail")
- if detail is not None and detail.text:
- faultstring = f"{faultstring}: {detail.text.strip()[:200]}"
- return faultstring
- # Zkontroluj, ze odpoved je spravneho typu (NacistLekovyZaznamOdpoved)
- odpoved = body.find(f"{{{NS_SUKL}}}NacistLekovyZaznamOdpoved")
- if odpoved is None:
- # Neznamy format — vrat prvni tag jako info
- first = list(body)
- tag = first[0].tag if first else "prazdne Body"
- return f"Neocekavana odpoved: {tag}"
- return None # vse OK
- except Exception as e:
- return f"Chyba pri parsovani odpovedi: {e}"
-
-
def uloz_poznamku(conn, pacient_id, poznamka):
- """Ulozi nebo vymaze poznamku (chybu) u pacienta."""
with conn.cursor() as cur:
cur.execute(
"UPDATE pacient SET poznamka = %s WHERE id = %s",
@@ -223,14 +213,39 @@ def uloz_poznamku(conn, pacient_id, poznamka):
conn.commit()
+# ── SOAP volani ───────────────────────────────────────────────────────────────
+
+def extrahuj_soap_fault(xml_text):
+ """Vraci text chyby pokud odpoved obsahuje SOAP Fault, jinak None."""
+ try:
+ import xml.etree.ElementTree as ET
+ NS_SOAP = "http://schemas.xmlsoap.org/soap/envelope/"
+ NS_SUKL = "http://www.sukl.cz/erp/201912"
+ root = ET.fromstring(xml_text)
+ body = root.find(f"{{{NS_SOAP}}}Body")
+ if body is None:
+ return "Chybejici SOAP Body"
+ fault = body.find(f"{{{NS_SOAP}}}Fault") or body.find("Fault")
+ if fault is not None:
+ faultstring = (fault.findtext("faultstring")
+ or fault.findtext("faultcode")
+ or "Nezname SOAP Fault")
+ detail = fault.find("detail")
+ if detail is not None and detail.text:
+ faultstring = f"{faultstring}: {detail.text.strip()[:200]}"
+ return faultstring
+ if body.find(f"{{{NS_SUKL}}}NacistLekovyZaznamOdpoved") is None:
+ first = list(body)
+ tag = first[0].tag if first else "prazdne Body"
+ return f"Neocekavana odpoved: {tag}"
+ return None
+ except Exception as e:
+ return f"Chyba pri parsovani odpovedi: {e}"
+
+
def nacti_lekovy_zaznam(sess, prijmeni, jmena, datum_narozeni, pocet_mesicu):
- """
- Zavola NacistLekovyZaznam pro jednoho pacienta.
- Vraci xml_text (str). Vyhazuje RuntimeError pri HTTP chybe.
- """
id_zpravy = str(uuid.uuid4())
odeslano = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S+00:00")
-
soap = (
''
''
@@ -259,7 +274,6 @@ def nacti_lekovy_zaznam(sess, prijmeni, jmena, datum_narozeni, pocet_mesicu):
''
''
)
-
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistLekovyZaznam"',
@@ -274,10 +288,6 @@ def nacti_lekovy_zaznam(sess, prijmeni, jmena, datum_narozeni, pocet_mesicu):
# ── XML archiv ────────────────────────────────────────────────────────────────
def uloz_xml_na_disk(xml_text, prijmeni, jmena, datnar_str, dnes_str):
- """
- Ulozi XML do xml_archive/YYYY-MM-DD/{Prijmeni}_{Jmena}_{datnar}.xml
- Vraci relativni cestu (str) vuci adresari skriptu.
- """
adr = XML_DIR / dnes_str
adr.mkdir(parents=True, exist_ok=True)
nazev = f"{prijmeni}_{jmena}_{datnar_str}.xml".replace(" ", "_")
@@ -289,131 +299,128 @@ def uloz_xml_na_disk(xml_text, prijmeni, jmena, datnar_str, dnes_str):
# ── Hlavni smycka ─────────────────────────────────────────────────────────────
def main():
- ap = argparse.ArgumentParser(
- description="Hromadne stazeni lekovych zaznamu z eReceptu"
- )
- ap.add_argument(
- "--prijmeni",
- help="Filtr prijmeni oddelena carkou, napr: Buzalka,Buzalkova,Kusinova",
- default=None,
- )
- ap.add_argument(
- "--limit",
- type=int,
- default=None,
- help="Zpracuj pouze N pacientu",
- )
- ap.add_argument(
- "--offset",
- type=int,
- default=0,
- help="Preskoc prvnich N pacientu (pro postupne davkovani)",
- )
+ ap = argparse.ArgumentParser(description="Hromadne stazeni lekovych zaznamu z eReceptu")
+ ap.add_argument("--prijmeni", default=None,
+ help="Filtr prijmeni oddelena carkou, napr: Buzalka,Buzalkova,Kusinova")
+ ap.add_argument("--limit", type=int, default=None, help="Zpracuj pouze N pacientu")
+ ap.add_argument("--offset", type=int, default=0,
+ help="Preskoc prvnich N pacientu (pro postupne davkovani)")
args = ap.parse_args()
+ dnes_str = date.today().isoformat()
+ cas_str = datetime.now().strftime("%H-%M-%S")
+ log, log_soubor = setup_logging(dnes_str, cas_str)
+
prijmeni_filtr = None
if args.prijmeni:
prijmeni_filtr = [p.strip() for p in args.prijmeni.split(",")]
- print(f"Filtr prijmeni: {prijmeni_filtr}")
+ log.info(f"Filtr prijmeni: {prijmeni_filtr}")
- # 1. Nacti pacienty z Medicusu
- print("Nacitam pacienty z Medicusu (Firebird)...")
+ log.info("Nacitam pacienty z Medicusu...")
pacienti = nacti_pacienty(prijmeni_filtr)
- print(f" Nalezeno: {len(pacienti)} pacientu")
+ log.debug(f"Celkem registrovanych: {len(pacienti)}")
+
if args.offset:
pacienti = pacienti[args.offset:]
- print(f" Preskoceno: {args.offset} (--offset {args.offset})")
+ log.debug(f"Preskoceno: {args.offset}")
if args.limit:
pacienti = pacienti[:args.limit]
- print(f" Omezeno na: {len(pacienti)} (--limit {args.limit})")
- if not pacienti:
- print("Zadni pacienti — konec.")
+ log.debug(f"Omezeno na: {len(pacienti)}")
+
+ celkem = len(pacienti)
+ log.info(f"Pacientu ke zpracovani: {celkem} | log: {log_soubor.name}")
+
+ if not celkem:
+ log.info("Zadni pacienti — konec.")
return
- # 2. Pripoj se k MySQL, over schema (CREATE IF NOT EXISTS)
- print("Pripojuji k MySQL...")
conn = pymysql.connect(**DB)
inicializuj_schema(conn)
+ log.debug("MySQL schema OK")
- # 3. Priprav SOAP session (sdilena pro vsechny pacienty)
sess = Session()
- sess.mount("https://", Pkcs12Adapter(
- pkcs12_filename=PFX_FILE,
- pkcs12_password=PFX_PASS,
- ))
+ sess.mount("https://", Pkcs12Adapter(pkcs12_filename=PFX_FILE, pkcs12_password=PFX_PASS))
sess.auth = (API_USER, API_PASS)
- dnes_str = date.today().isoformat()
ok = 0
chyby = 0
- celkem = len(pacienti)
try:
for i, pac in enumerate(pacienti, 1):
- prijmeni = pac["prijmeni"]
- jmena = pac["jmeno"]
- datnar = pac["datnar"]
+ prijmeni = pac["prijmeni"]
+ jmena = pac["jmeno"]
+ datnar = pac["datnar"]
datnar_str = datnar.isoformat() if hasattr(datnar, "isoformat") else str(datnar)
+ jmeno_str = f"{prijmeni} {jmena}"
- print(f"\n[{i}/{celkem}] {prijmeni} {jmena} (*{datnar_str})")
+ log.debug(f"[{i:4}/{celkem}] {jmeno_str} (*{datnar_str})")
- # UPSERT pacienta, zjisti kdy byl naposledy stazen
with conn.cursor() as cur:
pacient_id = upsert_pacient(cur, pac)
posledni = posledni_stazeni(cur, pacient_id)
conn.commit()
pocet_mesicu = vypocti_pocet_mesicu(posledni)
- print(f" Stahuju {pocet_mesicu} mesicu "
- f"(posledni stazeni: {posledni.strftime('%Y-%m-%d') if posledni else 'nikdy'})")
+ log.debug(f" stahuju {pocet_mesicu}m "
+ f"(posledni: {posledni.strftime('%Y-%m-%d') if posledni else 'nikdy'})")
# Zavolej API
try:
xml_text = nacti_lekovy_zaznam(sess, prijmeni, jmena, datnar_str, pocet_mesicu)
except Exception as e:
zprava_chyby = str(e)[:400]
- print(f" CHYBA API: {zprava_chyby}")
+ log.debug(f" CHYBA API: {zprava_chyby}")
+ log.info(f"[{i:4}/{celkem}] {jmeno_str:<30} CHYBA {zprava_chyby[:60]}")
uloz_poznamku(conn, pacient_id, zprava_chyby)
chyby += 1
continue
- # Detekuj SOAP Fault v odpovedi (HTTP 200 ale chyba uvnitr)
+ # Detekuj SOAP Fault
soap_fault = extrahuj_soap_fault(xml_text)
if soap_fault:
- print(f" SOAP FAULT: {soap_fault}")
+ log.debug(f" SOAP FAULT: {soap_fault}")
+ log.info(f"[{i:4}/{celkem}] {jmeno_str:<30} CHYBA {soap_fault[:60]}")
uloz_poznamku(conn, pacient_id, soap_fault[:400])
chyby += 1
continue
- # Uloz XML na disk
+ # Uloz XML
xml_soubor = uloz_xml_na_disk(xml_text, prijmeni, jmena, datnar_str, dnes_str)
xml_path = Path(__file__).parent / xml_soubor
- print(f" XML: {xml_soubor} ({xml_path.stat().st_size // 1024} KB)")
+ kb = xml_path.stat().st_size // 1024
+ log.debug(f" XML: {xml_soubor} ({kb} KB)")
# Parsuj + uloz do MySQL
try:
zprava_d, predpisy, vydeji, predepisujici, vydavajici = parsuj_xml(xml_path)
- uloz(conn, zprava_d, predpisy, vydeji, predepisujici, vydavajici,
- pacient_id=pacient_id, xml_soubor=xml_soubor)
- uloz_poznamku(conn, pacient_id, None) # vymaz predchozi chybu
+ stats = uloz(conn, zprava_d, predpisy, vydeji, predepisujici, vydavajici,
+ pacient_id=pacient_id, xml_soubor=xml_soubor)
+ uloz_poznamku(conn, pacient_id, None)
+ log.debug(f" predpisy: {stats['predpisy_novych']}n/{stats['predpisy_celkem']} "
+ f"vydeji: {stats['vydeji_novych']}n/{stats['vydeji_celkem']} "
+ f"slozky: {stats['predpis_slozka']}p/{stats['vydej_slozka']}v")
+ log.info(f"[{i:4}/{celkem}] {jmeno_str:<30} OK "
+ f"{stats['predpisy_celkem']:4}p {stats['vydeji_celkem']:4}v {kb:4} KB")
ok += 1
except Exception as e:
zprava_chyby = str(e)[:400]
- print(f" CHYBA parsovani/ulozeni: {zprava_chyby}")
+ log.debug(f" CHYBA parsovani/ulozeni: {zprava_chyby}")
+ log.info(f"[{i:4}/{celkem}] {jmeno_str:<30} CHYBA {zprava_chyby[:60]}")
uloz_poznamku(conn, pacient_id, zprava_chyby)
chyby += 1
- # Pauza mezi volanimi API (neplati po poslednim pacientovi)
if i < celkem:
- print(f" Cekam {PAUZA_MEZI_VOLANIMI}s ...")
- time.sleep(PAUZA_MEZI_VOLANIMI)
+ pauza = random.randint(PAUZA_MIN, PAUZA_MAX)
+ log.debug(f" cekam {pauza}s ...")
+ time.sleep(pauza)
finally:
conn.close()
sess.close()
- print(f"\n{'=' * 55}")
- print(f"Hotovo: {ok} OK | {chyby} chyb | celkem {celkem} pacientu")
+ zhrnutí = f"Hotovo: {ok} OK | {chyby} chyb | celkem {celkem} pacientu"
+ log.info("=" * 55)
+ log.info(zhrnutí)
if __name__ == "__main__":
diff --git a/LékovýZáznamWithClaude/Logs/2026-04-11_12-08-37.log b/LékovýZáznamWithClaude/Logs/2026-04-11_12-08-37.log
new file mode 100644
index 0000000..e22dcfc
--- /dev/null
+++ b/LékovýZáznamWithClaude/Logs/2026-04-11_12-08-37.log
@@ -0,0 +1,8844 @@
+12:08:37 Nacitam pacienty z Medicusu...
+12:08:37 Celkem registrovanych: 1621
+12:08:37 Pacientu ke zpracovani: 1621 | log: 2026-04-11_12-08-37.log
+12:08:37 MySQL schema OK
+12:08:37 [ 1/1621] Abohamda Horia (*1948-11-22)
+12:08:37 stahuju 1m (posledni: 2026-04-11)
+12:08:38 XML: xml_archive\2026-04-11\Abohamda_Horia_1948-11-22.xml (23 KB)
+12:08:39 predpisy: 0n/11 vydeji: 0n/27 slozky: 0p/0v
+12:08:39 [ 1/1621] Abohamda Horia OK 11p 27v 23 KB
+12:08:39 cekam 20s ...
+12:08:59 [ 2/1621] Adamcová Jaroslava (*1946-03-18)
+12:08:59 stahuju 1m (posledni: 2026-04-11)
+12:09:00 XML: xml_archive\2026-04-11\Adamcová_Jaroslava_1946-03-18.xml (26 KB)
+12:09:02 predpisy: 0n/18 vydeji: 0n/27 slozky: 0p/0v
+12:09:02 [ 2/1621] Adamcová Jaroslava OK 18p 27v 26 KB
+12:09:02 cekam 12s ...
+12:09:14 [ 3/1621] Adamec Petr (*1981-01-19)
+12:09:14 stahuju 1m (posledni: 2026-04-11)
+12:09:15 XML: xml_archive\2026-04-11\Adamec_Petr_1981-01-19.xml (0 KB)
+12:09:15 predpisy: 0n/0 vydeji: 0n/0 slozky: 0p/0v
+12:09:15 [ 3/1621] Adamec Petr OK 0p 0v 0 KB
+12:09:15 cekam 16s ...
+12:09:31 [ 4/1621] Adlerová Irena (*1937-07-05)
+12:09:31 stahuju 1m (posledni: 2026-04-11)
+12:09:33 XML: xml_archive\2026-04-11\Adlerová_Irena_1937-07-05.xml (4 KB)
+12:09:33 predpisy: 0n/2 vydeji: 0n/2 slozky: 0p/0v
+12:09:33 [ 4/1621] Adlerová Irena OK 2p 2v 4 KB
+12:09:33 cekam 10s ...
+12:09:43 [ 5/1621] Alakbarov Farid (*1966-01-02)
+12:09:43 stahuju 60m (posledni: nikdy)
+12:09:44 CHYBA API: HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:09:44 [ 5/1621] Alakbarov Farid CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:10:02 [ 7/1621] Alexovič Vladimír CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:11:58 [ 14/1621] Baasansuren Jambaldorj CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:13:34 [ 20/1621] Barabolya Lyudmila CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:13:35 [ 21/1621] Bareš Chovancová Věra CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:13:35 [ 22/1621] Barrell Petr CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:13:36 [ 23/1621] Barrellová Catharine CHYBA HTTP 500: soap:ServerI007 - Vnitřní chyba sy
+12:14:50 [ 27/1621] Bartejsová - Plačková Petra CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:15:11 [ 29/1621] Baštová Tereza CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:15:33 [ 31/1621] Bazjuková Hana CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:16:35 [ 35/1621] Bednářová Dana CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:16:36 [ 36/1621] Behan Dominik CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:18:12 [ 41/1621] Berki Miroslav CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:20:09 [ 48/1621] Bílek Václav CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:22:21 [ 55/1621] Bláha Vladimír CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:25:05 [ 64/1621] Boháčová Barbora CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:26:28 [ 69/1621] Bouček Jan CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:27:08 [ 72/1621] Braunspergerová Eva CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:27:09 [ 73/1621] Breitenfeld Lothar CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:27:52 [ 76/1621] Broulímová Mariya CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:29:23 [ 81/1621] Březina Vladislav CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:29:58 [ 83/1621] Budač Aleš CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:30:00 [ 84/1621] Bui Linda CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:30:15 [ 86/1621] BUI Thi PhuongThao CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:31:55 [ 91/1621] Bunyat-Zada Rafiga CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:31:57 [ 92/1621] Bureš Jiří CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:36:11 [ 105/1621] Cerman Jakub CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:38:01 [ 110/1621] Cibulka Petr CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:39:33 [ 115/1621] Cipro Šimon CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:39:35 [ 116/1621] Ciryn Dominik CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:39:37 [ 117/1621] Ciryn Tomáš CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:39:59 [ 119/1621] Císař Petr CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:40:48 [ 122/1621] Císařovský Adam CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:40:49 [ 123/1621] Coubalová Lada CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:42:15 [ 128/1621] Čajka Jakub CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:42:39 [ 130/1621] Čapek Martin CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:42:40 [ 131/1621] Čapková Tereza CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:42:41 [ 132/1621] Čech Aleš CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:44:21 [ 138/1621] Čenanovič Arman CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:44:22 [ 139/1621] Čenanovičová krkičov Sanja CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:44:22 [ 140/1621] Čepelka Daniel CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:46:22 [ 147/1621] Čičo Vladimír CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:47:15 [ 151/1621] Čípová Hana CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:48:50 [ 157/1621] Čulíková Alžběta CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:49:12 [ 159/1621] Čulíková Martina CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:50:15 [ 163/1621] Danihelka Yirka CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:51:07 [ 165/1621] Degen Daniel CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:51:41 [ 168/1621] Deiak Svitlana CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:52:39 [ 172/1621] Deyak Mykhaylo CHYBA HTTP 500: soap:ServerC010 - Požadována nepro
+12:53:04 [ 174/1621] Dientsbierová Marie CHYBA HTTP 500: soap:ServerZ002 - Lékový záznam ne
+12:53:46 [ 177/1621] Dittmayer Jan CHYBA HTTP 500: