Files
recept/NačteníPředpisuWithClaude/NacistPredpis_DOKUMENTACE.md
T
2026-04-06 09:27:48 +02:00

15 KiB
Raw Blame History

NacistPredpis — Funkční SOAP klient pro IS eRecept SÚKL

Status

OVĚŘENO FUNKČNÍ — 6. dubna 2026 Odpověď serveru: HTTP 200, velikost: ~3.7 KB Schéma ověřeno proti: schema1.xsd verze 202501A (dokumentace SÚKL 2025-04-24) Debug ověřen z: MedicusDebug/eR_SuklMesage_bf002578-*.mime


Co tato operace dělá

NacistPredpis je SOAP operace IS eRecept (SÚKL), která vrátí kompletní detail jednoho konkrétního receptu podle jeho ID.

Vrací vše: pacienta (jméno, adresa, rodné číslo, ZP), lékaře, ordinaci, předepsaný lék (ATC, dávkování, úhrada), stav receptu, výdej z lékárny.

Typické použití: lékař si zobrazí detail receptu, který sám vystavil, nebo ověří zda byl vydán.


Klíčové informace

Endpoint (produkce)

https://lekar-soap.erecept.sukl.cz/cuer/Lekar

Tato operace je na starším endpointu /cuer/Lekarbez číslice 2. Operace NacistLekovyZaznam je naopak na /cuer/Lekar2.

Endpoint (testovací prostředí)

https://lekar-soap.test-erecept.sukl.cz/cuer/Lekar

SOAPAction

"NacistPredpis"

XML namespace

http://www.sukl.cz/erp/201704

Starší namespace z roku 2017 — tato operace existuje od počátku IS eRecept. Na rozdíl od NacistLekovyZaznam (namespace 201912) zde zůstává 201704.


Porovnání s NacistLekovyZaznam

NacistPredpis NacistLekovyZaznam
Namespace 201704 201912
Endpoint /cuer/Lekar /cuer/Lekar2
SOAPAction NacistPredpis NacistLekovyZaznam
Identifikace ID receptu (alfanumerický kód) jméno + datum narození pacienta
Výsledek detail jednoho receptu celý lékový záznam pacienta (roky)
Velikost odpovědi ~3.7 KB ~227 KB

Autentizace (dvojitá — stejná jako u všech operací)

1. Klientský certifikát (TLS mutual auth)

  • Soubor: AMBSUKL214235369G_31DEC2024.pfx
  • Formát: PKCS#12 (.pfx)
  • Knihovna: requests-pkcs12Pkcs12Adapter

2. HTTP Basic Auth

  • Uživatel: UUID lékaře
  • Heslo: osobní heslo lékaře do portálu eRecept

Struktura SOAP dotazu

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <NacteniPredpisuDotaz xmlns="http://www.sukl.cz/erp/201704">

      <Doklad>
        <Pristupujici>
          <Uzivatel>E08C89C6-2B1A-4EBA-8ED9-4E3E63618379</Uzivatel>  <!-- UUID lékaře -->
          <Pracoviste>00214235367</Pracoviste>                         <!-- IČP pracoviště -->
        </Pristupujici>
        <Identifikator>
          <ID_Dokladu>PPIBVF93285E</ID_Dokladu>   <!-- ID receptu, 1225 znaků -->
          <!-- alternativně: -->
          <!-- <ID_Podani>uuid-guid-formát</ID_Podani> -->
        </Identifikator>
      </Doklad>

      <Zprava>
        <ID_Zpravy>bf002578-4e0d-48f9-86b4-ea3e21f280ec</ID_Zpravy>
        <Verze>202501A</Verze>
        <Odeslano>2026-04-06T07:24:04+00:00</Odeslano>
        <SW_Klienta>MEDICUS_____</SW_Klienta>
      </Zprava>

    </NacteniPredpisuDotaz>
  </soapenv:Body>
</soapenv:Envelope>

Parametry dotazu (ověřeno proti schema1.xsd verze 202501A)

