New: How we build — modern AI tooling, strict guardrails, every line reviewed by a person. Read our engineering practices →New: How we build. AI tooling, strict guardrails, human review. Read more →

Healthcare · Clinic operations

A clinic that can tell you where every patient is, and who owes what

One platform running the working day of a clinic. Check-in and queue, the consultation and its notes, vitals and inter-department requests, payment, the pharmacy and the stock behind it.

  • 6 roles, one shared view
  • 5 trust services criteria
  • 3 queue states, visible to all
  • 2 parties reconciling every bill
  • 1 encounter record per visit

What the platform does

Follow one patient through a morning and the product explains itself.

They arrive and check in.

A QR scan in the lobby creates a timestamped token. Anyone who cannot or would rather not self-serve is checked in by reception through exactly the same process, producing the same kind of token.

They can see where they are.

Position in the queue, expected wait, and what is happening next. The corridor stops being a place where people guess.

They are seen.

The clinician talks, and the conversation becomes structured notes. A prescription can be spoken rather than typed.

They are sent for vitals, and the clinic does not stop.

Their token moves to an external lane, the clinician sees the next patient, and the first patient returns to the same consultation when the results are in.

They pay, or are recorded as not having paid.

The fee is known at check-in. A waiver is a recorded decision rather than a gap.

They collect medicine.

The prescription generates a bill that appears at reception immediately, and the stock that leaves the shelf is the batch closest to expiring.

Product
Clinic operations platform, from check-in to dispensing
Users
Reception, clinicians, nursing, pharmacy, warehouse, administration
Our scope
Product architecture, encounter and queue model, revenue and pharmacy workflow, control design, speech-driven documentation

The one fact that shaped everything

A clinic is a queue with clinical exceptions, and everybody in it can see everybody else.

That makes it different from most operational software. A warehouse does not argue with its picking order. A patient waiting in a corridor watches the person who arrived after them go in first, and forms a view about why.

The ordering rule has to be defensible in public.

Not fair on average. Defensible to the specific person who is watching it happen, at the moment it happens.

The exceptions have to be real.

A sick child does need to go first. A rule with no exception gets broken informally within a week, and an informally broken rule is worse than no rule.

Nothing can be invisible.

Money, waiting, tasks, medicine. Every gap between two people in a clinic is a place where something is lost and nobody is quite sure whose job it was.

The four decisions that mattered

If you read nothing else on this page, read this.

One

A patient can leave the room without losing their place

The visit is one record with a state, not a session that ends when the room empties.

Two

The queue is a fairness mechanism, and its exceptions are audited

Strict order by arrival, with clinical priority as a recorded, attributable act.

Three

Payment is a state on the visit, not a step at the end

Visible to every role at once, including the waiver.

Four

Stock is managed by expiry, and by who is allowed to touch it

First expiry first out, with the pharmacist and the warehouse deliberately separated.

Decision one

A patient can leave the room without losing their place

The oldest waste in a clinic is a clinician waiting for a test result while a patient waits for a clinician, at the same time, in different rooms.

The version that does not work

Ending the encounter and starting a new one. The consultation becomes two records for one visit, the clinician reconstructs what they were thinking, and the patient repeats themselves. Throughput rises and quality quietly falls.

What it actually requires

The visit is a single encounter record with a state, and it survives suspension. The token moves to an external lane rather than out of the system. The clinician's queue advances. When results arrive they attach to that encounter, and reopening it resumes the same consultation intact.

Impact

Two patients progressing at once without two records The gain in throughput does not come at the cost of the record, which is the trade every informal version of this makes.

Nobody has to ask where a patient went The external lane is visible to every role, so the question that consumes reception's morning stops being asked.

A delay announces itself Time in state is on the screen, so a patient stuck waiting for a test is visible while it is happening rather than at the end of the day.

The clinician resumes rather than reconstructs That is the difference between a feature that saves time and one that quietly transfers effort somewhere less visible.

Decision two

The queue is a fairness mechanism

Almost every argument at a clinic reception desk is about order. The software either has a defensible answer or it hands one to a receptionist under pressure, in front of the person asking.

Every entry point

A QR scan, a receptionist's assisted check-in, and a call-ahead conversion all produce the same timestamped token in the same ordering. Being helped does not cost a patient their place.

One view for every role

Upcoming, ongoing, completed. Reception, the clinician and the patient are looking at one ordering, not three interpretations of it.

Priority is an act, not a setting

Authorised staff can elevate a patient. The original position is preserved, a reason is captured, and the change is logged with who made it.

Wait targets

