Product Guide · Part 1

Two screens. One calmer clinic.

A walk-through of the Solo Doctor and Solo Reception interfaces — every panel, every flow, and the small UX choices behind them.

10-minute read 14 components covered Field-tested workflows
myclinic-system.com/doctor/dashboard
Busy: Reem Al-Sayed· 6 min
Examination
Today
18
Waiting
4
Current visit
RAReem Al-Sayed · 34
Diagnosis · stable hypertension
Amlodipine 5 mg · 1 tab daily
What is Solo Mode?

Built for one doctor. Sized to grow without rewriting the workflow.

Solo Mode powers single-practitioner clinics — one doctor, one or more reception staff, one or more clinic locations. Multi-doctor concepts (specialties, doctor assignment, routing) are hidden so every screen optimises for fast intake, fast consultation, and clean handover.

When the practice scales to multiple doctors, the same data model upgrades to Station Mode without losing a single record. The two surfaces in Solo Mode are Solo Doctor (the consultation cockpit) and Solo Reception (the front desk).

SurfaceSoloStation
Doctors per clinic1Many
Reception staff0–N0–N
Specialty routingYes
Quick Add steps34
Sidebar items (doctor)108
Section 01 · Solo Doctor

The consultation cockpit.

The Solo Doctor dashboard is a single-pane workspace for the entire patient encounter — see the queue, pull the next patient, review history, write the diagnosis, build the prescription, and complete the visit without leaving the page.

At a glance
  • WhenContinuously, all day
  • WhoThe owning doctor
  • OutcomeCompleted visits + Rx
myclinic-system.com/doctor/dashboard
Cairo Medical
Doctor
Dashboard
Queue
Patients
Medications
Archive
My Clinics
Reception
Performance
Settings
14:32:07
Dashboard
Manage the live queue, visits, and prescriptions.
Cairo Medical · 4Maadi Branch · 0
BusyReem Al-Sayed
+12%
18
Patients today
+1
4
Waiting
-2m
9m
Avg wait
+30s
11m
Avg session
Patient history
Reem Al-Sayed · 34 · female · +20 106 231 2347
2026-04-18Follow-up
Diagnosis: Iron deficiency anemia
2026-03-02Examination
Diagnosis: Migraine, tension type
Triggered by sleep deprivation. No aura.
Sumatriptan 50 mg — 1 tab when needed
Paracetamol 500 mg — TDS for 3 days
2025-12-11Consultation
Diagnosis: Routine check
Current visit
In progress
Stable hypertension, BP 128/82
Optional clinical notes
Amlodipine 5 mg
1 tab daily
Paracetamol 500 mg
TDS for 3 days
⌘+Enter to complete visit
Waiting queue
4
Real-time
1NextYousef HammadExamination
2Mona FaroukFollow-up
3Adham SaadConsultation
4Heba El-BannaExamination
Floating comments

Numbered callouts referenced on the mockup above.

1
Why

Status banner — your single source of truth

If it says Busy, the queue is locked to this patient. The pulsing dot mirrors what reception sees, so both surfaces never drift.

2
Why

Stats compared week-over-week, not day-over-day

Clinics have weekly seasonality (Mondays differ from Thursdays). Deltas reference the same weekday last week so the numbers are honest.

3
Why

Patient history loads with the visit

Up to 100 previous visits, most recent first. Open cards in-place — chronic patterns and repeat medications surface fastest in chronological view.

4
Why

Sticky visit form, no autosave

Diagnosis is required for Examinations, optional for Follow-ups and Consultations. Nothing is saved until Complete is pressed — experiment freely.

5
Why

Queue with one Start per row

The "Next" badge is a recommendation, not a lock. Start any row — but skipping repeatedly hurts your Avg wait metric.

Components

Six components, one workspace.

The Solo Doctor screen is composed of six reusable building blocks. Every one of them was designed to do exactly one job — and to do it without stealing focus from the patient.

<StatusBanner/>

StatusBanner

