No server. No account. No internet.
Hospital information systems are built for an institution with an IT department, a network and a records office. None of those exist in a single-doctor clinic, and nobody is going to administer this for the doctor either.
One doctor, one device, every record.
- My role
- Executed — concept, product design, implementation
- Date, from version control
- 21 August 2026, a single commit covering v0.1
- Built with
- TypeScript · Vite · the browser's own database
- Backend
- None. No ORM, no auth service, no analytics
- State
- Built and working locally. Not distributed
The doctor hospital software ignores.
- The single-doctor private clinic — the core user
- The government OPD doctor who wants a personal record beyond the hospital register
- The dispensing doctor who stocks and sells medicines to their own patients
- The visiting consultant who carries the practice in a laptop bag
- The specialist, whose templates make a repeat regimen one click
- Ayurveda, homoeopathy, dentistry and physiotherapy — nothing in the visit, prescription or billing model assumes allopathy
Recording and transcribing are different promises.
- Before
- Consultation audio is always captured offline. Live transcription uses whatever speech engine the browser provides, and on some browsers that engine needs the internet.
- What forced it
- The tempting design is to blur the two: show a transcription panel, let it stay empty, let the doctor assume it is working.
- The decision
- Separate the promises. When the engine is unavailable the app says so, keeps recording, and leaves the transcript editable by hand.
- What it changed
- A doctor who believes the machine is taking notes and later finds it was not has lost a consultation. A doctor who is told plainly writes three lines instead. The transcription layer sits behind a small adapter in one file, so a fully-local engine can replace it without touching the consult room.
The model is shaped by the room, not the schema.
Each of these looks arbitrary until you have watched an OPD run for an afternoon.
The consultation
A visit exists from the first second
Created the moment a consultation starts, so notes, audio and the prescription always have a parent even if the tab dies mid-visit. Everything autosaves; there is no Save button to forget.
Audio is its own table
One-to-one with visits, so listing a year of visits never pulls a blob into memory.
The dispensary
Stock is items plus batches
Sales consume them first-expiry-first-out, inside a transaction that refuses to oversell.
Only an invoice moves stock
Billing is the single writer of decrements, so the money ledger and the stock ledger cannot disagree.
The queue
A day queue, not a calendar grid
Scheduled → arrived → in-consult → done, because nobody in an Indian OPD has a 10:15 slot.
Age sits beside date of birth
Because most OPD patients do not know their date of birth.
Whoever controls this computer controls these records. Treat the machine as you would a cupboard of paper files.
DocMeDo README, on what the PIN is and is not
The optional PIN keeps a curious receptionist or family member out of the application. It is a latch, not encryption at rest, and the README says so in those words — because the doctor has to make a physical decision about where the laptop lives, and a vague assurance of “secure” leads to the wrong one.
A v0.1 with its limits written down.
- Patient registration in under a minute, and as thin as a complaint and a diagnosis where that is all there is
- Prescriptions from dropdowns or saved templates, printed on the doctor's own letterhead
- A full dispensary ledger with batches, expiry handling and reorder levels surfacing on the dashboard
- Backup as one file that restores from the welcome screen — the moment you need it is the moment you have no profile to sign into
- No drug database: free text plus the doctor's own templates, because a stale formulary is worse than none
- No multi-device sync; one device is the truth until the offline-only constraint is lifted
- No PDF generation — printing goes through the browser's own dialogue
- No doctor has used it, and nothing regulatory has been assessed in any jurisdiction