Skip to content
DEXPRADEXPRA home

Article · Data platforms

Terminology and patient identity services in healthcare data platforms

Every count a platform publishes rests on two answers: whether two records are one patient, and whether two codes mean the same thing. What each service does, and what it leaves to you.

DEXPRA · · 19 min read

Two shared services: terminology and patient identity

A data platform needs two answers that no single source system can give it. Are these two records the same patient? Do these two codes mean the same thing? The first is patient identity, the second terminology. Every count the platform publishes rests on both, and when either answer is wrong nothing fails: the query runs, the dashboard fills, and the number is quietly different from the truth.

Why both arrive last, after storage, pipelines and models, is set out in What a healthcare data platform is made of, which names them as the platform’s two shared services. This piece starts where that one stops: from one pair of records to the whole population of pairs, and from the release calendar to what a release does to a value set.

One CMS measure shows both failures in its own text. For the Hybrid Hospital-Wide Readmission measure, hospitals send the first vital signs and laboratory results of each stay, and CMS joins them to the Medicare claim to adjust for case mix, using four linking variables: the hospital’s CMS Certification Number, the patient’s Medicare Beneficiary Identifier, and the admission and discharge dates. The specification asks hospitals whose laboratory systems use local codes to map them to the LOINC codes in the measure’s value sets. A stay whose identifiers do not join and a result whose code is not in the value set are both simply missing, and CMS replaces a missing value with the median for the patient’s cohort.

From the July 2025 to June 2026 performance period, a hospital has to send linking variables for at least 70% of discharges, and no more than 30% of discharges may lack more than two lab results or more than two vital signs. In CMS’s analysis of the 2024 voluntary reporting, three-quarters of the hospitals that took part missed the earlier thresholds of 90% and 95%. A hospital below the line loses a quarter of its annual payment update.

Two failures in one published measure

A stay whose identifiers do not join, and a result whose code is not mapped. Neither raises an error. Pick the US measure or the Canadian indicator; every count is an input, and the rules are each body’s own.

Cohort

Lab results mapped to the measure’s LOINC value sets

Vital signs used by this cohort, assumed present: heart rate, respiratory rate, systolic blood pressure, temperature.

92%
50%100%

CCN, MBI, admission date and discharge date. Illustrative input.

1,200
1005,000

Illustrative input.

Linking variables
92%
At or above 70%
Lab results missing per discharge
1
Within the two allowed
Values set to the median
1,104
1 on each of 1,104 linked stays
Reporting rule
Met
No error was raised either way

Medicine cohort. Meets the reporting rule. 1,104 values set to the cohort median.

The rules applied

  • Linking variables for 70% or more of eligible discharges, from the July 2025 to June 2026 performance period.
  • No more than 30% of discharges with more than two missing lab results or more than two missing vital signs. An unmapped lab is missing on every discharge in the cohort.
  • An admission missing more than half of its cohort’s elements leaves the calculation; for the rest, each missing value becomes the cohort median.
  • A stay sent without its linking variables cannot be joined to its claim, so its values cannot be used. It is counted once, against the linking line.

CMS529 v6, the measure’s specification for discharges from July 2026; the measure’s methodology report v1.3 (2024); the FY 2026 IPPS/LTCH PPS final rule; and CMS’s 2026 Hybrid Measures FAQ, Q9, Q56 and Table 4, read at CMS and QualityNet on 17 October 2026. Every count is an input; nothing here predicts a hospital’s score.

The US tab applies CMS’s 2026 Hybrid Measures FAQ; the Canadian tab, CIHI’s readmission indicator. Every count is an input you set, and nothing here predicts a hospital’s score.

Not every readmission measure works this way. The Hospital Readmissions Reduction Program is computed by CMS from Medicare claims and Medicare Advantage encounter data, and a readmission counts at any short-term acute care hospital. A hospital’s own record linkage and its local code maps do not enter it. The failures in this piece bite where an organisation computes or submits a number from its own data: its dashboards and registries, an electronic measure, a hybrid one.

Canada shows the two failures pointing opposite ways. CIHI’s Medical Patients Readmitted to Hospital links stays across facilities by encrypted health card number and province, drops records with an invalid number before it builds episodes, and excludes chemotherapy readmissions, coded Z51.1, from the numerator. A platform recomputing it from its own data lowers the rate for every readmission it fails to link, and raises it for every chemotherapy admission whose local code it never mapped to Z51.1. Doidge and Harron call the first kind of error “the merging and splitting of people”.

The FHIR terminology architecture and runtime operations

In FHIR, terminology is a service. Code systems, value sets and maps are resources, CodeSystem, ValueSet and ConceptMap, and the resource model with its first surprises is covered in FHIR implementation: what a project involves beyond the API. What a platform needs from the service is a handful of operations, and each one is a question.

$lookup asks what a code is. $validate-code asks whether a code belongs to a value set, which is the check a profile’s binding implies at ingest. $expand asks what a value set contains, which is how a value set becomes a table for a warehouse query. $subsumes asks whether one concept is an ancestor of another. $translate asks what a code maps to under a given map. All but $translate are normative in FHIR R4.

Two more are the ones most often missing. $closure maintains a client-side table of which codes subsume which, so a warehouse can answer is-a questions with a join, and $find-matches finds a code from its properties. On 17 October 2026, HL7’s reference server answered that $closure has to be turned on by its administrator, and did not recognise $find-matches. HL7’s own test suite for terminology servers does not test $find-matches at all.

Every operation answers under a release, and the answer changes when the release does. Each takes a parameter that pins it: version for $lookup and $subsumes, systemVersion for $validate-code, system-version for $expand, with check-system-version to fail rather than drift. The exchanges below were run against the reference server on the date shown, and each names the release it ran under.

Seven terminology operations

Each operation as the question it answers, the parameter that pins its release, and a real exchange with HL7’s reference server, tx.fhir.org, run on 2026-10-17.

What is this code, in this release?

$lookup on CodeSystem
Show a display name at ingest, read a concept’s properties, check that a code exists at all.
Pins the release
version, the code system edition and release
Status
R4: Normative · R5: Normative

What is SNOMED CT 73211009, in the 2025-02-01 International release?

Request · tx.fhir.org/r4

GET /CodeSystem/$lookup?system=http://snomed.info/sct
  &code=73211009
  &version=http://snomed.info/sct/900000000000207008/version/20250201
  &property=parent

What came back · HTTP 200

{
  "status": 200,
  "name": "SNOMED CT International Edition",
  "version": "http://snomed.info/sct/900000000000207008/version/20250201",
  "display": "Diabetes mellitus",
  "parents": [
    "126877002",
    "362969004"
  ]
}

What the run showed

Asked for SNOMED CT’s normal form as well, the same server returned the concept’s other properties and no normal form. A property a server does not return is a question to ask of it.

FHIR R4 and R5 operation definitions, read at hl7.org. Every exchange was sent to tx.fhir.org/r4 on 2026-10-17 by a script kept with this article’s sources. A later run may answer differently, because the server loads new releases; that is the reason to pin one. Only the parts of each answer shown here are kept.

Seven operations, each with an exchange run against tx.fhir.org on 17 October 2026 by a committed script. A later run may answer differently; that is the reason to pin the release.

SNOMED CT adds a way to define a value set without listing its members. FHIR’s implicit value sets address everything below a concept, everything in a reference set, or everything an Expression Constraint Language query selects, and ECL is at version 2.3. An implicit value set has no fixed membership. It is whatever the named release says is below the concept today.

Maps changed most between FHIR versions. R5 calls its ConceptMap an “extensive redesign”: the equivalence of each mapping became a relationship with five codes, unmatched rows moved to an element of their own, and a row can now map a whole value set. A map held as R4 is converted, not copied.

ConceptMap, R4 to R5

The changes HL7 lists in R5’s implementation note, and what each means for a map a platform already holds in R4.

  • R4 · The R4 resource

    R5 · An “extensive redesign”, with metadata fields added

    A map held as R4 is converted, not copied. Plan it as a migration with a check of every row.

  • R4 · source[x], target[x]

    R5 · sourceScope, targetScope

    Renamed “for clarity”. Anything that reads the map’s scope by name needs changing.

  • R4 · group.element.target.equivalence

    R5 · group.element.target.relationship

    Renamed, and the codes simplified to five: related-to, equivalent, source-is-narrower-than-target, source-is-broader-than-target, not-related-to. Each R4 value has to be re-expressed.

  • R4 · equivalence = unmatched

    R5 · noMap

    A row that said “no target” in R4 moves to its own element in R5.

  • R4 · (none)

    R5 · target.property

    A target can carry properties, so a map can say more than which code.

  • R4 · dependsOn.property

    R5 · dependsOn.attribute

    Renamed. A conditional row, “only if this other element says that”, keeps its meaning.

  • R4 · (none)

    R5 · group.element.valueSet, target.valueSet

    A row can map a whole value set rather than one code.

  • R4 · group.unmapped

    R5 · unmapped gains relationship and valueSet; mode is use-source-code, fixed or other-map

    What happens to a code nobody mapped is stated, rather than left to the reader.

FHIR R5 ConceptMap, implementation note and ConceptMapRelationship, read at hl7.org on 17 October 2026. ConceptMap is at maturity 3, Trial Use, in R5; R5’s $translate is at maturity 1.

The changes HL7 lists in R5’s implementation note, and what each means for a map already held in R4.