Element Povinný Omezení Poznámka
Uzivatel ano UUID formát UUID lékaře přidělené SÚKL
Pracoviste ano IČP pracoviště lékaře
ID_Dokladu volitelný* 1225 znaků alfanumerický kód receptu
ID_Podani volitelný* UUID formát (36 znaků) alternativní identifikátor podání
ID_Zpravy ano UUID formát nové UUID pro každý dotaz
Verze ano aktuálně 202501A
Odeslano ano ISO 8601 čas odeslání s časovou zónou
SW_Klienta ano přesně 12 znaků doplnit mezerami

*Uvést právě jedno z: ID_Dokladu nebo ID_Podani — viz chybový kód L001.

Formát ID receptu (ID_Dokladu)

Alfanumerický kód délky 1225 znaků, např. PPIBVF93285E.

  • Nesmí obsahovat písmena O (zaměnitelné s nulou), I (zaměnitelné s jedničkou), Y, Z
  • Nesmí obsahovat malá písmena ani diakritiku
  • Lékař jej vidí na průvodce receptu / v Medicusu

Struktura odpovědi (ověřeno proti schema1.xsd verze 202501A)

NacteniPredpisuOdpoved
├── Doklad
│   ├── ID_Dokladu                    alfanumerický kód receptu
│   ├── DatumVystaveni                datum
│   ├── PlatnostDo                    datum
│   ├── VypisDo                       datum — volitelný (prodloužená platnost výpisem)
│   ├── Akutni                        boolean — volitelný
│   ├── Rodina                        boolean — volitelný
│   ├── Preshranicni                  boolean — volitelný
│   ├── Opakovani                     int — volitelný (opakovací předpis)
│   │
│   ├── Pacient
│   │   ├── Totoznost
│   │   │   ├── Jmeno (Prijmeni, Jmena)
│   │   │   ├── DatumNarozeni
│   │   │   ├── Adresa (ulice, číslo, obec, PSC, okres...)
│   │   │   └── ROB                   způsob ztotožnění: ECD / JPDN / JPDNA
│   │   ├── CP                        číslo pojištěnce (rodné číslo)
│   │   ├── ZP                        Kod + Nazev zdravotní pojišťovny
│   │   ├── Telefon                   volitelný
│   │   ├── Notifikace                SMS / Email — volitelný
│   │   └── Pohlavi                   M / Z — volitelný
│   │
│   ├── Predepisujici
│   │   ├── Lekar                     Kod (UUID) + Jmeno
│   │   ├── ICZ                       8 číslic
│   │   ├── ICP                       8 číslic
│   │   ├── PZS                       Kod + Nazev + IC + Telefon + Adresa
│   │   ├── Telefon
│   │   ├── Email                     volitelný
│   │   └── Odbornost                 Kod + Nazev
│   │
│   ├── Doporucujici                  volitelný — doporučující lékař
│   │   ├── Jmeno
│   │   ├── PZS
│   │   └── Odbornost
│   │
│   ├── Revize                        volitelný — schválení revizním lékařem ZP
│   │
│   ├── PLP[]                         předepsané léčivé přípravky (1 nebo více)
│   │   ├── Mnozstvi                  int, 19999
│   │   ├── Navod                     dávkování, max 80 znaků (např. "1-1-0")
│   │   ├── Uhrada                    ZAKLADNI / ZVYSENA / NEHRAZENY
│   │   ├── HVLPReg                   volitelný — registrovaný lék
│   │   │   ├── Kod                   SÚKL kód (7 číslic, např. "0087076")
│   │   │   ├── ATC                   ATC kód (např. "R05CB15")
│   │   │   ├── Nazev                 např. "ERDOMED"
│   │   │   ├── Forma                 léková forma (např. "CPS DUR")
│   │   │   ├── Sila                  síla (např. "300MG")
│   │   │   ├── CestaPodani           např. "POR"
│   │   │   └── Baleni                počet kusů v balení
│   │   ├── HVLPNereg                 volitelný — neregistrovaný HVLP
│   │   ├── IPLP                      volitelný — individuálně připravovaný LP
│   │   ├── INN                       volitelný — generický název
│   │   ├── Prekroceni                boolean — překročení limitu
│   │   ├── ID_LP_Zdroj               int — ID zdroje LP
│   │   └── ID_LP                     UUID položky předpisu
│   │
│   ├── Pozn                          poznámka, max 1000 znaků — volitelný
│   ├── Stav                          stav receptu (viz níže)
│   │
│   ├── Vydej[]                       volitelný — výdeje z lékáren (zkrácená forma)
│   │   ├── ID_Dokladu                ID výdeje
│   │   ├── ID_Dokladu_ERP            ID receptu (zpětný odkaz)
│   │   ├── DatumVydeje               datum
│   │   ├── NazevPZS                  název lékárny
│   │   ├── JmenoVydavajiciho         jméno lékárníka (může být "skryto")
│   │   ├── VLP[]                     vydané léčivé přípravky
│   │   │   ├── Mnozstvi
│   │   │   ├── Nazev                 plný název léku (např. "ERDOMED 300MG CPS DUR 20")
│   │   │   ├── Kod                   SÚKL kód
│   │   │   ├── Navod
│   │   │   └── IdLpErp               UUID zpětný odkaz na PLP
│   │   ├── Zmena                     datetime
│   │   └── Zalozeni                  datetime
│   │
│   ├── Zmena                         datetime — poslední změna receptu
│   ├── Zalozeni                      datetime — vytvoření receptu
│   ├── DruhPojisteni                 VEREJNE / OSTATNI — volitelný
│   ├── ModryPruh                     boolean — volitelný (omamné látky)
│   ├── Papirovy                      boolean — volitelný
│   └── ZapocitatelnyDoplatekZbyvaDoLimitu  decimal — zbývající limit doplatků pacienta
│
└── Zprava
    ├── ID_Zpravy                     nové UUID od serveru
    ├── Verze
    ├── Odeslano
    ├── ID_Podani                     echo ID podání
    └── Prijato                       datetime — čas přijetí na serveru

