The SAC (Specimen Container Detail) segment describes the physical container that holds a laboratory specimen and, where applicable, the carrier and tray that transport it through automated analyzers and laboratory automation systems. It links a container to its accession and parent container, reports container status, and captures detailed physical and chemical attributes such as dimensions, volumes, additives, separator and cap types, and interference indices. SAC is most heavily used in laboratory automation and total laboratory automation (TLA) environments where instruments must track each tube, vial, or microplate by identifier and position.
Purpose
SAC conveys everything an analyzer or middleware layer needs to know about a specimen container as a physical object. Three fields anchor the segment: the Container Identifier (SAC-3) uniquely names the tube or vessel, the Container Status (SAC-8) reports its lifecycle state, and the Carrier Type (SAC-9) identifies the rack or carrier transporting it. Around this core, SAC reports geometry (height, diameter, deltas), volumetric data (container volume, available and initial specimen volume), and chemistry-relevant detail (additive, separator type, cap type, hemolysis/lipemia/icterus/fibrin indices).
Used in
SAC appears primarily in laboratory automation result and observation messages:
- OUL — Unsolicited Laboratory Observation messages, where SAC describes the container associated with each reported specimen and observation.
It is also used in laboratory automation transaction messages and equipment notification flows that share the same container model.
Field-by-field reference
Source: HAPI HL7v2 v2.5.1 javadocs (SAC) for sequence, name, data type, and repetition. Length is not published in the javadocs (—); Required and Table # are filled from the HL7 v2.5.1 standard where well-established.
| Seq | Name | Data Type | Length | Req | Repeat | Table # | Description |
|---|---|---|---|---|---|---|---|
| SAC-1 | External Accession Identifier | ei | — | O | — | — | Accession assigned by an external system |
| SAC-2 | Accession Identifier | ei | — | O | — | — | Accession assigned by the placer or filler |
| SAC-3 | Container Identifier | ei | — | R | — | — | Unique identifier of this specimen container |
| SAC-4 | Primary (parent) Container Identifier | ei | — | O | — | — | Identifier of the parent container, if any |
| SAC-5 | Equipment Container Identifier | ei | — | O | — | — | Container identifier assigned by the equipment |
| SAC-6 | Specimen Source | sps | — | O | — | — | Source site and method for the specimen |
| SAC-7 | Registration Date/Time | ts | — | O | — | — | Date and time the container was registered |
| SAC-8 | Container Status | ce | — | O | — | HL70370 | Lifecycle status of the container |
| SAC-9 | Carrier Type | ce | — | O | — | HL70378 | Type of carrier transporting the container |
| SAC-10 | Carrier Identifier | ei | — | O | — | — | Identifier of the carrier or rack |
| SAC-11 | Position in Carrier | na | — | O | — | — | Position of the container within the carrier |
| SAC-12 | Tray Type - SAC | ce | — | O | — | HL70379 | Type of tray holding the carrier |
| SAC-13 | Tray Identifier | ei | — | O | — | — | Identifier of the tray |
| SAC-14 | Position in Tray | na | — | O | — | — | Position of the carrier within the tray |
| SAC-15 | Location | ce | — | O | Y | — | Physical or logical location of the container |
| SAC-16 | Container Height | nm | — | O | — | — | Height of the container |
| SAC-17 | Container Diameter | nm | — | O | — | — | Diameter of the container |
| SAC-18 | Barrier Delta | nm | — | O | — | — | Distance from bottom to the separator barrier |
| SAC-19 | Bottom Delta | nm | — | O | — | — | Distance from reference point to container bottom |
| SAC-20 | Container Height/Diameter/Delta Units | ce | — | O | — | — | Units for height, diameter, and delta values |
| SAC-21 | Container Volume | nm | — | O | — | — | Total volume capacity of the container |
| SAC-22 | Available Specimen Volume | nm | — | O | — | — | Volume of specimen available for testing |
| SAC-23 | Initial Specimen Volume | nm | — | O | — | — | Specimen volume present at registration |
| SAC-24 | Volume Units | ce | — | O | — | — | Units for the volume measurements |
| SAC-25 | Separator Type | ce | — | O | — | HL70380 | Type of separator within the container |
| SAC-26 | Cap Type | ce | — | O | — | HL70381 | Type of cap on the container |
| SAC-27 | Additive | cwe | — | O | Y | HL70371 | Additive present in the container |
| SAC-28 | Specimen Component | ce | — | O | — | — | Component of the specimen in the container |
| SAC-29 | Dilution Factor | sn | — | O | — | — | Dilution factor applied to the specimen |
| SAC-30 | Treatment | ce | — | O | — | HL70373 | Treatment applied to the specimen |
| SAC-31 | Temperature | sn | — | O | — | — | Temperature at which the specimen is held |
| SAC-32 | Hemolysis Index | nm | — | O | — | — | Measured hemolysis index |
| SAC-33 | Hemolysis Index Units | ce | — | O | — | — | Units for the hemolysis index |
| SAC-34 | Lipemia Index | nm | — | O | — | — | Measured lipemia index |
| SAC-35 | Lipemia Index Units | ce | — | O | — | — | Units for the lipemia index |
| SAC-36 | Icterus Index | nm | — | O | — | — | Measured icterus index |
| SAC-37 | Icterus Index Units | ce | — | O | — | — | Units for the icterus index |
| SAC-38 | Fibrin Index | nm | — | O | — | — | Measured fibrin index |
| SAC-39 | Fibrin Index Units | ce | — | O | — | — | Units for the fibrin index |
| SAC-40 | System Induced Contaminants | ce | — | O | Y | HL70374 | Contaminants introduced by the system |
| SAC-41 | Drug Interference | ce | — | O | Y | HL70382 | Drug-related interference detected |
| SAC-42 | Artificial Blood | ce | — | O | — | HL70375 | Artificial blood present in the specimen |
| SAC-43 | Special Handling Code | cwe | — | O | Y | HL70376 | Special handling instructions for the container |
| SAC-44 | Other Environmental Factors | ce | — | O | Y | HL70377 | Other environmental factors affecting the specimen |
Most-used fields
In practice, only a handful of the 44 fields appear in routine traffic:
- SAC-3 Container Identifier — the load-bearing field; every analyzer keys on this tube identifier.
- SAC-2 Accession Identifier — ties the container to the order's accession.
- SAC-4 Primary (parent) Container Identifier — used when aliquots are derived from a parent tube.
- SAC-8 Container Status — drives workflow routing (e.g., identified, in process, complete).
- SAC-9 / SAC-10 / SAC-11 Carrier Type, Carrier Identifier, Position in Carrier — locate the tube on its rack.
- SAC-27 Additive and SAC-26 Cap Type — let downstream systems reason about tube chemistry.
- SAC-22 Available Specimen Volume — used by automation to decide whether enough sample remains.
Version differences (2.3 to 2.8.2)
- 2.3: SAC did not exist; container detail was carried informally or via OBR/specimen fields.
- 2.4: SAC was introduced as part of the laboratory automation work, establishing the container/carrier/tray model and most of the physical and volumetric fields.
- 2.5 / 2.5.1: Data-type modernization applied; several coded fields use CE, and Additive (SAC-27) and Special Handling Code (SAC-43) use CWE. This is the version documented on this page.
- 2.6: Coded fields migrated from CE toward CWE in many positions; specimen sourcing increasingly handled by the SPM segment rather than SAC-6.
- 2.7 and 2.8.x: Continued data-type harmonization (CWE/CNE), with SAC retaining its role as the physical container descriptor while SPM owns specimen-level semantics. SAC-6 Specimen Source is effectively superseded by SPM.
Common mistakes
- Confusing SAC with SPM. SPM describes the specimen; SAC describes the container, carrier, and tray that hold it. Putting specimen source detail only in SAC-6 instead of SPM is a frequent error in 2.5.1+ implementations.
- Omitting SAC-3 Container Identifier. Without a container identifier, automation systems cannot track the tube; treat SAC-3 as effectively required.
- Treating SAC-15 Location as single-valued. It repeats; consumers must iterate.
- Forgetting that SAC-27 Additive, SAC-40, SAC-41, SAC-43, and SAC-44 repeat. Parsers that read only the first repetition silently drop data.
- Mismatched units. SAC-20 and SAC-24 carry the units for the numeric geometry and volume fields; sending raw numbers without their unit fields leads to misinterpretation.
- Assuming carrier and tray are the same thing. SAC-9 to SAC-11 describe the carrier; SAC-12 to SAC-14 describe the tray that holds the carrier.
Examples
Minimal valid segment (just the container identifier):
SAC|||TUBE0009284^^LAB
Fully populated segment:
SAC|EXT77001^^EXTLAB|ACC20260612-44^^LAB|TUBE0009284^^LAB|TUBE0009100^^LAB|EQC-7781^^ANALYZER1|BLD^Whole Blood^HL70070|20260612084500|I^Identified^HL70370|RACK^Rack^HL70378|CAR-2210^^AUTO|14^^^^^^^^position|SLOT^Slot Tray^HL70379|TRAY-0031^^AUTO|3|MAINLAB^Main Lab Automation^HL70070~CENT^Centrifuge Bay^HL70070|75|13|45|2|mm^millimeter^ISO+|6|3.2|5|mL^milliliter^ISO+|GEL^Gel Separator^HL70380|HEMOGUARD^Hemogard^HL70381|EDTA^EDTA^HL70371|PLASMA^Plasma^HL70070|1:1^^^^^|REFRIG^Refrigerated^HL70373|4^^^^^|12||30||5||2||SYSCONTAM^System Contaminant^HL70374|NONE^No Interference^HL70382|N^No^HL70375|REF^Keep Refrigerated^HL70376|LIGHT^Protect From Light^HL70377
Annotated breakdown:
SAC|EXT77001^^EXTLAB|ACC20260612-44^^LAB|TUBE0009284^^LAB|TUBE0009100^^LAB|...
| | | |
| | | +--> SAC-4 Primary (parent) Container Identifier
| | +-------------------> SAC-3 Container Identifier (key field)
| +--------------------------------------> SAC-2 Accession Identifier
+-------------------------------------------------------> SAC-1 External Accession Identifier
... |I^Identified^HL70370|RACK^Rack^HL70378|CAR-2210^^AUTO|14|...
| | | |
| | | +--> SAC-11 Position in Carrier
| | +-----------------> SAC-10 Carrier Identifier
| +-----------------------------------> SAC-9 Carrier Type
+--------------------------------------------------------> SAC-8 Container Status
In-context excerpt 1 — SAC within an OUL message (container associated with a reported specimen):
MSH|^~&|LABAUTO|MAINLAB|LIS|HOSP|20260612084500||OUL^R22^OUL_R22|MSG00021|P|2.5.1
PID|1||MRN552310^^^HOSP^MR||Tanaka^Hiro||19840127|M
SPM|1|SPC0009284^LAB||BLD^Whole Blood^HL70070|||||||P^Patient^HL70369
SAC|||TUBE0009284^^LAB|||BLD^Whole Blood^HL70070|20260612084500|I^Identified^HL70370|RACK^Rack^HL70378|CAR-2210^^AUTO|14
OBR|1|ORD55120^LIS||CBC^Complete Blood Count^L
OBX|1|NM|WBC^White Blood Cell Count^L||6.4|10*9/L|4.0-11.0|N|||F
In-context excerpt 2 — SAC with an aliquot referencing a parent container in an OUL message:
MSH|^~&|LABAUTO|MAINLAB|LIS|HOSP|20260612091200||OUL^R22^OUL_R22|MSG00022|P|2.5.1
PID|1||MRN552310^^^HOSP^MR||Tanaka^Hiro||19840127|M
SPM|1|SPC0009290^LAB||SER^Serum^HL70070
SAC|||TUBE0009290^^LAB|TUBE0009284^^LAB||SER^Serum^HL70070|20260612091000|I^Identified^HL70370|||||||MAINLAB^Main Lab Automation^HL70070||||||3.2||1.5|mL^milliliter^ISO+|GEL^Gel Separator^HL70380
OBR|1|ORD55121^LIS||CMP^Comprehensive Metabolic Panel^L
OBX|1|NM|GLU^Glucose^L||92|mg/dL|70-99|N|||F
FHIR mapping
No segment-level ConceptMap is published in the v2-to-FHIR IG for SAC. Conceptually, the container, carrier, and tray detail in SAC populate the Specimen.container backbone element on a Specimen resource, while the physical carrier or rack maps to a separate Device resource that the Specimen references. There is no published one-to-one field-level mapping, so implementers building SAC-to-FHIR transforms must define their own crosswalk for container identifiers, status, volumes, and additives.
Engine considerations
- Repetition handling: SAC-15, SAC-27, SAC-40, SAC-41, SAC-43, and SAC-44 are repeating. Configure the engine to iterate all repetitions rather than reading only the first.
- Identifier correlation: engines often need to join SAC-3 (Container Identifier) and SAC-2 (Accession Identifier) against the SPM and OBR segments in the same message. Maintain the container-to-specimen-to-order chain explicitly.
- Parent/child tubes: SAC-4 establishes aliquot lineage. Routing logic should preserve the parent reference so downstream systems can reconstruct the tube hierarchy.
- Numeric-plus-units pairing: numeric fields (SAC-16 to SAC-23, SAC-32 to SAC-39) are meaningless without their companion unit fields (SAC-20, SAC-24, and the per-index unit fields). Validate that units accompany values.
- Coded table validation: SAC-8, SAC-9, SAC-12, SAC-25, SAC-26, SAC-27, and SAC-42 carry table-bound codes; validate against the relevant HL7 tables or local extensions before forwarding to analyzers.
How Vorro parses and produces SAC
When ingesting SAC, Vorro reads the segment positionally per the HL7 v2.5.1 definition above, expands all repeating fields (SAC-15, SAC-27, SAC-40, SAC-41, SAC-43, SAC-44) into lists, and decomposes the EI, CE, CWE, SPS, NA, NM, SN, and TS components into addressable subfields. The Container Identifier (SAC-3) is captured as the primary key for the container and correlated with the enclosing SPM and OBR segments so the container-to-specimen-to-order relationship is preserved end to end. Carrier and tray detail (SAC-9 through SAC-14) and volume/geometry fields are normalized with their unit fields kept paired.
When producing SAC, Vorro emits fields in strict sequence order, always populating SAC-3, suppressing empty trailing fields, and encoding repetitions with the configured repetition separator. Coded fields are rendered with the appropriate triplet or CWE components, and parent container references (SAC-4) are written whenever aliquot lineage is known, ensuring round-trip fidelity with the receiving laboratory automation system.
