z230
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""
|
||||
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,
|
||||
)
|
||||
Reference in New Issue
Block a user