v11.9IVF Clinical Suite & Adaptive Patient Intake

Release Notes

Every version of CuraVerto. From a single appointments tool to an AI-first Care OS.

29

Releases

26

in 2026

97

Modules

v11.9CurrentJune 2026

IVF Clinical Suite & Adaptive Patient Intake

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.

⚡ See what's new in v11.9 →
🧬
IVF Rx Session — 6 Visit Types

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.

📈
IVF Monitoring & Milestone Complete

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.

📋
Adaptive Patient Intake Modal

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

  • IVFCenterPanelRouter — 6 visit types each route to a dedicated clinical center panel
  • Consultation panel: hormone table (FSH/LH/E2/P4/AMH), AFC, treatment history, partner SA reference
  • OPU panel: egg retrieved, MII count, insemination method (IVF/ICSI/IMSI), sperm prep, anaesthesia notes
  • ET panel: embryo dropdown with Gardner grades, transfer count, luteal support, catheter, difficulty
  • Cryo panel: day 3/5/6 freeze counts per session, vitrification protocol, tank assignment
  • Follow-up panel: outcome recording, beta hCG value, next step decision
  • IVFIntelligence right panel — cycle phase, hormone trend arrows, AFC, cryo count, triage suggestions
  • lib/ivf-rx-utils.js — 225 lines pure functions, 179 unit assertions; ivf-triage-templates.js
  • IVFContextChips — sticky header: cycle phase, stim protocol, day of stim, visit type badge
  • IVFCoupleContext — partner name, blood group, SA chip always visible in session header
  • IVFMonitoringPanel in RxSessionModal — scan recorder without leaving the Rx flow
  • IVFFollicleGrid — colour-coded follicle size grid across all monitoring sessions
  • Milestone-complete API: sequence validation + atomic clinical write; 126 unit assertions
  • Treatment history API: prior cycles + partner SA history; 153 unit assertions; tenant-scoped
  • MedicalIntakeMatrix — tri-state yes/no/don't know for 70+ conditions in 10 groups
  • DPDP consent gate on patient create — consent captured before any clinical data entered
  • Deferred-save model — all tabs saved atomically; eliminates silent partial-save on tab switch
  • Modal height locked — no jarring resize on tab switch
  • lib/medical-conditions.js — 120-line registry; replaces 3 out-of-sync inline arrays
  • 52 files changed, 5,543 insertions across IVF Rx redesign; 9 files, 871 insertions for patient intake