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

2.4 KiB

download_lab_reports_v1.3.py

Verze: 1.3  |  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á.

Režim synchronizace — proměnná SYNC_MODE

Nahoře ve skriptu:

SYNC_MODE = "delta"      # "delta" | "fullsync"
  • delta — jen NOVÉ reporty přes interní reportId (stop-at-known). List je Posted DESC; shora se hledá první už uložený reportId → vše pod ním je starší a v Mongo je. Rychlé, běžný provoz.
  • fullsync — projde VŠECHNY řádky a doplní chybějící/změněné (rekonciliace).

CLI přepíše proměnnou: --delta / --fullsync.

Klíč record_id = reportId

Stabilní 32-hex ID dokumentu z dat AG Gridu, napříč všemi řádky unikátní a perzistentní v čase (ověřeno: stejné reportId vrací i jiný grid pro totéž centrum). Řeší různá PDF se shodnými viditelnými metadaty (reissue se shodným Posted i na minutu) — metadata na klíč nestačí.

Odkud data

Z in-memory dat AG Gridu (__agComponent.gridApi): reportId, fileLinks[].fileId+fileName (server), postedDateTime (moment.js → převedeno na ISO string), siteNum, subjectNumber. Accession/Visit/Collected leží v gridu níž (ve visits) → z buněk (po scrollu). accession se čte doslova (reálný identifikátor kitu), neukládá se nijak odvozeně.

MongoDB dokument

record_id(=reportId), study, studyCode, type, site, subject, accession, visit, collected, posted, postedIso (string), fileId, serverFileName, fields, fileName, pdf (Binary), pdfSize, pdfSha256, firstSeen, lastSeen, history[].

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

python download_lab_reports_v1.3.py                 # podle SYNC_MODE (default delta)
python download_lab_reports_v1.3.py --fullsync      # rekonciliace
python download_lab_reports_v1.3.py --dry-run       # vypíše nové, nestahuje
python download_lab_reports_v1.3.py --limit 5

Zmeny v1.3

  • SYNC_MODE proměnná (delta/fullsync) + CLI --delta/--fullsync.
  • Oprava postedIso: v1.2 ukládal celý moment.js objekt; nyní čistý ISO string.

Nahrazuje

download_lab_reports_v1.2.pyTRASH/.