39 lines
1.7 KiB
Markdown
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`.
|