R1 — Multi-specialty clinic (OPD)
R1 turns Achal Healthcare from a therapy-focused app into a multi-specialty OPD platform for Indian clinics. It adds generic patient identity, queues, visits, prescriptions, clinical documents, GST billing, cash controls, letterheads, offline drafts, AI assist, onboarding, imports, exports and bilingual documentation.
Highlights
- Multi-specialty setup with facility presets, specialty packs, module registry, RBAC and capability-driven navigation.
- UHID-based patient identity with duplicate WARN or BLOCK policy, merge and undo, restricted records and workspace switching.
- Encounter workspace for vitals, ICD-10 problems, allergies, Rx, files, consents, vaccination and telemedicine.
- Clinical documents replace legacy report generators, with bilingual templates, e-signature, amendments, addenda, PDF, QR verification and share links.
- Queue and token workflow with TV display, QR self check-in, kiosk mode and the front-desk cockpit.
- GST billing, credit notes, cash closing, UPI reconciliation and practitioner payout statements.
- Installable PWA shell, encrypted offline drafts and opt-in AI assist for dictation, draft proposals, summaries and ICD suggestions.
- Onboarding wizard, CSV import/export, plan usage meters and DPDP data-principal request workflows.
Features by module
Platform, registry, RBAC and i18n
- Versioned facility presets, specialty catalog, module registry, terminology layer and
/me/capabilitiespayload drive menus, labels, modules and role-based access. - Permission catalog covers patients, appointments, queue, encounters, clinical documents, templates, Rx, billing, finance, settings, branding, documents vault, consent, immunization, teleconsultation and AI assist.
THERAPISTremains an alias of Practitioner for old tenants, while new wording is specialty-driven.- English and Hindi i18n resources are registered for navigation, queue, clinical documents, editor, print, encounter, revenue, care plans, templates, offline and AI assist.
- Cursor pagination and declared query shapes were added across the new modules to avoid unbounded list reads.
Patient identity and workspaces
- UHID allocation and backfill, with tenant-specific prefix and sequential counters.
- Duplicate policy: existing tenants keep BLOCK; new onboarding tenants use WARN and can override with a reason.
- Possible duplicate panel masks phone, UHID and birth year; restricted or other-branch matches are not exposed.
- Patient merge, resume and undo move linked records including appointments, bills, queue tokens, clinical documents, encounters, vitals, allergies, prescriptions, packages and privacy requests.
- Restricted records support VIP, psychiatry, HIV and employee-health use cases with audited access.
- Accounts, memberships and My workspaces allow one login to switch linked workspaces.
Front office: appointments, queue and self check-in
- Department-wise token series, emergency and senior priority, atomic Call next, room or counter display and state transitions.
- TV display links show token numbers and rooms only, never patient names or phone numbers.
- QR self check-in uses mobile OTP proof, today-only appointment matching, shared-phone selection and optional kiosk walk-in tokens.
- Dashboard front-desk cockpit shows appointments, waiting count, average wait, today’s bills due and documents to share.
- Appointment check-in integrates with queue token issue and visit start.
Encounters, prescriptions and clinical workspace
- Visit workspace at
/app/patients/:patientId/encounters/:encounterIdwith tabs for Vitals, Problems, Allergies, Prescription, Documents, Files and Vaccination. - Vitals validation rejects impossible values and calculates BMI; problem search uses an ICD-10 subset; allergy banners feed prescription warnings.
- Rx pad supports generic or brand search, favourites and sets, bilingual instructions, warnings, NMC telemedicine rules, registration-number checks, print and WhatsApp portal links.
- Documents vault supports signed uploads for PDF, JPEG, PNG, WebP and HEIC with preview, download and soft delete.
- E-consent templates, guardian consent rules, IAP vaccination card, due and overdue status, reminders and teleconsultation start are available.
Clinical documents, templates, packs and widgets
@achal/clinical-corevalidates restricted JSON Schema, UI schema, computed functions, conditions, macros, smart phrases, copy-forward and canonical hashes.- Clinical templates support library packs, tenant clones, draft, publish, archive, immutable versions, lint checks, normal macros and smart phrases.
- Clinical documents support draft autosave, sign, co-sign, amend, addendum, void, event history, access log, document numbers and PDF outbox.
- Specialty packs include General OPD, therapy, psychiatry and psychology, consents, dental, ENT, gynaecology, nutrition, ophthalmology, pediatrics and dermatology templates.
- Specialty widgets include tooth chart, body map, audiogram, growth chart, milestone grid, ROM/MMT grid, scale and sensory quadrant.
Rendering, PDF, letterheads and sharing
- Canonical server HTML renders signed documents with escaped content, repeated letterhead, page numbers, status watermark and Noto Sans Devanagari when needed.
- Brand profiles at
/app/settings/brand-profilessupport default or branch letterheads, logo, signature, seal, paper size, margins, themes, pre-printed paper and verification QR. - PDF rendering uses an outbox and renderer service; users can print immediately and download PDF when ready.
- QR verification at
/verify/:tokenshows document number, issuer, signed date and status without patient or clinical details. - Share links expire, can require one-time code to the patient’s mobile and can be sent on WhatsApp or revoked.
Billing, GST and finance
- GST profile, service tax category and buyer GSTIN support GST-exempt healthcare, taxable cosmetic services and taxable goods.
- Bills compute GST server-side and print as Tax Invoice, Bill of Supply or Invoice-cum-Bill of Supply.
- Credit notes support full, partial and selected-line credit with proportional GST reversal and refund record.
- Daily cash closing lets cashiers submit counted amounts, managers approve or reopen and late adjustments stay visible.
- UPI reconciliation records UTR once per payment; practitioner payout statements compute billed or collected share excluding GST and credit notes.
Care plans, treatment packages and portal views
- Home exercise programmes are generalised into care plans with a legacy adapter.
- Treatment packages support typed packages beyond therapy sessions while keeping session-package compatibility.
- Patient portal views show prescriptions, vaccination card and care plan content for the selected patient profile.
Offline PWA and AI assist
- Installable PWA shell with offline page and update prompt; API and PHI are not cached by the service worker.
- Encrypted IndexedDB drafts are bound to the user session and tenant; logout or tenant switch wipes local records.
- Offline support covers clinical document draft PATCH queue, walk-in token queue and patient-registration draft restore.
- AI assist is opt-in with tenant DPA acknowledgement, module gating, metering and sensitive-record blocks. It supports dictation, clinical draft proposals, summaries and ICD suggestions where configured.
Onboarding, plans, import, export and privacy
note
Screens for this step ship with release R1; labels may differ slightly.
- Signup captures facility type, specialties and preferred language, then provisions clinical configuration, WARN duplicate policy, UHID prefix and onboarding state.
/app/onboardinghas skippable steps: clinic, departments, practitioners, branding, services, templates, gst, import and goLive, with demo-data toggle and go-live checklist./app/data/importsupports CSV UTF-8 only, up to 3 MB and 20,000 rows, with mapping, dry-run validation, resumable commit and rollback. XLSX import is not supported; save as CSV UTF-8./app/data/exportcreates tenant export ZIPs with JSON and CSV (now also patient documents metadata and file paths, consents, immunizations, teleconsultations, care plans and template versions) plus short-lived signed download URLs; exports are kept 7 days and purged by a daily sweep.- Plans are Free, Clinic ₹499 per month billed annually (₹5,988 / year; ₹599 billed monthly) and Polyclinic ₹1,499 per branch per month billed annually (₹17,988 / year; ₹1,799 billed monthly). There is no per-doctor fee and all specialty packs are included; the Clinic plan allows up to 3 practitioners. Prices follow plan §2.4 (annual-billing basis) and remain subject to commercial sign-off (HUM-10); platform admins can override monthly and yearly amounts in Plan Controls.
- Excel (.xlsx) and Practo patient exports can be imported directly (Practo column preset); self-service signup is rate-limited per IP and per e-mail.
- Usage meters at
/app/usagewarn at 80 percent and 100 percent. Free plan hard limits return402 PLAN_LIMIT_EXCEEDED. Workspaces created before the plans release (and those whose plan code is missing or unknown) get soft warnings only — no hard blocks — for one full billing cycle after the release; platform admins can exempt any workspace (hardLimitsExempt). No-login staff records never count as seats. - DPDP privacy request queues are available at
/app/privacy-requests; patients use/patient/privacy.
Docs site and in-app help
- Docusaurus docs site now covers getting started, roles, module guides, admin tasks, compliance, developer notes, operations and release notes in English and Hindi (
/hi/): getting started, role guides, quick-start cards, FAQ and release notes are translated; module, admin and template guides fall back to English. Six printable quick-start cards and ten bilingual video tutorial scripts are included. - In-app help deep links use stable doc ids. R1 adds the help panel opened with ?, the Shift+? shortcut, per-module guided tours for queue, encounter, clinical documents and billing, and a What’s new dialog for release changes.
Migration notes
- Legacy clinical reports and OT reports are migrated to clinical documents by the migration script from stream
w4-detherapy-legacy. This is run by the platform team; no action is required for clinics. THERAPISTcontinues to work as an alias of Practitioner. Role wording is now driven by specialty terminology.- Existing tenants keep the BLOCK duplicate policy and their default clinical configuration unless the owner changes it.
- Legacy plan codes are grandfathered: BASIC maps to Clinic; PRO and ENTERPRISE map to Polyclinic, with ENTERPRISE limits remaining unlimited where previously agreed.
- Free-plan hard limits for existing workspaces start only after one full billing cycle following the plans release (
PLANS_RELEASED_AT, default 1 Oct 2026 → enforced from 1 Nov 2026 IST). - Operators: set
EXPORT_BUCKET(Terraform outputapi_exports_env, bucket<prefix>-tenant-exportswith a 7-day lifecycle) before enabling exports in production — without it exports return503 STORAGE_UNAVAILABLE. Recommended API function memory: 512 MiB. - HEP data opens through the care plans legacy adapter.
- Session packages remain backward compatible through treatment packages.
- Existing signed documents, bills, appointments, packages and audit logs keep their original identifiers.
Breaking changes
- The legacy report stack is replaced by Clinical documents. Old report generator pages are removed:
/app/reports,/app/ot-report,/app/initial-ot-evaluation,/app/ot-progress-report,/app/pt-initial-evaluation,/app/developmental-milestone,/app/discharge-summary,/app/clinical-report/print,/app/ot-report/print. - API
/patients/clinical-reports*returns 410 Gone. Integrators must use/clinical/documentsand related clinical document APIs. - The localStorage report print handoff is removed. Printing now uses server-rendered clinical document HTML and the print or PDF page.
- Final clinical documents and finalized prescriptions are immutable. Corrections use amendment, addendum, void, credit note or a new prescription as appropriate.
- CSV import accepts CSV UTF-8 only; XLSX files must be saved as CSV UTF-8 before upload.
- Public display, self check-in, verify and share links are tokenised and revocable. Old unauthenticated assumptions must not be used by integrations.
Known limitations and coming soon
- Lab and radiology workflows are planned for R2.
- Network and cross-tenant exchange workflows are planned for R3.
- Pharmacy and hospital workflows are planned for R4.
- XLSX import is not supported in R1. Use Save as CSV UTF-8 from Excel or Google Sheets.
- Vaccine reminder scheduler, tenant-editable vaccination schedules, tenant-editable telemedicine drug lists and built-in video infrastructure are deferred.
- PDF generation may show PDF is being prepared… until the render job finishes; print remains available immediately.
Upgrade checklist for clinic owners
- Review your clinic profile, branches and GST settings.
- Confirm your specialties, enabled modules and terminology in clinical configuration.
- Decide whether to keep BLOCK duplicate policy or move to WARN after staff training.
- Add practitioner registration numbers before using prescriptions and signed documents.
- Create or review letterhead brand profiles and print one demo clinical document.
- Train reception on queue, self check-in, appointment check-in and duplicate warnings.
- Train clinicians on visit workspace, prescription warnings and clinical document signing.
- Run one demo bill, payment, credit note and cash closing before go-live.
- If importing data, save files as CSV UTF-8, validate dry-run results and keep the rollback window clear.
- Tell integrators to switch from legacy report APIs to
/clinical/documents.