From 3423fbb98256d0868b42fb7efe85bd1751a60e89 Mon Sep 17 00:00:00 2001 From: Vlado Date: Wed, 22 Apr 2026 07:27:06 +0200 Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1n=C3=AD=20CLAUDE.md=20=E2=80=94?= =?UTF-8?q?=20kontext=20projektu=20pro=20Claude=20Code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Obsahuje info o infrastruktuře, MySQL schématu, NacistPredpis pipeline, eRecept autentizaci a VZP Point skriptech. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..a5213c1 --- /dev/null +++ b/CLAUDE.md @@ -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