v7.0 v6.1 v6.0 v5.0 v4.0 v3.0 v2.0 v1.0
7.0
Ambient Intelligence &
Clinical Media
March 2026
Current Release
The clinic that listens. v7.0 introduces the Ambient Dental Scribe — a real-time AI charting system that passively captures the consultation and updates the odontogram as the dentist speaks. No typing. No clicking. Just dentistry. Plus clinical photography, inline dental panels on appointments, and full OpenAI key management.
Ambient Dental Scribe
🎙️
Real-Time AI Charting During Consultation
Browser MediaRecorder captures mono 16kHz audio in 8-second chunks. Each chunk is POSTed to /api/dental/ambient-scribe/chunk → OpenAI Whisper transcribes → GPT-4o-mini (temperature 0.1) extracts structured clinical findings → findings pushed via WebSocket sidecar to browser → confidence-gated updates to the Odontogram in real-time. Audio is never stored — deleted immediately after transcription.
Whisper Transcription GPT-4o-mini Extraction WebSocket Sidecar 8s Chunk Interval Audio Never Stored
🔒
Confidence Gating
≥0.85: finding auto-applied silently. 0.70–0.84: applied with amber "AI — verify" badge. <0.70: queued for manual review in AmbientSummaryModal. Hard floor: 0.70 — never lowered per-tenant.
🔌
WebSocket Sidecar (ws-server)
Standalone Node.js ws process on port 3001. Holds browser connections, forwards findings from Next.js chunk route in <500ms p95. Protected by WS_INTERNAL_SECRET. No DB access — pure routing.
📋
AmbientSummaryModal
End-of-session review with applied findings, treatment plan additions, low-confidence flags with confirm/dismiss controls, and editable GPT-generated patient summary. Exit paths: Edit in Plan Builder or Present to Patient.
🛡️
PatientConsentModal
One-time consent gate per patient. Shows three privacy disclosures — no audio stored, OpenAI processing under clinic's agreement, right to decline. Suppressed for all future sessions once consented.
RULE
Critical engineering rules for /chunk: Always returns HTTP 200 — never 4xx/5xx. GPT temperature must be exactly 0.1. DB writes are fire-and-forget, never blocking the response. Audio deleted via fs.unlinkSync() in a finally block. Per-tenant confidence threshold cannot go below 0.70.
Clinical Photography
📸
ClinicalPhotoUpload.js
Per-tooth and per-visit photo management using the existing patient_documents table — no new DB table. FDI tooth tagging, visit phase tagging (Initial / Pre-treatment / Mid / Post / Review), photo type selector.
FDI Tooth Tags Before/After Pairing 15MB Max HEIC Support
🔗
Before/After Pairing
Bidirectional link stored in metadata.paired_with. Paired photos display side-by-side in gallery. Lightbox with keyboard navigation. Soft-delete via metadata.deleted_at — never hard-deletes from Storage.
Dental Visit Card & AI Key Management
🦷
DentalVisitCard.js
Inline expandable panel on AppointmentsTab rows. Shows today's procedures, compact TreatmentProgressTracker, advance balance. Lazy-loads on expand. Quick actions: Collect Advance, Mark & Bill, Open Full Chart.
🔑
AIAssistantCard.js
IntegrationsTab card for OpenAI API key management. Verify-before-save flow — key tested against OpenAI before storing. AES-256-GCM encrypted in tenants.ai_config. Ambient Scribe toggle. Last 4 chars stored for display.
New Data Model: dental_ambient_sessions
ColumnTypePurpose
statustextrecording / processing / completed / error
patient_consentboolMust be true for session to have data
transcript_segmentsJSONB[]Per-chunk transcriptions, appended continuously
findings_logJSONB[]Raw per-chunk GPT output — preserved for audit
applied_findingsJSONB[]Deduplicated, confidence-gated findings. Set on finalize.
low_confidence_flagsJSONB[]Findings below 0.70 threshold — for manual review
plan_additionsJSONB[]Treatment plan suggestions extracted from speech
whisper_seconds_usedintCumulative Whisper audio seconds — for cost display
gpt_input_tokensintCumulative GPT input tokens consumed
chart_snapshot_startJSONBdental_charts state at session start — before/after audit
6.1
Vaccine & Patient Journey
Late 2025
Stable
Never miss a dose. Complete immunisation tracking for all patient age groups — IAP 2023 schedule defaults, age-based patient classification (Pediatric / Antenatal / Adult), 3-step schedule assistant, daily kanban dashboard, WhatsApp reminders, and deep integration with the prescription workflow.
Vaccine Module
💉
VaccineScheduleAssistant — 3-Step Setup
Guided modal: Step 1 auto-classifies patient (Pediatric if <12y, Antenatal if LMP set, Adult/Travel otherwise). Step 2 computes all due dates from IAP 2023 schedule via computeDueDate(). Step 3 batch-inserts patient_vaccinations records.
IAP 2023 Schedule Auto-classification computeDueDate()
📊
VaccineDashboard — Daily Kanban
3-column kanban: Overdue (rose) / Due Tomorrow (indigo) / Upcoming (amber). "Send All Reminders" button for batch WhatsApp dispatch. Grouping by vaccine or patient. Upcoming window adjustable from 3–30 days.
📱
Rx Integration — Vaccine Banner
Amber banner in RxSessionModal shows pending doses due within 7 days. "Add to Rx" creates pre-filled vaccine row. Post-save sync updates patient_vaccinations to "administered" status.
🔔
Automated WhatsApp Reminders
3-reminder cadence: Day before, 2 days after due, 5 days after due. Max 3 reminders per patient per dose. Templates with {{name}}, {{vaccine_name}}, {{dose_label}} variables. Configurable send time.
Patient Journey Improvements
💳
Inline Payment Modal
PaymentModal embedded in AppointmentsTab. 4 payment modes: Cash, UPI/GPay, Card, Insurance. Inline PDF receipt generation on payment. No more navigating to Finance to collect payment.
🩺
Clinical Notes / Triage
ClinicalNotesModal saves a draft prescriptions row (status: "draft") for triage observations before the doctor's full session. Draft prescriptions are excluded from patient history views.
✏️
EditPatientModal (Shared)
Shared modal used by AppointmentsTab and PatientsTab. Always fetches the latest patient row before opening — never uses stale appointment snapshot data. Collapses sidebar on mount for screen space.
🖨️
Rx Print Preview
RxPrintModal renders a formatted prescription preview matching the PDF layout. Staff can verify before printing or re-downloading. Accessed via "Print / View Rx" button on appointment rows.
6.0
The Complete Dentist
Mid 2025
Stable
Teeth, finally done right. The dental module graduated from a bundled PRO feature to a first-class speciality. Full odontogram, AI-generated treatment proposals, phased treatment plans with patient acceptance, full-mouth periodontal charting (192 data points per exam), lab case pipeline, advance ledger, and referral letter generation.
Core Dental Suite — GA
🦷
Odontogram.js — FDI Interactive Charting
Full 32-tooth FDI notation chart. Click any tooth to record condition, surfaces, mobility grade, and furcation class. Data upserted to dental_charts. Dual view: Current Status + Treatment Plan side by side.
📋
TreatmentPlanBuilder — Phased Plans
Multi-phase course of treatment. Import from AI proposal or build manually. Each phase has procedures, costs, target dates, and appointment links. Saves atomically to dental_treatment_plans, dental_plan_phases, dental_treatments.
🤖
AI Treatment Proposals
GPT-4o-mini generates phased treatment plan from chart snapshot. Stored in dental_ai_proposals with status tracking (proposed → accepted). Cost estimates and affected tooth count included.
✍️
PlanAcceptanceModal
In-clinic acceptance with HTML5 canvas signature capture. Digital acceptance via WhatsApp — patient confirms remotely. Full audit trail in dental_plan_acceptance_log with signature_data stored as base64.
Advanced Clinical Tools
🔬
PerioChartingUI — 192 Site Examination
All 32 teeth × 6 sites (MB, B, DB on buccal; ML, L, DL on lingual). Pocket depth colour-coded: ≤3mm green, 4–5mm amber, ≥6mm red. BOP + suppuration toggles per site. AAP/EFP 2017 classification. Live stats: BOP%, mean PD, sites ≥4mm, sites ≥6mm.
192 Data Points BOP per site AAP/EFP 2017
📈
PerioHistoryPanel — Trend Analysis
Timeline of all perio sessions. SVG sparklines for BOP%, mean PD, sites ≥6 across exams. Side-by-side comparison with delta arrows (↑ red / ↓ green). Classification progression labelled timeline.
🏭
DentalLabTracker — 4-Stage Pipeline
Sent → In Lab → Received → Fitted. Overdue detection when expected_date passed. Status advancement with audit trail in dental_lab_case_updates. WhatsApp reminder to lab. Appointment linking for try-in.
💰
PatientAdvanceModal — Advance Ledger
3 modes: collect (credit), deduct (debit on procedure completion), view (read-only). DAR-YYYYMM-XXXX receipt numbers. Balance = sum(credits + refunds) − sum(debits). WhatsApp receipt sent on collection.
New Tables in v6.0
12
New dental tables
192
Perio sites per exam
32
FDI teeth charted
5
Plan acceptance statuses
5.0
The Analyst
Early 2025
Legacy
See around corners. Revenue analytics, multi-branch performance comparison, doctor commission engine, payout ledger, and the credits economy — because what you can't measure, you can't improve. Broadcast campaigns for patient re-engagement also shipped in this version.
Finance & Analytics
💸
Doctor Commission Engine
Per-doctor commission rules (percentage model). Earned vs paid vs balance due. Inline edit from CommissionRules.js. PRO plan and above only. Roles: admin/owner/finance_manager can access.
📊
Financial Reports & Payouts
Revenue bar charts by time range (This Month / Last Month / Last 90 Days / Custom). KPI cards for Total, UPI, and Cash revenue. Doctor payout ledger with settlement recording. CSV export.
🏢
Branch Performance
Multi-branch comparison on PLUS plans. Revenue, appointment volume, and capacity utilization side-by-side across all clinic locations. All using tenant timezone via resolveTimeZone().
💰
Credits Economy
wallet_balance on tenants table. Monthly plan credits issued automatically. Top-up via Razorpay — purchased credits never expire. Usage tracked in feature_usage_logs per feature_slug.
Broadcast Campaigns
📢
4-Step Broadcast Builder
Intent → Filters → Patient selection → Compose. {{name}} personalisation. Image upload for Greetings/Promotional. Live WhatsApp phone preview. Records in broadcasts table. PRO plan only.
📈
Broadcast Analytics & History
Success/fail counts per campaign. BroadcastAnalytics for aggregate monthly stats. BroadcastHistory for past campaign listing. Delivery logs accessible at PLUS level via DeliveryLogs.js.
4.0
The Diagnostician
2024
Legacy
The full clinical picture. Diagnostics LIMS with a complete lab workflow — test orders, result entry with dynamic templates, PDF lab report generation, and WhatsApp delivery on publish. Physiotherapy session management also shipped, giving CURA its first multi-specialty capability.
Diagnostics / LIMS
🔬
Lab Order → Result → Delivery Workflow
Doctor creates diagnostic_orders → lab tech opens ResultEditorModal → dynamic template renders form fields (label, type, unit, reference_range) → results saved as diagnostic_results → publish triggers WhatsApp PDF to patient.
🧪
Lab Studio — Template Builder
TemplateBuilderTab for creating diagnostic report templates. JSONB structure with field definitions. Shared across the tenant for consistent lab reports across all test types.
Physiotherapy Suite
🏃
Rehab Case Management
rehab_cases as master record with session packs (total_sessions_purchased, sessions_remaining). Session logging with VAS 0–10 pain slider, modality toggles (IFT, TENS, Ultrasound, etc.), SOAP notes, ROM data.
⚠️
Auto-Signals & Protocol Studio
HIGH_PAIN signal auto-created when pain score ≥ 8. rehab_protocols table for reusable treatment templates. PHYSIO_COCKPIT daily view shows all active cases filtered by logged-in therapist.
3.0
The Specialist
2024
Legacy
Beyond general practice. The module system launched — clinics can enable specialty features without paying for or seeing features they don't need. Queue TV Board shipped for busy polyclinics. AI Scribe entered beta. Six themes added for brand customisation.
Platform Architecture
🧩
Module System
modules JSONB column on tenants. Sidebar filters items by modules[section.module]. Integrations tab for toggling modules on/off. Dental, Physio, Diagnostics, Pharmacy, Vaccines all module-gated.
📺
Queue TV Board
Smart TV display for polyclinic waiting rooms. Live token numbers via Supabase polling. Chime sound on token advance. TV Mode for full-screen display. queue_entries with token_number, token_display, status.
🎙️
AI Scribe — Beta
First release of voice-to-prescription. Browser MediaRecorder → /api/ai/scribe → OpenAI Whisper → auto-populate EMR fields. Gated by ai_scribe_enabled on doctors record. Charged at ₹3.00/minute from wallet_balance.
🎨
Theme Engine
ThemeProvider.js injects CSS custom properties on <html>. 6 themes: Forest, Ocean, Rose, Slate, Amber, Violet. Live change without page reload. Saved in tenants.print_settings. localStorage seed for first paint.
2.0
The Communicator
2023
Legacy
Your clinic talks back. WhatsApp Business API integration — the single biggest feature in CURA's history. The bot handles patient bookings automatically at any hour, sends confirmation and reminder messages, collects post-visit feedback, and triggers the Google Review Booster for high-rated experiences.
WhatsApp Integration
💬
Self-Serve WhatsApp Booking Bot
Patient sends "Hi" → bot responds with service/doctor selection fetched from services and doctors tables → patient selects date → bot checks availability_config and existing appointments → creates appointments record (status: booked) → sends confirmation. 24/7 operation. No staff required for the entire booking flow.
24/7 Booking Auto Confirmation 24h Reminders No-Show Recovery
📥
WhatsApp Inbox
Inbox.js — WhatsApp Web-style staff interface. Left panel: conversation list sorted by last message time. Right panel: message thread with send. Realtime via Supabase channel subscription on whatsapp_messages.
Google Review Booster
When patient gives 4 or 5 star internal feedback rating, an automated WhatsApp message triggers inviting them to leave a Google review. Configurable via Automations.js. Requires WHATSAPP_TEMPLATES feature (PRO).
1.0
The Foundation
2023
Legacy
A clinic in a browser. The multi-tenant core that every version since has been built on. Appointment management, patient vault, basic EMR with PDF prescriptions, doctor scheduling, and the Row-Level Security architecture that ensures clinic data is always isolated.
Core Platform
📅
Appointment Management
AppointmentsTab with date/doctor/branch filtering. Status flow: booked → checked_in → completed. Real-time updates via Supabase. Availability config per doctor per day-of-week. Slot interval configurable.
🏥
Patient Vault (EMR)
patients table as master record. Prescriptions with vitals, symptoms, diagnosis, medications (JSONB array), advice, follow-up date. PDF generation via pdf-generators library. WhatsApp delivery post-consultation.
🔒
Multi-Tenant Architecture
Shared-database, schema-isolated. Every table has tenant_id UUID FK to public.tenants. Supabase RLS policies enforce row-level isolation. Single-page dashboard pattern — navigation is state-driven via activeTab string.
🏗️
TabRegistry & Module Shell
TabRegistry.js maps every activeTab string to a dynamic Next.js import. DashboardShell owns activeTab state. Sidebar filters menu items by tier, role, and modules. checkEntitlement() and useCan() established as the permission primitives.