The INV (Inventory Detail) segment describes a single inventoried substance — typically a reagent, calibrator, control, or other consumable used on an automated instrument or in a clinical laboratory. It carries the substance identifier and status, container and carrier position, several quantity views (initial, current, available, consumption), expiration and first-used timestamps, on-board stability, lot and manufacturer/supplier identifiers, and a target value with stability time.
Purpose
INV is the substance-aware counterpart to a generic stock-count message. It is designed so that an instrument or supply system can report a complete, point-in-time picture of one inventory item: identity, regulatory status, where it sits in the analyzer, how much is left, when it expires, what lot it belongs to, and who made and supplied it. Common uses:
- Automated analyzers reporting reagent inventory back to a LIS or middleware.
- Inventory update messages (INU^U05) that resynchronize the LIS view of an instrument's reagent bay.
- Supply-chain integrations that need both quantity and stability metadata to decide whether to replenish.
Used in
INV appears in inventory and supply update flows rather than in clinical orders:
- Inventory update (INU^U05) — the canonical home for INV, used to report or update the inventory state of one or more substances on an instrument.
- Automated equipment specimen status update (ESU^U01) and related lab automation messages that carry inventory snapshots alongside specimen state.
- Vendor- or middleware-specific supply update flows that embed INV inside a general order group; in those flows, ORM^O01 order detail can be reused as a transport, even though ORM is not the standard home for INV.
Field-by-field reference
The table below lists every INV field defined in HL7 v2.5.1, as published in the HAPI v2.5.1 javadoc. Data types link to their dedicated reference pages. Required (Req) values reflect HL7's optionality (R = required, O = optional). Repeat is Y where the javadoc shows the field as repeating, otherwise "—". Table # is shown only where a well-established HL7 user-defined or HL7-defined table applies.
| Seq | Name | Data Type | Length | Req | Repeat | Table # | Description |
|---|---|---|---|---|---|---|---|
| INV-1 | Substance Identifier | ce | — | R | — | — | Coded identifier of the inventoried substance |
| INV-2 | Substance Status | ce | — | O | Y | [HL70383] | Coded status of the substance |
| INV-3 | Substance Type | ce | — | O | — | [HL70384] | Coded type/category of the substance |
| INV-4 | Inventory Container Identifier | ce | — | O | — | — | Identifier of the container holding the substance |
| INV-5 | Container Carrier Identifier | ce | — | O | — | — | Identifier of the carrier holding the container |
| INV-6 | Position on Carrier | ce | — | O | — | — | Position of the container on its carrier |
| INV-7 | Initial Quantity | nm | — | O | — | — | Quantity present when the container was loaded |
| INV-8 | Current Quantity | nm | — | O | — | — | Quantity currently present in the container |
| INV-9 | Available Quantity | nm | — | O | — | — | Quantity available for use right now |
| INV-10 | Consumption Quantity | nm | — | O | — | — | Quantity consumed per use or per test |
| INV-11 | Quantity Units | ce | — | O | — | — | Unit of measure for the quantity fields |
| INV-12 | Expiration Date/Time | ts | — | O | — | — | Manufacturer's expiration date/time |
| INV-13 | First Used Date/Time | ts | — | O | — | — | Date/time the substance was first used |
| INV-14 | On Board Stability Duration | tq | — | O | — | — | Duration of stability while loaded on the instrument |
| INV-15 | Test/Fluid Identifier(s) | ce | — | O | Y | — | Tests or fluids associated with the substance |
| INV-16 | Manufacturer Lot Number | st | — | O | — | — | Manufacturer's lot number for the substance |
| INV-17 | Manufacturer Identifier | ce | — | O | — | — | Coded identifier of the manufacturer |
| INV-18 | Supplier Identifier | ce | — | O | — | — | Coded identifier of the supplier |
| INV-19 | On Board Stability Time | cq | — | O | — | — | Time-with-units form of on-board stability |
| INV-20 | Target Value | cq | — | O | — | — | Target quantity value with units for the substance |
Most-used fields
- INV-1 Substance Identifier — the only required field; without it the segment is meaningless.
- INV-2 Substance Status — drives the LIS view of whether the substance is OK, expired, depleted, or in error. Bound to HL7 table 0383.
- INV-3 Substance Type — distinguishes reagent vs calibrator vs control vs diluent. Bound to HL7 table 0384.
- INV-8 / INV-9 / INV-11 — current quantity, available quantity, and their unit are the most-watched fields in day-to-day operations.
- INV-12 Expiration Date/Time and INV-16 Manufacturer Lot Number — the two fields most commonly required for QC and recall traceability.
Version differences (2.3 to 2.8.2)
- HL7 v2.3 / v2.3.1 — INV is not part of the original lab inventory message set and is added later; some sites send a smaller subset of fields.
- HL7 v2.4 — INV is formalized as part of the laboratory automation chapter, with the field set close to the modern shape.
- HL7 v2.5 / v2.5.1 — the version documented here. The full 20 fields are in place, with HL70383 and HL70384 used for status and type.
- HL7 v2.6 — some coded fields begin migrating from CE to CWE; INV-1's table usage becomes more strictly enforced.
- HL7 v2.7 / v2.7.1 — CWE replaces CE for most coded fields in conformant profiles; field count is stable.
- HL7 v2.8 / v2.8.1 / v2.8.2 — INV remains stable with 20 fields. Implementations should confirm whether the partner expects CE or CWE for INV-1 through INV-6, INV-11, INV-15, INV-17, and INV-18.
Common mistakes
- Sending INV without INV-1; some receivers will silently drop the segment.
- Confusing INV-7 (initial quantity), INV-8 (current), INV-9 (available), and INV-10 (consumption). Each has distinct semantics; populating them inconsistently produces incorrect depletion math.
- Omitting INV-11. Without units, the four NM quantity fields are not portable across receivers.
- Using a date (DT) where INV-12 / INV-13 require a date/time (TS), leading to format-validation errors.
- Treating INV-14 (TQ) and INV-19 (CQ) as interchangeable. They express on-board stability in two different shapes; profiles usually pick one.
- Sending INV-2 or INV-3 values outside HL70383 / HL70384, e.g. local free-text strings the receiver cannot map.
Examples
Minimal INV
INV|RGT-GLU-001^Glucose Reagent^99LAB
Fully populated INV
INV|RGT-GLU-001^Glucose Reagent^99LAB|OK^OK^HL70383|RG^Reagent^HL70384|CARTRIDGE-7791^Cartridge 7791^L|CARRIER-A^Carrier A^L|POS-03^Position 3^L|500|412|410|2|mL^millilitre^UCUM|20260815120000|20260601083200||GLUCOSE^Glucose^99LAB|LOT-2026-0044|MFG-ROCHE^Roche Diagnostics^L|SUP-VWR^VWR International^L|30^d&days&UCUM|500^mL&UCUM
Annotated breakdown
INV Segment ID — Inventory Detail
|RGT-GLU-001^... INV-1 Substance Identifier (CE) — Glucose reagent
|OK^OK^HL70383 INV-2 Substance Status (CE, HL70383) — OK
|RG^Reagent^HL70384 INV-3 Substance Type (CE, HL70384) — Reagent
|CARTRIDGE-7791^... INV-4 Inventory Container Identifier (CE)
|CARRIER-A^... INV-5 Container Carrier Identifier (CE)
|POS-03^... INV-6 Position on Carrier (CE)
|500 INV-7 Initial Quantity (NM)
|412 INV-8 Current Quantity (NM)
|410 INV-9 Available Quantity (NM)
|2 INV-10 Consumption Quantity (NM) per test
|mL^... INV-11 Quantity Units (CE)
|20260815120000 INV-12 Expiration Date/Time (TS)
|20260601083200 INV-13 First Used Date/Time (TS)
| INV-14 On Board Stability Duration (TQ) — omitted
|GLUCOSE^... INV-15 Test/Fluid Identifier(s) (CE)
|LOT-2026-0044 INV-16 Manufacturer Lot Number (ST)
|MFG-ROCHE^... INV-17 Manufacturer Identifier (CE)
|SUP-VWR^... INV-18 Supplier Identifier (CE)
|30^d&days&UCUM INV-19 On Board Stability Time (CQ) — 30 days
|500^mL&UCUM INV-20 Target Value (CQ) — 500 mL
In-context excerpt — INU^U05 inventory update
MSH|^~&|ANALYZER1|LAB|LIS|HOSP|20260610090000||INU^U05^INU_U05|MSG000901|P|2.5.1
EQU|ANALYZER1^Chem Analyzer 1^L|20260610085500|OK^OK^HL70566
INV|RGT-GLU-001^Glucose Reagent^99LAB|OK^OK^HL70383|RG^Reagent^HL70384|CARTRIDGE-7791^Cartridge 7791^L|CARRIER-A^Carrier A^L|POS-03^Position 3^L|500|412|410|2|mL^millilitre^UCUM|20260815120000|20260601083200||GLUCOSE^Glucose^99LAB|LOT-2026-0044|MFG-ROCHE^Roche Diagnostics^L|SUP-VWR^VWR International^L|30^d&days&UCUM|500^mL&UCUM
INV|CAL-GLU-LOW^Glucose Calibrator Low^99LAB|OK^OK^HL70383|CO^Calibrator^HL70384|CARTRIDGE-7792^Cartridge 7792^L|CARRIER-A^Carrier A^L|POS-04^Position 4^L|10|8|8|1|mL^millilitre^UCUM|20260701000000|20260601083200||GLUCOSE^Glucose^99LAB|LOT-CAL-119|MFG-ROCHE^Roche Diagnostics^L|SUP-VWR^VWR International^L|14^d&days&UCUM|10^mL&UCUM
In-context excerpt — multi-instrument supply update
MSH|^~&|MWARE|LAB|LIS|HOSP|20260610091500||INU^U05^INU_U05|MSG000902|P|2.5.1
EQU|ANALYZER2^Hematology 2^L|20260610091000|OK^OK^HL70566
INV|RGT-CBC-DIL^CBC Diluent^99LAB|OK^OK^HL70383|DI^Diluent^HL70384|BOTTLE-5512^Diluent Bottle^L|||10000|7820|7820|22|mL^millilitre^UCUM|20260930000000|20260520070000||CBC^CBC^99LAB|LOT-DIL-2026-08|MFG-SYSMEX^Sysmex^L|SUP-VWR^VWR International^L|60^d&days&UCUM|10000^mL&UCUM
INV|CTL-CBC-NORM^CBC Control Normal^99LAB|EX^Expired^HL70383|CO^Control^HL70384|VIAL-118^Control Vial 118^L|||4|0|0|0.5|mL^millilitre^UCUM|20260609000000|20260512064500||CBC^CBC^99LAB|LOT-CTL-NORM-77|MFG-SYSMEX^Sysmex^L|SUP-VWR^VWR International^L|7^d&days&UCUM|4^mL&UCUM
FHIR mapping
There is no segment-level ConceptMap published in the HL7 v2-to-FHIR Implementation Guide for INV. Conceptually, INV maps to a combination of FHIR InventoryItem and Substance:
- INV-1 →
Substance.code/InventoryItem.code. - INV-2 →
InventoryItem.status(mapped from HL70383). - INV-3 →
InventoryItem.category(mapped from HL70384). - INV-4 / INV-5 / INV-6 →
InventoryItem.instanceand location/position extensions. - INV-7 / INV-8 / INV-9 / INV-10 →
InventoryItem.netContentand quantity extensions (initial, current, available, consumption). - INV-11 → unit on the above quantities.
- INV-12 →
InventoryItem.expiry/Substance.expiry. - INV-16 →
Substance.instance.identifier(lot). - INV-17 / INV-18 → manufacturer and supplier references.
- INV-19 / INV-20 → stability and target quantity extensions.
These mappings are conceptual; implementers usually need to bind a profile because InventoryItem does not natively carry every INV field as a first-class element.
Engine considerations
- Quantity coherence — engines should validate that INV-9 (available) ≤ INV-8 (current) ≤ INV-7 (initial) when all three are present, and surface a warning rather than silently transmit nonsense.
- Unit propagation — INV-11 must accompany any of INV-7 through INV-10. Engines should refuse to forward quantities without a unit.
- Status normalization — values for INV-2 should be checked against HL70383; sites with local subsets should map to the standard codes before sending downstream.
- Stability shapes — INV-14 (TQ) and INV-19 (CQ) often duplicate one another. Engines should pick a primary shape per interface and demote the other to derived data.
- Lot and expiry pairing — INV-12 and INV-16 together drive QC and recall workflows. Engines should flag any INV that carries one without the other.
- Repeating fields — INV-2 and INV-15 are repeating. Engines must preserve list ordering and not collapse repeats into a single value.
How Vorro parses and produces INV
Vorro's HL7 v2 engine treats INV as a structured snapshot rather than a loose bag of fields:
- On inbound parsing, INV-1 is required; segments without it are quarantined with a clear validation message and never advanced into the canonical inventory model.
- The four quantity fields and their unit are bound into a canonical
Stockvalue object so downstream consumers see a coherent (initial, current, available, consumption, unit) tuple rather than four loose numerics. - INV-2 and INV-3 are validated against HL70383 and HL70384 respectively; locally defined extensions are preserved with full coding triplets.
- INV-12 and INV-16 are treated as the recall-traceability pair; the engine emits a structured warning when only one is present.
- On outbound generation, Vorro guarantees that repeating fields (INV-2, INV-15) preserve their canonical ordering and writes TS fields with full precision (YYYYMMDDHHMMSS) to keep round-trips stable.
