- Home
- Build status
Every screen, and how far it has got.
The register CBS is built from, published rather than summarised. Each screen carries a permanent number, and is scored twice: once for the API beneath it and once for the interface on top. A live API with no screen is real work and is not a deliverable, and one figure cannot honestly say both.
The headline, and the two axes under it.
| Surface | Screens | Live | Partial | Yet to start | Score |
|---|---|---|---|---|---|
| CBS Dock | 41 | 40 | 1 | 0 | 99% |
| CBS Medico | 17 | 17 | 0 | 0 | 100% |
| CBS Care | 13 | 13 | 0 | 0 | 100% |
| CBS Counter | 11 | 11 | 0 | 0 | 100% |
| All surfaces | 82 | 81 | 1 | 0 | 99% |
Numbers are permanent. A screen is never renumbered.
| Sl. | Task | Backend | Screen | Status | Where it stands |
|---|---|---|---|---|---|
| DK-01 | Patient registration | Live | Live | Live | Register, MRN, duplicate detection, consent rows. Four fields the design draws have no column yet: language, next of kin, insurance, Care claim code |
| DK-02 | Appointment desk | Live | Live | Live | Slots, next-free, book, reschedule, cancel |
| DK-03 | Incoming appointment requests | Live | Live | Live | Requests triaged, then scheduled or declined with a reason. A request is not an appointment until the slot engine schedules it |
| DK-04 | SOS and alert desk | Live | Live | Live | Events and notification live, and the facility's own alert queue with the counts behind the desk tiles |
| DK-05 | Billing -- OP, IP, pharmacy | Live | Live | Live | Invoice, lines, part-payments, discount, auto-lock, dashboard filters. Money is integer paise on the wire |
| DK-06 | Discharge summary print | Live | Live | Live | Renders as PDF on the facility letterhead; nine locales, refusing rather than printing boxes. Printed from Dock |
| DK-07 | Consumable inventory | Live | Live | Live | The hospital's own consumable store, on a ledger separate from the shop's — ruled 2026-09-11. Issues to a ward, expiry, reconciliation |
| DK-08 | Vendors and purchase orders | Live | Live | Live | Vendors, purchase orders and goods receipts. A receipt writes the store's movements in one transaction, validated before any line lands |
| DK-09 | Doctor payments | Live | Live | Live | Terms, payouts and what is owed. The whole run; a doctor sees only their own on MD-05 |
| DK-10 | Duty roster | Live | Live | Live | The week, with leave beside the shifts. Says who was expected, never who attended |
| DK-11 | Finance metrics to Vitta | Live | Live | Live | The hospital's own money — billed, collected, owed, by category and by payer. Reports and sends nothing outward |
| DK-12 | Consent forms and certificates | Live | Live | Live | Prints the facility's own wording, and a marked preliminary draft where it has none. MTP and sterilisation get no draft — the prescribed text governs, and the form says so |
| DK-13 | Facility dashboard | Live | Live | Live | The facility's day at a glance, over one aggregate read and no writes |
| DK-14 | Patient index -- search, list, edit, export | Live | Live | Live | Read, search, the facility list, correction of a registered record, and CSV export |
| DK-15 | Ward board and bed management | Live | Live | Live | Wards, beds, occupancy, snapshots, device pairing |
| DK-16 | Admission | Live | Live | Live | Admit, assign bed, transfer |
| DK-17 | In-patient census | Live | Live | Live | Census and summary, on a screen of its own |
| DK-18 | Discharge -- the operational half | Live | Live | Live | Screen built. The endpoint can be called once and never re-read or amended -- needs GET and PATCH on the discharge record |
| DK-19 | Admission history | Live | Live | Live | By number, open-for-patient, the facility's history list, and CSV export |
| DK-20 | Prescription register | Live | Live | Live | Create, the active list, and the facility's register with a medication search |
| DK-21 | Follow-up desk and reminders | Live | Live | Live | Overdue and summary live, and the appointment reminder is emitted on the event spine |
| DK-22 | Formulary | Live | Live | Live | Search, stock flag, discontinue, formula-injection guard |
| DK-23 | Formulary import | Live | Live | Live | Template columns, import, batch history, on a screen of its own |
| DK-24 | Users and roles | Live | Live | Live | Invite by Google address, list, change role, turn access on and off. The last active administrator cannot be turned off |
| DK-25 | Audit log | Live | Live | Live | Ten route guards and a read permission, with a screen over them |
| DK-26 | System and error log | Live | Live | Live | The ring buffer, and the delivery failures that survive a restart. Says on the page that its buffer is one worker's memory |
| DK-27 | Facility profile -- name, address, letterhead | Live | Live | Live | Registry, letterhead block, GSTIN and registration number |
| DK-28 | Sign in | Live | Live | Live | OAuth2, Google SSO, rate limiting, lockout |
| DK-29 | Clinical handovers | Live | Live | Live | Endpoints mounted and role-guarded — doctor and nurse |
| DK-30 | Departments | Live | Live | Live | Department is on neither the user nor the token |
| DK-31 | Integrations -- FHIR, ABDM | Live | Live | Live | Both clients exist; neither has a configuration screen |
| DK-32 | Device estate | Live | Live | Live | Bedside devices: pairing, unpairing and the boot lookup, on real data. Home devices register but cannot yet be listed |
| DK-33 | Support desk | Live | Live | Live | Ticket desk, SLA sweep, notifications |
| DK-34 | Policies and compliance | Live | Live | Live | The establishment's policies and what CBS observed. It records and reports and does not block: the administrator decides, and CBS keeps the account of what was decided |
| DK-40 | Lab orders | Live | Live | Live | Raise, track and cancel a lab order. The ordering half of the specimen lifecycle; no result is shown here because at this stage the specimen has not been taken |
| DK-41 | Specimen collection | Live | Live | Live | The collection round, with recollection recorded rather than overwriting the original |
| DK-42 | Result entry | Live | Live | Live | Entry, verification and retraction. The API withholds a value until it is verified, and the screen says why the cell is empty |
| DK-43 | Navigation policy | Live | Live | Live | A hospital edits its own rail. Replaces the CBS default per destination; an empty role list turns one off for everybody |
| DK-45 | AI Referral approvals | Live | Partial | Partial | Approve or decline an AI-suggested referral before it leaves the hospital. The service, the API and the audit trail are live; the screen is built and currently unreachable, because no role has been granted it yet |
| DK-44 | Staff records | Live | Live | Live | Employment and fitness for duty — joining, confirmation, exit, who to telephone, and whether somebody may be worked long hours. The only screen holding staff health information, administrator-only; the roster is told that a restriction exists and never why |
| DK-35 | My profile | Live | Live | Live | Profile reads; no password to change, by design -- staff use Google |
| Sl. | Task | Backend | Screen | Status | Where it stands |
|---|---|---|---|---|---|
| MD-01 | Patient timeline | Live | Live | Live | One patient's record as a single ordered stream, with the filter chips served from the API |
| MD-02 | Consult, prescribe, save | Live | Live | Live | Prescribing and interaction checks, written against a real encounter record |
| MD-03 | Discharge authoring | Live | Live | Live | The narrative is written at discharge, and DK-18 reads it back and amends it afterwards |
| MD-04 | Messages -- in- and out-patient | Live | Live | Live | Threads, participants, priority, offline queue |
| MD-05 | My earnings | Live | Live | Live | A doctor's own statement, scoped by the token rather than by a parameter, so one consultant cannot open another's |
| MD-06 | Prescription print | Live | Live | Live | Prints with the prescriber's registration and the interactions caught at prescribing. Printed from Medico |
| MD-07 | Ward round notes | Live | Live | Live | Read and write, per admission |
| MD-08 | Clinical Buddy | Live | Live | Live | Mounted and role-guarded on all three routers — asking the assistant a clinical question is separated from curating what it knows |
| MD-09 | My follow-ups | Live | Live | Live | Due, overdue and summary, on a screen. It is the facility's list, not mine -- the endpoints carry no attending clinician |
| MD-10 | Sign in | Live | Live | Live | Shared with DK-28 |
| MD-11 | Home -- today's work | Live | Live | Live | Today's work, over one aggregate read |
| MD-12 | My patients | Live | Live | Live | The clinician's own list, distinct from the desk view |
| MD-13 | Reviews queue | Live | Live | Live | The review queue, over its own endpoint |
| MD-14 | Reports | Live | Live | Live | Reports, with saved views and a server-side export |
| MD-15 | Institution | Live | Live | Live | A clinician's read-only view of the facility profile |
| MD-16 | Settings | Live | Live | Live | Notification preferences, on a settings screen of their own |
| MD-17 | Help | Live | Live | Live | Answers all three modes. The top-bar help icon used to 404 on every Dock and Care page |
| Sl. | Task | Backend | Screen | Status | Where it stands |
|---|---|---|---|---|---|
| CR-01 | Sign in and link record | Live | Live | Live | OTP, account, and the link to a patient record -- twelve routes. The sign-in page exists; the linking screen does not |
| CR-02 | Book an appointment | Live | Live | Live | Clinics, free slots, and a booking that becomes a request the desk answers — patient-scoped throughout, and a slot taken while the patient decides is said in the server's own words |
| CR-03 | SOS | Live | Live | Live | The in-app button and the paired device both raise it. No automatic escalation ladder: a person answers, which is the design |
| CR-04 | Reports and bills | Live | Live | Live | The results and invoices this patient may see, patient-scoped |
| CR-05 | My health | Live | Live | Live | The patient's own summary of their record, patient-scoped |
| CR-06 | Medicines and adherence | Live | Live | Live | What this patient is on and whether it is being taken, patient-scoped |
| CR-07 | Messages to the care team | Live | Live | Live | Thread engine and patient identity live; a patient is still not a participant on a thread |
| CR-08 | Care team | Live | Live | Live | The care team as the patient sees it, patient-scoped |
| CR-09 | Today's plan | Live | Live | Live | Today's plan for this patient, patient-scoped |
| CR-11 | My medicines | Live | Live | Live | What the patient can collect at the shop and has already collected — the prescription joined to the shelf and the bills. Not a second CR-06 |
| CR-12 | Refill request | Live | Live | Live | Asks the shop to prepare a repeat. A request, never a dispensing: it closes by attaching a bill the till made, so stock leaves one place |
| CR-13 | Order status | Live | Live | Live | What the shop has accepted, prepared and handed over |
| CR-10 | People I care for | Live | Live | Live | Delegation is live -- read, list and revoke, scoped. Screen to build |
| Sl. | Task | Backend | Screen | Status | Where it stands |
|---|---|---|---|---|---|
| CN-01 | Counter sale | Live | Live | Live | Counter sale — discount, khata credit and tender modes, over the till API |
| CN-02 | Prescription queue | Live | Live | Live | Prescription queue across Medico, paper and photograph sources |
| CN-03 | Item master | Live | Live | Live | Item master with composition provenance and per-item GST |
| CN-04 | Receive stock | Live | Live | Live | Receive stock, distributor invoice reconciled |
| CN-05 | Purchase | Live | Live | Live | Reorder by days of cover rather than by shortfall. The shop's own purchasing, separate from DK-08 since the ledgers are separate |
| CN-06 | Expiry board | Live | Live | Live | Expiry board and dead stock |
| CN-07 | Statutory registers | Live | Live | Live | H1 and X registers with the printed PDF. Whether Karnataka requires a bound register is still to be settled with a working shop |
| CN-08 | Day book | Live | Live | Live | Day book, including the held-bill sync queue |
| CN-09 | Stock take | Live | Live | Live | Stock take and variance |
| CN-10 | Owner metrics | Live | Live | Live | Owner metrics — valuation, reorder, dead stock, takings |
| CN-11 | Khata — credit accounts | Live | Live | Live | The shop's credit book — customer accounts, credit limit, what is owed and what was collected. A limit of zero, the default, means cash only; a walk-in with no account must pay in full |
The platform the register does not count.
Counting screens is not counting the product. These layers carry every screen above them, and none of them appears in the percentages at the top of this page.
| Layer | Status | Detail |
|---|---|---|
| Public website | Live | cbshealth.in -- every page written and deployed behind Cloudflare |
| API gateway | Live | 464 mounted routes across clinical, hospital, messaging and admin |
| Authentication and SSO | Live | OAuth2, Google sign-in with a personal account, rate limiting, lockout |
| Field-level encryption | Live | AES-256-GCM in a Rust core, not in application code |
| Audit trail | Live | Logged at the query, not at the route |
| Compliance plugins | Live | India, USA, UK, Singapore, Malaysia, plus data excellence |
| Continuous integration | Live | Green since 2026-09-05; the PostgreSQL gate runs on every push |
| Database | Live | Managed PostgreSQL. The move to an Indian region is planned after testing |
| Demonstration data | Live | 36 accounts, five countries, every synthetic patient marked JLT |
| Patient identity | Live | Role.PATIENT and Role.CAREGIVER, OTP sign-in, record linking and caregiver delegation -- the dependency all ten Care screens waited on |
| Native mobile apps | Live | Three Expo apps, 51 screen files — Dock 18, Medico 15, Care 18. All 28 register screens built |
| Printing and documents | Live | One letterhead-aware PDF frame; discharge, consent and prescription all print, and synthetic records watermark themselves |
| Terraform infrastructure | Yet to start | Written for three clouds and never applied; the service runs on Cloud Run |
Questions an engineer should not answer alone.
None of these blocks the screens already in build. Each is recorded here so it is visible rather than assumed.
| Sl. | Question | Kind | What it holds up |
|---|---|---|---|
| D3 | Self-booking policy -- which specialities, how far ahead, what cancellation window | Commercial and clinical | The Care appointments screen |
| D4 | The ten booking policy defaults -- approve, or amend by line | Commercial and clinical | DK-02 shipping to a facility |
| D5 | Who may consent for a minor or an incapable patient | Legal -- drafted, needs a lawyer | Care reaching the public |
| D6 | Who is the data fiduciary when a facility uses its own AI key | Legal -- drafted, needs a lawyer | Any outward claim about BYOK |
| D8 | Who may countersign -- a role, a seniority, or a named senior per facility | Clinical and organisational | The approvals model, and both phones' primary screen |
| D9 | What may be raised for approval -- any prescription, high-risk drugs only, C-section decisions, discharge | Clinical | The scope of approvals |
| D10 | Unanswered countersignature -- after how long, and to whom does it escalate | Clinical safety | Shipping approvals to a facility |
| D12 | Which requests may a nurse raise, as against a doctor | Clinical and organisational | Recipient rules on the exchange |
| D13 | Escalation clock per request kind | Clinical safety | Shipping the exchange to a facility |
| D14 | Do journey notifications go to the patient, the attendant, or both -- and who nominates the attendant | Legal and product | Sending anything to a patient |
| A1 | Ayurvedic vocabulary -- transliteration, the panchakarma staging, and whether it belongs in demonstration data | Domain truth | The AYUSH catalogue reaching a customer |
Want to drive it rather than read about it?
A demonstration environment with synthetic patients, five countries and every role signed in. No real patient data is involved at any point.