Redesigning EMR patient search — anthonyflo.
← All work
Dialogue · Healthcare · Care platform

Faster, safer patient matching

Care coordinators at Dialogue spent 2–3 minutes matching each incoming medical fax to the right patient. I redesigned search around what faxes actually contain, cutting that to about 60 seconds without waiting on a backend rebuild.

RoleProduct Designer, research to handoff
Team1 PM, 1 designer, 2 developers
Timeline4 months
Dialogue's fax triage screen, with the Member search field lifted out to show prefix chips and highlighted results for 'John'
66%faster matching, 2–3 min to ~60 sec per faxBefore/after timing
<1%wrong-patient matches after launchPost-launch QA
~$15ka year in coordinator time savedTime saved × hourly cost
The tension
Faxes included a phone number and Health ID. Search accepted several fields, but coordinators couldn't search by either of those. Common names returned multiple duplicate results, and a wrong match is a privacy breach.
The turn
Making phone and ID searchable "properly" was a 6+ month backend project. Instead I designed prefix search, which lets the existing system query the right field today.
Where it landed
Matching dropped from 2–3 minutes to ~60 seconds, phone became 85% of all searches, and wrong-patient matches stayed under 1%.

Problem

The search didn't match the paperwork

Coordinators triage 100+ medical faxes a day, and every one followed the same slow loop:

  1. A fax arrives with patient details, usually a name, birthdate, phone number and Health ID.
  2. The coordinator searches by name and birthdate in most cases, and gets several possible matches.
  3. To tell them apart, they open each candidate's profile in a new tab and read through it.
  4. They check the phone number and Health ID against the fax until one patient fits.
TimeAt 100+ faxes a day, matching alone took 16–25 hours a week.
RiskA fax on the wrong patient is a breach of personal health information: quality control review for the team, and possible fines and penalties for Dialogue as a healthcare provider.
FocusEvery minute spent investigating was a minute taken from patient-facing work.
"I wish we could search by phone number at the least. It'd make my life so much easier."Mariah, Care Coordinator

Research

The real problem was confidence

Two weeks embedded with the care coordination team showed it wasn't about search speed.

8 shadowing sessions12 contextual interviewsFull workflow map100+ support tickets
  1. 1

    The search fields didn't match the faxes.

    90% of faxes carried a phone number or Health ID, and neither was searchable.

  2. 2

    Telling patients apart was the hard part.

    Finding candidates was easy; narrowing a common name down to one person was not.

  3. 3

    Coordinators optimized for safety, not speed.

    Fear of a wrong match drove the extra tabs and double-checks.

The constraint. Phone numbers and Health IDs lived in a separate legacy database the search couldn't read. Unifying them was a 6+ month backend project, so the design had to work around it, not wait for it.

How might we let coordinators search by phone and Health ID now, using the system we already have?

Exploration

Three ways to pick a field

I took three concepts to the team, each a different answer to one question: how does a coordinator tell search which field to look in?

Concept 1: a dropdown before the search box with Member, Health ID and DIA ID

Pre-tab dropdown

An Ant Design input variant with a field picker in front: Member, Health ID or DIA ID.

  • Lightweight to build on an existing component
  • Precise: search knows exactly which field to query
  • But every search starts with a menu, 100+ times a day
Not chosen
Concept 2: Search by radio buttons, Member info or Health ID, above the search box

Radio buttons

The same choice, laid out in the open: Member info or Health ID, set before you type.

  • Options visible at a glance, no menu to open
  • Still a choice before every search
  • Adds height to an already dense triage panel
Not chosen
Concept 3: prefix chips shown under the search box on focus

Prefix search

One box. Type or pick a prefix like phone: or healthid: before the value.

  • Name search works exactly as before
  • Experts skip straight to the field they need
  • Invisible until learned, so the prefixes show on focus
Chosen

All three were buildable without the database rebuild. Prefix search won because it kept the default search exactly as it was and added no step for the common case, while the other two put a choice in front of every one of 100+ daily searches.

usability sessions answered the pushback

Our CTO and PM worried prefixes would mean a steep learning curve. I answered with evidence: before launch, coordinators triaged a test fax with the prototype. Most clicked into search, saw the prefixes, picked phone:, pasted the number and found the patient, unprompted. They called it useful and faster than their old routine.

Solution

Type or pick a prefix. Search looks in the right field.

No new screens, no backend rebuild. Try it below: it plays on its own, and takes over the moment you click in.

Playing demo

Click into the field, and the prefixes appear.

Type thisSearch does this
JohnName search, unchanged
phone: 6472281214Matches the phone number
dob: 1990/09/20Matches the date of birth
healthid: FRAJ 9009Matches the Health ID
diaid: 019231Matches the Dialogue ID
email: john@Matches the email
name: john phone: 647Stacks filters to narrow a common name

Every state, specified

Empty Member field
Default.Looks exactly like the search they already knew.
Focused field showing Search by chips: name, phone, dob, healthid, diaid, email
Focused.The prefixes appear the moment you click in, so nobody needs training.
Results for John with the matched text highlighted in yellow
Results.The matched text is highlighted, with birthdate, phone and Dialogue ID on every row to tell lookalikes apart.
No prefix detected message under the chips
No prefix detected.A bare number can't be matched safely, so search points to the prefixes instead of guessing.
Selected member John Frankish with birthdate, phone and Dialogue ID
Selected.The chosen patient keeps their identifying details on screen, so the coordinator can confirm against the fax at a glance.

Three principles, each answering a research finding

  • Simple by default, faster for experts

    Plain name search works as before, and clicking into the box shows the prefixes.
  • Show why it matched

    Every result highlights what matched, so coordinators can trust it without opening extra tabs.
  • Guide, don't guess

    Input search can't read safely gets a nudge toward the right prefix, never a risky match.

What I owned, end to end: interaction specs for every state, a reusable "matched field" highlight component, screen-reader announcements for matches, responsive behaviour, and a developer handoff annotated with edge cases.

Impact

Confidence, then speed

The biggest win was confidence: coordinators could see why a result matched, so they assigned each fax to the right patient without double-checking in other tabs.

~60 secto match a fax, down from 2–3 min (66% faster)
<1%wrong-patient matches in post-launch QA
85%of searches now use phone
~$15ka year in coordinator time

The project was part of Dialogue's cost-saving initiative, and the business case was simple: give coordinators back the time matching took from them. The 1–2 minutes saved on every fax add up to about $15k a year, time coordinators now put into more impactful work. Faster matching also cut an estimated 2–4 hours from urgent referral response, and the team absorbed growing fax volume without adding headcount.

"You don't know how amazing this is. Our team is blasting through triaging now."James, Care Coordinator

Reflection

Respect the constraint, ship the value

A solution that respects the constraint can deliver value months before the "right" fix. Prefix search shipped in 4 months; the database rebuild would have taken 6+ just to start helping.

What I'd do differently

Measure the mismatch rate before launch. Because a breach could bring fines for Dialogue, error rate was the number the organization cared about most. Under 1% is strong, but a pre-launch baseline would show how much safer matching became.

Settle concerns with a test, not a debate. Six usability sessions answered the learning-curve worry better than any argument could, and I'd bring testing in that early on every project.

What's next

Early OCR tests hit ~95% accuracy for auto-assigning faxes, which could remove manual matching for most of them. Once the databases are unified, search could detect a phone number or ID on its own, and the prefixes could quietly retire.

Anthony Flotildes · Toronto · anthonyflotildes@gmail.com · Product screens shown with sample data.