Configurable limits highlight overdue tokens and can route patients to another clinician rather than leaving them to accumulate.

Impact

The ordering is explainable to the person asking about it, which is the only test that matters at a reception desk.

Being helped does not cost a patient their place. A clinic serving an older population does not end up running its queue on paper alongside the software.

Exceptions stay rare because they are visible. An override that carries a name and a reason is used when it is needed and not otherwise.

A long wait becomes a signal Overdue tokens surface while the patient is still in the building.

Decision three

Payment is a state on the visit

Clinics do not usually lose money to fraud. They lose it in the seams between people, where each one reasonably assumes somebody else handled it.

At check-in

The fee is calculated from the service type before the visit starts. An unpaid visit is flagged rather than quietly proceeding.

In the room

Paid, pending or waived sits on the same screen as the clinical record. A payment request can be sent to the patient's phone from the consultation.

At dispensing

A prescription generates a bill that appears at reception immediately. Invoices are cross-checked against payments taken.

The exception, which is the part that matters

Waivers, partial payments and payment plans exist as first-class actions, each producing an entry with the actor, time and reason. Compassion does not require going around the software.

Impact

Revenue integrity as a system property Not because staff are suspected, but because nobody should have to remember.

A discrepancy surfaces on the day Cross-verification between two parties means an error is caught while it can still be corrected with the patient in the building.

Every financial adjustment has a name attached That is what makes the clinic's own reporting worth reading.

Decision four

Stock is managed by expiry, and by who may touch it

Medicine is lost in two directions. It runs out, or it expires on a shelf while newer stock is dispensed in front of it. The second is the one that goes unnoticed, because nothing about it looks wrong on the day.

First expiry, first out

Stock is tracked by item, by batch and by expiry date, so the batch closest to expiring is dispensed next. Expiry alerts run at thirty, sixty and ninety days. Soon-to-expire stock can be moved toward locations likely to use it.

Low stock asks, rather than waits

Falling below a threshold generates a pull request to the warehouse. Fulfilment updates pharmacy inventory as it happens. A warehouse that is itself low surfaces to the administrator rather than becoming a stockout discovered at the counter.

The control under both of them: the person who dispenses stock is not the person who releases it. Pharmacy inventory belongs to the pharmacist. The warehouse belongs to an administrator. A pharmacist can request stock and cannot grant their own request.

Impact

Expiry becomes a decision rather than an accident Rotation happens because the system chooses the batch, not because somebody remembered to check the back of the shelf.

A recall is answerable Batch and expiry tracking is the only way to determine which patients received medicine from a particular batch, which is a clinical control before it is a cost one.

Separation of duties where it actually matters In a clinic, that is the pharmacy, and it is the control most small-clinic software leaves out entirely.

Stockouts surface upstream The warehouse being low is visible before the counter is empty.

Documentation that does not consume the appointment

Clinicians spend a large part of a consultation typing rather than treating, and the part that suffers is the conversation rather than the record.

Live capture

The encounter screen captures free-form notes alongside live speech-to-text, so the visit is documented as it happens. Recognised text can be corrected inline without breaking the flow of the conversation.

Structured output

Transcripts are organised automatically into the sections a clinical note is expected to have. Voice commands insert templates, orders and assessments. A routine presentation starts from a structure rather than a blank screen.

Context in view

A context panel carries current vitals, allergies, the last visit and anything outstanding, so the clinician is not clicking between screens to assemble a picture of the person in front of them.

Impact

The record is written during the consultation rather than after it, which is the difference between a clinic that finishes when the last patient leaves and one that finishes two hours later. A structured note is worth more than a faster one, because the sections are what make it usable by everybody downstream.

The control design

Designed against all five trust services criteria

Most platforms design for security and treat the other four trust services criteria as paperwork assembled later. In a clinic that is the wrong emphasis, because the failure that actually costs money is a processing integrity failure rather than an intrusion.

Security

Role-based access with least privilege. Separation of duties between pharmacist and warehouse. Private networking, no data store reachable from outside. Scoped credentials per component.

Availability

Wait targets monitored, breaches raise alerts, overflow routing moves patients to another clinician or room. A missed call sends a token to standby rather than to the back.

Processing integrity

Pharmacy invoices cross-checked against payments. Every queue movement, override, waiver, refund and rebooking carries an actor, a timestamp and a reason. The one that matters most and gets designed for least.

Confidentiality

Fields a role has no reason to read are masked, not merely discouraged. The most sensitive values are encrypted individually, so a database read is not a patient record.

Privacy

A patient is told where they are in the queue and what happens next. A receptionist, a nurse and a pharmacist each see a different view of the same record, by role.

