Files
janssen/IWRS/common/paths.py
T
2026-06-10 09:26:06 +02:00

55 lines
1.7 KiB
Python

"""
paths.py — sdílené cesty a souborové utility pro IWRS pipeline.
Verze: 1.0 | Datum: 2026-06-10
Tok souborů:
IWRS/Incoming/ — sem padají všechny stažené reporty (pacienti i léky)
IWRS/Incoming/Processed/ — sem se přesouvají po úspěšném importu do MongoDB
Při chybě importu soubor zůstává v Incoming/ a zpracuje se při příštím běhu.
"""
import os
import shutil
import datetime
IWRS_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
INCOMING_DIR = os.path.join(IWRS_DIR, "Incoming")
PROCESSED_DIR = os.path.join(INCOMING_DIR, "Processed")
STUDIES = ["77242113UCO3001", "42847922MDD3003"]
def ensure_dirs():
os.makedirs(INCOMING_DIR, exist_ok=True)
os.makedirs(PROCESSED_DIR, exist_ok=True)
def unique_path(directory, stem, ext=".xlsx"):
"""Cesta bez kolize — při kolizi přidá ' HHMM' před příponu."""
path = os.path.join(directory, f"{stem}{ext}")
if not os.path.exists(path):
return path
time_tag = datetime.datetime.now().strftime("%H%M")
return os.path.join(directory, f"{stem} {time_tag}{ext}")
def move_done(path, done_dir=None):
"""Přesune zpracovaný soubor do Processed/.
Kolize → přepíše (Mongo už má aktuální data, soubor je jen archiv).
"""
dst_dir = done_dir or PROCESSED_DIR
os.makedirs(dst_dir, exist_ok=True)
dst = os.path.join(dst_dir, os.path.basename(path))
if os.path.exists(dst):
os.remove(dst)
shutil.move(path, dst)
def sorted_by_mtime(paths):
"""Nejstarší první, bez Excel lock souborů (~$...)."""
return sorted(
(p for p in paths if not os.path.basename(p).startswith("~$")),
key=os.path.getmtime,
)