NTE carries free text. It has no meaning on its own — it is always a child note attached to whatever segment precedes it. An NTE after OBX annotates that one observation; an NTE after OBR annotates the whole order; an NTE after PID is a comment about the patient. The same three bytes, NTE, show up throughout ADT, ORM, ORU, MDM, and most other message types. The text lives in NTE-3, which commonly repeats so that a multi-line comment can be sent one line per repetition. Because NTE inherits its scope from position alone, getting the segment order right matters more than for almost any other segment.
Purpose
NTE attaches human-readable notes and comments to a preceding segment without changing that segment's structured fields. It lets a sender add narrative — a lab tech's remark on a result, a clinician's instruction on an order, a free-text reason — that the coded fields cannot express. The note's subject is implied by what comes before it in the message.
Used in
NTE appears across ORU, ORM, ADT, MDM, SIU, and most other HL7 v2 message types. It is never a standalone segment: it is always positioned as a child note of a preceding segment. In results it most often follows OBX (per-observation comment) or OBR (per-order comment); in orders it follows ORC or OBR. See the messages index for where NTE groups appear in each structure.
Field-by-field reference
Source: official HL7 v2-to-FHIR IG. R = required (cardinality min ≥ 1); NTE has no required fields. Repeat = field may repeat. Length pending authoritative v2.5.1 data. Fields NTE-5 through NTE-9 were added in later versions (see version differences).
| Seq | Name | Data Type | Length | Req | Repeat | Table # | Description |
|---|---|---|---|---|---|---|---|
| NTE-1 | Set ID | SI | — | O | — | — | Sequence number when multiple NTE segments are sent under one parent (1, 2, 3...). |
| NTE-2 | Source of Comment | ID | — | O | — | HL70105 | Who originated the comment, e.g. L (ancillary/filler), P (placer/order), O (other). |
| NTE-3 | Comment | FT | — | O | Y | — | The free-text comment itself. Repeats — each repetition is conventionally one line of a multi-line note. |
| NTE-4 | Comment Type | CWE | — | O | — | HL70364 | Classifies the comment, e.g. PI (patient instructions), GI (general instructions), 1R (primary reason). |
| NTE-5 | Entered By | XCN | — | O | — | — | The person who entered the comment. Added in v2.7. |
| NTE-6 | Entered Date/Time | DTM | — | O | — | — | When the comment was entered. Added in v2.7. |
| NTE-7 | Effective Start Date | DTM | — | O | — | — | When the comment becomes effective. Added in v2.7. |
| NTE-8 | Expiration Date | DTM | — | O | — | — | When the comment expires. Added in v2.7. |
| NTE-9 | Coded Comment | CWE | — | O | Y | — | A coded equivalent of the free-text comment. Added in v2.9. |
Most-used fields
NTE-3 Comment is the field that matters — it holds the actual text, and almost every NTE in the wild populates it and little else. It repeats: a multi-line comment is typically sent as one repetition per line (line one~line two~line three), though some senders instead emit several consecutive NTE segments. A receiver must handle both shapes.
NTE-2 Source of Comment (HL70105) records who wrote the note — L for the filler/ancillary system, P for the placer, O for other. NTE-4 Comment Type (HL70364) classifies it (patient instructions, general instructions, primary reason). Both are widely supported but frequently left empty.
NTE-1 Set ID orders multiple NTE segments under the same parent. It is informational; the segment's position, not its set id, determines what the note is about.
Version differences (2.3 to 2.8.2)
- 2.3 / 2.4: NTE has three working fields — NTE-1 Set ID, NTE-2 Source of Comment, NTE-3 Comment. This is the shape most legacy interfaces send.
- 2.5 / 2.5.1: NTE-4 Comment Type (HL70364) is in active use; the segment is still effectively four fields.
- 2.7: author and timestamp fields added — NTE-5 Entered By, NTE-6 Entered Date/Time, NTE-7 Effective Start Date, NTE-8 Expiration Date.
- 2.9: NTE-9 Coded Comment added. Receivers built for 2.3 simply ignore trailing fields they don't recognize.
Common mistakes
- Treating NTE as standalone. It has no meaning without the segment in front of it; moving or reordering it silently re-points the note at the wrong subject.
- Dropping NTE-3 repetitions. Reading only the first repetition truncates multi-line comments.
- Confusing the two multi-line shapes — repetitions within one NTE (
~) versus several consecutive NTE segments — and merging them incorrectly. - Putting an NTE after the wrong OBX, so a comment about one result lands on another.
- Not escaping
|,^,~,&, or `` that appears literally inside free-text NTE-3.
Examples
Minimal NTE (comment text only):
NTE|1||Specimen slightly hemolyzed.
Fully-populated NTE:
NTE|1|L|Specimen slightly hemolyzed.~Recollect if clinically indicated.|RE^Remark^HL70364|9988^Carter^Sarah^^^^^^HOSP^^^^XX|20260609131500
Annotated breakdown of the fully-populated example:
NTE ← segment ID
1 ← NTE-1 Set ID
L ← NTE-2 Source of Comment (filler/ancillary)
Specimen slightly...~Reco... ← NTE-3 Comment (two repetitions = two lines)
RE^Remark^HL70364 ← NTE-4 Comment Type
9988^Carter^Sarah^... ← NTE-5 Entered By (v2.7+)
20260609131500 ← NTE-6 Entered Date/Time (v2.7+)
In-context after OBX inside an ORU^R01 (result) — the note annotates that one observation:
MSH|^~&|LAB|HOSP_B|EHR|HOSP_A|20260609131500||ORU^R01^ORU_R01|CTRL-9931|P|2.5.1
PID|1||123456^^^HOSP^MR||DOE^JOHN^A||19800101|M
OBR|1||ORD123|CBC^Complete Blood Count^L
OBX|1|NM|718-7^Hemoglobin^LN||13.5|g/dL|13.0-17.0|N|||F
NTE|1|L|Result reviewed; within reference range.
In-context after OBR/ORC inside an ORM^O01 (order) — the note annotates the whole order:
MSH|^~&|EHR|HOSP_A|LAB|HOSP_B|20260609120000||ORM^O01^ORM_O01|MSG00042|P|2.5.1
PID|1||123456^^^HOSP^MR||DOE^JOHN^A||19800101|M
ORC|NW|ORD123|||||^^^20260609
NTE|1|P|Patient fasting since midnight.
OBR|1|ORD123||CBC^Complete Blood Count^L
NTE|1|P|Draw from left arm only.
FHIR mapping
The IG has no single map for NTE; it maps per parent context, always to a FHIR Annotation carried on the resource that the preceding segment produced. NTE after OBX maps onto Observation.note; NTE under an order maps onto ServiceRequest.note; NTE under a document maps onto DocumentReference. Official ConceptMaps: NTE to Observation (JSON), NTE to ServiceRequest, and NTE to DocumentReference. These maps are marked experimental / informative.
| NTE field | FHIR target |
|---|---|
| NTE-3 Comment | <parent>.note.text (markdown) |
| NTE-4 Comment Type | extension (note type, CodeableConcept) |
| NTE-5 Entered By | <parent>.note.authorReference (Practitioner) |
| NTE-6 Entered Date/Time | <parent>.note.time |
Not mapped in the published ConceptMaps: NTE-1 (Set ID), NTE-2 (Source of Comment), NTE-7 (Effective Start Date), NTE-8 (Expiration Date), NTE-9 (Coded Comment). <parent> is whichever resource the preceding segment was mapped to — Observation, ServiceRequest, DocumentReference, etc.
Engine considerations
- NTE attaches to whatever segment precedes it. The engine must track the current parent segment as it walks the message and bind each NTE to that parent — position is the only thing that tells you what the note is about.
- Handle both multi-line shapes: repetitions inside one NTE-3 (separated by the repetition character, default
~) and runs of consecutive NTE segments. Normalize to one logical note. - Preserve order. NTE-1 Set ID is advisory; rely on segment order to keep lines and notes in sequence.
- Escape handling: free text in NTE-3 routinely contains characters that collide with delimiters. Decode escape sequences (
F,S,R,T,E) on the way in and re-escape on the way out. - Failure mode: an NTE that drifts to the wrong parent (because an unexpected segment was skipped or reordered) silently mislabels a clinical note — a quiet, high-impact error.
How Vorro parses and produces NTE
Vorro binds each NTE to the segment it follows as it walks the message, so a note never floats free of its subject. On parse, Vorro collapses both multi-line shapes — repetitions within NTE-3 and consecutive NTE segments — into a single normalized note, decoding escape sequences as it goes. On the produce side, Vorro emits NTE immediately after the parent segment, sets NTE-1 in sequence, re-escapes any delimiter characters in the text, and only populates NTE-5/NTE-6 when the target interface is configured for v2.7 or later.
Related pages
- OBX — the observation segment NTE most often annotates in results.
- OBR — the order/observation request that an order-level NTE follows.
- ORU messages — where NTE carries per-result and per-order comments.
