Skip to content

FAC-OPD-01 · Outpatient visit: front door to paid ​

One patient, Adaeze Nwankwo, walks in with a sore throat and a fever. In about thirty minutes she is registered, seen by a nurse and a doctor, has a blood test and a prescription, and pays. You play seven people to get her there. Nobody types her name after reception, nobody carries paper, and the bill builds itself from the care she received.

If you only ever do one journey in this guide, do this one. Every other flow in the hospital is a variation on it.

Before you start ​

  • A demo hospital loaded with the demo data (implementers: verabase-client/scripts/demo-reset.sh then node scripts/seed-demo-environment.mjs). It has 64 patients, a clinic already in progress, wards, lab and pharmacy.
  • These accounts. Every password is Verabase-2026 except the admin's.
Role in this journeySign in asLands on
Facility Adminadmin@demo-clinic.test / DemoAdmin-2026Dashboard
Front Deskfrontdesk@demo-clinic.testPatients → Schedule
Nursenurse.eze@demo-clinic.testClinical → Nursing tasks
Provider (doctor)dr.okafor@demo-clinic.testClinical
Lab Technicianlab@demo-clinic.testLab
Lab Supervisorlabsup@demo-clinic.testLab
Pharmacistpharmacist@demo-clinic.testPharmacy
Billing Officercashier@demo-clinic.testMy patient board

Sign out and back in between roles. What you see (navigation, landing page, buttons) comes from the role you are signed in as. That is the point of the exercise.

First time signing in

Each workspace opens with Waiting for you: what your role owes right now. First time in, it offers a one-minute role guide (Show me / No thanks).

Steps ​

0. Route chart prescriptions to the pharmacy — as Facility Admin ​

This is a one-time go-live step for a real hospital. Until it's on, prescriptions written on the chart never reach the pharmacy counter. The demo data arrives with it already on, so here you only check it.

  1. Sign in as the Facility Admin and open Pharmacy.
  2. Scroll to Prescribing integration and tick Provider orders: "Outpatient prescriptions become dispense requests at the counter." Tick Drug chart (MAR) as well if the hospital has wards.

Prescribing integration with Provider orders turned on

Turn it on before anyone prescribes

A prescription only reaches the counter if the integration was on when it was written. Don't assume earlier prescriptions will appear. Check the counter, and raise any missing ones with Manual dispense.

1. Register the walk-in — as Front Desk ​

  1. Choose Front desk in the Patients bar.
  2. Search first. Type the name as the patient says it (Adaeze Nwankwo, in either order), or the MRN or phone, into Search cached patients before you register anybody.

Searching before registering

  1. In Register patient, enter First name, Last name, Date of birth and Phone.
  2. Under Allergies, ask "Has any medicine, food or anything else ever caused you a reaction?" Adaeze says no, so choose No known allergies. If the patient names an allergy, choose Has allergies and give each one a substance, reaction and severity (Mild, Moderate or Severe). Leave Not asked yet only if nobody asked.
  3. Tick Consent to treatment, and fill in anything else the patient tells you (next of kin, payer, current medications).
  4. Register patient. She gets the next local number, e.g. MRN-000065.

The registration form

  1. Now try to register the same person again.

You should see: "An existing patient matches these identity details. Use that record instead of creating another one." The panel shows which record matched and why (name and date of birth match · phone matches), labelled Strong match. A weaker match (e.g. the phone alone) asks you to confirm it's a different person. A strong match refuses outright.

The duplicate guard refusing a second chart

Why it matters: duplicate charts are how an allergy list ends up on a record nobody opens.

2. Check the allergy status — still Front Desk ​

"No allergies recorded" and "no known allergies" are different statements. The first means nobody asked. The answer you gave at registration is the allergy status: it's what the prescribing check reads.

  1. Open full profile from the patient summary.

