NEWFree ROI Calculators — quantify what prior auth and siloed data are costing your organization.Prior Auth ROI Siloed Data ROI
HL7 v2Data Type5 min read

HL7 NR Data Type: Numeric Range

The NR (Numeric Range) data type was introduced in HL7 v2.3 as the minimal composite for "a numeric interval, both endpoints required" — a pure low/high pair with no comparator and no separator metadata. Where SN can also express comparators and ratios, NR is the right choice for fields that are always an interval, never a single value, never a ratio. The canonical example in HL7 v2.8.1 is BUI-11 Transport Temperature, where a blood unit's permitted transport temperature is naturally a low^high range.

Purpose

NR carries an inclusive low/high numeric interval. It is the simplest of the range-bearing data types in HL7 v2 — two numbers and nothing else. The semantics are "the valid or observed value lies in [low, high]". NR is meant for fields whose definition makes the range non-negotiable: a transport temperature window, a reference range with both bounds known, a tolerance band on a measurement.

Components

Source: HAPI HL7v2 v2.8.1 javadoc (NR).

CompNameSub-typeLengthRequiredDescription
NR.1Low ValuenmOLower bound of the interval (inclusive).
NR.2High ValuenmOUpper bound of the interval (inclusive).

In practice both components are required for the field to be meaningful; the standard marks them O at the datatype level because individual segment fields may further constrain conformance.

Most-used components

  • NR.1 Low Value — the low bound; populated in every meaningful NR instance.
  • NR.2 High Value — the high bound; required to make the range complete. Omitting it collapses NR back to a single-value form that the field's semantics do not support.

Where it's used

  • BUI-11 Transport Temperature — 1^6 for 1–6 °C, paired with BUI-12 Transport Temperature Units (Cel^degree Celsius^UCUM).
  • OBX-7 References Range — when the field uses NR rather than ST; carries the lab-defined normal interval for a quantitative observation.
  • Material-coverage fields in lab and supply-chain profiles where an acceptable storage range must be declared.
  • Custom OBX panels reporting tolerance intervals for QC results.
  • Reagent-stability fields in laboratory inventory messages bound to NR.
  • Profile-specific equipment-operating-range fields (centrifuge speed range, incubator temperature).
  • Master file (MFN) reference-data messages binding NR for normal/critical ranges.

Version differences

  • HL7 v2.3 — NR introduced with the two-component Low / High layout.
  • HL7 v2.4 through v2.8.1 — no structural changes; HAPI v2.8.1 javadoc shows the same two-component definition.
  • HL7 v2.8.2 — no structural changes; minor narrative clarifications only.

NR has been one of the most stable composite types in HL7 v2 — two NM-typed components since introduction.

Common mistakes

  • Sending a single value where the field requires a range (e.g. 4 in BUI-11) — the field is NR; one number cannot be parsed as low^high and downstream validators will reject or warn.
  • Omitting NR.2 — collapses NR to an open-ended interval that the standard does not define; receivers may treat it as missing or as the low bound only.
  • Swapping low and high (6^1 instead of 1^6) — most engines preserve order literally, breaking range-membership checks downstream.
  • Using NR where SN would be correct — if the field can also carry comparators or ratios, the schema typically binds SN, not NR; check OBX-2 and the field definition.
  • Locale-formatted decimals (1,5^6,2) — NM sub-components require . as the decimal mark, locale-independent.

Examples

Minimal NR (transport temperature 1–6 °C):

1^6

Multi-component value (sub-unit-precision range):

0.5^1.5

Fully populated edge case — wide reference range crossing zero:

-2.5^2.5

In context — BUI-11 Transport Temperature in a BPS^O29:

BUI|1|W123426789012^^^RedCrossBB^DIN|E0336^RBC LR^HL70435|312|g^gram^UCUM|285|mL^milliliter^UCUM|REF-4R5400|LOT-88241A|Acme BioContainers Inc.|1^6|Cel^degree Celsius^UCUM

In context — OBX-7 reference range using NR:

OBX|1|NM|GLUC^Glucose^L||95||mg/dL|70^110|N|||F|||20260610141500-0500

Common pitfall — single value sent into an NR field:

BUI|1|...|...|...|...|...|...|...|...|4|Cel^...^UCUM        <- WRONG; NR requires low^high
BUI|1|...|...|...|...|...|...|...|...|1^6|Cel^...^UCUM      <- CORRECT

FHIR mapping

The v2-to-FHIR Implementation Guide publishes a per-datatype ConceptMap for NR:

The mapping is direct:

  • NR.1 Low Value → Range.low.value
  • NR.2 High Value → Range.high.value

Units come from the surrounding field's unit slot (for example, BUI-12 Transport Temperature Units → Range.low.unit / Range.high.unit and Range.low.code / Range.high.code). Both Range.low.system and Range.high.system are set to UCUM when the source unit is UCUM-coded.

Engine considerations

  • Low/high invariant: many engines validate NR.1 <= NR.2 and reject violations; senders that produce descending ranges (high-to-low) for descending scales should configure the validator to warn rather than block.
  • Single-value fallback: when the upstream system only has a single value, do not silently duplicate it into both NR.1 and NR.2 — that produces a degenerate interval that is technically valid but semantically misleading.
  • Unit pairing: NR-typed fields are almost always paired with a separate units field (BUI-11 with BUI-12, OBX-7 with OBX-6). Engines must keep them in lock-step; dropping the unit field is a silent precision bug.
  • Locale-independent decimals: NR inherits NM's strict . decimal mark; format with Locale.ROOT.
  • Caret escaping: NR's low^high representation must not be confused with sub-component encoding by upstream renderers that aggressively escape ^.

How Vorro parses and produces NR

On inbound, Vorro parses NR into a typed {low: BigDecimal, high: BigDecimal} pair. The low/high invariant is checked at parse time; violations are downgraded to soft warnings (rather than rejecting the message) because some lab interfaces emit descending bounds for inverse scales. The associated unit field is bound to the parsed NR record so consumers receive {low, high, units} as a single object.

On outbound, Vorro renders NR by formatting both components with Locale.ROOT and the correct precision for the bound units. Single-value sources are flagged at the connector boundary so an operator can decide between widening to a configured tolerance or producing a NUL field, rather than emitting a degenerate x^x interval.

Sources

← Back to HL7 v2 Guide

Ready to Integrate This Into Your Workflow?

Talk to a Vorro expert about implementing HL7 v2 in your specific environment.

Browse HL7 v2 Guides
HL7 NR Data Type: Numeric Range | Vorro Academy | Vorro