G1
Lab results module
Critical
1,585 results and climbing fastest of anything in the install. Needs a result record (patient, test type, requesting physician, pathologist, analysis date, narrative results and diagnosis, status), structured result lines with parameter, value, unit, limits, normal range and an out-of-range flag, plus catalogs for the 44 test types and 106 units. Odoo also stores a generated PDF per result.
The laboratory_technician role and AppointmentType::LAB already exist in MediRec with nothing behind them.
G2
Document attachments
Critical
3,167 files against patients and consultations. Nothing in MediRec's nineteen tables can hold a file. Needs a polymorphic attachment model, storage configuration, upload UI on the patient and consultation views, and a migration path for the existing binaries.
Confirmed 2026-08-02: the files are scanned medical visit forms, lab results, X-rays and other documents. All of them carry over, with no exclusion by type, and they must live inside MediRec — Odoo is being decommissioned, so there is no read-only fallback. The X-rays are ordinary image files rather than DICOM studies, so this stays a file-handling feature and needs no medical imaging viewer.
Rescoped against MED-111: Erik has already extracted the documents — ~5,100 files, ~14 GB — and they are bound for Laravel Cloud, not the local private disk. This is not a "pull the binaries out of Odoo" problem; it is a secure-intake, storage-layout and record-linkage problem, with an encrypted transfer path and a verification count against Odoo. The ticket flags it as real patient data needing a human at every step.
Treat the PHI rules in CLAUDE.md as binding on both storage location and access logging.
G4
Epidemiological notifiable-disease reporting
Critical
medical.diagnostic is the 91-entry El Salvador MINSAL list — dengue, tuberculosis, chagas, maternal and infant deaths, intento de suicidio, violación sexual — attached many-to-many to every consultation. This looks like a regulatory reporting obligation rather than a convenience feature, and MediRec has no way to produce the return.
Confirm the reporting cadence with the clinic before scoping this one.