This commit is contained in:
2026-04-14 14:45:22 +02:00
parent cc6c80fca6
commit 9afbf79155
7 changed files with 232 additions and 454 deletions
+32 -26
View File
@@ -144,9 +144,9 @@ Klíčový princip `COALESCE(v.nazev, p.nazev)`:
Odbornost se odvozuje z posledních 3 číslic pole `predepisujici.icp` (IČP pracoviště).
```
ICP: 09305001 → kód odbornosti: 001 → Praktický lékař
ICP: 08006272 → kód odbornosti: 272 → Alergologie
ICP: 08075603 → kód odbornosti: 603 → Onkologie
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:
@@ -157,32 +157,38 @@ def odbornost_z_icp(icp):
return ODBORNOST.get(icp[-3:], f"odb. {icp[-3:]}")
```
Pro neznámé kódy se zobrazí `odb. XXX` (XXX = třímístný číselný kód).
Pro neznámé kódy se zobrazí `odb. XXX` (XXX = třímístný kód).
### Slovník ODBORNOST — vybrané klíčové kódy
### Zdroj dat — tabulky `vzp_pracoviste` + `odbornost` (MySQL)
| Kód | Odbornost | Kód | Odbornost |
|-----|-----------|-----|-----------|
| 001 | Praktický lékař | 101 | Vnitřní lékařství |
| 002 | Pediatr (prakt.) | 104 | Kardiologie |
| 003 | Chirurgie | 105 | Gastroenterologie |
| 004 | Ortopedie | 108 | Nefrologie |
| 005 | ORL | 110 | Diabetologie |
| 006 | Gynekologie | 121 | Endokrinologie |
| 007 | Urologie | 156 | Hematologie |
| 008 | Neurologie | 169 | Revmatologie |
| 009 | Psychiatrie | 263 | Urologie |
| 012 | Dermatovenerologie | 272 | Alergologie |
| 018 | Pneumologie | 283 | Dětská neurochir. |
| 021 | Radiodiagnostika | 302 | Radiodiagnostika |
| 024 | Klin. biochemie | 324 | Klin. onkologie |
| 060 | Dětská chirurgie | 590 | Lékárenství |
| 074 | Neurochirurgie | 603 | Onkologie |
| 091 | Gynekolog. onkologie | 704 | Kardiochirurgie |
| 096 | Léčebná rehabilitace | 801 | Fyzioterapie |
Slovník `ODBORNOST` se **načítá dynamicky při startu skriptu** z MySQL:
Celý slovník obsahuje ~170 kódů (viz zdrojový kód skriptů).
Kompletní číselník VZP/SÚKL: <https://www.sukl.cz> (sekce číselníky).
```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ů
---