mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 04:50:59 +00:00
Ingest an uploaded doctor report / discharge letter through the existing dedicated OCR/vision provider rails (the v1.22 document-scan provider/key, reused — no new provider) and transcribe structured facts into staging. The safety line is extract, never interpret: the prompt frames the document as untrusted data to reproduce verbatim. Diagnoses map to Condition, measured values to Observation, medications to MedicationStatement — with STATED status only. A code survives only when the document writes it and its system matches the resource (SNOMED/ICD-10 for a diagnosis, LOINC for a value, RxNorm/ATC for a medication); nothing is inferred, no value is range-flagged, no condition is linked to a medication. Every fact carries per-field provenance and a confidence score; a fact below the confidence floor fails closed — it cannot be approved until the user edits it. Routes (apiHandler + Zod + session-narrowed userId, opt-in module-gated): - POST/GET /api/documents/inbound — upload+extract (vision or local-OCR text), and list. The raw document is stored encrypted at rest. - GET/DELETE /api/documents/inbound/[id] — review detail; soft-delete. - PATCH .../facts/[factId] — correct a staged fact before approval. - POST .../confirm — the only write path: approved facts flow into the labs / conditions / medications stores through their normal create paths; rejected facts are discarded; low-confidence facts are refused.