Popis jednotlivých polí odpovědi (zdroj: documentationCuer.html SÚKL 2025-04-24)

Pole Typ Povinné Popis
ID_Dokladu string 1225 Identifikátor dokladu
DatumVystaveni date Datum vystavení eReceptu
PlatnostDo date Datum konce platnosti eReceptu určené při předepsání
VypisDo date Datum prodloužení platnosti eReceptu (lékárna může platnost prodloužit výpisem)
Akutni boolean Symbol Akutní péče nebo Neodkladná péče
Rodina boolean Symbol „Pro potřebu rodiny" nebo „Ad usum proprium" (lékař předepisuje sobě/rodině)
Preshranicni boolean Přeshraniční předpis (nepoužívá se)
Opakovani long Celkový počet výdejů u opakovacích receptů
Pacient nacteni_pacient_type Údaje o pacientovi
Predepisujici nacteni_predepisujici_type Údaje o předepisujícím lékaři
Doporucujici nacteni_doporucujici_type Údaje o doporučujícím lékaři
Revize nacteni_revize_type Schválení revizním lékařem ZP (nepoužívá se)
PLP nacteni_predepsany_lp_erp_type[] Předepsané položky (léky)
Pozn string 11000 Poznámka na eReceptu
UpozornitLekare enum Akceptace zpětného předání poznámky z lékárny — viz tabulka níže
Stav enum Stav eReceptu — viz tabulka níže
Vydej nacteni_zkraceny_vydej_erp_doklad_odpoved_type[] Seznam výdejů uskutečněných dosud na tento eRecept
Zmena dateTime Datum a čas poslední změny eReceptu
Zalozeni dateTime Datum a čas založení eReceptu
DruhPojisteni enum Druh pojištění pacienta — viz tabulka níže
ModryPruh boolean Předpis na LP s obsahem vysoce návykové látky (omamné/psychotropní)
Papirovy boolean Digitalizovaný papírový předpis (nepoužívá se)
ZapocitatelnyDoplatekZbyvaDoLimitu decimal 0999999.99 Částka zbývající do max. ročního limitu započitatelných doplatků pacienta (po překročení limitu ZP hradí doplatky za pacienta)

