An example use case for the `NamingSystem` resource - UP-Manila-SILab/ph-core GitHub Wiki
Use Case: Managing and Resolving Various Identifiers for a National Patient Identifier System
Scenario:
A country, let's call it "Nationia," has a national system for uniquely identifying its citizens for healthcare purposes. Over time, this system might have evolved, or different regions/systems within Nationia might refer to this national patient identifier using different formats or under different names.
For instance:
-
The official canonical URI:
urn:oid:1.2.3.4.5.6
(an OID assigned to Nationia's national patient ID system). -
A preferred friendly URL:
http://ns.nationia.gov/identifiers/national-patient-id
-
An older, legacy system identifier:
NPIA
(Nationia Patient Identifier Authority) -
A specific format used by a major hospital network:
NNPID-<number>
where the prefixNNPID
is known to refer to the national ID.
Problem:
Different healthcare applications and systems interacting with FHIR need a consistent way to:
- Know that all these different identifier "systems" or "namespaces" actually refer to the same underlying concept of Nationia's National Patient Identifier.
- Understand which identifier is the preferred or official one.
- Be able to look up or validate an identifier regardless of which specific system URI or name they encounter.
Solution using NamingSystem
:
A NamingSystem
resource would be created to describe Nationia's national patient identifier system.
{
"resourceType": "NamingSystem",
"id": "nationia-national-patient-id",
"name": "Nationia National Patient Identifier System",
"status": "active",
"kind": "identifier", // This NamingSystem describes an identifier system
"date": "2024-05-30",
"publisher": "Nationia Ministry of Health",
"responsible": "Nationia National Health Identifier Agency",
"description": "Defines the various ways Nationia's National Patient Identifier can be referenced. The OID is the primary uniqueId.",
"usage": "Used to identify patients uniquely across all healthcare services in Nationia.",
"uniqueId": [
{
"type": "oid", // Object Identifier
"value": "urn:oid:1.2.3.4.5.6",
"preferred": true, // This is the preferred, canonical identifier for the system
"comment": "Official OID for the National Patient ID"
},
{
"type": "uri", // Uniform Resource Identifier
"value": "http://ns.nationia.gov/identifiers/national-patient-id",
"preferred": false,
"period": {
"start": "2020-01-01" // When this URI became valid
}
},
{
"type": "other", // A non-standard type
"value": "NPIA",
"preferred": false,
"comment": "Legacy system identifier, being phased out"
},
{
"type": "other",
"value": "NNPID", // This is more of a prefix/namespace within some systems
"preferred": false,
"comment": "Prefix used by the National Hospital Network. Actual identifiers are NNPID-<number>"
}
]
}
How this NamingSystem
is used:
-
Declaration of Equivalence: This resource declares that
urn:oid:1.2.3.4.5.6
,http://ns.nationia.gov/identifiers/national-patient-id
,NPIA
, and identifiers starting withNNPID
all refer to the same conceptual identifier system for national patient IDs in Nationia. -
Identifier Resolution:
- An application receiving a
Patient.identifier
withsystem
ashttp://ns.nationia.gov/identifiers/national-patient-id
can look up thisNamingSystem
(e.g., using the_lookup
operation or by queryingNamingSystem?value=http://ns.nationia.gov/identifiers/national-patient-id
) to discover the preferred/canonicalurn:oid:1.2.3.4.5.6
. This allows for normalization. - If a system knows the OID
urn:oid:1.2.3.4.5.6
, it can find thisNamingSystem
resource and see other ways this ID system might be represented.
- An application receiving a
-
System Registration: It acts as a central registry for how an identifier system is known. New systems integrating into Nationia's health ecosystem can consult this
NamingSystem
to understand how to handle national patient identifiers. -
Validation (Indirectly): While
NamingSystem
itself doesn't validate the value of an identifier (e.g., if12345
is a valid patient ID), it validates thaturn:oid:1.2.3.4.5.6
is a recognized system for patient identifiers. -
Clarity for
Identifier.system
: When populating theIdentifier.system
field in a resource likePatient
, applications know thaturn:oid:1.2.3.4.5.6
is the preferred URI to use for Nationia's national patient ID.
Why not just use the OID everywhere?
- Legacy systems: Older systems might use different identifiers.
- Human readability/usability: URLs or simpler names can be easier for humans to work with or configure in some systems.
-
Evolution: Systems evolve, and
NamingSystem
provides a way to manage these transitions by marking older identifiers as non-preferred or by adding new ones. - Specificity: Sometimes a system might have a specific format or context that needs to be acknowledged, even if it maps back to a canonical OID.
In summary, the NamingSystem
resource provides a way to define and manage the various unique identifiers (URIs, OIDs, etc.) that are used to refer to a specific concept, code system, identifier system, or value set, enabling interoperability and consistent interpretation across different systems. It's particularly useful for managing identifiers that have multiple representations or have evolved over time.