Files
janssen/Covance/materialize_lab_reports_v1.0.md
2026-06-16 14:32:28 +02:00

2.1 KiB
Raw Permalink Blame History

materialize_lab_reports_v1.0.py

Verze: 1.0  |  Datum: 2026-06-16

Materializuje Lab Reports z MongoDB (covance.labreports) do Dropboxu. Cíl: adresář = identická kopie Monga (plné zrcadlo) — doplní chybějící PDF a smaže přebytečné. Žádná jiná ambice. (Opak download skriptu, který plní Mongo z portálu.)

Cílové cesty (klíč = studyCode)

77242113UCO3001 -> u:\Dropbox\!77242113UCO3001\#020 Reporty\LabCorp
42847922MDD3003 -> u:\Dropbox\!!42847922MDD3003\#000 Reports\LabCorp

Struktura

<base studie>\<centrum siteNum>\<fileName>.pdf — podsložka per centrum (CZ10003\, …), do ní všechna PDF toho centra.

Název souboru

= doc.fileName z Monga. Když víc různých reportů (různé reportId) má v jednom centru stejný název, přidá se ke všem z té skupiny [<reportId[:8]>] → vždy unikátní a stabilní (idempotentní zrcadlo). Běžné případy (liší se datum Posted) zůstávají s čistým názvem.

Zrcadlení

  • + zapsat chybějící (PDF binárka se z Monga tahá až teď, jen pro chybějící; existující se shodnou velikostí se přeskočí — obsah reportu je v čase neměnný).
  • smazat PDF, které v Mongu nejsou; odstranit prázdné podsložky center.
  • Mazání naostro (žádný potvrzovací krok) — je to čistý mirror.
  • Pojistka: pokud Mongo vrátí pro studii 0 dokumentů, studie se přeskočí (nesmaže celý adresář kvůli výpadku DB) — obejde --allow-empty.

Spuštění (čistá Mongo+FS operace, GUI netřeba)

python materialize_lab_reports_v1.0.py --dry-run     # jen náhled (+X/Y), nic nezapíše
python materialize_lab_reports_v1.0.py               # zrcadlí naostro
python materialize_lab_reports_v1.0.py --verify      # u existujících porovná i sha256
python materialize_lab_reports_v1.0.py --study 42847922MDD3003   # jen jedna studie

Návaznost

Plní project_covance_labreports download_lab_reports_v1.4 (portál → Mongo), tento skript dělá druhý směr (Mongo → Dropbox). Idempotentní — lze pouštět opakovaně / na konci download běhu.