A platform consumes terminology in one of two ways. It calls the service as data arrives and as queries run, or it loads a release into tables, often with a closure table of every ancestor pair, and joins against them. Both need to record which release they used. The first gets it back in every response; the second has it only if someone writes it down when the tables are loaded.

Two ways a platform uses terminology, and where each records the releaseOn the left, terminology called at run time: a code arrives from a source system, is checked with $validate-code against the value set the profile binds, gets its display from $lookup along with the version the server echoes, and queries call $expand or $subsumes, which answer under the server’s current release. The release is recorded from what each response echoes. On the right, terminology materialised as tables: a release is downloaded, loaded into vocabulary tables, a closure table of every ancestor pair is built, and queries join the tables without calling a server. The release has to be written down when it is loaded.CALLED AT RUN TIMEA code arrives from a source systemHL7 v2, FHIR, a file$validate-code at ingestIs it in the value set the profile binds?$lookup for the displayand the version the server echoes back$expand or $subsumes at query timeThe server answers under its current releaseMATERIALISED AS TABLESA release is downloadedSNOMED CT, LOINC, RxNorm, a national editionLoaded into vocabulary tablesConcepts, relationships, mapsA closure table is builtEvery ancestor pair, so is-a is a joinQueries join the tablesNo server is called at query timeTHE RELEASE IS RECORDEDFrom the version each response echoes, kept with therecord it was used on.THE RELEASE IS RECORDEDOnly if it is written down when the tables areloaded. Nothing in the tables says it otherwise.
Two ways to use a terminology service. Either can say which release a number used, if the platform keeps what the service tells it.

Global standards and the US and Canadian code systems

A US platform meets two families of code systems. The HIPAA code sets are the ones claims carry: ICD-10-CM and ICD-10-PCS, HCPCS with CPT, the National Drug Code and the dental code. The clinical vocabularies are the ones US Core binds: SNOMED CT, LOINC and RxNorm, with CVX for vaccines and UCUM for units. Their terms differ. CPT needs a licence from the American Medical Association for every product that contains it, while HCPCS Level II, ICD-10-CM, the NDC directory and CVX are free downloads. SNOMED CT costs nothing in the US, where NLM distributes it under the UMLS licence, which is free and needs an account; RxNorm’s codes are in the public domain, but its full release needs that licence too.

Value sets have a home of their own in the US. The Value Set Authority Center, run by NLM with ONC and CMS, holds the value sets behind CMS’s electronic measures, and each value set has a steward who reviews, approves, publishes and maintains it. Reading one needs a free UMLS account and an API key. US Core’s own terminology page says so, because its medication, immunisation, allergy and vital-sign bindings point at VSAC value sets. The UMLS Metathesaurus links these vocabularies concept by concept: its 2026AA release counts 3,530,466 concepts from 195 sources.

A Canadian platform carries a different set. SNOMED CT’s Canadian Edition comes from Canada Health Infoway, free with an Infoway account after accepting two licence agreements every year, released quarterly in February, May, August and November, with French translations. Infoway also publishes pCLOCD, the pan-Canadian LOINC observation code database, in English and French each March and September. Hospitals report diagnoses and interventions to CIHI in ICD-10-CA and CCI, licensed by category and frozen at the 2022 version while CIHI assesses ICD-11. The Canadian Clinical Drug Data Set is Health Canada’s, under the Open Government Licence. And ATC, which PS-CA lists among its candidate drug code systems, does not allow commercial copying or distribution without the WHO Collaborating Centre.

Outside both countries, ICD-11 is licensed under Creative Commons with no derivatives, and WHO’s terms say mapping or crosswalks between ICD-11 and other terminologies need a separate written agreement, which matters to anyone building a ConceptMap to it. England’s dictionary of medicines and devices, dm+d, is released weekly under the Open Government Licence for TRUD. In a country that is not a SNOMED International member, use has to be registered before it starts, and fees may apply.

The code systems a platform carries

Each code system with its steward and its terms as the steward states them, US first, then Canada, then international. Filter by where you meet it, by licence or by use; every row stays in the page. The second tab is what the national guides bind.

Where you meet it

Licence

Used for

Showing 20 of 20

  • US · Clinical terms

    SNOMED CT, US Edition

    Free with an account
    Steward
    SNOMED International; NLM is the US Member and release centre
    Terms, as stated
    No charge in the US and other Member territories. Access is through the UMLS Metathesaurus licence, which carries the SNOMED CT Affiliate Licence
    Distributed
    NLM’s UMLS Terminology Services. The US Edition combines the US Extension with the International release · March and September
  • US · Drugs

    RxNorm

    Free with an account
    Steward
    National Library of Medicine
    Terms, as stated
    The names and codes are in the public domain. A free UMLS licence is needed to download the full monthly and weekly releases
    Distributed
    NLM downloads, monthly and weekly
  • US · Billing and claims

    ICD-10-CM

    Free
    Steward
    CDC’s National Center for Health Statistics, under WHO’s authorisation
    Terms, as stated
    A HIPAA code set from 1 October 2015. NCHS offers a no-cost browser and the files; its page states no licence
    Distributed
    cdc.gov, by fiscal year
  • US · Billing and claims

    ICD-10-PCS

    Free
    Steward
    Centers for Medicare & Medicaid Services
    Terms, as stated
    A HIPAA code set for hospital inpatient procedures, from 1 October 2015
    Distributed
    cms.gov
  • US · Billing and claims

    CPT

    Licence fee
    Steward
    American Medical Association
    Terms, as stated
    A HIPAA code set, with HCPCS, for physician and other services. Any organisation using CPT content anywhere must hold a licence for each product that contains it
    Distributed
    The AMA, under licence
  • US · Billing and claims

    HCPCS Level II

    Free
    Steward
    Centers for Medicare & Medicaid Services
    Terms, as stated
    Products, supplies and services not in CPT, which is HCPCS Level I. A HIPAA code set; CMS’s page states no licence
    Distributed
    CMS’s HCPCS file updates
  • US · Drugs

    National Drug Code

    Free
    Steward
    FDA; each entry is the labeler’s responsibility
    Terms, as stated
    A HIPAA code set for retail pharmacy. The directory is a free download; an NDC does not denote FDA approval. A uniform 12-digit format takes effect on 7 March 2033
    Distributed
    FDA’s NDC Directory, updated daily
  • US · Vaccines

    CVX

    Free
    Steward
    CDC’s National Center of Immunization and Respiratory Diseases
    Terms, as stated
    Vaccines administered, active and inactive. Paired with an MVX code it names the product. No licence is stated
    Distributed
    CDC downloads: Excel, PDF, flat file and XML
  • US · Value sets and crosswalks

    VSAC value sets

    Free with an account
    Steward
    NLM, with ONC and CMS; each value set has its own steward
    Terms, as stated
    A free UMLS account and API key. Stewards review, approve, publish and maintain their own value sets
    Distributed
    The VSAC website, an SVS API and a FHIR server; eCQM and US Core value sets live here
  • US · International · Value sets and crosswalks

    UMLS Metathesaurus

    Free with an account
    Steward
    National Library of Medicine
    Terms, as stated
    A free UMLS licence, whose Appendix 1 lists the vocabularies included. 2026AA: 3,530,466 concepts from 195 sources
    Distributed
    UMLS Terminology Services
  • Canada · Clinical terms

    SNOMED CT, Canadian Edition

    Free with an account
    Steward
    Canada Health Infoway, for a founding Member country
    Terms, as stated
    Free with an Infoway account, after accepting the SNOMED CT Affiliate Agreement and the Canadian National License Agreement, renewed every year. Only those who accept both may use the Canadian Edition
    Distributed
    Infoway’s Terminology Server and syndication feed · Quarterly: February, May, August, November
    French
    French translations, by Infoway’s release notes
  • Canada · Laboratory and observations

    pCLOCD

    Free with an account
    Steward
    Canada Health Infoway
    Terms, as stated
    Free with an Infoway account. The pan-Canadian LOINC observation code database
    Distributed
    Infoway’s Terminology Server · 31 March and 30 September
    French
    Core attributes in English and Canadian French
  • Canada · Billing and claims

    ICD-10-CA and CCI

    Licence fee
    Steward
    Canadian Institute for Health Information
    Terms, as stated
    Licensed by category. Core Plan health care licensees may download one 100-user licence at no cost; others buy one. For non-commercial use related to the Canadian health system
    Distributed
    CIHI’s eStore · ICD-10-CA frozen at 2022; new CCI postponed to 2027–2028
  • Canada · Drugs

    Canadian Clinical Drug Data Set (CCDD)

    Free
    Steward
    Health Canada, developed with Infoway
    Terms, as stated
    Open Government Licence – Canada
    Distributed
    open.canada.ca, and hosted on Infoway’s Terminology Server · Monthly
  • Canada · Billing and claims

    Ontario Schedule of Benefits

    Free
    Steward
    Ontario Ministry of Health
    Terms, as stated
    The fees and requirements for payment of insured physician services under OHIP. Ontario pays physicians against its own schedule; other provinces were not checked
    Distributed
    ontario.ca, with fee master files for billing software
  • US · Canada · International · Laboratory and observations

    LOINC

    Free with an account
    Steward
    Regenstrief Institute
    Terms, as stated
    Free in perpetuity for any purpose, on terms: the core table is not changed, local codes carry a leading X, and LOINC is not used to build a different standard. Downloads need a free account
    Distributed
    loinc.org · February and August
  • International · Billing and claims

    ICD-11

    Needs permission
    Steward
    World Health Organization
    Terms, as stated
    CC BY-ND 3.0 IGO, so no adaptations. Mapping or crosswalks to other terminologies, and translations, need a separate written agreement with WHO. The ICD-API has its own royalty-free licence
    Distributed
    WHO’s ICD-API, as REST and FHIR, hosted or deployed locally · No Canadian implementation date; CIHI is assessing readiness
  • International · Canada · Drugs

    ATC/DDD

    Needs permission
    Steward
    WHO Collaborating Centre for Drug Statistics Methodology, Norway
    Terms, as stated
    Use requires reference to the Centre. Copying and distribution for commercial purposes, and changing the material, are not allowed
    Distributed
    atcddd.fhi.no
  • International · Drugs

    dm+d

    Free with an account
    Steward
    NHS Business Services Authority, with NHS England
    Terms, as stated
    Open Government Licence for TRUD, with a TRUD account
    Distributed
    TRUD, weekly. Release 10.1.0 on 12 October 2026 · Weekly
  • International · Clinical terms

    SNOMED CT outside a Member country

    Licence fee
    Steward
    SNOMED International
    Terms, as stated
    Use must be registered with SNOMED International before it starts, and fees may apply. A Canadian affiliate may allow it after notifying SNOMED International and Infoway
    Distributed
    Through the licensing affiliate