State indicator: idle vs. busy. Drives 'can I get coffee?' in one glance.

BehaviourSubscribes to queue:updated; flips state in <100ms; pulses while in-progress.
DoKeep one and only one — banner is canonical.
Don'tRead the queue list to decide if you're free. The banner already encodes this.
<Stat × 4/>

Stat × 4

Patients today · Waiting · Avg wait · Avg session — the day's pulse.

BehaviourLoads via /api/doctor/dashboard-stats. Optimistic update after each completed visit.
DoKeep position stable. Ops staff scan by location.
Don'tAdd a fifth metric. Past four, scanning cost beats informational value — move overflow to Performance.
<PatientHistoryCard/>

PatientHistoryCard

Long-term context for the active patient.

BehaviourLazy-loads up to 100 visits. Most recent first; collapsible per row.
DoOpen the most recent card by default.
Don'tEager-load all visits. Older history lives in Archive.
<VisitForm/>

VisitForm

Capture diagnosis, notes and prescription in one composable form.

BehaviourSticky on scroll. Validates on submit, never on blur.
DoTreat the form as a contract — nothing saves until Complete is pressed.
Don'tPre-fill diagnosis from the previous visit. Silent copy-paste errors.
<MedicationSearchCombo/>

MedicationSearchCombo

Fast medication picker tied to your clinic's master list.

BehaviourDebounced 150ms. Keyboard navigable. Falls through to 'Add new'.
DoCurate the master list quarterly. Quality of search beats quantity.
Don'tAdd misspelled duplicates. The form does not de-duplicate.
<WaitingQueue/>

WaitingQueue

The real-time pull list.

BehaviourSubscribes to queue:created/updated/removed. Auto-renumbers.
DoOne Start per row. Always.
Don'tShow 'Done' patients here. They belong in Archive.
User flow

A typical visit, end-to-end.

01

Open dashboard

Status banner reads 'No active visit · 4 waiting'.

02

Click Start on Next

Yousef Hammad, Examination. Banner flips to Busy; visit form unlocks.

03

Scan history

Two prior visits — last one a follow-up for hypertension.

04

Type diagnosis

'Stable hypertension, BP 128/82.'

05

Add prescription

Search 'Amlo' → Amlodipine 5 mg → keep default dose.

06

Preview the print

Verify letterhead, footer, patient name, meds list.

07

Complete visit

Banner flips back to idle. Mona Farouk is now Next.

08

Optionally print

If the patient wants a paper copy.

Edge cases
No pause button

If you need to leave mid-visit, complete with what you have or resume on return — the form persists in browser state but isn't saved server-side.

Walk-in interrupts the queue

Reception's Quick Add lands new patients at the bottom. Manually skip ahead with Start — no override required.

Patient never came back from waiting

Use the chat dock to ask reception, who can remove the queue entry from their side.

Pro tips

Get more out of the dashboard.

Speed

⌘+Enter beats the mouse

Form-then-Enter rhythm — same one reception uses for Quick Add. Train your hands once.

Hygiene

Curate medications quarterly

Old, never-used entries clutter the search ranking. The Medications page surfaces 'last prescribed'; anything > 12 months is a candidate to delete.

Insight

Watch Avg wait, not queue length

Six waiting at 4-min avg is healthy. Two waiting at 18-min avg is a problem — someone's been parked.

Improvement

Auto-suggest diagnosis (only when safe)

Improvement: surface previous diagnosis only when visit_type is follow_up AND chief complaint matches. Saves 30s per follow-up without copy-paste failure modes.

Missing

Tags strip on patient header

Improvement: a tag row (diabetic · pregnant · VIP) on the history header would surface chronic-care patterns without opening every visit.

Missing

Duplicate-medication warning

Improvement: warn inline when a med was prescribed within the last 7 days. Prevents unintended overlap.

Section 02 · Solo Reception

The clinic's arrival valve.

Solo Reception is the single front-desk surface where every patient enters the clinic system — walk-in or appointment. It's also a real-time monitor of the floor: who's with the doctor, who's up next, and how things are pacing.

