← Back to all workProduct · Healthcare

Avalon

Splitting the note from the record. Clinical documentation designed for the bedside instead of the desk.

Role
Sole Product Designer
Company
CureMD
Platform
iOS: iPhone, iPad, Apple Watch
Duration
~2 years
Year
2019
Partners
UX Writer, UX Analyst
CureMD's desktop EMR, the complete chart. Avalon is its companion at the point of care.
CureMD's desktop EMR, the complete chart. Avalon is its companion at the point of care.
Patient profile: the complete picture in one scroll
Patient profile: the complete picture in one scroll
The Provider Note, write state: fast enough for a hallway
The Provider Note, write state: fast enough for a hallway
Appointments: eight named, colour-coded states
Appointments: eight named, colour-coded states
01
The setup

Built like a chart, used on the move

Avalon is the mobile companion to CureMD's EMR. A physician uses it to chart, prescribe, check eligibility, and manage their schedule between patients rather than at a desk. The version I inherited was built like desktop software put on a phone: dense, exhaustive, and focused on the completeness of the medical record. That works for a chart. It does not work for the thirty seconds a physician has standing in a hallway between rooms.

What made this hard is specific to healthcare: clinical documentation carries medico-legal weight, so the safe default is to capture everything up front in one pass. But the person using Avalon is not a record-keeper at a desk. It is a clinician in motion, and every extra required field is friction at the moment they have the least attention to give.

The working idea: if a note could be written and signed in the time a physician actually has at the point of care, both adoption and documentation quality would rise, without giving up the completeness the record needs.

Multi-user login, built for shared clinic devices rather than one phone per user
Multi-user login, built for shared clinic devices rather than one phone per user
Patient select. The clinician picks up where they are, mid-round
Patient select. The clinician picks up where they are, mid-round
02
The first wrong turn

The completeness-first form

The first direction treated the Provider Note as a single, complete form. It captured the full History of Present Illness, reason, comments, severity, and structured clinical detail on the entry path, mirroring the record exactly. On paper that makes sense: clinicians need complete documentation, and the signed record does hold dense, structured clinical detail.

What this form missed is where the physician is standing when they fill it out. It solved the record's problem, but not the prescriber's.

03
The pivot moment

Capture fast, verify later

Physician interviews showed the real behaviour. Providers do not document for completeness in the moment. They capture fast and verify later. When we showed them the long entry form, they described it the way they described the old app: as something to get through, not something that helped them care for the patient in front of them.

That was the signal that the frame was wrong. The problem was not that the form was too long. It was the wrong thing to put in front of someone at the point of care. The completeness was real and necessary. It was just in the wrong place in the flow.

04
The reframe

Separate documenting from reading

The principle that came out of it: separate documenting from reading.

Instead of one note, there are two states. The entry-and-sign-off path is cut down to what a physician needs while moving: patient, date and time, reason, a comment, and a single, clear Sign Off action. The full clinical record, the structured HPI, severity, the signed-by name and timestamp, becomes the read state. It shows up when reviewing or auditing the chart, not when capturing it.

Entry is fast, and the record stays complete. None of the documentation's completeness was lost. It was moved to the moment where it actually matters.

Write state. Patient, date, time, reason, comment, and one Sign Off action
Write state. Patient, date, time, reason, comment, and one Sign Off action
Read state. Full HPI, severity, signed-by name and timestamp
Read state. Full HPI, severity, signed-by name and timestamp

Two states of one note, split by the moment it is used in.

05
The friction

Defending the split

The hard part was not drawing the two states. It was defending the split. In clinical software, the instinct to capture everything up front is not laziness. It is a real risk-management habit, because an incomplete note has medico-legal consequences. The resistance was that instinct itself, not any one person. The pull toward capturing everything at entry is where every clinical tool drifts, and the job of the design was to prove the split was safe, not just faster.

The answer was simple: completeness was never removed, only moved into the signed record. That idea, move it, do not delete it, is what let the split survive review.

06
The resolution

One pattern, repeated across the app

What shipped was the two-state Provider Note, sitting inside a design system I built for the whole app, which is why the same logic could repeat across every module. A fast surface over a complete record, used again and again.

Module

Explicit states, everywhere

Appointments carries eight status states: Scheduled, Confirmed, Checked Out, Forced, Blocked, Check In, Waiting List, and Rescheduled. Rx Activity names every prescription state, including controlled-substance (EPCS) handling: Sent, Queued, Not Supported, and Data Error. A prescriber always knows exactly where an order stands.