You should see: No known drug allergies — reported at registration to Blessing Umar, <date>. Confirm with the patient. Clinicians see the same on the chart banner, so the doctor or nurse knows the desk asked and can confirm it.

No known allergies reported at registration

An allergy given at the desk reaches the doctor the same way. A walk-in registered with Has allergies → Penicillin · Rash and lip swelling · Severe:

Recording an allergy at registration

…shows Allergies: Penicillin (HIGH) on the doctor's chart, and amoxicillin is stopped by the allergy gate (step 6):

The allergy from registration stops the prescriber

To add or change an allergy after registration: choose Add flag in the profile's Flags. Set Type Allergy, Label (e.g. Penicillin), Severity (Mild, Moderate or Severe) and Notes, then Add. The profile header shows it at once; clinicians see it in red on the chart banner, and it feeds the allergy gate (step 6).

Adding an allergy flag

Doctors, nurses and pharmacists can record allergy status and flags from the chart as well. They're the ones who usually ask (FAC-IPD-01 step 2).

3. Check her in — still Front Desk ​

  1. Back on Front desk, search Adaeze Nwankwo and choose Check in.

You should see: her name at the bottom of the Queue board as Waiting · priority 3. From now on nobody searches for her. She is in the queue.

Checked in and waiting in the queue

4. Take her observations — as Nurse ​

  1. Sign in as the nurse and choose Clinical in the Clinical bar. Today's queue has four columns: Waiting, With nurse, With doctor, Done.

Today's queue from the nurse's side

  1. Choose her card in Waiting. Her chart opens with a visit already started in your name.
  2. In Vitals, enter systolic/diastolic, heart rate, temperature, weight, respiratory rate, SpO₂, consciousness (AVPU) and pain.

As you type, Verabase tells you what NEWS2 still needs ("Missing: respiratory rate, SpO2…").

Entering vitals

  1. If the observations were taken earlier (at triage, say), enter Time taken; leave it blank if you took them just now. The chart keeps the time taken and, separately, when you entered them.
  2. Capture vitals.

You should see: NEWS2 1 — Low risk (0–4) — routine review, and a row with every value, the time and by Sr. Chioma Eze. The author comes from your login. There is no author field to type in.

Vitals saved with NEWS2 and author

5. Consult, order and prescribe — as Provider ​

  1. Sign in as Dr Okafor, choose Clinical, and pick Adaeze from the queue.
  2. Read the banner before anything else: name, MRN, age, allergy status, alerts.

The doctor's view of the chart

  1. Note tab → Provider note, written as SOAP. Fill in Subjective, Objective, Assessment and Plan. Type . in any box for saved phrases, or Insert chart data to pull in the vitals.
    • Time of service is when the care happened, not when you typed it. The chart keeps both.

Writing a SOAP note

  1. Save draft (Saved to the record.), then Sign note.

You should see: "Signed by Dr. Ngozi Okafor. Signed notes cannot be edited — add an addendum instead." A signed note is immutable. Corrections are new, dated versions. You can also attach ICD-10 codes under Structured diagnoses.

A signed note

  1. Orders tab → Lab test. Enter Full blood count, indication Fever workup, and choose Place lab test. The panel says it is routed to the laboratory.
  2. Prescription. Enter Amoxicillin, dose 500 mg, PO, TDS, 5 days. This is a clinic visit, so the course goes home with her: Give the first dose here in clinic is unticked. Tick it only if a nurse should give the first dose before she leaves. Choose Place prescription. It is routed to pharmacy.

A take-home prescription

You should see: both in the Order timeline: ORD-… Lab test Ordered and ORD-… Prescription Active.

Lab test and prescription in the order timeline

A take-home course is not on the ward drug round: a nurse working the round (Medication (MAR)) sees the ward's doses, and none for Adaeze. On an inpatient, emergency or day-case visit, prescriptions go on the round as before.

The drug round, without the take-home course

6. See the allergy gate — still Provider ​

