z230
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# 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/`.
|
||||
Reference in New Issue
Block a user