z230
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# KdoJeLékař — poznámky k vývoji
|
||||
|
||||
## Cíl
|
||||
|
||||
Zjistit pro pacienty z Medicus DB, kdo je jejich registrující **praktický lékař (001)**, **gynekolog (002)** a **stomatolog (014)** — dotazem na VZP B2B portál.
|
||||
|
||||
---
|
||||
|
||||
## VZP B2B služba: `RegistracePojistencePZSB2B`
|
||||
|
||||
### Endpoint (produkce)
|
||||
```
|
||||
https://prod.b2b.vzp.cz/B2BProxy/HttpProxy/RegistracePojistencePZSB2B
|
||||
```
|
||||
|
||||
### Autentizace
|
||||
mTLS — klientský certifikát `.pfx` od **I.CA** (První certifikační autorita).
|
||||
Stejný mechanismus jako u `stavPojisteniB2B`.
|
||||
|
||||
### SOAP požadavek
|
||||
```xml
|
||||
<registracePojistencePZSB2B xmlns="http://xmlns.gemsystem.cz/B2B/RegistracePojistencePZSB2B/1">
|
||||
<cisloPojistence>7309208104</cisloPojistence>
|
||||
<kDatu>2026-04-28</kDatu>
|
||||
<seznamOdbornosti>
|
||||
<kodOdbornosti>001</kodOdbornosti> <!-- VPL = praktický lékař pro dospělé -->
|
||||
<kodOdbornosti>002</kodOdbornosti> <!-- gynekologie a porodnictví -->
|
||||
<kodOdbornosti>014</kodOdbornosti> <!-- stomatologie -->
|
||||
</seznamOdbornosti>
|
||||
</registracePojistencePZSB2B>
|
||||
```
|
||||
|
||||
XML namespace odpovědi: `http://xmlns.gemsystem.cz/B2B/RegistracePojistencePZSB2B/1`
|
||||
|
||||
### Struktura odpovědi
|
||||
Pro každou odbornost vrátí jeden `<odbornost>` element:
|
||||
|
||||
| XML tag | Popis |
|
||||
|---------|-------|
|
||||
| `ICZ` | IČZ zdravotnického zařízení |
|
||||
| `ICP` | IČP lékaře |
|
||||
| `nazevICP` | Jméno lékaře |
|
||||
| `nazevSZZ` | Název zdravotnického zařízení |
|
||||
| `zdravotniPojistovna/kod` | Kód pojišťovny pacienta |
|
||||
| `zdravotniPojistovna/zkratka` | Zkratka pojišťovny |
|
||||
| `odbornost/kod` | Kód odbornosti (001/002/014) |
|
||||
| `odbornost/nazev` | Název odbornosti |
|
||||
| `datumRegistrace` | Datum registrace u tohoto lékaře |
|
||||
| `datumZahajeni` | Začátek registrace |
|
||||
| `datumUkonceni` | Konec registrace (null = stále aktivní) |
|
||||
| `stavVyrizeniPozadavku` | Stavový kód odpovědi VZP |
|
||||
|
||||
Pokud pacient nemá v dané odbornosti registrovaného lékaře, VZP vrátí prázdný seznam — je třeba uložit placeholder řádek (viz vzor v `u:\insurance\02.2 Testík.py`, funkce `upsert_rows`, negativní cesta).
|
||||
|
||||
---
|
||||
|
||||
## Zdrojový kód pro inspiraci
|
||||
|
||||
Vše je hotové v `u:\insurance\`, stačí přenést a adaptovat:
|
||||
|
||||
| Soubor | Co obsahuje |
|
||||
|--------|-------------|
|
||||
| `u:\insurance\02 testík.py` | Hlavní logika: `build_envelope`, `parse_registrace`, `upsert_rows`, batch smyčka přes Medicus KAR |
|
||||
| `u:\insurance\02.2 Testík.py` | Vylepšená verze — ukládá i negativní výsledky (pacient bez lékaře) |
|
||||
| `u:\insurance\functions.py` | `get_medicus_connection()`, `get_mysql_connection()` — připojení k Firebird a MySQL |
|
||||
| `u:\insurance\knihovny\vzpb2b_client.py` | Třída `VZPB2BClient` — obecný mTLS klient pro VZP B2B |
|
||||
|
||||
---
|
||||
|
||||
## Certifikáty — stav k 28. 4. 2026
|
||||
|
||||
| Soubor | Platnost | Stav |
|
||||
|--------|----------|------|
|
||||
| `u:\insurance\Certificates\MBcert.pfx` | do 22. 1. 2026 | **EXPIROVAL** |
|
||||
| `u:\insurance\10 Tests\MBcert.pfx` | do 22. 1. 2026 | **EXPIROVAL** |
|
||||
| `u:\insurance\Certificates\ICAPublicMBdo16JAN2027.pfx` | do cca. 16. 1. 2027 | Platný, ale **neznáme heslo** — zjistit! |
|
||||
| `u:\ordinaceprojekt\Insurance\Certificates\MBQualifiedCert.pfx` | do 16. 1. 2027 | Platný, ale **VZP odmítá** (kvalifikovaný certifikát, ne komerční) |
|
||||
| `u:\ordinaceprojekt\Insurance\Certificates\picka.pfx` | neznámá | Neznáme heslo |
|
||||
| `u:\insurance\Certificates\picka.pfx` | neznámá | Neznáme heslo |
|
||||
|
||||
### Klíčový problém k vyřešení jako první
|
||||
**`ICAPublicMBdo16JAN2027.pfx` je pravděpodobně správný certifikát** (název naznačuje I.CA, správná CA pro VZP B2B, platný do 2027). Vyzkoušená hesla nepasují:
|
||||
- `Vlado7309208104++`, `vlado7309208104++`, `7309208104`, `Vlado9674+`, `masterkey`, `""`
|
||||
|
||||
→ **Zjistit heslo** pod kterým byl exportován (nebo exportovat znovu z Windows certstore).
|
||||
|
||||
---
|
||||
|
||||
## Testovací skript
|
||||
|
||||
`u:\ordinaceprojekt\Insurance\KdoJeLékař\_test_temp.py`
|
||||
Dotáže se na RC `7309208104`, odbornosti 001+002+014, vypíše raw XML i parsovaný výsledek bez zápisu do DB.
|
||||
Aktuálně nastavený na `MBQualifiedCert.pfx` — po zjištění hesla přepnout na správný certifikát.
|
||||
|
||||
---
|
||||
|
||||
## Plán dalšího postupu
|
||||
|
||||
1. **Zjistit heslo k `ICAPublicMBdo16JAN2027.pfx`** (nebo exportovat nový .pfx z Windows certstore)
|
||||
2. Ověřit funkčnost — spustit `_test_temp.py` s funkčním certifikátem
|
||||
3. Vytvořit produkční skript v tomto adresáři — batch zpracování všech pacientů z Medicus KAR
|
||||
4. Navrhnout cílovou MySQL tabulku `vzp_registrace_lekari` (nebo přidat sloupce do existující `vzp_registrace`)
|
||||
Reference in New Issue
Block a user