Every health department eventually hits the same wall: the same person shows up as three, five, or a dozen different "patients" across immunization registries, case management systems, lab reporting pipelines, and surveillance platforms. A name gets misspelled at intake. A date of birth is transposed. Someone gets married and a new last name appears with no link back to their prior records. None of these are exotic edge cases — they're Tuesday.

The cost isn't abstract. Duplicate and fragmented patient records drive bad case counts, missed contact tracing links, redundant outreach, and — in clinical settings — real safety risk when a provider is working from an incomplete history. An Enterprise Master Patient Index (EMPI) is the infrastructure layer that's supposed to solve this: a system that assigns one durable identity to a person and links every downstream record back to it, regardless of which source system it came from.

Why this breaks specifically at scale

Simple deterministic matching — same name, same DOB, same SSN — works fine for a pilot with a few hundred records. It falls apart once you're running real volume, because:

What's needed is probabilistic matching — algorithms that score the likelihood two records represent the same person using multiple weighted fields, not a single exact-match rule.

The Two Failure Modes

False negatives (real duplicates that don't get linked) fragment a person's history across systems. False positives (different people incorrectly merged) are worse — they can pull one person's clinical or case data into another person's record entirely. A well-tuned EMPI is explicitly tuned to keep both error rates low, with a human review queue for the genuinely ambiguous matches.

The open-source path: OpenCR and HAPI FHIR

Commercial EMPI platforms exist, and for large integrated delivery networks they're often the right call. But for public health agencies and mid-sized health systems, the licensing model — typically priced per managed record or per connected system — gets expensive fast, and the quote is rarely public until you're deep in procurement.

The open-source alternative built on OpenCR (Open Client Registry) paired with a HAPI FHIR server gives you the same core capability — probabilistic matching, a persistent Patient resource per unique identity, and a FHIR-native interface that every modern interoperability tool already knows how to talk to — without the per-record licensing model. You configure the matching algorithm's weights and thresholds to your own data quality, rather than accepting a vendor's black-box tuning.

Where It Actually Runs

OpenCR and HAPI FHIR are the software layer, not a hosting decision. Self-managed servers work fine for smaller deployments. For agencies already standardizing on Azure, the same stack runs on Azure Health Data Services (AHDS) — a managed FHIR service that removes the server-patching burden while keeping the same open matching engine underneath, so you're not trading the licensing savings for an ops burden nobody signed up for.

What actually goes into building one

  1. Source system inventory — every system that will feed patient data in: registries, LIMS, case management, EHR feeds.
  2. Matching algorithm configuration — tuning field weights (name, DOB, address, phone) against a sample of your real data, not synthetic test data.
  3. Review queue workflow — defining who resolves the "possible match" tier and how often.
  4. FHIR interface layer — so downstream systems query the EMPI the same way they'd query any FHIR Patient resource.
  5. Ongoing monitoring — match rates drift as your data sources change, so this isn't a build-once system.

Done right, this isn't a multi-year enterprise procurement project. A properly scoped EMPI build for a health department or mid-sized system is a matter of weeks to a few months, not the 12–18 month timelines commercial vendors often quote — largely because you're not waiting on a vendor's implementation team's calendar.

Tell us what's not talking to what.

Whether it's a data lake that needs building, an EMPI that needs replacing, or a document pipeline eating your team's time — start with a real conversation.

Start a Conversation