Open Chidi Oyelaran from the Inpatient → Ward round worklist. He is a child with an active admission, and his chart banner reads Allergies: Penicillin (HIGH).

Chidi Oyelaran's allergy banner

On Prescriptions, the closed source visit shows that the active admission can receive new orders. Try Amoxicillin 250 mg PO TDS for 5 days in Prescribe for this admission.

You should see: "Amoxicillin is flagged against this patient's recorded allergies. Give a reason to prescribe it anyway." The allergy is recorded as penicillin, and the drug is amoxicillin. Verabase matched them by drug class, not by name.

The allergy gate

Under the message, Verabase shows exactly what matched, Penicillin (HIGH) — same penicillin class as Amoxicillin, and a Reason for prescribing anyway field. The button now reads Prescribe over allergy warning and stays disabled until the reason is at least 10 characters. The reason is recorded with your name and audited.

For this exercise, give a reason and prescribe. On the Prescriptions tab the order is listed as Active · Allergy override, so every later reader sees that it was a decision, not an accident.

A recorded allergy override

The full composer on Prescriptions runs more checks the same way: duplicate therapy ("Amoxicillin … is already active. Confirm intentional."), dose sanity, high-alert drugs, and verbal-order read-back.

7. Work the sample — as Lab Technician, then Lab Supervisor ​

  1. Sign in as the lab technician. Adaeze's Full blood count · Fever workup is at the top of the Order queue, marked Ordered, with the doctor's name. Nobody carried a slip.

The lab order queue

  1. Select it. The Enter result panel names the five steps and tells you which one you are on: 1 Collect → 2 Receive in lab → 3 Record result → 4 Verify → 5 Acknowledge.

Step 1: collect

  1. Specimen collected → enter the bench (e.g. HAEM) → Received in lab → Accession.
  2. Enter a Result summary and use Add analyte for each value: name, value, unit, reference low and high. Then Record result.

Entering analytes

  1. Sign in as the lab supervisor, open the Lab, and select the same order. Values outside their range are flagged automatically (High). The result is Awaiting verification.

Awaiting supervisor verification, with automatic flags

  1. Verify result. It now reads Verified. A technician enters; a supervisor releases. The separation is deliberate.

8. Review and acknowledge the result — as Provider ​

Back as Dr Okafor, open Adaeze's chart → Labs. The full blood count is there, marked New result, with the analyte table, the flags, who completed it and when.

The verified result on the chart

Waiting for you now counts results to review. It links to Clinical → Results inbox, where Results to review lists every completed lab and imaging result you ordered that you haven't acknowledged yet, abnormal flags included. Add a note on what you did about it, then choose Acknowledge. The result leaves your queue, and the acknowledgement (who, when, note) stays on the record. Critical values can't be acknowledged without a note.

Results to review, with the FBC ready to acknowledge

9. Verify and dispense — as Pharmacist ​

  1. Sign in as the pharmacist. Waiting for you counts prescriptions to verify. Open Medication (MAR) → Current orders.
  2. Find Adaeze Nwankwo — Amoxicillin · 500 mg PO · TDS · take-home · Awaiting pharmacist verification. Choose Verify, after checking dose, route and frequency against the formulary.

Awaiting pharmacist verification

  1. Open Pharmacy. The prescription is already in the Dispense queue: from provider order · by Dr. Ngozi Okafor. Nothing is retyped.

The prescription at the pharmacy counter

  1. Check Quantity to supply: Qty 15, the whole course (TDS for 5 days). Choose Supply quantity. The dispense moves to Dispensed. Dispensing draws down pharmacy stock; check Inventory if you want to watch the balance fall (not part of the captured walk).

Dispensed

10. Take the payment — as Billing Officer ​

  1. Sign in as the cashier and open Revenue → Invoices & payments. Each invoice row shows the patient's name.