On what this is not

Designed against the criteria is not the same as attested against them. Treating all five as design inputs means an organisation pursuing an attestation is documenting controls that already exist rather than retrofitting them under time pressure. The attestation itself is a piece of work with an auditor, and this page does not claim to have done it on anybody's behalf.

Impact

A clinic does not usually lose money to an attacker. It loses money to a gap between two people, and those gaps are invisible to a control set that only thinks about keeping outsiders out. Designing for processing integrity is what makes the clinic's own reporting worth acting on.

The constraints we designed around

Software used by a whole clinic at once meets constraints that do not appear in a specification. Some come from the people using it, some from the room they are standing in, and some from the fact that the work does not stop while the software is being learned.

The people using it are not at a desk

A receptionist is on the phone with a queue in front of them. A clinician has a patient mid-sentence. A pharmacist is holding a box. None of them can read an interface carefully, and none will remember a training session from three weeks ago under that kind of pressure.

We made state visible rather than retrievable. Colour and position carry the status, so paid, unpaid, waiting and overdue are legible at a glance across a room.

Impact

Capability that requires attention takes it from somewhere it was needed. Designing for the interrupted user is what determines whether the system gets used properly on a busy Monday, which is the only day that matters.

A clinic cannot stop to adopt software

There is no window in which patients stop arriving so staff can learn a new system. Every hour of training is an hour somebody was not at the desk, and every role needs something different.

We structured adoption by role rather than by feature, and kept each role's path short enough that the common case is learned in one sitting.

Impact

A system introduced too quickly gets used partially, and a partially used clinic system is worse than the paper it replaced, because now the truth is split across both.

Every clinic thinks it is the exception

Fee categories, consultation types, templates, queue rules and priority policies vary by specialty and by clinic. Meeting that with code produces a version per customer, which is how a product stops being a product.

We made the differences configuration. Fee rules, templates, wait targets, expiry thresholds, stock levels and role permissions are all administered rather than deployed.

Impact

A new clinic is configured rather than built for, so onboarding is a task rather than a project. An unusual requirement is a settings conversation rather than a roadmap conversation.

The impact, depending on your job

If you run the business

The queue is the product's reputation. Patients judge a clinic on whether the wait felt fair more than on its length. A defensible, visible ordering is the difference between a busy clinic and a chaotic one.

Revenue integrity is the commercial argument that lands fastest. A clinic owner does not need to be persuaded that money leaks between reception and the pharmacy. They already suspect it and cannot prove it.

Configuration rather than customisation is what makes this sellable to the second clinic. A product that needs a version per customer is a consultancy with a product-shaped invoice.

If you run engineering

The encounter model is the part worth your attention. Treating a visit as a record with a state rather than a session is what makes parallelisation possible without splitting the clinical record, and everything else in the queue and the lanes falls out of that decision.

Then the control design. Processing integrity as a first-class concern, with reconciliation between two independent parties rather than one system trusting itself.

If you run a delivery team

Clinic differences are configuration. Every entry point produces the same token object. Exceptions are inside the system as recorded actions rather than outside it as workarounds.

That last one is the load-bearing decision for maintainability. A system whose exceptions live outside it accumulates a second, undocumented system alongside it.

If you own the numbers

Money that never leaves is worth more than money recovered. Pre-visit fee capture and pharmacy reconciliation address leakage at the point it happens.

Expiry write-offs are a controllable cost that most clinics treat as a fact of life, because nothing in their process makes the decision visible before it becomes a loss.

Capacity gained from parallel vitals is capacity without headcount, which is the only kind of throughput improvement that reaches the bottom line directly.

Audit preparation is documentation rather than reconstruction, because the actor, time and reason are already attached to every exception.

Talk to the client, not just to us

Everything on this page is our account of our own work. If you are seriously evaluating us, we will arrange a reference call with a client who has been through a build like this one, and you can ask them the questions you would rather not ask us.

Request a client reference
Built with

Technologies we built with

We name the layers rather than the suppliers on the patient data path. Full detail available under NDA.

Backend
PythonFastAPIRedisREST
Frontend
ReactNext.js
Data
PostgreSQLField-level encryption
Cloud and deployment
Containerised servicesPrivate networkingCloud or on-premises
Documentation
Speech-to-textAuto-segmentationCondition templates
Control design
Role-based accessSeparation of dutiesImmutable audit logging

More case studies

View all case studies

Building healthcare software where security cannot be an afterthought?

Tell us what you're building, and we'll tell you honestly how we'd approach it.

Book a discovery call