2.2 KiB
download_lab_reports_v1.1.py
Verze: 1.1 | Datum: 2026-06-16
Stahuje PDF Lab Reports ze xsp.labcorp.com (studie 77242113UCO3001,
interní 36940, 10 CZ center) a ukládá je přímo do MongoDB — metadata
z tabulky + skutečné PDF (inline Binary). Na disk neukládá.
Princip
Playwright + perzistentní profil (browser_profile/), jednorázový login,
klik na „English" ve sloupci Download. PDF bajty se čtou z Playwright temp
souboru (download.path()), save_as se nevolá → nic netrvalého na disku.
Materializaci adresáře z Monga řeší samostatný (budoucí) skript.
Inkrementálně (stop-at-known)
List je řazený Posted DESC (nejnovější nahoře). Skript jde shora dolů;
u každého řádku nejdřív přečte metadata a spočítá record_id. Jakmile narazí
na už uložený report, končí (vše pod ním je starší a už v Mongo je) —
stahuje tedy jen nové.
Korekce výsledků = stejný report znovu vystavený s novým Posted →
nový record_id → stáhne se jako nový, původní zůstává.
MongoDB
- db
covance, kolekcelabreports - klíč
record_id = "{site}|{subject}|{accession}|{visit}|{posted}"(Posted vč. času odlišuje reissue) - dokument:
study,studyCode,type,site,subject,accession,visit,collected(yyyy-mm-dd),posted(yyyy-mm-dd HH:MM),fields(sloupce tabulky),fileName,pdf(Binary ~260 KB),pdfSize,pdfSha256,firstSeen,lastSeen,history[] - upsert: nový → insert; změna sha/fields → push do
history+ update; shoda → jenlastSeen
Spuštění
python download_lab_reports_v1.1.py --dry-run # jen vypíše NOVÉ, nestahuje, nepíše
python download_lab_reports_v1.1.py --limit 5 # test: max 5 řádků
python download_lab_reports_v1.1.py # inkrementální běh (stop-at-known)
python download_lab_reports_v1.1.py --full # projít vše (rekonciliace)
Pozn. ke spuštění
Otevírá viditelné GUI Chrome — musí běžet z terminálu uživatele s desktop session (ne headless/agent prostředí).
Nahrazuje
download_lab_reports_v1.0.py (ukládal na disk) — po dokončení jeho běhu
přesunout v1.0 (.py i .md) do TRASH/.