Each steward’s own licence and distribution pages, read in October 2026: NLM, CDC, CMS, FDA, the AMA, Regenstrief, Infoway, CIHI, Health Canada, Ontario, WHO, the WHO Collaborating Centre and NHSBSA. Bindings read from the US Core 9.0.0, PS-CA 2.3.0 and CA Core+ 1.2.1 packages. The terms are stated, not interpreted: whether they cover a particular use is the steward’s to say.

Each steward’s terms as stated, read in October 2026, US first. The second tab is what US Core, PS-CA and CA Core+ bind. Terms are stated, not interpreted.

Binding strength decides how much a guide’s value set constrains what arrives. US Core binds conditions, procedures, laboratory results, medications and vaccines at extensible strength: a code from the value set when one applies, something else only when none does. Canada’s PS-CA ballot and the CA Core+ draft bind Infoway’s value sets at preferred strength, which encourages them without requiring them, and PS-CA gives pCLOCD for laboratory results only as an example. The release dates of six of these code systems across a year are drawn in WP-11’s release calendar.

Terminology servers and mapping error vulnerabilities

Terminology goes wrong without an error in three ways. A map lives in a spreadsheet with no record of who made it or under which release. A value set is expanded under a release nobody wrote down. And a release changes a value set by itself.

The third is the least visible. On 17 October 2026 the same definition, everything that is a Diabetes mellitus in SNOMED CT, expanded to 133 concepts under the International release of February 2024 and to 124 under February 2025. Nine concepts had been inactivated in between, among them Type 2 diabetes mellitus without complication and Type 1 diabetes mellitus without complication; one had moved out from below Diabetes mellitus; one had arrived. A count built on the newer expansion no longer finds records coded with the retired concepts unless the platform follows the release’s history, and nobody edited anything.

One value set under two SNOMED CT releases: 133 concepts, then 124Everything that is a Diabetes mellitus, expanded on HL7’s reference server on 2026-10-17: 133 concepts under the International release of 1 February 2024 and 124 under 1 February 2025. 123 were kept, 10 left and 1 arrived. Of those that left, 9 were inactivated, among them Type 2 diabetes mellitus without complication and Type 1 diabetes mellitus without complication, and 1 is still active but no longer below Diabetes mellitus. The one that arrived is Intermediate DEND syndrome.EVERYTHING THAT IS A 73211009 DIABETES MELLITUSRELEASE 2024-02-01123 kept133RELEASE 2025-02-01123 kept12410 LEFT1 ARRIVED9 INACTIVATED, AMONG THEM313436004Type 2 diabetes mellitus withoutcomplication313435000Type 1 diabetes mellitus withoutcomplication111552007Diabetes mellitus without complicationand 6 more1 STILL ACTIVE, MOVED OUT OF THE SET368521000119107ARRIVED1303868000 Intermediate DEND syndromeExpanded on tx.fhir.org on 2026-10-17, the same definition under each release. Nobody edited the value set.
Counted by a committed script against tx.fhir.org on 17 October 2026: one definition, two releases, no edits.

SNOMED CT is also changing how it records inactivation. Its March 2026 release notes deprecate the Concept Non Current indicators, over 374,000 of them, and remove them from the release files from January 2027. A pipeline that reads that reference set to follow retired concepts has a date to work to.

A map that records only a source code and a target code loses what a reviewer needs: how close the match is, which release the target was chosen in, who made it, when, its status and who checked it. A FHIR ConceptMap element carries all of them.

One local laboratory code mapped twice: a spreadsheet row and a governed mapA spreadsheet row holds three cells: the local code GLU-WB, its local name, glucose whole blood, and the LOINC code 2339-0. A governed ConceptMap element holds the same source and target, Glucose mass per volume in blood, and six things the spreadsheet loses: the relationship, equivalent; the LOINC release the target was chosen in, 2.82; the author; the date; the status; and the review. The local code is invented.A SPREADSHEET ROWLOCAL CODEGLU-WBLOCAL NAMEGlucose, whole bloodLOINC2339-0Correct today, perhaps. Nothing in the rowsays how close the match is, which releaseit was chosen in, or who would know.GLU-WB IS INVENTED FOR THIS FIGUREA GOVERNED CONCEPTMAP ELEMENTsourceGLU-WB, in the lab’s local code systemtarget2339-0 Glucose [Mass/volume] in BloodrelationshipequivalentNOT IN THE ROWtarget releaseLOINC 2.82NOT IN THE ROWauthorwho made the mapNOT IN THE ROWdatewhen it was madeNOT IN THE ROWstatusactiveNOT IN THE ROWreviewwho checked it, and when it is next dueNOT IN THE ROW
GLU-WB is invented. LOINC 2339-0 was checked against LOINC 2.82 on tx.fhir.org.

Mapping errors are real and mostly small. In 2010 Lin, Vreeman, McDonald and Huff reviewed 884 voluntary LOINC mappings at three US institutions: four went to totally unrelated codes, and 36 had an error on at least one of LOINC’s six axes. They named four kinds of systematic error, from human slips to not knowing LOINC’s naming rules, and counted none of them. The sharper finding was that for 562 of the 880 tests the reviewers could not tell the specimen from the local name at all. A 2025 study of research-use codes at seven Korean university hospitals found more than 15% inconsistent, mostly in the analyte and the method.

Where LOINC mappings went wrong, in two studiesFirst, Lin and colleagues, 2010: 880 mapped laboratory tests reviewed at three US institutions. Errors by LOINC axis: analyte 14, method 7, property 10, time 0, scale 0, system 8. The reviewers could not tell the system, the specimen, for 562 of the 880, because local names rarely say it. Four tests were mapped to unrelated codes. Second, Park and colleagues, 2025: 114 inconsistent research-use codes at seven Korean university hospitals, by cause: analyte 38, method 33, property 13.LIN ET AL. 2010 · 880 TESTS, THREE US INSTITUTIONS · ERRORS BY LOINC AXISCOULD NOT TELLAnalyte14111Method7140Property1010Time011Scale03System8562Plus 4 tests mapped to totally unrelated codes. Four kinds of error are named; none is counted.PARK ET AL. 2025 · 114 INCONSISTENT RESEARCH CODES, SEVEN KOREAN HOSPITALS · BY CAUSEAnalyte38 · 33.3%Method33 · 28.9%Property13 · 11.4%Different measures and populations: the two blocks are not on one axis.
Lin et al., AMIA 2010, Table 3; Park et al., J Korean Med Sci 2025. Two populations and two measures, drawn apart.

A server is easier to choose on what can be checked than on what is claimed. HL7 publishes a terminology test suite of 1,209 tests in 38 suites that its validator runs against any endpoint, and approves servers that pass it for the modes they claim. On 17 October 2026 the approved servers were its own reference server, FHIRsmith, and CSIRO’s Ontoserver. HL7 publishes approvals, not per-test results, and no response time for any server was found at a primary source. Snowstorm Lite holds one release at a time, so it cannot compare two, and VSAC’s FHIR server states which version of HL7’s tests it meets.

Terminology servers, on what can be checked

Eight servers and public services, each from its own documentation, read in October 2026. “Not checked” means the point was not read, not that the server lacks it. No speeds and no ranking: none was found at a primary source.

Kind

