This commit is contained in:
2026-06-16 14:32:28 +02:00
parent b825e4ee7c
commit f385d7bf0b
95 changed files with 43120 additions and 0 deletions
@@ -0,0 +1,53 @@
# download_lab_reports_v1.0.py
**Verze:** 1.0  |  **Datum:** 2026-06-16
Stahuje PDF **Lab Reports** ze `xsp.labcorp.com` pro studii **77242113UCO3001**
(interní číslo `36940`), filtrovaně na **10 českých center**.
## Princip
Stejný jako `download_test_results` — Playwright + perzistentní profil
(`browser_profile/`), jednorázový login (email → Next → heslo → Verify, jinak se
přeskočí), stahování **přes UI**: klik na odkaz **„English"** ve sloupci Download
`POST /api/download/documentFile``expect_download`.
Lab Reports je **AG Grid s virtuálním renderem** (~50 z 298 řádků v DOM).
Skript proto scrolluje viewport po indexech (`row-index`), u každého řádku
přečte metadata z buněk (`col-id`: `subjectId`, `accessionNumber`, `visit`,
`visitCollectionDate`, `siteNum`, `postedDateTime`; zdvojený text se odstraní)
a klikne na „English".
## Název PDF
Mezery místo podtržítek; první datum = **odběr** (`visitCollectionDate`),
`posted` = **datum vystavení** (`postedDateTime`, jen datum) — odliší reissue
stejného reportu (stejný accession, různé Posted):
```
77242113UCO3001 {odběr} {Site} {Subject} {Visit} {Accession} posted {posted}.pdf
```
Příklad: `77242113UCO3001 2026-06-11 CZ10009 CZ100092003 Screening 6227323331 posted 2026-06-15.pdf`
Při zbylé kolizi názvu se přidá ` (2)`, ` (3)`, …
## Spuštění
```
python download_lab_reports_v1.0.py --dry-run # jen vypíše názvy, nestahuje
python download_lab_reports_v1.0.py --limit 5 # stáhne jen prvních 5 (test)
python download_lab_reports_v1.0.py # stáhne vše (~298)
```
**Výstup:** `U:\PythonProject\Janssen\Covance\LabReports\`
## Konfigurace (v hlavičce skriptu)
- `SITES` — 10 interních ID center (z „GO TO LINK" URL).
- `STUDY` = `36940`, `STUDY_CODE` = `77242113UCO3001`.
- `OUT_DIR`, `LOGIN_URL`, `PROFILE_DIR`.
## TODO / k doladění
- Cílový adresář (možná Dropbox / per-studie podsložka).
- Případně přeskakovat už stažené (teď se přidává `(2)`).
## Pozn. ke spuštění
Skript otevírá viditelné GUI Chrome (Playwright) — musí běžet z **terminálu
uživatele s desktop session** (PowerShell / dvojklik), ne z headless/agent
prostředí (tam Chromium spadne s `exitCode 2147483651`).