-
Notifications
You must be signed in to change notification settings - Fork 14
NamingSystem Examples
ℹ️ For concepts, the Philippine NamingSystem registry, and the Patient identity use case, see NamingSystem in PH Core. This page has the diagrams.
FHIR relies heavily on globally unique system identifiers (URIs) to distinguish business identifiers (e.g. MRN, PhilHealth PIN, PhilSys ID) from terminology systems (e.g. SNOMED CT, LOINC). A URI alone is not self-describing — the NamingSystem resource is the governed metadata layer that says what a URI actually means.
The critical join between any FHIR instance and the NamingSystem registry:
Identifier.system == NamingSystem.uniqueId.value
flowchart LR
A["Coding
system = http://snomed.info/sct
code = 22298006"]
B[NamingSystem: SNOMED CT]
C["URI:
http://snomed.info/sct"]
A --> B
B --> C
flowchart LR
A["Patient.identifier
system = http://philhealth.gov.ph/fhir/Identifier/philhealth-id
value = 12-345678901-2"]
B["NamingSystem: PhilHealthID
publisher = PhilHealth
kind = identifier"]
C["URI:
http://philhealth.gov.ph/fhir/Identifier/philhealth-id"]
A --> B
B --> C
flowchart LR
A["Patient.identifier
system = http://philsys.gov.ph/fhir/Identifier/philsys-id
value = 1234-5678-9101-1213"]
B["NamingSystem: PhilSysID
publisher = PSA
kind = identifier"]
C["URI:
http://philsys.gov.ph/fhir/Identifier/philsys-id"]
A --> B
B --> C
A single Patient resource can carry identifiers from multiple agencies simultaneously. All are valid under the open-sliced PHCorePatient profile.
flowchart LR
P["Patient
(FHIR instance)"]
P -->|identifier[0]| A["Patient.identifier
system = .../philsys-id
value = 1234-5678-9101-1213"]
P -->|identifier[1]| B["Patient.identifier
system = .../philhealth-id
value = 12-345678901-2"]
P -->|identifier[2]| C["Patient.identifier
system = .../hospital-mrn
value = MRN-00001"]
A --> NS1["NamingSystem: PhilSysID
publisher = PSA"]
B --> NS2["NamingSystem: PhilHealthID
publisher = PhilHealth"]
C --> NS3["open slice
no NamingSystem required
(can be added later)"]
A NamingSystem can record multiple representations of the same identifier system — useful for legacy integration and HL7 v2 ↔ FHIR transformation.
flowchart LR
A["Patient Identifier
system = http://hospital.example.org/mrn
value = 123456"]
B[NamingSystem: Hospital MRN]
C["URI:
http://hospital.example.org/mrn"]
D["OID:
1.2.36.146.595.217.0.1"]
A --> B
B --> C
B --> D
classDiagram
class Identifier {
system : uri
value : string
}
class Coding {
system : uri
code : string
}
class NamingSystem {
url : uri
name : string
kind : code
}
class NamingSystemUniqueId {
type : code
value : string
preferred : boolean
}
Identifier --> NamingSystem : resolves system
Coding --> NamingSystem : resolves system
NamingSystem --> NamingSystemUniqueId