Showing 8 of 8

  • HAPI FHIR (JPA server)

    Open source
    Steward
    The HAPI FHIR project
    Licence
    Apache-2.0
    Version read
    v8.12.1, 15 September 2026; documentation for 8.14.0
    Code systems
    Loaded as CodeSystem, ValueSet and ConceptMap resources, by REST or the CLI’s upload-terminology
    Releases held
    “Each version of a given code system, value set and concept map will have a separate resource entity”
    ECL
    Not mentioned in its terminology documentation
    Syndication
    Not checked
    FHIR
    Not checked
    Operations
    Not checked beyond loading terminology
    HL7 status, and who runs it
    Not on HL7’s approved list. Two Taiwanese services in HL7’s registry run it
  • Snowstorm

    Open source
    Steward
    SNOMED International
    Licence
    Apache 2.0. SNOMED International does not offer commercial support
    Version read
    11.0.0, 2 September 2026
    Code systems
    SNOMED CT, LOINC, ICD-10, ICD-10-CM and others
    Releases held
    Multiple extensions alongside the International Edition
    ECL
    “Fully ECL v2.0 compliant”, by its own account; ECL is now at v2.3
    Syndication
    Not checked
    FHIR
    Implements the terminology module
    Operations
    The terminology module, on Elasticsearch
    HL7 status, and who runs it
    Not on HL7’s approved list; no endpoint in HL7’s registry
  • Snowstorm Lite

    Open source
    Steward
    SNOMED International
    Licence
    Apache 2.0
    Version read
    2.7.0, 18 September 2026
    Code systems
    One SNOMED CT edition
    Releases held
    “Only supports one release of SNOMED CT Edition at this time”
    ECL
    “ECL Core, a subset of ECL”
    Syndication
    Not checked
    FHIR
    Selected operations
    Operations
    $lookup, $validate-code, ValueSet $expand and $validate-code, ConceptMap $translate
    HL7 status, and who runs it
    “Not suitable as a national terminology server”, in its own words
  • Ontoserver

    Commercial
    Steward
    CSIRO
    Licence
    Commercial; free to use in Australia through the Australian Digital Health Agency
    Version read
    Documentation 6.30.1
    Code systems
    SNOMED CT and LOINC, indexed with Lucene (2018 paper)
    Releases held
    Not checked
    ECL
    Not checked
    Syndication
    Yes, including SNOMED International’s MLDS feed
    FHIR
    R4, some R5 features as extensions
    Operations
    The terminology module, on PostgreSQL
    HL7 status, and who runs it
    Approved by HL7, test cases 1.9.0, mode flat. Runs national services in Australia, France, Canada, Germany, New Zealand, Estonia and the Nordic countries
  • FHIRsmith (tx.fhir.org)

    Public service
    Steward
    Health Intersections, for HL7
    Licence
    Not checked
    Version read
    Approved against test cases 1.9.4
    Code systems
    SNOMED CT, LOINC and others; approved in its SNOMED CT, OMOP and ICD-11 modes
    Releases held
    Two International releases and two LOINC versions on 17 October 2026
    ECL
    Not checked
    Syndication
    Not checked
    FHIR
    R4 and R5 endpoints
    Operations
    The module; on 17 October 2026 $closure was not turned on and $find-matches was unknown
    HL7 status, and who runs it
    Approved by HL7, modes snomed, omop, mimetypes, icd-11 and closure. HL7’s reference implementation
  • Snow Owl

    Open source
    Steward
    IQVIA, which took over B2i Healthcare
    Licence
    Apache-2.0
    Version read
    v10.3.0, 11 September 2026
    Code systems
    Not checked beyond the project page
    Releases held
    Not checked
    ECL
    Not checked
    Syndication
    Not checked
    FHIR
    Not checked
    Operations
    Not checked
    HL7 status, and who runs it
    Not on HL7’s approved list
  • VSAC’s FHIR server

    Public service
    Steward
    National Library of Medicine
    Licence
    A free UMLS account; HTTP Basic with the account’s API key
    Version read
    vsac-fhir 2.26.14, 8 October 2026, on HAPI FHIR
    Code systems
    VSAC’s value sets and the code systems they draw on
    Releases held
    Value set versions and expansion profiles
    ECL
    Not checked
    Syndication
    Not checked
    FHIR
    R4 (4.0.1)
    Operations
    ValueSet $expand and $validate-code; CodeSystem $lookup, $validate-code, $subsumes
    HL7 status, and who runs it
    Declares HL7’s terminology tests at version 1.9.1, modes VSAC and flat
  • Infoway Terminology Server

    Public service
    Steward
    Canada Health Infoway
    Licence
    Free with an Infoway account; API access needs a system account and a client-credentials token
    Version read
    Ontoserver
    Code systems
    SNOMED CT CA, LOINC, pCLOCD, UCUM, the pan-Canadian value sets, the CCDD
    Releases held
    On Infoway’s release schedule
    ECL
    Not checked
    Syndication
    Yes: RF2, Excel, CSV, JSON and XML
    FHIR
    R4 (4.0.1)
    Operations
    $expand and $validate-code named; Ontoserver’s module
    HL7 status, and who runs it
    In HL7’s registry, status OK, authoritative for Canadian SNOMED CT and Infoway code systems

Project pages and documentation for HAPI FHIR, Snowstorm, Snowstorm Lite, Ontoserver, Snow Owl, VSAC and Infoway; HL7’s approved-servers page and server registry, read on 17 October 2026; and DEXPRA’s own exchanges with tx.fhir.org the same day. A vendor’s statement about its own product is the vendor’s.

Each server from its own documentation, read in October 2026. “Not checked” means the point was not read, not that the server lacks it.

HL7’s runner checks a server against HL7’s cases. A platform’s own value sets need runs of their own: the operations its pipelines call, at the releases it pins, compared release to release for every value set that feeds a published number.

Patient identity services and the Fellegi–Sunter framework

A patient identity service keeps an index of the people a platform’s records belong to: a master patient index inside one organisation, an enterprise index across several, a registry across a region. Its errors have names. A duplicate is two entries for one person in one facility’s index, and an overlap is one person with entries in two facilities that were never linked; both are missed links. An overlay is one entry holding more than one person, from a wrong selection, an interface or a merge of two people: a false link.

Linking and merging are different decisions. A link keeps both records and relates them; a merge retires one. In FHIR the retired record carries a Patient.link of type replaced-by, HL7 v2 sends an A40 merge event, and IHE’s Patient Master Identity Registry profile sends the merge to every subscriber. Undoing a wrong merge has to travel the same paths. The IHE profiles that cross-reference and query identities, PIXm and PDQm, are introduced in IHE Radiology profiles: how imaging systems work together.

Duplicate, overlap and overlay, and how a merge reaches other systemsA duplicate is two entries for the same person in one facility’s index: a missed link. An overlap is entries for the same person in two facilities of an enterprise or an exchange: also a missed link. An overlay is one entry holding more than one person, from a wrong selection, an interface, or a merge of two people: a false link. Below, how a merge travels: the surviving record replaces the other, which FHIR records as a Patient.link of type replaced-by, HL7 v2 sends as an A40 merge, and IHE PMIR sends to every subscriber.DUPLICATEFACILITY AMRN 1001MRN 1077A MISSED LINKTwo entries, one person,one facility’s index.OVERLAPFACILITY AFACILITY BMRN 1001MRN 52-88A MISSED LINKOne person in two facilities,never linked.OVERLAYFACILITY AMRN 10012ndpersonA FALSE LINKOne entry holding two people:wrong selection, an interface,or a merge of two people.HOW A MERGE TRAVELSFHIRThe retired record getsPatient.link replaced-byHL7 v2An A40 merge eventto each interfaceIHE PMIRA feed message, and thedeprecated record set inactiveA link keeps both records and relates them; a merge retires one. Undoing a merge has to travel the same paths.
AHIMA’s definitions, drawn as records. Duplicates and overlaps are missed links; an overlay is a false link.

Matching comes in three kinds. Deterministic matching applies rules, such as the same identifier, or the same name, birth date and ZIP code. Probabilistic matching weighs each field by how often it agrees for the same person and how often it agrees by chance, which is the Fellegi–Sunter model; the match weights panel in WP-11 works one pair through it, field by field. Referential matching compares each record against a third party’s reference file of identities, which GAO describes as data from non-health care sources such as credit bureaus. Privacy-preserving linkage is a constraint on any of the three, not a fourth algorithm.

Four ways to decide two records are one person

What each strategy compares, what it needs, where it fails and who tunes it, with the same invented pair taken through each. Privacy-preserving linkage is a constraint on any of the other three, not a fourth algorithm.

Record A · invented

Name
Ann Marie Kowalski
Born
1984-03-14
ZIP
60614
Sex
Female

Record B · invented

Name
Anne-Marie Kowalski
Born
1984-03-14
ZIP
60614
Sex
Female
Compares
Fields against rules: the same identifier, or the same name, birth date and ZIP code
Needs
An identifier both records carry, or fields stable enough to agree exactly
Fails
On a typo, a missing identifier, a changed name or address. It never says “maybe”
Who tunes it
Whoever writes the rules

The pair above, this way

The two names are not spelled the same, so a rule on name, birth date and ZIP code says no link.

Fellegi and Sunter as WP-11 sets it out; AHIMA 2014 on who sets thresholds; Grannis et al. 2022, Pew 2018 and GAO 2019 on referential matching; the vendors’ own descriptions of their reference data; ICES and Statistics Canada on separated linkage; Schnell et al. 2009 and Franke et al. 2021 on Bloom filters. The pair is invented.

One invented pair taken through each strategy. Records are drawn as records.

FHIR’s Patient/$match operation asks a server for candidates and, through the draft match-grade extension, gets each one back graded certain, probable, possible or certainly-not. The operation itself “does not specify any particular algorithm, nor a minimum set of information”. HL7’s FAST identity guide adds example input weights and a scoring scale, and says its scoring “has not been widely implemented/tested”.

patient-match-response.json
{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [
    {
      "resource": { "resourceType": "Patient", "id": "example-1" },
      "search": {
        "mode": "match",
        "score": 0.97,
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/match-grade",
            "valueCode": "certain"
          }
        ]
      }
    },
    {
      "resource": { "resourceType": "Patient", "id": "example-2" },
      "search": {
        "mode": "match",
        "score": 0.71,
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/match-grade",
            "valueCode": "probable"
          }
        ]
      }
    }
  ]
}

