Skip to content
Contact Us

HL7 ORM Messages: Order Messaging

HL7 ORM (Order Message) is the HL7 v2 message type for transmitting clinical orders — lab tests, radiology studies, pharmacy orders, and other ancillary service requests — from CPOE (Computerized Provider Order Entry) systems to the departments that fulfill them.

SegmentNameRequiredPurpose
MSHMessage HeaderYesSender, receiver, message type, version
PIDPatient IdentificationYesPatient demographics and identifiers
PV1Patient VisitNoVisit context for the order
IN1InsuranceNoPayer information for the order
ORCCommon OrderYesOrder control code, placer/filler numbers
OBRObservation RequestYesTest/procedure details, ordering provider
NTENotes and CommentsNoOrder notes, clinical history
DG1DiagnosisNoDiagnosis codes for the order

The ORC/OBR group repeats for each order within the message.

The ORC-1 field drives order lifecycle management:

CodeNameDescription
NWNew OrderInitial order submission
CACancelRequest to cancel a pending order
DCDiscontinueStop a recurring/continuous order
HDHoldTemporarily suspend order execution
RLReleaseRelease a held order
XOChange/UpdateModify an existing order
SCStatus ChangedOrder status update notification
OCOrder CancelledConfirmation of cancellation
REResultsObservations associated with the order
RUReplaced UnsolicitedReplacement result notification
CodeMeaning
AOrder accepted
CAOrder cancelled
CMOrder completed
DCOrder discontinued
ERError
HDOrder is on hold
IPIn process
SCStatus changed

A lab order for a Complete Blood Count:

ORM^O01 — New Lab Order (CBC)
Header Patient Clinical Order/Result Financial

A typical order flows through these stages:

Order Lifecycle — ORM/ORU Bidirectional Flow
CPOE Ordering System
Integration Engine Mirth / Rhapsody
Ancillary Lab / Radiology
ORM^O01 (NW) New Order
ORM^O01 (NW) Routed to department
ACK (AA) Order accepted
ACK (AA) Receipt confirmed
ORM^O01 (SC) Status: In Process
ORU^R01 (RE) Results available
ORU^R01 (RE) Results delivered
ACK (AA) Results received
cpoe engine
ORM^O01 (NW) New Order
engine ancillary
ORM^O01 (NW) Routed to department
ancillary engine
ACK (AA) Order accepted
engine cpoe
ACK (AA) Receipt confirmed
ancillary engine
ORM^O01 (SC) Status: In Process
ancillary engine
ORU^R01 (RE) Results available
engine cpoe
ORU^R01 (RE) Results delivered
cpoe engine
ACK (AA) Results received

When a provider modifies an existing order, the CPOE system sends an ORM with ORC-1 = XO (Change/Update). The filler system matches on the placer order number (ORC-2) and applies the changes. Common modifications include:

  • Priority changes (routine → STAT)
  • Add-on tests to an existing specimen
  • Specimen collection time changes
  • Cancel and re-order with different parameters
  • Placer order number (ORC-2): Assigned by the ordering system (e.g., EPIC). This is the order ID the provider sees.
  • Filler order number (ORC-3): Assigned by the receiving system (e.g., LAB_SYS). This is the accession number or lab-side order ID.

Both numbers must be preserved and echoed back in result messages (ORU) so that the ordering system can match results to the original order.

ORC-4 (Placer Group Number) links multiple orders that were placed together — for example, a provider ordering a CBC, CMP, and UA simultaneously. The group number allows the receiving system to process related orders as a unit and the ordering system to display them together.

Most order interfaces are bidirectional: ORM messages flow from CPOE to ancillary systems, and ORU messages flow back with results. The integration engine must maintain state for pending orders and correlate incoming results with their original orders using placer/filler number pairs.