4.2 KiB
VZP (111) — Stahování seznamu registrovaných pojištěnců
Co skript dělá
StahniSeznamPojistencuVZP.py (Playwright + Chrome):
- Přihlásí se certifikátem na VZP Point (auto-výběr cert z Windows store)
- Projde ODESLANÁ PODÁNÍ (řazeno od nejnovějšího) a najde podání typu „Seznam registrovaných pojištěnců"
- Stahuje přiložené datové dávky
F111MMRR.nnn(CP852) do…\Zúčtovací zprávy\SeznamyPojištěnců\od nejnovějšího a zastaví se na první už stažené dávce (inkrementálně — starší jsou stažené, nejde hluboko do minulosti). - Podá novou žádost o výpis (datové rozhraní) za nejnovější dostupné období (zjištěno z configu) — výsledek dorazí do ODESLANÝCH PODÁNÍ a stáhne se příště.
Dávky pak zpracovává Insurance/SeznamPojistencu/01_parse_seznam_dg_tool.py.
Platforma — ODLIŠNÁ
VZP běží na point.vzp.cz (VZP Point), NE portalzp.cz ani eforms. Login je
certifikátem přes Chrome — politika AutoSelectCertificateForUrls vybere cert
automaticky (issuer I.CA Public CA/RSA 06/2022), bez NMSigneru. Plně Playwright.
Jak se seznam získává
VZP seznam není samočinná zpráva — musí se požádat podáním:
- NOVÉ PODÁNÍ → „Seznam registrovaných pojištěnců ke dni"
- Formát výstupu = „Datové rozhraní" (NE „PDF"!) + období (měsíc/rok)
- VZP požadavek zpracuje (~minuty) a výsledek = datová dávka III-1.1.2, stažitelná z detailu zpracovaného podání (sloupec „Přiložený soubor").
Pozn.: pokud se zvolí formát „PDF", výsledkem je PDF (p…pdf), které parser neumí. Vždy volit „Datové rozhraní".
Formát dávky (III-1.1.2)
Soubor F111MMRR.nnn, pevná šířka, CP852. Hlavička typ H:
H09305001 (IČP) + počet + RRMMDD. Věty typu I: příjmení, jméno, číslo poj.,
datum registrace, kód pojišťovny. (Detaily v SeznamPojistencu/01_parse_seznam_dg_tool.py.)
Stažení dávky z detailu podání
Detail /Desk/Form/Detail/{id} → záložka „Výsledky zpracování" → odkaz s názvem
F111MMRR.nnn (href="#", JS handler). Stahuje se Playwright klikem
(expect_download + dispatch_event('click')) — žádná přímá URL.
Podání žádosti (REST API — bez podpisu!)
Podání jde čistě přes REST API Pointu (Bearer token z inline "bearerToken" na dashboardu),
žádný elektronický podpis — autentizace stačí přes session + token. Tři kroky:
- Config (zjištění období):
GET /api/desk/draft/form65/config→periodLimits {from, until}+defaultModel.period {month, year}. Podává se za nejnovější dostupné období (until/defaultModel), ne za kalendářní měsíc (ten portál odmítne — HTTP 400 při publish). - Vytvoř koncept:
POST /api/desk/draft/form65/{partnerId}body{"outputFormat":"Text","period":{"month":M,"year":Y}}→{"draftId":"...","state":"Verified"}outputFormat:"Text"= Datové rozhraní (NE "Pdf"!)- partnerId =
3197807(subjekt MUDr. Buzalková)
- Publikuj:
POST /api/desk/draft/form65/{draftId}/publish(prázdné tělo) →{"formId": <id odeslaného podání>}
Token se čte stejně jako v StahováníZpráv/111 VZP/stahovanipodani.py.
Jak bylo zjištěno
Formulář Form65 je React SPA s custom comboboxem, který nešel proklikat headless ani
naslepo. Odchyceno tak, že uživatel podal jedno podání ručně a do stránky byl vložen
háček ukládající fetch/XHR do localStorage (přežije přesměrování) — z toho se vyčetly
přesné endpointy a payloady.
Soubory
| Soubor | Popis |
|---|---|
StahniSeznamPojistencuVZP.py |
Login + stažení datových dávek z podání |
Parametry
- IČP: 09305001, IČZ: 09305000 (MUDr. Michaela Buzalková)
- Login: certifikát ve Windows store (sdílený profil
StahováníZpráv/111 VZP/chrome_profile)
Stav
Hotovo a otestováno (17.06.2026): login ✓, backfill 23 dávek F111….0NN (všechny H09305001),
inkrementální běh zastaví na první už stažené dávce ✓, podání žádosti přes REST API ✓
(auto období z configu = 04/2026, create+publish → formId). Download i podání plně automatické.