Record matching is not identity proofing. NIST’s Digital Identity Guidelines, SP 800-63-4, final since July 2025, govern how a person proves who they are to a system; a matcher decides whether two records already held describe the same person. The digital health identifier added to Ontario’s PHIPA in 2025, created through validation and verification services, is the first kind of thing, not the second.

A probabilistic matcher produces a score, and two thresholds turn it into a decision: link above the upper one, no link below the lower one, and a person decides in between. Where the two sit trades merging strangers against splitting one patient in two, and the band between them is a queue that somebody staffs. No instrument found sets them. HL7’s FAST guide gives example input weights, TEFCA’s technical framework says matching algorithms vary today, and AHIMA puts thresholds with the organisation’s information governance.

The model behind the score assumes that fields agree or disagree independently. Twins, families at one address and a newborn sharing a parent’s details break that assumption, and they are part of why the review band exists. The panel below scores a month of candidate pairs exactly under the model, for inputs you set, and puts its estimate beside the one measurement a third party has published.

From two thresholds to a staffed queue

Illustrative inputs

A month of candidate pairs, every agreement pattern of the fields scored under Fellegi–Sunter and weighted by how often it occurs, so the counts are exact for the inputs. Every input is illustrative and editable; none describes a real index.

Fields

m values

20,000
1,000200,000

After blocking.

5.0%
0.5%50%

Sets the prior weight.

95%
0%100%

Missing on either side, it weighs nothing.

+6.00
−10+30
−2.00
−20+20
4 min
130

No published figure was found.

Linked automatically
996
0 false links: two people joined
Sent to review
4
0.3 hours of review a month
Missed links
1
One person left as two, never seen by anyone
Precision of automatic links
>99.99%
Recall, automatic links only
99.60%
Recall if every review is right
99.94%
An assumption, stated

996 linked automatically, 0 of them false; 4 to review, 0.3 hours; 1 missed.

Where every pair goes

Same person
Two people
  • Link
  • Review
  • No link
  • False link

996 of 1,000 true matches linked automatically, 3 in review, 1 missed. Of 19,000 pairs of two people, 0 were linked and 1 sent to review.

The fields, their m and u, and the weights they give

  • Health number

    Provincial. Rarely shared by chance, sometimes mistyped

    agree +13.21 · disagree −4.32

  • Last name

    Changes on marriage

    agree +6.52 · disagree −3.63

  • First name

    Nicknames, spellings

    agree +5.46 · disagree −3.03

  • Date of birth

    Shared by twins

    agree +10.92 · disagree −5.06

  • Sex

    Agrees half the time by chance

    agree +0.97 · disagree −4.64

  • Postal code

    People move

    agree +7.32 · disagree −2.31

What the model believes, and what was measured

At these inputs the model expects to link 99.94% of true matches once the queue is worked. It gets there by assuming every field agrees or disagrees independently, which twins, families at one address and a newborn sharing a parent’s details do not. The one published third-party evaluation measured a production probabilistic matcher against 30,000 hand-reviewed pairs in Indiana: it found 64% of the true matches (Grannis et al., 2022). The model’s figure is an estimate under its own assumptions. Your own is measured on a sample of your own pairs, reviewed by hand, including pairs the system did not link.

Fellegi and Sunter (1969) as WP-11 sets it out, every pattern enumerated; the Canadian m and u are WP-11’s; the US fields are USCDI v6’s demographic elements plus SSN, which is not one of them. Grannis SJ et al., JAMIA 2022;29(8):1409–1415, Table 2. No published figure for minutes per review was found.

Every agreement pattern enumerated under Fellegi–Sunter. Every input is illustrative and editable; the Canadian m and u are WP-11’s.

Privacy-preserving record linkage and cryptanalysis

Some records have to be linked by organisations that may not share identifiers. Two designs exist. In separated linkage, identifiers go to a linkage unit and content to the analyst, with a key between them: ICES converts each Ontario health number into one anonymous ICES identifier, and at Statistics Canada linkage staff see identifiers while file builders see data without them. In token linkage, each source turns identifiers into tokens and the tokens are compared. Why matching has to happen while identifiers are still inside the building is set out in the on-premises and hybrid clinical AI framework.

Linking records without the analyst holding identifiersSeparated linkage. Each source sends identifiers to a linkage unit and clinical content separately. The linkage unit sees identifiers only and assigns a project key; the analyst receives content with the key and never sees identifiers. ICES converts each Ontario health number into one anonymous ICES identifier; Statistics Canada’s linkage staff see identifiers only; CIHI links on an encrypted health number and province; under the EU’s health data space the key is held by the health data access body or a trusted third party. Below, hashed tokens: each source turns identifiers into keyed tokens and the tokens are compared. Under HIPAA that is done under expert determination with the keys withheld; an unkeyed hash counts as an identifier, and NIST notes that parties sharing a scheme can re-identify each other’s data.SEPARATED LINKAGESOURCE AidentifierscontentSOURCE BidentifierscontentLINKAGE UNITSees identifiers only.Decides which recordsare one person.ANALYSTSees content and theproject key. Never theidentifiers.CONTENT, NO IDENTIFIERSKEYICES: each OHIP number becomes one anonymous ICES identifierStatistics Canada: linkage staff see identifiers; file builders do notCIHI: an encrypted health number and province are the linkage keysEU health data space: the key stays with the access body or a trusted third partyHASHED TOKENS, FOR CONTRASTEACH SOURCEturns identifiers intokeyed tokensTOKENS COMPAREDby a broker or an enclave;N3C used an honest brokerTHE CATCHNo key, and it is an identifier.Shared scheme: re-identifiable.
As ICES, Statistics Canada and CIHI document their own linkage, with hashed tokens below for contrast.

The best-known token method encodes names as Bloom filters. Schnell, Bachteler and Reiher’s 2009 method splits a name into pairs of letters, sets bits in a filter for each pair, and compares filters by the Dice coefficient, so Smith and Smyth still look alike without either side seeing the name. In 2014 Niedermeyer and colleagues showed a manual attack on Bloom-filter-encoded surnames that needed nothing more than a public list of common surnames.

What a Bloom filter compares

Demonstration

Type two names. Each becomes padded pairs of letters, each pair sets two bits in a 64-bit filter, and the filters are compared without the names. A demonstration of the method only: it has no secret key, so it protects nothing.

Site A bigrams

  • _S, shared
  • SM, shared
  • MI, not shared
  • IT, not shared
  • TH, shared
  • H_, shared

Site B bigrams

  • _S, shared
  • SM, shared
  • MY, not shared
  • YT, not shared
  • TH, shared
  • H_, shared

Filter A · 11 of 64 bits set

Filter B · 11 of 64 bits set

Filled squares are bits both filters set; outlined squares are set in one only. The numbers beside each bigram are the 2 positions it sets.

Dice on the bigrams
0.67
What the names share
Dice on the filters
0.73
What the linkage unit sees: 2 × shared bits ÷ (bits in A + bits in B)

Bigram similarity 0.67, filter similarity 0.73.

Why this one is not safe

Without a secret key anyone can build the same filter from a list of common surnames and read the names back, which is the attack published in 2014. NIST SP 800-188 says Bloom-filter linkage lets the parties re-identify each other’s data, and HHS treats a hash made without a secret key as an identifier. Real deployments key the hashes and harden the filters, at a cost in links found.

Schnell, Bachteler and Reiher, BMC Med Inform Decis Mak 2009; Niedermeyer et al., J Priv Confid 2014; NIST SP 800-188 (2023), §4.3; HHS OCR de-identification guidance, Q3.5. Hashes here are FNV-1a with double hashing, chosen to be short and deterministic.

A demonstration of the method with no secret key, so it protects nothing. Type two names and compare.

The US rules on tokens are specific. HHS’s de-identification guidance says codes derived from protected health information, cryptographic hashes included, may be disclosed under expert determination as long as the keys are not, including to the recipients, and that a hash made without a secret key counts as an identifying element. NIST SP 800-188 describes keyed hashing with a 256-bit random key, warns that organisations sharing one pseudonymisation scheme can re-identify each other’s data, and does not recommend hashing direct identifiers. It sets out no technique for strengthening Bloom filters.

Strengthening a filter costs links. A 2021 evaluation by Franke and colleagues tested nine techniques on two US voter files with real errors between snapshots. Several “drastically reduce linkage quality”, while salting and XOR-folding flattened the bit frequencies an attack needs and kept quality high. The authors had not yet tested them against modern attacks.

Nine ways to harden a Bloom filter, and what each cost

