Aman Singh

All case studies

Preventing duplicate patient records

Medication names were typed as free text, and they were one of the fields used to decide whether two records belonged to the same patient. A spelling error could make the system miss an existing record and create a duplicate, leaving part of a patient’s history on the second record.

I traced the cause and designed searchable medication selection, with a separate route for unlisted medicines.

Role
Sole in-house designer
Sector
UK health technology
Read
5 min
A redrawn case-management screen. A nurse types omep in the medication field and picks Omeprazole 20 mg capsules from a list, with an option to add an unlisted medicine.
Redrawn to show the idea. Not the real product, and not real patient data.

In short

The problem
The same patient could end up with two records, so a clinician might open a case without the full history. Nurses were typing medicines at speed between calls.
My role
Sole in-house designer. I traced the cause, weighed the options and designed the fix. I made the case to engineering, clinical leads and compliance. I also checked the build before release.
Key decision
Replace typing with a searchable list loaded from a UK medication database, with a separate field for unlisted medicines that never feeds matching. I chose it over the back-end lead’s overnight clean-up script, because a clean-up only works after the fact.
The trade-off
Nurses lost free typing for any medicine on the list.
Outcome
Shipped after clinical and compliance sign-off. The change stops a medication spelling error from creating a duplicate record. Overall impact was not measured.

Confidential work. Names, screens and records are withheld. The pictures are redrawn to show the idea.

Contents
  1. The problem
  2. Tracing it
  3. Options
  4. The design
  5. Getting it built
  6. What changed
  7. Looking back
Try it: log a call

M. Hughes is already on file, taking omeprazole 20 mg. You are a nurse logging a call between two others. Type the medication the way you would in a hurry.

Or try

Patient record, created 09:14M. Hughesomeprazole 20 mg

Type “omeprazol” with one letter missing and the system creates a second M. Hughes.

A simplified illustration of the mechanism, with made-up data. The real matching used several fields; medication was the clearest case of one that accepted any spelling.

Some patients existed twice, with their history split between the records

I was the only in-house designer on a case-management platform. Nurses used it to log calls and record conditions and medication. They managed each case to its close.

  • Duplicate records were found later and merged by hand.
  • Until then, a clinician could open a case without the full history.
  • Nothing on screen looked wrong, so nobody had linked the duplicates to how they were made.

I followed one duplicate back to where it started

One duplicate, traced backwards
  1. 1A nurse types a medication nameFree text, mid-call, nothing to check it against.
  2. 2It is saved exactly as typed“omeprazol” and “omeprazole” become two different values.
  3. 3The value feeds record matchingIt is one of the things used to decide who is the same person.
  4. 4The match failsThe typo reads as evidence of a different patient.
  5. 5A second record is createdNeither copy is flagged. Both look valid.
  6. 6A clinician opens an incomplete historyWeeks later, somewhere else in the system.
I started at step 6 and worked back to step 1. Illustrative, with no patient data.

I started at one duplicate and worked back through the matching logic. The medication field was free text, and what nurses typed there helped decide whether two records were the same person. To the system, “omeprazol” and “omeprazole” pointed to two different people.

Nurses filled the field in between calls, at speed, with no help from the screen. They were doing what the screen asked. NHS England’s guidance on duplicate records describes the same end point: a history split across two records, leading to incorrect prescriptions.

Four ways to fix it, and only one removed the error

Four ways to fix it
OptionWho carries itRemoves the error?What it costs
Validation warningsThe nurse, at the busiest momentNo. A warning can be clicked past.Days to ship
Fuzzy matching overnightNobody, until it guesses wrongNo. It guesses at identity, after the fact.A split history until the script runs, and a wrong guess merges two patients
Better clean-upThe team, foreverNo. It treats the symptom.Effort that never ends
Structured selection ChosenThe systemYes. A picked value cannot be mistyped.The longest, with clinical sign-off
Only one option took the error away instead of managing it.
  • Validation warnings were cheapest, but a busy nurse can click past a warning.
  • Fuzzy matching overnight was the back-end lead’s first proposal. It changed nobody’s workflow, but it guessed at identity after the fact.
  • Better clean-up meant merging by hand for ever.
  • Picking from a list was the most work. It was also the only option that stopped the error happening.

Search and pick, with a safe way out for anything missing

  • Type a few letters, then pick. Typing “omep” jumps to the matching medicines. It works like a spellcheck that only offers real names.
  • A full list from day one. It was loaded from a UK medication database, compiled with the back-end team, with every name and variation.
  • A way to add an unlisted medicine, such as one in a trial. Matching only uses picked values, so anything typed there stays on the record but can never create a duplicate.
  • It fits the current system. A bigger redesign was coming. This fix worked now and would carry over, so nurses did not have to wait.

Engineering, clinical leads and compliance all had to agree

The back-end lead wanted to keep free typing and clean up overnight. I argued that a clean-up only works after the fact: until it runs, a clinician can open a record with part of the history missing, and a wrong guess merges two different people.

One traced record made the case. Seeing a plausible typo become a second patient made the mechanism hard to argue with. I framed it as reducing the burden on nurses. That was more accurate than calling it nurse error, and easier for clinical leads to support.

  • Compliance, clinical leadership and the heads of the affected departments reviewed the design before engineering saw it.
  • I handed over annotated flows for every state, including a search with a typo in it, and checked the build before release.
  • Compliance and clinical leadership agreed to own the list before it was built.

It shipped.

A nurse picks a medicine and moves on

There is no warning to read and no spelling to get right, so this kind of duplicate cannot be created any more. The team also started asking what a field is for before building it. Free-text fields that decide identity stopped being treated as harmless.

I would count the duplicates before arguing for the fix

I won the argument on the mechanism, but I had no before and after. Counting the merges for a month first would have cost very little. I would also have pushed sooner: the duplicates had been in the data all along.

Source: NHS England, Primary Care Support England, duplicate records guidance.

If this is relevant to a role you are hiring for, I am glad to walk through the reasoning in more depth than a public page allows.