z230
This commit is contained in:
@@ -2,46 +2,48 @@
|
||||
|
||||
Agent pro zpracování naskenovaných lékařských zpráv (PDF i JPG/PNG).
|
||||
|
||||
## Skripty
|
||||
## Hlavní skript
|
||||
|
||||
### `extract_patient_info.py` — hlavní agent
|
||||
Spuštění: `python extract_patient_info.py` (bez argumentů = celá složka ToProcess)
|
||||
### `Extract_pacient_info_v1.0.py`
|
||||
Verze: 1.0 | Datum: 2026-06-02 | Autor: Vladimír Bužalka
|
||||
|
||||
Spuštění: `python Extract_pacient_info_v1.0.py` (bez argumentů = celá složka KeZpracování)
|
||||
|
||||
**Workflow:**
|
||||
1. Načte soubory z `ToProcess/`
|
||||
2. Claude Vision API (sonnet-4-6) extrahuje: jméno, RČ, datum, typ dokumentu, poznámku, navržený název, rotaci
|
||||
3. Ověří pacienta v Medicus Firebird (tabulka KAR, pole RODCIS/PRIJMENI/JMENO)
|
||||
4. Fuzzy matching RČ při nenalezení: vynechání cifry + záměna podobných (0↔8, 1↔7, 5↔6, 3↔8) + checksum /11
|
||||
- Fallback: pokud RČ stále nenalezeno, vyhledá dle příjmení+jméno (z Claude) — status `by_name` / `by_name_multi`
|
||||
5. Upozorní na duplicitu v `U:\Dropbox\Ordinace\Dokumentace_zpracovaná\`
|
||||
6. Interaktivní schválení / oprava názvu
|
||||
7. JPG/PNG → skutečné PDF (správná orientace, DPI=150, quality=80)
|
||||
8. Přesun do `Processed/`, smazání z `ToProcess/`
|
||||
9. Opravy názvů se ukládají do `corrections.json` jako few-shot příklady
|
||||
1. Načte soubory z `KeZpracování/`
|
||||
2. Claude Vision API (sonnet-4-6) — 1. volání s obrázkem: extrahuje jméno, RČ, datum, typ dokumentu, poznámku, navržený název, rotaci
|
||||
3. Claude API — 2. volání (jen text): vygeneruje 5 variant názvu dle naming_rules.md, deduplikuje vůči 1. návrhu
|
||||
4. Ověří pacienta v Medicus Firebird (tabulka KAR); fuzzy matching RČ + fallback na jméno
|
||||
5. Zkontroluje duplicity v archivu `Dokumentace_zpracovaná/`
|
||||
6. Zobrazí hlavní viewer (tkinter, celá šířka monitoru):
|
||||
- Horní část: náhled originálu | náhled vybrané duplicity | seznam duplicit (Text widget s wrappingem)
|
||||
- Spodní panel: info o pacientovi | textbox pro název (multiline, bílý) | návrhy pojmenování
|
||||
7. Po schválení názvu nabídne 5 kompresních variant (300/200/150/120/96 DPI) k výběru
|
||||
8. Uloží vybranou variantu do `Zpracováno/`, smaže originál
|
||||
9. Opravy názvů se ukládají do `corrections.json` jako few-shot příklady (jen pokud se liší od všech navržených variant)
|
||||
|
||||
**Formát názvu souboru:**
|
||||
`{RČ} {YYYY-MM-DD} {Příjmení}, {Jméno} [{typ dokumentu}] [{poznámka}].pdf`
|
||||
**EKG větev:** PDFCreator metadata → rotace o 90° → Tesseract OCR → Medicus ověření
|
||||
|
||||
Příklady typů: `LZ chirurgie`, `LZ kardiologie`, `Laboratoř`, `CT břicha`, `kolonoskopie`, `poukaz FT`
|
||||
**Formát názvu souboru:** viz `naming_rules.md`
|
||||
|
||||
### `jpg_to_pdf.py` — konverze obrázku na PDF
|
||||
```
|
||||
python jpg_to_pdf.py soubor.jpg [vystup.pdf] [rotace_ccw]
|
||||
```
|
||||
- Opravuje EXIF orientaci
|
||||
- Rotace: 0 / 90 / 180 / 270 (CCW)
|
||||
- A4, DPI=150, quality=80, bez okrajů
|
||||
- Používá se i interně z `extract_patient_info.py`
|
||||
## Konfigurační soubory
|
||||
|
||||
| Soubor | Účel |
|
||||
|---|---|
|
||||
| `naming_rules.md` | Pravidla pro pojmenování — předávají se Claudovi v každém volání |
|
||||
| `corrections.json` | Few-shot příklady korekcí názvů z minulých běhů |
|
||||
| `layout_settings.json` | Pozice a rozměry oken podle hostname počítače |
|
||||
|
||||
## Složky
|
||||
|
||||
| Složka | Účel |
|
||||
|---|---|
|
||||
| `ToProcess/` | Sem se házejí nové skeny (PDF, JPG, PNG) |
|
||||
| `Processed/` | Správně pojmenované PDF po schválení |
|
||||
| `U:\Dropbox\Ordinace\Dokumentace_zpracovaná\` | Finální archiv |
|
||||
| `KeZpracování/` | Vstupní skeny (PDF, JPG, PNG) |
|
||||
| `Zpracováno/` | Správně pojmenované PDF po schválení |
|
||||
| `Dokumentace_zpracovaná/` | Finální archiv (Dropbox) — prohledává se kvůli duplicitám |
|
||||
| `Testy/` | Archiv starších verzí skriptů |
|
||||
|
||||
## Konfigurace
|
||||
- API klíč: `U:\Medevio\.env` → `ANTHROPIC_API_KEY`
|
||||
- Medicus: `localhost:c:\medicus 3\data\medicus.fdb` (Firebird, SYSDBA)
|
||||
- Few-shot korekce: `corrections.json`
|
||||
- API klíč: `Medevio/.env` → `ANTHROPIC_API_KEY`
|
||||
- Medicus Firebird: `reporter:c:\medicus\medicus.fdb` (SYSDBA)
|
||||
- Layout oken: `layout_settings.json` — klíč = hostname.upper() (aktuálně: `Z230`)
|
||||
|
||||
+23
-5
@@ -1,9 +1,27 @@
|
||||
"""
|
||||
Zpracování naskenovaných PDF — nová verze.
|
||||
1. Preview originálu + Claude Vision API
|
||||
2. Rename dialog
|
||||
3. 5 variant komprese → uživatel vybere
|
||||
4. Uložit do Processed, smazat originál
|
||||
Extract_pacient_info_v1.0.py
|
||||
|
||||
Verze: 1.0
|
||||
Datum: 2026-06-02
|
||||
Autor: Vladimír Bužalka
|
||||
|
||||
Popis:
|
||||
Zpracování naskenovaných lékařských dokumentů (PDF, JPG).
|
||||
Skript projde soubory ve složce KeZpracování, pro každý:
|
||||
1. Zavolá Claude Vision API — extrahuje metadata pacienta a navrhne název souboru
|
||||
2. Zavolá Claude API podruhé — vygeneruje 5 variant názvu (bez obrázku)
|
||||
3. Ověří pacienta v databázi Medicus (Firebird) — fuzzy matching RČ, fallback na jméno
|
||||
4. Zkontroluje duplicity v archivu Dokumentace_zpracovaná
|
||||
5. Zobrazí hlavní viewer: náhled originálu | náhled duplicity | seznam duplicit
|
||||
+ spodní panel: info o pacientovi | textbox pro název | návrhy pojmenování
|
||||
6. Po schválení názvu nabídne 5 kompresních variant (300→96 DPI) k výběru
|
||||
7. Uloží vybranou variantu do složky Zpracováno, smaže originál
|
||||
|
||||
Závislosti:
|
||||
Python balíčky: anthropic, pdf2image, PyMuPDF (fitz), Pillow, fdb, pikepdf, pytesseract
|
||||
Externí: Poppler, Tesseract OCR (jen EKG větev)
|
||||
Systémové: Medicus Firebird DB, Dropbox, .env s ANTHROPIC_API_KEY
|
||||
Soubory: naming_rules.md, corrections.json, layout_settings.json
|
||||
"""
|
||||
import base64
|
||||
import gc
|
||||
Reference in New Issue
Block a user