Franke, Sehili, Rohde and Rahm tested them on two US voter files, North Carolina’s and Ohio’s, with real errors between two snapshots and none inserted. Linkage quality is F-measure, precision and recall.

  • Random hashing

    Replaces double hashing, which attacks have exploited, with a keyed random number generator

    “No attacks against this method are known at present”

    Described, not scored
  • Salting

    Keys the hash with a salt per attribute, or per record

    Attribute salts cost about 1% of F-measure and flattened the bits. A year-of-birth record salt cut recall from 89.2% to 63.6%; a Soundex first-name salt kept it

    Quality kept
  • Attribute weighting

    Gives each attribute its own number of hash functions

    Fewer for city raised F-measure by over 6% and 2% on the two datasets

    Quality kept
  • Balancing

    Concatenates each filter with its negation and permutes the bits

    Precision fell 7% and 45% at the base threshold, recovered at a higher one, and the bits became less uniform

    Depends on the setting
  • XOR-folding

    Folds the filter in half and XORs the halves

    Under 1% of F-measure once tuned, with the bit distribution flattened by about 10%: “performs the best”

    Quality kept
  • Rule 90

    Replaces each bit with the XOR of its neighbours

    Recall down about 12.5% and 7.6%; bits flattened by about 10%

    Quality lost
  • Re-hashing

    Re-hashes windows of bits into new positions

    Recall down more than 16% at the smallest window: “we can not recommend this method”

    Quality lost
  • Random noise

    Flips or sets bits at random

    Little flattening; at high noise, “an unacceptable loss in linkage quality”

    Quality lost
  • Fake injections

    Adds artificial records with rare bigrams to flatten frequencies

    Adds computation, can match a real record by chance, and has to be “winnowed”

    Described, not scored

Franke M et al., “Evaluation of Hardening Techniques for Privacy-Preserving Record Linkage”, EDBT 2021, §§3, 6–7. The authors say testing against modern attacks is still to come. Two datasets are not your data.

Franke et al., EDBT 2021: what each technique does and what it cost on two datasets.

Identity ecosystems and privacy rules in the US, Canada and Europe

The United States has no national patient identifier, and Congress keeps renewing the bar. The 2026 appropriations act again forbids spending federal funds on adopting a unique health identifier “until legislation is enacted specifically approving the standard”, as every such act has since 1999. US matching therefore rests on demographics. USCDI v6’s patient elements are names, previous name, birth date, sex, current and previous address, phone and email, with addresses to the Project US@ specification, and include no Social Security number. TEFCA’s technical framework requires every available demographic in a query and leaves the algorithm to each network. Inside its own programmes, Medicare links by its own identifier, the MBI, which is why the hybrid measure can join EHR data to claims at all.

Canada shows the other case. A provincial health number, ten digits for life in Ontario with a version code on the card, settles most matches inside a province. CIHI’s data quality documentation puts the share of hospital abstracts with a missing or invalid number at 1.40% for acute care and 1.41% for emergency and ambulatory care in 2025–26, counting a number shared by a child and its mother as invalid. What a number leaves out is specific: newborns before their own number arrives, people who have just moved between provinces, refugee claimants on federal coverage, people treated outside their province. None of them is what US reference data was built to cover, and no referential vendor found documents Canadian reference data.

Who arrives without a usable number

In Canada a provincial health number settles most matches inside a province. These are the people it does not cover, each with the rule that creates the gap. A US and an English row close it.

  • Canada

    Newborns

    Ontario pre-prints a newborn’s health number on the infant registration form; the card arrives within eight weeks

    CIHI counts a number shared by a child and mother as invalid

  • Canada

    People moving between provinces

    The Canada Health Act allows a waiting period of up to three months, with the old province paying meanwhile. British Columbia’s is the rest of the month plus two; Ontario’s has gone

    Care in the new province in the first months may carry the old province’s number

  • Canada

    Refugee claimants and some newcomers

    The Interim Federal Health Program covers them “until you’re eligible for provincial or territorial insurance”

    No provincial number until then

  • Canada

    Members of the Canadian Forces

    Excluded from “insured person” under the Canada Health Act; British Columbia waives the wait on discharge

    No provincial coverage while serving

  • Canada

    People in a federal penitentiary

    Excluded from “insured person” under the Canada Health Act

    No provincial coverage while serving the term

  • Canada

    People treated outside their province

    ICES: care given to non-Ontarians in Ontario is “not linkable to other data in most cases”

    Present in the hospital’s data, missing from the linked picture

  • Canada

    Married people in Quebec

    Civil Code art. 393: both spouses keep their own names

    A name change on marriage is not the pattern a matcher should expect

  • US

    Newborns in a US hospital

    The Joint Commission has required distinct newborn identification since 2019; temporary names such as “Babyboy Smith” persist

    A temporary name, changed before discharge, and sequential record numbers for babies born close together

  • International

    Babies in England

    The NHS number’s trace status has a code for “trace postponed (baby under six weeks old)”

    A number may be present and not yet verified

Ontario Ministry of Health; ontario.ca; gov.bc.ca; the Canada Health Act; IRCC; ICES; the Civil Code of Québec; CIHI; the Joint Commission; the NHS Data Dictionary. Read in October 2026. Quebec’s waiting period could not be read at RAMQ.

Each gap with the rule that creates it, read at the issuing body in October 2026.
Hospital abstracts with a missing or invalid health card number, CanadaFrom CIHI’s data quality documentation, at one definition. Acute and day surgery abstracts in the Discharge Abstract Database: 1.16 percent in 2023–24, 1.46 percent in 2024–25 and 1.40 percent in 2025–26. Emergency and ambulatory abstracts in NACRS: 1.55, 1.52 and 1.41 percent. National shares; CIHI does not publish them by province, and Quebec is outside the DAD’s population. Invalid includes a number shared by a child and mother.SHARE OF ABSTRACTS · MISSING, INVALID OR UNKNOWN HEALTH CARD NUMBER0.0%0.5%1.0%1.5%2.0%1.161.552023–241.461.522024–251.401.412025–26DADacute and day surgeryNACRSemergency and ambulatoryNational shares; not publishedby province. Quebec is outsidethe DAD’s population. A numbera child shares with its mothercounts as invalid.CIHI, DAD and NACRS data quality documentation, Table 5, current and closed years, read October 2026.
CIHI, DAD and NACRS data quality documentation, Table 5. National shares; CIHI does not publish them by province.

Ontario’s PHIPA s. 34 governs who other than a custodian may collect, use or disclose a health number, and since 2020 it lets a custodian providing care use the number, with consent, to identify the person’s records, verify their identity or link their records. Ontario’s Provincial Client Registry, which its operator says covers 98% of Ontarians, offers a probabilistic match that returns a score and refuses queries below its minimum criteria. Whether a particular use complies is not this article’s to say.

Europe sets its linkage rules around the dataset. GDPR’s research article says safeguards “may include pseudonymisation”, a listed safeguard rather than a requirement. The European Health Data Space regulation, whose secondary-use rules apply from March 2029, releases data anonymised where that serves the purpose and pseudonymised otherwise, keeps the key that reverses it with the health data access body or a trusted third party, and gives people a right to opt out of secondary use. England makes recording the NHS number mandatory, with exceptions, records whether it was traced and verified, and makes secure data environments the default route to NHS data for research.

Identifiers and privacy rules, four jurisdictions

The same five questions asked of the US, Canada, the EU and England: the identifier, the rule for using data without names, who holds the key, where linkage happens, and what the person can refuse. Each answer is the text’s, with who decides; none is advice.

The identifier

No national patient identifier, and federal funds still may not be spent adopting one. Medicare links its own records by the Medicare Beneficiary Identifier. A Social Security number is not a USCDI element.

The rule for using data without names

HIPAA de-identification: remove eighteen kinds of identifier (safe harbor), or have a qualified expert determine the risk is very small and document it.

Who holds the key

Under expert determination, codes derived from PHI, keyed hashes included, may be disclosed if the keys are not, “including to the recipients”. An unkeyed hash counts as an identifier.

Where linkage happens

Wherever the tokens are compared. NIST notes some linkage runs inside a secure enclave; N3C used a linkage honest broker.

What the person can refuse

Not covered by the sources this piece read.

The Further Consolidated Appropriations Act, 2026; 45 CFR 164.514 and HHS’s de-identification guidance; NIST SP 800-188; PHIPA and O. Reg. 329/04 on e-Laws; ICES and Statistics Canada; GDPR and Regulation (EU) 2025/327 on EUR-Lex; the NHS Data Dictionary and DHSC’s secure data environment guidelines. Read in October 2026.

Five questions asked of four jurisdictions, each answer the text’s own. Not legal advice.

Algorithmic bias in patient identity

Linkage error does not fall evenly. A 2010 review of 33 studies that compared matched and unmatched records found incomplete linkage associated with age, gender, race, setting, and socioeconomic and health status. The 2018 GUILD guidance on linked data says linkage error “disproportionately affects disadvantaged groups”.

Two studies put numbers on it. At ICES, Ontario’s permanent resident records from 1985 to 2012 linked to the provincial registry at 86.4% overall, 78.0% for people born in Eastern Asia and 61.4% for people aged 85 or over. In Indiana in 2026, a probabilistic matcher’s sensitivity ran from 0.70 to 0.97 across age groups, lowest where fields were missing or disagreed. When linkage misses more people in one group, every rate computed over linked records is biased for that group, and nothing raises an error.

