2.1 KiB
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.