z230
This commit is contained in:
@@ -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)
|
||||
|
||||
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"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user