Record linkage succeeds less often for some groups: Ontario and IndianaOntario, ICES, 2016: permanent resident records 1985 to 2012 linked to the provincial registry without a common identifier. 86.4 percent overall; refugees 91.6; economic immigrants 82.5; people born in Eastern Asia 78.0; people landed 1985 to 1989, 75.7; people aged 85 or over, 61.4. Indiana, 2026: a probabilistic matcher’s sensitivity ranged from 0.70 to 0.97 across age groups, 0.76 to 0.97 by sex, 0.85 to 0.99 by race, and 0.85 to 0.989 by ethnicity, lowest where fields were missing or did not agree.ONTARIO · ICES 2016 · PERMANENT RESIDENT RECORDS LINKED TO THE REGISTRYAll permanent residents86.4%Refugees91.6%Economic immigrants82.5%Born in Eastern Asia78.0%Landed 1985–8975.7%Aged 85 or over61.4%0%25%50%75%100%INDIANA · 2026 · A PROBABILISTIC MATCHER’S SENSITIVITY, RANGE ACROSS GROUPSBy age0.700.97By sex0.760.97By race0.850.99By ethnicity0.850.9890.000.250.500.751.00Chiu et al., BMC Med Inform Decis Mak 2016; Barboi et al., JMIR Form Res 2026. Different measures: not on one axis.
Chiu et al. 2016 for Ontario; Barboi et al. 2026 for Indiana. Different measures, drawn apart.

Newborns show the mechanism. The Joint Commission has required distinct newborn identification since 2019, and its safety notice on the subject still describes temporary names such as Babyboy Smith, record numbers assigned in sequence to babies born close together, and names changed before discharge. The remedy is the same as for any linkage error: measure it by group on your own data, and report it.

Comparing products and testing them on your own data

Identity services come in kinds: matching built into the EHR, enterprise index products, referential services, open-source indexes, linkage libraries and, in Canada, provincial registries. What can be checked about each is its licence, how it is deployed, which standards it documents and what it says it covers. What cannot be checked from outside is accuracy.

Published matching accuracy is almost all vendor-reported. One third-party evaluation of a commercial matcher exists. In 2022 Grannis and colleagues measured a referential and a probabilistic algorithm against 30,000 hand-reviewed pairs from the Indiana Network for Patient Care, and found sensitivity of 0.94 and 0.64 at almost identical precision. Its funder, the California HealthCare Foundation, holds a minority stake in the referential vendor, Verato, and the paper says so. No comparison of identity products against each other published since 2020 was found, and every referential vendor that states its coverage states US identities.

Kinds of identity service, on what can be checked

Thirteen options in six kinds, from each operator’s own documentation, read in October 2026. What each says it covers is its own claim, quoted. Accuracy is the column nobody can fill from outside.

Kind

Showing 13 of 13

  • EHR-native

    Epic’s patient matching

    Part of the EHR

    Deployment
    With the EHR
    Standards
    Documentation on fhir.epic.com needs a login
    What it says it covers
    Not public
    Accuracy
    No independent figure published
  • Enterprise index product

    InterSystems EMPI

    Vendor product

    Deployment
    Not checked
    Standards
    Not checked
    What it says it covers
    Renamed from HealthShare Patient Index at version 2025.1. Its referential service is “powered by LexisNexis LexID”
    Accuracy
    No independent figure published
  • Enterprise index product

    Rhapsody EMPI with Autopilot

    Vendor product

    Deployment
    “On your infrastructure or in the cloud”
    Standards
    “API, FHIR, and HL7”
    What it says it covers
    NextGate’s index, after the 2022 merger. “1,900+ healthcare teams in 31 countries”; Canada not mentioned
    Accuracy
    The vendor quotes one customer’s 98% “data match rate”; not independently checked
  • Enterprise index product

    IBM Match 360

    Vendor product

    Deployment
    Not checked
    Standards
    Can ingest InfoSphere MDM data
    What it says it covers
    No healthcare-specific statement from IBM found
    Accuracy
    No independent figure published
  • Referential service

    Verato

    Vendor product

    Deployment
    A service against the vendor’s reference file
    Standards
    Not checked
    What it says it covers
    “Over 300 million identities” of US people, from “commercially-sourced demographic data”; no other country named
    Accuracy
    One third-party evaluation of a commercial referential matcher, on Indiana records; its funder holds a minority stake in Verato
  • Referential service

    Experian Health Universal Identity Manager

    Vendor product

    Deployment
    Not checked
    Standards
    Not checked
    What it says it covers
    Combines “probabilistic and referential matching”, using Experian demographic data; no coverage stated outside the US
    Accuracy
    No independent figure published
  • Referential service

    LexisNexis LexID for Healthcare

    Vendor product

    Deployment
    A service
    Standards
    Not checked
    What it says it covers
    No sources, counts or countries stated; its data “may contain errors”, by its own notice
    Accuracy
    No independent figure published
  • Open source index

    SanteMPI (SanteDB)

    Apache-2.0

    Deployment
    Not checked
    Standards
    A FHIR module
    What it says it covers
    Owner SantéSuite Inc., origin Canada; active in October 2026
    Accuracy
    No independent figure published
  • Open source index

    OpenCR

    MIT

    Deployment
    Not checked
    Standards
    Not checked
    What it says it covers
    Last change 1 April 2025
    Accuracy
    No independent figure published
  • Open source index

    JeMPI

    MPL-2.0

    Deployment
    Not checked
    Standards
    Not checked
    What it says it covers
    Last change 16 April 2025
    Accuracy
    No independent figure published
  • Enterprise index product

    OpenEMPI

    Commercial, by annual subscription: no longer open source

    Deployment
    An older community edition shipped as an Amazon machine image (2021)
    Standards
    Not checked
    What it says it covers
    Version 4.4.3, 31 July 2026, for customers with a subscription
    Accuracy
    No independent figure published
  • Linkage library

    Splink, fastLink and Zingg

    MIT; no licence asserted on GitHub; AGPL-3.0

    Deployment
    Libraries inside your own pipeline, not services
    Standards
    None: they link tables
    What it says it covers
    Splink and Zingg changed in October 2026, fastLink in February 2026
    Accuracy
    Whatever you measure on your own data
  • Provincial registry

    Ontario’s Provincial Client Registry

    Access for authorised providers after onboarding

    Deployment
    A provincial service
    Standards
    Queries in HL7 FHIR, V3 and V2; PIXm
    What it says it covers
    “Covering 98% of Ontarians”, by its operator; a probabilistic match that returns a score, and refuses queries below its minimum criteria
    Accuracy
    No independent figure published

Each operator’s own pages, read in October 2026; Grannis SJ et al., JAMIA 2022, for the one third-party evaluation, which names its funder’s stake. A vendor’s figure is the vendor’s. Nothing here ranks one option above another.

Thirteen options from each operator’s own documentation, read in October 2026. A vendor’s claim is the vendor’s.

The figures most often repeated about patient matching do not survive being traced. Match rates “as low as 50%” was one organisation’s self-reported rate between separate EHR instances, from a 2014 interview. Eight per cent of records being duplicates comes from an EMPI vendor’s white paper about indexes from 2000 to 2003. Eighteen per cent comes from a crowdsourced poll in a press release that also ranked vendors. On the terminology side, 6% to 19% of laboratory tests that cannot be mapped to LOINC is a 2006 study of five Indian Health Service facilities.

The figures most often quoted, traced to where they came from

Twelve statistics that travel through patient matching and mapping writing, each followed back to its origin: who measured it, how, who paid, and whether it supports the way it is usually quoted.

  • Identity

    Match rates “as low as 50%”

    Kaiser Permanente, interviewed for ONC’s 2014 report

    One organisation’s self-reported rate when sharing between separate Epic instances; above 90% within each

    Paid · ONC contract (Audacious Inquiry)

    Retold as “a study” of records “accurately matched”. It was neither

  • Identity

    Match rates “from 14 to 90 percent”

    OCHIN, interviewed for the same report

    An interview answer, no method given

    Paid · ONC contract

    A range from one interview

  • Identity

    “8% of records are duplicates”

    An Initiate Systems white paper, 2008, cited by RAND and ONC

    112 master patient indexes, 2000 to 2003

    Paid · An EMPI vendor; RAND’s report was sponsored by health IT companies

    A vendor’s figure about indexes twenty years old

  • Identity

    “8 to 12 percent” duplicates

    Just et al., 2016

    “Industry experts estimate”, no citation

    Paid · Two authors from an MPI services firm

    No source

  • Identity

    “15 to 16 percent” in large systems

    Attributed to RAND by Just et al.

    RAND gives 9.4% for files of a million records or more

    Paid · —

    Not in the source cited

  • Identity

    “18% of records are duplicates”, “$1,950 per stay”

    Black Book Market Research press release, 2018

    A “crowdsourced poll” of 1,392 managers and EMPI users, self-reported

    Paid · A market research firm whose release also ranks EMPI vendors

    Estimates from a vendor-satisfaction poll

  • Identity

    “$96 per duplicate”, “22 percent to .14 percent”

    Children’s Medical Center Dallas, a case study

    One hospital’s clean-up

    Paid · Written by the firm that did the clean-up

    One case, told by its contractor; the case study itself was not read

  • Identity

    7,613 wrong-patient events

    ECRI Institute PSO, 2016

    Events submitted by 181 organisations, found by keyword search

    Paid · ECRI

    A count of reported events, not a rate

  • Identity

    “A 5 to 10 percent rate being the norm”

    AHIMA practice brief, 1997

    No source given

    Paid · AHIMA

    An unsourced statement, nearly thirty years old

  • Identity

    Basic algorithms find “10 to 40 percent” of duplicates

    AHIMA practice brief, 2014

    No source given

    Paid · AHIMA

    Unsourced

  • Terminology

    “6% to 19%” of lab tests cannot be mapped to LOINC

    Khan et al., JAMIA, 2006

    Five Indian Health Service facilities

    Paid · —

    Real, about five facilities in 2006; repeated in 2026 as “studies show”

  • Terminology

    “An inconsistency rate of over 15%” in LOINC mappings

    Park et al., J Korean Med Sci, 2025

    Research-use codes at seven Korean university hospitals

    Paid · —

    Real, about research codes in Korea; usually quoted without saying so

