Compare commits

..

37 Commits

Author SHA1 Message Date
administrator eaf87766d7 notebookvb 2026-04-28 06:23:09 +02:00
administrator 3423fbb982 Přidání CLAUDE.md — kontext projektu pro Claude Code
Obsahuje info o infrastruktuře, MySQL schématu, NacistPredpis pipeline,
eRecept autentizaci a VZP Point skriptech.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 07:27:06 +02:00
administrator 58026d944e notebookvb 2026-04-22 07:25:00 +02:00
administrator ef7c5d77dc z230 2026-04-16 14:20:38 +02:00
administrator e23735d07e notebookvb 2026-04-16 07:10:37 +02:00
administrator b6abdaddd5 notebookvb 2026-04-16 07:09:56 +02:00
administrator 2e00f55883 z230 2026-04-15 15:47:24 +02:00
administrator 08a91f4988 z230 2026-04-15 15:46:28 +02:00
administrator ac953f0334 z230 2026-04-14 15:08:35 +02:00
administrator b317a4165b z230 2026-04-14 14:48:28 +02:00
administrator 9afbf79155 z230 2026-04-14 14:45:22 +02:00
administrator cc6c80fca6 notebookvb 2026-04-14 10:16:08 +02:00
administrator 3ea09fc4a3 z230 2026-04-14 10:15:00 +02:00
administrator 73984c748a notebookvb 2026-04-14 07:21:45 +02:00
administrator 9e1dc4ed04 notebookvb 2026-04-14 07:20:28 +02:00
administrator a667fb8ba3 z230 2026-04-13 16:45:07 +02:00
administrator dae0558c98 z230 2026-04-13 15:43:59 +02:00
administrator 0b10125671 z230 2026-04-13 15:42:41 +02:00
administrator b2b46c1571 notebookvb 2026-04-13 07:13:15 +02:00
administrator 068c8edbe1 Přepsat stahování ICP na Playwright — certifikát přes browser context
Playwright předloží PFX certifikát automaticky při TLS handshake,
klikne na odkaz a zachytí download bez nutnosti ručního přihlášení.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 07:34:18 +02:00
administrator d52278ed4d Implementovat OIDC cert auth pro stahování ICP souboru z VZP Point
Certifikát → TLS → auth.vzp.cz → code → Bearer token → SAS URL → ZIP → Lh7

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 07:18:41 +02:00
administrator 2365a38b69 Přesunout import_vzp_pracoviste do složky StahovánízVZPWithClaude
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 06:46:12 +02:00
administrator 21aac6775b Přidat automatické stahování ICP souboru z VZP Point
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 06:43:47 +02:00
administrator 65978e7de9 Přidat automatické stahování ICP souboru z VZP Point
Skript se nyní před importem přihlásí certifikátem na point.vzp.cz,
stáhne nejnovější *-icp.zip a rozbalí PLP111*.Lh7 do Import/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 06:43:44 +02:00
administrator ea6ce9a96f Aktualizovat dokumentaci LEKOVY_ZAZNAM_DB.md
Přepracována na aktuální stav pipeline:
- nové tabulky pacient, predepisujici, vydavajici
- zprava rozšířena o pacient_id, xml_soubor
- popis 07StahnoutVsechny.py (hromadný běh, přírůstkové stahování)
- ošetření chyb API (SOAP Fault, pacient.poznamka)
- XML archiv, logování do Logs/
- aktualizovány analytické dotazy (s JOIN na pacient)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 06:15:39 +02:00
administrator 5cee10c39a Přidat xml_archive do gitu — lékové záznamy pacientů
- .gitignore: výjimka pro LékovýZáznamWithClaude/xml_archive/**
- xml_archive/2026-04-11/: první dávka stažených XML (testovací + rodina)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 06:10:17 +02:00
administrator 595a69e3c5 notebookvb 2026-04-12 06:08:48 +02:00
administrator c2d94b2362 notebookvb 2026-04-11 11:56:54 +02:00
administrator 24635b955d notebookvb 2026-04-08 07:24:17 +02:00
administrator 1f690810b3 notebookvb 2026-04-06 21:37:25 +02:00
administrator 401412daf0 notebookvb 2026-04-06 09:32:25 +02:00
administrator 0ecbdc17bb notebookvb 2026-04-06 09:31:19 +02:00
administrator 36295bfbb0 notebookvb 2026-04-06 09:27:48 +02:00
administrator 921c69e908 notebookvb 2026-04-06 07:31:49 +02:00
administrator ad4d5b8dac notebookvb 2026-04-05 12:26:06 +02:00
administrator ba5ad7f3a8 notebookvb 2026-03-27 07:14:05 +01:00
administrator f6d783e43b Remove .idea xml/iml files from tracking
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 07:13:26 +01:00
383 changed files with 102105 additions and 85 deletions
+11
View File
@@ -0,0 +1,11 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "report-lekovy-zaznam",
"runtimeExecutable": "C:/Users/vlado/PycharmProjects/Recepty/.venv/Scripts/python",
"runtimeArgs": ["C:/Users/vlado/PycharmProjects/Recepty/report_server.py"],
"port": 8765
}
]
}
+14
View File
@@ -0,0 +1,14 @@
{
"permissions": {
"allow": [
"Bash(mysql -u root -e \"SELECT pr.prijmeni, pr.jmena, pr.pzs_nazev, pr.mesto, COUNT\\(*\\) AS pocet_predpisu FROM pacient pac JOIN zprava z ON z.pacient_id = pac.id JOIN predpis p ON p.zprava_id = z.id JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho WHERE pac.prijmeni = 'Strnadová' AND pac.jmena = 'Jitka' GROUP BY pr.lekar_kod, pr.prijmeni, pr.jmena, pr.pzs_nazev, pr.mesto ORDER BY pocet_predpisu DESC;\" medicus)",
"Bash(where mysql:*)",
"Read(//c/Program Files/**)",
"Read(//c/xampp/mysql/**)",
"Bash(find /c -name \"mysql.exe\")",
"Bash(python3 -c ':*)",
"Bash(python -c ':*)",
"Bash(.venv/Scripts/python.exe -c ':*)"
]
}
}
+7 -1
View File
@@ -1,9 +1,15 @@
.venv/
.claude/worktrees/
__pycache__/
*.pyc
*.pyo
.idea/
Thumbs.db
*.pfx
# *.pfx
*.xml
!LékovýZáznamWithClaude/odpoved_lekovy_zaznam.xml
!LékovýZáznamWithClaude/xml_archive/
!LékovýZáznamWithClaude/xml_archive/**
!NačteníPředpisuWithClaude/xml_archive/
!NačteníPředpisuWithClaude/xml_archive/**
*.iml
-10
View File
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.12 (Recepty)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.12 (Recepty)" />
</component>
</project>
-68
View File
@@ -1,68 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="3e4ebddd-9da1-4621-83c6-883b13bef42a" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/.idea/Recepty.iml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/profiles_settings.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/01ReceptyTest.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Python Script" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 4
}</component>
<component name="ProjectId" id="33xT3kjvJ61SNRZSLuJylhuB3LP" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
<OptionsSetting value="false" id="Update" />
<ConfirmationsSetting value="2" id="Add" />
</component>
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;master&quot;,
&quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;
}
}</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-python-sdk-4f4e415b4190-aa17d162503b-com.jetbrains.pycharm.community.sharedIndexes.bundled-PC-243.26053.29" />
</set>
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="3e4ebddd-9da1-4621-83c6-883b13bef42a" name="Changes" comment="" />
<created>1760257527088</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1760257527088</updated>
</task>
<servers />
</component>
</project>
Binary file not shown.
+117
View File
@@ -0,0 +1,117 @@
# CLAUDE.md — kontext projektu Recepty
## Uživatel
Vladimír Buzalka, lékař. Pracuje v ordinaci **MUDr. Michaela Buzalková**, Praha, Lovosická 440/40, PSČ 19000.
- UUID lékaře eRecept SÚKL: `e08c89c6-2b1a-4eba-8ed9-4e3e63618379`
- IČZ: `09305000`, IČP: `09305001`
- Komunikuje česky
---
## Důležitá pravidla
- **Vždy pracovat v hlavním adresáři projektu** `C:\Users\vlado\PycharmProjects\Recepty`, nikdy ve worktree.
- Soubory editovat přímo v projektu, ne v `.claude/worktrees/`.
---
## Infrastruktura
- **MySQL:** `192.168.1.76`, db `medicus`, user `root`
- **Firebird (Medicus):** `localhost:c:\medicus 3\data\medicus.fdb`, user `SYSDBA`
- **Dropbox root:** zjistit přes `Knihovny/najdi_dropbox.py``get_dropbox_root()`
- **Python venv:** `.venv/Scripts/python`
---
## Struktura projektu
```
Recepty/
├── Knihovny/
│ └── najdi_dropbox.py ← get_dropbox_root() — vždy použít pro Dropbox cestu
├── LékovýZáznamWithClaude/ ← NacistLekovyZaznam (endpoint /cuer/Lekar2, ns 201912)
│ ├── 07StahnoutVsechny.py ← hromadné stažení lékových záznamů pacientů
│ └── xml_archive/
├── NačteníPředpisuWithClaude/ ← NacistPredpis (endpoint /cuer/Lekar, ns 201704)
│ ├── 10_StahnoutXML.py ← stahování XML receptů z SÚKL
│ ├── 11_ParseXML.py ← parsování XML → MySQL (recept_doklad, recept_plp, recept_vydej)
│ └── Testy/ ← starší skripty (08, 09)
├── StahovánízVZPWithClaude/ ← VZP Point číselníky
├── Dotazy/ ← analytické skripty a Excel reporty
└── CLAUDE.md ← tento soubor
```
---
## MySQL schéma (db medicus)
### Lékový záznam (z NacistLekovyZaznam)
- `pacient` — registrovaní pacienti ordinace (idpac z Medicusu)
- `zprava` — jedno volání API = jedna zpráva
- `predpis` + `predpis_slozka` — předepsané léky; `id_lp_predpis` = UUID léku
- `vydej` + `vydej_slozka` — vydané léky z lékárny
- `predepisujici` — lékaři (lekar_kod=UUID, IČZ, IČP, adresa)
- `vydavajici` — lékárníci a lékárny
### Detail receptu (z NacistPredpis)
- `recept_doklad` — jeden řádek na recept (id_dokladu = ERP kód, např. PPM4DJXHESOU)
- stav, stav_terminal, platnost, pacient snapshot, předepisující
- `stav_terminal=1` = terminální (PLNE_VYDANY / ZRUSENY / expirovaný) → nepřestahovat
- `recept_plp` — PLP položky receptu; `id_lp = predpis.id_lp_predpis` (JOIN lékový záznam ↔ detail)
- `recept_vydej` — výdeje z XML sekce Vydej; PK `(id_vydeje, id_lp_predpis)`
- **kritická tabulka** — výdeje jsou zde dříve než v tabulce `vydej` (která čeká na 07)
### VZP číselník
- `vzp_pracoviste` — IČP → odbornost, název pracoviště (import_vzp_pracoviste.py, týdně)
### Klíčové JOINy
```sql
-- lékový záznam + detail receptu + výdej z NacistPredpis
predpis.id_lp_predpis = recept_plp.id_lp recept_doklad (stav receptu)
predpis.id_lp_predpis = recept_vydej.id_lp_predpis výdej (lékárna, datum, lék)
```
---
## NacistPredpis pipeline
**xml_archive umístění (od 22. 4. 2026):**
`{get_dropbox_root()}/Ordinace/Dokumentace_ke_zpracování/Zúčtovací zprávy/NačteníPředpisuWithClaude/xml_archive/`
**Správné pořadí:**
```
10_StahnoutXML.py → 11_ParseXML.py → 10_StahnoutXML.py → ...
```
Bez `11` po `10` se terminální recepty znovu stahují (stav_terminal zůstane 0).
**Zdroj ID_Dokladu:** Firebird, tabulka `recept_epodani.erp`
---
## eRecept SÚKL autentizace
- mTLS certifikát: `AMBSUKL214235369G_31DEC2024.pfx` (platný do 31. 12. 2026)
- HTTP Basic user: UUID lékaře (malými písmeny)
- Namespace NacistLekovyZaznam: `http://www.sukl.cz/erp/201912`
- Namespace NacistPredpis: `http://www.sukl.cz/erp/201704`
- Verze zprávy: `202501A`
---
## VZP Point — stahování zpráv
Projekt: `U:\OrdinaceProjekt\Insurance\StahováníZpráv\`, každá pojišťovna má podsložku (`111 VZP\` atd.).
- `01_prihlaseni.py` — přihlášení certifikátem, uloží cookies
- `02_stahuj_vse.py` — jednorázové stažení všech zpráv
- `03_stahuj_nove.py` — rozdílové stažení (zastaví se při první existující)
- Playwright `launch_persistent_context`, `channel="chrome"`, `_delete_chrome_cert_policy()` před spuštěním
---
## Dotazy / reporty
- `Dotazy/report_predepsane_leky.py` — Excel report předepsaných léků (jeden řádek = jeden lék)
- Spuštění: `python report_predepsane_leky.py 2026`
- Po uložení automaticky otevře Excel
@@ -0,0 +1,793 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:s1="http://www.w3.org/2000/09/xmldsig#" xmlns:tns="http://www.sukl.cz/erp/zalozni/201912" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s0="http://www.sukl.cz/erp/201912" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://www.sukl.cz/erp/zalozni/201912" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.sukl.cz/erp/201912">
<s:import namespace="http://www.w3.org/2000/09/xmldsig#" />
<s:element name="ZmenaStavuPredpisuDotaz" nillable="true" type="s0:zmena_stavu_predpisu_dotaz_type" />
<s:complexType name="zmena_stavu_predpisu_dotaz_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Doklad" type="s0:zmena_stavu_predpisu_doklad_type" />
<s:element minOccurs="0" maxOccurs="1" name="Zprava" type="s0:zprava_dotaz_type" />
</s:sequence>
</s:complexType>
<s:complexType name="zmena_stavu_predpisu_doklad_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID_Dokladu" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Pristupujici" type="s0:identifikace_pristupujiciho_type" />
<s:element minOccurs="1" maxOccurs="1" name="Stav" type="s0:stav_elektronickeho_receptu" />
<s:element minOccurs="0" maxOccurs="1" name="VypisDo" type="s:date" />
</s:sequence>
</s:complexType>
<s:complexType name="identifikace_pristupujiciho_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Uzivatel" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Pracoviste" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="stav_elektronickeho_receptu">
<s:restriction base="s:string">
<s:enumeration value="KE_SCHVALENI" />
<s:enumeration value="ZAMITNUTY" />
<s:enumeration value="PREDEPSANY" />
<s:enumeration value="PRIPRAVOVANY" />
<s:enumeration value="CASTECNE_VYDANY" />
<s:enumeration value="PLNE_VYDANY" />
<s:enumeration value="NEDOKONCENY_VYDEJ" />
<s:enumeration value="UZAVRENY" />
</s:restriction>
</s:simpleType>
<s:complexType name="zprava_dotaz_type">
<s:complexContent mixed="false">
<s:extension base="s0:zprava_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SW_Klienta" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="zprava_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID_Zpravy" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Verze" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="Odeslano" type="s:dateTime" />
</s:sequence>
</s:complexType>
<s:complexType name="zprava_odpoved_type">
<s:complexContent mixed="false">
<s:extension base="s0:zprava_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID_Podani" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="Prijato" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="Aplikace" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="ZmenaStavuPredpisuOdpoved" nillable="true" type="s0:ulozeni_dokladu_odpoved_type" />
<s:complexType name="ulozeni_dokladu_odpoved_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Doklad" type="s0:ulozeni_dokladu_doklad_odpoved_type" />
<s:element minOccurs="0" maxOccurs="unbounded" name="Chyba" type="s0:chyba_type" />
<s:element minOccurs="0" maxOccurs="1" name="Zprava" type="s0:zprava_odpoved_type" />
</s:sequence>
</s:complexType>
<s:complexType name="ulozeni_dokladu_doklad_odpoved_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID_Dokladu" type="s:string" />
<s:element minOccurs="0" maxOccurs="unbounded" name="LP" type="s0:ulozeni_lp_odpoved_type" />
</s:sequence>
</s:complexType>
<s:complexType name="ulozeni_lp_odpoved_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID_LP_Zdroj" type="s:integer" />
<s:element minOccurs="0" maxOccurs="1" name="ID_LP" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="chyba_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Kod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Skupina" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Popis" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Doporuceni" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="AppInfoDotaz" nillable="true" type="s0:app_info_dotaz_type" />
<s:complexType name="app_info_dotaz_type" />
<s:element name="AppInfoOdpoved" nillable="true" type="s0:app_info_odpoved_type" />
<s:complexType name="app_info_odpoved_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AktualniVerze" type="s0:verze_aplikace_type" />
<s:element minOccurs="1" maxOccurs="1" name="DatumCasServeru" type="s:dateTime" />
</s:sequence>
</s:complexType>
<s:complexType name="verze_aplikace_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Verze" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
<s:element minOccurs="0" maxOccurs="unbounded" name="Doklad" type="s0:typ_dokladu_type" />
</s:sequence>
</s:complexType>
<s:complexType name="typ_dokladu_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Verze" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Prefix" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Popis" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="PlatOd" type="s:date" />
<s:element minOccurs="0" maxOccurs="1" name="PlatDo" type="s:date" />
</s:sequence>
</s:complexType>
<s:element name="AppPingDotaz" nillable="true" type="s0:zprava_bez_dotaz_type" />
<s:complexType name="zprava_bez_dotaz_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Doklad" type="s0:pristupujici_doklad_dotaz_type" />
<s:element minOccurs="0" maxOccurs="1" name="Zprava" type="s0:zprava_dotaz_type" />
</s:sequence>
</s:complexType>
<s:complexType name="pristupujici_doklad_dotaz_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Pristupujici" type="s0:identifikace_pristupujiciho_type" />
</s:sequence>
</s:complexType>
<s:element name="AppPingOdpoved" nillable="true" type="s0:zprava_bez_odpoved_type" />
<s:complexType name="zprava_bez_odpoved_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Zprava" type="s0:zprava_odpoved_type" />
</s:sequence>
</s:complexType>
<s:element name="AppPingZEPDotaz" nillable="true" type="s0:zprava_zep_dotaz_type" />
<s:complexType name="zprava_zep_dotaz_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Doklad" type="s0:pristupujici_doklad_dotaz_type" />
<s:element minOccurs="0" maxOccurs="1" name="Zprava" type="s0:zprava_dotaz_type" />
<s:element minOccurs="0" maxOccurs="1" ref="s1:Signature" />
</s:sequence>
</s:complexType>
<s:element name="AppPingZEPOdpoved" nillable="true" type="s0:zprava_bez_odpoved_type" />
<s:element name="NacteniPredpisuDotaz" nillable="true" type="s0:nacteni_dokladu_dotaz_type" />
<s:complexType name="nacteni_dokladu_dotaz_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Doklad" type="s0:nacteni_dokladu_doklad_dotaz_type" />
<s:element minOccurs="0" maxOccurs="1" name="Zprava" type="s0:zprava_dotaz_type" />
</s:sequence>
</s:complexType>
<s:complexType name="nacteni_dokladu_doklad_dotaz_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Pristupujici" type="s0:identifikace_pristupujiciho_type" />
<s:element minOccurs="0" maxOccurs="1" name="Identifikator" type="s0:identifikace_dokladu_type" />
</s:sequence>
</s:complexType>
<s:complexType name="identifikace_dokladu_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID_Podani" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ID_Dokladu" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="NacteniPredpisuOdpoved" nillable="true" type="s0:nacteni_predpisu_erp_odpoved_type" />
<s:complexType name="nacteni_predpisu_erp_odpoved_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Doklad" type="s0:nacteni_predpisu_doklad_odpoved_type" />
<s:element minOccurs="0" maxOccurs="1" name="Zprava" type="s0:zprava_odpoved_type" />
</s:sequence>
</s:complexType>
<s:complexType name="nacteni_predpisu_doklad_odpoved_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID_Dokladu" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="DatumVystaveni" type="s:date" />
<s:element minOccurs="1" maxOccurs="1" name="PlatnostDo" type="s:date" />
<s:element minOccurs="0" maxOccurs="1" name="VypisDo" type="s:date" />
<s:element minOccurs="0" maxOccurs="1" name="Akutni" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="Rodina" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="Preshranicni" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="Opakovani" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Pacient" type="s0:nacteni_pacient_type" />
<s:element minOccurs="0" maxOccurs="1" name="Predepisujici" type="s0:nacteni_predepisujici_type" />
<s:element minOccurs="0" maxOccurs="1" name="Doporucujici" type="s0:nacteni_doporucujici_type" />
<s:element minOccurs="0" maxOccurs="1" name="Revize" type="s0:nacteni_revize_type" />
<s:element minOccurs="0" maxOccurs="unbounded" name="PLP" type="s0:nacteni_predepsany_lp_erp_type" />
<s:element minOccurs="0" maxOccurs="1" name="Pozn" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="UpozornitLekare" type="s0:upozornit_lekare" />
<s:element minOccurs="1" maxOccurs="1" name="Stav" type="s0:stav_elektronickeho_receptu" />
<s:element minOccurs="0" maxOccurs="unbounded" name="Vydej" type="s0:nacteni_zkraceny_vydej_erp_doklad_odpoved_type" />
<s:element minOccurs="1" maxOccurs="1" name="Zmena" type="s:dateTime" />
<s:element minOccurs="1" maxOccurs="1" name="Zalozeni" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="DruhPojisteni" type="s0:druh_pojisteni" />
<s:element minOccurs="0" maxOccurs="1" name="Papirovy" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="ModryPruh" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="ZapocitatelnyDoplatekZbyvaDoLimitu" type="s:decimal" />
</s:sequence>
</s:complexType>
<s:complexType name="nacteni_pacient_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Totoznost" type="s0:totoznost_type" />
<s:element minOccurs="0" maxOccurs="1" name="CP" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ZP" type="s0:zdravotni_pojistovna_type" />
<s:element minOccurs="0" maxOccurs="1" name="Telefon" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Notifikace" type="s0:notifikace" />
<s:element minOccurs="0" maxOccurs="1" name="Veznice" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Hmotnost" type="s:decimal" />
<s:element minOccurs="0" maxOccurs="1" name="Pohlavi" type="s0:pohlavi" />
<s:element minOccurs="0" maxOccurs="1" name="KontaktniAdresa" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="totoznost_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Jmeno" type="s0:jmeno_osoby_type" />
<s:element minOccurs="0" maxOccurs="1" name="DatumNarozeni" type="s:date" />
<s:element minOccurs="0" maxOccurs="1" name="Adresa" type="s0:adresa_type" />
<s:element minOccurs="0" maxOccurs="1" name="DruhDokladu" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CisloDokladu" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ROB" type="s0:rob_ztotozneni" />
</s:sequence>
</s:complexType>
<s:complexType name="jmeno_osoby_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Prijmeni" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Jmena" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="adresa_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="NazevUlice" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CisloPopisne" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CisloEvidencni" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CisloOrientacni" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="NazevObce" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="NazevCastiObce" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="NazevOkresu" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="PSC" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="rob_ztotozneni">
<s:restriction base="s:string">
<s:enumeration value="ECD" />
<s:enumeration value="JPDN" />
<s:enumeration value="JPDNA" />
</s:restriction>
</s:simpleType>
<s:complexType name="zdravotni_pojistovna_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Kod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="notifikace">
<s:restriction base="s:string">
<s:enumeration value="EMAIL" />
<s:enumeration value="SMS" />
</s:restriction>
</s:simpleType>
<s:simpleType name="pohlavi">
<s:restriction base="s:string">
<s:enumeration value="M" />
<s:enumeration value="F" />
</s:restriction>
</s:simpleType>
<s:complexType name="nacteni_predepisujici_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Lekar" type="s0:identifikovana_osoba_type" />
<s:element minOccurs="0" maxOccurs="1" name="Oddeleni" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ICZ" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ICP" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="PZS" type="s0:identifikovany_poskytovatel_type" />
<s:element minOccurs="0" maxOccurs="1" name="Telefon" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Odbornost" type="s0:odbornost_type" />
<s:element minOccurs="0" maxOccurs="1" name="KontaktniUdaje" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="KrajKod" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="identifikovana_osoba_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Kod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Jmeno" type="s0:jmeno_osoby_type" />
</s:sequence>
</s:complexType>
<s:complexType name="identifikovany_poskytovatel_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Kod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="IC" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="DIC" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Telefon" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Adresa" type="s0:adresa_type" />
<s:element minOccurs="0" maxOccurs="1" name="AdresaTextem" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="odbornost_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Kod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="nacteni_doporucujici_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Jmeno" type="s0:jmeno_osoby_type" />
<s:element minOccurs="0" maxOccurs="1" name="PZS" type="s0:doporucujici_poskytovatel_type" />
<s:element minOccurs="0" maxOccurs="1" name="Odbornost" type="s0:odbornost_type" />
</s:sequence>
</s:complexType>
<s:complexType name="doporucujici_poskytovatel_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ICZ" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ICP" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="IC" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="DIC" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Telefon" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="nacteni_revize_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Lekar" type="s0:identifikovana_osoba_type" />
<s:element minOccurs="0" maxOccurs="1" name="Telefon" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="Schvaleno" type="s:date" />
</s:sequence>
</s:complexType>
<s:complexType name="nacteni_predepsany_lp_erp_type">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Mnozstvi" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Navod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Diagnoza" type="s0:diagnoza_type" />
<s:element minOccurs="0" maxOccurs="1" name="PridruzenaDiagnoza" type="s0:diagnoza_type" />
<s:element minOccurs="1" maxOccurs="1" name="Uhrada" type="s0:uhrada" />
<s:element minOccurs="0" maxOccurs="1" name="HVLPReg" type="s0:hvlp_type" />
<s:element minOccurs="0" maxOccurs="1" name="HVLPNereg" type="s0:hvlp_type" />
<s:element minOccurs="0" maxOccurs="1" name="IPLP" type="s0:iplp_predpis_type" />
<s:element minOccurs="0" maxOccurs="1" name="INN" type="s0:inn_predpis_type" />
<s:element minOccurs="0" maxOccurs="1" name="Nezamenovat" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="Prekroceni" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="ZadankaZP" type="s:integer" />
<s:element minOccurs="0" maxOccurs="1" name="ID_LP_Zdroj" type="s:integer" />
<s:element minOccurs="0" maxOccurs="1" name="ID_LP" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="diagnoza_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Kod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="uhrada">
<s:restriction base="s:string">
<s:enumeration value="PACIENT" />
<s:enumeration value="ZAKLADNI" />
<s:enumeration value="ZVYSENA" />
<s:enumeration value="PACIENT_ZAM" />
<s:enumeration value="ZAKLADNI_ZAM" />
<s:enumeration value="ZVYSENA_ZAM" />
</s:restriction>
</s:simpleType>
<s:complexType name="hvlp_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Kod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ATC" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Forma" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Sila" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CestaPodani" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Baleni" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="iplp_predpis_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="PostupPripravy" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CestaPodani" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Forma" type="s:string" />
<s:element minOccurs="0" maxOccurs="unbounded" name="Slozka" type="s0:slozka_iplp_predpis_type" />
</s:sequence>
</s:complexType>
<s:complexType name="slozka_iplp_predpis_type">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Mnozstvi" type="s:decimal" />
<s:element minOccurs="1" maxOccurs="1" name="Jednotka" type="s0:jednotka" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Surovina" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="HVLPReg" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="jednotka">
<s:restriction base="s:string">
<s:enumeration value="g" />
<s:enumeration value="ks" />
</s:restriction>
</s:simpleType>
<s:complexType name="inn_predpis_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Forma" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Sila" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CestaPodani" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Baleni" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="upozornit_lekare">
<s:restriction base="s:string">
<s:enumeration value="PRISTI_NAVSTEVA" />
<s:enumeration value="BEZODKLADNE" />
</s:restriction>
</s:simpleType>
<s:complexType name="nacteni_zkraceny_vydej_erp_doklad_odpoved_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID_Dokladu" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ID_Dokladu_ERP" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="DatumVydeje" type="s:date" />
<s:element minOccurs="0" maxOccurs="1" name="NazevPZS" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="JmenoVydavajiciho" type="s:string" />
<s:element minOccurs="0" maxOccurs="unbounded" name="VLP" type="s0:nacteni_zkraceny_vlp_type" />
<s:element minOccurs="0" maxOccurs="1" name="Pozn" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="UpozornitLekare" type="s0:upozornit_lekare" />
<s:element minOccurs="1" maxOccurs="1" name="Zmena" type="s:dateTime" />
<s:element minOccurs="1" maxOccurs="1" name="Zalozeni" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="Zruseni" type="s0:zruseni_type" />
</s:sequence>
</s:complexType>
<s:complexType name="nacteni_zkraceny_vlp_type">
<s:complexContent mixed="false">
<s:extension base="s0:nacteni_zkraceny_lp_type">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="PoradoveCisloVydeje" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="IdLpErp" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="nacteni_zkraceny_lp_type">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Mnozstvi" type="s:decimal" />
<s:element minOccurs="0" maxOccurs="1" name="Nazev" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Kod" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Navod" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="zruseni_type">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="DatumCasZruseni" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="DuvodZruseni" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="druh_pojisteni">
<s:restriction base="s:string">
<s:enumeration value="VEREJNE" />
<s:enumeration value="SMLUVNI_PRIPOJISTENI" />
<s:enumeration value="CESTOVNI_PRIPOJISTENI" />
<s:enumeration value="POJISTENI_EU" />
</s:restriction>
</s:simpleType>
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/2000/09/xmldsig#">
<s:element name="Signature" type="s1:SignatureType" />
<s:complexType name="SignatureType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SignedInfo" type="s1:SignedInfoType" />
<s:element minOccurs="0" maxOccurs="1" name="SignatureValue" type="s1:SignatureValueType" />
<s:element minOccurs="0" maxOccurs="1" name="KeyInfo" type="s1:KeyInfoType" />
<s:element minOccurs="0" maxOccurs="unbounded" name="Object" type="s1:ObjectType" />
</s:sequence>
<s:attribute name="Id" type="s:ID" />
</s:complexType>
<s:complexType name="SignedInfoType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CanonicalizationMethod" type="s1:CanonicalizationMethodType" />
<s:element minOccurs="0" maxOccurs="1" name="SignatureMethod" type="s1:SignatureMethodType" />
<s:element minOccurs="0" maxOccurs="unbounded" name="Reference" type="s1:ReferenceType" />
</s:sequence>
<s:attribute name="Id" type="s:ID" />
</s:complexType>
<s:complexType name="CanonicalizationMethodType" mixed="true">
<s:sequence>
<s:any minOccurs="0" maxOccurs="unbounded" />
</s:sequence>
<s:attribute name="Algorithm" type="s:anyURI" />
</s:complexType>
<s:complexType name="SignatureMethodType" mixed="true">
<s:sequence>
<s:choice minOccurs="0" maxOccurs="unbounded">
<s:element minOccurs="0" maxOccurs="1" name="HMACOutputLength" type="s:integer" />
<s:any minOccurs="0" maxOccurs="1" />
</s:choice>
</s:sequence>
<s:attribute name="Algorithm" type="s:anyURI" />
</s:complexType>
<s:complexType name="ReferenceType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Transforms" type="s1:ArrayOfTransformType" />
<s:element minOccurs="0" maxOccurs="1" name="DigestMethod" type="s1:DigestMethodType" />
<s:element minOccurs="0" maxOccurs="1" name="DigestValue" type="s:base64Binary" />
</s:sequence>
<s:attribute name="Id" type="s:ID" />
<s:attribute name="URI" type="s:anyURI" />
<s:attribute name="Type" type="s:anyURI" />
</s:complexType>
<s:complexType name="ArrayOfTransformType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Transform" type="s1:TransformType" />
</s:sequence>
</s:complexType>
<s:complexType name="TransformType" mixed="true">
<s:sequence>
<s:choice minOccurs="0" maxOccurs="unbounded">
<s:element minOccurs="0" maxOccurs="1" name="XPath" type="s:string" />
<s:any minOccurs="0" maxOccurs="1" />
</s:choice>
</s:sequence>
<s:attribute name="Algorithm" type="s:anyURI" />
</s:complexType>
<s:complexType name="DigestMethodType" mixed="true">
<s:sequence>
<s:any minOccurs="0" maxOccurs="unbounded" />
</s:sequence>
<s:attribute name="Algorithm" type="s:anyURI" />
</s:complexType>
<s:complexType name="SignatureValueType">
<s:simpleContent>
<s:extension base="s:base64Binary">
<s:attribute name="Id" type="s:ID" />
</s:extension>
</s:simpleContent>
</s:complexType>
<s:complexType name="KeyInfoType" mixed="true">
<s:sequence>
<s:choice minOccurs="0" maxOccurs="unbounded">
<s:element minOccurs="0" maxOccurs="1" name="X509Data" type="s1:X509DataType" />
<s:element minOccurs="0" maxOccurs="1" name="MgmtData" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="SPKIData" type="s1:SPKIDataType" />
<s:element minOccurs="0" maxOccurs="1" name="KeyValue" type="s1:KeyValueType" />
<s:element minOccurs="0" maxOccurs="1" name="RetrievalMethod" type="s1:RetrievalMethodType" />
<s:element minOccurs="0" maxOccurs="1" name="KeyName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="PGPData" type="s1:PGPDataType" />
<s:any minOccurs="0" maxOccurs="1" />
</s:choice>
</s:sequence>
<s:attribute name="Id" type="s:ID" />
</s:complexType>
<s:complexType name="X509DataType">
<s:sequence>
<s:choice minOccurs="0" maxOccurs="unbounded">
<s:element minOccurs="0" maxOccurs="1" name="X509CRL" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="X509Certificate" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="X509SKI" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="X509SubjectName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="X509IssuerSerial" type="s1:X509IssuerSerialType" />
<s:any minOccurs="0" maxOccurs="1" />
</s:choice>
</s:sequence>
</s:complexType>
<s:complexType name="X509IssuerSerialType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="X509IssuerName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="X509SerialNumber" type="s:integer" />
</s:sequence>
</s:complexType>
<s:complexType name="SPKIDataType">
<s:sequence>
<s:choice minOccurs="0" maxOccurs="unbounded">
<s:element minOccurs="0" maxOccurs="1" name="SPKISexp" type="s:base64Binary" />
<s:any minOccurs="0" maxOccurs="1" />
</s:choice>
</s:sequence>
</s:complexType>
<s:complexType name="KeyValueType" mixed="true">
<s:sequence>
<s:choice minOccurs="0" maxOccurs="unbounded">
<s:element minOccurs="0" maxOccurs="1" name="DSAKeyValue" type="s1:DSAKeyValueType" />
<s:element minOccurs="0" maxOccurs="1" name="RSAKeyValue" type="s1:RSAKeyValueType" />
<s:any minOccurs="0" maxOccurs="1" />
</s:choice>
</s:sequence>
</s:complexType>
<s:complexType name="DSAKeyValueType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="P" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="Q" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="G" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="Y" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="J" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="Seed" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="PgenCounter" type="s:base64Binary" />
</s:sequence>
</s:complexType>
<s:complexType name="RSAKeyValueType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Modulus" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="Exponent" type="s:base64Binary" />
</s:sequence>
</s:complexType>
<s:complexType name="RetrievalMethodType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Transforms" type="s1:ArrayOfTransformType" />
</s:sequence>
<s:attribute name="URI" type="s:anyURI" />
<s:attribute name="Type" type="s:anyURI" />
</s:complexType>
<s:complexType name="PGPDataType">
<s:sequence>
<s:choice minOccurs="0" maxOccurs="unbounded">
<s:element minOccurs="0" maxOccurs="1" name="PGPKeyID" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="PGPKeyPacket" type="s:base64Binary" />
<s:any minOccurs="0" maxOccurs="1" />
</s:choice>
</s:sequence>
</s:complexType>
<s:complexType name="ObjectType" mixed="true">
<s:sequence>
<s:any minOccurs="0" maxOccurs="unbounded" />
</s:sequence>
<s:attribute name="Id" type="s:ID" />
<s:attribute name="MimeType" type="s:string" />
<s:attribute name="Encoding" type="s:anyURI" />
</s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="ZalozniZmenitStavPredpisuSoapIn">
<wsdl:part name="ZmenaStavuPredpisuDotaz" element="s0:ZmenaStavuPredpisuDotaz" />
</wsdl:message>
<wsdl:message name="ZalozniZmenitStavPredpisuSoapOut">
<wsdl:part name="ZalozniZmenitStavPredpisuResult" element="s0:ZmenaStavuPredpisuOdpoved" />
</wsdl:message>
<wsdl:message name="ZalozniGetAppInfoSoapIn">
<wsdl:part name="AppInfoDotaz" element="s0:AppInfoDotaz" />
</wsdl:message>
<wsdl:message name="ZalozniGetAppInfoSoapOut">
<wsdl:part name="ZalozniGetAppInfoResult" element="s0:AppInfoOdpoved" />
</wsdl:message>
<wsdl:message name="ZalozniAppPingSoapIn">
<wsdl:part name="AppPingDotaz" element="s0:AppPingDotaz" />
</wsdl:message>
<wsdl:message name="ZalozniAppPingSoapOut">
<wsdl:part name="ZalozniAppPingResult" element="s0:AppPingOdpoved" />
</wsdl:message>
<wsdl:message name="ZalozniAppPingZEPSoapIn">
<wsdl:part name="AppPingZEPDotaz" element="s0:AppPingZEPDotaz" />
</wsdl:message>
<wsdl:message name="ZalozniAppPingZEPSoapOut">
<wsdl:part name="ZalozniAppPingZEPResult" element="s0:AppPingZEPOdpoved" />
</wsdl:message>
<wsdl:message name="ZalozniNacistPredpisSoapIn">
<wsdl:part name="NacteniPredpisuDotaz" element="s0:NacteniPredpisuDotaz" />
</wsdl:message>
<wsdl:message name="ZalozniNacistPredpisSoapOut">
<wsdl:part name="ZalozniNacistPredpisResult" element="s0:NacteniPredpisuOdpoved" />
</wsdl:message>
<wsdl:portType name="CUERLekarnikSoapBinding">
<wsdl:operation name="ZalozniZmenitStavPredpisu">
<wsdl:input message="tns:ZalozniZmenitStavPredpisuSoapIn" />
<wsdl:output message="tns:ZalozniZmenitStavPredpisuSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="CUERLekarnikServiceSoap">
<wsdl:operation name="ZalozniGetAppInfo">
<wsdl:input message="tns:ZalozniGetAppInfoSoapIn" />
<wsdl:output message="tns:ZalozniGetAppInfoSoapOut" />
</wsdl:operation>
<wsdl:operation name="ZalozniAppPing">
<wsdl:input message="tns:ZalozniAppPingSoapIn" />
<wsdl:output message="tns:ZalozniAppPingSoapOut" />
</wsdl:operation>
<wsdl:operation name="ZalozniAppPingZEP">
<wsdl:input message="tns:ZalozniAppPingZEPSoapIn" />
<wsdl:output message="tns:ZalozniAppPingZEPSoapOut" />
</wsdl:operation>
<wsdl:operation name="ZalozniNacistPredpis">
<wsdl:input message="tns:ZalozniNacistPredpisSoapIn" />
<wsdl:output message="tns:ZalozniNacistPredpisSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERLekarnikSoapBinding" type="tns:CUERLekarnikSoapBinding">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="ZalozniZmenitStavPredpisu">
<soap:operation soapAction="ZalozniZmenitStavPredpisu" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CUERLekarnikServiceSoap" type="tns:CUERLekarnikServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="ZalozniGetAppInfo">
<soap:operation soapAction="ZalozniGetAppInfo" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZalozniAppPing">
<soap:operation soapAction="ZalozniAppPing" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZalozniAppPingZEP">
<soap:operation soapAction="ZalozniAppPingZEP" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZalozniNacistPredpis">
<soap:operation soapAction="ZalozniNacistPredpis" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CUERLekarnikSoapBinding1" type="tns:CUERLekarnikSoapBinding">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="ZalozniZmenitStavPredpisu">
<soap12:operation soapAction="ZalozniZmenitStavPredpisu" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CUERLekarnikServiceSoap12" type="tns:CUERLekarnikServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="ZalozniGetAppInfo">
<soap12:operation soapAction="ZalozniGetAppInfo" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZalozniAppPing">
<soap12:operation soapAction="ZalozniAppPing" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZalozniAppPingZEP">
<soap12:operation soapAction="ZalozniAppPingZEP" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZalozniNacistPredpis">
<soap12:operation soapAction="ZalozniNacistPredpis" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERLekarnikService">
<wsdl:port name="CUERLekarnikSoapBinding" binding="tns:CUERLekarnikSoapBinding">
<soap:address location="http://localhost:59276/Cuer/CUERLekarnikService.asmx" />
</wsdl:port>
<wsdl:port name="CUERLekarnikServiceSoap" binding="tns:CUERLekarnikServiceSoap">
<soap:address location="http://localhost:59276/Cuer/CUERLekarnikService.asmx" />
</wsdl:port>
<wsdl:port name="CUERLekarnikSoapBinding1" binding="tns:CUERLekarnikSoapBinding1">
<soap12:address location="http://localhost:59276/Cuer/CUERLekarnikService.asmx" />
</wsdl:port>
<wsdl:port name="CUERLekarnikServiceSoap12" binding="tns:CUERLekarnikServiceSoap12">
<soap12:address location="http://localhost:59276/Cuer/CUERLekarnikService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:s1="http://www.w3.org/2000/09/xmldsig#" xmlns:tns="http://www.sukl.cz/erp/cuer" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s0="http://www.sukl.cz/erp/common" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://www.sukl.cz/erp/cuer" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/cuer" schemaLocation="cuer.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="AppPingSoapIn">
<wsdl:part name="AppPingDotaz" element="s0:AppPingDotaz" />
</wsdl:message>
<wsdl:message name="AppPingSoapOut">
<wsdl:part name="AppPingResult" element="s0:AppPingOdpoved" />
</wsdl:message>
<wsdl:message name="AppPingZEPSoapIn">
<wsdl:part name="AppPingZEPDotaz" element="s0:AppPingZEPDotaz" />
</wsdl:message>
<wsdl:message name="AppPingZEPSoapOut">
<wsdl:part name="AppPingZEPResult" element="s0:AppPingZEPOdpoved" />
</wsdl:message>
<wsdl:message name="NacistDoplatkyLimitPojistenceSoapIn">
<wsdl:part name="NacteniDoplatkyLimitPojistenceDotaz" element="tns:NacteniDoplatkyLimitPojistenceDotaz" />
</wsdl:message>
<wsdl:message name="NacistDoplatkyLimitPojistenceSoapOut">
<wsdl:part name="NacistDoplatkyLimitPojistenceResult" element="tns:NacteniDoplatkyLimitPojistenceOdpoved" />
</wsdl:message>
<wsdl:message name="NacistSeznamDoplatkuPojistenceSoapIn">
<wsdl:part name="NacteniSeznamuDoplatkuPojistenceDotaz" element="tns:NacteniSeznamuDoplatkuPojistenceDotaz" />
</wsdl:message>
<wsdl:message name="NacistSeznamDoplatkuPojistenceSoapOut">
<wsdl:part name="NacistSeznamDoplatkuPojistenceResult" element="tns:NacteniSeznamuDoplatkuPojistenceOdpoved" />
</wsdl:message>
<wsdl:message name="GetAppInfoSoapIn">
<wsdl:part name="AppInfoDotaz" element="s0:AppInfoDotaz" />
</wsdl:message>
<wsdl:message name="GetAppInfoSoapOut">
<wsdl:part name="GetAppInfoResult" element="s0:AppInfoOdpoved" />
</wsdl:message>
<wsdl:portType name="CuerWebServiceSoap">
<wsdl:operation name="AppPing">
<wsdl:input message="tns:AppPingSoapIn" />
<wsdl:output message="tns:AppPingSoapOut" />
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input message="tns:AppPingZEPSoapIn" />
<wsdl:output message="tns:AppPingZEPSoapOut" />
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<wsdl:input message="tns:NacistDoplatkyLimitPojistenceSoapIn" />
<wsdl:output message="tns:NacistDoplatkyLimitPojistenceSoapOut" />
</wsdl:operation>
<wsdl:operation name="NacistSeznamDoplatkuPojistence">
<wsdl:input message="tns:NacistSeznamDoplatkuPojistenceSoapIn" />
<wsdl:output message="tns:NacistSeznamDoplatkuPojistenceSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input message="tns:GetAppInfoSoapIn" />
<wsdl:output message="tns:GetAppInfoSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CuerWebServiceSoap" type="tns:CuerWebServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<soap:operation soapAction="NacistDoplatkyLimitPojistence" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistSeznamDoplatkuPojistence">
<soap:operation soapAction="NacistSeznamDoplatkuPojistence" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CuerWebServiceSoap12" type="tns:CuerWebServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="AppPing">
<soap12:operation soapAction="AppPing" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap12:operation soapAction="AppPingZEP" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<soap12:operation soapAction="NacistDoplatkyLimitPojistence" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistSeznamDoplatkuPojistence">
<soap12:operation soapAction="NacistSeznamDoplatkuPojistence" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap12:operation soapAction="GetAppInfo" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CuerWebService">
<wsdl:port name="CuerWebServiceSoap" binding="tns:CuerWebServiceSoap">
<soap:address location="http://127.0.0.1:49646/Endpoints/CuerWebService.asmx" />
</wsdl:port>
<wsdl:port name="CuerWebServiceSoap12" binding="tns:CuerWebServiceSoap12">
<soap12:address location="http://127.0.0.1:49646/Endpoints/CuerWebService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:sig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
<xsd:complexType name="SignatureType">
<xsd:sequence>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType" minOccurs="0"/>
<xsd:element name="Object" type="sig:ObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignedInfoType">
<xsd:sequence>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="CanonicalizationMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="ObjectType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="MimeType" type="xsd:string"/>
<xsd:attribute name="Encoding" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SPKIDataType">
<xsd:sequence>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="SPKISexp" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="X509DataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="X509IssuerSerial" type="sig:X509IssuerSerialType"/>
<xsd:element name="X509SubjectName" type="xsd:string"/>
<xsd:element name="X509Certificate" type="xsd:base64Binary"/>
<xsd:element name="X509SKI" type="xsd:base64Binary"/>
<xsd:element name="X509CRL" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PGPDataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="PGPKeyPacket" type="xsd:base64Binary"/>
<xsd:element name="PGPKeyID" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TransformType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="XPath" type="xsd:string"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="KeyValueType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:RSAKeyValue"/>
<xsd:element ref="sig:DSAKeyValue"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ManifestType">
<xsd:sequence>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="TransformsType">
<xsd:sequence>
<xsd:element name="Transform" type="sig:TransformType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KeyInfoType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:MgmtData"/>
<xsd:element ref="sig:KeyValue"/>
<xsd:element ref="sig:X509Data"/>
<xsd:element ref="sig:SPKIData"/>
<xsd:element ref="sig:PGPData"/>
<xsd:element ref="sig:RetrievalMethod"/>
<xsd:element ref="sig:KeyName"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="ReferenceType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="X509IssuerSerialType">
<xsd:sequence>
<xsd:element name="X509IssuerName" type="xsd:string"/>
<xsd:element name="X509SerialNumber" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RetrievalMethodType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SignatureValueType">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="SignatureMethodType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="HMACOutputLength" type="xsd:integer"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="DigestMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="RSAKeyValueType">
<xsd:sequence>
<xsd:element name="Modulus" type="xsd:base64Binary"/>
<xsd:element name="Exponent" type="xsd:base64Binary"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DSAKeyValueType">
<xsd:sequence>
<xsd:element name="P" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Q" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="G" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Y" type="xsd:base64Binary"/>
<xsd:element name="J" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Seed" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="PgenCounter" type="xsd:base64Binary" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SignaturePropertiesType">
<xsd:sequence>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignaturePropertyType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:element name="Signature" type="sig:SignatureType"/>
<xsd:element name="SPKIData" type="sig:SPKIDataType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyValue" type="sig:KeyValueType"/>
<xsd:element name="Transforms" type="sig:TransformsType"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="X509Data" type="sig:X509DataType"/>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType"/>
<xsd:element name="KeyName" type="xsd:string"/>
<xsd:element name="RSAKeyValue" type="sig:RSAKeyValueType"/>
<xsd:element name="MgmtData" type="xsd:string"/>
<xsd:element name="Object" type="sig:ObjectType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="SignatureProperties" type="sig:SignaturePropertiesType"/>
<xsd:element name="Transform" type="sig:TransformType"/>
<xsd:element name="PGPData" type="sig:PGPDataType"/>
<xsd:element name="Reference" type="sig:ReferenceType"/>
<xsd:element name="RetrievalMethod" type="sig:RetrievalMethodType"/>
<xsd:element name="DSAKeyValue" type="sig:DSAKeyValueType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="Manifest" type="sig:ManifestType"/>
</xsd:schema>
@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:tns="http://www.sukl.cz/erp/201912" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://www.sukl.cz/erp/201912" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201912" schemaLocation="Cuer2Schema.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="NacistLekovyZaznamSoapIn">
<wsdl:part name="dotaz" element="tns:NacistLekovyZaznamLekarDotaz" />
</wsdl:message>
<wsdl:message name="NacistLekovyZaznamSoapOut">
<wsdl:part name="NacistLekovyZaznamResult" element="tns:NacistLekovyZaznamOdpoved" />
</wsdl:message>
<wsdl:message name="OverDuplicitySoapIn">
<wsdl:part name="dotaz" element="tns:OverDuplicityDotaz" />
</wsdl:message>
<wsdl:message name="OverDuplicitySoapOut">
<wsdl:part name="OverDuplicityResult" element="tns:OverDuplicityOdpoved" />
</wsdl:message>
<wsdl:message name="ZjistitPoznamkyHvlpSoapIn">
<wsdl:part name="dotaz" element="tns:ZjistitPoznamkyHvlpDotaz" />
</wsdl:message>
<wsdl:message name="ZjistitPoznamkyHvlpSoapOut">
<wsdl:part name="ZjistitPoznamkyHvlpResult" element="tns:ZjistitPoznamkyHvlpOdpoved" />
</wsdl:message>
<wsdl:message name="GetAppInfoSoapIn">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz" />
</wsdl:message>
<wsdl:message name="GetAppInfoSoapOut">
<wsdl:part name="GetAppInfoResult" element="tns:AppInfoOdpoved" />
</wsdl:message>
<wsdl:message name="AppPingSoapIn">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz" />
</wsdl:message>
<wsdl:message name="AppPingSoapOut">
<wsdl:part name="AppPingResult" element="tns:AppPingOdpoved" />
</wsdl:message>
<wsdl:portType name="CUERLekarServiceSoap">
<wsdl:operation name="NacistLekovyZaznam">
<wsdl:input message="tns:NacistLekovyZaznamSoapIn" />
<wsdl:output message="tns:NacistLekovyZaznamSoapOut" />
</wsdl:operation>
<wsdl:operation name="OverDuplicity">
<wsdl:input message="tns:OverDuplicitySoapIn" />
<wsdl:output message="tns:OverDuplicitySoapOut" />
</wsdl:operation>
<wsdl:operation name="ZjistitPoznamkyHvlp">
<wsdl:input message="tns:ZjistitPoznamkyHvlpSoapIn" />
<wsdl:output message="tns:ZjistitPoznamkyHvlpSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input message="tns:GetAppInfoSoapIn" />
<wsdl:output message="tns:GetAppInfoSoapOut" />
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input message="tns:AppPingSoapIn" />
<wsdl:output message="tns:AppPingSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERLekarServiceSoap" type="tns:CUERLekarServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="NacistLekovyZaznam">
<soap:operation soapAction="NacistLekovyZaznam" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="OverDuplicity">
<soap:operation soapAction="OverDuplicity" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZjistitPoznamkyHvlp">
<soap:operation soapAction="ZjistitPoznamkyHvlp" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CUERLekarServiceSoap12" type="tns:CUERLekarServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="NacistLekovyZaznam">
<soap12:operation soapAction="NacistLekovyZaznam" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="OverDuplicity">
<soap12:operation soapAction="OverDuplicity" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZjistitPoznamkyHvlp">
<soap12:operation soapAction="ZjistitPoznamkyHvlp" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap12:operation soapAction="GetAppInfo" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap12:operation soapAction="AppPing" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERLekarService">
<wsdl:port name="CUERLekarServiceSoap" binding="tns:CUERLekarServiceSoap">
<soap:address location="http://localhost:49646/Cuer/CUERLekarService.asmx" />
</wsdl:port>
<wsdl:port name="CUERLekarServiceSoap12" binding="tns:CUERLekarServiceSoap12">
<soap12:address location="http://localhost:49646/Cuer/CUERLekarService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,248 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:s1="http://www.w3.org/2000/09/xmldsig#" xmlns:tns="http://www.sukl.cz/erp/201912" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://www.sukl.cz/erp/201912" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201912" schemaLocation="Cuer2Schema.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="NacistLekovyZaznamSoapIn">
<wsdl:part name="dotaz" element="tns:NacistLekovyZaznamLekarnikDotaz" />
</wsdl:message>
<wsdl:message name="NacistLekovyZaznamSoapOut">
<wsdl:part name="NacistLekovyZaznamResult" element="tns:NacistLekovyZaznamOdpoved" />
</wsdl:message>
<wsdl:message name="ZalozitElektronickyZaznamSVydejemSoapIn">
<wsdl:part name="ZalozitElektronickyZaznamSVydejemDotaz" element="tns:ZalozitElektronickyZaznamSVydejemDotaz" />
</wsdl:message>
<wsdl:message name="ZalozitElektronickyZaznamSVydejemSoapOut">
<wsdl:part name="ZalozitElektronickyZaznamSVydejemResult" element="tns:UlozitElektronickyZaznamSVydejemOdpoved" />
</wsdl:message>
<wsdl:message name="ZmenitElektronickyZaznamSVydejemSoapIn">
<wsdl:part name="ZmenitElektronickyZaznamSVydejemDotaz" element="tns:ZmenitElektronickyZaznamSVydejemDotaz" />
</wsdl:message>
<wsdl:message name="ZmenitElektronickyZaznamSVydejemSoapOut">
<wsdl:part name="ZmenitElektronickyZaznamSVydejemResult" element="tns:ZmenitElektronickyZaznamSVydejemOdpoved" />
</wsdl:message>
<wsdl:message name="ZrusitElektronickyZaznamSVydejemSoapIn">
<wsdl:part name="ZrusitElektronickyZaznamSVydejemDotaz" element="tns:ZrusitElektronickyZaznamSVydejemDotaz" />
</wsdl:message>
<wsdl:message name="ZrusitElektronickyZaznamSVydejemSoapOut">
<wsdl:part name="ZrusitElektronickyZaznamSVydejemResult" element="tns:ZrusitElektronickyZaznamSVydejemOdpoved" />
</wsdl:message>
<wsdl:message name="NacistDoplatkyLimitPojistenceSoapIn">
<wsdl:part name="NacteniDoplatkyLimitPojistenceDotaz" element="tns:NacteniDoplatkyLimitPojistenceDotaz" />
</wsdl:message>
<wsdl:message name="NacistDoplatkyLimitPojistenceSoapOut">
<wsdl:part name="NacistDoplatkyLimitPojistenceResult" element="tns:NacteniDoplatkyLimitPojistenceOdpoved" />
</wsdl:message>
<wsdl:message name="ZjistitPoznamkyHvlpSoapIn">
<wsdl:part name="dotaz" element="tns:ZjistitPoznamkyHvlpDotaz" />
</wsdl:message>
<wsdl:message name="ZjistitPoznamkyHvlpSoapOut">
<wsdl:part name="ZjistitPoznamkyHvlpResult" element="tns:ZjistitPoznamkyHvlpOdpoved" />
</wsdl:message>
<wsdl:message name="GetAppInfoSoapIn">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz" />
</wsdl:message>
<wsdl:message name="GetAppInfoSoapOut">
<wsdl:part name="GetAppInfoResult" element="tns:AppInfoOdpoved" />
</wsdl:message>
<wsdl:message name="AppPingSoapIn">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz" />
</wsdl:message>
<wsdl:message name="AppPingSoapOut">
<wsdl:part name="AppPingResult" element="tns:AppPingOdpoved" />
</wsdl:message>
<wsdl:portType name="CUERLekarnikServiceSoap">
<wsdl:operation name="NacistLekovyZaznam">
<wsdl:input message="tns:NacistLekovyZaznamSoapIn" />
<wsdl:output message="tns:NacistLekovyZaznamSoapOut" />
</wsdl:operation>
<wsdl:operation name="ZalozitElektronickyZaznamSVydejem">
<wsdl:input message="tns:ZalozitElektronickyZaznamSVydejemSoapIn" />
<wsdl:output message="tns:ZalozitElektronickyZaznamSVydejemSoapOut" />
</wsdl:operation>
<wsdl:operation name="ZmenitElektronickyZaznamSVydejem">
<wsdl:input message="tns:ZmenitElektronickyZaznamSVydejemSoapIn" />
<wsdl:output message="tns:ZmenitElektronickyZaznamSVydejemSoapOut" />
</wsdl:operation>
<wsdl:operation name="ZrusitElektronickyZaznamSVydejem">
<wsdl:input message="tns:ZrusitElektronickyZaznamSVydejemSoapIn" />
<wsdl:output message="tns:ZrusitElektronickyZaznamSVydejemSoapOut" />
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<wsdl:input message="tns:NacistDoplatkyLimitPojistenceSoapIn" />
<wsdl:output message="tns:NacistDoplatkyLimitPojistenceSoapOut" />
</wsdl:operation>
<wsdl:operation name="ZjistitPoznamkyHvlp">
<wsdl:input message="tns:ZjistitPoznamkyHvlpSoapIn" />
<wsdl:output message="tns:ZjistitPoznamkyHvlpSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input message="tns:GetAppInfoSoapIn" />
<wsdl:output message="tns:GetAppInfoSoapOut" />
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input message="tns:AppPingSoapIn" />
<wsdl:output message="tns:AppPingSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERLekarnikServiceSoap" type="tns:CUERLekarnikServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="NacistLekovyZaznam">
<soap:operation soapAction="NacistLekovyZaznam" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZalozitElektronickyZaznamSVydejem">
<soap:operation soapAction="ZalozitElektronickyZaznamSVydejem" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZmenitElektronickyZaznamSVydejem">
<soap:operation soapAction="ZmenitElektronickyZaznamSVydejem" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZrusitElektronickyZaznamSVydejem">
<soap:operation soapAction="ZrusitElektronickyZaznamSVydejem" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<soap:operation soapAction="NacistDoplatkyLimitPojistence" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZjistitPoznamkyHvlp">
<soap:operation soapAction="ZjistitPoznamkyHvlp" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CUERLekarnikServiceSoap12" type="tns:CUERLekarnikServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="NacistLekovyZaznam">
<soap12:operation soapAction="NacistLekovyZaznam" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZalozitElektronickyZaznamSVydejem">
<soap12:operation soapAction="ZalozitElektronickyZaznamSVydejem" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZmenitElektronickyZaznamSVydejem">
<soap12:operation soapAction="ZmenitElektronickyZaznamSVydejem" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZrusitElektronickyZaznamSVydejem">
<soap12:operation soapAction="ZrusitElektronickyZaznamSVydejem" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<soap12:operation soapAction="NacistDoplatkyLimitPojistence" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ZjistitPoznamkyHvlp">
<soap12:operation soapAction="ZjistitPoznamkyHvlp" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap12:operation soapAction="GetAppInfo" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap12:operation soapAction="AppPing" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERLekarnikService">
<wsdl:port name="CUERLekarnikServiceSoap" binding="tns:CUERLekarnikServiceSoap">
<soap:address location="http://localhost:49646/Cuer/CUERLekarnikService.asmx" />
</wsdl:port>
<wsdl:port name="CUERLekarnikServiceSoap12" binding="tns:CUERLekarnikServiceSoap12">
<soap12:address location="http://localhost:49646/Cuer/CUERLekarnikService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:sig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
<xsd:complexType name="SignatureType">
<xsd:sequence>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType" minOccurs="0"/>
<xsd:element name="Object" type="sig:ObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignedInfoType">
<xsd:sequence>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="CanonicalizationMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="ObjectType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="MimeType" type="xsd:string"/>
<xsd:attribute name="Encoding" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SPKIDataType">
<xsd:sequence>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="SPKISexp" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="X509DataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="X509IssuerSerial" type="sig:X509IssuerSerialType"/>
<xsd:element name="X509SubjectName" type="xsd:string"/>
<xsd:element name="X509Certificate" type="xsd:base64Binary"/>
<xsd:element name="X509SKI" type="xsd:base64Binary"/>
<xsd:element name="X509CRL" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PGPDataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="PGPKeyPacket" type="xsd:base64Binary"/>
<xsd:element name="PGPKeyID" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TransformType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="XPath" type="xsd:string"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="KeyValueType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:RSAKeyValue"/>
<xsd:element ref="sig:DSAKeyValue"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ManifestType">
<xsd:sequence>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="TransformsType">
<xsd:sequence>
<xsd:element name="Transform" type="sig:TransformType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KeyInfoType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:MgmtData"/>
<xsd:element ref="sig:KeyValue"/>
<xsd:element ref="sig:X509Data"/>
<xsd:element ref="sig:SPKIData"/>
<xsd:element ref="sig:PGPData"/>
<xsd:element ref="sig:RetrievalMethod"/>
<xsd:element ref="sig:KeyName"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="ReferenceType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="X509IssuerSerialType">
<xsd:sequence>
<xsd:element name="X509IssuerName" type="xsd:string"/>
<xsd:element name="X509SerialNumber" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RetrievalMethodType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SignatureValueType">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="SignatureMethodType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="HMACOutputLength" type="xsd:integer"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="DigestMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="RSAKeyValueType">
<xsd:sequence>
<xsd:element name="Modulus" type="xsd:base64Binary"/>
<xsd:element name="Exponent" type="xsd:base64Binary"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DSAKeyValueType">
<xsd:sequence>
<xsd:element name="P" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Q" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="G" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Y" type="xsd:base64Binary"/>
<xsd:element name="J" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Seed" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="PgenCounter" type="xsd:base64Binary" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SignaturePropertiesType">
<xsd:sequence>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignaturePropertyType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:element name="Signature" type="sig:SignatureType"/>
<xsd:element name="SPKIData" type="sig:SPKIDataType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyValue" type="sig:KeyValueType"/>
<xsd:element name="Transforms" type="sig:TransformsType"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="X509Data" type="sig:X509DataType"/>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType"/>
<xsd:element name="KeyName" type="xsd:string"/>
<xsd:element name="RSAKeyValue" type="sig:RSAKeyValueType"/>
<xsd:element name="MgmtData" type="xsd:string"/>
<xsd:element name="Object" type="sig:ObjectType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="SignatureProperties" type="sig:SignaturePropertiesType"/>
<xsd:element name="Transform" type="sig:TransformType"/>
<xsd:element name="PGPData" type="sig:PGPDataType"/>
<xsd:element name="Reference" type="sig:ReferenceType"/>
<xsd:element name="RetrievalMethod" type="sig:RetrievalMethodType"/>
<xsd:element name="DSAKeyValue" type="sig:DSAKeyValueType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="Manifest" type="sig:ManifestType"/>
</xsd:schema>
@@ -0,0 +1,526 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CUERLekar" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704B_update1--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="SeznamPredpisu">
<wsdl:part name="SeznamPredpisuDotaz" element="tns:SeznamPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisu">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuDotaz" element="tns:NacteniInformaceOZrusenemPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpis">
<wsdl:part name="NacteniPredpisuDotaz" element="tns:NacteniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamVydejuPredepisujicihoResponse">
<wsdl:part name="SeznamVydejuPredepisujicihoOdpoved" element="tns:SeznamVydejuPredepisujicihoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PrevzitVydejePredepisujiciho">
<wsdl:part name="PrevzetiVydejuPredepisujicihoDotaz" element="tns:PrevzetiVydejuPredepisujicihoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPredpisResponse">
<wsdl:part name="ZmenaPredpisuOdpoved" element="tns:ZmenaPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PrevzitVydejePredepisujicihoResponse">
<wsdl:part name="PrevzetiVydejuPredepisujicihoOdpoved" element="tns:PrevzetiVydejuPredepisujicihoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitPredpisResponse">
<wsdl:part name="ZalozeniPredpisuOdpoved" element="tns:ZalozeniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydej">
<wsdl:part name="NacteniVydejeDotaz" element="tns:NacteniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutVydejePredepisujiciho">
<wsdl:part name="StazeniVydejuPredepisujicihoDotaz" element="tns:StazeniVydejuPredepisujicihoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodku">
<wsdl:part name="StazeniPruvodkyDotaz" element="tns:StazeniPruvodkyDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydeji">
<wsdl:part name="NacteniInformaceOZrusenemVydejiDotaz" element="tns:NacteniInformaceOZrusenemVydejiDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiResponse">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOdpoved" element="tns:NacteniInformaceOZrusenemVydejiOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PripravitVydejePredepisujicihoResponse">
<wsdl:part name="PripravaVydejuPredepisujicihoOdpoved" element="tns:PripravaVydejuPredepisujicihoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitPredpis">
<wsdl:part name="ZruseniPredpisuDotaz" element="tns:ZruseniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejResponse">
<wsdl:part name="NacteniVydejeOdpoved" element="tns:NacteniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamPredpisuResponse">
<wsdl:part name="SeznamPredpisuOdpoved" element="tns:SeznamPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpisResponse">
<wsdl:part name="NacteniPredpisuOdpoved" element="tns:NacteniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisuResponse">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuOdpoved" element="tns:NacteniInformaceOZrusenemPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitPredpisResponse">
<wsdl:part name="ZruseniPredpisuOdpoved" element="tns:ZruseniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitPredpis">
<wsdl:part name="ZalozeniPredpisuDotaz" element="tns:ZalozeniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutVydejePredepisujicihoResponse">
<wsdl:part name="StazeniVydejuPredepisujicihoOdpoved" element="tns:StazeniVydejuPredepisujicihoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PripravitVydejePredepisujiciho">
<wsdl:part name="PripravaVydejuPredepisujicihoDotaz" element="tns:PripravaVydejuPredepisujicihoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamVydejuPredepisujiciho">
<wsdl:part name="SeznamVydejuPredepisujicihoDotaz" element="tns:SeznamVydejuPredepisujicihoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodkuResponse">
<wsdl:part name="StazeniPruvodkyOdpoved" element="tns:StazeniPruvodkyOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPredpis">
<wsdl:part name="ZmenaPredpisuDotaz" element="tns:ZmenaPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CUERLekar">
<wsdl:operation name="SeznamPredpisu">
<wsdl:input name="SeznamPredpisu" message="tns:SeznamPredpisu">
</wsdl:input>
<wsdl:output name="SeznamPredpisuResponse" message="tns:SeznamPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<wsdl:input name="NacistInformaceOZrusenemVydeji" message="tns:NacistInformaceOZrusenemVydeji">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse" message="tns:NacistInformaceOZrusenemVydejiResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<wsdl:input name="NacistInformaceOZrusenemPredpisu" message="tns:NacistInformaceOZrusenemPredpisu">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse" message="tns:NacistInformaceOZrusenemPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitPredpis">
<wsdl:input name="ZrusitPredpis" message="tns:ZrusitPredpis">
</wsdl:input>
<wsdl:output name="ZrusitPredpisResponse" message="tns:ZrusitPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<wsdl:input name="NacistPredpis" message="tns:NacistPredpis">
</wsdl:input>
<wsdl:output name="NacistPredpisResponse" message="tns:NacistPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PrevzitVydejePredepisujiciho">
<wsdl:input name="PrevzitVydejePredepisujiciho" message="tns:PrevzitVydejePredepisujiciho">
</wsdl:input>
<wsdl:output name="PrevzitVydejePredepisujicihoResponse" message="tns:PrevzitVydejePredepisujicihoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitPredpis">
<wsdl:input name="ZalozitPredpis" message="tns:ZalozitPredpis">
</wsdl:input>
<wsdl:output name="ZalozitPredpisResponse" message="tns:ZalozitPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PripravitVydejePredepisujiciho">
<wsdl:input name="PripravitVydejePredepisujiciho" message="tns:PripravitVydejePredepisujiciho">
</wsdl:input>
<wsdl:output name="PripravitVydejePredepisujicihoResponse" message="tns:PripravitVydejePredepisujicihoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SeznamVydejuPredepisujiciho">
<wsdl:input name="SeznamVydejuPredepisujiciho" message="tns:SeznamVydejuPredepisujiciho">
</wsdl:input>
<wsdl:output name="SeznamVydejuPredepisujicihoResponse" message="tns:SeznamVydejuPredepisujicihoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<wsdl:input name="NacistVydej" message="tns:NacistVydej">
</wsdl:input>
<wsdl:output name="NacistVydejResponse" message="tns:NacistVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutVydejePredepisujiciho">
<wsdl:input name="StahnoutVydejePredepisujiciho" message="tns:StahnoutVydejePredepisujiciho">
</wsdl:input>
<wsdl:output name="StahnoutVydejePredepisujicihoResponse" message="tns:StahnoutVydejePredepisujicihoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<wsdl:input name="StahnoutPruvodku" message="tns:StahnoutPruvodku">
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse" message="tns:StahnoutPruvodkuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPredpis">
<wsdl:input name="ZmenitPredpis" message="tns:ZmenitPredpis">
</wsdl:input>
<wsdl:output name="ZmenitPredpisResponse" message="tns:ZmenitPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERLekarSoapBinding" type="tns:CUERLekar">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="SeznamPredpisu">
<soap:operation soapAction="SeznamPredpisu" style="document"/>
<wsdl:input name="SeznamPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SeznamPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<soap:operation soapAction="NacistInformaceOZrusenemVydeji" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemVydeji">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<soap:operation soapAction="NacistInformaceOZrusenemPredpisu" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitPredpis">
<soap:operation soapAction="ZrusitPredpis" style="document"/>
<wsdl:input name="ZrusitPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZrusitPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<soap:operation soapAction="NacistPredpis" style="document"/>
<wsdl:input name="NacistPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PrevzitVydejePredepisujiciho">
<soap:operation soapAction="PrevzitVydejePredepisujiciho" style="document"/>
<wsdl:input name="PrevzitVydejePredepisujiciho">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PrevzitVydejePredepisujicihoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitPredpis">
<soap:operation soapAction="ZalozitPredpis" style="document"/>
<wsdl:input name="ZalozitPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZalozitPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PripravitVydejePredepisujiciho">
<soap:operation soapAction="PripravitVydejePredepisujiciho" style="document"/>
<wsdl:input name="PripravitVydejePredepisujiciho">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PripravitVydejePredepisujicihoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SeznamVydejuPredepisujiciho">
<soap:operation soapAction="SeznamVydejuPredepisujiciho" style="document"/>
<wsdl:input name="SeznamVydejuPredepisujiciho">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SeznamVydejuPredepisujicihoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<soap:operation soapAction="NacistVydej" style="document"/>
<wsdl:input name="NacistVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutVydejePredepisujiciho">
<soap:operation soapAction="StahnoutVydejePredepisujiciho" style="document"/>
<wsdl:input name="StahnoutVydejePredepisujiciho">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutVydejePredepisujicihoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<soap:operation soapAction="StahnoutPruvodku" style="document"/>
<wsdl:input name="StahnoutPruvodku">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPredpis">
<soap:operation soapAction="ZmenitPredpis" style="document"/>
<wsdl:input name="ZmenitPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERLekar">
<wsdl:port name="CUERLekar_Port" binding="tns:CUERLekarSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/CUERLekar"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,526 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CUERLekarnik" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704D--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisu">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuDotaz" element="tns:NacteniInformaceOZrusenemPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitVydej">
<wsdl:part name="ZruseniVydejeDotaz" element="tns:ZruseniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpis">
<wsdl:part name="NacteniPredpisuDotaz" element="tns:NacteniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitVydejResponse">
<wsdl:part name="ZruseniVydejeOdpoved" element="tns:ZruseniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydej">
<wsdl:part name="NacteniVydejeDotaz" element="tns:NacteniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPojistovnuPredpisuResponse">
<wsdl:part name="ZmenaPojistovnyPredpisuOdpoved" element="tns:ZmenaPojistovnyPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitVydejResponse">
<wsdl:part name="ZmenaVydejeOdpoved" element="tns:ZmenaVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodku">
<wsdl:part name="StazeniPruvodkyDotaz" element="tns:StazeniPruvodkyDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamPredpisuDleDokladu">
<wsdl:part name="SeznamPredpisuDleDokladuDotaz" element="tns:SeznamPredpisuDleDokladuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydeji">
<wsdl:part name="NacteniInformaceOZrusenemVydejiDotaz" element="tns:NacteniInformaceOZrusenemVydejiDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiResponse">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOdpoved" element="tns:NacteniInformaceOZrusenemVydejiOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitVydej">
<wsdl:part name="ZmenaVydejeDotaz" element="tns:ZmenaVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="DigitalizovatPredpisResponse">
<wsdl:part name="DigitalizacePredpisuOdpoved" element="tns:DigitalizacePredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitStavPredpisuResponse">
<wsdl:part name="ZmenaStavuPredpisuOdpoved" element="tns:ZmenaStavuPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="DeblokacePredpisuResponse">
<wsdl:part name="DeblokacePredpisuOdpoved" element="tns:DeblokacePredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejResponse">
<wsdl:part name="NacteniVydejeOdpoved" element="tns:NacteniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpisResponse">
<wsdl:part name="NacteniPredpisuOdpoved" element="tns:NacteniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="DeblokacePredpisu">
<wsdl:part name="DeblokacePredpisuDotaz" element="tns:DeblokacePredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="DigitalizovatPredpis">
<wsdl:part name="DigitalizacePredpisuDotaz" element="tns:DigitalizacePredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisuResponse">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuOdpoved" element="tns:NacteniInformaceOZrusenemPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitVydejResponse">
<wsdl:part name="ZalozeniVydejeOdpoved" element="tns:ZalozeniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitVydej">
<wsdl:part name="ZalozeniVydejeDotaz" element="tns:ZalozeniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitStavPredpisu">
<wsdl:part name="ZmenaStavuPredpisuDotaz" element="tns:ZmenaStavuPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPojistovnuPredpisu">
<wsdl:part name="ZmenaPojistovnyPredpisuDotaz" element="tns:ZmenaPojistovnyPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodkuResponse">
<wsdl:part name="StazeniPruvodkyOdpoved" element="tns:StazeniPruvodkyOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamPredpisuDleDokladuResponse">
<wsdl:part name="SeznamPredpisuDleDokladuOdpoved" element="tns:SeznamPredpisuDleDokladuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CUERLekarnik">
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<wsdl:input name="NacistInformaceOZrusenemVydeji" message="tns:NacistInformaceOZrusenemVydeji">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse" message="tns:NacistInformaceOZrusenemVydejiResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitVydej">
<wsdl:input name="ZmenitVydej" message="tns:ZmenitVydej">
</wsdl:input>
<wsdl:output name="ZmenitVydejResponse" message="tns:ZmenitVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<wsdl:input name="NacistInformaceOZrusenemPredpisu" message="tns:NacistInformaceOZrusenemPredpisu">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse" message="tns:NacistInformaceOZrusenemPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitVydej">
<wsdl:input name="ZrusitVydej" message="tns:ZrusitVydej">
</wsdl:input>
<wsdl:output name="ZrusitVydejResponse" message="tns:ZrusitVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<wsdl:input name="NacistPredpis" message="tns:NacistPredpis">
</wsdl:input>
<wsdl:output name="NacistPredpisResponse" message="tns:NacistPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="DeblokacePredpisu">
<wsdl:input name="DeblokacePredpisu" message="tns:DeblokacePredpisu">
</wsdl:input>
<wsdl:output name="DeblokacePredpisuResponse" message="tns:DeblokacePredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="DigitalizovatPredpis">
<wsdl:input name="DigitalizovatPredpis" message="tns:DigitalizovatPredpis">
</wsdl:input>
<wsdl:output name="DigitalizovatPredpisResponse" message="tns:DigitalizovatPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitVydej">
<wsdl:input name="ZalozitVydej" message="tns:ZalozitVydej">
</wsdl:input>
<wsdl:output name="ZalozitVydejResponse" message="tns:ZalozitVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitStavPredpisu">
<wsdl:input name="ZmenitStavPredpisu" message="tns:ZmenitStavPredpisu">
</wsdl:input>
<wsdl:output name="ZmenitStavPredpisuResponse" message="tns:ZmenitStavPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPojistovnuPredpisu">
<wsdl:input name="ZmenitPojistovnuPredpisu" message="tns:ZmenitPojistovnuPredpisu">
</wsdl:input>
<wsdl:output name="ZmenitPojistovnuPredpisuResponse" message="tns:ZmenitPojistovnuPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<wsdl:input name="NacistVydej" message="tns:NacistVydej">
</wsdl:input>
<wsdl:output name="NacistVydejResponse" message="tns:NacistVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<wsdl:input name="StahnoutPruvodku" message="tns:StahnoutPruvodku">
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse" message="tns:StahnoutPruvodkuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SeznamPredpisuDleDokladu">
<wsdl:input name="SeznamPredpisuDleDokladu" message="tns:SeznamPredpisuDleDokladu">
</wsdl:input>
<wsdl:output name="SeznamPredpisuDleDokladuResponse" message="tns:SeznamPredpisuDleDokladuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERLekarnikSoapBinding" type="tns:CUERLekarnik">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<soap:operation soapAction="NacistInformaceOZrusenemVydeji" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemVydeji">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitVydej">
<soap:operation soapAction="ZmenitVydej" style="document"/>
<wsdl:input name="ZmenitVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<soap:operation soapAction="NacistInformaceOZrusenemPredpisu" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitVydej">
<soap:operation soapAction="ZrusitVydej" style="document"/>
<wsdl:input name="ZrusitVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZrusitVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<soap:operation soapAction="NacistPredpis" style="document"/>
<wsdl:input name="NacistPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="DeblokacePredpisu">
<soap:operation soapAction="DeblokacePredpisu" style="document"/>
<wsdl:input name="DeblokacePredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="DeblokacePredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="DigitalizovatPredpis">
<soap:operation soapAction="DigitalizovatPredpis" style="document"/>
<wsdl:input name="DigitalizovatPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="DigitalizovatPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitVydej">
<soap:operation soapAction="ZalozitVydej" style="document"/>
<wsdl:input name="ZalozitVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZalozitVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitStavPredpisu">
<soap:operation soapAction="ZmenitStavPredpisu" style="document"/>
<wsdl:input name="ZmenitStavPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitStavPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPojistovnuPredpisu">
<soap:operation soapAction="ZmenitPojistovnuPredpisu" style="document"/>
<wsdl:input name="ZmenitPojistovnuPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitPojistovnuPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<soap:operation soapAction="NacistVydej" style="document"/>
<wsdl:input name="NacistVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<soap:operation soapAction="StahnoutPruvodku" style="document"/>
<wsdl:input name="StahnoutPruvodku">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SeznamPredpisuDleDokladu">
<soap:operation soapAction="SeznamPredpisuDleDokladu" style="document"/>
<wsdl:input name="SeznamPredpisuDleDokladu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SeznamPredpisuDleDokladuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERLekarnik">
<wsdl:port name="CUERLekarnik_Port" binding="tns:CUERLekarnikSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/CUERLekarnik"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,442 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CUERPracovnikZP" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704B_update1--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisu">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuDotaz" element="tns:NacteniInformaceOZrusenemPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpis">
<wsdl:part name="NacteniPredpisuDotaz" element="tns:NacteniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PrevzitVydeje">
<wsdl:part name="PrevzetiVydejuDotaz" element="tns:PrevzetiVydejuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydej">
<wsdl:part name="NacteniVydejeDotaz" element="tns:NacteniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPojistovnuPredpisuResponse">
<wsdl:part name="ZmenaPojistovnyPredpisuOdpoved" element="tns:ZmenaPojistovnyPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PripravitVydeje">
<wsdl:part name="PripravaVydejuDotaz" element="tns:PripravaVydejuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodku">
<wsdl:part name="StazeniPruvodkyDotaz" element="tns:StazeniPruvodkyDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydeji">
<wsdl:part name="NacteniInformaceOZrusenemVydejiDotaz" element="tns:NacteniInformaceOZrusenemVydejiDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiResponse">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOdpoved" element="tns:NacteniInformaceOZrusenemVydejiOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitStavPredpisuResponse">
<wsdl:part name="ZmenaStavuPredpisuOdpoved" element="tns:ZmenaStavuPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejResponse">
<wsdl:part name="NacteniVydejeOdpoved" element="tns:NacteniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PripravitVydejeResponse">
<wsdl:part name="PripravaVydejuOdpoved" element="tns:PripravaVydejuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpisResponse">
<wsdl:part name="NacteniPredpisuOdpoved" element="tns:NacteniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisuResponse">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuOdpoved" element="tns:NacteniInformaceOZrusenemPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitStavPredpisu">
<wsdl:part name="ZmenaStavuPredpisuDotaz" element="tns:ZmenaStavuPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutVydeje">
<wsdl:part name="StazeniVydejuDotaz" element="tns:StazeniVydejuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPojistovnuPredpisu">
<wsdl:part name="ZmenaPojistovnyPredpisuDotaz" element="tns:ZmenaPojistovnyPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodkuResponse">
<wsdl:part name="StazeniPruvodkyOdpoved" element="tns:StazeniPruvodkyOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutVydejeResponse">
<wsdl:part name="StazeniVydejuOdpoved" element="tns:StazeniVydejuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PrevzitVydejeResponse">
<wsdl:part name="PrevzetiVydejuOdpoved" element="tns:PrevzetiVydejuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CUERPracovnikZP">
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<wsdl:input name="NacistInformaceOZrusenemVydeji" message="tns:NacistInformaceOZrusenemVydeji">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse" message="tns:NacistInformaceOZrusenemVydejiResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<wsdl:input name="NacistInformaceOZrusenemPredpisu" message="tns:NacistInformaceOZrusenemPredpisu">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse" message="tns:NacistInformaceOZrusenemPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<wsdl:input name="NacistPredpis" message="tns:NacistPredpis">
</wsdl:input>
<wsdl:output name="NacistPredpisResponse" message="tns:NacistPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PrevzitVydeje">
<wsdl:input name="PrevzitVydeje" message="tns:PrevzitVydeje">
</wsdl:input>
<wsdl:output name="PrevzitVydejeResponse" message="tns:PrevzitVydejeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitStavPredpisu">
<wsdl:input name="ZmenitStavPredpisu" message="tns:ZmenitStavPredpisu">
</wsdl:input>
<wsdl:output name="ZmenitStavPredpisuResponse" message="tns:ZmenitStavPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutVydeje">
<wsdl:input name="StahnoutVydeje" message="tns:StahnoutVydeje">
</wsdl:input>
<wsdl:output name="StahnoutVydejeResponse" message="tns:StahnoutVydejeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPojistovnuPredpisu">
<wsdl:input name="ZmenitPojistovnuPredpisu" message="tns:ZmenitPojistovnuPredpisu">
</wsdl:input>
<wsdl:output name="ZmenitPojistovnuPredpisuResponse" message="tns:ZmenitPojistovnuPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<wsdl:input name="NacistVydej" message="tns:NacistVydej">
</wsdl:input>
<wsdl:output name="NacistVydejResponse" message="tns:NacistVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PripravitVydeje">
<wsdl:input name="PripravitVydeje" message="tns:PripravitVydeje">
</wsdl:input>
<wsdl:output name="PripravitVydejeResponse" message="tns:PripravitVydejeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<wsdl:input name="StahnoutPruvodku" message="tns:StahnoutPruvodku">
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse" message="tns:StahnoutPruvodkuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERPracovnikZPSoapBinding" type="tns:CUERPracovnikZP">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<soap:operation soapAction="NacistInformaceOZrusenemVydeji" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemVydeji">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<soap:operation soapAction="NacistInformaceOZrusenemPredpisu" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<soap:operation soapAction="NacistPredpis" style="document"/>
<wsdl:input name="NacistPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PrevzitVydeje">
<soap:operation soapAction="PrevzitVydeje" style="document"/>
<wsdl:input name="PrevzitVydeje">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PrevzitVydejeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitStavPredpisu">
<soap:operation soapAction="ZmenitStavPredpisu" style="document"/>
<wsdl:input name="ZmenitStavPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitStavPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutVydeje">
<soap:operation soapAction="StahnoutVydeje" style="document"/>
<wsdl:input name="StahnoutVydeje">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutVydejeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPojistovnuPredpisu">
<soap:operation soapAction="ZmenitPojistovnuPredpisu" style="document"/>
<wsdl:input name="ZmenitPojistovnuPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitPojistovnuPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<soap:operation soapAction="NacistVydej" style="document"/>
<wsdl:input name="NacistVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PripravitVydeje">
<soap:operation soapAction="PripravitVydeje" style="document"/>
<wsdl:input name="PripravitVydeje">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PripravitVydejeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<soap:operation soapAction="StahnoutPruvodku" style="document"/>
<wsdl:input name="StahnoutPruvodku">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERPracovnikZP">
<wsdl:port name="CUERPracovnikZP_Port" binding="tns:CUERPracovnikZPSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/CUERPracovnikZP"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="RLPOLekar" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704B_update1--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="OveritPredpisResponse">
<wsdl:part name="OveritPredpisOdpoved" element="tns:OveritPredpisOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="OveritPredpis">
<wsdl:part name="OveritPredpisDotaz" element="tns:OveritPredpisDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="RLPOLekar">
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="OveritPredpis">
<wsdl:input name="OveritPredpis" message="tns:OveritPredpis">
</wsdl:input>
<wsdl:output name="OveritPredpisResponse" message="tns:OveritPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="RLPOLekarSoapBinding" type="tns:RLPOLekar">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="OveritPredpis">
<soap:operation soapAction="OveritPredpis" style="document"/>
<wsdl:input name="OveritPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="OveritPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="RLPOLekar">
<wsdl:port name="RLPOLekar_Port" binding="tns:RLPOLekarSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/RLPOLekar"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,330 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="RLPOLekarnik" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704B_update1--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejOTCResponse">
<wsdl:part name="NacteniVydejeOTCOdpoved" element="tns:NacteniVydejeOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiOTCResponse">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOTCOdpoved" element="tns:NacteniInformaceOZrusenemVydejiOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitVydejOTCResponse">
<wsdl:part name="ZalozeniVydejeOTCOdpoved" element="tns:ZalozeniVydejeOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitVydejOTCResponse">
<wsdl:part name="ZruseniVydejeOTCOdpoved" element="tns:ZruseniVydejeOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="OveritVydejResponse">
<wsdl:part name="OveritVydejOdpoved" element="tns:OveritVydejOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitVydejOTC">
<wsdl:part name="ZmenaVydejeOTCDotaz" element="tns:ZmenaVydejeOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitVydejOTC">
<wsdl:part name="ZruseniVydejeOTCDotaz" element="tns:ZruseniVydejeOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitVydejOTC">
<wsdl:part name="ZalozeniVydejeOTCDotaz" element="tns:ZalozeniVydejeOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejOTC">
<wsdl:part name="NacteniVydejeOTCDotaz" element="tns:NacteniVydejeOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="OveritVydej">
<wsdl:part name="OveritVydejDotaz" element="tns:OveritVydejDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitVydejOTCResponse">
<wsdl:part name="ZmenaVydejeOTCOdpoved" element="tns:ZmenaVydejeOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiOTC">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOTCDotaz" element="tns:NacteniInformaceOZrusenemVydejiOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="RLPOLekarnik">
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitVydejOTC">
<wsdl:input name="ZmenitVydejOTC" message="tns:ZmenitVydejOTC">
</wsdl:input>
<wsdl:output name="ZmenitVydejOTCResponse" message="tns:ZmenitVydejOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitVydejOTC">
<wsdl:input name="ZrusitVydejOTC" message="tns:ZrusitVydejOTC">
</wsdl:input>
<wsdl:output name="ZrusitVydejOTCResponse" message="tns:ZrusitVydejOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitVydejOTC">
<wsdl:input name="ZalozitVydejOTC" message="tns:ZalozitVydejOTC">
</wsdl:input>
<wsdl:output name="ZalozitVydejOTCResponse" message="tns:ZalozitVydejOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydejOTC">
<wsdl:input name="NacistVydejOTC" message="tns:NacistVydejOTC">
</wsdl:input>
<wsdl:output name="NacistVydejOTCResponse" message="tns:NacistVydejOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="OveritVydej">
<wsdl:input name="OveritVydej" message="tns:OveritVydej">
</wsdl:input>
<wsdl:output name="OveritVydejResponse" message="tns:OveritVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemVydejiOTC">
<wsdl:input name="NacistInformaceOZrusenemVydejiOTC" message="tns:NacistInformaceOZrusenemVydejiOTC">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiOTCResponse" message="tns:NacistInformaceOZrusenemVydejiOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="RLPOLekarnikSoapBinding" type="tns:RLPOLekarnik">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitVydejOTC">
<soap:operation soapAction="ZmenitVydejOTC" style="document"/>
<wsdl:input name="ZmenitVydejOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitVydejOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitVydejOTC">
<soap:operation soapAction="ZrusitVydejOTC" style="document"/>
<wsdl:input name="ZrusitVydejOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZrusitVydejOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitVydejOTC">
<soap:operation soapAction="ZalozitVydejOTC" style="document"/>
<wsdl:input name="ZalozitVydejOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZalozitVydejOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydejOTC">
<soap:operation soapAction="NacistVydejOTC" style="document"/>
<wsdl:input name="NacistVydejOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVydejOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="OveritVydej">
<soap:operation soapAction="OveritVydej" style="document"/>
<wsdl:input name="OveritVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="OveritVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemVydejiOTC">
<soap:operation soapAction="NacistInformaceOZrusenemVydejiOTC" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemVydejiOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="RLPOLekarnik">
<wsdl:port name="RLPOLekarnik_Port" binding="tns:RLPOLekarnikSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/RLPOLekarnik"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:erp="http://www.sukl.cz/erp/201704" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:sig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
<xsd:complexType name="SignatureType">
<xsd:sequence>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType" minOccurs="0"/>
<xsd:element name="Object" type="sig:ObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignedInfoType">
<xsd:sequence>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="CanonicalizationMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="ObjectType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="MimeType" type="xsd:string"/>
<xsd:attribute name="Encoding" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SPKIDataType">
<xsd:sequence>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="SPKISexp" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="X509DataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="X509IssuerSerial" type="sig:X509IssuerSerialType"/>
<xsd:element name="X509SubjectName" type="xsd:string"/>
<xsd:element name="X509Certificate" type="xsd:base64Binary"/>
<xsd:element name="X509SKI" type="xsd:base64Binary"/>
<xsd:element name="X509CRL" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PGPDataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="PGPKeyPacket" type="xsd:base64Binary"/>
<xsd:element name="PGPKeyID" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TransformType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="XPath" type="xsd:string"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="KeyValueType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:RSAKeyValue"/>
<xsd:element ref="sig:DSAKeyValue"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ManifestType">
<xsd:sequence>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="TransformsType">
<xsd:sequence>
<xsd:element name="Transform" type="sig:TransformType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KeyInfoType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:MgmtData"/>
<xsd:element ref="sig:KeyValue"/>
<xsd:element ref="sig:X509Data"/>
<xsd:element ref="sig:SPKIData"/>
<xsd:element ref="sig:PGPData"/>
<xsd:element ref="sig:RetrievalMethod"/>
<xsd:element ref="sig:KeyName"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="ReferenceType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="X509IssuerSerialType">
<xsd:sequence>
<xsd:element name="X509IssuerName" type="xsd:string"/>
<xsd:element name="X509SerialNumber" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RetrievalMethodType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SignatureValueType">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="SignatureMethodType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="HMACOutputLength" type="xsd:integer"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="DigestMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="RSAKeyValueType">
<xsd:sequence>
<xsd:element name="Modulus" type="xsd:base64Binary"/>
<xsd:element name="Exponent" type="xsd:base64Binary"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DSAKeyValueType">
<xsd:sequence>
<xsd:element name="P" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Q" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="G" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Y" type="xsd:base64Binary"/>
<xsd:element name="J" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Seed" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="PgenCounter" type="xsd:base64Binary" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SignaturePropertiesType">
<xsd:sequence>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignaturePropertyType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:element name="Signature" type="sig:SignatureType"/>
<xsd:element name="SPKIData" type="sig:SPKIDataType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyValue" type="sig:KeyValueType"/>
<xsd:element name="Transforms" type="sig:TransformsType"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="X509Data" type="sig:X509DataType"/>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType"/>
<xsd:element name="KeyName" type="xsd:string"/>
<xsd:element name="RSAKeyValue" type="sig:RSAKeyValueType"/>
<xsd:element name="MgmtData" type="xsd:string"/>
<xsd:element name="Object" type="sig:ObjectType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="SignatureProperties" type="sig:SignaturePropertiesType"/>
<xsd:element name="Transform" type="sig:TransformType"/>
<xsd:element name="PGPData" type="sig:PGPDataType"/>
<xsd:element name="Reference" type="sig:ReferenceType"/>
<xsd:element name="RetrievalMethod" type="sig:RetrievalMethodType"/>
<xsd:element name="DSAKeyValue" type="sig:DSAKeyValueType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="Manifest" type="sig:ManifestType"/>
</xsd:schema>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:s1="http://www.w3.org/2000/09/xmldsig#" xmlns:tns="http://www.sukl.cz/erp/cuer" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s0="http://www.sukl.cz/erp/common" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://www.sukl.cz/erp/cuer" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/cuer" schemaLocation="cuer.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="AppPingSoapIn">
<wsdl:part name="AppPingDotaz" element="s0:AppPingDotaz" />
</wsdl:message>
<wsdl:message name="AppPingSoapOut">
<wsdl:part name="AppPingResult" element="s0:AppPingOdpoved" />
</wsdl:message>
<wsdl:message name="AppPingZEPSoapIn">
<wsdl:part name="AppPingZEPDotaz" element="s0:AppPingZEPDotaz" />
</wsdl:message>
<wsdl:message name="AppPingZEPSoapOut">
<wsdl:part name="AppPingZEPResult" element="s0:AppPingZEPOdpoved" />
</wsdl:message>
<wsdl:message name="NacistDoplatkyLimitPojistenceSoapIn">
<wsdl:part name="NacteniDoplatkyLimitPojistenceDotaz" element="tns:NacteniDoplatkyLimitPojistenceDotaz" />
</wsdl:message>
<wsdl:message name="NacistDoplatkyLimitPojistenceSoapOut">
<wsdl:part name="NacistDoplatkyLimitPojistenceResult" element="tns:NacteniDoplatkyLimitPojistenceOdpoved" />
</wsdl:message>
<wsdl:message name="NacistSeznamDoplatkuPojistenceSoapIn">
<wsdl:part name="NacteniSeznamuDoplatkuPojistenceDotaz" element="tns:NacteniSeznamuDoplatkuPojistenceDotaz" />
</wsdl:message>
<wsdl:message name="NacistSeznamDoplatkuPojistenceSoapOut">
<wsdl:part name="NacistSeznamDoplatkuPojistenceResult" element="tns:NacteniSeznamuDoplatkuPojistenceOdpoved" />
</wsdl:message>
<wsdl:message name="GetAppInfoSoapIn">
<wsdl:part name="AppInfoDotaz" element="s0:AppInfoDotaz" />
</wsdl:message>
<wsdl:message name="GetAppInfoSoapOut">
<wsdl:part name="GetAppInfoResult" element="s0:AppInfoOdpoved" />
</wsdl:message>
<wsdl:portType name="CuerWebServiceSoap">
<wsdl:operation name="AppPing">
<wsdl:input message="tns:AppPingSoapIn" />
<wsdl:output message="tns:AppPingSoapOut" />
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input message="tns:AppPingZEPSoapIn" />
<wsdl:output message="tns:AppPingZEPSoapOut" />
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<wsdl:input message="tns:NacistDoplatkyLimitPojistenceSoapIn" />
<wsdl:output message="tns:NacistDoplatkyLimitPojistenceSoapOut" />
</wsdl:operation>
<wsdl:operation name="NacistSeznamDoplatkuPojistence">
<wsdl:input message="tns:NacistSeznamDoplatkuPojistenceSoapIn" />
<wsdl:output message="tns:NacistSeznamDoplatkuPojistenceSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input message="tns:GetAppInfoSoapIn" />
<wsdl:output message="tns:GetAppInfoSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CuerWebServiceSoap" type="tns:CuerWebServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<soap:operation soapAction="NacistDoplatkyLimitPojistence" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistSeznamDoplatkuPojistence">
<soap:operation soapAction="NacistSeznamDoplatkuPojistence" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CuerWebServiceSoap12" type="tns:CuerWebServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="AppPing">
<soap12:operation soapAction="AppPing" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap12:operation soapAction="AppPingZEP" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistDoplatkyLimitPojistence">
<soap12:operation soapAction="NacistDoplatkyLimitPojistence" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NacistSeznamDoplatkuPojistence">
<soap12:operation soapAction="NacistSeznamDoplatkuPojistence" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap12:operation soapAction="GetAppInfo" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CuerWebService">
<wsdl:port name="CuerWebServiceSoap" binding="tns:CuerWebServiceSoap">
<soap:address location="http://127.0.0.1:49646/Endpoints/CuerWebService.asmx" />
</wsdl:port>
<wsdl:port name="CuerWebServiceSoap12" binding="tns:CuerWebServiceSoap12">
<soap12:address location="http://127.0.0.1:49646/Endpoints/CuerWebService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
File diff suppressed because it is too large Load Diff
+206
View File
@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:sig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
<xsd:complexType name="SignatureType">
<xsd:sequence>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType" minOccurs="0"/>
<xsd:element name="Object" type="sig:ObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignedInfoType">
<xsd:sequence>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="CanonicalizationMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="ObjectType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="MimeType" type="xsd:string"/>
<xsd:attribute name="Encoding" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SPKIDataType">
<xsd:sequence>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="SPKISexp" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="X509DataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="X509IssuerSerial" type="sig:X509IssuerSerialType"/>
<xsd:element name="X509SubjectName" type="xsd:string"/>
<xsd:element name="X509Certificate" type="xsd:base64Binary"/>
<xsd:element name="X509SKI" type="xsd:base64Binary"/>
<xsd:element name="X509CRL" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PGPDataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="PGPKeyPacket" type="xsd:base64Binary"/>
<xsd:element name="PGPKeyID" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TransformType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="XPath" type="xsd:string"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="KeyValueType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:RSAKeyValue"/>
<xsd:element ref="sig:DSAKeyValue"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ManifestType">
<xsd:sequence>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="TransformsType">
<xsd:sequence>
<xsd:element name="Transform" type="sig:TransformType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KeyInfoType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:MgmtData"/>
<xsd:element ref="sig:KeyValue"/>
<xsd:element ref="sig:X509Data"/>
<xsd:element ref="sig:SPKIData"/>
<xsd:element ref="sig:PGPData"/>
<xsd:element ref="sig:RetrievalMethod"/>
<xsd:element ref="sig:KeyName"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="ReferenceType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="X509IssuerSerialType">
<xsd:sequence>
<xsd:element name="X509IssuerName" type="xsd:string"/>
<xsd:element name="X509SerialNumber" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RetrievalMethodType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SignatureValueType">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="SignatureMethodType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="HMACOutputLength" type="xsd:integer"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="DigestMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="RSAKeyValueType">
<xsd:sequence>
<xsd:element name="Modulus" type="xsd:base64Binary"/>
<xsd:element name="Exponent" type="xsd:base64Binary"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DSAKeyValueType">
<xsd:sequence>
<xsd:element name="P" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Q" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="G" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Y" type="xsd:base64Binary"/>
<xsd:element name="J" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Seed" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="PgenCounter" type="xsd:base64Binary" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SignaturePropertiesType">
<xsd:sequence>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignaturePropertyType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:element name="Signature" type="sig:SignatureType"/>
<xsd:element name="SPKIData" type="sig:SPKIDataType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyValue" type="sig:KeyValueType"/>
<xsd:element name="Transforms" type="sig:TransformsType"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="X509Data" type="sig:X509DataType"/>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType"/>
<xsd:element name="KeyName" type="xsd:string"/>
<xsd:element name="RSAKeyValue" type="sig:RSAKeyValueType"/>
<xsd:element name="MgmtData" type="xsd:string"/>
<xsd:element name="Object" type="sig:ObjectType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="SignatureProperties" type="sig:SignaturePropertiesType"/>
<xsd:element name="Transform" type="sig:TransformType"/>
<xsd:element name="PGPData" type="sig:PGPDataType"/>
<xsd:element name="Reference" type="sig:ReferenceType"/>
<xsd:element name="RetrievalMethod" type="sig:RetrievalMethodType"/>
<xsd:element name="DSAKeyValue" type="sig:DSAKeyValueType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="Manifest" type="sig:ManifestType"/>
</xsd:schema>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,526 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CUERLekar" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704B_update1--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="SeznamPredpisu">
<wsdl:part name="SeznamPredpisuDotaz" element="tns:SeznamPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisu">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuDotaz" element="tns:NacteniInformaceOZrusenemPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpis">
<wsdl:part name="NacteniPredpisuDotaz" element="tns:NacteniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamVydejuPredepisujicihoResponse">
<wsdl:part name="SeznamVydejuPredepisujicihoOdpoved" element="tns:SeznamVydejuPredepisujicihoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PrevzitVydejePredepisujiciho">
<wsdl:part name="PrevzetiVydejuPredepisujicihoDotaz" element="tns:PrevzetiVydejuPredepisujicihoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPredpisResponse">
<wsdl:part name="ZmenaPredpisuOdpoved" element="tns:ZmenaPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PrevzitVydejePredepisujicihoResponse">
<wsdl:part name="PrevzetiVydejuPredepisujicihoOdpoved" element="tns:PrevzetiVydejuPredepisujicihoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitPredpisResponse">
<wsdl:part name="ZalozeniPredpisuOdpoved" element="tns:ZalozeniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydej">
<wsdl:part name="NacteniVydejeDotaz" element="tns:NacteniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutVydejePredepisujiciho">
<wsdl:part name="StazeniVydejuPredepisujicihoDotaz" element="tns:StazeniVydejuPredepisujicihoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodku">
<wsdl:part name="StazeniPruvodkyDotaz" element="tns:StazeniPruvodkyDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydeji">
<wsdl:part name="NacteniInformaceOZrusenemVydejiDotaz" element="tns:NacteniInformaceOZrusenemVydejiDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiResponse">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOdpoved" element="tns:NacteniInformaceOZrusenemVydejiOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PripravitVydejePredepisujicihoResponse">
<wsdl:part name="PripravaVydejuPredepisujicihoOdpoved" element="tns:PripravaVydejuPredepisujicihoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitPredpis">
<wsdl:part name="ZruseniPredpisuDotaz" element="tns:ZruseniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejResponse">
<wsdl:part name="NacteniVydejeOdpoved" element="tns:NacteniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamPredpisuResponse">
<wsdl:part name="SeznamPredpisuOdpoved" element="tns:SeznamPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpisResponse">
<wsdl:part name="NacteniPredpisuOdpoved" element="tns:NacteniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisuResponse">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuOdpoved" element="tns:NacteniInformaceOZrusenemPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitPredpisResponse">
<wsdl:part name="ZruseniPredpisuOdpoved" element="tns:ZruseniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitPredpis">
<wsdl:part name="ZalozeniPredpisuDotaz" element="tns:ZalozeniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutVydejePredepisujicihoResponse">
<wsdl:part name="StazeniVydejuPredepisujicihoOdpoved" element="tns:StazeniVydejuPredepisujicihoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PripravitVydejePredepisujiciho">
<wsdl:part name="PripravaVydejuPredepisujicihoDotaz" element="tns:PripravaVydejuPredepisujicihoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamVydejuPredepisujiciho">
<wsdl:part name="SeznamVydejuPredepisujicihoDotaz" element="tns:SeznamVydejuPredepisujicihoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodkuResponse">
<wsdl:part name="StazeniPruvodkyOdpoved" element="tns:StazeniPruvodkyOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPredpis">
<wsdl:part name="ZmenaPredpisuDotaz" element="tns:ZmenaPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CUERLekar">
<wsdl:operation name="SeznamPredpisu">
<wsdl:input name="SeznamPredpisu" message="tns:SeznamPredpisu">
</wsdl:input>
<wsdl:output name="SeznamPredpisuResponse" message="tns:SeznamPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<wsdl:input name="NacistInformaceOZrusenemVydeji" message="tns:NacistInformaceOZrusenemVydeji">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse" message="tns:NacistInformaceOZrusenemVydejiResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<wsdl:input name="NacistInformaceOZrusenemPredpisu" message="tns:NacistInformaceOZrusenemPredpisu">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse" message="tns:NacistInformaceOZrusenemPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitPredpis">
<wsdl:input name="ZrusitPredpis" message="tns:ZrusitPredpis">
</wsdl:input>
<wsdl:output name="ZrusitPredpisResponse" message="tns:ZrusitPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<wsdl:input name="NacistPredpis" message="tns:NacistPredpis">
</wsdl:input>
<wsdl:output name="NacistPredpisResponse" message="tns:NacistPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PrevzitVydejePredepisujiciho">
<wsdl:input name="PrevzitVydejePredepisujiciho" message="tns:PrevzitVydejePredepisujiciho">
</wsdl:input>
<wsdl:output name="PrevzitVydejePredepisujicihoResponse" message="tns:PrevzitVydejePredepisujicihoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitPredpis">
<wsdl:input name="ZalozitPredpis" message="tns:ZalozitPredpis">
</wsdl:input>
<wsdl:output name="ZalozitPredpisResponse" message="tns:ZalozitPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PripravitVydejePredepisujiciho">
<wsdl:input name="PripravitVydejePredepisujiciho" message="tns:PripravitVydejePredepisujiciho">
</wsdl:input>
<wsdl:output name="PripravitVydejePredepisujicihoResponse" message="tns:PripravitVydejePredepisujicihoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SeznamVydejuPredepisujiciho">
<wsdl:input name="SeznamVydejuPredepisujiciho" message="tns:SeznamVydejuPredepisujiciho">
</wsdl:input>
<wsdl:output name="SeznamVydejuPredepisujicihoResponse" message="tns:SeznamVydejuPredepisujicihoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<wsdl:input name="NacistVydej" message="tns:NacistVydej">
</wsdl:input>
<wsdl:output name="NacistVydejResponse" message="tns:NacistVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutVydejePredepisujiciho">
<wsdl:input name="StahnoutVydejePredepisujiciho" message="tns:StahnoutVydejePredepisujiciho">
</wsdl:input>
<wsdl:output name="StahnoutVydejePredepisujicihoResponse" message="tns:StahnoutVydejePredepisujicihoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<wsdl:input name="StahnoutPruvodku" message="tns:StahnoutPruvodku">
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse" message="tns:StahnoutPruvodkuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPredpis">
<wsdl:input name="ZmenitPredpis" message="tns:ZmenitPredpis">
</wsdl:input>
<wsdl:output name="ZmenitPredpisResponse" message="tns:ZmenitPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERLekarSoapBinding" type="tns:CUERLekar">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="SeznamPredpisu">
<soap:operation soapAction="SeznamPredpisu" style="document"/>
<wsdl:input name="SeznamPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SeznamPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<soap:operation soapAction="NacistInformaceOZrusenemVydeji" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemVydeji">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<soap:operation soapAction="NacistInformaceOZrusenemPredpisu" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitPredpis">
<soap:operation soapAction="ZrusitPredpis" style="document"/>
<wsdl:input name="ZrusitPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZrusitPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<soap:operation soapAction="NacistPredpis" style="document"/>
<wsdl:input name="NacistPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PrevzitVydejePredepisujiciho">
<soap:operation soapAction="PrevzitVydejePredepisujiciho" style="document"/>
<wsdl:input name="PrevzitVydejePredepisujiciho">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PrevzitVydejePredepisujicihoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitPredpis">
<soap:operation soapAction="ZalozitPredpis" style="document"/>
<wsdl:input name="ZalozitPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZalozitPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PripravitVydejePredepisujiciho">
<soap:operation soapAction="PripravitVydejePredepisujiciho" style="document"/>
<wsdl:input name="PripravitVydejePredepisujiciho">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PripravitVydejePredepisujicihoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SeznamVydejuPredepisujiciho">
<soap:operation soapAction="SeznamVydejuPredepisujiciho" style="document"/>
<wsdl:input name="SeznamVydejuPredepisujiciho">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SeznamVydejuPredepisujicihoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<soap:operation soapAction="NacistVydej" style="document"/>
<wsdl:input name="NacistVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutVydejePredepisujiciho">
<soap:operation soapAction="StahnoutVydejePredepisujiciho" style="document"/>
<wsdl:input name="StahnoutVydejePredepisujiciho">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutVydejePredepisujicihoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<soap:operation soapAction="StahnoutPruvodku" style="document"/>
<wsdl:input name="StahnoutPruvodku">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPredpis">
<soap:operation soapAction="ZmenitPredpis" style="document"/>
<wsdl:input name="ZmenitPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERLekar">
<wsdl:port name="CUERLekar_Port" binding="tns:CUERLekarSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/CUERLekar"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,526 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CUERLekarnik" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704D--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisu">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuDotaz" element="tns:NacteniInformaceOZrusenemPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitVydej">
<wsdl:part name="ZruseniVydejeDotaz" element="tns:ZruseniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpis">
<wsdl:part name="NacteniPredpisuDotaz" element="tns:NacteniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitVydejResponse">
<wsdl:part name="ZruseniVydejeOdpoved" element="tns:ZruseniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydej">
<wsdl:part name="NacteniVydejeDotaz" element="tns:NacteniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPojistovnuPredpisuResponse">
<wsdl:part name="ZmenaPojistovnyPredpisuOdpoved" element="tns:ZmenaPojistovnyPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitVydejResponse">
<wsdl:part name="ZmenaVydejeOdpoved" element="tns:ZmenaVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodku">
<wsdl:part name="StazeniPruvodkyDotaz" element="tns:StazeniPruvodkyDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamPredpisuDleDokladu">
<wsdl:part name="SeznamPredpisuDleDokladuDotaz" element="tns:SeznamPredpisuDleDokladuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydeji">
<wsdl:part name="NacteniInformaceOZrusenemVydejiDotaz" element="tns:NacteniInformaceOZrusenemVydejiDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiResponse">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOdpoved" element="tns:NacteniInformaceOZrusenemVydejiOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitVydej">
<wsdl:part name="ZmenaVydejeDotaz" element="tns:ZmenaVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="DigitalizovatPredpisResponse">
<wsdl:part name="DigitalizacePredpisuOdpoved" element="tns:DigitalizacePredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitStavPredpisuResponse">
<wsdl:part name="ZmenaStavuPredpisuOdpoved" element="tns:ZmenaStavuPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="DeblokacePredpisuResponse">
<wsdl:part name="DeblokacePredpisuOdpoved" element="tns:DeblokacePredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejResponse">
<wsdl:part name="NacteniVydejeOdpoved" element="tns:NacteniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpisResponse">
<wsdl:part name="NacteniPredpisuOdpoved" element="tns:NacteniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="DeblokacePredpisu">
<wsdl:part name="DeblokacePredpisuDotaz" element="tns:DeblokacePredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="DigitalizovatPredpis">
<wsdl:part name="DigitalizacePredpisuDotaz" element="tns:DigitalizacePredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisuResponse">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuOdpoved" element="tns:NacteniInformaceOZrusenemPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitVydejResponse">
<wsdl:part name="ZalozeniVydejeOdpoved" element="tns:ZalozeniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitVydej">
<wsdl:part name="ZalozeniVydejeDotaz" element="tns:ZalozeniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitStavPredpisu">
<wsdl:part name="ZmenaStavuPredpisuDotaz" element="tns:ZmenaStavuPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPojistovnuPredpisu">
<wsdl:part name="ZmenaPojistovnyPredpisuDotaz" element="tns:ZmenaPojistovnyPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodkuResponse">
<wsdl:part name="StazeniPruvodkyOdpoved" element="tns:StazeniPruvodkyOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="SeznamPredpisuDleDokladuResponse">
<wsdl:part name="SeznamPredpisuDleDokladuOdpoved" element="tns:SeznamPredpisuDleDokladuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CUERLekarnik">
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<wsdl:input name="NacistInformaceOZrusenemVydeji" message="tns:NacistInformaceOZrusenemVydeji">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse" message="tns:NacistInformaceOZrusenemVydejiResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitVydej">
<wsdl:input name="ZmenitVydej" message="tns:ZmenitVydej">
</wsdl:input>
<wsdl:output name="ZmenitVydejResponse" message="tns:ZmenitVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<wsdl:input name="NacistInformaceOZrusenemPredpisu" message="tns:NacistInformaceOZrusenemPredpisu">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse" message="tns:NacistInformaceOZrusenemPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitVydej">
<wsdl:input name="ZrusitVydej" message="tns:ZrusitVydej">
</wsdl:input>
<wsdl:output name="ZrusitVydejResponse" message="tns:ZrusitVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<wsdl:input name="NacistPredpis" message="tns:NacistPredpis">
</wsdl:input>
<wsdl:output name="NacistPredpisResponse" message="tns:NacistPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="DeblokacePredpisu">
<wsdl:input name="DeblokacePredpisu" message="tns:DeblokacePredpisu">
</wsdl:input>
<wsdl:output name="DeblokacePredpisuResponse" message="tns:DeblokacePredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="DigitalizovatPredpis">
<wsdl:input name="DigitalizovatPredpis" message="tns:DigitalizovatPredpis">
</wsdl:input>
<wsdl:output name="DigitalizovatPredpisResponse" message="tns:DigitalizovatPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitVydej">
<wsdl:input name="ZalozitVydej" message="tns:ZalozitVydej">
</wsdl:input>
<wsdl:output name="ZalozitVydejResponse" message="tns:ZalozitVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitStavPredpisu">
<wsdl:input name="ZmenitStavPredpisu" message="tns:ZmenitStavPredpisu">
</wsdl:input>
<wsdl:output name="ZmenitStavPredpisuResponse" message="tns:ZmenitStavPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPojistovnuPredpisu">
<wsdl:input name="ZmenitPojistovnuPredpisu" message="tns:ZmenitPojistovnuPredpisu">
</wsdl:input>
<wsdl:output name="ZmenitPojistovnuPredpisuResponse" message="tns:ZmenitPojistovnuPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<wsdl:input name="NacistVydej" message="tns:NacistVydej">
</wsdl:input>
<wsdl:output name="NacistVydejResponse" message="tns:NacistVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<wsdl:input name="StahnoutPruvodku" message="tns:StahnoutPruvodku">
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse" message="tns:StahnoutPruvodkuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SeznamPredpisuDleDokladu">
<wsdl:input name="SeznamPredpisuDleDokladu" message="tns:SeznamPredpisuDleDokladu">
</wsdl:input>
<wsdl:output name="SeznamPredpisuDleDokladuResponse" message="tns:SeznamPredpisuDleDokladuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERLekarnikSoapBinding" type="tns:CUERLekarnik">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<soap:operation soapAction="NacistInformaceOZrusenemVydeji" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemVydeji">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitVydej">
<soap:operation soapAction="ZmenitVydej" style="document"/>
<wsdl:input name="ZmenitVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<soap:operation soapAction="NacistInformaceOZrusenemPredpisu" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitVydej">
<soap:operation soapAction="ZrusitVydej" style="document"/>
<wsdl:input name="ZrusitVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZrusitVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<soap:operation soapAction="NacistPredpis" style="document"/>
<wsdl:input name="NacistPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="DeblokacePredpisu">
<soap:operation soapAction="DeblokacePredpisu" style="document"/>
<wsdl:input name="DeblokacePredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="DeblokacePredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="DigitalizovatPredpis">
<soap:operation soapAction="DigitalizovatPredpis" style="document"/>
<wsdl:input name="DigitalizovatPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="DigitalizovatPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitVydej">
<soap:operation soapAction="ZalozitVydej" style="document"/>
<wsdl:input name="ZalozitVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZalozitVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitStavPredpisu">
<soap:operation soapAction="ZmenitStavPredpisu" style="document"/>
<wsdl:input name="ZmenitStavPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitStavPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPojistovnuPredpisu">
<soap:operation soapAction="ZmenitPojistovnuPredpisu" style="document"/>
<wsdl:input name="ZmenitPojistovnuPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitPojistovnuPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<soap:operation soapAction="NacistVydej" style="document"/>
<wsdl:input name="NacistVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<soap:operation soapAction="StahnoutPruvodku" style="document"/>
<wsdl:input name="StahnoutPruvodku">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SeznamPredpisuDleDokladu">
<soap:operation soapAction="SeznamPredpisuDleDokladu" style="document"/>
<wsdl:input name="SeznamPredpisuDleDokladu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SeznamPredpisuDleDokladuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERLekarnik">
<wsdl:port name="CUERLekarnik_Port" binding="tns:CUERLekarnikSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/CUERLekarnik"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,442 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CUERPracovnikZP" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704B_update1--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisu">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuDotaz" element="tns:NacteniInformaceOZrusenemPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpis">
<wsdl:part name="NacteniPredpisuDotaz" element="tns:NacteniPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PrevzitVydeje">
<wsdl:part name="PrevzetiVydejuDotaz" element="tns:PrevzetiVydejuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydej">
<wsdl:part name="NacteniVydejeDotaz" element="tns:NacteniVydejeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPojistovnuPredpisuResponse">
<wsdl:part name="ZmenaPojistovnyPredpisuOdpoved" element="tns:ZmenaPojistovnyPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PripravitVydeje">
<wsdl:part name="PripravaVydejuDotaz" element="tns:PripravaVydejuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodku">
<wsdl:part name="StazeniPruvodkyDotaz" element="tns:StazeniPruvodkyDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydeji">
<wsdl:part name="NacteniInformaceOZrusenemVydejiDotaz" element="tns:NacteniInformaceOZrusenemVydejiDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiResponse">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOdpoved" element="tns:NacteniInformaceOZrusenemVydejiOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitStavPredpisuResponse">
<wsdl:part name="ZmenaStavuPredpisuOdpoved" element="tns:ZmenaStavuPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejResponse">
<wsdl:part name="NacteniVydejeOdpoved" element="tns:NacteniVydejeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PripravitVydejeResponse">
<wsdl:part name="PripravaVydejuOdpoved" element="tns:PripravaVydejuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistPredpisResponse">
<wsdl:part name="NacteniPredpisuOdpoved" element="tns:NacteniPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemPredpisuResponse">
<wsdl:part name="NacteniInformaceOZrusenemPredpisuOdpoved" element="tns:NacteniInformaceOZrusenemPredpisuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitStavPredpisu">
<wsdl:part name="ZmenaStavuPredpisuDotaz" element="tns:ZmenaStavuPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutVydeje">
<wsdl:part name="StazeniVydejuDotaz" element="tns:StazeniVydejuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitPojistovnuPredpisu">
<wsdl:part name="ZmenaPojistovnyPredpisuDotaz" element="tns:ZmenaPojistovnyPredpisuDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutPruvodkuResponse">
<wsdl:part name="StazeniPruvodkyOdpoved" element="tns:StazeniPruvodkyOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="StahnoutVydejeResponse">
<wsdl:part name="StazeniVydejuOdpoved" element="tns:StazeniVydejuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="PrevzitVydejeResponse">
<wsdl:part name="PrevzetiVydejuOdpoved" element="tns:PrevzetiVydejuOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CUERPracovnikZP">
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<wsdl:input name="NacistInformaceOZrusenemVydeji" message="tns:NacistInformaceOZrusenemVydeji">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse" message="tns:NacistInformaceOZrusenemVydejiResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<wsdl:input name="NacistInformaceOZrusenemPredpisu" message="tns:NacistInformaceOZrusenemPredpisu">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse" message="tns:NacistInformaceOZrusenemPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<wsdl:input name="NacistPredpis" message="tns:NacistPredpis">
</wsdl:input>
<wsdl:output name="NacistPredpisResponse" message="tns:NacistPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PrevzitVydeje">
<wsdl:input name="PrevzitVydeje" message="tns:PrevzitVydeje">
</wsdl:input>
<wsdl:output name="PrevzitVydejeResponse" message="tns:PrevzitVydejeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitStavPredpisu">
<wsdl:input name="ZmenitStavPredpisu" message="tns:ZmenitStavPredpisu">
</wsdl:input>
<wsdl:output name="ZmenitStavPredpisuResponse" message="tns:ZmenitStavPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutVydeje">
<wsdl:input name="StahnoutVydeje" message="tns:StahnoutVydeje">
</wsdl:input>
<wsdl:output name="StahnoutVydejeResponse" message="tns:StahnoutVydejeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPojistovnuPredpisu">
<wsdl:input name="ZmenitPojistovnuPredpisu" message="tns:ZmenitPojistovnuPredpisu">
</wsdl:input>
<wsdl:output name="ZmenitPojistovnuPredpisuResponse" message="tns:ZmenitPojistovnuPredpisuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<wsdl:input name="NacistVydej" message="tns:NacistVydej">
</wsdl:input>
<wsdl:output name="NacistVydejResponse" message="tns:NacistVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PripravitVydeje">
<wsdl:input name="PripravitVydeje" message="tns:PripravitVydeje">
</wsdl:input>
<wsdl:output name="PripravitVydejeResponse" message="tns:PripravitVydejeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<wsdl:input name="StahnoutPruvodku" message="tns:StahnoutPruvodku">
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse" message="tns:StahnoutPruvodkuResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CUERPracovnikZPSoapBinding" type="tns:CUERPracovnikZP">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="NacistInformaceOZrusenemVydeji">
<soap:operation soapAction="NacistInformaceOZrusenemVydeji" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemVydeji">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemPredpisu">
<soap:operation soapAction="NacistInformaceOZrusenemPredpisu" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistPredpis">
<soap:operation soapAction="NacistPredpis" style="document"/>
<wsdl:input name="NacistPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PrevzitVydeje">
<soap:operation soapAction="PrevzitVydeje" style="document"/>
<wsdl:input name="PrevzitVydeje">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PrevzitVydejeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitStavPredpisu">
<soap:operation soapAction="ZmenitStavPredpisu" style="document"/>
<wsdl:input name="ZmenitStavPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitStavPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutVydeje">
<soap:operation soapAction="StahnoutVydeje" style="document"/>
<wsdl:input name="StahnoutVydeje">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutVydejeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitPojistovnuPredpisu">
<soap:operation soapAction="ZmenitPojistovnuPredpisu" style="document"/>
<wsdl:input name="ZmenitPojistovnuPredpisu">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitPojistovnuPredpisuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydej">
<soap:operation soapAction="NacistVydej" style="document"/>
<wsdl:input name="NacistVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="PripravitVydeje">
<soap:operation soapAction="PripravitVydeje" style="document"/>
<wsdl:input name="PripravitVydeje">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PripravitVydejeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="StahnoutPruvodku">
<soap:operation soapAction="StahnoutPruvodku" style="document"/>
<wsdl:input name="StahnoutPruvodku">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="StahnoutPruvodkuResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CUERPracovnikZP">
<wsdl:port name="CUERPracovnikZP_Port" binding="tns:CUERPracovnikZPSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/CUERPracovnikZP"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="RLPOLekar" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704B_update1--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="OveritPredpisResponse">
<wsdl:part name="OveritPredpisOdpoved" element="tns:OveritPredpisOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="OveritPredpis">
<wsdl:part name="OveritPredpisDotaz" element="tns:OveritPredpisDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="RLPOLekar">
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="OveritPredpis">
<wsdl:input name="OveritPredpis" message="tns:OveritPredpis">
</wsdl:input>
<wsdl:output name="OveritPredpisResponse" message="tns:OveritPredpisResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="RLPOLekarSoapBinding" type="tns:RLPOLekar">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="OveritPredpis">
<soap:operation soapAction="OveritPredpis" style="document"/>
<wsdl:input name="OveritPredpis">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="OveritPredpisResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="RLPOLekar">
<wsdl:port name="RLPOLekar_Port" binding="tns:RLPOLekarSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/RLPOLekar"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,330 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="RLPOLekarnik" targetNamespace="http://www.sukl.cz/erp/201704" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sukl.cz/erp/201704" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<!--version_201704B_update1--><wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.sukl.cz/erp/201704" schemaLocation="schema1.xsd"></import>
</schema>
</wsdl:types>
<wsdl:message name="NacistVerzeResponse">
<wsdl:part name="VerzeOdpoved" element="tns:VerzeOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfo">
<wsdl:part name="AppInfoDotaz" element="tns:AppInfoDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingResponse">
<wsdl:part name="AppPingOdpoved" element="tns:AppPingOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ChybaResponse">
<wsdl:part name="ChybaOdpoved" element="tns:Chyba">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejOTCResponse">
<wsdl:part name="NacteniVydejeOTCOdpoved" element="tns:NacteniVydejeOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChyb">
<wsdl:part name="CisChybDotaz" element="tns:CisChybDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiOTCResponse">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOTCOdpoved" element="tns:NacteniInformaceOZrusenemVydejiOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitVydejOTCResponse">
<wsdl:part name="ZalozeniVydejeOTCOdpoved" element="tns:ZalozeniVydejeOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistCiselnikChybResponse">
<wsdl:part name="CisChybOdpoved" element="tns:CisChybOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitVydejOTCResponse">
<wsdl:part name="ZruseniVydejeOTCOdpoved" element="tns:ZruseniVydejeOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPing">
<wsdl:part name="AppPingDotaz" element="tns:AppPingDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEPResponse">
<wsdl:part name="AppPingZEPOdpoved" element="tns:AppPingZEPOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="OveritVydejResponse">
<wsdl:part name="OveritVydejOdpoved" element="tns:OveritVydejOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVerze">
<wsdl:part name="VerzeDotaz" element="tns:VerzeDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetAppInfoResponse">
<wsdl:part name="AppInfoOdpoved" element="tns:AppInfoOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitVydejOTC">
<wsdl:part name="ZmenaVydejeOTCDotaz" element="tns:ZmenaVydejeOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="AppPingZEP">
<wsdl:part name="AppPingZEPDotaz" element="tns:AppPingZEPDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZrusitVydejOTC">
<wsdl:part name="ZruseniVydejeOTCDotaz" element="tns:ZruseniVydejeOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZalozitVydejOTC">
<wsdl:part name="ZalozeniVydejeOTCDotaz" element="tns:ZalozeniVydejeOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistVydejOTC">
<wsdl:part name="NacteniVydejeOTCDotaz" element="tns:NacteniVydejeOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="OveritVydej">
<wsdl:part name="OveritVydejDotaz" element="tns:OveritVydejDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:message name="ZmenitVydejOTCResponse">
<wsdl:part name="ZmenaVydejeOTCOdpoved" element="tns:ZmenaVydejeOTCOdpoved">
</wsdl:part>
</wsdl:message>
<wsdl:message name="NacistInformaceOZrusenemVydejiOTC">
<wsdl:part name="NacteniInformaceOZrusenemVydejiOTCDotaz" element="tns:NacteniInformaceOZrusenemVydejiOTCDotaz">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="RLPOLekarnik">
<wsdl:operation name="GetAppInfo">
<wsdl:input name="GetAppInfo" message="tns:GetAppInfo">
</wsdl:input>
<wsdl:output name="GetAppInfoResponse" message="tns:GetAppInfoResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<wsdl:input name="NacistCiselnikChyb" message="tns:NacistCiselnikChyb">
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse" message="tns:NacistCiselnikChybResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<wsdl:input name="NacistVerze" message="tns:NacistVerze">
</wsdl:input>
<wsdl:output name="NacistVerzeResponse" message="tns:NacistVerzeResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitVydejOTC">
<wsdl:input name="ZmenitVydejOTC" message="tns:ZmenitVydejOTC">
</wsdl:input>
<wsdl:output name="ZmenitVydejOTCResponse" message="tns:ZmenitVydejOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<wsdl:input name="AppPingZEP" message="tns:AppPingZEP">
</wsdl:input>
<wsdl:output name="AppPingZEPResponse" message="tns:AppPingZEPResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitVydejOTC">
<wsdl:input name="ZrusitVydejOTC" message="tns:ZrusitVydejOTC">
</wsdl:input>
<wsdl:output name="ZrusitVydejOTCResponse" message="tns:ZrusitVydejOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitVydejOTC">
<wsdl:input name="ZalozitVydejOTC" message="tns:ZalozitVydejOTC">
</wsdl:input>
<wsdl:output name="ZalozitVydejOTCResponse" message="tns:ZalozitVydejOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<wsdl:input name="AppPing" message="tns:AppPing">
</wsdl:input>
<wsdl:output name="AppPingResponse" message="tns:AppPingResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydejOTC">
<wsdl:input name="NacistVydejOTC" message="tns:NacistVydejOTC">
</wsdl:input>
<wsdl:output name="NacistVydejOTCResponse" message="tns:NacistVydejOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="OveritVydej">
<wsdl:input name="OveritVydej" message="tns:OveritVydej">
</wsdl:input>
<wsdl:output name="OveritVydejResponse" message="tns:OveritVydejResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemVydejiOTC">
<wsdl:input name="NacistInformaceOZrusenemVydejiOTC" message="tns:NacistInformaceOZrusenemVydejiOTC">
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiOTCResponse" message="tns:NacistInformaceOZrusenemVydejiOTCResponse">
</wsdl:output>
<wsdl:fault name="ChybaResponse" message="tns:ChybaResponse">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="RLPOLekarnikSoapBinding" type="tns:RLPOLekarnik">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetAppInfo">
<soap:operation soapAction="GetAppInfo" style="document"/>
<wsdl:input name="GetAppInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetAppInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistCiselnikChyb">
<soap:operation soapAction="NacistCiselnikChyb" style="document"/>
<wsdl:input name="NacistCiselnikChyb">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistCiselnikChybResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVerze">
<soap:operation soapAction="NacistVerze" style="document"/>
<wsdl:input name="NacistVerze">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVerzeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZmenitVydejOTC">
<soap:operation soapAction="ZmenitVydejOTC" style="document"/>
<wsdl:input name="ZmenitVydejOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZmenitVydejOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPingZEP">
<soap:operation soapAction="AppPingZEP" style="document"/>
<wsdl:input name="AppPingZEP">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingZEPResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZrusitVydejOTC">
<soap:operation soapAction="ZrusitVydejOTC" style="document"/>
<wsdl:input name="ZrusitVydejOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZrusitVydejOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ZalozitVydejOTC">
<soap:operation soapAction="ZalozitVydejOTC" style="document"/>
<wsdl:input name="ZalozitVydejOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ZalozitVydejOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="AppPing">
<soap:operation soapAction="AppPing" style="document"/>
<wsdl:input name="AppPing">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AppPingResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistVydejOTC">
<soap:operation soapAction="NacistVydejOTC" style="document"/>
<wsdl:input name="NacistVydejOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistVydejOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="OveritVydej">
<soap:operation soapAction="OveritVydej" style="document"/>
<wsdl:input name="OveritVydej">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="OveritVydejResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="NacistInformaceOZrusenemVydejiOTC">
<soap:operation soapAction="NacistInformaceOZrusenemVydejiOTC" style="document"/>
<wsdl:input name="NacistInformaceOZrusenemVydejiOTC">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="NacistInformaceOZrusenemVydejiOTCResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ChybaResponse">
<soap:fault name="ChybaResponse" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="RLPOLekarnik">
<wsdl:port name="RLPOLekarnik_Port" binding="tns:RLPOLekarnikSoapBinding">
<soap:address location="http://backing-erp-as:8080/cuer/RLPOLekarnik"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:erp="http://www.sukl.cz/erp/201704" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:sig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
<xsd:complexType name="SignatureType">
<xsd:sequence>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType" minOccurs="0"/>
<xsd:element name="Object" type="sig:ObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignedInfoType">
<xsd:sequence>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="CanonicalizationMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="ObjectType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="MimeType" type="xsd:string"/>
<xsd:attribute name="Encoding" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SPKIDataType">
<xsd:sequence>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="SPKISexp" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="X509DataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="X509IssuerSerial" type="sig:X509IssuerSerialType"/>
<xsd:element name="X509SubjectName" type="xsd:string"/>
<xsd:element name="X509Certificate" type="xsd:base64Binary"/>
<xsd:element name="X509SKI" type="xsd:base64Binary"/>
<xsd:element name="X509CRL" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PGPDataType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="PGPKeyPacket" type="xsd:base64Binary"/>
<xsd:element name="PGPKeyID" type="xsd:base64Binary"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TransformType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="XPath" type="xsd:string"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="KeyValueType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:RSAKeyValue"/>
<xsd:element ref="sig:DSAKeyValue"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ManifestType">
<xsd:sequence>
<xsd:element name="Reference" type="sig:ReferenceType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="TransformsType">
<xsd:sequence>
<xsd:element name="Transform" type="sig:TransformType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KeyInfoType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="sig:MgmtData"/>
<xsd:element ref="sig:KeyValue"/>
<xsd:element ref="sig:X509Data"/>
<xsd:element ref="sig:SPKIData"/>
<xsd:element ref="sig:PGPData"/>
<xsd:element ref="sig:RetrievalMethod"/>
<xsd:element ref="sig:KeyName"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="ReferenceType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="X509IssuerSerialType">
<xsd:sequence>
<xsd:element name="X509IssuerName" type="xsd:string"/>
<xsd:element name="X509SerialNumber" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RetrievalMethodType">
<xsd:sequence>
<xsd:element name="Transforms" type="sig:TransformsType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="URI" type="xsd:anyURI"/>
<xsd:attribute name="Type" type="xsd:anyURI"/>
</xsd:complexType>
<xsd:complexType name="SignatureValueType">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="SignatureMethodType" mixed="true">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="HMACOutputLength" type="xsd:integer"/>
<xsd:any processContents="lax" namespace="##other"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="DigestMethodType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:complexType name="RSAKeyValueType">
<xsd:sequence>
<xsd:element name="Modulus" type="xsd:base64Binary"/>
<xsd:element name="Exponent" type="xsd:base64Binary"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DSAKeyValueType">
<xsd:sequence>
<xsd:element name="P" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Q" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="G" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Y" type="xsd:base64Binary"/>
<xsd:element name="J" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="Seed" type="xsd:base64Binary" minOccurs="0"/>
<xsd:element name="PgenCounter" type="xsd:base64Binary" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SignaturePropertiesType">
<xsd:sequence>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:complexType name="SignaturePropertyType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Id" type="xsd:ID"/>
</xsd:complexType>
<xsd:element name="Signature" type="sig:SignatureType"/>
<xsd:element name="SPKIData" type="sig:SPKIDataType"/>
<xsd:element name="KeyInfo" type="sig:KeyInfoType"/>
<xsd:element name="SignatureValue" type="sig:SignatureValueType"/>
<xsd:element name="KeyValue" type="sig:KeyValueType"/>
<xsd:element name="Transforms" type="sig:TransformsType"/>
<xsd:element name="DigestMethod" type="sig:DigestMethodType"/>
<xsd:element name="X509Data" type="sig:X509DataType"/>
<xsd:element name="SignatureProperty" type="sig:SignaturePropertyType"/>
<xsd:element name="KeyName" type="xsd:string"/>
<xsd:element name="RSAKeyValue" type="sig:RSAKeyValueType"/>
<xsd:element name="MgmtData" type="xsd:string"/>
<xsd:element name="Object" type="sig:ObjectType"/>
<xsd:element name="SignatureMethod" type="sig:SignatureMethodType"/>
<xsd:element name="SignatureProperties" type="sig:SignaturePropertiesType"/>
<xsd:element name="Transform" type="sig:TransformType"/>
<xsd:element name="PGPData" type="sig:PGPDataType"/>
<xsd:element name="Reference" type="sig:ReferenceType"/>
<xsd:element name="RetrievalMethod" type="sig:RetrievalMethodType"/>
<xsd:element name="DSAKeyValue" type="sig:DSAKeyValueType"/>
<xsd:element name="DigestValue" type="xsd:base64Binary"/>
<xsd:element name="CanonicalizationMethod" type="sig:CanonicalizationMethodType"/>
<xsd:element name="SignedInfo" type="sig:SignedInfoType"/>
<xsd:element name="Manifest" type="sig:ManifestType"/>
</xsd:schema>
Binary file not shown.
Binary file not shown.
+256
View File
@@ -0,0 +1,256 @@
# Dotazy — přehled lékového záznamu pacienta
Skripty pro zobrazení a export lékového záznamu konkrétního pacienta z MySQL databáze `medicus`.
Pacient se identifikuje **rodným číslem** — to se vyhledá v lokální Firebird databázi Medicusu,
odkud se získá příjmení a datum narození, a teprve těmito dvěma hodnotami se najde pacient v MySQL.
---
## Soubory
| Soubor | Co dělá |
|--------|---------|
| `prehled_pacienta.py` | Konzolový výpis — lékaři + předpisy pacienta |
| `prehled_pacienta_excel.py` | Export do formátovaného souboru Excel (.xlsx) |
---
## Nastavení (obě skripty)
Na začátku každého souboru jsou tři proměnné:
```python
RODNE_CISLO = "440802/018" # rodné číslo — funguje s lomítkem i bez: "4408020183"
DATUM_OD = "01.01.2025" # předpisy od tohoto data; None = všechny předpisy
VYSTUP_DIR = None # pouze excel: složka výstupu; None = stejná jako skript
```
---
## Spuštění
```bash
# Konzolový výpis
.venv\Scripts\python.exe Dotazy\prehled_pacienta.py
# Export do Excelu
.venv\Scripts\python.exe Dotazy\prehled_pacienta_excel.py
```
---
## Zdroje dat
### 1. Firebird — Medicus (`medicus.fdb`)
Slouží výhradně k identifikaci pacienta podle rodného čísla.
```
DSN: localhost:c:\medicus 3\data\medicus.fdb
User: SYSDBA / masterkey
Charset: win1250
Tabulka: KAR
```
Dotaz:
```sql
SELECT KAR.PRIJMENI, KAR.JMENO, KAR.DATNAR
FROM KAR WHERE KAR.RODCIS = ?
```
Rodné číslo se normalizuje před dotazem — odstraní se lomítko a mezery:
```python
rc = rc.replace("/", "").replace(" ", "").strip()
```
### 2. MySQL — databáze `medicus`
Obsahuje lékové záznamy stažené z eReceptu SÚKL.
```
Host: 192.168.1.76
User: root
DB: medicus
```
Pacient se vyhledá podle příjmení a data narození (získaných z Firebirdu):
```sql
SELECT id, prijmeni, jmena, datum_narozeni
FROM pacient
WHERE prijmeni = %s AND datum_narozeni = %s
```
---
## Co se zobrazuje
### Část 1 — Předepisující lékaři
Všichni lékaři, kteří pacientovi za celou dobu předepsali alespoň jeden lék,
seřazeni sestupně podle počtu předpisů.
Sloupce: `#` | `Lékař` | `Odbornost` | `Pracoviště a adresa` | `Předpisů`
```sql
SELECT pr.prijmeni, pr.jmena,
pr.icp,
CONCAT(pr.pzs_nazev, ', ', pr.ulice, ', ', pr.psc, ' ', pr.mesto) AS adresa,
COUNT(*) AS pocet_predpisu
FROM zprava z
JOIN predpis p ON p.zprava_id = z.id
JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho
WHERE z.pacient_id = %s
GROUP BY pr.lekar_kod, pr.prijmeni, pr.jmena, pr.icp,
pr.pzs_nazev, pr.ulice, pr.psc, pr.mesto
ORDER BY pocet_predpisu DESC
```
### Část 2 — Všechny předpisy
Předpisy od `DATUM_OD`, seřazené sestupně dle data vystavení.
Zobrazuje se **vydaný lék** (z tabulky `vydej`), nikoli předepsaný název.
Pokud lék nebyl vyzvednut, zobrazí se předepsaný název s příznakem `*NV`.
Sloupce: `#` | `Datum` | `Vydaný lék` | `ATC` | `Návod` | `Lékař` | `Odbornost` | `Adresa`
```sql
SELECT p.datum_vystaveni,
COALESCE(v.nazev, p.nazev) AS vydany_lek,
v.nazev IS NULL AS nevyzvednuto,
p.atc,
p.navod,
pr.prijmeni,
pr.jmena,
pr.icp,
CONCAT(pr.pzs_nazev, ', ', pr.ulice, ', ', pr.psc, ' ', pr.mesto) AS adresa
FROM zprava z
JOIN predpis p ON p.zprava_id = z.id
JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho
LEFT JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
WHERE z.pacient_id = %s
AND p.datum_vystaveni >= %s -- pouze pokud DATUM_OD není None
ORDER BY p.datum_vystaveni DESC
```
Klíčový princip `COALESCE(v.nazev, p.nazev)`:
- `v.nazev` — název léku, který lékárna **skutečně vydala** (může být jiná značka než předepsaná)
- `p.nazev` — název léku, který lékař **předepsal** (zobrazí se jen pokud výdej neexistuje → `*NV`)
---
## Odbornost lékaře
Odbornost se odvozuje z posledních 3 číslic pole `predepisujici.icp` (IČP pracoviště).
```
ICP: 09305001 → kód odbornosti: 001 → všeobecné praktické lékařství
ICP: 08006272 → kód odbornosti: 272 → alergologie
ICP: 08075603 → kód odbornosti: 603 → onkologie
```
Funkce:
```python
def odbornost_z_icp(icp):
if not icp or len(icp) < 3:
return ""
return ODBORNOST.get(icp[-3:], f"odb. {icp[-3:]}")
```
Pro neznámé kódy se zobrazí `odb. XXX` (XXX = třímístný kód).
### Zdroj dat — tabulky `vzp_pracoviste` + `odbornost` (MySQL)
Slovník `ODBORNOST` se **načítá dynamicky při startu skriptu** z MySQL:
```python
def _nacti_odbornosti():
conn = pymysql.connect(**DB)
try:
with conn.cursor(pymysql.cursors.Cursor) as cur:
cur.execute("""
SELECT vp.icp, o.nazev
FROM vzp_pracoviste vp
JOIN odbornost o ON o.kod = vp.odbornost
WHERE CURDATE() BETWEEN vp.platnost_od AND vp.platnost_do
ORDER BY vp.platnost_od DESC
""")
result = {}
for icp, nazev in cur.fetchall():
result.setdefault(icp, nazev)
return result
finally:
conn.close()
ODBORNOST = _nacti_odbornosti()
```
- `vzp_pracoviste` — oficiální číselník VZP (stahován týdně z VZP Point přes `import_vzp_pracoviste.py`), obsahuje ~52 000 záznamů s přímou vazbou ICP → kód odbornosti
- `odbornost` — číselník názvů odborností importovaný z Firebird tabulky `odborn` (360 aktuálně platných kódů)
- Vyhledávání probíhá podle **plného 8-znakového ICP** — spolehlivé i pro pracoviště, která změnila odbornost
- Slovník obsahuje ~43 000 aktuálně platných ICP kódů
---
## Excel export (`prehled_pacienta_excel.py`)
Soubor se ukládá do stejné složky jako skript (nebo do `VYSTUP_DIR`).
### Pojmenování souborů
```
LZ_{Prijmeni}_{Jmeno}_{datum_narozeni}.xlsx ← základní
LZ_{Prijmeni}_{Jmeno}_{datum_narozeni}_v2.xlsx ← pokud základní existuje
LZ_{Prijmeni}_{Jmeno}_{datum_narozeni}_v3.xlsx ← atd.
```
Versioning zabrání přepsání dříve exportovaných souborů.
### Vzhled a formátování
| Prvek | Barva | Popis |
|-------|-------|-------|
| Záhlaví (jméno pacienta) | `#1F4E79` tmavě modrá | tučné, 14pt |
| Záhlaví tabulky | `#1F4E79` tmavě modrá | bílý text, 10pt |
| Nadpis sekce | `#2E75B6` střední modrá | bílý text, 11pt |
| Info o pacientovi | `#DEEAF1` světle modrá | datum narozeni, datum tisku, předpisy od |
| Sudé řádky | `#EBF3FB` velmi světle modrá | střídání řádků |
| Liché řádky | `#FFFFFF` bílá | |
| Nevyzvednuto | `#FCE4D6` lososová | zvýraznění celého řádku |
| Ohraničení | `#B8CCE4` světle modrá | tenká linka |
- Font: **Arial** ve všech buňkách
- Automatická šířka sloupců a výška řádků (`autofit`)
- Zmrazení prvního řádku (`freeze_panes = "A2"`)
- 8 sloupců: `#` | `Lékař/Datum` | `Odbornost/Vydaný lék` | `Pracoviště/ATC` | … | `Předpisů/Pracoviště a adresa`
### Tabulka lékařů (8 sloupců)
`#` | `Lékař` | `Odbornost` | `Pracoviště` | `Ulice` | `PSČ` | `Město` | `Předpisů`
### Tabulka předpisů (8 sloupců)
`#` | `Datum` | `Vydaný lék` | `ATC` | `Návod` | `Lékař` | `Odbornost` | `Pracoviště a adresa`
---
## Závislosti
```
pymysql ← MySQL klient
fdb ← Firebird klient
openpyxl ← Excel export (pouze prehled_pacienta_excel.py)
```
Všechny jsou součástí `requirements.txt` a nainstalují se přes `setup.ps1`.
---
## Typické chybové situace
| Chyba | Příčina | Řešení |
|-------|---------|--------|
| `Rodne cislo nenalezeno v Medicusu` | RC není v tabulce KAR | Zkontrolovat číslo, ověřit v Medicusu |
| `Pacient nema zaznam v MySQL` | Lékový záznam nebyl stažen | Spustit `07StahnoutVsechny.py` nebo `reimport_z_xml.py` |
| `PermissionError` při ukládání xlsx | Soubor je otevřen v Excelu | Zavřít Excel a spustit znovu — verzování uloží jako `_v2` |
| Odbornost zobrazena jako `odb. XXX` | Kód není ve slovníku | Informativní stav — kód je platný, jen není pojmenován |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+222
View File
@@ -0,0 +1,222 @@
"""
Prehled lekoveho zaznamu pacienta z MySQL.
Zobrazuje:
1. Lekare, kteri pacientovi predepsali leky (sestupne podle poctu predpisu)
2. Vsechny predpisy od zadaneho data — s nazvem VYDANEHO leku (ne predepsaneho)
Nastaveni:
RODNE_CISLO ... rodne cislo pacienta (cifry, bez lomitka)
DATUM_OD ... predpisy od tohoto data ve formatu DD.MM.RRRR (None = vsechny)
"""
from datetime import date, datetime
import sys
import fdb
import pymysql
import pymysql.cursors
def odbornost_z_icp(icp):
"""Vrati nazev odbornosti podle ICP (plny 8-znakovy kod) z tabulky vzp_pracoviste."""
if not icp:
return ""
return ODBORNOST.get(icp, f"odb. {icp[-3:]}")
# ── NASTAVENÍ ─────────────────────────────────────────────────────────────────
RODNE_CISLO = "440802/018" # funguje s lomitkem i bez: 7309208104 nebo 730920/8104
DATUM_OD = "01.01.2025" # None = vsechny predpisy
# ─────────────────────────────────────────────────────────────────────────────
FB = dict(
dsn = r"localhost:c:\medicus 3\data\medicus.fdb",
user = "SYSDBA",
password= "masterkey",
charset = "win1250",
)
DB = dict(
host = "192.168.1.76",
user = "root",
password = "Vlado9674+",
database = "medicus",
charset = "utf8mb4",
cursorclass = pymysql.cursors.DictCursor,
)
def _nacti_odbornosti():
"""Nacteni odbornosti z MySQL: vzp_pracoviste JOIN odbornost (aktualne platne ICP)."""
conn = pymysql.connect(**DB)
try:
with conn.cursor(pymysql.cursors.Cursor) as cur:
cur.execute("""
SELECT vp.icp, o.nazev
FROM vzp_pracoviste vp
JOIN odbornost o ON o.kod = vp.odbornost
WHERE CURDATE() BETWEEN vp.platnost_od AND vp.platnost_do
ORDER BY vp.platnost_od DESC
""")
result = {}
for icp, nazev in cur.fetchall():
result.setdefault(icp, nazev)
return result
finally:
conn.close()
ODBORNOST = _nacti_odbornosti()
SEP = "-" * 110
SEP2 = "-" * 165
def parse_datum(s, nazev):
try:
return datetime.strptime(s, "%d.%m.%Y").date()
except (ValueError, TypeError):
sys.exit(f"Nespravny format data '{nazev}': '{s}'. Pouzijte DD.MM.RRRR.")
def normalizuj_rc(rc):
"""Odstrani lomitko a mezery z rodneho cisla."""
return rc.replace("/", "").replace(" ", "").strip()
def najdi_v_firebirdu(rodne_cislo):
"""Vrati prijmeni, jmeno a datum narozeni z Medicusu podle rodneho cisla."""
rc = normalizuj_rc(rodne_cislo)
conn = fdb.connect(**FB)
try:
cur = conn.cursor()
cur.execute(
"SELECT KAR.PRIJMENI, KAR.JMENO, KAR.DATNAR "
"FROM KAR WHERE KAR.RODCIS = ?",
(rc,)
)
row = cur.fetchone()
if not row:
sys.exit(f"Rodne cislo '{rodne_cislo}' nenalezeno v Medicusu.")
return {"prijmeni": row[0].strip(), "jmeno": row[1].strip(), "datnar": row[2]}
finally:
conn.close()
def najdi_pacienty(cur, prijmeni, datum_narozeni):
cur.execute(
"SELECT id, prijmeni, jmena, datum_narozeni "
"FROM pacient WHERE prijmeni = %s AND datum_narozeni = %s",
(prijmeni, datum_narozeni),
)
return cur.fetchall()
def tiskni_lekare(cur, pacient_id, prijmeni, jmena, datum_narozeni):
cur.execute(
"""
SELECT pr.prijmeni, pr.jmena,
pr.icp,
CONCAT(pr.pzs_nazev, ', ', pr.ulice, ', ', pr.psc, ' ', pr.mesto) AS adresa,
COUNT(*) AS pocet_predpisu
FROM zprava z
JOIN predpis p ON p.zprava_id = z.id
JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho
WHERE z.pacient_id = %s
GROUP BY pr.lekar_kod, pr.prijmeni, pr.jmena, pr.icp, pr.pzs_nazev, pr.ulice, pr.psc, pr.mesto
ORDER BY pocet_predpisu DESC
""",
(pacient_id,),
)
rows = cur.fetchall()
print(f"\n{SEP}")
print(f" PACIENT: {prijmeni} {jmena} | nar. {datum_narozeni.strftime('%d.%m.%Y')}")
print(SEP)
print(f"\nPREDEPISUJICI LEKARI:")
print(f"{'#':<4} {'Lekar':<30} {'Odbornost':<25} {'Pracoviste a adresa':<50} {'Predpisu':>8}")
print(SEP)
for i, r in enumerate(rows, 1):
lekar = f"{r['prijmeni']} {r['jmena']}"
odb = odbornost_z_icp(r['icp'])
print(f"{i:<4} {lekar:<30} {odb:<25} {r['adresa']:<50} {r['pocet_predpisu']:>8}")
if not rows:
print(" Zadne predpisy nenalezeny.")
def tiskni_predpisy(cur, pacient_id, datum_od):
podminka = "AND p.datum_vystaveni >= %s" if datum_od else ""
params = (pacient_id, datum_od) if datum_od else (pacient_id,)
cur.execute(
f"""
SELECT p.datum_vystaveni,
COALESCE(v.nazev, p.nazev) AS vydany_lek,
v.nazev IS NULL AS nevyzvednuto,
p.atc,
p.navod,
pr.prijmeni,
pr.jmena,
pr.icp,
CONCAT(pr.pzs_nazev, ', ', pr.ulice, ', ', pr.psc, ' ', pr.mesto) AS adresa
FROM zprava z
JOIN predpis p ON p.zprava_id = z.id
JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho
LEFT JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
WHERE z.pacient_id = %s
{podminka}
ORDER BY p.datum_vystaveni DESC
""",
params,
)
rows = cur.fetchall()
od_text = f"od {datum_od.strftime('%d.%m.%Y')}" if datum_od else "vse"
print(f"\nVSECHNY PREDPISY ({od_text}) — celkem {len(rows)}:")
print(f"{'#':<4} {'Datum':<12} {'Vydany lek':<30} {'ATC':<8} {'Navod':<20} {'Lekar':<25} {'Odbornost':<22} Adresa")
print(SEP2)
for i, r in enumerate(rows, 1):
datum = r["datum_vystaveni"].strftime("%d.%m.%Y")
lekar = f"{r['prijmeni']} {r['jmena']}"
lek = (r["vydany_lek"] or "")[:28]
if r["nevyzvednuto"]:
lek = f"{lek} *NV"
navod = (r["navod"] or "")[:19]
atc = (r["atc"] or "")
odb = odbornost_z_icp(r["icp"])[:21]
print(f"{i:<4} {datum:<12} {lek:<30} {atc:<8} {navod:<20} {lekar:<25} {odb:<22} {r['adresa']}")
if not rows:
print(" Zadne predpisy nenalezeny.")
print()
def main():
datum_od = parse_datum(DATUM_OD, "DATUM_OD") if DATUM_OD else None
# 1. Najdi pacienta v Medicusu (Firebird) podle rodneho cisla
fb_pac = najdi_v_firebirdu(RODNE_CISLO)
prijmeni = fb_pac["prijmeni"]
datum_narozeni = fb_pac["datnar"]
print(f"\nFirebird: nalezen {prijmeni} {fb_pac['jmeno']} nar. {datum_narozeni}")
# 2. Dotaz do MySQL
conn = pymysql.connect(**DB)
try:
with conn.cursor() as cur:
pacienti = najdi_pacienty(cur, prijmeni, datum_narozeni)
if not pacienti:
print(f"Pacient '{prijmeni}' nar. {datum_narozeni} nema zaznam v MySQL (lekovy zaznam nebyl stazeny).")
return
for pac in pacienti:
tiskni_lekare(cur, pac["id"], pac["prijmeni"], pac["jmena"], pac["datum_narozeni"])
tiskni_predpisy(cur, pac["id"], datum_od)
finally:
conn.close()
if __name__ == "__main__":
main()
+354
View File
@@ -0,0 +1,354 @@
"""
Export prehledu lekoveho zaznamu pacienta do Excelu.
Nastaveni:
RODNE_CISLO ... rodne cislo pacienta (s lomitkem i bez)
DATUM_OD ... predpisy od tohoto data ve formatu DD.MM.RRRR (None = vsechny)
VYSTUP_DIR ... slozka kam se ulozi Excel (None = stejna slozka jako skript)
"""
from datetime import datetime
from pathlib import Path
import sys
import fdb
import pymysql
import pymysql.cursors
from openpyxl import Workbook
from openpyxl.styles import (Font, PatternFill, Alignment, Border, Side,
GradientFill)
from openpyxl.utils import get_column_letter
def odbornost_z_icp(icp):
"""Vrati nazev odbornosti podle ICP (plny 8-znakovy kod) z tabulky vzp_pracoviste."""
if not icp:
return ""
return ODBORNOST.get(icp, f"odb. {icp[-3:]}")
# ── NASTAVENÍ ─────────────────────────────────────────────────────────────────
RODNE_CISLO = "370315041"
DATUM_OD = "01.01.2025" # None = vsechny predpisy
VYSTUP_DIR = None # None = stejny adresar jako skript
# ─────────────────────────────────────────────────────────────────────────────
FB = dict(
dsn = r"localhost:c:\medicus 3\data\medicus.fdb",
user = "SYSDBA",
password = "masterkey",
charset = "win1250",
)
DB = dict(
host = "192.168.1.76",
user = "root",
password = "Vlado9674+",
database = "medicus",
charset = "utf8mb4",
cursorclass = pymysql.cursors.DictCursor,
)
def _nacti_odbornosti():
"""Nacteni odbornosti z MySQL: vzp_pracoviste JOIN odbornost (aktualne platne ICP)."""
conn = pymysql.connect(**DB)
try:
with conn.cursor(pymysql.cursors.Cursor) as cur:
cur.execute("""
SELECT vp.icp, o.nazev
FROM vzp_pracoviste vp
JOIN odbornost o ON o.kod = vp.odbornost
WHERE CURDATE() BETWEEN vp.platnost_od AND vp.platnost_do
ORDER BY vp.platnost_od DESC
""")
result = {}
for icp, nazev in cur.fetchall():
result.setdefault(icp, nazev)
return result
finally:
conn.close()
ODBORNOST = _nacti_odbornosti()
# ── Barvy ─────────────────────────────────────────────────────────────────────
C_HEADER_BG = "1F4E79" # tmave modra — hlavicka tabulky
C_HEADER_FG = "FFFFFF" # bila — text hlavicky
C_TITLE_BG = "2E75B6" # stredni modra — nadpis sekce
C_TITLE_FG = "FFFFFF"
C_INFO_BG = "DEEAF1" # svetle modra — info o pacientovi
C_ROW_ODD = "FFFFFF" # bila
C_ROW_EVEN = "EBF3FB" # velmi svetle modra — striped
C_NEVYZV_BG = "FCE4D6" # lososova — nevyzvednuto
C_BORDER = "B8CCE4"
def thin_border():
s = Side(style="thin", color=C_BORDER)
return Border(left=s, right=s, top=s, bottom=s)
def header_fill(color):
return PatternFill("solid", fgColor=color)
def parse_datum(s, nazev):
try:
return datetime.strptime(s, "%d.%m.%Y").date()
except (ValueError, TypeError):
sys.exit(f"Spatny format data '{nazev}': '{s}'")
def najdi_v_firebirdu(rc):
rc = rc.replace("/", "").replace(" ", "")
conn = fdb.connect(**FB)
try:
cur = conn.cursor()
cur.execute("SELECT KAR.PRIJMENI, KAR.JMENO, KAR.DATNAR FROM KAR WHERE KAR.RODCIS = ?", (rc,))
row = cur.fetchone()
if not row:
sys.exit(f"Rodne cislo '{rc}' nenalezeno v Medicusu.")
return {"prijmeni": row[0].strip(), "jmeno": row[1].strip(), "datnar": row[2]}
finally:
conn.close()
def nacti_data(prijmeni, datum_narozeni, datum_od):
conn = pymysql.connect(**DB)
try:
with conn.cursor() as cur:
cur.execute(
"SELECT id, prijmeni, jmena, datum_narozeni FROM pacient "
"WHERE prijmeni = %s AND datum_narozeni = %s",
(prijmeni, datum_narozeni)
)
pac = cur.fetchone()
if not pac:
sys.exit(f"Pacient '{prijmeni}' nar. {datum_narozeni} nema zaznam v MySQL.")
# Lekari
cur.execute("""
SELECT pr.prijmeni, pr.jmena,
pr.icp,
pr.pzs_nazev, pr.ulice, pr.psc, pr.mesto,
COUNT(*) AS pocet
FROM zprava z
JOIN predpis p ON p.zprava_id = z.id
JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho
WHERE z.pacient_id = %s
GROUP BY pr.lekar_kod, pr.prijmeni, pr.jmena, pr.icp,
pr.pzs_nazev, pr.ulice, pr.psc, pr.mesto
ORDER BY pocet DESC
""", (pac["id"],))
lekari = cur.fetchall()
# Predpisy
podminka = "AND p.datum_vystaveni >= %s" if datum_od else ""
params = (pac["id"], datum_od) if datum_od else (pac["id"],)
cur.execute(f"""
SELECT p.datum_vystaveni,
COALESCE(v.nazev, p.nazev) AS vydany_lek,
v.nazev IS NULL AS nevyzvednuto,
p.atc, p.navod,
pr.prijmeni AS lek_prijmeni, pr.jmena AS lek_jmena,
pr.icp,
pr.pzs_nazev, pr.ulice, pr.psc, pr.mesto
FROM zprava z
JOIN predpis p ON p.zprava_id = z.id
JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho
LEFT JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
WHERE z.pacient_id = %s {podminka}
ORDER BY p.datum_vystaveni DESC
""", params)
predpisy = cur.fetchall()
return pac, lekari, predpisy
finally:
conn.close()
def nastav_sirky(ws, sirky):
for col, width in sirky.items():
ws.column_dimensions[col].width = width
def autofit(ws, min_width=5, max_width=60, padding=2):
"""Autofit sloupcu a radku podle obsahu."""
col_widths = {}
for row in ws.iter_rows():
for cell in row:
if cell.value is None:
continue
# Preskoc mergnuté bunky — jejich sirka se pocita ze zakladni bunky
if isinstance(cell, type(cell)) and hasattr(cell, 'column'):
text = str(cell.value)
# Tučný text je trochu širší
factor = 1.15 if (cell.font and cell.font.bold) else 1.0
width = len(text) * factor + padding
col = get_column_letter(cell.column)
col_widths[col] = max(col_widths.get(col, min_width), width)
for col, width in col_widths.items():
ws.column_dimensions[col].width = min(max(width, min_width), max_width)
# Autofit výšky řádků (wrap_text obsah)
for row in ws.iter_rows():
max_lines = 1
for cell in row:
if cell.value and cell.alignment and cell.alignment.wrap_text:
col_w = ws.column_dimensions[get_column_letter(cell.column)].width or 10
lines = max(1, int(len(str(cell.value)) / max(col_w, 1)) + 1)
max_lines = max(max_lines, lines)
row_num = row[0].row
if max_lines > 1:
ws.row_dimensions[row_num].height = max(ws.row_dimensions[row_num].height or 15,
max_lines * 14)
def zapis_nadpis_sekce(ws, row, text, n_cols):
ws.merge_cells(start_row=row, start_column=1, end_row=row, end_column=n_cols)
cell = ws.cell(row=row, column=1, value=text)
cell.font = Font(name="Arial", bold=True, size=11, color=C_TITLE_FG)
cell.fill = header_fill(C_TITLE_BG)
cell.alignment = Alignment(horizontal="left", vertical="center", indent=1)
ws.row_dimensions[row].height = 20
return row + 1
def zapis_hlavicku(ws, row, hlavicka, n_cols=None):
for col, text in enumerate(hlavicka, 1):
cell = ws.cell(row=row, column=col, value=text)
cell.font = Font(name="Arial", bold=True, size=10, color=C_HEADER_FG)
cell.fill = header_fill(C_HEADER_BG)
cell.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
cell.border = thin_border()
ws.row_dimensions[row].height = 28
return row + 1
def zapis_radek(ws, row, hodnoty, highlight=False):
bg = C_NEVYZV_BG if highlight else (C_ROW_EVEN if row % 2 == 0 else C_ROW_ODD)
fill = header_fill(bg)
for col, val in enumerate(hodnoty, 1):
cell = ws.cell(row=row, column=col, value=val)
cell.font = Font(name="Arial", size=10)
cell.fill = fill
cell.alignment = Alignment(vertical="center", wrap_text=True)
cell.border = thin_border()
ws.row_dimensions[row].height = 18
return row + 1
def vytvor_excel(pac, lekari, predpisy, datum_od, fb_pac):
wb = Workbook()
ws = wb.active
ws.title = "Lekovy zaznam"
# ── Záhlaví — info o pacientovi ──────────────────────────────────────────
n_cols = 8
ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=n_cols)
title_cell = ws.cell(row=1, column=1,
value=f"LÉKOVÝ ZÁZNAM — {pac['prijmeni'].upper()} {fb_pac['jmeno'].upper()}")
title_cell.font = Font(name="Arial", bold=True, size=14, color=C_HEADER_FG)
title_cell.fill = header_fill(C_HEADER_BG)
title_cell.alignment = Alignment(horizontal="left", vertical="center", indent=1)
ws.row_dimensions[1].height = 32
info = [
("Datum narození:", pac["datum_narozeni"].strftime("%d.%m.%Y")),
("Datum tisku:", datetime.today().strftime("%d.%m.%Y")),
("Předpisy od:", datum_od.strftime("%d.%m.%Y") if datum_od else "vše"),
]
for i, (label, val) in enumerate(info, 2):
ws.merge_cells(start_row=i, start_column=1, end_row=i, end_column=2)
ws.merge_cells(start_row=i, start_column=3, end_row=i, end_column=n_cols)
lbl = ws.cell(row=i, column=1, value=label)
lbl.font = Font(name="Arial", bold=True, size=10)
lbl.fill = header_fill(C_INFO_BG)
lbl.alignment = Alignment(vertical="center", indent=1)
val_cell = ws.cell(row=i, column=3, value=val)
val_cell.font = Font(name="Arial", size=10)
val_cell.fill = header_fill(C_INFO_BG)
val_cell.alignment = Alignment(vertical="center")
ws.row_dimensions[i].height = 16
row = len(info) + 3 # prázdný řádek
# ── Tabulka lékařů ───────────────────────────────────────────────────────
row = zapis_nadpis_sekce(ws, row, "PŘEDEPISUJÍCÍ LÉKAŘI", n_cols)
row = zapis_hlavicku(ws, row, ["#", "Lékař", "Odbornost", "Pracoviště", "Ulice", "PSČ", "Město", "Předpisů"])
for i, r in enumerate(lekari, 1):
adresa_ulice = r.get("ulice") or ""
row = zapis_radek(ws, row, [
i,
f"{r['prijmeni']} {r['jmena']}",
odbornost_z_icp(r.get("icp")),
r.get("pzs_nazev") or "",
adresa_ulice,
r.get("psc") or "",
r.get("mesto") or "",
r["pocet"],
])
row += 1 # prázdný řádek
# ── Tabulka předpisů ─────────────────────────────────────────────────────
od_text = datum_od.strftime("%d.%m.%Y") if datum_od else "vše"
row = zapis_nadpis_sekce(ws, row, f"VŠECHNY PŘEDPISY (od {od_text}) — celkem {len(predpisy)}", n_cols)
row = zapis_hlavicku(ws, row, ["#", "Datum", "Vydaný lék", "ATC", "Návod", "Lékař", "Odbornost", "Pracoviště a adresa"])
for i, r in enumerate(predpisy, 1):
nevyzv = bool(r["nevyzvednuto"])
adresa = (f"{r.get('pzs_nazev') or ''}, {r.get('ulice') or ''}, "
f"{r.get('psc') or ''} {r.get('mesto') or ''}").strip(", ")
row = zapis_radek(ws, row, [
i,
r["datum_vystaveni"].strftime("%d.%m.%Y") if r["datum_vystaveni"] else "",
r["vydany_lek"],
r.get("atc") or "",
r.get("navod") or "",
f"{r['lek_prijmeni']} {r['lek_jmena']}",
odbornost_z_icp(r.get("icp")),
adresa,
], highlight=nevyzv)
# ── Autofit sloupců a řádků ───────────────────────────────────────────────
autofit(ws, min_width=5, max_width=60)
# Zmraz záhlaví
ws.freeze_panes = "A2"
return wb
def main():
datum_od = parse_datum(DATUM_OD, "DATUM_OD") if DATUM_OD else None
fb_pac = najdi_v_firebirdu(RODNE_CISLO)
prijmeni = fb_pac["prijmeni"]
datum_narozeni = fb_pac["datnar"]
print(f"Nacitam data: {prijmeni} {fb_pac['jmeno']} nar. {datum_narozeni} ...")
pac, lekari, predpisy = nacti_data(prijmeni, datum_narozeni, datum_od)
print(f" {len(lekari)} lekaru, {len(predpisy)} predpisu")
wb = vytvor_excel(pac, lekari, predpisy, datum_od, fb_pac)
vyst = Path(VYSTUP_DIR) if VYSTUP_DIR else Path(__file__).parent
zaklad = vyst / f"LZ_{prijmeni}_{fb_pac['jmeno']}_{datum_narozeni}.xlsx"
if not zaklad.exists():
soubor = zaklad
else:
i = 2
while True:
soubor = vyst / f"LZ_{prijmeni}_{fb_pac['jmeno']}_{datum_narozeni}_v{i}.xlsx"
if not soubor.exists():
break
i += 1
wb.save(soubor)
print(f"Ulozeno: {soubor}")
if __name__ == "__main__":
main()
+94
View File
@@ -0,0 +1,94 @@
"""
Report: předepsané léky — jeden řádek na lék.
Výstup: report_predepsane_leky_RRRR.xlsx
Spuštění:
python report_predepsane_leky.py # aktuální rok
python report_predepsane_leky.py 2025 # jiný rok
"""
import sys
import io
from datetime import date
from pathlib import Path
import pymysql
import pymysql.cursors
import openpyxl
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
DB = dict(
host="192.168.1.76",
user="root",
password="Vlado9674+",
database="medicus",
charset="utf8mb4",
cursorclass=pymysql.cursors.DictCursor,
)
ROK = int(sys.argv[1]) if len(sys.argv) > 1 else date.today().year
SQL = """
SELECT
p.datum_vystaveni,
pac.prijmeni,
pac.jmena,
pac.datum_narozeni,
rd.cp,
rd.zp_nazev,
p.nazev AS predepsany_lek,
p.atc,
p.forma,
p.sila,
p.baleni,
p.mnozstvi,
p.navod,
p.typ_leku,
rp.uhrada,
rp.prekroceni,
rd.stav,
rd.platnost_do,
rd.opakovani,
rd.akutni,
rd.modry_pruh,
rd.pozn AS poznamka_na_receptu,
v.datum_vydeje,
v.nazev AS vydany_lek,
v.mnozstvi AS vydane_mnozstvi,
vyd.pzs_nazev AS lekarna,
p.id_lp_predpis,
rd.id_dokladu
FROM predpis p
JOIN zprava z ON z.id = p.zprava_id
JOIN pacient pac ON pac.id = z.pacient_id
LEFT JOIN recept_plp rp ON rp.id_lp = p.id_lp_predpis
LEFT JOIN recept_doklad rd ON rd.id_dokladu = rp.id_dokladu
LEFT JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
LEFT JOIN vydavajici vyd ON vyd.lekarnik_kod = v.kod_vydavajiciho
WHERE YEAR(p.datum_vystaveni) = %s
ORDER BY p.datum_vystaveni DESC, pac.prijmeni, pac.jmena, p.nazev
"""
conn = pymysql.connect(**DB)
with conn.cursor() as cur:
cur.execute(SQL, (ROK,))
rows = cur.fetchall()
conn.close()
print(f"Načteno {len(rows)} řádků za rok {ROK}")
wb = openpyxl.Workbook()
ws = wb.active
ws.title = f"Předpisy {ROK}"
if rows:
ws.append(list(rows[0].keys()))
for row in rows:
ws.append([str(v) if v is not None else "" for v in row.values()])
out = Path(__file__).parent / f"report_predepsane_leky_{ROK}.xlsx"
wb.save(out)
print(f"Uloženo: {out}")
import os
os.startfile(out)
Binary file not shown.
+62
View File
@@ -0,0 +1,62 @@
import winreg
import json
import os
def get_dropbox_root() -> str:
"""
Vrátí kořenovou cestu složky Dropbox na tomto počítači.
Dropbox může být nainstalován na různých discích (C:, U:, Z: …),
ale struktura složek uvnitř zůstává vždy stejná. Tato funkce zjistí
aktuální umístění, takže ostatní skripty nemusí cestu napevno zadávat.
Postup hledání (v tomto pořadí):
1. Registr HKCU\\Software\\Dropbox\\ks — hlavní klíč, hodnota "Personal"
je uložena jako byte array v kódování UTF-16 LE.
2. Registr HKCU\\Software\\Dropbox\\ks1 — alternativní klíč používaný
novějšími verzemi klienta Dropbox.
3. Soubor info.json v %APPDATA%\\Dropbox\\ nebo %LOCALAPPDATA%\\Dropbox\\
— záložní metoda, pokud registr cestu neobsahuje.
Vrací:
str: Absolutní cesta ke kořenové složce Dropboxu, např. "U:\\Dropbox".
Vyvolá:
RuntimeError: Pokud se cestu nepodaří zjistit žádnou z metod.
Příklad použití:
from Knihovny.najdi_dropbox import get_dropbox_root
import os
ROOT = get_dropbox_root()
PACIENTI = os.path.join(ROOT, "Ordinace", "Pacienti")
"""
# Metoda 1 a 2: registr HKCU\Software\Dropbox\ks a ks1
for subkey in (r"Software\Dropbox\ks", r"Software\Dropbox\ks1"):
try:
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, subkey) as key:
value, _ = winreg.QueryValueEx(key, "Personal")
path = bytes(value).decode("utf-16-le").rstrip("\x00")
if path:
return path
except (OSError, UnicodeDecodeError):
continue
# Metoda 3: záložní — info.json v AppData
for base in (os.getenv("APPDATA", ""), os.getenv("LOCALAPPDATA", "")):
info_path = os.path.join(base, "Dropbox", "info.json")
if os.path.isfile(info_path):
with open(info_path, encoding="utf-8") as f:
info = json.load(f)
path = (info.get("personal") or info.get("business") or {}).get("path", "")
if path:
return path
raise RuntimeError("Nepodařilo se zjistit cestu k Dropboxu.")
if __name__ == "__main__":
root = get_dropbox_root()
print(f"Dropbox root: {root}")
@@ -0,0 +1,78 @@
import uuid
from datetime import datetime, timezone
from pathlib import Path
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"
PRIJMENI = "Buzalka"
JMENA = "Vladimír"
DATUM_NAROZENI = "1973-09-20"
POCET_ZNAKU_ATC = 7
POCET_MESICU =60
VYSTUP = Path(__file__).parent / "odpoved_lekovy_zaznam.xml"
def nacist_a_ulozit():
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="http://www.sukl.cz/erp/201912">'
f'<Doklad>'
f'<Pristupujici><Uzivatel>{UZIVATEL}</Uzivatel><Pracoviste>{PRACOVISTE}</Pracoviste></Pristupujici>'
f'<PocetZnakuATC>{POCET_ZNAKU_ATC}</PocetZnakuATC>'
f'<PocetMesicu>{POCET_MESICU}</PocetMesicu>'
f'<Pacient><Totoznost><Jmeno><Prijmeni>{PRIJMENI}</Prijmeni><Jmena>{JMENA}</Jmena></Jmeno>'
f'<DatumNarozeni>{DATUM_NAROZENI}</DatumNarozeni></Totoznost></Pacient>'
f'</Doklad>'
f'<Zprava><ID_Zpravy>{id_zpravy}</ID_Zpravy><Verze>202501A</Verze>'
f'<Odeslano>{odeslano}</Odeslano><SW_Klienta>MEDICUS_____</SW_Klienta></Zprava>'
f'</NacistLekovyZaznamLekarDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistLekovyZaznam"',
"User-Agent": "Medicus"
}
print(f"POST {ENDPOINT} ...")
resp = sess.post(ENDPOINT, data=soap_body.encode("utf-8"), headers=headers, timeout=30)
print(f"HTTP {resp.status_code} | {len(resp.content)} bytů")
if resp.status_code == 200:
VYSTUP.write_text(resp.text, encoding="utf-8")
print(f"Uloženo: {VYSTUP}")
else:
print("CHYBA — odpověď neuložena")
print(resp.text)
if __name__ == "__main__":
nacist_a_ulozit()
@@ -0,0 +1,765 @@
"""
Nacte odpoved lekoveho zaznamu (XML) a ulozi ji do MySQL.
Schema: pacient / zprava / predpis / predpis_slozka / vydej / vydej_slozka / predepisujici / vydavajici
Typy a delky presne dle XSD (Cuer2Schema.xsd + CuerSchema.xsd, verze 202501A)
Spusteni (jednorazova inicializace + import jednoho XML):
python 06UlozitDoMySQL.py
nebo:
python 06UlozitDoMySQL.py cesta/k/odpoved.xml
Pro hromadne stazeni vsech pacientu pouzij 07StahnoutVsechny.py.
"""
import sys
from pathlib import Path
import xml.etree.ElementTree as ET
import pymysql
import pymysql.cursors
# ── konfigurace ───────────────────────────────────────────────────────────────
XML_SOUBOR = Path(__file__).parent / "odpoved_lekovy_zaznam.xml"
DB = dict(
host = "192.168.1.76",
user = "root",
password = "Vlado9674+",
database = "medicus",
charset = "utf8mb4",
cursorclass = pymysql.cursors.DictCursor,
)
NS = "http://www.sukl.cz/erp/201912"
# ─────────────────────────────────────────────────────────────────────────────
def t(el, tag):
"""Prvni potomek s danym tagem → text nebo None."""
found = el.find(f"{{{NS}}}{tag}")
return found.text.strip() if found is not None and found.text else None
def datum(s):
return s[:10] if s else None
def ts(s):
return s[:19].replace("T", " ") if s else None
# ── DDL ───────────────────────────────────────────────────────────────────────
# Pouziva se ve vytvor_schema() (DROP + CREATE) pro ciste spusteni
DDL_DROP = [
"DROP TABLE IF EXISTS predpis_slozka",
"DROP TABLE IF EXISTS vydej_slozka",
"DROP TABLE IF EXISTS vydej",
"DROP TABLE IF EXISTS predpis",
"DROP TABLE IF EXISTS zprava",
"DROP TABLE IF EXISTS pacient",
"DROP TABLE IF EXISTS predepisujici",
"DROP TABLE IF EXISTS vydavajici",
]
DDL_CREATE = [
# ── pacient ───────────────────────────────────────────────────────────────
# Zrcadlo registrovanych pacientu z Medicusu (Firebird).
# idpac = IDPAC z KAR tabulky Medicusu.
# poznamka: posledni chyba API (napr. "neztotozneny pacient"); NULL = OK
"""
CREATE TABLE IF NOT EXISTS pacient (
id INT AUTO_INCREMENT PRIMARY KEY,
idpac INT NOT NULL UNIQUE,
prijmeni VARCHAR(35) NOT NULL,
jmena VARCHAR(24),
datum_narozeni DATE NOT NULL,
aktivni TINYINT(1) NOT NULL DEFAULT 1,
poznamka VARCHAR(500),
INDEX idx_prijmeni (prijmeni)
) ENGINE=InnoDB
""",
# ── zprava ────────────────────────────────────────────────────────────────
# zprava_odpoved_type + zprava_type:
# ID_Zpravy CHAR(36), Verze, Odeslano dateTime
# Aplikace(512), ID_Podani CHAR(36), Prijato dateTime
# jmeno_osoby_type: Prijmeni(35), Jmena(24)
# pacient_id: FK na pacient.id (NULL pokud volano z 06 primo)
# xml_soubor: relativni cesta k ulozene XML odpovedi
"""
CREATE TABLE IF NOT EXISTS zprava (
id INT AUTO_INCREMENT PRIMARY KEY,
id_zpravy CHAR(36) NOT NULL UNIQUE,
pacient_id INT,
verze VARCHAR(20),
odeslano DATETIME,
aplikace VARCHAR(512),
id_podani CHAR(36),
prijato DATETIME,
pacient_prijmeni VARCHAR(35),
pacient_jmena VARCHAR(24),
pacient_datum_narozeni DATE,
xml_soubor VARCHAR(255),
stazeno DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (pacient_id) REFERENCES pacient(id) ON DELETE SET NULL,
INDEX idx_pacient_id (pacient_id),
INDEX idx_pacient (pacient_prijmeni, pacient_datum_narozeni)
) ENGINE=InnoDB
""",
# ── predpis ───────────────────────────────────────────────────────────────
# lz_nacteni_predepsany_lp_erp_type:
# ID_LP_Predpis CHAR(36) NOT NULL, KodPredepisujiciho(36) NOT NULL,
# DatumVystaveni date NOT NULL, Mnozstvi int(1-9999) NOT NULL,
# Navod(80) NOT NULL, Opakovani int?, ModryPruh boolean?
# lek — vzdy jen jeden z: HVLPReg / HVLPNereg / IPLP / INN
# hvlp_type: Kod CHAR(7)?, ATC(7)?, Nazev(146)!, Forma(27)?,
# Sila(24)?, CestaPodani(15)?, Baleni VARCHAR(22)?
# inn_predpis_type: Nazev(200) — nejdelsi nazev mezi typy
# iplp_predpis_type: PostupPripravy(4000), Nazev(146), CestaPodani(15), Forma(27)
"""
CREATE TABLE IF NOT EXISTS predpis (
id INT AUTO_INCREMENT PRIMARY KEY,
zprava_id INT NOT NULL,
id_lp_predpis CHAR(36) NOT NULL UNIQUE,
kod_predepisujiciho VARCHAR(36) NOT NULL,
datum_vystaveni DATE NOT NULL,
mnozstvi SMALLINT NOT NULL,
navod VARCHAR(80) NOT NULL,
opakovani INT,
modry_pruh TINYINT(1),
typ_leku ENUM('HVLPReg','HVLPNereg','IPLP','INN'),
lek_kod CHAR(7),
atc VARCHAR(7),
nazev VARCHAR(200),
forma VARCHAR(27),
sila VARCHAR(24),
cesta_podani VARCHAR(15),
baleni VARCHAR(22),
postup_pripravy VARCHAR(4000),
FOREIGN KEY (zprava_id) REFERENCES zprava(id) ON DELETE CASCADE,
INDEX idx_atc (atc),
INDEX idx_datum (datum_vystaveni)
) ENGINE=InnoDB
""",
# ── predpis_slozka ────────────────────────────────────────────────────────
# slozka_iplp_predpis_type:
# Mnozstvi DECIMAL(15,6) NOT NULL, Jednotka ENUM('g','ks') NOT NULL,
# Nazev(200) NOT NULL, Surovina CHAR(7)?, HVLPReg CHAR(7)?
"""
CREATE TABLE IF NOT EXISTS predpis_slozka (
id INT AUTO_INCREMENT PRIMARY KEY,
predpis_id INT NOT NULL,
mnozstvi DECIMAL(15,6) NOT NULL,
jednotka ENUM('g','ks') NOT NULL,
nazev VARCHAR(200) NOT NULL,
surovina CHAR(7),
hvlp_reg CHAR(7),
FOREIGN KEY (predpis_id) REFERENCES predpis(id) ON DELETE CASCADE,
INDEX idx_nazev (nazev)
) ENGINE=InnoDB
""",
# ── vydej ─────────────────────────────────────────────────────────────────
# lz_nacteni_vydany_lp_erp_type:
# Mnozstvi DECIMAL(6,2) NOT NULL, Navod(80) NOT NULL,
# Sarze(50) NOT NULL, SerioveCislo(20)?, Pozn(1000)?
# lek — vzdy jen jeden z: HVLPReg / HVLPNereg / IPLP
# iplp_type (vydej): KodVZP CHAR(7)?, PostupPripravy(4000), Nazev(146), CestaPodani(15)
"""
CREATE TABLE IF NOT EXISTS vydej (
id INT AUTO_INCREMENT PRIMARY KEY,
zprava_id INT NOT NULL,
id_lp_vydej CHAR(36) NOT NULL UNIQUE,
id_lp_predpis CHAR(36),
kod_vydavajiciho VARCHAR(36) NOT NULL,
datum_vydeje DATE NOT NULL,
mnozstvi DECIMAL(6,2) NOT NULL,
navod VARCHAR(80) NOT NULL,
exspirace DATE,
sarze VARCHAR(50) NOT NULL,
seriove_cislo VARCHAR(20),
pozn VARCHAR(1000),
typ_leku ENUM('HVLPReg','HVLPNereg','IPLP'),
lek_kod CHAR(7),
atc VARCHAR(7),
nazev VARCHAR(146),
forma VARCHAR(27),
sila VARCHAR(24),
cesta_podani VARCHAR(15),
postup_pripravy VARCHAR(4000),
FOREIGN KEY (zprava_id) REFERENCES zprava(id) ON DELETE CASCADE,
FOREIGN KEY (id_lp_predpis) REFERENCES predpis(id_lp_predpis) ON DELETE SET NULL,
INDEX idx_predpis (id_lp_predpis),
INDEX idx_atc (atc),
INDEX idx_datum (datum_vydeje)
) ENGINE=InnoDB
""",
# ── vydej_slozka ──────────────────────────────────────────────────────────
# slozka_iplp_type:
# Mnozstvi DECIMAL(15,6) NOT NULL, Jednotka ENUM('g','ks') NOT NULL,
# Nazev(200) NOT NULL, HrazenoZP DECIMAL(9,2)?,
# Surovina CHAR(7)?, HVLPReg CHAR(7)?
"""
CREATE TABLE IF NOT EXISTS vydej_slozka (
id INT AUTO_INCREMENT PRIMARY KEY,
vydej_id INT NOT NULL,
mnozstvi DECIMAL(15,6) NOT NULL,
jednotka ENUM('g','ks') NOT NULL,
nazev VARCHAR(200) NOT NULL,
hrazeno_zp DECIMAL(9,2),
surovina CHAR(7),
hvlp_reg CHAR(7),
FOREIGN KEY (vydej_id) REFERENCES vydej(id) ON DELETE CASCADE,
INDEX idx_nazev (nazev)
) ENGINE=InnoDB
""",
# ── predepisujici ─────────────────────────────────────────────────────────
# PredepisujiciSeznam > Predepisujici:
# Lekar: Kod CHAR(36), Jmeno: Prijmeni(35), Jmena(24)
# ICZ CHAR(8)?, ICP CHAR(8)?
# PZS: Nazev(200), Adresa: NazevUlice, CisloPopisne, CisloOrientacni, NazevObce, PSC
# Telefon(20)?
# lekar_kod = predpis.kod_predepisujiciho
"""
CREATE TABLE IF NOT EXISTS predepisujici (
id INT AUTO_INCREMENT PRIMARY KEY,
lekar_kod CHAR(36) NOT NULL UNIQUE,
prijmeni VARCHAR(35),
jmena VARCHAR(24),
icz CHAR(8),
icp CHAR(8),
pzs_nazev VARCHAR(200),
ulice VARCHAR(150),
mesto VARCHAR(100),
psc CHAR(5),
telefon VARCHAR(20),
INDEX idx_icp (icp),
INDEX idx_icz (icz)
) ENGINE=InnoDB
""",
# ── vydavajici ────────────────────────────────────────────────────────────
# VydavajiciSeznam > Vydavajici:
# Lekarnik: Kod CHAR(36), Jmeno: Prijmeni(35), Jmena(24)
# PZS: Nazev(200), Telefon(20)?, Adresa: NazevUlice, CisloPopisne, CisloOrientacni, NazevObce, PSC
# lekarnik_kod = vydej.kod_vydavajiciho
"""
CREATE TABLE IF NOT EXISTS vydavajici (
id INT AUTO_INCREMENT PRIMARY KEY,
lekarnik_kod CHAR(36) NOT NULL UNIQUE,
prijmeni VARCHAR(35),
jmena VARCHAR(24),
pzs_nazev VARCHAR(200),
ulice VARCHAR(150),
mesto VARCHAR(100),
psc CHAR(5),
telefon VARCHAR(20)
) ENGINE=InnoDB
""",
]
def vytvor_schema(conn):
"""DROP + CREATE vsech tabulek. Pouzij pro ciste spusteni / reset dat."""
with conn.cursor() as cur:
for stmt in DDL_DROP:
cur.execute(stmt)
for stmt in DDL_CREATE:
stmt = stmt.strip()
if stmt:
cur.execute(stmt)
conn.commit()
print("Schema OK — tabulky smazany a vytvoreny znovu")
def inicializuj_schema(conn):
"""CREATE TABLE IF NOT EXISTS — bezpecne pro opakowane spusteni (neznici data)."""
with conn.cursor() as cur:
for stmt in DDL_CREATE:
stmt = stmt.strip()
if stmt:
cur.execute(stmt)
# Zpetna kompatibilita: pridat sloupec poznamka pokud jeste neexistuje
cur.execute("""
SELECT COUNT(*) AS cnt
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'pacient'
AND COLUMN_NAME = 'poznamka'
""")
if cur.fetchone()["cnt"] == 0:
cur.execute(
"ALTER TABLE pacient ADD COLUMN poznamka VARCHAR(500) NULL DEFAULT NULL"
)
conn.commit()
# ── parsovani predepisujicich a vydavajicich ─────────────────────────────────
def _parsuj_adresu(pzs_el):
"""Ze elementu PZS vraci (ulice, mesto, psc)."""
adr = pzs_el.find(f"{{{NS}}}Adresa") if pzs_el is not None else None
if adr is None:
return None, None, None
ulice_parts = [
t(adr, "NazevUlice") or "",
t(adr, "CisloPopisne") or "",
t(adr, "CisloOrientacni") or "",
]
ulice = " ".join(p for p in ulice_parts if p).strip() or None
psc = t(adr, "PSC")
if psc and len(psc) > 5:
psc = psc[:5]
return ulice, t(adr, "NazevObce"), psc
def parsuj_predepisujici(doklad):
"""Vraci seznam slovniku pro tabulku predepisujici."""
seznam = []
sez_el = doklad.find(f"{{{NS}}}PredepisujiciSeznam")
if sez_el is None:
return seznam
for el in sez_el.findall(f"{{{NS}}}Predepisujici"):
lekar = el.find(f"{{{NS}}}Lekar")
if lekar is None:
continue
jmeno = lekar.find(f"{{{NS}}}Jmeno")
pzs = el.find(f"{{{NS}}}PZS")
ulice, mesto, psc = _parsuj_adresu(pzs)
seznam.append(dict(
lekar_kod = t(lekar, "Kod"),
prijmeni = t(jmeno, "Prijmeni") if jmeno is not None else None,
jmena = t(jmeno, "Jmena") if jmeno is not None else None,
icz = t(el, "ICZ"),
icp = t(el, "ICP"),
pzs_nazev = t(pzs, "Nazev") if pzs is not None else None,
ulice = ulice,
mesto = mesto,
psc = psc,
telefon = t(el, "Telefon"),
))
return seznam
def parsuj_vydavajici(doklad):
"""Vraci seznam slovniku pro tabulku vydavajici."""
seznam = []
sez_el = doklad.find(f"{{{NS}}}VydavajiciSeznam")
if sez_el is None:
return seznam
for el in sez_el.findall(f"{{{NS}}}Vydavajici"):
lekarnik = el.find(f"{{{NS}}}Lekarnik")
if lekarnik is None:
continue
jmeno = lekarnik.find(f"{{{NS}}}Jmeno")
pzs = el.find(f"{{{NS}}}PZS")
ulice, mesto, psc = _parsuj_adresu(pzs)
seznam.append(dict(
lekarnik_kod = t(lekarnik, "Kod"),
prijmeni = t(jmeno, "Prijmeni") if jmeno is not None else None,
jmena = t(jmeno, "Jmena") if jmeno is not None else None,
pzs_nazev = t(pzs, "Nazev") if pzs is not None else None,
ulice = ulice,
mesto = mesto,
psc = psc,
telefon = t(pzs, "Telefon") if pzs is not None else None,
))
return seznam
# ── parsovani leku ────────────────────────────────────────────────────────────
def parsuj_slozky_predpis(lek_el):
"""Ze IPLP elementu vraci seznam slovniku pro predpis_slozka."""
slozky = []
for s in lek_el.findall(f"{{{NS}}}Slozka"):
slozky.append(dict(
mnozstvi = t(s, "Mnozstvi"),
jednotka = t(s, "Jednotka"),
nazev = t(s, "Nazev"),
surovina = t(s, "Surovina"),
hvlp_reg = t(s, "HVLPReg"),
))
return slozky
def parsuj_slozky_vydej(lek_el):
"""Ze IPLP elementu vraci seznam slovniku pro vydej_slozka."""
slozky = []
for s in lek_el.findall(f"{{{NS}}}Slozka"):
slozky.append(dict(
mnozstvi = t(s, "Mnozstvi"),
jednotka = t(s, "Jednotka"),
nazev = t(s, "Nazev"),
hrazeno_zp = t(s, "HrazenoZP"),
surovina = t(s, "Surovina"),
hvlp_reg = t(s, "HVLPReg"),
))
return slozky
def parsuj_lek_predpis(p):
"""Vraci (lek_fields dict, slozky list).
Typ leku: HVLPReg / HVLPNereg / IPLP / INN — vzdy jen jeden.
"""
for typ in ("HVLPReg", "HVLPNereg"):
lek = p.find(f"{{{NS}}}{typ}")
if lek is not None:
return dict(
typ_leku = typ,
lek_kod = t(lek, "Kod"),
atc = t(lek, "ATC"),
nazev = t(lek, "Nazev"),
forma = t(lek, "Forma"),
sila = t(lek, "Sila"),
cesta_podani = t(lek, "CestaPodani"),
baleni = t(lek, "Baleni"),
postup_pripravy = None,
), []
lek = p.find(f"{{{NS}}}IPLP")
if lek is not None:
return dict(
typ_leku = "IPLP",
lek_kod = None,
atc = None,
nazev = t(lek, "Nazev"),
forma = t(lek, "Forma"),
sila = None,
cesta_podani = t(lek, "CestaPodani"),
baleni = None,
postup_pripravy = t(lek, "PostupPripravy"),
), parsuj_slozky_predpis(lek)
lek = p.find(f"{{{NS}}}INN")
if lek is not None:
return dict(
typ_leku = "INN",
lek_kod = None,
atc = None,
nazev = t(lek, "Nazev"),
forma = t(lek, "Forma"),
sila = t(lek, "Sila"),
cesta_podani = t(lek, "CestaPodani"),
baleni = t(lek, "Baleni"),
postup_pripravy = None,
), []
return dict(typ_leku=None, lek_kod=None, atc=None, nazev=None,
forma=None, sila=None, cesta_podani=None,
baleni=None, postup_pripravy=None), []
def parsuj_lek_vydej(v):
"""Vraci (lek_fields dict, slozky list).
Typ leku: HVLPReg / HVLPNereg / IPLP — vzdy jen jeden.
"""
for typ in ("HVLPReg", "HVLPNereg"):
lek = v.find(f"{{{NS}}}{typ}")
if lek is not None:
return dict(
typ_leku = typ,
lek_kod = t(lek, "Kod"),
atc = t(lek, "ATC"),
nazev = t(lek, "Nazev"),
forma = t(lek, "Forma"),
sila = t(lek, "Sila"),
cesta_podani = t(lek, "CestaPodani"),
postup_pripravy = None,
), []
lek = v.find(f"{{{NS}}}IPLP")
if lek is not None:
return dict(
typ_leku = "IPLP",
lek_kod = t(lek, "KodVZP"),
atc = None,
nazev = t(lek, "Nazev"),
forma = None,
sila = None,
cesta_podani = t(lek, "CestaPodani"),
postup_pripravy = t(lek, "PostupPripravy"),
), parsuj_slozky_vydej(lek)
return dict(typ_leku=None, lek_kod=None, atc=None, nazev=None,
forma=None, sila=None, cesta_podani=None,
postup_pripravy=None), []
# ── parsovani XML ─────────────────────────────────────────────────────────────
def parsuj_xml(xml_soubor):
tree = ET.parse(xml_soubor)
root = tree.getroot()
odpoved = root[0][0] # Envelope > Body > NacistLekovyZaznamOdpoved
# Doklad prvni, Zprava druha — presne dle XSD sequence
doklad = odpoved.find(f"{{{NS}}}Doklad")
zpr = odpoved.find(f"{{{NS}}}Zprava")
# ── Zprava ───────────────────────────────────────────────────────────────
zprava = dict(
id_zpravy = t(zpr, "ID_Zpravy"),
verze = t(zpr, "Verze"),
odeslano = ts(t(zpr, "Odeslano")),
aplikace = t(zpr, "Aplikace"),
id_podani = t(zpr, "ID_Podani"),
prijato = ts(t(zpr, "Prijato")),
)
# ── Pacient ───────────────────────────────────────────────────────────────
pac = doklad.find(f"{{{NS}}}Pacient")
jmeno = pac.find(f"{{{NS}}}Jmeno")
zprava["pacient_prijmeni"] = t(jmeno, "Prijmeni") if jmeno is not None else None
zprava["pacient_jmena"] = t(jmeno, "Jmena") if jmeno is not None else None
zprava["pacient_datum_narozeni"] = datum(t(pac, "DatumNarozeni"))
# ── Predpisy ──────────────────────────────────────────────────────────────
predpisy = [] # kazda polozka: (row_dict, slozky_list)
predpis_seznam = doklad.find(f"{{{NS}}}PredpisSeznam")
if predpis_seznam is not None:
for p in predpis_seznam.findall(f"{{{NS}}}Predpis"):
row = dict(
id_lp_predpis = t(p, "ID_LP_Predpis"),
kod_predepisujiciho = t(p, "KodPredepisujiciho"),
datum_vystaveni = datum(t(p, "DatumVystaveni")),
mnozstvi = t(p, "Mnozstvi"),
navod = t(p, "Navod"),
opakovani = t(p, "Opakovani"),
modry_pruh = t(p, "ModryPruh"),
)
lek_fields, slozky = parsuj_lek_predpis(p)
row.update(lek_fields)
predpisy.append((row, slozky))
# ── Vydeji ────────────────────────────────────────────────────────────────
vydeji = [] # kazda polozka: (row_dict, slozky_list)
vydej_seznam = doklad.find(f"{{{NS}}}VydejSeznam")
if vydej_seznam is not None:
for v in vydej_seznam.findall(f"{{{NS}}}Vydej"):
row = dict(
id_lp_vydej = t(v, "ID_LP_Vydej"),
id_lp_predpis = t(v, "ID_LP_Predpis"),
kod_vydavajiciho = t(v, "KodVydavajiciho"),
datum_vydeje = datum(t(v, "DatumVydeje")),
mnozstvi = t(v, "Mnozstvi"),
navod = t(v, "Navod"),
exspirace = datum(t(v, "Exspirace")),
sarze = t(v, "Sarze"),
seriove_cislo = t(v, "SerioveCislo"),
pozn = t(v, "Pozn"),
)
lek_fields, slozky = parsuj_lek_vydej(v)
row.update(lek_fields)
vydeji.append((row, slozky))
predepisujici = parsuj_predepisujici(doklad)
vydavajici = parsuj_vydavajici(doklad)
return zprava, predpisy, vydeji, predepisujici, vydavajici
# ── ulozeni do DB ─────────────────────────────────────────────────────────────
def _najdi_id(cur, tabulka, sloupec, hodnota):
"""Pomocna funkce — vrati id radku dle unikatniho sloupce."""
cur.execute(f"SELECT id FROM {tabulka} WHERE {sloupec} = %s", (hodnota,))
row = cur.fetchone()
return row["id"] if row else None
def uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici,
pacient_id=None, xml_soubor=None):
"""
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
with conn.cursor() as cur:
# ── zprava ────────────────────────────────────────────────────────────
zprava_row = dict(zprava)
zprava_row["pacient_id"] = pacient_id
zprava_row["xml_soubor"] = xml_soubor
cur.execute("""
INSERT INTO zprava
(id_zpravy, pacient_id, verze, odeslano, aplikace, id_podani, prijato,
pacient_prijmeni, pacient_jmena, pacient_datum_narozeni, xml_soubor)
VALUES
(%(id_zpravy)s, %(pacient_id)s, %(verze)s, %(odeslano)s, %(aplikace)s,
%(id_podani)s, %(prijato)s,
%(pacient_prijmeni)s, %(pacient_jmena)s, %(pacient_datum_narozeni)s,
%(xml_soubor)s)
ON DUPLICATE KEY UPDATE
prijato = VALUES(prijato),
xml_soubor = COALESCE(VALUES(xml_soubor), xml_soubor),
stazeno = CURRENT_TIMESTAMP
""", zprava_row)
zprava_id = _najdi_id(cur, "zprava", "id_zpravy", zprava["id_zpravy"])
# ── predpisy + jejich slozky ───────────────────────────────────────────
vlozeno_p = 0
vlozeno_ps = 0
for row, slozky in predpisy:
row["zprava_id"] = zprava_id
cur.execute("""
INSERT IGNORE INTO predpis
(zprava_id, id_lp_predpis, kod_predepisujiciho,
datum_vystaveni, mnozstvi, navod, opakovani, modry_pruh,
typ_leku, lek_kod, atc, nazev, forma, sila,
cesta_podani, baleni, postup_pripravy)
VALUES
(%(zprava_id)s, %(id_lp_predpis)s, %(kod_predepisujiciho)s,
%(datum_vystaveni)s, %(mnozstvi)s, %(navod)s,
%(opakovani)s, %(modry_pruh)s,
%(typ_leku)s, %(lek_kod)s, %(atc)s, %(nazev)s, %(forma)s,
%(sila)s, %(cesta_podani)s, %(baleni)s, %(postup_pripravy)s)
""", row)
vlozeno_p += cur.rowcount
if slozky:
iplp_predpisu += 1
predpis_db_id = cur.lastrowid or _najdi_id(cur, "predpis", "id_lp_predpis", row["id_lp_predpis"])
for s in slozky:
s["predpis_id"] = predpis_db_id
cur.execute("""
INSERT INTO predpis_slozka
(predpis_id, mnozstvi, jednotka, nazev, surovina, hvlp_reg)
VALUES
(%(predpis_id)s, %(mnozstvi)s, %(jednotka)s,
%(nazev)s, %(surovina)s, %(hvlp_reg)s)
""", s)
vlozeno_ps += 1
# ── vydeji + jejich slozky ────────────────────────────────────────────
vlozeno_v = 0
vlozeno_vs = 0
for row, slozky in vydeji:
row["zprava_id"] = zprava_id
cur.execute("""
INSERT IGNORE INTO vydej
(zprava_id, id_lp_vydej, id_lp_predpis, kod_vydavajiciho,
datum_vydeje, mnozstvi, navod, exspirace, sarze,
seriove_cislo, pozn,
typ_leku, lek_kod, atc, nazev, forma, sila,
cesta_podani, postup_pripravy)
VALUES
(%(zprava_id)s, %(id_lp_vydej)s, %(id_lp_predpis)s, %(kod_vydavajiciho)s,
%(datum_vydeje)s, %(mnozstvi)s, %(navod)s, %(exspirace)s, %(sarze)s,
%(seriove_cislo)s, %(pozn)s,
%(typ_leku)s, %(lek_kod)s, %(atc)s, %(nazev)s, %(forma)s,
%(sila)s, %(cesta_podani)s, %(postup_pripravy)s)
""", row)
vlozeno_v += cur.rowcount
if slozky:
iplp_vydejuu += 1
vydej_db_id = cur.lastrowid or _najdi_id(cur, "vydej", "id_lp_vydej", row["id_lp_vydej"])
for s in slozky:
s["vydej_id"] = vydej_db_id
cur.execute("""
INSERT INTO vydej_slozka
(vydej_id, mnozstvi, jednotka, nazev,
hrazeno_zp, surovina, hvlp_reg)
VALUES
(%(vydej_id)s, %(mnozstvi)s, %(jednotka)s, %(nazev)s,
%(hrazeno_zp)s, %(surovina)s, %(hvlp_reg)s)
""", s)
vlozeno_vs += 1
# ── predepisujici ─────────────────────────────────────────────────────
for row in predepisujici:
if not row.get("lekar_kod"):
continue
cur.execute("""
INSERT INTO predepisujici
(lekar_kod, prijmeni, jmena, icz, icp,
pzs_nazev, ulice, mesto, psc, telefon)
VALUES
(%(lekar_kod)s, %(prijmeni)s, %(jmena)s, %(icz)s, %(icp)s,
%(pzs_nazev)s, %(ulice)s, %(mesto)s, %(psc)s, %(telefon)s)
ON DUPLICATE KEY UPDATE
prijmeni = VALUES(prijmeni),
jmena = VALUES(jmena),
icz = VALUES(icz),
icp = VALUES(icp),
pzs_nazev = VALUES(pzs_nazev),
ulice = VALUES(ulice),
mesto = VALUES(mesto),
psc = VALUES(psc),
telefon = VALUES(telefon)
""", row)
# ── vydavajici ────────────────────────────────────────────────────────
for row in vydavajici:
if not row.get("lekarnik_kod"):
continue
cur.execute("""
INSERT INTO vydavajici
(lekarnik_kod, prijmeni, jmena,
pzs_nazev, ulice, mesto, psc, telefon)
VALUES
(%(lekarnik_kod)s, %(prijmeni)s, %(jmena)s,
%(pzs_nazev)s, %(ulice)s, %(mesto)s, %(psc)s, %(telefon)s)
ON DUPLICATE KEY UPDATE
prijmeni = VALUES(prijmeni),
jmena = VALUES(jmena),
pzs_nazev = VALUES(pzs_nazev),
ulice = VALUES(ulice),
mesto = VALUES(mesto),
psc = VALUES(psc),
telefon = VALUES(telefon)
""", row)
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 ──────────────────────────────────────────────────────────────────────
def main():
xml = Path(sys.argv[1]) if len(sys.argv) > 1 else XML_SOUBOR
print(f"XML: {xml} ({xml.stat().st_size // 1024} KB)")
print("Parsovani XML ...")
zprava, predpisy, vydeji, predepisujici, vydavajici = parsuj_xml(xml)
print(f" -> {len(predpisy)} predpisu, {len(vydeji)} vydejuu, "
f"{len(predepisujici)} predepisujicich, {len(vydavajici)} vydavajicich")
print("Pripojeni k MySQL ...")
conn = pymysql.connect(**DB)
try:
vytvor_schema(conn)
print("Ukladani ...")
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()
if __name__ == "__main__":
main()
@@ -0,0 +1,427 @@
"""
Hromadne stazeni lekovych zaznamu z eReceptu pro registrovane pacienty Medicusu.
Spusteni:
# pouze rodina (testovaci run)
python 07StahnoutVsechny.py --prijmeni Buzalka,Buzalkova,Kusinova
# 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)
- opakovane stazeni → ceil(pocet_dni_od_posledniho / 30) + 1
(prekryv 1 mesic pro jistotu, INSERT IGNORE zajisti bez duplikatu)
XML archiv:
xml_archive/YYYY-MM-DD/{Prijmeni}_{Jmena}_{datnar}.xml
Cesta ulozena take v zprava.xml_soubor pro snadne dohledani.
"""
import argparse
import importlib.util
import logging
import math
import random
import sys
import time
import uuid
from datetime import datetime, timezone, date
from pathlib import Path
from xml.sax.saxutils import escape as xml_escape
import fdb
import pymysql
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"
)
_m06 = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(_m06)
parsuj_xml = _m06.parsuj_xml
uloz = _m06.uloz
inicializuj_schema = _m06.inicializuj_schema
# ── Konfigurace eRecept ───────────────────────────────────────────────────────
PFX_FILE = r"C:\Users\vlado\PycharmProjects\Recepty\AMBSUKL214235369G_31DEC2024.pfx"
PFX_PASS = "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"
POCET_ZNAKU_ATC = 7
POCET_MESICU_MAX = 60
PAUZA_MIN = 10 # sekund
PAUZA_MAX = 20 # sekund
# ── Konfigurace Firebird ──────────────────────────────────────────────────────
FB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb'
FB_USER = 'SYSDBA'
FB_PASS = 'masterkey'
FB_CHARSET = 'win1250'
ICP = '09305001'
ODB = '001'
# ── Konfigurace MySQL ─────────────────────────────────────────────────────────
DB = dict(
host = "192.168.1.76",
user = "root",
password = "Vlado9674+",
database = "medicus",
charset = "utf8mb4",
cursorclass = pymysql.cursors.DictCursor,
)
# ── 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 ─────────────────────────────────
_SQL_VSICHNI = """
SELECT
KAR.IDPAC,
KAR.PRIJMENI,
KAR.JMENO,
KAR.DATNAR
FROM KAR
WHERE (vyrazen = 'N')
AND EXISTS (
SELECT id FROM registr r
JOIN icp i ON r.idicp = i.idicp
WHERE r.idpac = kar.idpac
AND (r.datum <= ?)
AND (r.datum_zruseni IS NULL OR r.datum_zruseni >= ?)
AND (r.priznak IN ('V','D','A'))
AND (i.icp = ?)
AND (i.odb = ?)
)
ORDER BY KAR.PRIJMENI_UP, KAR.RODCIS
"""
_SQL_FILTR = """
SELECT
KAR.IDPAC,
KAR.PRIJMENI,
KAR.JMENO,
KAR.DATNAR
FROM KAR
WHERE (vyrazen = 'N')
AND KAR.PRIJMENI IN ({ph})
ORDER BY KAR.PRIJMENI_UP, KAR.RODCIS
"""
def nacti_pacienty(prijmeni_filtr=None):
conn = fdb.connect(dsn=FB_DSN, user=FB_USER, password=FB_PASS, charset=FB_CHARSET)
try:
cur = conn.cursor()
if prijmeni_filtr:
ph = ",".join("?" * len(prijmeni_filtr))
cur.execute(_SQL_FILTR.format(ph=ph), prijmeni_filtr)
else:
dnes = date.today().isoformat()
cur.execute(_SQL_VSICHNI, (dnes, dnes, ICP, ODB))
cols = [d[0].lower() for d in cur.description]
return [dict(zip(cols, row)) for row in cur.fetchall()]
finally:
conn.close()
# ── MySQL: pacient UPSERT ─────────────────────────────────────────────────────
def upsert_pacient(cur, pac):
cur.execute("""
INSERT INTO pacient (idpac, prijmeni, jmena, datum_narozeni)
VALUES (%s, %s, %s, %s)
ON DUPLICATE KEY UPDATE
prijmeni = VALUES(prijmeni),
jmena = VALUES(jmena)
""", (pac["idpac"], pac["prijmeni"], pac["jmeno"], pac["datnar"]))
cur.execute("SELECT id FROM pacient WHERE idpac = %s", (pac["idpac"],))
return cur.fetchone()["id"]
def posledni_stazeni(cur, pacient_id):
cur.execute(
"SELECT MAX(stazeno) AS posledni FROM zprava WHERE pacient_id = %s",
(pacient_id,)
)
row = cur.fetchone()
return row["posledni"] if row and row["posledni"] else None
def vypocti_pocet_mesicu(posledni):
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)
def uloz_poznamku(conn, pacient_id, poznamka):
with conn.cursor() as cur:
cur.execute(
"UPDATE pacient SET poznamka = %s WHERE id = %s",
(poznamka, pacient_id)
)
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):
id_zpravy = str(uuid.uuid4())
odeslano = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S+00:00")
soap = (
'<?xml version="1.0" encoding="UTF-8"?>'
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">'
'<soapenv:Body>'
f'<NacistLekovyZaznamLekarDotaz xmlns="http://www.sukl.cz/erp/201912">'
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><Totoznost><Jmeno>'
f'<Prijmeni>{xml_escape(prijmeni)}</Prijmeni>'
f'<Jmena>{xml_escape(jmena)}</Jmena>'
f'</Jmeno><DatumNarozeni>{datum_narozeni}</DatumNarozeni>'
f'</Totoznost></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",
}
resp = sess.post(ENDPOINT, data=soap.encode("utf-8"), headers=headers, timeout=60)
if resp.status_code != 200:
raise RuntimeError(f"HTTP {resp.status_code}: {resp.text[:300]}")
return resp.text
# ── XML archiv ────────────────────────────────────────────────────────────────
def uloz_xml_na_disk(xml_text, prijmeni, jmena, datnar_str, dnes_str):
adr = XML_DIR / dnes_str
adr.mkdir(parents=True, exist_ok=True)
nazev = f"{prijmeni}_{jmena}_{datnar_str}.xml".replace(" ", "_")
soubor = adr / nazev
soubor.write_text(xml_text, encoding="utf-8")
return str(soubor.relative_to(Path(__file__).parent))
# ── Hlavni smycka ─────────────────────────────────────────────────────────────
def main():
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(",")]
log.info(f"Filtr prijmeni: {prijmeni_filtr}")
log.info("Nacitam pacienty z Medicusu...")
pacienti = nacti_pacienty(prijmeni_filtr)
log.debug(f"Celkem registrovanych: {len(pacienti)}")
if args.offset:
pacienti = pacienti[args.offset:]
log.debug(f"Preskoceno: {args.offset}")
if args.limit:
pacienti = pacienti[:args.limit]
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
conn = pymysql.connect(**DB)
inicializuj_schema(conn)
log.debug("MySQL schema OK")
sess = Session()
sess.mount("https://", Pkcs12Adapter(pkcs12_filename=PFX_FILE, pkcs12_password=PFX_PASS))
sess.auth = (API_USER, API_PASS)
ok = 0
chyby = 0
try:
for i, pac in enumerate(pacienti, 1):
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}"
log.debug(f"[{i:4}/{celkem}] {jmeno_str} (*{datnar_str})")
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)
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]
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
soap_fault = extrahuj_soap_fault(xml_text)
if 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
xml_soubor = uloz_xml_na_disk(xml_text, prijmeni, jmena, datnar_str, dnes_str)
xml_path = Path(__file__).parent / xml_soubor
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)
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]
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
if i < celkem:
pauza = random.randint(PAUZA_MIN, PAUZA_MAX)
log.debug(f" cekam {pauza}s ...")
time.sleep(pauza)
finally:
conn.close()
sess.close()
zhrnutí = f"Hotovo: {ok} OK | {chyby} chyb | celkem {celkem} pacientu"
log.info("=" * 55)
log.info(zhrnutí)
if __name__ == "__main__":
main()
@@ -0,0 +1,543 @@
# Lékový záznam eRecept → MySQL
Pipeline pro hromadné stažení lékových záznamů všech registrovaných pacientů
z eRecept SÚKL API a jejich uložení do relační databáze MySQL.
---
## Soubory
| Soubor | Co dělá |
|--------|---------|
| `05UlozitOdpoved.py` | Stáhne XML pro **jednoho** pacienta (ruční test/ladění) |
| `06UlozitDoMySQL.py` | DDL schématu, parsování XML, import do MySQL — používá se jako **knihovna**, ne spouštět přímo! |
| `07StahnoutVsechny.py` | **Hlavní skript** — načte pacienty z Medicusu, stáhne lékové záznamy, uloží XML i DB záznamy |
| `reimport_z_xml.py` | Reimport XML ze zálohy bez volání API — viz sekce níže |
```
recept/
├── setup.ps1 ← vytvoří .venv, nainstaluje závislosti, Playwright chromium
├── requirements.txt ← seznam Python závislostí
├── .venv/ ← virtuální prostředí (Python 3.x)
├── LékovýZáznamWithClaude/
│ ├── 05UlozitOdpoved.py
│ ├── 06UlozitDoMySQL.py
│ ├── 07StahnoutVsechny.py
│ ├── reimport_z_xml.py
│ ├── LEKOVY_ZAZNAM_DB.md ← tento soubor
│ ├── Logs/ ← log každého běhu (UTF-8, YYYY-MM-DD_HH-MM-SS.log)
│ ├── Tests/ ← starší vývojové skripty
│ └── xml_archive/ ← archiv XML odpovědí (YYYY-MM-DD/Prijmeni_Jmena_datnar.xml)
└── Dotazy/
├── prehled_pacienta.py ← konzolový přehled pacienta
├── prehled_pacienta_excel.py ← export přehledu pacienta do Excelu
└── DOTAZY.md ← dokumentace dotazovacích skriptů
```
> **⚠️ NIKDY nespouštět `06UlozitDoMySQL.py` přímo** — zavolá `vytvor_schema()`,
> která provede `DROP TABLE` a smaže celou databázi.
> Pro import dat vždy použít `07StahnoutVsechny.py` nebo `reimport_z_xml.py`.
---
## Nastavení prostředí (jednorázově)
```powershell
# PowerShell — spustit jednou po naklonování projektu
cd U:\recept
.\setup.ps1
```
`setup.ps1` provede:
1. Vytvoří `.venv` s Python interpretem z `C:\Python\python.exe`
2. Nainstaluje všechny závislosti z `requirements.txt`
3. Nainstaluje Playwright Chromium (pro případné automatizace)
Po nastavení aktivace:
```powershell
.venv\Scripts\Activate.ps1
```
### requirements.txt
```
requests
requests-pkcs12
pymysql
fdb
zeep
mysql-connector-python
playwright
openpyxl
```
---
## Typické spuštění
```bash
# Hromadné stažení všech registrovaných pacientů
python 07StahnoutVsechny.py
# Pouze vybraná příjmení (testování / rodina)
python 07StahnoutVsechny.py --prijmeni Buzalka,Buzalková,Kusinová
# Dávkování po částech
python 07StahnoutVsechny.py --offset 100 --limit 50
# Reimport ze zálohy XML (bez volání API) — viz níže
python reimport_z_xml.py
```
---
## Autentizace (eRecept SÚKL, ostrý provoz)
| Parametr | Hodnota |
|----------|---------|
| Endpoint | `https://lekar-soap.erecept.sukl.cz/cuer/Lekar2` |
| mTLS certifikát | `AMBSUKL214235369G_31DEC2024.pfx` (platnost do 31. 12. 2026) |
| HTTP Basic user | UUID lékaře `e08c89c6-2b1a-4eba-8ed9-4e3e63618379` |
| SOAP operace | `NacistLekovyZaznam` |
| XML namespace | `http://www.sukl.cz/erp/201912` |
| Verze zprávy | `202501A` |
Certifikát = identifikace **ordinace**, UUID+heslo = identifikace **lékaře jako osoby**.
---
## Zdroj pacientů — Medicus (Firebird)
Pacienti se načítají přímo z `medicus.fdb` jako registrovaní pacienti ordinace:
```
DSN: localhost:c:\medicus 3\data\medicus.fdb
User: SYSDBA / masterkey
Charset: win1250
IČP: 09305001 (odbornost 001 — praktický lékař)
```
Podmínky registrace: `vyrazen = 'N'`, `registr.priznak IN ('V','D','A')`,
registrace platná k dnešnímu datu.
---
## Logika přírůstkového stahování
```
první stažení pacienta → PocetMesicu = 60 (maximum, 5 let)
opakované stažení → ceil(dny od posledního stažení / 30) + 1
```
- Překryv 1 měsíce zajistí, že nepřijdeme o nic na hranici období.
- `INSERT IGNORE` na `id_lp_predpis` / `id_lp_vydej` zabrání duplikátům.
- Pauza mezi voláními API: **náhodně 1020 sekund**.
---
## Ošetření chyb API
Pacienti, kteří nejsou v eReceptu ztotožněni (nikdy nebyli v lékárně s e-receptem),
vrátí SOAP Fault `Z002`. Skript:
1. Zachytí chybu (HTTP 500 nebo SOAP Fault v těle odpovědi)
2. Uloží text chyby do `pacient.poznamka`
3. Pokračuje dalším pacientem
Při příštím úspěšném stažení se `poznamka` automaticky vymaže.
```sql
-- přehled pacientů s chybou
SELECT prijmeni, jmena, datum_narozeni, poznamka
FROM pacient
WHERE poznamka IS NOT NULL;
```
---
## XML archiv
Každá odpověď API se uloží jako soubor:
```
xml_archive/YYYY-MM-DD/Prijmeni_Jmena_YYYY-MM-DD.xml
```
Cesta je zároveň uložena v `zprava.xml_soubor`.
Účel: možnost re-parsování při budoucích změnách schématu bez nutnosti znovu volat API.
---
## Výstup do konzole a logů
Konzole zobrazuje jen jeden řádek na pacienta:
```
[ 1/1621] Abohamda Horia OK 168p 252v 247 KB
[ 5/1621] Alakbarov Farid CHYBA Z002 - Lekovy zaznam ne...
```
Kompletní detaily (počty nových záznamů, ID zprávy, doba čekání) jsou v:
```
Logs/YYYY-MM-DD_HH-MM-SS.log
```
---
## Databázové schéma — `medicus` (MySQL)
Všechny délky a datové typy jsou přesně dle XSD, **ne odhady**.
Lék je denormalizován přímo do řádku předpisu/výdeje.
### Relační diagram
```
pacient (1)
└── zprava (N) -- každé volání API = 1 zpráva
├── predpis (N)
│ └── predpis_slozka (N) -- složky IPLP z předpisu
└── vydej (N)
└── vydej_slozka (N) -- složky IPLP z výdeje
vydej.id_lp_predpis → predpis.id_lp_predpis (párování výdeje s předpisem)
predpis.kod_predepisujiciho → predepisujici.lekar_kod
vydej.kod_vydavajiciho → vydavajici.lekarnik_kod
```
### Tabulka `pacient`
Zrcadlo registrovaných pacientů z Medicusu. Aktualizuje se při každém běhu `07`.
| Sloupec | Typ | Poznámka |
|---------|-----|----------|
| `id` | INT PK | |
| `idpac` | INT UNIQUE | IDPAC z tabulky KAR v Medicusu |
| `prijmeni` | VARCHAR(35) | |
| `jmena` | VARCHAR(24) | |
| `datum_narozeni` | DATE | |
| `aktivni` | TINYINT(1) | 0 = přeskočit při hromadném běhu |
| `poznamka` | VARCHAR(500) | poslední chyba API; NULL = OK |
### Tabulka `zprava`
Jeden řádek = jedno volání API (jeden pacient, jeden čas).
| Sloupec | Typ | Poznámka |
|---------|-----|----------|
| `id_zpravy` | CHAR(36) UNIQUE | UUID z eReceptu |
| `pacient_id` | INT FK → pacient | |
| `verze` | VARCHAR(20) | verze zprávy (202501A) |
| `odeslano` | DATETIME | čas odeslání dotazu |
| `aplikace` | VARCHAR(512) | SW SÚKL serveru |
| `id_podani` | CHAR(36) | UUID podání |
| `prijato` | DATETIME | čas přijetí odpovědi |
| `pacient_prijmeni` | VARCHAR(35) | z XML odpovědi |
| `pacient_jmena` | VARCHAR(24) | z XML odpovědi |
| `pacient_datum_narozeni` | DATE | z XML odpovědi |
| `xml_soubor` | VARCHAR(255) | relativní cesta k archivu |
| `stazeno` | DATETIME | automaticky při INSERT |
### Tabulka `predpis`
Dle `lz_nacteni_predepsany_lp_erp_type`.
| Sloupec | Typ | NOT NULL | Poznámka |
|---------|-----|----------|----------|
| `id_lp_predpis` | CHAR(36) UNIQUE | ✓ | UUID z eReceptu |
| `zprava_id` | INT FK | ✓ | |
| `kod_predepisujiciho` | VARCHAR(36) | ✓ | UUID lékaře |
| `datum_vystaveni` | DATE | ✓ | |
| `mnozstvi` | SMALLINT | ✓ | 19999 |
| `navod` | VARCHAR(80) | ✓ | |
| `opakovani` | INT | | |
| `modry_pruh` | TINYINT(1) | | návykové látky |
| `typ_leku` | ENUM | | HVLPReg / HVLPNereg / IPLP / INN |
| `lek_kod` | CHAR(7) | | kód SÚKL (jen HVLP) |
| `atc` | VARCHAR(7) | | ATC kód |
| `nazev` | VARCHAR(200) | | |
| `forma` | VARCHAR(27) | | |
| `sila` | VARCHAR(24) | | |
| `cesta_podani` | VARCHAR(15) | | POR, INH, … |
| `baleni` | VARCHAR(22) | | string, např. "100 ks" |
| `postup_pripravy` | VARCHAR(4000) | | receptura IPLP |
### Tabulka `predpis_slozka`
Složky IPLP předpisů (lékař typicky nevyplňuje, kvalitní data spíše u výdeje).
| Sloupec | Typ | NOT NULL |
|---------|-----|----------|
| `predpis_id` | INT FK | ✓ |
| `mnozstvi` | DECIMAL(15,6) | ✓ |
| `jednotka` | ENUM('g','ks') | ✓ |
| `nazev` | VARCHAR(200) | ✓ |
| `surovina` | CHAR(7) | |
| `hvlp_reg` | CHAR(7) | |
### Tabulka `vydej`
Dle `lz_nacteni_vydany_lp_erp_type`.
| Sloupec | Typ | NOT NULL | Poznámka |
|---------|-----|----------|----------|
| `id_lp_vydej` | CHAR(36) UNIQUE | ✓ | UUID výdeje |
| `zprava_id` | INT FK | ✓ | |
| `id_lp_predpis` | CHAR(36) FK | | NULL = výdej bez e-předpisu |
| `kod_vydavajiciho` | VARCHAR(36) | ✓ | UUID lékárníka |
| `datum_vydeje` | DATE | ✓ | |
| `mnozstvi` | DECIMAL(6,2) | ✓ | desetinné — např. 0.5 balení |
| `navod` | VARCHAR(80) | ✓ | |
| `exspirace` | DATE | | exspirace šarže |
| `sarze` | VARCHAR(50) | ✓ | |
| `seriove_cislo` | VARCHAR(20) | | léky s el. sledováním |
| `pozn` | VARCHAR(1000) | | poznámka lékárníka |
| `typ_leku` | ENUM | | HVLPReg / HVLPNereg / IPLP |
| `lek_kod` | CHAR(7) | | kód SÚKL nebo KodVZP (IPLP) |
| `atc` | VARCHAR(7) | | jen HVLP |
| `nazev` | VARCHAR(146) | | |
| `forma` | VARCHAR(27) | | |
| `sila` | VARCHAR(24) | | |
| `cesta_podani` | VARCHAR(15) | | |
| `postup_pripravy` | VARCHAR(4000) | | receptura IPLP |
### Tabulka `vydej_slozka`
Jako `predpis_slozka`, navíc `hrazeno_zp`. Data lékáren — kvalita závisí na lékárně.
| Sloupec | Typ | NOT NULL | Poznámka |
|---------|-----|----------|----------|
| `vydej_id` | INT FK | ✓ | |
| `mnozstvi` | DECIMAL(15,6) | ✓ | |
| `jednotka` | ENUM('g','ks') | ✓ | |
| `nazev` | VARCHAR(200) | ✓ | |
| `hrazeno_zp` | DECIMAL(9,2) | | částka hrazená ZP |
| `surovina` | CHAR(7) | | |
| `hvlp_reg` | CHAR(7) | | |
### Tabulka `predepisujici`
Lékaři, kteří pacientovi předepisovali (ze všech ordinací).
| Sloupec | Typ | Poznámka |
|---------|-----|----------|
| `lekar_kod` | CHAR(36) UNIQUE | UUID lékaře = predpis.kod_predepisujiciho |
| `prijmeni` | VARCHAR(35) | |
| `jmena` | VARCHAR(24) | |
| `icz` | CHAR(8) | IČZ zdravotnického zařízení |
| `icp` | CHAR(8) | IČP pracoviště — **poslední 3 číslice = kód odbornosti** (001 = prakt. lékař, 272 = alergologie…) |
| `pzs_nazev` | VARCHAR(200) | název zdravotnického zařízení |
| `ulice` | VARCHAR(150) | |
| `mesto` | VARCHAR(100) | |
| `psc` | CHAR(5) | |
| `telefon` | VARCHAR(20) | |
### Tabulka `vydavajici`
Lékárníci / lékárny, kde byl výdej.
| Sloupec | Typ | Poznámka |
|---------|-----|----------|
| `lekarnik_kod` | CHAR(36) UNIQUE | UUID lékárníka = vydej.kod_vydavajiciho |
| `prijmeni` | VARCHAR(35) | |
| `jmena` | VARCHAR(24) | |
| `pzs_nazev` | VARCHAR(200) | název lékárny |
| `ulice` | VARCHAR(150) | |
| `mesto` | VARCHAR(100) | |
| `psc` | CHAR(5) | |
| `telefon` | VARCHAR(20) | |
---
## Typy léků v Predpis i Vydej
Každý předpis / výdej obsahuje právě **jeden** z těchto elementů:
| Typ | Popis | Klíčová pole |
|-----|-------|-------------|
| `HVLPReg` | Registrovaný hromadně vyráběný LP | Kod (SÚKL), ATC, Nazev, Forma, Sila, Baleni |
| `HVLPNereg` | Neregistrovaný HVLP | stejná struktura jako HVLPReg |
| `IPLP` | Individuálně připravovaný LP (magistraliter) | Nazev, PostupPripravy, Slozka[] |
| `INN` | Předpis účinnou látkou (genericky) | Nazev, Forma, Sila, Baleni |
#### IPLP — dvojí uložení receptury
- **Předpis**: lékař zadal recepturu jako volný text v `PostupPripravy`. Složky typicky nevyplněny.
- **Výdej**: lékárna zaznamenala strukturované složky (`Slozka` s množstvím, jednotkou, názvem suroviny). Kvalita dat závisí na lékárně.
---
## Užitečné analytické dotazy
```sql
-- nejčastěji předepisované ATC skupiny za posledních 12 měsíců
SELECT atc, nazev, COUNT(*) AS pocet, MAX(datum_vystaveni) AS naposledy
FROM predpis
WHERE datum_vystaveni >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)
GROUP BY atc, nazev
ORDER BY pocet DESC;
-- co bylo předepsáno ale nevyzvednuto (non-compliance)
SELECT pac.prijmeni, pac.jmena, p.datum_vystaveni, p.nazev, p.atc, p.navod
FROM predpis p
JOIN zprava z ON z.id = p.zprava_id
JOIN pacient pac ON pac.id = z.pacient_id
LEFT JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
WHERE v.id_lp_vydej IS NULL
ORDER BY p.datum_vystaveni DESC;
-- lékový záznam konkrétního pacienta (předpisy + výdeje)
SELECT p.datum_vystaveni, p.typ_leku, p.nazev, p.atc, p.navod,
v.datum_vydeje, v.mnozstvi AS vydano
FROM pacient pac
JOIN zprava z ON z.pacient_id = pac.id
JOIN predpis p ON p.zprava_id = z.id
LEFT JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
WHERE pac.prijmeni = 'Buzalka' AND pac.jmena = 'Vladimír'
ORDER BY p.datum_vystaveni DESC;
-- IPLP magistraliter — kompletní receptury s frekvencí (napříč pacienty)
SELECT p.nazev, p.postup_pripravy, COUNT(*) AS pocet_predpisu
FROM predpis p
WHERE p.typ_leku = 'IPLP'
GROUP BY p.nazev, p.postup_pripravy
ORDER BY pocet_predpisu DESC;
-- nejčastěji používané suroviny v magistrech
SELECT nazev, jednotka, COUNT(*) AS pocet
FROM vydej_slozka
GROUP BY nazev, jednotka
ORDER BY pocet DESC;
-- generická záměna: co předepsal lékař vs. co lékárna vydala
SELECT pac.prijmeni, pac.jmena,
p.datum_vystaveni, p.nazev AS predepsano, p.atc,
v.nazev AS vydano, v.datum_vydeje
FROM pacient pac
JOIN zprava z ON z.pacient_id = pac.id
JOIN predpis p ON p.zprava_id = z.id
JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
WHERE p.nazev <> v.nazev;
-- pacienti s chybou API (neztotožněni)
SELECT prijmeni, jmena, datum_narozeni, poznamka
FROM pacient
WHERE poznamka IS NOT NULL
ORDER BY prijmeni;
-- lékaři dle odbornosti — kolik předpisů pochází od které speciality
SELECT RIGHT(pr.icp, 3) AS odb_kod, COUNT(*) AS pocet_predpisu
FROM predpis p
JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho
WHERE pr.icp IS NOT NULL
GROUP BY RIGHT(pr.icp, 3)
ORDER BY pocet_predpisu DESC;
-- lékový záznam pacienta dle rodného čísla (přes Firebird → MySQL)
-- krok 1: z Medicusu zjistit příjmení a datum narozeni pro RC 7309208104
-- krok 2:
SELECT pac.prijmeni, pac.jmena, pac.datum_narozeni,
p.datum_vystaveni,
COALESCE(v.nazev, p.nazev) AS vydany_lek,
v.nazev IS NULL AS nevyzvednuto,
p.atc, p.navod,
pr.prijmeni AS lekar, RIGHT(pr.icp, 3) AS odb_kod
FROM pacient pac
JOIN zprava z ON z.pacient_id = pac.id
JOIN predpis p ON p.zprava_id = z.id
JOIN predepisujici pr ON pr.lekar_kod = p.kod_predepisujiciho
LEFT JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
WHERE pac.prijmeni = 'Buzalka' AND pac.datum_narozeni = '1973-09-20'
ORDER BY p.datum_vystaveni DESC;
```
---
## Reimport ze zálohy XML (`reimport_z_xml.py`)
Slouží k opětovnému naplnění MySQL databáze z lokálních XML souborů **bez volání eRecept API**.
Použití: obnova po neúmyslném smazání databáze, migrace na nový server, re-parsování při změně schématu.
### Jak funguje
1. Načte všechny registrované pacienty z Firebirdu (ICP `09305001`, odbornost `001`)
2. Pro každý XML soubor v archivu:
- Naparsuje XML (volá `parsuj_xml()` z `06UlozitDoMySQL.py`)
- Dohledá pacienta v Firebirdu dle příjmení + data narození z XML
- Pokud je registrovaný → `upsert` pacienta do MySQL (INSERT ON DUPLICATE KEY UPDATE)
- Zavolá `uloz()` — INSERT IGNORE, takže duplicity se ignorují
3. Výpis průběhu: `[ 1/1177] Buzalka_Vladimir_1973-09-20.xml OK 12p 18v`
### Spuštění
```bash
# Výchozí adresář: xml_archive/2026-04-11
python reimport_z_xml.py
# Konkrétní podadresář
python reimport_z_xml.py xml_archive/2026-04-11
# Celý archiv rekurzivně (všechna data)
python reimport_z_xml.py xml_archive
```
### Konfigurace v souboru
```python
XML_ADRESAR = Path(__file__).parent / "xml_archive" / "2026-04-11" # výchozí adresář
ICP = "09305001" # IČP ordinace pro filtr registrovaných pacientů
ODB = "001" # odbornost (001 = praktický lékař)
```
### Poznámky
- Pacienti, kteří nejsou v Firebirdu registrováni pod daným ICP/ODB, se přeskočí
(pokud ale existují v MySQL z předchozího importu, data se aktualizují)
- Firebird slouží jako autoritativní zdroj identit — `idpac` z KAR se propíše do MySQL `pacient.idpac`
- `INSERT IGNORE` zajistí idempotentnost — opakované spuštění nepřidá duplikáty
---
## Dotazovací skripty (`Dotazy/`)
Viz samostatnou dokumentaci: [`Dotazy/DOTAZY.md`](../Dotazy/DOTAZY.md)
Stručný přehled:
| Skript | Co dělá |
|--------|---------|
| `prehled_pacienta.py` | Konzolový výpis lékového záznamu pacienta (lékaři + předpisy) |
| `prehled_pacienta_excel.py` | Totéž, ale exportuje do formátovaného souboru Excel (.xlsx) |
Pacient se identifikuje **rodným číslem** (nastavení `RODNE_CISLO` v záhlaví skriptu).
Oba skripty zobrazují **vydaný lék** (ne předepsaný), **odbornost lékaře** a příznak `*NV` pro nevyzvednuto.
---
## Závislosti (Python)
```
requests
requests-pkcs12
pymysql
fdb
zeep
mysql-connector-python
playwright
openpyxl
```
```bash
# Instalace (nebo použít setup.ps1)
pip install requests requests-pkcs12 pymysql fdb openpyxl
```
---
## XSD zdroje
Schéma verze `202501A`, soubory v `Dokumentace/2025-04-24/WSDL_XSD/NEPRIORITNI_WEBOVE_SLUZBY/`:
| Soubor | Obsah |
|--------|-------|
| `Cuer2Schema.xsd` | `NacistLekovyZaznamOdpoved`, `lz_nacteni_predepsany_lp_erp_type`, `lz_nacteni_vydany_lp_erp_type`, `slozka_iplp_*` |
| `CuerSchema.xsd` | `hvlp_type`, `zprava_odpoved_type`, `zprava_type`, `jmeno_osoby_type`, `jednotka` |
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,77 @@
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++"
# HTTP Basic Auth - UUID lékaře (jednoznačný v ČR) + osobní heslo
API_USER = "e08c89c6-2b1a-4eba-8ed9-4e3e63618379"
API_PASS = "Buzalka@Vladimir2025"
UZIVATEL = "E08C89C6-2B1A-4EBA-8ED9-4E3E63618379"
PRACOVISTE = "00214235367"
ENDPOINTS = [
"https://lekar-soap.erecept.sukl.cz/cuer/Lekar2",
]
# --- Pacient ---
PRIJMENI = "Buzalka"
JMENA = "Vladimír"
DATUM_NAROZENI = "1973-09-20"
POCET_ZNAKU_ATC = 7
POCET_MESICU = 60
def nacist_lekovy_zaznam():
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="http://www.sukl.cz/erp/201912">'
f'<Doklad>'
f'<Pristupujici><Uzivatel>{UZIVATEL}</Uzivatel><Pracoviste>{PRACOVISTE}</Pracoviste></Pristupujici>'
f'<PocetZnakuATC>{POCET_ZNAKU_ATC}</PocetZnakuATC>'
f'<PocetMesicu>{POCET_MESICU}</PocetMesicu>'
f'<Pacient><Totoznost><Jmeno><Prijmeni>{PRIJMENI}</Prijmeni><Jmena>{JMENA}</Jmena></Jmeno>'
f'<DatumNarozeni>{DATUM_NAROZENI}</DatumNarozeni></Totoznost></Pacient>'
f'</Doklad>'
f'<Zprava><ID_Zpravy>{id_zpravy}</ID_Zpravy><Verze>202501A</Verze>'
f'<Odeslano>{odeslano}</Odeslano><SW_Klienta>MEDICUS_____</SW_Klienta></Zprava>'
f'</NacistLekovyZaznamLekarDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistLekovyZaznam"',
"User-Agent": "Medicus"
}
for url in ENDPOINTS:
print(f"\n--- POST: {url} ---")
try:
resp = sess.post(url, data=soap_body.encode("utf-8"), headers=headers, timeout=15)
print(f"HTTP {resp.status_code} | {len(resp.content)} bytů")
print(resp.text)
except Exception as e:
print(f"CHYBA: {e}")
if __name__ == "__main__":
nacist_lekovy_zaznam()
@@ -0,0 +1,99 @@
import uuid
from datetime import datetime, timezone, timedelta
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://cuer-soap.erecept.sukl.cz/"
# --- Filtr ---
CP_PACIENTA = "7309208104" # rodné číslo pacienta (bez lomítka)
DATUM_OD = (datetime.now() - timedelta(days=365)).strftime("%Y-%m-%d")
DATUM_DO = datetime.now().strftime("%Y-%m-%d")
LIMIT = 100
def seznam_predpisu():
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")
filtr_pacient = ""
if CP_PACIENTA:
filtr_pacient = f"<CP_Pacienta>{CP_PACIENTA}</CP_Pacienta>"
soap_body = (
'<?xml version="1.0" encoding="UTF-8"?>'
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">'
'<soapenv:Body>'
'<SeznamPredpisuDotaz xmlns="http://www.sukl.cz/erp/201704">'
'<Doklad>'
f'<Pristupujici><Uzivatel>{UZIVATEL}</Uzivatel><Pracoviste>{PRACOVISTE}</Pracoviste></Pristupujici>'
f'<Filtr>'
f'<DatumOd>{DATUM_OD}</DatumOd>'
f'<DatumDo>{DATUM_DO}</DatumDo>'
f'<Limit>{LIMIT}</Limit>'
f'{filtr_pacient}'
f'</Filtr>'
'</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>'
'</SeznamPredpisuDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"SeznamPredpisu"',
"User-Agent": "Medicus"
}
print(f"=== SOAP REQUEST ===\n{soap_body}\n===================\n")
print(f"Datum od: {DATUM_OD}, do: {DATUM_DO}, limit: {LIMIT}")
if CP_PACIENTA:
print(f"Filtr pacienta (RC): {CP_PACIENTA}")
print(f"ID zprávy: {id_zpravy}")
print(f"Endpoint: {ENDPOINT}\n")
resp = sess.post(ENDPOINT, data=soap_body.encode("utf-8"), headers=headers, timeout=30)
print(f"HTTP status: {resp.status_code}")
output_file = f"seznam_predpisu_{id_zpravy}.xml"
with open(output_file, "wb") as f:
f.write(resp.content)
print(f"Odpověď uložena do: {output_file}")
text = resp.text
if "Fault" in text or "fault" in text:
print("\n!!! SOAP Fault v odpovědi !!!")
print(text[:2000])
else:
print("Dotaz proběhl úspěšně.")
print(f"Velikost odpovědi: {len(resp.content):,} bytů")
print("\n--- Odpověď (prvních 3000 znaků) ---")
print(text[:3000])
if __name__ == "__main__":
seznam_predpisu()
@@ -0,0 +1,66 @@
import uuid
from datetime import datetime, timezone
from requests import Session
from requests_pkcs12 import Pkcs12Adapter
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"
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+01:00")
# Přesně tělo z Medicusu
soap_body = (
'<?xml version="1.0" encoding="UTF-8"?>'
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">'
'<soapenv:Body>'
'<NacistLekovyZaznamLekarDotaz xmlns="http://www.sukl.cz/erp/201912">'
'<Doklad><Pristupujici>'
'<Uzivatel>E08C89C6-2B1A-4EBA-8ED9-4E3E63618379</Uzivatel>'
'<Pracoviste>00214235367</Pracoviste>'
'</Pristupujici>'
'<PocetZnakuATC>7</PocetZnakuATC>'
'<PocetMesicu>60</PocetMesicu>'
'<Pacient><Totoznost><Jmeno>'
'<Prijmeni>Buzalka</Prijmeni>'
'<Jmena>Vladim\u00edr</Jmena>'
'</Jmeno>'
'<DatumNarozeni>1973-09-20</DatumNarozeni>'
'</Totoznost></Pacient></Doklad>'
f'<Zprava><ID_Zpravy>{id_zpravy}</ID_Zpravy>'
'<Verze>202501A</Verze>'
f'<Odeslano>{odeslano}</Odeslano>'
'<SW_Klienta>MEDICUS_____</SW_Klienta></Zprava>'
'</NacistLekovyZaznamLekarDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistLekovyZaznam"',
"User-Agent": "Medicus"
}
endpoints = [
"https://cuer-soap.erecept.sukl.cz/",
"https://rlpo-soap.erecept.sukl.cz/",
"https://common-soap.erecept.sukl.cz/",
"https://lz-soap.erecept.sukl.cz/",
"https://lekar-soap.erecept.sukl.cz/cuer/Lekar",
]
for ep in endpoints:
print(f"\n--- {ep} ---")
try:
resp = sess.post(ep, data=soap_body.encode("utf-8"), headers=headers, timeout=10)
print(f"HTTP {resp.status_code} | {len(resp.content)} bytů")
print(resp.text[:300])
except Exception as e:
print(f"CHYBA: {e}")
@@ -0,0 +1,64 @@
import uuid
import xml.dom.minidom
from datetime import datetime, timezone
from requests import Session
from requests_pkcs12 import Pkcs12Adapter
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"
ENDPOINT = "https://lekar-soap.erecept.sukl.cz/cuer/Lekar"
NAMESPACE = "http://www.sukl.cz/erp/201704"
def nacist_ciselnik_chyb():
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'<CisChybDotaz xmlns="{NAMESPACE}">'
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'</CisChybDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistCiselnikChyb"',
"User-Agent": "Medicus"
}
print(f"Volám: {ENDPOINT}")
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")
if resp.status_code == 200:
# Hezky formátovaný výpis
dom = xml.dom.minidom.parseString(resp.content)
pretty = dom.toprettyxml(indent=" ", encoding="utf-8").decode("utf-8")
print(pretty)
# Uložit do souboru
fname = f"ciselnik_chyb_{id_zpravy[:8]}.xml"
with open(fname, "w", encoding="utf-8") as f:
f.write(pretty)
print(f"\nUloženo: {fname}")
else:
print(resp.text)
if __name__ == "__main__":
nacist_ciselnik_chyb()
@@ -0,0 +1,393 @@
# NacistLekovyZaznam — Funkční SOAP klient pro IS eRecept SÚKL
## Status
**OVĚŘENO FUNKČNÍ** — 5. dubna 2026
Odpověď serveru: `HTTP 200`, velikost: ~227 KB reálných dat
Schéma ověřeno proti: `Cuer2Schema.xsd` verze `202501A` (dokumentace SÚKL 2025-04-24)
---
## Co tato operace dělá
`NacistLekovyZaznam` je SOAP operace IS eRecept (SÚKL), která vrátí kompletní **lékový záznam pacienta** — tedy seznam všech předpisů a výdejů léků napříč všemi lékaři a lékárnami v ČR za zadané období.
Typické použití: lékař si před konzultací zobrazí, co pacient aktuálně bere, co mu bylo předepsáno a vydáno v lékárně.
---
## Klíčové informace (těžce dohledané)
### Endpoint (produkce)
```
https://lekar-soap.erecept.sukl.cz/cuer/Lekar2
```
> **Pozor:** Endpoint má na konci číslici `2` — tj. `/cuer/Lekar2`, nikoli `/cuer/Lekar`.
> Tato operace **není** dostupná na starším endpointu `/cuer/Lekar`.
> Poprvé zdokumentováno v: `eRecept_lekovy_zaznam_1v3.docx` (dokumentace SÚKL ze dne 2024-01-18).
### Endpoint (testovací prostředí)
```
https://lekar-soap.test-erecept.sukl.cz/cuer/Lekar2
```
### SOAPAction
```
"NacistLekovyZaznam"
```
### XML namespace
```
http://www.sukl.cz/erp/201912
```
> Namespace pochází z prosince 2019 a **nemění se** ani v novějších verzích rozhraní.
> Verze rozhraní se předává v elementu `<Verze>` uvnitř zprávy, ne změnou namespace.
> SÚKL zachovává zpětnou kompatibilitu — namespace zůstává `201912` i pro verze `202401A`, `202501A` atd.
---
## Další operace dostupné na stejném endpointu `/cuer/Lekar2`
Dle `CUERLekarService.wsdl` (2025-04-24) jsou na tomto endpointu celkem **4 operace**:
| Operace | SOAPAction | Popis |
|---|---|---|
| `NacistLekovyZaznam` | `NacistLekovyZaznam` | ✅ lékový záznam pacienta |
| `OverDuplicity` | `OverDuplicity` | kontrola duplicitních předpisů |
| `ZjistitPoznamkyHvlp` | `ZjistitPoznamkyHvlp` | poznámky k HVLP přípravkům |
| `GetAppInfo` | `GetAppInfo` | info o verzi API |
| `AppPing` | `AppPing` | test spojení |
---
## Autentizace (dvojitá)
IS eRecept vyžaduje **dvě vrstvy** autentizace současně:
### 1. Klientský certifikát (TLS mutual auth)
- Soubor: `AMBSUKL214235369G_31DEC2024.pfx` (certifikát lékaře vydaný SÚKL)
- Formát: PKCS#12 (`.pfx`)
- Knihovna: `requests-pkcs12``Pkcs12Adapter`
- Platnost certifikátu: do 31. 12. 2024 (při expiraci je nutné zažádat SÚKL o nový)
### 2. HTTP Basic Auth
- Uživatel: UUID lékaře (přiděluje SÚKL, jednoznačný v celé ČR)
- Heslo: osobní heslo lékaře do portálu eRecept
---
## Struktura SOAP dotazu
```xml
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<NacistLekovyZaznamLekarDotaz xmlns="http://www.sukl.cz/erp/201912">
<Doklad>
<Pristupujici>
<Uzivatel>E08C89C6-2B1A-4EBA-8ED9-4E3E63618379</Uzivatel> <!-- UUID lékaře, povinný -->
<Pracoviste>00214235367</Pracoviste> <!-- IČP pracoviště, povinný -->
</Pristupujici>
<PocetZnakuATC>7</PocetZnakuATC> <!-- POUZE hodnoty 5 nebo 7 (enum!), povinný -->
<PocetMesicu>60</PocetMesicu> <!-- max 99, VOLITELNÝ -->
<Pacient>
<Totoznost>
<Jmeno>
<Prijmeni>Buzalka</Prijmeni>
<Jmena>Vladimír</Jmena>
</Jmeno>
<DatumNarozeni>1973-09-20</DatumNarozeni>
</Totoznost>
</Pacient>
<!-- Zastupce — volitelný, pouze pokud dotazuje zastupující lékař -->
<!-- <Zastupce>
<DruhDokladu>OP</DruhDokladu> 12 znaky, volitelný -->
<!-- <CisloDokladu>123456789</CisloDokladu> 19 znaků, volitelný -->
<!-- </Zastupce> -->
</Doklad>
<Zprava>
<ID_Zpravy>dabda2ad-df61-41db-bd46-a969eced026b</ID_Zpravy> <!-- UUID, generovat pro každý dotaz -->
<Verze>202501A</Verze> <!-- aktuální verze protokolu -->
<Odeslano>2026-04-05T10:00:00+00:00</Odeslano> <!-- UTC timestamp -->
<SW_Klienta>MEDICUS_____</SW_Klienta> <!-- identifikátor SW, přesně 12 znaků -->
</Zprava>
</NacistLekovyZaznamLekarDotaz>
</soapenv:Body>
</soapenv:Envelope>
```
### Parametry dotazu (ověřeno proti Cuer2Schema.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 |
| `PocetZnakuATC` | ✅ ano | **pouze 5 nebo 7** | enum — jiné hodnoty server odmítne |
| `PocetMesicu` | ❌ volitelný | max 99 | počet měsíců do minulosti |
| `Prijmeni` | ✅ ano | — | příjmení pacienta |
| `Jmena` | ✅ ano | — | jméno/jména pacienta |
| `DatumNarozeni` | ✅ ano | `YYYY-MM-DD` | datum narození pacienta |
| `Zastupce` | ❌ volitelný | — | pouze pro zastupujícího lékaře |
| `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 zleva nebo zprava |
---
## Struktura odpovědi (ověřeno proti Cuer2Schema.xsd verze 202501A)
```
NacistLekovyZaznamOdpoved
├── Doklad
│ ├── Pacient potvrzení identity pacienta
│ │ ├── Jmeno (Prijmeni, Jmena) volitelný
│ │ └── DatumNarozeni volitelný
│ │
│ ├── PredepisujiciSeznam volitelný — lékaři kteří předepisovali
│ │ └── Predepisujici[]
│ │ ├── Lekar Kod (UUID) + Jmeno — volitelný
│ │ ├── ICZ 8 číslic — volitelný
│ │ ├── ICP 8 číslic — povinný
│ │ ├── PZS volitelný
│ │ │ ├── Nazev max 200 znaků
│ │ │ ├── Telefon max 20 znaků — volitelný
│ │ │ └── Adresa
│ │ └── Telefon max 20 znaků — volitelný
│ │
│ ├── VydavajiciSeznam volitelný — lékárníci kteří vydávali
│ │ └── Vydavajici[]
│ │ ├── Lekarnik Kod (UUID) + Jmeno
│ │ └── PZS Nazev + Adresa
│ │
│ ├── PredpisSeznam volitelný — všechny předpisy
│ │ └── Predpis[]
│ │ ├── ID_LP_Predpis UUID předpisu — povinný
│ │ ├── KodPredepisujiciho odkaz do PredepisujiciSeznam — povinný
│ │ ├── DatumVystaveni datum vystavení
│ │ ├── Mnozstvi int, 19999
│ │ ├── Navod max 80 znaků (dávkování)
│ │ ├── Opakovani int — volitelný
│ │ ├── HVLPReg volitelný (registrovaný HVLP)
│ │ ├── HVLPNereg volitelný (neregistrovaný HVLP)
│ │ ├── IPLP volitelný (individuálně připravovaný LP)
│ │ ├── INN volitelný (generický název)
│ │ └── ModryPruh boolean — volitelný
│ │
│ ├── VydejSeznam volitelný — výdeje z lékáren
│ │ └── Vydej[]
│ │ ├── ID_LP_Vydej UUID výdeje
│ │ ├── ID_LP_Predpis UUID předpisu — volitelný (odkaz na předpis)
│ │ ├── KodVydavajiciho odkaz do VydavajiciSeznam — povinný
│ │ ├── DatumVydeje datum výdeje
│ │ ├── Mnozstvi decimal, 0.019999.99
│ │ ├── Navod max 80 znaků
│ │ ├── Exspirace datum — volitelný
│ │ ├── Sarze max 50 znaků
│ │ ├── SerioveCislo max 20 znaků — volitelný
│ │ ├── Pozn max 1000 znaků — volitelný
│ │ ├── HVLPReg volitelný
│ │ ├── HVLPNereg volitelný
│ │ └── IPLP volitelný
│ │
│ └── DuplicitaSeznam volitelný — detekované duplicity výdejů
│ └── Duplicita[]
│ └── ID_LP[]
│ ├── ID_LP_Vydej UUID — volitelný
│ └── ID_LP_Predpis UUID — volitelný
└── Zprava
├── ID_Zpravy echo zpět
├── Verze
├── Odeslano
└── ...
```
> **Poznámka k odkazům:** `KodPredepisujiciho` v předpisu odpovídá `Lekar.Kod` v `PredepisujiciSeznam`.
> Stejně tak `KodVydavajiciho` odpovídá `Lekarnik.Kod` v `VydavajiciSeznam`.
> Struktura je záměrně normalizovaná — lékaři a lékárny jsou uloženi jednou, předpisy a výdeje se na ně odkazují.
Reálná velikost odpovědi: **~227 KB** (pacient s 60měsíční historií).
---
## HTTP hlavičky
```python
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistLekovyZaznam"', # uvozovky jsou součástí hodnoty!
"User-Agent": "Medicus"
}
```
---
## Závislosti (Python)
```
requests
requests-pkcs12
```
Instalace:
```bash
pip install requests requests-pkcs12
```
---
## Jak dohledat správný endpoint (postup pro budoucí operace)
Endpoint `/cuer/Lekar2` byl dohledán tímto postupem:
1. Prohledání veškeré dokumentace SÚKL (20172025) fulltext hledáním výrazu `soap:address`
2. Klíčový dokument: `eRecept_lekovy_zaznam_1v3.docx` (2024-01-18):
> *"Pro webové služby, které používá lékař a klinický farmaceut je nová verze rozhraní 202401A (původní 201912A): `https://lekar-soap.erecept.sukl.cz/cuer/Lekar2`"*
3. Ověřeno živým voláním — HTTP 200, reálná data
### Mapa endpointů IS eRecept (produkce)
| Endpoint | Určen pro | Operace |
|---|---|---|
| `https://lekar-soap.erecept.sukl.cz/cuer/Lekar` | lékař | CUER operace (předpis, zrušení…) |
| `https://lekar-soap.erecept.sukl.cz/cuer/Lekar2` | lékař | **NacistLekovyZaznam**, OverDuplicity, ZjistitPoznamkyHvlp |
| `https://lekar-soap.erecept.sukl.cz/rlpo/Lekar` | lékař | RLPO operace |
| `https://lekarnik-soap.erecept.sukl.cz/cuer/Lekarnik` | lékárník | CUER operace (výdej…) |
| `https://lekarnik-soap.erecept.sukl.cz/cuer/Lekarnik2` | lékárník | nové CUER operace lékárníka |
| `https://cuer-soap.erecept.sukl.cz/` | lékárna, ZP | doplatky, limity pojištěnce |
---
## Ztotožnění pacienta a chybové kódy
Zdroj: živé volání `NacistCiselnikChyb` na `https://lekar-soap.erecept.sukl.cz/cuer/Lekar` — ověřeno 5. 4. 2026.
### Jak funguje ztotožnění pacienta (Registr obyvatel)
Server každý dotaz porovná s **Registrem obyvatel (ROB)**. Lze použít dvě sady údajů:
| Sada | Prvky | Poznámka |
|---|---|---|
| **A — jméno** | Prijmeni + Jmena + DatumNarozeni | základní, stačí pokud je pacient jednoznačný |
| **B — doklad** | DruhDokladu + CisloDokladu | jednoznačné vždy, řeší jmenovce |
Obě sady lze kombinovat. Pokud jsou uvedeny obě, musí být konzistentní (jinak C017).
### Jak přesně probíhá ztotožnění pacienta v ROB
> Zdroj: oficiální dokumentace SÚKL k IS eRecept
IS eRecept nejprve prohledá svůj interní **kmen pacientů** (vlastní databáze dříve ztotožněných osob). Teprve při neúspěchu volá **Registr obyvatel (ROB)** — což může trvat až několik sekund. U každého pacienta s korektními údaji by se to mělo stát pouze jednou. IS eRecept průběžně přebírá změny z ROB (např. přejmenování po svatbě se projeví automaticky).
Způsoby ztotožnění probíhají v tomto pořadí:
#### 1. ECD — elektronicky čitelný doklad
Hledání dle `DruhDokladu` + `CisloDokladu`. Pokud zadáno, má přednost.
#### 2. JPDN — jméno, příjmení, datum narození
Pokud nalezena právě jedna osoba → hotovo (`ROB=JPDN`).
Pokud nalezeno více jmenovců → přechod na JPDNA.
Pokud nenalezena žádná → upozornění (měkká chyba).
#### 3. JPDNA — jméno, příjmení, datum narození + adresa trvalého pobytu
ROB umí automaticky opravit záměnu čísla popisného a orientačního.
Pokud nalezena právě jedna osoba → hotovo (`ROB=JPDNA`).
Pokud nenalezena žádná → upozornění, předpis se uloží s kódem **C023**.
> **Důležité:** Adresu není nutné uvádět, pokud proběhne úspěšné vyhledání bez ní. V takovém případě se na předpisu použije adresa dohledaná v ROB.
> **Cizinci:** Lze uvést zahraniční adresu, nebo adresu hotelu/lázní v ČR.
> **⚠️ Testování:** Ztotožňování reálných osob smí probíhat **pouze na produkci**. O každém ztotožnění je záznam v základních registrech — pacient může obdržet výpis do datové schránky. Na testovacím prostředí jsou dostupné testovací identity na: https://www.szrcr.cz/cs/sluzby/spravci-a-vyvojari/vyvojari-agendovych-informacnich-systemu#testdata (mění se denně mezi 6:006:30).
---
### Hodnoty DruhDokladu
⚠️ **Oprava předchozí dokumentace** — povolených hodnot je více než jen `ID` a `P`:
| Hodnota | Doklad |
|---|---|
| `ID` | občanský průkaz (nový formát) |
| `OP` | občanský průkaz (starší označení) |
| `P` | cestovní pas |
| `IR` | povolení k pobytu |
| `VS` | vízový štítek |
| `PS` | pobytový štítek |
`CisloDokladu` — pouze číslice, max 9 znaků.
---
### Chybové kódy — ztotožnění pacienta (skupina C)
| Kód | Typ | Popis | Co udělat |
|---|---|---|---|
| **C010** | tvrdá | Jméno + příjmení + datum narození nenalezeno v ROB | Zkontrolovat překlep, záměnu jména a příjmení |
| **C011** | tvrdá | Druh a číslo dokladu nenalezeno v ROB | Zkontrolovat číslo a platnost dokladu |
| **C012** | tvrdá | Adresa neodpovídá — více jmenovců | Doplnit `DruhDokladu` + `CisloDokladu` |
| **C014** | tvrdá | Není uvedeno ani jméno/datum, ani číslo dokladu | Doplnit alespoň jednu sadu |
| **C015** | tvrdá | Více jmenovců v ROB, nelze dohledat adresu | Doplnit adresu **nebo** číslo dokladu |
| **C016** | měkká | Pacient mladší 33 dní | Předpis uložen, ale nebude v lékovém záznamu |
| **C017** | tvrdá | Jméno/datum neodpovídá osobě nalezené dle čísla dokladu | Opravit jméno nebo ho neuvádět |
| **C018** | tvrdá | Nelze dohledat, chybí adresa | Doplnit adresu nebo číslo dokladu |
| **C019** | tvrdá | Datum narození v budoucnosti | Opravit datum |
| **C020** | tvrdá | Chybí jméno, příjmení nebo datum narození | Doplnit kompletní sadu |
| **C022** | tvrdá | Pacient dle ROB již zemřel | — |
| **C023** | měkká | Předpis uložen, ale kvůli chybě ztotožnění **nebude v lékovém záznamu** | Opravit identifikaci a provést změnu předpisu |
| **C024** | měkká | Registr LP prohledán, pacient nenalezen v ROB (možný cizinec) | — |
| **C025** | měkká | Výdej uložen, ale kvůli chybě ztotožnění nebude v lékovém záznamu | — |
> **Měkká chyba** = operace proběhla, ale s upozorněním. **Tvrdá chyba** = operace odmítnuta.
### Chybové kódy — doklad totožnosti
| Kód | Popis |
|---|---|
| **L076** | Neznámý druh dokladu — viz tabulka povolených hodnot výše |
### Chybové kódy — systémové
| Kód | Popis |
|---|---|
| **I005** | Registr obyvatel nedostupný (mimo kontrolu SÚKL) — zkusit znovu |
| **I007** | Chyba dotazu na ROB — vstupní data nemají správný formát |
---
### Proč Medicus žádá o občanský průkaz
Typický scénář: lékař pošle dotaz pouze se jménem + datem narození. Pokud existuje více jmenovců v ROB (méně než 1 % obyvatel), server vrátí **C015**. Medicus tento kód rozpozná a zobrazí dialog *"zadejte číslo občanského průkazu"*. Lékař zadá číslo, Medicus pošle dotaz znovu s `DruhDokladu=ID` + `CisloDokladu=...` → server jednoznačně identifikuje pacienta metodou **ECD**.
### Identifikace pro úhradové mechanismy (ZP)
Oddělená od ztotožnění v ROB — probíhá přes **kód ZP + číslo pojištěnce**. IS eRecept číslo pojištěnce **neověřuje** — není garantováno, že je správné. Pokud lékárna zjistí chybu kódu pojišťovny, může ji opravit operací `ZmenitPojistovnuPredpisu`.
### Skript s občankou
`NacistLekovyZaznam_FUNKCNI_OBCANKA.py` — varianta s `DruhDokladu` + `CisloDokladu` v dotazu.
---
## Soubory skriptů
| Skript | Popis |
|---|---|
| `NacistLekovyZaznam_FUNKCNI.py` | základní dotaz — jméno + datum narození |
| `NacistLekovyZaznam_FUNKCNI_OBCANKA.py` | dotaz s číslem občanského průkazu |
| `NacistCiselnikChyb.py` | stáhne kompletní číselník chybových kódů ze serveru |
---
## Zdroje dokumentace SÚKL
| Soubor | Datum | Obsah |
|---|---|---|
| `eRecept_lekovy_zaznam_1v1.docx` | 2020-05-28 | původní popis lékového záznamu |
| `eRecept_lekovy_zaznam_1v3.docx` | 2024-01-18 | endpointy Lekar2/Lekarnik2, verze 202401A |
| `CUERLekarService.wsdl` | 2025-04-24 | nejnovější definice rozhraní, seznam operací |
| `Cuer2Schema.xsd` | 2025-04-24 | kompletní XSD schéma dotazu i odpovědi, verze 202501A |
| `CuerSchema.xsd` | 2025-04-24 | sdílené typy (Zprava, Pristupujici, adresy…) |
@@ -0,0 +1,77 @@
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++"
# HTTP Basic Auth - UUID lékaře (jednoznačný v ČR) + osobní heslo
API_USER = "e08c89c6-2b1a-4eba-8ed9-4e3e63618379"
API_PASS = "Buzalka@Vladimir2025"
UZIVATEL = "E08C89C6-2B1A-4EBA-8ED9-4E3E63618379"
PRACOVISTE = "00214235367"
ENDPOINTS = [
"https://lekar-soap.erecept.sukl.cz/cuer/Lekar2",
]
# --- Pacient ---
PRIJMENI = "Buzalka"
JMENA = "Vladimír"
DATUM_NAROZENI = "1973-09-20"
POCET_ZNAKU_ATC = 7
POCET_MESICU = 60
def nacist_lekovy_zaznam():
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="http://www.sukl.cz/erp/201912">'
f'<Doklad>'
f'<Pristupujici><Uzivatel>{UZIVATEL}</Uzivatel><Pracoviste>{PRACOVISTE}</Pracoviste></Pristupujici>'
f'<PocetZnakuATC>{POCET_ZNAKU_ATC}</PocetZnakuATC>'
f'<PocetMesicu>{POCET_MESICU}</PocetMesicu>'
f'<Pacient><Totoznost><Jmeno><Prijmeni>{PRIJMENI}</Prijmeni><Jmena>{JMENA}</Jmena></Jmeno>'
f'<DatumNarozeni>{DATUM_NAROZENI}</DatumNarozeni></Totoznost></Pacient>'
f'</Doklad>'
f'<Zprava><ID_Zpravy>{id_zpravy}</ID_Zpravy><Verze>202501A</Verze>'
f'<Odeslano>{odeslano}</Odeslano><SW_Klienta>MEDICUS_____</SW_Klienta></Zprava>'
f'</NacistLekovyZaznamLekarDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistLekovyZaznam"',
"User-Agent": "Medicus"
}
for url in ENDPOINTS:
print(f"\n--- POST: {url} ---")
try:
resp = sess.post(url, data=soap_body.encode("utf-8"), headers=headers, timeout=15)
print(f"HTTP {resp.status_code} | {len(resp.content)} bytů")
print(resp.text)
except Exception as e:
print(f"CHYBA: {e}")
if __name__ == "__main__":
nacist_lekovy_zaznam()
@@ -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()
+194
View File
@@ -0,0 +1,194 @@
"""
Reimport vsech XML souboru z xml_archive do MySQL — bez volani API.
Pouziti:
python reimport_z_xml.py # vsechna XML z 2026-04-11
python reimport_z_xml.py xml_archive/2026-04-11 # konkretni adresar
python reimport_z_xml.py xml_archive # vsechny podadresare rekurzivne
"""
import sys
import importlib.util
from pathlib import Path
from datetime import date
import fdb
import pymysql
import pymysql.cursors
# Windows konzole
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(errors="replace")
# ── Konfigurace ───────────────────────────────────────────────────────────────
XML_ADRESAR = Path(__file__).parent / "xml_archive" / "2026-04-11"
FB = dict(
dsn = r"localhost:c:\medicus 3\data\medicus.fdb",
user = "SYSDBA",
password = "masterkey",
charset = "win1250",
)
DB = dict(
host = "192.168.1.76",
user = "root",
password = "Vlado9674+",
database = "medicus",
charset = "utf8mb4",
cursorclass = pymysql.cursors.DictCursor,
)
ICP = "09305001"
ODB = "001"
# ─────────────────────────────────────────────────────────────────────────────
# Nacteni parsovaci logiky z 06UlozitDoMySQL.py
_spec = importlib.util.spec_from_file_location(
"m06", Path(__file__).parent / "06UlozitDoMySQL.py"
)
_m06 = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(_m06)
parsuj_xml = _m06.parsuj_xml
uloz = _m06.uloz
inicializuj_schema = _m06.inicializuj_schema
def nacti_pacienty_z_fb():
"""Vrati slovnik {(prijmeni_upper, datnar): idpac} ze vsech pacientu v Medicusu."""
conn = fdb.connect(**FB)
try:
cur = conn.cursor()
dnes = date.today().isoformat()
cur.execute("""
SELECT KAR.IDPAC, KAR.PRIJMENI, KAR.JMENO, KAR.DATNAR
FROM KAR
WHERE KAR.vyrazen = 'N'
AND EXISTS (
SELECT 1 FROM registr r
JOIN icp i ON r.idicp = i.idicp
WHERE r.idpac = kar.idpac
AND r.datum <= ?
AND (r.datum_zruseni IS NULL OR r.datum_zruseni >= ?)
AND r.priznak IN ('V','D','A')
AND i.icp = ?
AND i.odb = ?
)
""", (dnes, dnes, ICP, ODB))
result = {}
for row in cur.fetchall():
idpac, prijmeni, jmeno, datnar = row
klic = (prijmeni.strip().upper(), datnar)
result[klic] = {"idpac": idpac, "prijmeni": prijmeni.strip(), "jmeno": jmeno.strip(), "datnar": datnar}
print(f"Firebird: nacteno {len(result)} registrovanych pacientu")
return result
finally:
conn.close()
def upsert_pacient(cur, pac):
cur.execute("""
INSERT INTO pacient (idpac, prijmeni, jmena, datum_narozeni)
VALUES (%s, %s, %s, %s)
ON DUPLICATE KEY UPDATE
prijmeni = VALUES(prijmeni),
jmena = VALUES(jmena)
""", (pac["idpac"], pac["prijmeni"], pac["jmeno"], pac["datnar"]))
cur.execute("SELECT id FROM pacient WHERE idpac = %s", (pac["idpac"],))
return cur.fetchone()["id"]
def main():
# Adresar z argumentu nebo default
adresar = Path(sys.argv[1]) if len(sys.argv) > 1 else XML_ADRESAR
if not adresar.is_dir():
sys.exit(f"Adresar neexistuje: {adresar}")
# Najdi vsechna XML rekurzivne
xml_soubory = sorted(adresar.rglob("*.xml"))
if not xml_soubory:
sys.exit(f"Zadne XML soubory nalezeny v: {adresar}")
print(f"Nalezeno {len(xml_soubory)} XML souboru v: {adresar}")
# Nacti pacienty z Firebirdu
fb_pacienti = nacti_pacienty_z_fb()
# Pripoj se k MySQL a inicializuj schema
conn = pymysql.connect(**DB)
try:
inicializuj_schema(conn)
ok = chyba = preskoceno = 0
p_celkem = v_celkem = 0
for i, xml_path in enumerate(xml_soubory, 1):
rel = xml_path.relative_to(Path(__file__).parent)
try:
zprava, predpisy, vydeji, predepisujici, vydavajici = parsuj_xml(xml_path)
except Exception as e:
print(f"[{i:4}/{len(xml_soubory)}] {xml_path.name:<45} CHYBA parsovani: {e}")
chyba += 1
continue
# Zjisti prijmeni a datum narozeni z XML odpovedi
pac_prijmeni = (zprava.get("pacient_prijmeni") or "").upper()
pac_datnar = zprava.get("pacient_datum_narozeni") # string YYYY-MM-DD nebo None
# Prevod na date objekt pro porovnani s Firebirdem
if pac_datnar and isinstance(pac_datnar, str):
try:
from datetime import datetime
pac_datnar_d = datetime.strptime(pac_datnar[:10], "%Y-%m-%d").date()
except ValueError:
pac_datnar_d = None
elif hasattr(pac_datnar, "year"):
pac_datnar_d = pac_datnar
else:
pac_datnar_d = None
klic = (pac_prijmeni, pac_datnar_d)
fb_pac = fb_pacienti.get(klic)
if not fb_pac:
# Pacient neni registrovan — uloz bez idpac (bude ignorovan pri hromadnem behu)
# Zkus najit v MySQL podle jmena a data
with conn.cursor() as cur:
cur.execute(
"SELECT id FROM pacient WHERE prijmeni = %s AND datum_narozeni = %s",
(zprava.get("pacient_prijmeni"), pac_datnar)
)
row = cur.fetchone()
if row:
pacient_id = row["id"]
else:
preskoceno += 1
print(f"[{i:4}/{len(xml_soubory)}] {xml_path.name:<45} PRESKOCENO (neni v registru)")
continue
else:
with conn.cursor() as cur:
pacient_id = upsert_pacient(cur, fb_pac)
conn.commit()
try:
stats = uloz(conn, zprava, predpisy, vydeji, predepisujici, vydavajici,
pacient_id=pacient_id, xml_soubor=str(rel))
conn.commit()
p_celkem += stats["predpisy_novych"]
v_celkem += stats["vydeji_novych"]
print(f"[{i:4}/{len(xml_soubory)}] {xml_path.name:<45} OK "
f"{stats['predpisy_novych']:3}p {stats['vydeji_novych']:3}v")
ok += 1
except Exception as e:
conn.rollback()
print(f"[{i:4}/{len(xml_soubory)}] {xml_path.name:<45} CHYBA ukladani: {e}")
chyba += 1
print()
print(f"Hotovo: {ok} OK, {chyba} chyb, {preskoceno} preskoceno")
print(f"Celkem vlozeno: {p_celkem} predpisu, {v_celkem} vydejuu")
finally:
conn.close()
if __name__ == "__main__":
main()
@@ -0,0 +1,249 @@
"""
Stažení detailu receptů (NacistPredpis) z eRecept SÚKL.
Logika přeskakování:
- Recept je v recept_doklad se stav_terminal = 1 → přeskočit (vydaný / zrušený)
- Recept není v recept_doklad → stáhnout (nový)
- Recept je v recept_doklad se stav_terminal = 0 → stáhnout znovu (dosud nevyzvednutý)
Spuštění:
python 10_StahnoutXML.py # všechny od 2025-01-01
python 10_StahnoutXML.py --od 2026-01-01
python 10_StahnoutXML.py --limit 50 # testování
XML odpovědi se ukládají do xml_archive/YYYY-MM-DD/ERP_KOD.xml
"""
import sys
import time
import uuid
from datetime import datetime, timezone, date
from pathlib import Path
import random
import fdb
import pymysql
import pymysql.cursors
from requests import Session
from requests_pkcs12 import Pkcs12Adapter
sys.path.insert(0, str(Path(__file__).parent.parent))
from Knihovny.najdi_dropbox import get_dropbox_root
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(errors="replace")
# ── Konfigurace eRecept ──────────────────────────────────────────────────────
PFX_FILE = Path(__file__).parent.parent / "AMBSUKL214235369G_31DEC2024.pfx"
PFX_PASS = "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/Lekar"
NAMESPACE = "http://www.sukl.cz/erp/201704"
PAUZA_MIN = 4 # sekund mezi voláními API (minimum)
PAUZA_MAX = 6 # sekund mezi voláními API (maximum)
# ── Konfigurace Firebird ─────────────────────────────────────────────────────
FB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb'
FB_USER = 'SYSDBA'
FB_PASS = 'masterkey'
FB_CHARSET = 'win1250'
# ── Konfigurace MySQL ────────────────────────────────────────────────────────
DB = dict(
host = "192.168.1.76",
user = "root",
password = "Vlado9674+",
database = "medicus",
charset = "utf8mb4",
cursorclass = pymysql.cursors.DictCursor,
)
# ── Adresáře ─────────────────────────────────────────────────────────────────
XML_DIR = (
Path(get_dropbox_root())
/ "Ordinace"
/ "Dokumentace_ke_zpracování"
/ "Zúčtovací zprávy"
/ "NačteníPředpisuWithClaude"
/ "xml_archive"
)
# ── Parametry spuštění (uprav zde) ───────────────────────────────────────────
DATUM_OD = "2025-01-01" # recepty od tohoto data
LIMIT = None # max počet receptů ke stažení; None = bez omezení
# ─────────────────────────────────────────────────────────────────────────────
def nacti_terminal_set(mysql_conn):
"""
Vrátí set ERP kódů, které jsou již terminální (vydané / zrušené / expirované).
Jeden dotaz na začátku — pak jen O(1) lookup v Pythonu.
"""
with mysql_conn.cursor() as cur:
cur.execute("SELECT id_dokladu FROM recept_doklad WHERE stav_terminal = 1")
return {row["id_dokladu"] for row in cur.fetchall()}
def nacti_erp_kody(fb_conn, datum_od, limit=None):
"""
Načte unikátní ERP kódy z Firebirdu (recept_epodani.erp) od datum_od.
Vrací list tuplů: (datum, lek, dop, idpac, prijmeni, jmeno, erp_kod)
"""
if limit:
sql = f"SELECT FIRST {int(limit)}"
else:
sql = "SELECT"
sql += """
r.datum, r.lek, r.dop, r.idpac,
TRIM(kar.prijmeni) AS prijmeni, TRIM(kar.jmeno) AS jmeno,
ep.erp
FROM recept r
JOIN recept_epodani ep ON r.id_epodani = ep.id
JOIN kar ON r.idpac = kar.idpac
WHERE r.datum >= ? AND ep.erp IS NOT NULL AND r.STORNO = 'F'
ORDER BY r.datum DESC
"""
cur = fb_conn.cursor()
cur.execute(sql, [datum_od])
rows = cur.fetchall()
cur.close()
# deduplikace dle ERP kódu — jeden recept může mít více léků (řádků)
seen = set()
unique = []
for row in rows:
erp = row[6]
if erp not in seen:
seen.add(erp)
unique.append(row)
return unique
def volej_nacist_predpis(sess, erp_kod):
"""Zavolá NacistPredpis SOAP a vrátí (status_code, response_text)."""
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'<NacteniPredpisuDotaz xmlns="{NAMESPACE}">'
f'<Doklad>'
f'<Pristupujici>'
f'<Uzivatel>{UZIVATEL}</Uzivatel>'
f'<Pracoviste>{PRACOVISTE}</Pracoviste>'
f'</Pristupujici>'
f'<Identifikator>'
f'<ID_Dokladu>{erp_kod}</ID_Dokladu>'
f'</Identifikator>'
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'</NacteniPredpisuDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistPredpis"',
"User-Agent": "Medicus",
}
resp = sess.post(ENDPOINT, data=soap_body.encode("utf-8"), headers=headers, timeout=15)
return resp.status_code, resp.text
def main():
datum_od = DATUM_OD
limit = LIMIT
dnes = date.today().isoformat()
out_dir = XML_DIR / dnes
out_dir.mkdir(parents=True, exist_ok=True)
# ── 1. Načti terminální sadu z MySQL ─────────────────────────────────────
print("Připojuji MySQL...")
mysql = pymysql.connect(**DB)
terminal = nacti_terminal_set(mysql)
mysql.close()
print(f" Terminálních receptů v DB: {len(terminal)}\n")
# ── 2. Načti ERP kódy z Firebirdu ────────────────────────────────────────
print("Připojuji Firebird...")
fb = fdb.connect(dsn=FB_DSN, user=FB_USER, password=FB_PASS, charset=FB_CHARSET)
rows = nacti_erp_kody(fb, datum_od, limit)
fb.close()
print(f" Unikátních ERP kódů v Medicusu (od {datum_od}): {len(rows)}\n")
if not rows:
print("Žádné recepty k zpracování.")
return
# ── 3. Filtruj — přeskoč terminální ──────────────────────────────────────
ke_stazeni = [r for r in rows if r[6] not in terminal]
preskoceno = len(rows) - len(ke_stazeni)
print(f" Přeskočeno (terminální): {preskoceno}")
print(f" Ke stažení: {len(ke_stazeni)}\n")
if not ke_stazeni:
print("Vše je již staženo a terminální. Hotovo.")
return
# ── 4. SOAP session ───────────────────────────────────────────────────────
sess = Session()
sess.mount("https://", Pkcs12Adapter(pkcs12_filename=PFX_FILE, pkcs12_password=PFX_PASS))
sess.auth = (API_USER, API_PASS)
ok = 0
chyby = 0
for i, row in enumerate(ke_stazeni, 1):
datum_rec, lek, dop, idpac, prijmeni, jmeno, erp_kod = row
lek_str = f"{lek} {dop}".strip() if dop else str(lek or "").strip()
label = f"{prijmeni} {jmeno}".strip()
print(f"[{i:4d}/{len(ke_stazeni)}] {label:30s} {erp_kod} ", end="", flush=True)
try:
status, text = volej_nacist_predpis(sess, erp_kod)
je_chyba = status != 200 or "<soap:Fault" in text or "Fault>" in text
if not je_chyba:
xml_file = out_dir / f"{erp_kod}.xml"
xml_file.write_text(text, encoding="utf-8")
print(f"OK {len(text.encode()) / 1024:5.1f} KB {lek_str[:40]}")
ok += 1
else:
chyba_short = text[:120].replace("\n", " ")
print(f"CHYBA HTTP {status} {chyba_short}")
xml_file = out_dir / f"{erp_kod}_CHYBA.xml"
xml_file.write_text(text, encoding="utf-8")
chyby += 1
except Exception as e:
print(f"EXCEPTION {e}")
chyby += 1
if i < len(ke_stazeni):
time.sleep(random.uniform(PAUZA_MIN, PAUZA_MAX))
print(f"\nHotovo: {ok} OK, {chyby} chyb, {preskoceno} přeskočeno")
print(f"XML: {out_dir}")
if __name__ == "__main__":
main()
+355
View File
@@ -0,0 +1,355 @@
"""
Naparsuje XML soubory z xml_archive a uloží data do MySQL tabulek
recept_doklad a recept_plp.
Pro každý ERP kód zpracuje NEJNOVĚJŠÍ XML soubor (nejvyšší datum v archivu).
Opakované spuštění je bezpečné — používá UPSERT a INSERT IGNORE.
Spuštění:
python 11_ParseXML.py # celý archiv
python 11_ParseXML.py --datum 2026-04-14 # jen konkrétní den
"""
import sys
import argparse
from datetime import date
from pathlib import Path
import xml.etree.ElementTree as ET
import pymysql
import pymysql.cursors
sys.path.insert(0, str(Path(__file__).parent.parent))
from Knihovny.najdi_dropbox import get_dropbox_root
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(errors="replace")
# ── Konfigurace ───────────────────────────────────────────────────────────────
DB = dict(
host = "192.168.1.76",
user = "root",
password = "Vlado9674+",
database = "medicus",
charset = "utf8mb4",
cursorclass = pymysql.cursors.DictCursor,
)
XML_DIR = (
Path(get_dropbox_root())
/ "Ordinace"
/ "Dokumentace_ke_zpracování"
/ "Zúčtovací zprávy"
/ "NačteníPředpisuWithClaude"
/ "xml_archive"
)
NS = "http://www.sukl.cz/erp/201704"
# ── Parametry spuštění (uprav zde, nebo nech None = celý archiv) ──────────────
DATUM_FILTR = None # např. "2026-04-14", nebo None = celý archiv
# ─────────────────────────────────────────────────────────────────────────────
def t(el, tag):
"""Vrátí text prvního potomka s daným tagem, nebo None."""
found = el.find(f"{{{NS}}}{tag}")
return found.text.strip() if found is not None and found.text else None
def ts(s):
"""ISO datetime → MySQL DATETIME string."""
return s[:19].replace("T", " ") if s else None
def bool_el(el, tag):
return 1 if t(el, tag) == "true" else 0
def parsuj_xml(xml_text, xml_soubor):
"""
Naparsuje XML odpověď NacistPredpis.
Vrátí (doklad_dict, [plp_dict, ...]) nebo None při chybě.
"""
try:
root = ET.fromstring(xml_text)
doklad = root.find(f".//{{{NS}}}Doklad")
if doklad is None:
return None
except ET.ParseError:
return None
# ── doklad ────────────────────────────────────────────────────────────────
id_dokladu = t(doklad, "ID_Dokladu")
stav = t(doklad, "Stav")
datum_vystaveni = t(doklad, "DatumVystaveni")
platnost_do_s = t(doklad, "PlatnostDo")
vypis_do = t(doklad, "VypisDo")
akutni = bool_el(doklad, "Akutni")
rodina = bool_el(doklad, "Rodina")
opakovani_s = t(doklad, "Opakovani")
druh_pojisteni = t(doklad, "DruhPojisteni")
modry_pruh = bool_el(doklad, "ModryPruh")
pozn = t(doklad, "Pozn")
zap_s = t(doklad, "ZapocitatelnyDoplatekZbyvaDoLimitu")
zmena = ts(t(doklad, "Zmena"))
zalozeni = ts(t(doklad, "Zalozeni"))
# stav_terminal
platnost_date = date.fromisoformat(platnost_do_s) if platnost_do_s else None
expiroval = platnost_date is not None and platnost_date < date.today()
stav_terminal = 1 if stav in ("PLNE_VYDANY", "ZRUSENY") or expiroval else 0
# ── pacient ───────────────────────────────────────────────────────────────
pac = doklad.find(f"{{{NS}}}Pacient")
zp_el = pac.find(f"{{{NS}}}ZP") if pac is not None else None
cp = t(pac, "CP") if pac is not None else None
zp_kod = t(zp_el, "Kod") if zp_el is not None else None
zp_nazev = t(zp_el, "Nazev") if zp_el is not None else None
pac_telefon = t(pac, "Telefon") if pac is not None else None
pac_notif = t(pac, "Notifikace") if pac is not None else None
pac_pohlavi = t(pac, "Pohlavi") if pac is not None else None
# ── predepisujici ─────────────────────────────────────────────────────────
pred = doklad.find(f"{{{NS}}}Predepisujici")
lekar_el = pred.find(f"{{{NS}}}Lekar") if pred is not None else None
odb_el = pred.find(f"{{{NS}}}Odbornost") if pred is not None else None
lekar_kod_raw = t(lekar_el, "Kod") if lekar_el is not None else None
# "skryto" není UUID → uložíme NULL
lekar_kod = lekar_kod_raw if lekar_kod_raw and lekar_kod_raw.lower() != "skryto" else None
odb_kod = t(odb_el, "Kod") if odb_el is not None else None
odb_nazev = t(odb_el, "Nazev") if odb_el is not None else None
lekar_email = t(pred, "Email") if pred is not None else None
doklad_dict = dict(
id_dokladu = id_dokladu,
stav = stav,
stav_terminal = stav_terminal,
datum_vystaveni = datum_vystaveni,
platnost_do = platnost_do_s,
vypis_do = vypis_do,
akutni = akutni,
rodina = rodina,
opakovani = int(opakovani_s) if opakovani_s else None,
druh_pojisteni = druh_pojisteni,
modry_pruh = modry_pruh,
pozn = pozn,
zap_doplatek = float(zap_s) if zap_s else None,
zmena = zmena,
zalozeni = zalozeni,
lekar_kod = lekar_kod,
odbornost_kod = odb_kod,
odbornost_nazev = odb_nazev,
lekar_email = lekar_email,
cp = cp,
zp_kod = zp_kod,
zp_nazev = zp_nazev,
pac_telefon = pac_telefon,
pac_notifikace = pac_notif,
pac_pohlavi = pac_pohlavi,
xml_soubor = str(xml_soubor),
)
# ── PLP položky ───────────────────────────────────────────────────────────
plp_list = []
for plp_el in doklad.findall(f"{{{NS}}}PLP"):
id_lp = t(plp_el, "ID_LP")
uhrada = t(plp_el, "Uhrada")
prekroceni = 1 if t(plp_el, "Prekroceni") == "true" else 0
if id_lp:
plp_list.append(dict(
id_lp = id_lp,
id_dokladu = id_dokladu,
uhrada = uhrada,
prekroceni = prekroceni,
))
# ── Vydej ─────────────────────────────────────────────────────────────────
vydej_list = []
for vydej_el in doklad.findall(f"{{{NS}}}Vydej"):
id_vydeje = t(vydej_el, "ID_Dokladu")
datum_vydeje = t(vydej_el, "DatumVydeje")
nazev_pzs = t(vydej_el, "NazevPZS")
jmeno_raw = t(vydej_el, "JmenoVydavajiciho")
jmeno_vydavajiciho = jmeno_raw if jmeno_raw and jmeno_raw.lower() != "skryto" else None
vydej_zalozeni = ts(t(vydej_el, "Zalozeni"))
vydej_zmena = ts(t(vydej_el, "Zmena"))
for vlp_el in vydej_el.findall(f"{{{NS}}}VLP"):
id_lp_predpis = t(vlp_el, "IdLpErp")
if not id_lp_predpis or not id_vydeje:
continue
vydej_list.append(dict(
id_vydeje = id_vydeje,
id_lp_predpis = id_lp_predpis,
id_dokladu = id_dokladu,
datum_vydeje = datum_vydeje,
nazev_pzs = nazev_pzs,
jmeno_vydavajiciho = jmeno_vydavajiciho,
mnozstvi = t(vlp_el, "Mnozstvi"),
nazev_vlp = t(vlp_el, "Nazev"),
kod_vlp = t(vlp_el, "Kod"),
navod = t(vlp_el, "Navod"),
zalozeni = vydej_zalozeni,
zmena = vydej_zmena,
))
return doklad_dict, plp_list, vydej_list
def uloz(conn, doklad, plp_list, vydej_list):
"""UPSERT dokladu, INSERT IGNORE PLP a vydej položek."""
with conn.cursor() as cur:
# recept_doklad — ON DUPLICATE KEY UPDATE (stav se může změnit)
cur.execute("""
INSERT INTO recept_doklad
(id_dokladu, stav, stav_terminal, datum_vystaveni, platnost_do,
vypis_do, akutni, rodina, opakovani, druh_pojisteni, modry_pruh,
pozn, zap_doplatek, zmena, zalozeni,
lekar_kod, odbornost_kod, odbornost_nazev, lekar_email,
cp, zp_kod, zp_nazev, pac_telefon, pac_notifikace, pac_pohlavi,
xml_soubor, stazeno)
VALUES
(%(id_dokladu)s, %(stav)s, %(stav_terminal)s, %(datum_vystaveni)s, %(platnost_do)s,
%(vypis_do)s, %(akutni)s, %(rodina)s, %(opakovani)s, %(druh_pojisteni)s, %(modry_pruh)s,
%(pozn)s, %(zap_doplatek)s, %(zmena)s, %(zalozeni)s,
%(lekar_kod)s, %(odbornost_kod)s, %(odbornost_nazev)s, %(lekar_email)s,
%(cp)s, %(zp_kod)s, %(zp_nazev)s, %(pac_telefon)s, %(pac_notifikace)s, %(pac_pohlavi)s,
%(xml_soubor)s, NOW())
ON DUPLICATE KEY UPDATE
stav = VALUES(stav),
stav_terminal = VALUES(stav_terminal),
platnost_do = VALUES(platnost_do),
druh_pojisteni = VALUES(druh_pojisteni),
pozn = VALUES(pozn),
zap_doplatek = VALUES(zap_doplatek),
zmena = VALUES(zmena),
zp_kod = VALUES(zp_kod),
zp_nazev = VALUES(zp_nazev),
pac_telefon = VALUES(pac_telefon),
pac_notifikace = VALUES(pac_notifikace),
xml_soubor = VALUES(xml_soubor),
stazeno = NOW()
""", doklad)
# recept_plp — INSERT IGNORE (UUID je stabilní, nemění se)
for plp in plp_list:
cur.execute("""
INSERT IGNORE INTO recept_plp (id_lp, id_dokladu, uhrada, prekroceni)
VALUES (%(id_lp)s, %(id_dokladu)s, %(uhrada)s, %(prekroceni)s)
""", plp)
# recept_vydej — INSERT IGNORE (výdej se nemění)
for v in vydej_list:
cur.execute("""
INSERT IGNORE INTO recept_vydej
(id_vydeje, id_lp_predpis, id_dokladu, datum_vydeje,
nazev_pzs, jmeno_vydavajiciho, mnozstvi, nazev_vlp,
kod_vlp, navod, zalozeni, zmena)
VALUES
(%(id_vydeje)s, %(id_lp_predpis)s, %(id_dokladu)s, %(datum_vydeje)s,
%(nazev_pzs)s, %(jmeno_vydavajiciho)s, %(mnozstvi)s, %(nazev_vlp)s,
%(kod_vlp)s, %(navod)s, %(zalozeni)s, %(zmena)s)
""", v)
conn.commit()
def najdi_nejnovejsi_xml(datum_filtr=None):
"""
Projde xml_archive, vrátí dict {erp_kod: Path} s nejnovějším XML pro každý kód.
Přeskočí soubory končící _CHYBA.xml.
datum_filtr: pokud zadáno (YYYY-MM-DD), zpracuje jen daný den.
"""
nejnovejsi = {}
if datum_filtr:
slozky = [XML_DIR / datum_filtr]
else:
slozky = sorted(XML_DIR.iterdir()) # seřazeno dle názvu = chronologicky
for slozka in slozky:
if not slozka.is_dir():
continue
for xml_file in slozka.glob("*.xml"):
if xml_file.stem.endswith("_CHYBA"):
continue
erp_kod = xml_file.stem
# pozdější složka přepíše dřívější → nejnovější vyhraje
nejnovejsi[erp_kod] = xml_file
return nejnovejsi
def nacti_zpracovane(conn):
"""Vrátí dict {id_dokladu: xml_soubor} pro všechny již zpracované záznamy."""
with conn.cursor() as cur:
cur.execute("SELECT id_dokladu, xml_soubor FROM recept_doklad WHERE xml_soubor IS NOT NULL")
return {row["id_dokladu"]: row["xml_soubor"] for row in cur.fetchall()}
def main():
datum_filtr = DATUM_FILTR
xml_mapa = najdi_nejnovejsi_xml(datum_filtr)
celkem = len(xml_mapa)
print(f"Nalezeno {celkem} XML souborů v archivu\n")
if not celkem:
print("Žádné soubory.")
return
conn = pymysql.connect(**DB)
# Jednorázové opravy schématu (bezpečné opakovat)
with conn.cursor() as cur:
# uhrada: původní ENUM neobsahoval PACIENT
cur.execute("ALTER TABLE recept_plp MODIFY uhrada VARCHAR(20)")
# pac_pohlavi: XML posílá 'Ž' (ne 'Z')
cur.execute("ALTER TABLE recept_doklad MODIFY pac_pohlavi VARCHAR(5)")
# lekar_kod FK: predepisujici se plní z lékového záznamu, ne z detailu
# → FK by blokoval vložení, zrušíme ji
try:
cur.execute("ALTER TABLE recept_doklad DROP FOREIGN KEY recept_doklad_ibfk_1")
except Exception:
pass # FK už byl zrušen dříve
conn.commit()
# Načti již zpracované soubory — přeskočíme ty, jejichž cesta se nezměnila
zpracovane = nacti_zpracovane(conn)
ok = chyb = preskoceno = 0
for i, (erp_kod, xml_file) in enumerate(xml_mapa.items(), 1):
rel_path = str(xml_file.relative_to(XML_DIR))
if zpracovane.get(erp_kod) == rel_path:
preskoceno += 1
continue
print(f"[{i:4d}/{celkem}] {erp_kod} ", end="", flush=True)
xml_text = xml_file.read_text(encoding="utf-8")
vysledek = parsuj_xml(xml_text, xml_file.relative_to(XML_DIR))
if vysledek is None:
print("CHYBA parsování")
chyb += 1
continue
doklad, plp_list, vydej_list = vysledek
try:
uloz(conn, doklad, plp_list, vydej_list)
print(f"{doklad['stav']:20s} terminal={doklad['stav_terminal']} PLP={len(plp_list)} vydej={len(vydej_list)}")
ok += 1
except Exception as e:
print(f"CHYBA DB {e}")
conn.rollback()
chyb += 1
conn.close()
print(f"\nHotovo: {ok} zpracováno, {preskoceno} přeskočeno (beze změny), {chyb} chyb")
if __name__ == "__main__":
main()
@@ -0,0 +1,13 @@
User-Agent: Medicus
Host: lekar-soap.erecept.sukl.cz
SOAPAction: "NacistPredpis"
Content-Type: text/xml; charset="UTF-8"
Authorization: Basic ZTA4Yzg5YzYtMmIxYS00ZWJhLThlZDktNGUzZTYzNjE4Mzc5OkJ1emFsa2FAVmxhZGltaXIyMDI1
Content-Length: 643
<?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><Pracoviste>00214235367</Pracoviste></Pristupujici><Identifikator><ID_Dokladu>PPIBVF93285E</ID_Dokladu></Identifikator></Doklad><Zprava><ID_Zpravy>bf002578-4e0d-48f9-86b4-ea3e21f280ec</ID_Zpravy><Verze>202501A</Verze><Odeslano>2026-04-05T15:24:10+02:00</Odeslano><SW_Klienta>MEDICUS_____</SW_Klienta></Zprava></NacteniPredpisuDotaz>
</soapenv:Body>
</soapenv:Envelope>
@@ -0,0 +1,309 @@
# NacistPredpis — Funkční SOAP klient pro IS eRecept SÚKL
Pipeline pro stažení **detailu jednotlivých receptů** z eRecept SÚKL API.
Doplňuje existující hromadný lékový záznam (`NacistLekovyZaznam`) o údaje,
které hromadný dotaz nevrací.
---
## Soubory
| Soubor | Co dělá |
|--------|---------|
| `NacistPredpis_FUNKCNI.py` | Stáhne detail **jednoho** receptu dle hardcoded ID_Dokladu (ruční test) |
| `08StahnoutPredpisy.py` | Starší skript bez DB integrace — nahrazen `10_StahnoutXML.py` |
| `09_VytvorTabulky.py` | Vytvoří tabulky `recept_doklad` a `recept_plp` v MySQL |
| `10_StahnoutXML.py` | **Stahování** — načte ERP kódy z Medicusu, přeskočí terminální, uloží XML |
| `11_ParseXML.py` | **Parsování** — naparsuje XML archiv a uloží data do MySQL |
```
NačteníPředpisuWithClaude/
├── NacistPredpis_FUNKCNI.py ← test jednoho receptu
├── 08StahnoutPredpisy.py ← starší skript (bez DB)
├── 09_VytvorTabulky.py ← DDL MySQL tabulek
├── 10_StahnoutXML.py ← hromadné stahování s přeskakováním
├── 11_ParseXML.py ← parsování XML do MySQL
├── NacistPredpis_DOKUMENTACE.md ← tento soubor
├── xml_archive/ ← archiv XML odpovědí (YYYY-MM-DD/ERP_KOD.xml)
├── MedicusDebug/ ← zachycené SOAP požadavky z Medicusu
└── Tests/ ← starší vývojové soubory
```
---
## Co NacistPredpis vrací navíc oproti NacistLekovyZaznam
Hromadný lékový záznam (`NacistLekovyZaznam`, endpoint `/cuer/Lekar2`)
vrací seznam předpisů a výdejů za pacienta, ale **bez detailů o receptu jako celku**.
`NacistPredpis` (endpoint `/cuer/Lekar`, namespace `201704`) vrací detail
jednoho konkrétního receptu, včetně:
### Údaje o receptu (dokladu)
| Pole | Popis |
|------|-------|
| `ID_Dokladu` | Alfanumerický kód receptu (např. `PPIBVF93285E`) |
| `Stav` | Stav receptu: PREDEPSANY, CASTECNE_VYDANY, PLNE_VYDANY, ZRUSENY |
| `PlatnostDo` | Datum konce platnosti receptu |
| `VypisDo` | Prodloužení platnosti výpisem |
| `Akutni` | Příznak akutní péče |
| `Rodina` | „Pro potřebu rodiny" / ad usum proprium |
| `Opakovani` | Počet výdejů u opakovacích receptů |
| `DruhPojisteni` | VEREJNE / OSTATNI |
| `ModryPruh` | Omamné/psychotropní látky |
| `Pozn` | Poznámka na receptu (max 1000 znaků) |
| `ZapocitatelnyDoplatekZbyvaDoLimitu` | Zbývá do limitu doplatků pacienta |
| `Zmena` / `Zalozeni` | Datetime poslední změny / vytvoření |
### Údaje o úhradě léku (per PLP)
| Pole | Popis |
|------|-------|
| `Uhrada` | ZAKLADNI / ZVYSENA / NEHRAZENY / PACIENT |
| `Prekroceni` | Překročení limitu |
### Údaje o pacientovi
| Pole | Popis |
|------|-------|
| `CP` | Číslo pojištěnce (rodné číslo) |
| `ZP` | Zdravotní pojišťovna (kód + název) |
| `Adresa` | Kompletní adresa pacienta |
| `Pohlavi` | M / F (ne M/Z jak uvádí XSD — reálně posíláno M/F) |
| `Telefon` | Telefonní číslo |
| `Notifikace` | SMS / Email |
### Údaje o předepisujícím
| Pole | Popis |
|------|-------|
| `Lekar.Kod` | UUID lékaře — nebo `"skryto"` (ukládáme jako NULL) |
| `Odbornost` | Kód + název (např. 001 — všeobecné praktické lékařství) |
| `Email` | Email lékaře |
### Zkrácený výdej
Odpověď obsahuje i sekci `Vydej[]` se zkrácenou informací o výdejích — název lékárny,
jméno lékárníka (často „skryto"), datum vydeje, vydané léky.
---
## Porovnání operací
| | NacistPredpis | NacistLekovyZaznam |
|---|---|---|
| **Namespace** | `201704` | `201912` |
| **Endpoint** | `/cuer/Lekar` | `/cuer/Lekar2` |
| **SOAPAction** | `NacistPredpis` | `NacistLekovyZaznam` |
| **Identifikace** | ID_Dokladu (alfanumerický kód receptu) | jméno + datum narození pacienta |
| **Výsledek** | detail jednoho receptu | celý lékový záznam pacienta (roky) |
| **Velikost odpovědi** | ~3.54.5 KB | ~227 KB |
| **Pokrytí** | pouze naše ordinace (ERP kód z Medicusu) | všichni lékaři pacienta |
---
## Autentizace (stejná jako u všech operací eReceptu)
| Parametr | Hodnota |
|----------|---------|
| Endpoint | `https://lekar-soap.erecept.sukl.cz/cuer/Lekar` |
| mTLS certifikát | `AMBSUKL214235369G_31DEC2024.pfx` (platnost do 31. 12. 2026) |
| HTTP Basic user | UUID lékaře `e08c89c6-2b1a-4eba-8ed9-4e3e63618379` |
| SOAP operace | `NacistPredpis` |
| XML namespace | `http://www.sukl.cz/erp/201704` |
| Verze zprávy | `202501A` |
Certifikát se hledá relativně ke skriptu: `../../AMBSUKL214235369G_31DEC2024.pfx`
---
## Zdroj ID_Dokladu — Medicus (Firebird)
Alfanumerický kód receptu (ID_Dokladu) **není** v hromadném lékovém záznamu.
Nachází se v tabulce **`RECEPT_EPODANI`** v Medicusu:
```
RECEPT.id_epodani → RECEPT_EPODANI.id
RECEPT_EPODANI.erp = ID_Dokladu (např. "PPIBVF93285E")
```
> **Důsledek:** Detaily receptů lze stáhnout **pouze pro naši ordinaci**.
> O předpisech cizích lékařů víme jen to, co vrací lékový záznam.
### SQL dotaz
```sql
SELECT DISTINCT ep.erp, r.datum, r.lek, r.dop,
TRIM(kar.prijmeni) AS prijmeni, TRIM(kar.jmeno) AS jmeno
FROM recept r
JOIN recept_epodani ep ON r.id_epodani = ep.id
JOIN kar ON r.idpac = kar.idpac
WHERE r.datum >= '2025-01-01' AND ep.erp IS NOT NULL
ORDER BY r.datum DESC
```
> Pozor: `LIMIT` v `10_StahnoutXML.py` omezuje počet řádků z Firebirdu před deduplikací.
> Po deduplikaci (jeden recept = více léků = více řádků) může být výsledný počet receptů nižší.
### Statistika (duben 2026)
- **13 571** receptů s ERP kódem od 1. 1. 2025
- **13 578** receptů celkem (7 bez ERP kódu — papírové/neodeslané)
---
## Databázové schéma — MySQL
### Relační diagram
```
recept_doklad (1) ────────────────── (N) recept_plp
id_dokladu PK id_lp PK ──────► predpis.id_lp_predpis
id_dokladu FK
```
Tabulka `recept_plp.id_lp` = `predpis.id_lp_predpis` — přímý JOIN s lékovým záznamem.
### Tabulka `recept_doklad`
Jeden řádek na celý recept (ID_Dokladu).
| Sloupec | Typ | Poznámka |
|---------|-----|----------|
| `id_dokladu` | VARCHAR(20) PK | ERP kód |
| `stav` | ENUM | PREDEPSANY / PRIPRAVOVANY / CASTECNE_VYDANY / PLNE_VYDANY / ZRUSENY |
| `stav_terminal` | TINYINT(1) | 1 = nepotřebuje další stahování |
| `datum_vystaveni` | DATE | |
| `platnost_do` | DATE | |
| `vypis_do` | DATE | prodloužení výpisem |
| `akutni` | TINYINT(1) | |
| `rodina` | TINYINT(1) | ad usum proprium |
| `opakovani` | INT | NULL = není opakovací |
| `druh_pojisteni` | ENUM | VEREJNE / OSTATNI / POJISTENI_EU |
| `modry_pruh` | TINYINT(1) | |
| `pozn` | VARCHAR(1000) | |
| `zap_doplatek` | DECIMAL(10,2) | ZapocitatelnyDoplatekZbyvaDoLimitu |
| `zalozeni` / `zmena` | DATETIME | z eReceptu |
| `lekar_kod` | CHAR(36) | UUID lékaře; NULL pokud "skryto" |
| `odbornost_kod` / `odbornost_nazev` | VARCHAR | |
| `lekar_email` | VARCHAR(100) | |
| `cp` | VARCHAR(10) | číslo pojištěnce |
| `zp_kod` / `zp_nazev` | VARCHAR | pojišťovna při předpisu (snapshot) |
| `pac_telefon` | VARCHAR(20) | |
| `pac_notifikace` | ENUM | SMS / EMAIL |
| `pac_pohlavi` | VARCHAR(5) | M / F |
| `xml_soubor` | VARCHAR(255) | cesta k poslednímu XML |
| `stazeno` | DATETIME | poslední aktualizace |
### Tabulka `recept_plp`
Jeden řádek na PLP položku (lék na receptu).
| Sloupec | Typ | Poznámka |
|---------|-----|----------|
| `id_lp` | CHAR(36) PK | UUID = `predpis.id_lp_predpis` |
| `id_dokladu` | VARCHAR(20) FK | |
| `uhrada` | VARCHAR(20) | ZAKLADNI / ZVYSENA / NEHRAZENY / PACIENT |
| `prekroceni` | TINYINT(1) | |
### JOIN lékový záznam + detail receptu
```sql
SELECT p.datum_vystaveni, p.nazev, p.atc, p.navod,
rd.stav, rd.platnost_do, rd.zp_nazev,
rp.uhrada,
v.datum_vydeje
FROM predpis p
LEFT JOIN recept_plp rp ON rp.id_lp = p.id_lp_predpis
LEFT JOIN recept_doklad rd ON rd.id_dokladu = rp.id_dokladu
LEFT JOIN vydej v ON v.id_lp_predpis = p.id_lp_predpis
WHERE p.atc LIKE 'C09%'
ORDER BY p.datum_vystaveni DESC;
```
> LEFT JOIN — pro cizí lékaře `rd` a `rp` budou NULL (nemáme jejich ERP kód).
---
## 10_StahnoutXML.py — stahování
### Parametry (editovat přímo v souboru)
```python
DATUM_OD = "2025-01-01" # recepty od tohoto data
LIMIT = None # max počet receptů; None = bez omezení
```
### Logika přeskakování
Na začátku načte z MySQL jeden dotaz:
```sql
SELECT id_dokladu FROM recept_doklad WHERE stav_terminal = 1
```
Výsledek = Python set. Pro každý ERP kód z Medicusu:
- je v setu → přeskočit (vydaný / zrušený / expirovaný)
- není v setu → stáhnout
Stornované recepty jsou filtrovány přímo v dotazu do Firebirdu (`AND r.STORNO = 'F'`),
takže se pro ně SOAP volání na SÚKL vůbec neprovádí.
### Co je terminální (`stav_terminal = 1`)
- `stav IN ('PLNE_VYDANY', 'ZRUSENY')`
- nebo `platnost_do < dnes` (expirovaný bez vyzvednutí)
### Ošetření chyb
| Kód | Popis | Chování |
|-----|-------|---------|
| **D003** | Předpis zrušen lékařem | Uloží `_CHYBA.xml`, pokračuje |
| HTTP 500 | SOAP Fault | Uloží `_CHYBA.xml`, pokračuje |
| Exception | Síťová chyba | Vypíše EXCEPTION, pokračuje |
---
## 11_ParseXML.py — parsování do MySQL
### Parametry (editovat přímo v souboru)
```python
DATUM_FILTR = None # např. "2026-04-14", nebo None = celý archiv
```
### Co dělá
1. Načte z MySQL `{id_dokladu: xml_soubor}` pro všechny již zpracované záznamy
2. Najde nejnovější XML pro každý ERP kód (nejvyšší datum v adresářové struktuře)
3. Přeskočí soubory, jejichž cesta se nezměnila oproti DB — zpracuje jen nově stažené
4. Naparsuje stav, platnost, pacient, předepisující, PLP položky
5. `recept_doklad`: INSERT ... ON DUPLICATE KEY UPDATE (stav se může změnit)
6. `recept_plp`: INSERT IGNORE (UUID je stabilní)
### Správné pořadí spuštění
```
10_StahnoutXML.py → 11_ParseXML.py → 10_StahnoutXML.py → ...
```
`10` se spoléhá na `stav_terminal` v MySQL, který nastavuje `11`.
Bez spuštění `11` budou terminální recepty znovu stahovány.
---
## Ověřeno (16. 4. 2026)
- Hromadné stažení od 1. 1. 2025 dokončeno (`LIMIT = None`)
- Staženo 9 616 receptů (po filtraci stornovaných z Firebirdu)
- `11_ParseXML.py` přeskakuje nezměněné soubory — opakované spuštění zpracuje jen nově stažené
---
## XSD zdroje
Schéma verze `202501A`, soubory v `Dokumentace/2025-04-24/WSDL_XSD/`:
| Soubor | Obsah |
|--------|-------|
| `PRIORITNI_WEBOVE_SLUZBY/schema1.xsd` | `NacteniPredpisuDotaz`, `identifikace_dokladu_type`, `nacteni_predpisu_erp_odpoved_type` |
| `NEPRIORITNI_WEBOVE_SLUZBY/CuerSchema.xsd` | `hvlp_type`, `zprava_type`, `jmeno_osoby_type` |
@@ -0,0 +1,71 @@
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/Lekar"
NAMESPACE = "http://www.sukl.cz/erp/201704"
# --- ID receptu ---
# Alfanumerický kód receptu, např. PPIBVF93285E
ID_DOKLADU = "PPIBVF93285E"
def nacist_predpis():
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'<NacteniPredpisuDotaz xmlns="{NAMESPACE}">'
f'<Doklad>'
f'<Pristupujici>'
f'<Uzivatel>{UZIVATEL}</Uzivatel>'
f'<Pracoviste>{PRACOVISTE}</Pracoviste>'
f'</Pristupujici>'
f'<Identifikator>'
f'<ID_Dokladu>{ID_DOKLADU}</ID_Dokladu>'
f'</Identifikator>'
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'</NacteniPredpisuDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistPredpis"',
"User-Agent": "Medicus"
}
print(f"Recept: {ID_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_predpis()
@@ -0,0 +1,189 @@
"""
Stazeni detailu receptu (NacistPredpis) pro poslednich N receptu z Medicusu.
Spusteni:
python 08StahnoutPredpisy.py # 10 receptu od 2025-01-01
python 08StahnoutPredpisy.py --limit 50 # 50 receptu
python 08StahnoutPredpisy.py --od 2026-01-01
Pauza mezi volanimi: 5 sekund.
XML odpovedi se ukladaji do xml_archive/YYYY-MM-DD/ERP_kod.xml
"""
import sys
import time
import uuid
from datetime import datetime, timezone, date
from pathlib import Path
import fdb
from requests import Session
from requests_pkcs12 import Pkcs12Adapter
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(errors="replace")
# ── Konfigurace eRecept ──────────────────────────────────────────────────────
PFX_FILE = r"C:\Users\vlado\PycharmProjects\Recepty\AMBSUKL214235369G_31DEC2024.pfx"
PFX_PASS = "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/Lekar"
NAMESPACE = "http://www.sukl.cz/erp/201704"
PAUZA = 5 # sekund
# ── Konfigurace Firebird ─────────────────────────────────────────────────────
FB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb'
FB_USER = 'SYSDBA'
FB_PASS = 'masterkey'
FB_CHARSET = 'win1250'
# ── Adresare ─────────────────────────────────────────────────────────────────
XML_DIR = Path(__file__).parent / "xml_archive"
def nacti_erp_kody(fb_conn, datum_od, limit, prijmeni=None):
"""Nacte unikatni ID_Dokladu (erp kody) z Firebirdu — recept_epodani.erp."""
sql = """
SELECT FIRST ? r.datum, r.lek, r.dop, r.idpac,
TRIM(kar.prijmeni) AS prijmeni, TRIM(kar.jmeno) AS jmeno,
ep.erp
FROM recept r
JOIN recept_epodani ep ON r.id_epodani = ep.id
JOIN kar ON r.idpac = kar.idpac
WHERE r.datum >= ? AND ep.erp IS NOT NULL
"""
params = [limit, datum_od]
if prijmeni:
placeholders = ",".join(["?"] * len(prijmeni))
sql += f" AND UPPER(TRIM(kar.prijmeni)) IN ({placeholders})"
params.extend(p.upper() for p in prijmeni)
sql += " ORDER BY r.datum DESC"
cur = fb_conn.cursor()
cur.execute(sql, params)
rows = cur.fetchall()
cur.close()
# deduplikace dle erp kodu — zachovat prvni vyskyt (nejnovejsi datum)
seen = set()
unique = []
for row in rows:
erp = row[6]
if erp not in seen:
seen.add(erp)
unique.append(row)
return unique
def volej_nacist_predpis(sess, erp_kod):
"""Zavola NacistPredpis a vrati (status_code, response_text)."""
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'<NacteniPredpisuDotaz xmlns="{NAMESPACE}">'
f'<Doklad>'
f'<Pristupujici>'
f'<Uzivatel>{UZIVATEL}</Uzivatel>'
f'<Pracoviste>{PRACOVISTE}</Pracoviste>'
f'</Pristupujici>'
f'<Identifikator>'
f'<ID_Dokladu>{erp_kod}</ID_Dokladu>'
f'</Identifikator>'
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'</NacteniPredpisuDotaz>'
'</soapenv:Body>'
'</soapenv:Envelope>'
)
headers = {
"Content-Type": 'text/xml; charset="UTF-8"',
"SOAPAction": '"NacistPredpis"',
"User-Agent": "Medicus",
}
resp = sess.post(ENDPOINT, data=soap_body.encode("utf-8"), headers=headers, timeout=15)
return resp.status_code, resp.text
## ── Parametry (uprav zde) ────────────────────────────────────────────────────
LIMIT = 100 # max pocet receptu ke stazeni
DATUM_OD = "2025-01-01" # recepty od tohoto data
PRIJMENI = ["Buzalka"] # filtr prijmeni (list), nebo None = vsichni
## ─────────────────────────────────────────────────────────────────────────────
def main():
datum_od = DATUM_OD
dnes = date.today().isoformat()
out_dir = XML_DIR / dnes
out_dir.mkdir(parents=True, exist_ok=True)
# Firebird
print(f"Pripojuji Firebird...")
fb = fdb.connect(dsn=FB_DSN, user=FB_USER, password=FB_PASS, charset=FB_CHARSET)
rows = nacti_erp_kody(fb, datum_od, LIMIT, PRIJMENI)
fb.close()
print(f"Nacteno {len(rows)} receptu z Medicusu (od {datum_od})\n")
if not rows:
print("Zadne recepty k stazeni.")
return
# SOAP session
sess = Session()
sess.mount("https://", Pkcs12Adapter(pkcs12_filename=PFX_FILE, pkcs12_password=PFX_PASS))
sess.auth = (API_USER, API_PASS)
ok = 0
chyby = 0
for i, row in enumerate(rows, 1):
datum_rec, lek, dop, idpac, prijmeni, jmeno, erp_kod = row
lek_str = f"{lek} {dop}".strip() if dop else str(lek).strip()
label = f"{prijmeni} {jmeno}".strip()
print(f"[{i:4d}/{len(rows)}] {label:30s} {erp_kod} ", end="", flush=True)
try:
status, text = volej_nacist_predpis(sess, erp_kod)
if status == 200 and "<soap:Fault" not in text and "Fault>" not in text:
xml_file = out_dir / f"{erp_kod}.xml"
xml_file.write_text(text, encoding="utf-8")
size_kb = len(text.encode("utf-8")) / 1024
print(f"OK {size_kb:6.1f} KB {lek_str[:40]}")
ok += 1
else:
# SOAP Fault nebo HTTP chyba
chyba_short = text[:120].replace("\n", " ")
print(f"CHYBA HTTP {status} {chyba_short}")
# ulozit i chybovou odpoved
xml_file = out_dir / f"{erp_kod}_CHYBA.xml"
xml_file.write_text(text, encoding="utf-8")
chyby += 1
except Exception as e:
print(f"EXCEPTION {e}")
chyby += 1
if i < len(rows):
time.sleep(PAUZA)
print(f"\nHotovo: {ok} OK, {chyby} chyb")
print(f"XML: {out_dir}")
if __name__ == "__main__":
main()
@@ -0,0 +1,133 @@
"""
Vytvoří tabulky recept_doklad a recept_plp v MySQL databázi medicus.
Spuštění:
python 09_VytvorTabulky.py
Tabulky:
recept_doklad — jeden řádek na celý recept (ID_Dokladu)
recept_plp — jeden řádek na PLP položku (id_lp = predpis.id_lp_predpis)
Bezpečné opakované spuštění — používá CREATE TABLE IF NOT EXISTS.
Neprovádí DROP.
"""
import pymysql
import pymysql.cursors
DB = dict(
host = "192.168.1.76",
user = "root",
password = "Vlado9674+",
database = "medicus",
charset = "utf8mb4",
cursorclass = pymysql.cursors.DictCursor,
)
DDL = [
# ── recept_doklad ─────────────────────────────────────────────────────────
# Jeden řádek na celý recept (ID_Dokladu = ERP kód, např. PPIBVF93285E).
# Data na úrovni dokladu: stav, platnost, pacient snapshot, předepisující.
#
# stav_terminal:
# 0 = PREDEPSANY nebo CASTECNE_VYDANY → skript má znovu stahovat XML
# 1 = PLNE_VYDANY nebo ZRUSENY nebo expirovaný → stahování ukončeno
#
# xml_soubor: relativní cesta k poslednímu naparsovanému XML souboru
"""
CREATE TABLE IF NOT EXISTS recept_doklad (
id_dokladu VARCHAR(20) NOT NULL PRIMARY KEY,
-- stav a platnost
stav ENUM(
'PREDEPSANY',
'CASTECNE_VYDANY',
'PLNE_VYDANY',
'ZRUSENY'
) NOT NULL,
stav_terminal TINYINT(1) NOT NULL DEFAULT 0
COMMENT '1 = nepotřebuje další stahování',
datum_vystaveni DATE NOT NULL,
platnost_do DATE,
vypis_do DATE COMMENT 'prodloužení platnosti výpisem',
akutni TINYINT(1),
rodina TINYINT(1) COMMENT 'ad usum proprium',
opakovani INT COMMENT 'NULL = není opakovací',
druh_pojisteni ENUM('VEREJNE','OSTATNI'),
modry_pruh TINYINT(1),
pozn VARCHAR(1000),
zap_doplatek DECIMAL(10,2) COMMENT 'ZapocitatelnyDoplatekZbyvaDoLimitu',
-- časové razítko z eReceptu
zalozeni DATETIME,
zmena DATETIME,
-- předepisující lékař (FK na existující tabulku z lékového záznamu)
lekar_kod CHAR(36),
odbornost_kod VARCHAR(10),
odbornost_nazev VARCHAR(100),
lekar_email VARCHAR(100),
-- pacient snapshot (hodnoty platné k datu předpisu — mohou se měnit)
cp VARCHAR(10) COMMENT 'číslo pojištěnce / RČ',
zp_kod CHAR(3),
zp_nazev VARCHAR(100),
pac_telefon VARCHAR(20),
pac_notifikace ENUM('SMS','EMAIL'),
pac_pohlavi ENUM('M','Z'),
-- meta
xml_soubor VARCHAR(255) COMMENT 'cesta k poslednímu XML souboru',
stazeno DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
COMMENT 'poslední aktualizace záznamu',
FOREIGN KEY (lekar_kod) REFERENCES predepisujici (lekar_kod)
ON DELETE SET NULL,
INDEX idx_stav (stav),
INDEX idx_stav_terminal (stav_terminal),
INDEX idx_platnost (platnost_do),
INDEX idx_lekar (lekar_kod)
) ENGINE=InnoDB COMMENT='Detail receptu (NacistPredpis) — jeden řádek na ID_Dokladu'
""",
# ── recept_plp ────────────────────────────────────────────────────────────
# Jeden řádek na PLP položku (jeden lék na receptu).
# id_lp = UUID = predpis.id_lp_predpis → přímý JOIN s lékovým záznamem.
# Lékové detaily (ATC, název, forma…) jsou záměrně vynechány —
# jsou už v tabulce predpis, duplikovat je nemá smysl.
"""
CREATE TABLE IF NOT EXISTS recept_plp (
id_lp CHAR(36) NOT NULL PRIMARY KEY
COMMENT 'UUID PLP = predpis.id_lp_predpis',
id_dokladu VARCHAR(20) NOT NULL,
uhrada VARCHAR(20),
prekroceni TINYINT(1),
FOREIGN KEY (id_dokladu) REFERENCES recept_doklad (id_dokladu)
ON DELETE CASCADE,
INDEX idx_id_dokladu (id_dokladu)
) ENGINE=InnoDB COMMENT='PLP položky receptu — JOIN přes id_lp na predpis.id_lp_predpis'
""",
]
def vytvor_tabulky():
conn = pymysql.connect(**DB)
try:
with conn.cursor() as cur:
for ddl in DDL:
tabulka = ddl.strip().split()[5] # CREATE TABLE IF NOT EXISTS <name>
cur.execute(ddl)
print(f" OK {tabulka}")
conn.commit()
print("\nHotovo.")
finally:
conn.close()
if __name__ == "__main__":
vytvor_tabulky()
+103
View File
@@ -0,0 +1,103 @@
# Report: Pravidelná medikace z lékového záznamu
## Soubor
`report_server.py` — HTTP server na portu 8765, generuje HTML report z MySQL (`medicus`).
Spuštění: `.venv/Scripts/python report_server.py`
---
## Zdroj dat
Tabulky v MySQL (db `medicus`):
| Tabulka | Obsah |
|---------|-------|
| `predpis` | předepsané léky, ATC, datum, množství, návod |
| `vydej` | vydání léku lékárnou |
| `predepisujici` | lékař — UUID, jméno, IČZ, IČP |
| `vydavajici` | lékárník — UUID, jméno, PZS |
| `vzp_pracoviste` | VZP číselník IČP → odbornost (import týdně) |
---
## Algoritmus pravidelnosti
### Krok 1 — Základní metriky (SQL)
```sql
GROUP BY LEFT(atc, 5) -- ATC na 5. místě (4. úroveň)
pocet_predpisu = COUNT(DISTINCT predpis.id)
celkove_mnozstvi = SUM(mnozstvi)
avg_mnozstvi = AVG(mnozstvi)
rozpeti_dni = DATEDIFF(MAX(datum), MIN(datum))
```
### Krok 2 — Výpočet normalizovaného intervalu (Python)
```
avg_interval = rozpeti_dni / (pocet_predpisu - 1) # průměr dní mezi předpisy
norm_interval = avg_interval / avg_mnozstvi # normalizováno na 1 balení
```
`norm_interval` = odhad, na kolik dní jedno balení vystačí.
### Krok 3 — Klasifikace
| Kategorie | Podmínka |
|-----------|----------|
| **nepravidelný** | `pocet_predpisu < 2` nebo `rozpeti_dni = 0` |
| **dle potřeby** (PRN) | většina návodů obsahuje klíčová slova: *dle potřeby, p.p., D.p., při bolesti* |
| **pravidelný** | `norm_interval ≤ 100 dní` |
| **možná** | `norm_interval 100185 dní` |
| **epizodický** | `norm_interval > 185 dní` |
> **Důležité:** `rozpeti_dni = 0` znamená, že všechny předpisy byly vystaveny ve stejný den
> (lékař dal více balení najednou). Není to opakované předepisování — musí být klasifikováno
> jako nepravidelné.
### Krok 4 — Řazení výstupu
1. Pravidelné
2. Možná pravidelné
3. Epizodické
4. PRN
V rámci kategorie sestupně dle počtu vydání.
---
## Odbornost předepisujícího
JOIN: `predpis → predepisujici → vzp_pracoviste`
Číselník VZP je aktuální snapshot — neobsahuje historická data. Recepty starší než
`platnost_od` nejnovějšího záznamu pro dané IČP by JOIN na datum nesplnily.
**Řešení:** vždy vzít nejnovější záznam pro IČP bez ohledu na datum předpisu:
```sql
LEFT JOIN vzp_pracoviste vp
ON vp.icp = pre.icp
AND vp.id = (
SELECT id FROM vzp_pracoviste
WHERE icp = pre.icp
ORDER BY platnost_od DESC LIMIT 1
)
```
Odbornost se prakticky nemění — IČP ordinace praktického lékaře zůstane `001` bez ohledu
na datum předpisu.
---
## Barevné kódování reportu
| Barva řádku | Kategorie |
|-------------|-----------|
| Zelená | pravidelný |
| Žlutá | možná pravidelný |
| Šedá | epizodický |
| Červená | dle potřeby (PRN) |
| Odznak odbornosti | Barva |
|-------------------|-------|
| Praktický lékař (001, 002) | zelená |
| Specialista | modrá |
| Neznámá | šedá |
@@ -0,0 +1,13 @@
User-Agent: Medicus
Host: lekar-soap.erecept.sukl.cz
SOAPAction: "NacistLekovyZaznam"
Content-Type: text/xml; charset="UTF-8"
Authorization: Basic ZTA4Yzg5YzYtMmIxYS00ZWJhLThlZDktNGUzZTYzNjE4Mzc5OkJ1emFsa2FAVmxhZGltaXIyMDI1
Content-Length: 802
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<NacistLekovyZaznamLekarDotaz xmlns="http://www.sukl.cz/erp/201912"><Doklad><Pristupujici><Uzivatel>E08C89C6-2B1A-4EBA-8ED9-4E3E63618379</Uzivatel><Pracoviste>00214235367</Pracoviste></Pristupujici><PocetZnakuATC>7</PocetZnakuATC><PocetMesicu>60</PocetMesicu><Pacient><Totoznost><Jmeno><Prijmeni>Buzalka</Prijmeni><Jmena>Vladimír</Jmena></Jmeno><DatumNarozeni>1973-09-20</DatumNarozeni></Totoznost></Pacient></Doklad><Zprava><ID_Zpravy>2c59d819-ad1c-43b2-92fa-efdaf187f029</ID_Zpravy><Verze>202501A</Verze><Odeslano>2026-03-24T06:26:52+01:00</Odeslano><SW_Klienta>MEDICUS_____</SW_Klienta></Zprava></NacistLekovyZaznamLekarDotaz>
</soapenv:Body>
</soapenv:Envelope>
@@ -0,0 +1,13 @@
User-Agent: Medicus
Host: lekar-soap.erecept.sukl.cz
SOAPAction: "NacistLekovyZaznam"
Content-Type: text/xml; charset="UTF-8"
Authorization: Basic ZTA4Yzg5YzYtMmIxYS00ZWJhLThlZDktNGUzZTYzNjE4Mzc5OkJ1emFsa2FAVmxhZGltaXIyMDI1
Content-Length: 802
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<NacistLekovyZaznamLekarDotaz xmlns="http://www.sukl.cz/erp/201912"><Doklad><Pristupujici><Uzivatel>E08C89C6-2B1A-4EBA-8ED9-4E3E63618379</Uzivatel><Pracoviste>00214235367</Pracoviste></Pristupujici><PocetZnakuATC>7</PocetZnakuATC><PocetMesicu>60</PocetMesicu><Pacient><Totoznost><Jmeno><Prijmeni>Buzalka</Prijmeni><Jmena>Vladimír</Jmena></Jmeno><DatumNarozeni>1973-09-20</DatumNarozeni></Totoznost></Pacient></Doklad><Zprava><ID_Zpravy>dabda2ad-df61-41db-bd46-a969eced026b</ID_Zpravy><Verze>202501A</Verze><Odeslano>2026-03-27T06:35:14+01:00</Odeslano><SW_Klienta>MEDICUS_____</SW_Klienta></Zprava></NacistLekovyZaznamLekarDotaz>
</soapenv:Body>
</soapenv:Envelope>

Some files were not shown because too many files have changed in this diff Show More