0

We use FHIR, but we've had a few customer accidentally create a new Patient instead of finding and adding data to an existing patient creating duplicate entries for the same real-life patient.

I'd like to search for patients with same DOB and similar names and then offer them UI in the app to merge their records.

My questions are:

  1. What's the most efficient way to do this search in FHIR without having to retrieve and compare every Patient resource?
  2. What's the cleanest way to transfer related patient resources to one of the patients as part of a merge?

Thanks in advance.

Henrik Joreteg
  • 1,698
  • 16
  • 18

2 Answers2

0

Your solution here is ultimately going to depend upon the FHIR server and/or EHR that you are connecting to.

In terms of being able to search for patients with similar demographics, in an ideal world, you would make a patient search API call with the demographics and the FHIR server would return not only patients with matching demographics but also patients with a similar set of demographics. (E.g., returning John Smith with DOB 4/3/1921 in addition to Johnathan Smith with DOB 4/3/1921). Epic does this and uses a point-based system to essentially assign a weight to a potential patient match.

In terms of merging, doing this over FHIR would require the server to support something like a $merge operation. I personally am not aware of any major EHRs that support this. Usually merges are handled via HL7 ADT interface messages (there are a few message types, like A18 and A34, that would fit the bill and again, it'll depend on the server's capabilities).

Ashavan
  • 623
  • 3
  • 8
  • I appreciate the response. I will mark it as correct because I don't see any other likely solutions. I ended up implementing a middle-ware type approach that fetches all patients (lumps them by DOB) and then does a "natural word" comparison of names to fuzzy match similar names and same DOB. For merge, i copy over related resources, then delete the now unlinked patient. This worked for my simplified scenario, won't work for really large systems. – Henrik Joreteg Mar 30 '22 at 21:06
0

You might consider the Patient MATCH operation.

It is subtly different from the Patient-Search.

Search says "if it meets the criteria, send it back".

MATCH allows you to customize a bit. AND you can set "match scores"

https://www.hl7.org/fhir/operation-patient-match.html

The "spec" is easy.

The implementation of actually doing patient "finding" and "is this person actually this person in my datastore" is very difficult.

But ultimately, you are finding that FHIR-Resource UPSERTING is a VERY VERY difficult proposition. People (architects) can draw all the rectangles and arrows they want.....doing Patient Matching is hard. and consolidating fhir-resources ("upsert") is hard.

granadaCoder
  • 26,328
  • 10
  • 113
  • 146