Files
janssen/Covance/Trash/download_lab_reports_v1.1.md
T
2026-06-16 14:32:28 +02:00

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, kolekce labreports
  • 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 → jen lastSeen

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/.