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

2.8 KiB

download_lab_reports_v1.2.py

Verze: 1.2  |  Datum: 2026-06-16

Stahuje PDF Lab Reports ze xsp.labcorp.com (studie 77242113UCO3001, interní 36940, 10 CZ center) přímo do MongoDB (covance.labreports) — metadata + skutečné PDF (inline Binary). Na disk neukládá.

Klíč record_id = reportId

reportId = stabilní 32-hex ID dokumentu z dat AG Gridu, napříč všemi řádky unikátní (ověřeno: 997 řádků → 997 unikátních reportId/fileId).

Proč ne metadata: na portálu se reálně vyskytují různá PDF se shodnými viditelnými metadaty — stejný site|subject|accession|visit|posted i na minutu (korekce výsledku / reissue se shodným časem Posted). Ověřeno: 5 souborů pro accession 6227697718 má 5 různých sha256. Klíčování podle metadat (v1.1) by je chybně sloučilo → ztráta dat. reportId to řeší.

Odkud data

Z in-memory dat AG Gridu přes grid API (__agComponent.gridApi): getDisplayedRowAtIndex(i).datareportId, fileLinks[].fileId+fileName (server), postedDateTime (ISO), siteNum, subjectNumber. reportId jde přečíst bez scrollování → levný pre-check „už mám". Accession/Visit/Collected leží v gridu níž (ve struktuře visits), proto se berou z buněk (po scrollu).

Pozn.: accession se nijak nepočítá ani neodvozuje — je to reálný identifikátor přidělený kitu v laboratoři; čte se doslova z buňky a ukládá 1:1 (accession i fields.Accession).

Stahování + inkrementálně

Klik na „English" → expect_download, PDF z download.path() (bez save_as). List je Posted DESC; ze seznamu (rowIndex, reportId) se shora hledá první už uložený reportIdstop-at-known (zbytek je starší a v Mongo je). Stahují se jen nové (nahoře). Korekce = nový reportId → uloží se jako nový.

MongoDB dokument

record_id(=reportId), study, studyCode, type, site, subject, accession, visit, collected, posted, postedIso, fileId, serverFileName, fields (sloupce tabulky), fileName (náš název), pdf (Binary ~260 KB), pdfSize, pdfSha256, firstSeen, lastSeen, history[]. Upsert: nový→insert; změna sha/fields→push history+update; shoda→jen lastSeen.

Název v fileName: 77242113UCO3001 {odběr} {Site} {Subject} {Visit} {Accession} posted {posted}.pdf

Spuštění (z terminálu uživatele — otevírá GUI Chrome)

python download_lab_reports_v1.2.py --dry-run     # vypíše NOVÉ, nestahuje
python download_lab_reports_v1.2.py --limit 5     # test: 5 nových
python download_lab_reports_v1.2.py               # inkrementální běh
python download_lab_reports_v1.2.py --full        # rekonciliace přes vše

Nahrazuje

download_lab_reports_v1.0.py (disk) a v1.1 (klíč podle metadat — chybný). Obě → TRASH/.