Hodnoty stavu receptu (Stav) — enum stav_elektronickeho_receptu

Hodnota Popis
KE_SCHVALENI (Nepoužívá se) Ke schválení zdravotní pojišťovnou
ZAMITNUTY (Nepoužívá se) Zamítnutý zdravotní pojišťovnou
PREDEPSANY Předepsaný — výchozí stav po založení, lze provést výdej
PRIPRAVOVANY Připravovaný — lékárna pracuje na výdeji (připravuje IPLP nebo objednala HVLP u distributora); výdej může provést jen tato lékárna; používá se i pro blokaci při technickém výpadku
CASTECNE_VYDANY Částečně vydaný — výdej proběhl, ale může následovat další (prodloužená platnost nebo opakovací recept s dalšími opakováními)
PLNE_VYDANY Plně vydaný — výdej dokončen, žádný další výdej nenásleduje
NEDOKONCENY_VYDEJ Nedokončený výdej — lékárna nevydala léčivo, ale zaznamenala doplňující informaci (důvod nevydání); lze použít pouze u prvního takového výdeje
UZAVRENY (Nepoužívá se) Uzavřený

Hodnoty druhu pojištění (DruhPojisteni) — enum druh_pojisteni

Hodnota Popis
NEZADANO Nezadáno
VEREJNE Veřejné zdravotní pojištění (běžný případ v ČR)
SMLUVNI_PRIPOJISTENI Smluvní připojištění
CESTOVNI_PRIPOJISTENI Cestovní zdravotní připojištění
POJISTENI_EU Pojištění EU (pacient z jiného státu EU)

Hodnoty upozornění lékaře (UpozornitLekare) — enum upozornit_lekare

Lékárník může k výdeji přidat poznámku pro předepisujícího lékaře. Toto pole říká, zda lékař tuto funkci akceptoval a jak urgentně chce být informován.

Hodnota Popis
BEZODKLADNE Upozornit lékaře bezodkladně (akceptuje BEZODKLADNE i PRISTI_NAVSTEVA)
PRISTI_NAVSTEVA Upozornit lékaře při příští návštěvě pacienta (akceptuje pouze PRISTI_NAVSTEVA)
(neuvedeno) Lékař neakceptoval zpětné předávání poznámek z lékárny

Hodnoty způsobu ztotožnění (ROB)

Hodnota Popis
ECD elektronicky čitelný doklad (občanský průkaz/pas)
JPDN jednoznačný dle jména, příjmení, data a adresy
JPDNA jednoznačný dle jména, příjmení a data (bez adresy)

HTTP hlavičky

headers = {
    "Content-Type": 'text/xml; charset="UTF-8"',
    "SOAPAction": '"NacistPredpis"',   # uvozovky jsou součástí hodnoty!
    "User-Agent": "Medicus"
}

Závislosti (Python)

requests
requests-pkcs12

Soubor skriptu

NacistPredpis_FUNKCNI.py — funkční implementace, ověřeno 6. 4. 2026.


Zdroje dokumentace SÚKL

Soubor Datum Obsah
MedicusDebug/eR_PostData.xml 2026-04-05 reálný dotaz z Medicusu
MedicusDebug/eR_SuklMesage_*.mime 2026-04-05 HTTP hlavičky + tělo dotazu
MedicusDebug/eR_SuklMesage_*_Resp.xml 2026-04-05 reálná odpověď serveru
CUERLekar.wsdl 2025-04-24 definice operace NacistPredpis
schema1.xsd 2025-04-24 kompletní XSD schéma dotazu i odpovědi