HL70301 declares the namespace scheme that a v2 universal identifier inhabits. It sits in HD.3 Universal ID Type and tells a receiver how to parse and interpret HD.2 Universal ID — as an ISO OID, a DCE UUID, a DNS name, a URI, or one of the other registered scheme types. Because the HD data type is reused across CX.4.3, EI.4, MSH-3.3, MSH-4.3, and many more, HL70301 is the table that ultimately determines whether a downstream FHIR translator emits urn:oid:..., urn:uuid:..., or a plain URI.
Purpose
A universal identifier is only universal if its namespace is known. The string 2.16.840.1.113883.4.6 is an ISO OID, 550e8400-e29b-41d4-a716-446655440000 is a UUID, and example.org is a DNS name — but a receiver that does not know the namespace type cannot tell them apart programmatically. HL70301 supplies that label so the receiver can route the value to the correct parser and convert it to the right FHIR system URI.
Where it's used
- HD.3 Universal ID Type — every HD composite, which means MSH-3.3, MSH-4.3, MSH-5.3, MSH-6.3, EVN-7.3, PID-3.4.3, ORC-12.9.3, and many more.
- CX.4.3 Assigning Authority Universal ID Type — type of the namespace used by the assigning authority for a patient or person identifier.
- EI.4 Universal ID Type — type of the universal ID on Entity Identifier composites (filler/placer order numbers, MSA-2 message control IDs in some profiles).
Code list
| Code | Display | Comment/Description |
|---|---|---|
| DNS | Internet dotted name | IPv4-style dotted-quad or fully-qualified DNS name. Used when the namespace is identified by a DNS-resolvable host. |
| EUI64 | IEEE 64-bit Extended Unique Identifier | 64-bit hardware/device identifier; common in device messaging. |
| GUID | Globally Unique Identifier | Synonym for UUID; retained for compatibility with Microsoft tooling. Treat identically to UUID. |
| HCD | CEN Healthcare Coding Scheme Designator | European CEN healthcare-coding-scheme designator. |
| HL7 | Reserved for HL7 registration schemes | HL7-registered scheme; the universal ID is interpreted against the HL7 OID registry. |
| ISO | ISO Object Identifier (OID) | An ISO/ITU OID dotted-decimal string. The most common HL70301 value in healthcare messaging. |
| L | First locally defined coding entity identifier | Site-local namespace, primary. |
| L,M,N | Locally defined coding entity identifiers | The L/M/N triplet of site-local namespaces (primary, secondary, tertiary). Use exactly the letter — L, M, or N — in HD.3. |
| Random | Randomly generated identifier | E.g., MD5/SHA-style random identifiers. Use when the namespace itself is a random string with no registered authority. |
| URI | Uniform Resource Identifier | The universal ID is a complete URI (URN or URL). |
| UUID | DCE Universal Unique Identifier | RFC 4122 UUID (8-4-4-4-12 hex form). |
| x400 | X.400 MHS format identifier | Legacy X.400 email/messaging format. Rare in modern interfaces. |
| x500 | X.500 directory name | Legacy X.500 distinguished-name format. Rare in modern interfaces. |
Code system OID
- OID:
2.16.840.1.113883.18.190 - Canonical URI:
http://terminology.hl7.org/CodeSystem/v2-0301
This OID is emitted alongside HD.3 in profiles that demand fully OID-bound coded values; most channels keep HD.3 as a simple ID-typed code.
HL7-defined vs user-defined
HL70301 is HL7-defined and normative. The values above are the complete set. Sites must not invent new scheme identifiers — if a namespace cannot be expressed as one of these schemes, the correct path is to obtain an OID (ISO) or use a URI.
The L, M, and N codes provide three slots for purely site-local namespaces that the site does not wish to publish to a global registry; this is the legitimate path for proprietary internal namespaces.
Version differences
- v2.3 — Initial set: ISO, UUID, GUID, HL7, L, M, N, x400, x500, DNS, URI.
- v2.5 —
Randomadded for the MD5-style ad-hoc identifier case. - v2.6 —
EUI64added for device messaging. - v2.7 —
HCDadded for CEN scheme designators. - v2.8 – v2.8.1 — Set frozen at 13 codes (counting the L/M/N triplet as three separate codes).
Common mistakes
- Sending
OIDinstead ofISOin HD.3. The literal HL70301 code for an OID isISO, notOID. - Populating HD.2 with an OID and HD.3 with
UUID(or vice versa). The combination is undefined; receivers will either reject the message or guess wrong. - Using
GUIDfor non-UUID Microsoft-flavored identifiers.GUIDin HL70301 specifically means an RFC-4122-compatible UUID rendered in the standard hex form; vendor-specific GUID variants do not qualify. - Sending
Lin HD.3 without coordinating with the receiver on what the local namespace means.Lis opaque to anyone outside the site; downstream channels need an out-of-band agreement to interpret HD.2. - Forgetting that HD.1 (Namespace ID) is separate from HD.2/HD.3. A populated HD.1 with empty HD.2/HD.3 is a name-only identifier; HL70301 governs HD.2/HD.3 only.
Examples
An ISO OID in MSH-4 (sending facility):
MSH|^~&|EPIC|HOSPITAL^2.16.840.1.113883.19.5.99999.1^ISO|...|...|20260626120000||ADT^A01|MSGCTRL001|P|2.8.1
A UUID-namespaced assigning authority in PID-3:
PID|1||10456^^^EMPI^&550e8400-e29b-41d4-a716-446655440000&UUID^MR||DOE^JANE
A site-local namespace using L:
PID|1||A4567^^^LOCAL_MRN^^L^^^MR||DOE^JANE
A FHIR Identifier translation showing each HL70301 type emitted as the appropriate URI form:
{
"identifier": [
{
"system": "urn:oid:2.16.840.1.113883.19.5.99999.1",
"value": "10456",
"_comment": "HL70301 = ISO"
},
{
"system": "urn:uuid:550e8400-e29b-41d4-a716-446655440000",
"value": "10456",
"_comment": "HL70301 = UUID or GUID"
},
{
"system": "https://example.org/empi/patient",
"value": "10456",
"_comment": "HL70301 = URI"
}
]
}
FHIR mapping
FHIR Identifier.system is always a URI, so HL70301 drives the form that URI takes:
| HL7 v2 (HL70301) | FHIR Identifier.system form |
|---|---|
| ISO | urn:oid: + the OID from HD.2 |
| UUID, GUID | urn:uuid: + the UUID from HD.2 |
| URI | HD.2 verbatim |
| DNS | A URL derived from the DNS name (e.g., https://example.org/) by site convention |
| HL7 | The HL7 OID registry URI for the named scheme |
| L, M, N | A site-defined URI per locally-registered namespace |
| Random | urn: plus a site convention; no canonical mapping |
| x400, x500 | Legacy; usually carried as urn: with a custom NID |
| EUI64 | urn: + EUI-64 hex |
| HCD | Site- or registry-defined URI for the CEN scheme |
FHIR does not publish a direct ConceptMap for HL70301 because the table governs URI form rather than a coded value. The transformation is performed inline by the v2-to-FHIR mapper.
Engine considerations
- OID format validation — When HD.3 is
ISO, HD.2 must be a dotted-decimal OID (digits separated by dots, no leading zeros in arcs). Reject malformed OIDs on ingest. - UUID format validation — When HD.3 is
UUIDorGUID, HD.2 must be a 36-character hex-with-hyphens UUID. Normalize to lowercase before emittingurn:uuid:. - URI passthrough — When HD.3 is
URI, do not modify HD.2; emit it verbatim as Identifier.system. - L/M/N resolution — Maintain a per-channel mapping from L/M/N to the site's canonical FHIR system URI so local namespaces translate consistently across messages.
- Round-trip preservation — Store the original HL70301 code alongside the FHIR Identifier so the outbound v2 channel can restore HD.3 faithfully.
How Vorro handles HL70301
Vorro recognizes all HL70301 codes and applies the correct FHIR Identifier.system shape during v2-to-FHIR translation: ISO becomes urn:oid:, UUID/GUID become urn:uuid:, URI passes through unchanged, and L/M/N resolve against the channel-specific local-namespace registry. Malformed HD.2/HD.3 combinations are routed to the terminology curation queue so an operator can decide whether to coerce or reject.
On v2 outbound, Vorro reconstructs HD.2 and HD.3 from the FHIR Identifier.system URI: urn:oid: URIs emit ISO, urn:uuid: URIs emit UUID, and any other URI emits URI. The original HL70301 code is preferred when an inbound v2 message recorded it on the same identifier, ensuring loss-free round-tripping.
Related pages
- HD data type — Hierarchic Designator
- CX data type — Extended Composite ID with Check Digit
- EI data type — Entity Identifier