At a glance
  • WhenOpen all day on desk
  • WhoReception staff
  • OutcomeClean intake + flow
myclinic-system.com/reception/dashboard
Cairo Medical
Reception
Dashboard
Queue
Appointments
Patients
14:32:07
Dashboard
Monitor the clinic flow in real time.
Doctor busy
4
Waiting
1
In progress
18
Completed today
Currently with doctor
In progress
RA
Reem Al-Sayed
Examination · 34y · +20 106 231 2347
Started 6 min ago14:26:02
Up next
+3 more
1
Yousef Hammad
Examination · 28y · added 2 min ago
ETA when called~12 min
Quick Add · in progress
Step 1
Examination
New complaint, full intake
Step 2Active
Mariam S⌘K
MSMariam Saad…2347
SHSarah Hany…0211
Step 3Pending
Queue now
Book later
ETA if queued: ~17 min
Floating comments

What each numbered region of the mockup is doing — and why.

1
Why

Three stats. No more, no less.

Waiting · In progress · Completed today. The pulse of the clinic at a glance — anything else lives one tab away.

2
Why

Currently with doctor — mirrors the doctor's banner

Both surfaces subscribe to the same WebSocket stream. If they ever disagree, refresh — but they almost never do.

3
Why

Up Next shows position 1 only

Patients 2 through N belong on the Queue page, not on this dashboard. One next-in-line is what reception needs to act on.

4
Why

Quick Add is the front door

Visit type → patient → action, in that order. Train every walk-in through this dialog so analytics stay clean.

5
Why

Phone-first patient search

Phone is unique in the clinic; names are not. The picker indexes both — type the last 4 digits when in doubt.

User flow

A walk-in, in five steps.

01

Walk-in arrives

Greet patient. Click + Quick Add.

If unsure of visit type, ask. The right call here saves the doctor's time downstream.

02

Pick visit type

Examination · Follow-up · Consultation.

Wrong type is the #1 reception mistake — the dialog enforces it as step 1 to make it deliberate.

03

Search by phone

Type the last 4 digits. Existing patient appears in the picker.

Phone is unique; names aren't. Phone-first dedupes the patient table almost for free.

04

Queue now

Dialog closes. Up Next swaps if the queue was empty.

Tell the patient their position and rough ETA — the card has both.

05

Doctor pulls them in

Status banner flips Busy on both screens.

Reception's In progress stat increments; everyone sees the same state.

Pro tips

Keep the front desk calm.

Discipline

Make Quick Add a habit, not a decision

Every walk-in goes through it, even when the doctor is idle. Bypassing for 'obvious' cases is how analytics get gappy.

Speed

Phone first, name second

Arabic transliterations vary; phones don't. Type the last 4 digits — the picker is built for it.

Insight

Switch to Book at queue > 6

Patients accept being booked an hour out far better than being told '20 minutes' three times. Default Quick Add changes when waiting > 6.

Improvement

Live ETA chip on Up Next

Improvement: receptionists currently compute ETA in their heads. A live chip would close the gap between promised and actual wait.

Missing

'In waiting room' state

Improvement: an intermediate state between Arrived and In progress would let reception confirm physical presence without consuming a queue slot.

Improvement

Auto SMS on Late

Improvement: when a patient hits Late, prompt reception with a one-click 'running late?' SMS. Reduces no-shows without requiring discretion.

What’s next

Three more parts. Same six-section structure.

Every part follows the same rhythm — overview, hero mockup, floating comments, components, flow, pro tips — so the full guide reads as one coherent product manual.

Part 2 · live

Solo Mode · secondary pages

Queue · Appointments · Patients · Medications · Archive. The supporting screens that orbit the dashboard.

Read it
Part 3

Station Mode · entry surface

Multi-doctor clinics with specialties and routing. Same model, more knobs.

Part 4

Station Doctor & Reception

The multi-doctor counterparts to what you just read.