The originals, read: ONC’s 2014 report, RAND’s 2008 report, Just et al. 2016, Black Book’s 2018 release (archived copy), ECRI’s 2016 summary, AHIMA’s 1997 and 2014 briefs, Khan et al. 2006 and Park et al. 2025. A secondary citation is never treated as an origin.

Twelve figures followed back to their origins. A secondary citation is never treated as an origin.

So the honest evaluation is local. For terminology, run the operations your pipelines call against your own value sets at pinned releases, and compare them release to release. For identity, have two people review a sample of your own candidate pairs, with a third settling disagreements, and include pairs the system did not link, because those are where missed links hide. Measure precision and recall at several thresholds and cost the queue at your own minutes per pair. In the Indiana evaluation the two reviewers agreed on 96.1% of pairs inside the blocking schemes and 86.8% outside them, so the review needs its tie-breaker.

Testing a terminology service and an identity service on your own dataTerminology, five steps: list the operations your pipelines call and the value sets each uses; pin the code system release every call runs under; run each value set under the release you use and the next; compare the expansions; record which release each published number used. Identity, five steps: draw a sample of candidate pairs including pairs the system did not link; have two people review each pair and a third settle disagreements; compute precision and recall at several thresholds; cost the review band at your own minutes per pair; repeat after any change.TERMINOLOGY1List the operations your pipelines call, andthe value sets each one uses.2Pin the release: the code system versionevery call runs under.3Run each value set under the release you useand the next one.4Compare the expansions: what left, whatarrived, what was inactivated.5Record which release each published numberwas computed under.PATIENT IDENTITY1Draw a sample of candidate pairs, includingpairs the system did not link.2Have two people review each pair, and athird settle disagreements.3Compute precision and recall at severalthreshold settings.4Cost the review band in hours, at your ownminutes per pair.5Repeat after any change to fields,thresholds or the population.
The test for both services, from the record linkage evaluation literature and the specifications.

Platform governance and the RECORD statement

Both services are governed as releases. A value set’s content, a map, the adoption of a new release, each threshold, a merge and an unmerge are decisions with an owner, a date and a record. For a VSAC value set the owner is its steward. For thresholds, AHIMA puts the decision with information governance, and no instrument found sets them. For the rest the owner is the organisation, and what matters is that someone is named.

Who owns each decision, and what is recorded

The decisions that move a number, in both services. A role is named only where a source names one; otherwise it is the organisation’s. The last column is what lets a published number say what it was computed under.

  • Terminology

    What a value set contains

    Who decides · The organisation. For a VSAC value set, its steward, who reviews, approves, publishes and maintains it

    Released · As a versioned value set with a canonical URL

    Recorded · Its version, and the release each expansion ran under

  • Terminology

    A map from a local code

    Who decides · The organisation; for LOINC, local codes carry an X and new terms go to Regenstrief

    Released · As a reviewed ConceptMap row, not a spreadsheet cell

    Recorded · Relationship, author, date, status, review, and the target release

  • Terminology

    Adopting a new release

    Who decides · The organisation

    Released · On a date, after the value sets it changes have been compared

    Recorded · Which release every published number was computed under

  • Identity

    The two match thresholds

    Who decides · The organisation’s information governance, in AHIMA’s words; no standard sets them

    Released · As a configuration change, with its expected effect on the queue

    Recorded · The thresholds in force when each link was made

  • Identity

    A merge

    Who decides · The organisation, often after review by health information management

    Released · To every downstream system: HL7 v2 A40, IHE PMIR, Patient.link replaced-by

    Recorded · Which record replaced which, when, and on whose decision

  • Identity

    An unmerge

    Who decides · The organisation

    Released · The same paths, in reverse; v2 has its own unlink event

    Recorded · What was undone, and which numbers computed in between are affected

AHIMA 2014 on thresholds and governance; VSAC on stewards; Regenstrief’s LOINC licence on local codes; FHIR Patient.link and R5 $merge; HL7 v2 events; IHE PMIR. No standard sets the thresholds or the release a number uses.

Each decision, who makes it where a source names a role, and what is recorded.

The test of governance is whether a published number can say what it was computed under: which release each value set was expanded in, which version of each map, which thresholds were in force when its links were made. A number that cannot say that is a number nobody can reproduce.

Researchers meet the same requirement from the other side. The RECORD statement, a reporting guideline for studies that use routinely collected health data, asks authors to say whether databases were linked, to list the codes and algorithms that select the population and define its variables, and to describe “the methods of linkage and methods of linkage quality evaluation”. RECORD is a guideline for authors and grades nothing. It is, in effect, a list of what an analyst has to be able to get from the platform.

What an analyst needs from the platform for RECORD

Ten RECORD items that touch codes or linkage, each with what the platform has to hand over so it can be answered. Tick the ones your study reports; the list below becomes the request. RECORD is a reporting guideline: there is no score.

0 of 10 items in the request

Nothing ticked yet. The request lists what to ask for, item by item.

Benchimol EI et al., “The REporting of studies Conducted using Observational Routinely-collected health Data (RECORD) Statement”, PLoS Med 2015;12(10):e1001885. The items are paraphrased; the request column is DEXPRA’s reading of what each needs.

Ten RECORD items that touch codes or linkage. Ticking them builds the request; there is no score.

What governs each part of the two services is uneven. The core terminology operations are normative in FHIR R4; maps, closure and the identity operations are trial use; IHE’s identity profiles are trial implementations; and the FAST guide, a standard for trial use, leaves the matching method out of scope. Where the two thresholds sit, which release a value set was expanded under and who approved a map are set by nothing outside the organisation.

What governs each part of the terminology and identity servicesTerminology: Code systems, value sets, FHIR R4 CodeSystem, ValueSet, Normative (R4); Core operations, $lookup, $validate-code, $expand, $subsumes, Normative (R4); Maps, ConceptMap and $translate, Trial use (Maturity 3; $translate 1 in R5); Closure and matching, $closure, $find-matches, Trial use (Maturity 3 and 0); SNOMED CT queries, Expression Constraint Language, Published specification (ECL v2.3, SNOMED International); Server conformance, HL7 terminology ecosystem and its tests, Informative (v1.9.6); US bindings, US Core 9.0.0, Trial use (STU 9, 31 May 2026); Canadian bindings, PS-CA 2.3.0, CA Core+ 1.2.1, Draft or ballot (Ballot and draft); Which release a number used, Release adoption, map approval, Nothing sets it (The organisation decides). Patient identity: Matching request, Patient/$match, Trial use (Maturity 5; sets no algorithm); Answer grades, match-grade extension, Draft or ballot (Maturity 1, status draft); Merge, in FHIR, R5 Patient/$merge, Trial use (Maturity 0); Merge, in HL7 v2, A40, with A24 link and A37 unlink, Active (Active events); Cross-reference and feeds, IHE PIXm, PDQm, PMIR, Trial use (Trial Implementation); US identity guide, FAST identity and matching guide, Trial use (STU 2; matching method out of scope); US network rules, TEFCA QHIN Technical Framework, Published specification (v2.0; “algorithms vary”); Where the thresholds sit, Thresholds, queue staffing, Nothing sets it (No instrument found sets them).TERMINOLOGYSTATUSCode systems, value setsFHIR R4 CodeSystem, ValueSetR4NORMATIVECore operations$lookup, $validate-code, $expand, $subsumesR4NORMATIVEMapsConceptMap and $translateMaturity 3; $translate 1 in R5TRIAL USEClosure and matching$closure, $find-matchesMaturity 3 and 0TRIAL USESNOMED CT queriesExpression Constraint LanguageECL v2.3, SNOMED InternationalPUBLISHED SPECIFICATIONServer conformanceHL7 terminology ecosystem and its testsv1.9.6INFORMATIVEUS bindingsUS Core 9.0.0STU 9, 31 May 2026TRIAL USECanadian bindingsPS-CA 2.3.0, CA Core+ 1.2.1Ballot and draftDRAFT OR BALLOTWhich release a number usedRelease adoption, map approvalThe organisation decidesNOTHING SETS ITPATIENT IDENTITYSTATUSMatching requestPatient/$matchMaturity 5; sets no algorithmTRIAL USEAnswer gradesmatch-grade extensionMaturity 1, status draftDRAFT OR BALLOTMerge, in FHIRR5 Patient/$mergeMaturity 0TRIAL USEMerge, in HL7 v2A40, with A24 link and A37 unlinkActive eventsACTIVECross-reference and feedsIHE PIXm, PDQm, PMIRTrial ImplementationTRIAL USEUS identity guideFAST identity and matching guideSTU 2; matching method out of scopeTRIAL USEUS network rulesTEFCA QHIN Technical Frameworkv2.0; “algorithms vary”PUBLISHED SPECIFICATIONWhere the thresholds sitThresholds, queue staffingNo instrument found sets themNOTHING SETS IT
What governs each part of both services, with its status in words. Read at each body on 17 October 2026.

That is where a platform’s own decisions go, and the case for owning them. Both services are built from settled parts. The decisions that move a published number are local, and the only evidence that they were made well is measured on the organisation’s own data and written down beside the number.

Working on one of these problems?

Tell us what you’re working on in interoperability, data platforms, or clinical AI, and we’ll tell you what we think.

Get in touch