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

HL7 SPS: Specimen Source (legacy specimen construct)

Important identity note up front: SPS is not, and never was, a standalone HL7 v2 message segment. "SPS — Specimen Source" is a composite data type that HL7 embedded inside other segments' fields — most notably OBR-15 (Specimen Source) — to describe where a specimen came from and how it was collected. In HL7 v2.5 the specimen model was refactored into a dedicated SPM (Specimen) segment, which is the true successor. This page documents the legacy Specimen Source construct honestly, so integrators maintaining older interfaces know exactly what it is and what replaced it.

Purpose

The purpose of the SPS data type was to carry, in a single field, everything needed to identify a laboratory specimen's origin: the specimen source name or code, any additives, the collection method, the body site and its modifiers, a collection-method modifier, and the specimen role. Before v2.5 there was no first-class Specimen segment, so this composite lived inside order and container fields (for example OBR-15) to attach specimen context to an order or observation.

Used in

SPS was never sent on its own. As a data type it appeared as a field value inside segments:

  • OBR-15 Specimen Source in order/observation messages. See OBR.
  • SAC-6 Specimen Source in container/automation messages. See SAC.
  • TCC-3 Specimen Source in test-configuration messages.

From HL7 v2.5 onward, this specimen information moved into the dedicated SPM segment, and OBR-15 was deprecated in favor of referencing SPM.

Field-by-field reference

Because SPS is a data type rather than a segment, the table below lists its components (not segment fields). Source: HAPI HL7v2 v2.5 javadocs (SPS datatype) for component order, name, and underlying data type. Length is not published in the javadocs (); Required and Table # reflect the HL7 v2.x standard where well-established.

SeqNameData TypeLengthReqRepeatTable #Description
SPS-1Specimen Source Name or CodeCWEOHL70070The specimen source or type.
SPS-2AdditivesCWEOHL70371Additive introduced to the specimen.
SPS-3Specimen Collection MethodTXOFree-text collection method.
SPS-4Body SiteCWEOHL70163Site from which the specimen was taken.
SPS-5Site ModifierCWEOHL70495Modifier to the body site (e.g. left/right).
SPS-6Collection Method Modifier CodeCWEOModifier to the collection method.
SPS-7Specimen RoleCWEOHL70369Role of the specimen (e.g. patient, control).

Most-used fields

  • SPS-1 Specimen Source Name or Code is the backbone: it names what the specimen is (blood, urine, tissue).
  • SPS-4 Body Site with SPS-5 Site Modifier locates the collection precisely (e.g. left antecubital).
  • SPS-7 Specimen Role distinguishes patient specimens from quality-control material.

Version differences (2.3 to 2.8.2)

  • 2.3/2.3.1/2.4: Specimen source is carried by the SPS composite inside fields such as OBR-15. Early versions used the CM_SPS/CE-flavored components; later 2.x uses CWE for coded components as shown above.
  • 2.5: The specimen model is refactored. The dedicated SPM segment is introduced, OBR-15 (which used SPS) is deprecated, and specimen source concepts are expressed as first-class SPM fields.
  • 2.5.1 through 2.8.2: SPM is the canonical carrier; the legacy SPS composite persists only for backward compatibility in fields like OBR-15.

Common mistakes

  • Treating SPS as a segment. It has no segment ID and is never sent on its own line; it is a value inside another field.
  • Sending SPS content in OBR-15 to a modern v2.5.1+ receiver that expects SPM. Downstream systems built to the current standard read specimen data from SPM.
  • Packing body site and site modifier into one component. SPS-4 and SPS-5 are distinct components.

Examples

Because SPS is a data type embedded in a field, the examples show it in context rather than as a standalone segment line.

Minimal SPS value (source only) inside OBR-15:

OBR|1|PON123^LAB||CBC^Complete Blood Count^L|||20260701080000|||||||BLD^Blood^HL70070

Fully-populated SPS value inside OBR-15 (source, additive, method, body site, modifier, role):

OBR|1|PON123^LAB||CBC^Complete Blood Count^L|||20260701080000|||||||BLD^Blood^HL70070&EDTA^EDTA^HL70371&Venipuncture&AB^Antecubital^HL70163&L^Left^HL70495&&P^Patient^HL70369

Annotated breakdown of the SPS components in OBR-15 above:

BLD^Blood^HL70070      ← SPS-1 Specimen Source Name or Code
EDTA^EDTA^HL70371      ← SPS-2 Additives
Venipuncture           ← SPS-3 Specimen Collection Method
AB^Antecubital^HL70163 ← SPS-4 Body Site
L^Left^HL70495         ← SPS-5 Site Modifier
                       ← SPS-6 Collection Method Modifier Code (empty)
P^Patient^HL70369      ← SPS-7 Specimen Role

The modern successor — the same specimen expressed with an SPM segment in a v2.5.1 message:

MSH|^~&|LIS|CENTRALLAB|EHR|MERCYGEN|20260701080500||ORU^R01^ORU_R01|MSG7001|P|2.5.1
PID|1||MR12345^^^MERCYGEN^MR||DOE^JOHN^Q||19800101|M
OBR|1|PON123^LAB||CBC^Complete Blood Count^L|||20260701080000
SPM|1|SPX9001^LAB||BLD^Blood^HL70070|||AB^Antecubital^HL70163

FHIR mapping

SPS is not mapped at the segment level (it is not a segment). No segment-level ConceptMap exists in the v2-to-FHIR IG for SPS. Conceptually the specimen source components map to the FHIR Specimen resource: SPS-1 to Specimen.type, SPS-2 to Specimen.processing.additive, SPS-3 to Specimen.collection.method, SPS-4/SPS-5 to Specimen.collection.bodySite, and SPS-7 to a specimen-role concept. In modern v2, this mapping is driven from the SPM segment rather than the legacy SPS composite.

Engine considerations

  • Recognize that SPS arrives as a field value (with component delimiters), not as a segment; parse it against the containing field's data type.
  • When bridging legacy feeds to current systems, promote OBR-15 SPS content into an SPM segment so downstream consumers find specimen data where the current standard puts it.
  • Preserve all seven components; do not collapse body site and modifier.

How Vorro parses and produces SPS

Vorro reads the legacy SPS composite wherever it appears (for example OBR-15), splitting it into its seven components and normalizing coded values against their tables. On output to modern endpoints, Vorro promotes that specimen context into a first-class SPM segment, mapping source, additive, collection method, body site, site modifier, and role to the corresponding SPM fields, so consumers built to v2.5.1+ receive specimen data in the current, expected location.

  • SPM — the modern Specimen segment that succeeds the SPS construct.
  • OBR — whose OBR-15 field historically carried the SPS specimen source.
  • SAC — container segment whose SAC-6 field also used the SPS data type.

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