Files
janssen/Feasibility/store_cda_seaweed_v1.0.md
T
2026-06-17 15:05:10 +02:00

39 lines
1.7 KiB
Markdown

# store_cda_seaweed_v1.0.py
**Verze:** 1.0 · **Datum:** 2026-06-17
## Účel
Uloží podepsané CDA (PDF) z e-mailů asistentek (CTA) do Mongo
`feasibility.investigators` do pole `cda.*` a posune lékaře na
`KROK "5 - CDA podepsano"`.
Na rozdíl od `store_cda_batch` (stahuje `.msg` přes SFTP z Toweru a tahá přílohu
přes `extract_msg`) tahle verze stahuje PDF **přímo ze SeaweedFS** přes
`seaweed_url`, který parser ukládá k příloze v `emaily."vbuzalka@its.jnj.com"`
(`attachments[].seaweed_url` + `sha256`). Jednodušší, bez SFTP.
## Jak to funguje
- `MAPPING` = explicitní párování `investigator _id → (seaweed_url, filename, sha256, size, source_msg_id)`.
- Pro každý záznam: stáhne PDF (urllib), ověří **SHA256 + velikost + PDF hlavičku**,
base64-zakóduje a uloží do `cda`:
`data_base64, data_sha256, data_filename, data_mime, data_size, data_stored_at,
data_source_msg` + metadata `stav="podepsano", soubor, zdroj`.
- Nastaví `KROK = "5 - CDA podepsano"` a předřadí řádek do `STATUS`.
- `_id` se konvertuje na `ObjectId` (čisté pymongo nekonvertuje string→ObjectId samo).
## Použití
```
.venv\Scripts\python.exe Feasibility\store_cda_seaweed_v1.0.py # dry-run (ověří stažení+SHA, nezapisuje)
.venv\Scripts\python.exe Feasibility\store_cda_seaweed_v1.0.py --apply # zapíše do Mongo
```
## Běh 17JUN2026 (--apply)
Uloženo 5/5 (všechny SHA256 OK), KROK 4 → 5:
Závada Filip, Bruncák Michal (FNsP B. Bystrica), Machytka Evžen (Asclepiades),
Pumprla Jiří (PreventaMed), Zapotocká Júlia (PAV-MED).
GASTROMART/Molnár přeskočen (už KROK 6, CDA dříve uloženo).
## Závislosti
`pymongo`, `bson` (+ stdlib). SeaweedFS volume server `192.168.1.50:8888`.
Mongo `192.168.1.76:27017`.