The NDL (Name with Date and Location) data type was introduced in HL7 v2.3 to carry the who, when, and where of a clinical event in a single field. Each NDL value names a person (CNN — Composite ID Number and Name Simplified, since v2.5), the start and end time of their involvement, and the physical location (point of care, room, bed, facility, building, floor) where the involvement happened. NDL is the type of OBR-32 Principal Result Interpreter, OBR-33 Assistant Result Interpreter, OBR-34 Technician, and OBR-35 Transcriptionist — the four result-attribution fields on every laboratory and diagnostic report.
Purpose
NDL exists because result attribution is not just about identity — receivers also want to know when the interpretation happened and at which workstation, room, or bench. A pathologist who signs a report at 09:15 from microscope bench 3W-301 is a different audit signal than the same pathologist signing it at 22:30 from home. NDL carries the person reference (NDL.1, a CNN) together with NDL.2 / NDL.3 effective period and NDL.4–NDL.11 location, all in one field. It replaces what would otherwise be three separate fields (XCN for the person, DR for the date range, PL for the location) when those three are always co-reported.
Components
Source: HAPI HL7v2 v2.8.1 javadoc (NDL). Length is not published in v2.8.1 javadocs (—).
| Comp | Name | Sub-type | Length | Req | Description |
|---|---|---|---|---|---|
| NDL.1 | Name | cnn | — | O | The person — practitioner, technician, transcriptionist. Sub-typed as CNN, so it carries an 11-component ID + name + flattened assigning authority. |
| NDL.2 | Start Date/Time | dtm | — | O | When the person's involvement began. Was TS in v2.4; retyped to DTM in v2.5+. |
| NDL.3 | End Date/Time | dtm | — | O | When the person's involvement ended. Was TS in v2.4; retyped to DTM in v2.5+. |
| NDL.4 | Point of Care | is | — | O | HL70302 point-of-care code (nursing unit, clinic, reading room). |
| NDL.5 | Room | is | — | O | HL70303 room code. |
| NDL.6 | Bed | is | — | O | HL70304 bed code. |
| NDL.7 | Facility | hd | — | O | Facility (namespace + universal ID + ID type). |
| NDL.8 | Location Status | is | — | O | HL70306 status of the location (active, contaminated, housekeeping). |
| NDL.9 | Patient Location Type | is | — | O | HL70305 type of location (clinic, ward, OR, ED). |
| NDL.10 | Building | is | — | O | HL70307 building code. |
| NDL.11 | Floor | is | — | O | HL70308 floor code. |
Most-used components
- NDL.1 Name — the person's CNN; nearly always populated because attribution requires identity.
- NDL.2 Start Date/Time — the signing/interpretation timestamp; populated on every result.
- NDL.3 End Date/Time — the end of involvement; often equal to NDL.2 for instantaneous events like a signature.
- NDL.4 Point of Care + NDL.5 Room — the workstation pair; common in radiology reading-room workflows.
- NDL.7 Facility — the facility, populated when a multi-facility network needs to disambiguate.
Where it's used
- OBR-32 Principal Result Interpreter — the pathologist or radiologist who signed the result. Retyped from XCN to NDL in v2.5+.
- OBR-33 Assistant Result Interpreter — co-signer or resident.
- OBR-34 Technician — the tech who acquired or processed the specimen/image.
- OBR-35 Transcriptionist — the transcriptionist who typed the dictated narrative.
All four repeat (~) so multiple interpreters or technicians can be attributed.
Version differences
- v2.3 — NDL introduced with NDL.1 typed as CN (the predecessor of CNN). NDL.2 and NDL.3 typed as TS.
- v2.4 — NDL.1 retyped to CNN (introduced in v2.4).
- v2.5 — NDL.2 and NDL.3 retyped from TS to DTM as part of the v2.5 deprecation of TS. OBR-32 through OBR-35 retyped from XCN to NDL in the OBR segment definition.
- v2.6 / v2.7 — No structural changes to NDL itself; CNN sub-components evolve independently.
- v2.8 / v2.8.1 — No structural changes; HAPI v2.8.1 javadoc shows the same 11 components.
Common mistakes
- Treating NDL.1 as XCN. NDL.1 is CNN, which has a flattened assigning authority —
&does not nest inside CNN. Engines that emit an XCN structure into NDL.1 corrupt the sub-component delimiter. - Sending NDL.2/NDL.3 as TS on v2.5+ destinations. The datatype is DTM; a TS-style precision suffix is invalid.
- Confusing NDL.4 Point of Care with NDL.9 Patient Location Type. NDL.4 is the specific point of care (3W, MICU-A); NDL.9 is the category (ward, OR, ED).
- Repeating the same person across OBR-32 and OBR-33 to "be safe." OBR-33 is the assistant; populating it with the principal interpreter double-counts the signature.
- Omitting NDL.7 Facility on multi-site networks. Without the facility, an HL70302 point-of-care code like
3Wmay collide with another site's3W.
Examples
Minimal value (just the person)
99812^SMITH^JANE
Person + time window
99812^SMITH^JANE^L^MD^DR^MD^L^MERCY^2.16.840.1.113883.19.5^ISO^20260610091500-0500^20260610105000-0500
Fully populated value
99812^SMITH^JANE^L^MD^DR^MD^L^MERCY^2.16.840.1.113883.19.5^ISO^20260610091500-0500^20260610105000-0500^3W^301^A^MERCY
Verify positions:
99812 NDL.1.1 CNN.1 ID Number
^SMITH NDL.1.2 CNN.2 Family Name
^JANE NDL.1.3 CNN.3 Given Name
^L NDL.1.4 CNN.4 Second Given
^MD NDL.1.5 CNN.5 Suffix
^DR NDL.1.6 CNN.6 Prefix
^MD NDL.1.7 CNN.7 Degree
^L NDL.1.8 CNN.8 Source Table
^MERCY NDL.1.9 CNN.9 Assigning Authority Namespace ID
^2.16.840.1.113883.19.5 NDL.1.10 CNN.10 Universal ID
^ISO NDL.1.11 CNN.11 Universal ID Type
^20260610091500-0500 NDL.2 Start Date/Time (DTM)
^20260610105000-0500 NDL.3 End Date/Time (DTM)
^3W NDL.4 Point of Care
^301 NDL.5 Room
^A NDL.6 Bed
^MERCY NDL.7 Facility (HD)
Note: NDL.1 holds the entire 11-component CNN. CNN's components live inside NDL.1 — at the field level they are still separated by ^ because NDL.1 is the first NDL component. The trailing NDL.2 onward continue at the same ^ level.
In-context excerpt — OBR-32 Principal Result Interpreter
OBR|1|ORD-7742|ACC-9921|11218-5^Microbiology studies^LN||20260610090000|||||||||||||||||||||||||||||99812^SMITH^JANE^L^MD^DR^MD^L^MERCY^2.16.840.1.113883.19.5^ISO^20260610091500-0500^20260610105000-0500^3W^301^A^MERCY
Multiple interpreters in OBR-32
99812^SMITH^JANE^L^MD^DR^MD^L^MERCY^2.16.840.1.113883.19.5^ISO^20260610091500-0500^20260610105000-0500^3W^301^A^MERCY~99834^OKONKWO^ADAEZE^N^MD^DR^MD^L^MERCY^2.16.840.1.113883.19.5^ISO^20260610103000-0500^20260610105000-0500^3W^301^A^MERCY
Two NDLs separated by ~, one per co-signer.
Common pitfall snippet
99812&SMITH&JANE^20260610091500-0500
The sender used & to separate the CNN parts inside NDL.1 — mistaking CNN for an HD-like sub-composite. The correct delimiter inside CNN is ^, which is also the NDL component delimiter; CNN expands the NDL field rather than nesting inside a single component.
FHIR mapping
The v2-to-FHIR IG publishes NDL → PractitionerRole. The Name component maps to the referenced Practitioner; date/time and location map to the period and location of the PractitionerRole.
| NDL | FHIR (PractitionerRole) |
|---|---|
| NDL.1 | practitioner (reference to a Practitioner built from the CNN) |
| NDL.2 | period.start |
| NDL.3 | period.end |
| NDL.4 | location.identifier (point of care) |
| NDL.5 / NDL.6 | location.identifier (room, bed — sub-locations) |
| NDL.7 | organization (facility) |
| NDL.8 | location.status (mapped via the location resource) |
| NDL.9 | location.type |
| NDL.10 / NDL.11 | location.physicalType extensions for building and floor |
Engine considerations
- CNN expands into NDL.1's position: Because CNN has no sub-component delimiter, its 11 components sit at the NDL component level — they consume NDL.1.1 through NDL.1.11 positionally, then NDL.2 begins. Engines that compile NDL as 11 first-level slots must remember that NDL.1 itself contains an 11-deep CNN.
- DTM vs TS in NDL.2 / NDL.3: A v2.5+ pipeline that receives a TS-formatted timestamp into NDL.2 must coerce it to DTM, dropping or normalizing the precision suffix.
- Date/time + location pair semantics: The location fields are interpreted relative to NDL.2 / NDL.3 — they describe where the person was during that time window, not where they are now. An engine that captures only the location and discards the period loses the audit signal.
- NDL.7 Facility is HD: Unlike CNN's flattened authority, NDL.7 is a true HD with
&-separated sub-components. The two coexist inside one NDL field, so the engine has to switch encoding rules between NDL.1 (no&) and NDL.7 (uses&). - Repetition: All four OBR fields that carry NDL repeat. An engine that flattens repeating NDLs into a single value loses assistant interpreters.
How Vorro parses and produces NDL
On inbound, Vorro decomposes NDL into a PractitionerRole reference: the embedded CNN becomes a Practitioner (using the CNN-to-Practitioner pipeline), NDL.2 and NDL.3 become a Period, and NDL.4 through NDL.11 collapse into a Location with physicalType for building/floor. The facility (NDL.7) becomes the organization reference on the PractitionerRole.
On outbound, Vorro reassembles NDL by serializing the CNN into NDL.1's 11 positional slots, emitting NDL.2 / NDL.3 in DTM form with the source timezone, and resolving the FHIR Location back into NDL.4 / NDL.5 / NDL.6 / NDL.10 / NDL.11. We always emit NDL.2 when we have any timestamp signal — even if NDL.3 is empty — so downstream auditing has at least the start time.
Related pages
- CNN data type — Composite ID Number and Name Simplified
- XCN data type — Extended Composite ID Number and Name for Persons
- OBR segment — Observation Request