Invoices listed by patient

  1. Select Adaeze Nwankwo's invoice. The consultation, the lab test and the dispensing are already on it, charged when they were ordered or supplied: GP Consultation ₦5,000 · Full blood count ₦3,500 · Dispensing: Amoxicillin ₦500 = ₦9,000.

The invoice assembled itself

  1. In Payments, the Amount (₦) is already filled with what's outstanding, in naira (9000). Choose the method and Record payment. Cash and POS are confirmed immediately. Bank transfer, Mobile money and Cheque stay pending until someone confirms them against a reference.

Recording a cash payment

You should see: CASH ₦9,000 · Confirmed, with Remaining at ₦0.

Paid

  1. To see everything this patient owes across visits, find them by name in Patient account statement: billable invoices, tenders, refunds and deposits in one place.

The patient's account, found by name

  1. Open invoice receipt → Print receipt. Paid invoices cannot be edited, and confirmed payments are immutable. A refund is its own recorded transaction.

The printable receipt

This is the whole point. Nobody retyped Adaeze's name after reception. The bill assembled itself from clinical work that had already happened, and every line traces back to the order that created it.

What Verabase will refuse, and why ​

You tryVerabase saysWhat to do
Register someone who matches an existing chart on name, date of birth and phoneAn existing patient matches these identity details. Use that record instead of creating another one.Open the matched record. There is no override for a strong match, by design.
Register someone who partially matchesA possible existing patient was found. Confirm this is a different person before registering.Check. If they are genuinely different, confirm and continue.
Prescribe a drug that matches a recorded allergy by name or class…is flagged against this patient's recorded allergies. Give a reason to prescribe it anyway.Choose another drug, or record a clinical reason. The reason is permanent.
Prescribe a drug that is already active for the patientDuplicate therapy — … is already active. Confirm intentional.Stop the old order, or confirm it is intended
Edit a signed noteSigned notes cannot be edited — add an addendum instead.Add an addendum or a new version
Record a result before the specimen is collected and receivedThe lab panel only offers the next stepCollect, then receive, then result
Capture vitals with NEWS2 inputs missingVitals save, but NEWS2 lists what is missingComplete RR, SpO₂, temp, BP, HR and AVPU for a score

You're done when… ​

  • [ ] Adaeze has one chart, not two, and her allergy status reads No known drug allergies — recorded.
  • [ ] Her visit has vitals with a NEWS2 band and a signed SOAP note.
  • [ ] Her full blood count is Verified, with WBC flagged High, and acknowledged by Dr Okafor.
  • [ ] Her amoxicillin is Verified and Dispensed.
  • [ ] Her invoice reads Paid and you have printed the receipt.
  • [ ] You can explain why Chidi Oyelaran could not be given amoxicillin without documenting an override reason.

Practice task ​

Run steps 1–6 again with a patient of your own invention. As Front Desk, record a Penicillin (HIGH) allergy with Add flag instead of No known allergies. As the doctor, prescribe amoxicillin, first from Orders and then from Prescriptions. Check: both composers stop you, show the class match and ask for a reason, and the override badge appears on the order once you give one.

Known gaps found while verifying this journey ​

All logged in gaps, with the route and what to change:

  1. Clinicians cannot record allergy status fixed 2026-09-23.
  2. The registration Known allergies box does not set allergy status fixed 2026-10-01.
  3. Take-home prescriptions appeared on the ward drug round fixed 2026-10-01.
  4. The payment box kept the first bill's amount when the cashier picked another bill fixed 2026-10-01.
  5. Non-critical results never reach the Results inbox fixed 2026-09-23.
  6. Demo data leaves Provider orders off fixed 2026-09-24.
  7. Invoices without patient names; Patient ID and kobo fields fixed 2026-09-24.
  8. No override on the quick composer fixed 2026-09-24.
  9. Full-name search finds nothing fixed 2026-09-24.

CP-02 Onboard a hospital (before this) · Coming next in the catalogue: FAC-IPD-01 admission → MAR → discharge