This commit is contained in:
2026-06-08 15:50:13 +02:00
parent c9f94de286
commit 914452a96d
2 changed files with 76 additions and 7 deletions
@@ -27,6 +27,7 @@ import base64
import gc
import io
import json
import logging
import os
import re
import shutil
@@ -44,6 +45,7 @@ from pdf2image import convert_from_path
sys.path.insert(0, str(Path(__file__).parent.parent))
from Knihovny.najdi_dropbox import get_dropbox_root
from Knihovny.central_logging import setup_logging # centrální logování → Loki přes gateway
import tkinter as tk
@@ -624,6 +626,7 @@ def _medicus_connect():
return fdb.connect(**FB_CONFIG)
except Exception as e:
print(f" [Medicus] Nepřipojeno: {e}")
logging.warning("Medicus nepřipojen: %s", e)
return None
def _lookup_by_rc(cur, rc_digits: str) -> dict | None:
@@ -997,6 +1000,7 @@ def extract_info(pdf_path: Path, known_patient: str | None = None, known_rc: str
return {"nazev_souboru": None, "raw": raw}
except Exception as e:
print(f" VAROVÁNÍ: Claude API selhalo ({e}) — otevírám dialog pro ruční vyplnění.")
logging.exception("Claude Vision API selhalo (soubor %s): %s", pdf_path.name, e)
return {"nazev_souboru": None}
@@ -1081,6 +1085,7 @@ def generate_name_variants(info: dict, nazev_prvni: str) -> list[str]:
except Exception as e:
print(f" VAROVÁNÍ: generování variant selhalo ({e})")
logging.warning("Generování variant názvů selhalo: %s", e)
return [nazev_prvni] if nazev_prvni else []
@@ -1327,6 +1332,7 @@ def _present_file(analyzed: dict):
set_single_page_view(dest)
pdf_path.unlink()
print(f" ✓ Uloženo: {dest.name}")
logging.info("Uložen dokument: %s", dest.name)
for t in temp_files:
t.unlink(missing_ok=True)
@@ -1360,6 +1366,7 @@ def process_folder(folder: Path):
analyzed = next_future.result()
except Exception as e:
print(f" CHYBA při analýze {f.name}: {e}")
logging.exception("Chyba při analýze souboru %s: %s", f.name, e)
if i + 1 < len(files):
next_future = executor.submit(_analyze_file, files[i + 1])
continue
@@ -1373,28 +1380,42 @@ def process_folder(folder: Path):
_present_file(analyzed)
except Exception as e:
print(f" CHYBA při zpracování {f.name}: {e}")
logging.exception("Chyba při zpracování souboru %s: %s", f.name, e)
print("\nHotovo.")
logging.info("Dávka dokončena | zpracováno souborů=%d", len(files))
if __name__ == "__main__":
import time as _time
# Centrální logování (Loki přes gateway). keep_file=False — skript dosud
# logoval jen do konzole přes print(), ty zůstávají. Token + gateway se
# berou z ENV (CENTRAL_LOG_TOKEN, CENTRAL_LOG_GATEWAY).
setup_logging("medevio_scans_extract", keep_file=False)
PROCESSED.mkdir(exist_ok=True)
TO_PROCESS.mkdir(exist_ok=True)
target = Path(sys.argv[1]) if len(sys.argv) > 1 else TO_PROCESS
_start = _time.time()
logging.info("Start zpracování | cíl=%s", target)
if target.is_file():
process_file(target)
elif target.is_dir():
process_folder(target)
else:
print("Použití: python extract_patient_info_novy.py [soubor.pdf nebo složka]")
sys.exit(1)
try:
if target.is_file():
process_file(target)
elif target.is_dir():
process_folder(target)
else:
print("Použití: python extract_patient_info_novy.py [soubor.pdf nebo složka]")
logging.error("Neplatný cíl: %s", target)
sys.exit(1)
except Exception:
logging.exception("Neočekávaný pád skriptu")
raise
elapsed = _time.time() - _start
print(f"\n{''*50}")
print(f" Celková cena API: ${_total_cost:.4f} ({_total_cost*25:.2f} Kč)")
print(f" Celková doba: {int(elapsed//60)}m {int(elapsed%60)}s")
print(f"{''*50}")
logging.info("Konec | cena_USD=%.4f | doba_s=%d", _total_cost, int(elapsed))
@@ -1882,5 +1882,53 @@
{
"original": "405712023 2026-06-05 Pilná, Marta [EKG] [bez hodnocení].pdf",
"corrected": "405712023 2026-06-05 Pilná, Marta [EKG] [bez hodnocení].pdf"
},
{
"original": "400510088 2026-05-18 Kameník, Jaroslav [LZ léčba bolesti] [kontrola, M511 radikulopatie + polyneuropatie NS, vířivka isotherm. obě DK 7x, ko za půl roku].pdf",
"corrected": "400510088 2026-05-18 Kameník, Jaroslav [LZ rehabilitace] [kontrola, M511 radikulopatie + polyneuropatie NS, vířivka isotherm. obě DK 7x, ko za půl roku].pdf"
},
{
"original": "496219079 2025-08-14 Jindrová, Jiskra [LZ kardiologie] [Nevýznamná aortální regurgitace 1-2/4 ke sledování, ko za půl roku].pdf",
"corrected": "496219079 2025-08-14 Jindrová, Jiskra [LZ kardiologie] [Nevýznamná aortální regurgitace 1-24 ke sledování, ko za půl roku].pdf"
},
{
"original": "496219079 2025-10-01 Jindrová, Jiskra [LZ cévní] [CVD CEAP 4s, povrch. žíly bez významné insuficience, ko 3/2026].pdf",
"corrected": "496219079 2025-10-01 Jindrová, Jiskra [LZ cévní] [CVD CEAP 4s, povrch. žíly bez významné insuficience, ko 32026].pdf"
},
{
"original": "7755035376 2026-06-08 Yates, Hana [EKG] [bez hodnocení].pdf",
"corrected": "7755035376 2026-06-08 Yates, Hana [EKG] [bez hodnocení].pdf"
},
{
"original": "6158201456 2026-06-08 Hradilová, Zdenka [EKG] [bez hodnocení].pdf",
"corrected": "6158201456 2026-06-08 Hradilová, Zdenka [EKG] [bez hodnocení].pdf"
},
{
"original": "0356030983 2022-05-11 Pelcová, Eliška [Výpis ze zdravotní dokumentace] [Eutrof. 58.7kg/165cm, polyvalentní alergie, migrény, atop. ekzém, funk. blokáda C páteře].pdf",
"corrected": "0356030983 2022-05-11 Pelcová, Eliška [Výpis ze zdravotní dokumentace] [Eutrof. 58.7kg165cm, polyvalentní alergie, migrény, atop. ekzém, funk. blokáda C páteře].pdf"
},
{
"original": "480529219 2026-06-04 Nytra, Vlastimil [LZ urologie] [PIRADS 4 k fúzní Bx prostaty, PSA 06/2026 8.611, ko 23JUL2026].pdf",
"corrected": "480529219 2026-06-04 Nytra, Vlastimil [LZ urologie] [PIRADS 4 k fúzní Bx prostaty, PSA 062026 8.611, ko 23JUL2026].pdf"
},
{
"original": "6162102023 2018-08-20 Vandirkova, Tetjana [EKG] [předoper, sinusový rytmus 60/min, intermed poloha, fyziologický záznam].pdf",
"corrected": "6162102023 2018-08-20 Vandirkova, Tetjana [EKG] [předoper, sinusový rytmus 60min, intermed poloha, fyziologický záznam].pdf"
},
{
"original": "6405250808 2026-05-29 Švéda, Jan [Laboratoř] [dg. Z000, CKD-EPI 1.25 ml/s CHRIG2, HDL 0.94 (↓), P_Glukóza 5.9 (↑)].pdf",
"corrected": "6405250808 2026-05-29 Švéda, Jan [Laboratoř] [dg. Z000, CKD-EPI 1.25 mls CHRIG2, HDL 0.94 (↓), P_Glukóza 5.9 (↑)].pdf"
},
{
"original": "6758120446 2026-06-01 Bečicová, Markéta [Laboratoř] [dg. N309 - kultivace moči: kontaminace, směs mikroflóry 10E3 CFU/ml].pdf",
"corrected": "6758120446 2026-06-01 Bečicová, Markéta [Laboratoř] [dg. N309 - kultivace moči kontaminace, směs mikroflóry 10E3 CFUml].pdf"
},
{
"original": "8004110081 2016-03-07 Čuda, Petr [LZ ORL] [stp tonsilitidem, lipoma ? epiglottidis, zítra incize útvaru na ling. ploše epiglottis].pdf",
"corrected": "8004110081 2016-03-07 Čuda, Petr [LZ ORL] [stp tonsilitidem, lipoma epiglottidis, zítra incize útvaru na ling. ploše epiglottis].pdf"
},
{
"original": "9062110431 2026-06-03 Chriti Vinš, Jeanette [Laboratoř] [dg. Z000, S_AST <0.13 (↓)].pdf",
"corrected": "9062110431 2026-06-03 Chriti Vinš, Jeanette [Laboratoř] [dg. Z000, S_AST 0.13 (↓)].pdf"
}
]