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:

  1. The official canonical URI: urn:oid:1.2.3.4.5.6 (an OID assigned to Nationia's national patient ID system).
  2. A preferred friendly URL: http://ns.nationia.gov/identifiers/national-patient-id
  3. An older, legacy system identifier: NPIA (Nationia Patient Identifier Authority)
  4. A specific format used by a major hospital network: NNPID-<number> where the prefix NNPID 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:

  1. 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 with NNPID all refer to the same conceptual identifier system for national patient IDs in Nationia.
  2. Identifier Resolution:
    • An application receiving a Patient.identifier with system as http://ns.nationia.gov/identifiers/national-patient-id can look up this NamingSystem (e.g., using the _lookup operation or by querying NamingSystem?value=http://ns.nationia.gov/identifiers/national-patient-id) to discover the preferred/canonical urn: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 this NamingSystem resource and see other ways this ID system might be represented.
  3. 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.
  4. Validation (Indirectly): While NamingSystem itself doesn't validate the value of an identifier (e.g., if 12345 is a valid patient ID), it validates that urn:oid:1.2.3.4.5.6 is a recognized system for patient identifiers.
  5. Clarity for Identifier.system: When populating the Identifier.system field in a resource like Patient, applications know that urn: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.

⚠️ **GitHub.com Fallback** ⚠️