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.
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.
Type “omeprazol” with one letter missing and the system creates a second M. Hughes.
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
- 1A nurse types a medication nameFree text, mid-call, nothing to check it against.
- 2It is saved exactly as typed“omeprazol” and “omeprazole” become two different values.
- 3The value feeds record matchingIt is one of the things used to decide who is the same person.
- 4The match failsThe typo reads as evidence of a different patient.
- 5A second record is createdNeither copy is flagged. Both look valid.
- 6A clinician opens an incomplete historyWeeks later, somewhere else in the system.
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
| Option | Who carries it | Removes the error? | What it costs |
|---|---|---|---|
| Validation warnings | The nurse, at the busiest moment | No. A warning can be clicked past. | Days to ship |
| Fuzzy matching overnight | Nobody, until it guesses wrong | No. It guesses at identity, after the fact. | A split history until the script runs, and a wrong guess merges two patients |
| Better clean-up | The team, forever | No. It treats the symptom. | Effort that never ends |
| Structured selection Chosen | The system | Yes. A picked value cannot be mistyped. | The longest, with clinical sign-off |
- 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.
