z230
This commit is contained in:
@@ -187,12 +187,23 @@ def import_subject_summary(study, summary_path):
|
||||
return import_id
|
||||
|
||||
|
||||
DETAIL_FILENAME_RE = re.compile(r"(\d{4}-\d{2}-\d{2}) (\S+) (\S+) Subject Detail\.xlsx")
|
||||
|
||||
|
||||
def parse_detail_filename(path):
|
||||
"""Vrátí (date, study, subject) nebo None."""
|
||||
m = DETAIL_FILENAME_RE.search(os.path.basename(path))
|
||||
if not m:
|
||||
return None
|
||||
return m.group(1), m.group(2), m.group(3)
|
||||
|
||||
|
||||
def import_visits(study, detail_files):
|
||||
print(f" [{study}] visits z {len(detail_files)} detail souboru")
|
||||
docs = []
|
||||
for path in detail_files:
|
||||
m = re.search(r"\d{4}-\d{2}-\d{2} \S+ (\S+) Subject Detail\.xlsx", os.path.basename(path))
|
||||
subject = m.group(1) if m else "UNKNOWN"
|
||||
parsed = parse_detail_filename(path)
|
||||
subject = parsed[2] if parsed else "UNKNOWN"
|
||||
visits = parse_detail_visits(path)
|
||||
for v in visits:
|
||||
docs.append(visit_to_doc(study, subject, v))
|
||||
@@ -209,6 +220,26 @@ def import_visits(study, detail_files):
|
||||
return import_id
|
||||
|
||||
|
||||
def import_visits_single_file(study, subject, path):
|
||||
"""Naimportuje vizity z JEDNOHO detail souboru (pro chronologické snapshoty)."""
|
||||
visits = parse_detail_visits(path)
|
||||
docs = []
|
||||
seen = set()
|
||||
for v in visits:
|
||||
d = visit_to_doc(study, subject, v)
|
||||
if d["_id"] in seen:
|
||||
continue
|
||||
seen.add(d["_id"])
|
||||
docs.append(d)
|
||||
import_id = log_import(study, os.path.basename(path), "visits", {"visits": len(docs), "subject": subject})
|
||||
n = bulk_upsert_with_snapshot(
|
||||
"iwrs_visits", "iwrs_visits_snapshots",
|
||||
docs, import_id,
|
||||
)
|
||||
print(f" [{study}/{subject}] {os.path.basename(path)} import_id={import_id} vizit={n}")
|
||||
return import_id
|
||||
|
||||
|
||||
# ── main entry (volá se z run_all.py) ────────────────────────────────────────
|
||||
|
||||
def run(study, summary_path, details_dir, today):
|
||||
|
||||
Reference in New Issue
Block a user