<SidebarStationDoctor/>SidebarStationDoctor
Same nav as Solo Doctor minus three items: My Clinics, Reception staff, Audit logs.
The doctor and reception surfaces from Part 1 carry over almost wholesale. A handful of UI changes — fewer for doctors, more for reception — turn them into station-aware tools without a re-learn.
One codebase, conditional rendering. The mode is detected once at login (clinicKind === "station") and a small set of components flip behaviour. Same URLs, same shortcuts, same shape.
The Station Doctor screen is the Solo Doctor screen with three sidebar items removed and a busier queue. There is no claim flow, no specialty pool view — the doctor sees the patients waiting for their clinic and starts whoever is next. Pinned vs shared lives on the reception side.
Numbered annotations on the mockup.
My Clinics, Reception staff, Audit logs — all moved to the station admin's surface. The doctor sees only what they own clinically.
Doctor identity in the sidebar shows their specialty. The queue doesn't repeat it — the doctor knows their own specialty.
Doctors don't see the routing decision. Pinned-to-me and shared-pool items land in the same list, ordered by arrival. The server has already filtered them.
If the doctor sees it, the doctor can start it — server enforced. No multi-step claim ceremony, no race conditions.
The chat dock shows colleague names with their specialty. Useful when reception messages 'send Tarek to the Cardiology room'.
<SidebarStationDoctor/>Same nav as Solo Doctor minus three items: My Clinics, Reception staff, Audit logs.
<FlatStationQueue/>Server-merged queue: items pinned to this doctor + unassigned items in their specialty.
<Server-side claim guard/>Prevents a doctor from starting a queue item that doesn't belong to them.
<DashboardChat (station-aware)/>Cross-role chat dock with colleague names + specialty.
Slimmer sidebar, same metrics, a busier queue.
Pinned and shared items, all ordered by arrival.
Server validates the claim. Start works or fails fast.
Same form, same shortcuts, same prescription pipeline. Workflow muscle-memory transfers.
Every shortcut from Solo Doctor (Part 1) carries over. Train once; works everywhere.
Station queues are co-mingled, so 'my queue is 8' actually means 'Cardiology is 8'. Coordinate with colleagues — don't silently absorb everything.
Improvement: a tiny pin icon next to your name in the queue would show you which items the family explicitly wanted you for. Currently invisible.
Improvement: when another doctor in your specialty is offline > 30 min, surface a banner offering to absorb their pinned queue with one click. Pure social load-balancing.
Performance breaks down visits by doctor. If you're handling 60% of the specialty's load month over month, that's a staffing conversation with the admin.
Audit logs moved to /station/audit-logs. If you need to reconstruct your own actions, ask the admin or use Archive — same data, different angle.
Solo reception adds a patient. Station reception adds a patient with a specialty and an optional doctor pin. Two new selects on Quick Add, two new filters on the queue, two new badges per row — small surface change, large workflow change.
Numbered annotations on the mockup.
Quick Add adds it as Step 3 between visit type and patient action. The form blocks submission without it — the most common bug class in multi-doctor flows is unrouted queue items.
Pinning is a deliberate action. The default routes the patient into the specialty pool, where any qualified doctor can claim them.
Two dropdowns above the queue. The doctor list narrows to the chosen specialty. "Unassigned only" surfaces shared-pool items.
The specialty badge (secondary) and the doctor badge (info "Dr. X" if pinned, warning "Shared" if not) make routing visible at a glance.
Reception loads the page and lands on the same view they had open before — refresh-safe filters are a small thing that compounds.
<SpecialtyPicker/>Required dropdown on Quick Add and the inline add-to-queue form.
<DoctorPicker/>Optional dropdown — appears once specialty is chosen.
<QueueFilterBar/>Specialty + doctor + clear button at the top of the Queue page.
<StationQueueRow/>Same structure as Solo, plus two badges (specialty + doctor assignment).
<QuickAddDialog (station)/>Four steps instead of three: type → patient → specialty → action.
<Routing badges (legend)/>A small "Shared = any doctor / Dr. X = pinned" legend on the queue page header.
Same button, four-step dialog.
Same as solo — Examination/Follow-up/Consultation, then patient.
Required. New step.
Optional. 'Any (shared)' is the default.
Pin only when continuity matters (chronic patients, family doctors). Pinning everything kills load-balancing and creates resentment.
Save 'Cardiology only' or 'Unassigned only' as bookmarks. Filter state is in the URL, so each bookmark opens a specific view.
Appointments booked before specialties existed (or before this feature shipped) may have NULL specialtyId. Sweep them quarterly.
Improvement: a free-text complaint field that suggests "looks like Cardiology" would cut the most common reception mistake — wrong specialty.
Improvement: reception's dashboard could show the per-specialty queue depth bars from the admin dashboard. Same data, different consumer.
If reception picks the wrong specialty, edit the queue item — don't remove and re-add. Removal cuts the audit trail.
Part 5 walks the admin layer — audit logs, performance dashboards, suspension flows. The unglamorous, load-bearing surfaces every clinic eventually needs.
Every login, every edit, every prescription — searchable, exportable, regulator-ready.
Read itVisit volume, wait times, top diagnoses, doctor balance, drug usage — on one screen.
Read itAccount status, soft-deletes, data retention. The unglamorous layer that keeps the rest honest.
Read it