HL70065 tells the receiving lab what to do about the specimen attached to an order: add tests to one that already exists, generate a reflex, send a phlebotomist, schedule a future draw, or treat the order as a revision. The seven codes live in OBR-11 Specimen Action Code and are short single-character ID values that have been stable since v2.3.
Purpose
HL70065 expresses the operational intent of an order with respect to its specimen. The same chemistry panel order can mean very different things depending on the action code: A says "the specimen is already in the lab — just add these tests," L says "send a phlebotomist to the floor," G says "this is a reflex generated by an earlier result," and S says "schedule this for next Tuesday's draw." Without an explicit action code, labs cannot route the order to the right workflow queue.
The field is non-repeating. A blank OBR-11 historically defaulted to O (specimen obtained elsewhere) in many implementations, but conformant senders should always populate it explicitly.
Where it's used
- OBR-11 Specimen Action Code — the canonical and only home of HL70065. Populated on ORM (Order Message), OML (Order Message — Lab), and on the ORC/OBR pair inside ORU result messages when the original order context is echoed back.
Code list
| Code | Display | Comment/Description |
|---|---|---|
| A | Add ordered tests to the existing specimen | Specimen is already in the lab; append these tests rather than recollect. |
| G | Generated order — reflex order | Order created automatically by a rule firing on an earlier result. |
| L | Lab to obtain specimen from patient | Send a phlebotomist or specimen collector to draw the sample. |
| O | Specimen obtained by service other than Lab | Specimen was collected by nursing, OR, or another non-lab service and is en route. |
| P | Pending specimen — order sent, specimen not received | Order placed in advance of the specimen arriving in the lab. |
| R | Revised order | This OBR replaces a previously transmitted order for the same specimen. |
| S | Schedule the tests specified below | Schedule the order for a future collection event rather than acting now. |
Code system OID
- OID:
2.16.840.1.113883.18.19 - Canonical URI:
http://terminology.hl7.org/CodeSystem/v2-0065
The OID is published on the HL7 Terminology server and is the value Vorro emits in CWE.14 when a downstream profile requires OID-bound coded values for specimen action.
HL7-defined vs user-defined
HL70065 is HL7-defined. The table number falls inside the HL7-reserved range (HL70001–HL70999), the code set is normative, and receivers must accept all seven values without local extension. Sites that need richer workflow semantics (split specimen, send-out to reference lab, recollect) cannot extend HL70065 — they instead carry the workflow on a separate SPM segment, on ORC-1 Order Control, or on a workflow note.
Version differences
- v2.3 — HL70065 introduced with the original code set: A, G, L, O, P, R, S.
- v2.3.1 – v2.5 — No changes; codes stable.
- v2.6 — Editorial clarifications added to descriptions; codes unchanged.
- v2.7 – v2.8.1 — Set frozen at seven codes; no further additions, no deprecations.
- v2.9 — HL70065 unchanged. The SPM segment (introduced in v2.5) carries richer specimen metadata that complements but does not replace HL70065.
Common mistakes
- Sending the display word in OBR-11 —
Addinstead ofA. The field carries the single-character code. - Treating a blank OBR-11 as a hard error. Many legacy senders omit the field; well-behaved engines fall back to
Owith a warning rather than NACK the order. - Confusing
G(Generated/reflex) withR(Revised).Gmeans a new automatically-created order;Rmeans a replacement for a prior transmission of the same order. Mixing these breaks reflex audit trails. - Using
L(Lab to obtain) when the specimen has already been collected.Ltriggers a phlebotomy task in the lab's collection module; sending it for an in-hand specimen creates a duplicate task. - Treating
P(Pending) as a status update rather than an order action.Pis part of the original order transmission, not a follow-up message.
Examples
A lab draw — phlebotomist needed:
OBR|1|ORD123456^EPIC|LAB789^LAB|2160-0^Creatinine^LN|||20260610080000|||||||||1234^SMITH^JOHN^^^^MD||||L
A reflex order generated by an earlier abnormal TSH:
OBR|1|ORD123457^EPIC|LAB790^LAB|3026-7^Free T4^LN|||20260610090000|||||||||1234^SMITH^JOHN^^^^MD||||G
Adding tests to a specimen already in the lab:
OBR|1|ORD123458^EPIC|LAB791^LAB|2823-3^Potassium^LN|||20260610091500|||||||||1234^SMITH^JOHN^^^^MD||||A
Same L action rendered as a FHIR ServiceRequest snippet — the specimen-collection intent is captured via ServiceRequest.intent plus an extension preserving the original v2 code:
{
"resourceType": "ServiceRequest",
"status": "active",
"intent": "order",
"code": {
"coding": [{ "system": "http://loinc.org", "code": "2160-0" }]
},
"subject": { "reference": "Patient/10456" },
"extension": [{
"url": "http://terminology.hl7.org/CodeSystem/v2-0065",
"valueCode": "L"
}]
}
Mapping failure example — unknown action code:
OBR|1|ORD123459^EPIC|LAB792^LAB|2160-0^Creatinine^LN|||20260610100000|||||||||1234^SMITH^JOHN^^^^MD||||X
X is not in HL70065. A conformant engine should NACK with AE, preserve the original X in the audit log, and route the order to operations for review rather than guessing whether the sender meant O or L.
FHIR mapping
The v2-to-FHIR Implementation Guide does not publish a single normative ConceptMap for HL70065 because the action verbs split across several FHIR concepts. The conventional mapping is:
| HL7 v2 (HL70065) | FHIR realization |
|---|---|
| A | ServiceRequest with basedOn reference to an existing Specimen |
| G | ServiceRequest.intent = reflex-order |
| L | ServiceRequest plus a lab-collection Task on the lab |
| O | Specimen.collection.collector populated with non-lab role |
| P | ServiceRequest.status = active, no Specimen yet linked |
| R | ServiceRequest.status = revoked on prior + new ServiceRequest replaces it |
| S | ServiceRequest.occurrenceDateTime in the future, intent = plan |
Because no single FHIR ValueSet covers the seven codes, round-trip integrators preserve the original HL70065 code as an extension on ServiceRequest.
Engine considerations
- Optional but expected — OBR-11 is optional in the standard but functionally required by most lab profiles. Engines should warn rather than NACK on blank values, and default the downstream interpretation explicitly.
- Case sensitivity — HL70065 codes are case-sensitive uppercase;
lis not valid. - Reflex audit chain — When
Gis received, engines must capture the parent observation that triggered the reflex (typically in OBR-29 Parent or the v2.6+ OBR-50 reference) so the audit chain is complete. - Round-trip preservation — When mapping to FHIR
ServiceRequest, store the original HL70065 code as an extension so the outbound v2 channel can restore the exact action without re-deriving it fromintentandstatus.
How Vorro handles HL70065
Vorro validates OBR-11 against the seven HL70065 codes on ingest. Valid codes are forwarded to downstream channels untouched. Blank OBR-11 values are filled with O and a structured warning is attached so operations can see which senders are non-conformant without blocking the order. Unknown codes are NACKed with AE and the offending value is captured in the audit log so terminology curation can either resolve it to one of the seven canonical codes or escalate to the trading partner.
On outbound, Vorro emits HL70065 as ID for v2.5 and earlier profiles and as CWE with CWE.14 populated for v2.7+ destinations that advertise OID-bound coded values. The original action code is always preserved when round-tripping through FHIR ServiceRequest and Specimen so reflex chains and revised orders remain distinguishable downstream.
