# create_lab_results_report_v1.0

**Verze:** 1.0 — 2026-06-09
**Skript:** `U:\PythonProject\Janssen\Covance\create_lab_results_report_v1.0.py`
**Stav:** samostatný (standalone) — později se sloučí do hlavního `create_report_v2.0.py`.

## Účel
Generuje „pěkný" Excel report laboratorních výsledků obou studií Covance/Labcorp
(36940 = UCO3001, 35472 = MDD3003) ze zdroje **MongoDB `covance.results`**
(standard + microbiology). Styl odpovídá hlavnímu reportu (modré hlavičky 4472C4,
rámečky, freeze panes, autofiltr, skutečné Excel datumy `DD-MMM-YYYY`, hyperlinky
mezi listy, barevné souhrny).

## Vstup / výstup
- **Vstup:** `mongodb://192.168.1.76:27017`, db `covance`, kolekce `results`.
- **Výstup:** `U:/Dropbox/!!!Days/Downloads Z230/{YYYY-MM-DD_HHMMSS} Covance lab results report.xlsx`
  (verzovaný timestampem; starší výstupy ručně do `TRASH/`).

## Listy (10)
1. **PREHLED** — KPI dashboard; každé číslo je hyperlink do detailu. Bezpečnostní
   dlaždice (Hyův zákon, mikrobiologie) se přebarvují zeleně (0) / červeně (>0).
2. **SOUHRN CENTER** — rollup per (studie, centrum, pacient): počty výsledků,
   abnormálních, kritických, mezer, zrušených, revizí + první/poslední sběr.
   Mezisoučty per centrum + CELKEM. Pacient → odkaz do Abnormality.
3. **DILI Hyuv zakon** — verdikt (zelený/červený) + výpis všech 5 DILI kritérií.
   „Criteria Met" na ALT/AST≥3xULN (a kombo s TBIL) = červeně; `ALP<2XULN`
   „Criteria Met" jen žlutě (samo o sobě NENÍ pozitivní). Pozitivní = konjunkce
   transamináza ∧ TBIL kombo.
4. **Abnormality** — pracovní seznam všech výsledků mimo rozmezí (705), řazeno
   nejhorší první (závažnost → „Mimo o %"). Kritická = červený řádek, Vysoká =
   žlutý, Mírná = červené písmo hodnoty. Accession → Zdroj, Pacient → Souhrn.
5. **Matice pokryti** — pacient × návštěva, buňka = počet výsledků + stav barvou
   (kritická/abnormální/zrušená/ok). **Prázdná buňka je neutrální** (bez plánu
   návštěv per pacient nelze rozlišit „chybí" od „neočekáváno").
6. **Zrusene testy** — pivot důvodů + výpis (292+ zrušených); ztracený vzorek
   (no specimen/QNS/…) červeně.
7. **Mikrobiologie** — kultivace; verdikt + auto-flag první pozitivní.
8. **Datove mezery** — „Required testing unavailable" / „Unable to calc due to
   LOQ" + prázdné hodnoty v klíčových panelech.
9. **Zdroj** — plochý výpis všech standardních výsledků (kotva pro hyperlinky),
   abnormální Příznak zvýrazněn.
10. **LEGENDA** — vysvětlení flagů, závažnosti, barev, Hyova zákona, studií.

## Klíčová logika (helpers)
- `parse_flags` — H/L směr + kvalifikátory (T = panic, SF, RX).
- `out_by_pct` — % za hranicí rozmezí (normalizováno šířkou rozmezí).
- `severity` — 3 Kritická (T / ≥100 % / jaterní H / cytopenie L), 2 Vysoká
  (≥50 %), 1 Mírná.
- `hys_positive` — Hyův zákon jako konjunkce (transamináza ∧ TBIL kombo);
  `ALP<2XULN` nikdy netriggeruje.
- `micro_positive` — Organism/Growth nebo Test Result ≠ negativní fráze
  (future-proof, aktuálně 0).
- `rev_flags` — Subject/Visit/Result Data Revision == „R".

## Aktuální čísla (běh 2026-06-09)
- 11 849 výsledků (standard 11 823, micro 26), 15 center, 58 pacientů.
- Abnormálních 705 (kritických 122), zrušených 292, mezer 15, revizí 767.
- Hyův zákon pozitivních **0**, mikrobiologie pozitivních **0**.

## TODO / nápady na iteraci
- Plná česká diakritika v názvech listů a popiscích (teď ASCII kvůli jistotě).
- List **Revize dat** (history[] je zatím prázdná, jen Data Revision flagy).
- Sloučit do hlavního `create_report.py` (sdílet styly + helpers).
- Volitelně filtr na jednu studii / parametr CLI.