Appointments, eight colour-coded status states
Appointments, eight colour-coded status states
Rx Activity, explicit EPCS order states
Rx Activity, explicit EPCS order states
Module

Actions one gesture away

The common actions, edit, reschedule, cancel, replace and delete, live behind a consistent swipe-to-reveal. The list stays clean, and the action is never more than one gesture away.

Swipe an appointment: edit, reschedule, cancel
Swipe an appointment: edit, reschedule, cancel
Swipe a prescription: edit, replace, delete
Swipe a prescription: edit, replace, delete
Module

The prescription record, end to end

The note's pattern repeats in prescribing: a fast summary surface for the moment, with the full history one level down. Rx Summary keeps the common actions on a swipe, and Rx History holds the complete record when the prescriber needs to read rather than act.

Rx Summary. The fast surface, actions on a swipe
Rx Summary. The fast surface, actions on a swipe
Rx History. The complete record, for reading
Rx History. The complete record, for reading
Module

Careful with the data that matters

Inline validation catches bad input at entry, and the error state says what is wrong in place rather than failing at save. Identifiers are masked for privacy. Identity fields are inclusive, with a "Choose not to disclose" option. Insurance is modelled as a real primary, secondary and tertiary hierarchy rather than one flat field.

Add Patient. Inline validation at entry
Add Patient. Inline validation at entry
The error state: named in place, fixed in place
The error state: named in place, fixed in place
Insurance: primary, secondary and tertiary
Insurance: primary, secondary and tertiary
Module

Coverage, from payer to person

Payer selection sits inside the same insurance hierarchy, and the patient profile gathers the whole picture, demographics, coverage and activity, into one scrolling record.

Payer selection inside the insurance hierarchy
Payer selection inside the insurance hierarchy
Patient list. Where every round starts
Patient list. Where every round starts
The system underneath

A design system, built end to end

What made the repetition possible was a system I owned end to end: banners, input and error states, table cells, tab bars, and a full button family. Because it was mine top to bottom, the note's core pattern, a fast surface over a complete record, stopped being a one-off and became a reusable building block across the app.

The status vocabulary

Every module names its states out loud instead of hiding them. Appointments carries eight, prescriptions four, and the colour coding as shipped is visible in the screens above.

Appointments · 8 states
ScheduledConfirmedChecked OutForcedBlockedCheck InWaiting ListRescheduled
Prescriptions (EPCS) · 4 states
SentQueuedNot SupportedData Error
Status colour, sampled from the shipped screens

Foundations the modules stand on

Multi-user login

Designed for shared clinic devices rather than assuming one phone, one user. The device belongs to the clinic; the session belongs to the clinician.

Masked identifiers

Sensitive identifiers are masked by default, so a glanced-at screen in a hallway never leaks what it should not.

Inclusive identity fields

Identity fields carry a "Choose not to disclose" option, so the record never forces an answer the patient did not give.

Insurance as a hierarchy

Primary, secondary and tertiary coverage modelled as the real structure it is, not one flat field to overwrite.

The component inventory

The boards below are the real working system files: banners, required-field and error states, table cells, tab bars, and the button family that every module above is assembled from.

Avalon design system: banners, error and input fields, table cells, tab bars and buttons
The Avalon system: banners, error and input fields, table cells, tab bars, and the button family.
Avalon design system detail: banner variants, input and error states, table-cell patterns
Detail: banner variants, required-field and error states, and the table-cell patterns reused across modules.
Result: qualitative

What the physicians said

Physicians who had called the old app a 90s relic responded well to the revamp in follow-up interviews. There is no A/B number here, and that is the honest read. In a clinical tool used by physicians, you rarely get to run a controlled experiment on them. What there is instead is a clear research loop: a real behaviour observed, a frame corrected because of it, and a design the physicians themselves confirmed.

07
The postmortem

What I'd weight differently

Looking back, two things stand out. First, the controlled-substance prescribing path (EPCS, with its own error and not-supported states) is the highest-consequence flow in the app, and a flow that error-prone deserved its own validation round with prescribers earlier than it got one. Second, the information architecture has aged far better than the visual styling, which is the real lesson about where the lasting design work sits. The thinking about separating documentation from reading holds up as well today as it did then. The gradients do not.