The patient portal is a separate authenticated environment that shares the same clinical data as the main clinic application, but with a completely separate login, session, and permission layer. Patients can only ever see their own records, no other patient's information is accessible regardless of what is requested.
Patient accounts are entirely separate from staff logins, different credentials, different session cookies, different permission layer. A patient account can exist without a clinical record and vice versa.
Passwords are hashed using Argon2id with tuned memory and time cost, currently the strongest standard password hashing algorithm. Minimum complexity is enforced. Reset links are single-use, stored as hashes (not plaintext), and expire after 60 minutes.
Failed login attempts are tracked per IP address and per account. After a configurable number of failures in a short window, the account is soft-locked and an alert is sent to the clinic admin.
Patients who prefer it can log in by tapping a one-time link sent to their WhatsApp or SMS. This is powered by OTPless and is offered as an alternative to the password flow, useful for patients who struggle with passwords.
Sessions are independent of staff sessions. Session tokens are rotated on every login. All portal sessions are bound to the authenticated patient identity and expire after inactivity.
Patients connect their Google account via the Google OAuth2 flow. Once connected, activity data (steps, sleep, heart rate) is pulled from the Google Fitness REST API and added to the patient's vitals timeline in the clinic record, clearly marked with its source. Sync runs on portal login and on a scheduled background job.
Apple Health data is received via a push model: a companion iOS shortcut or app sends signed health data to the portal. Each submission is validated against a per-patient token before being accepted. Data types include step count, sleep, and heart rate.
All wearable-sourced readings are stored with a source label so clinicians can distinguish between clinician-recorded vitals (during a visit) and patient-reported data from a device.
Patients can create a new ABHA number or link an existing one directly from the portal. Verification follows the ABDM v3 specification, OTP-based identity verification via mobile or Aadhaar. Once linked, the ABHA ID is stored against the patient record for use in health record exchange.
No health record is fetched from another facility or shared anywhere without the patient initiating a consent grant from the portal. Every consent event (grant, revoke, expiry) is logged immutably.
Every API call made to the ABDM network on behalf of a patient, including the transaction ID, action type, and timestamp, is logged and accessible to clinic admins for compliance review.
Patients log their mood on a simple scale from the portal at any time. Entries are timestamped and appear in the patient's clinical record alongside assessment scores and vitals, charted over time to show trends between appointments.
Messages between patients and staff are kept within the clinical system, not in personal email or WhatsApp. New messages from patients trigger a notification to the assigned clinician.
Patients can submit a formal Subject Access Request (to receive a copy of their data) or an erasure request from the portal. Each request is routed to the clinic admin as a tracked task with a response deadline, in line with DPDP Act requirements.
The demo comes pre-loaded with real sample data, so you can click through actual appointments, patients and prescriptions.