# 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`).