Every version of CuraVerto. From a single appointments tool to an AI-first Care OS.
29
Releases
26
in 2026
97
Modules
v11.9 ships the deepest IVF clinical workflow expansion in CuraVerto's history — a full rebuild of the Rx session for IVF patients with 6 visit-type–routed panels, 13 new components, and 225 lines of pure clinical utility functions. Every IVF encounter type (Consultation, OPU, Embryo Transfer, Cryo, Monitoring, Follow-up) now routes to its own dedicated center panel, while a right-side IVF intelligence block surfaces cycle context at a glance without navigating away. Alongside this, the patient intake modal gains a tri-state MedicalIntakeMatrix, a DPDP consent gate that blocks patient creation until consent is captured, and a deferred-save model that eliminates accidental data loss on tab switch.
IVFCenterPanelRouter — visit-type–routed clinical panels
▼IVFCenterPanelRouter reads ivf_visit_type from the appointment record and renders one of 6 dedicated center panels: Consultation (hormones, treatment history, AFC+ET, semen), OPU (egg retrieval counts, mature oocyte count, sperm prep), Embryo Transfer (embryo selector with Gardner labels, luteal support), Cryo (post-freeze counts per stage), Monitoring (follicle scan recorder), Follow-up (outcome, beta hCG, next step). Doctors always see the right clinical form without manual mode-switching.
Consultation panel — hormones, treatment history, AFC + ET, partner semen
▼IVFConsultationPanel: hormone table (FSH, LH, E2, P4, AMH — editable with OOR colour coding), treatment history (prior cycle count, prior outcomes, current protocol), AFC panel (left/right/total with reserve colour), endometrial thickness, and a partner semen reference row when a linked partner has ivf_sa_reports data. All fields pre-fill from existing cycle records on open.
Procedure panels — OPU, ET, Cryo each with structured data capture
▼IVFOPUPanel: total eggs retrieved, mature oocytes (MII), insemination method (IVF/ICSI/IMSI), sperm prep outcome, anaesthesia notes. IVFETPanel: embryo dropdown populated from ivf_embryology_log Gardner grades, number of embryos transferred, luteal support protocol, transfer difficulty (easy/mild/difficult), catheter used. IVFCryoPanel: day 3/5/6 freeze counts per session, vitrification protocol, storage tank assignment. All panels write to the appropriate ivf_* tables via existing APIs.
IVF intelligence right-panel — cycle context block in every session
▼IVFIntelligence renders in the right intelligence panel for all IVF visit types: current cycle phase, last hormone values with trend arrows, AFC total, embryo count in cryo, most recent monitoring scan summary, and triage suggestions from ivf-triage-templates.js. Collapsible — defaults open for IVF visits. Computed in lib/ivf-rx-utils.js (225 lines of pure functions, 179 unit test assertions).
IVFContextChips + IVFCoupleContext — persistent session header
▼IVFContextChips renders a sticky sub-header inside RxSessionModal showing cycle phase, stim protocol, day of stim, and IVF visit type badge. IVFCoupleContext shows the linked partner name, blood group, and SA result chip. Both are read-only and always visible regardless of which center panel is active — gives full clinical context without scrolling.
Monitoring panel inside Rx session — scan recorder without leaving the modal
▼IVFMonitoringPanel: scan session recorder embedded in RxSessionModal for Monitoring visit type. Staff enter follicle sizes (left/right arrays), leading follicle, endometrial thickness, and hormone values (E2, LH, P4) per session date. Saves to ivf_monitoring_sessions via the existing API. Doctor decision chips (continue stimulation / trigger today / cancel cycle) are persisted as decision_flag on the session row.
IVFFollicleGrid — per-scan follicle visualisation
▼IVFFollicleGrid renders a compact grid showing left and right follicle sizes per scan session, colour-coded by size (grey <10mm, teal 10–14mm, green 15–17mm, amber 18mm+). Provides an at-a-glance response curve across all monitoring sessions in the cycle without opening the full IVFMonitoringPanel history.
Milestone-complete API — server-side validation with clinical recording
▼POST /api/ivf/milestone-complete: validates milestone sequence (cannot complete a later milestone before earlier ones), records completion_date and clinical_notes, computes the next eligible milestone, and fires an audit log entry. 126 unit test assertions cover all sequence violations. Accepts optional clinical payload (egg count, embryo count, outcome) that writes to the relevant ivf_* table atomically alongside the milestone update.
Treatment history API — per-tenant prior cycle context
▼GET /api/ivf/treatment-history: returns prior IVF cycles for the patient across all past encounters — outcome, stim protocol, embryo count, transfer results, cryo inventory — for display in the Consultation center panel. 153 unit test assertions. Scoped to tenant_id, never crosses tenants. Couple-aware: if a partner is linked, also returns partner SA history.
MedicalIntakeMatrix — tri-state condition capture (yes / no / don't know)
▼New MedicalIntakeMatrix component: replaces the 70+ condition checkbox grid with a tri-state toggle per condition (yes = confirmed, no = explicitly ruled out, don't know = unrecorded). All 70+ conditions organised in 10 clinical groups from lib/medical-conditions.js. State stored as conditions_matrix JSONB — backwards-compatible with existing conditions string[] via migration shim. 130 unit test assertions.
DPDP consent gate on patient create — blocks until consent is captured
▼ConsentGate component wraps the patient create flow: new patient modal shows a consent disclosure step before any clinical data is entered. Consent captured as a clinical_consents row (record_type=dpdp_consent) before the patient record is created. Create button is disabled until ConsentGate reports consent = true. Gate can be bypassed by admin role with an override reason (logged to audit_logs). 101 integration test assertions.
Deferred-save model + height-locked modal — no data loss on tab switch
▼Patient modal now collects all tab data in memory and saves atomically on explicit Save click — no auto-save on tab switch. Eliminates the silent partial-save bug where switching tabs mid-entry triggered a premature Supabase write. Modal height locked to viewport constant — eliminates the jarring resize when switching between tabs with different content heights.
lib/medical-conditions.js — 120-line condition registry, single source of truth
▼CONDITION_GROUPS extracted from EditPatientModal into lib/medical-conditions.js: 10 groups × 70+ conditions, each with id, label, and clinical_group. Used by MedicalIntakeMatrix, PatientContextStrip, RxSessionModal contraindication check, and the condition picker search. Replaces 3 separate inline arrays that had drifted out of sync.
All Changes in v11.9