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

HL7 RRD Messages: Pharmacy Dispense Acknowledgement

HL7 RRD messages acknowledge or respond to a pharmacy dispense order. An RRD message is sent from the pharmacy information system (PIS) back to the ordering application (such as an EHR) to confirm that the pharmacist has successfully dispensed a medication, updating the clinical chart with details of the dispense transaction (like quantity dispensed, package reference codes, and time of dispensing). This page explains what an RRD message represents, the trigger event that carries it, every segment the message can contain and what each one holds, and how an RRD response relates to FHIR. Sample content is constructed for illustration with fictional identifiers.

What an RRD message represents

An RRD message — RRD stands for Pharmacy Dispense Acknowledgement — communicates the pharmacy's final dispense transaction confirmation. The core of the message is the MSA segment, which provides the transaction-level acknowledgement status, and one or more repeating ORDER groups containing an echoed RXD segment (Pharmacy Dispense) to identify the specific medication dispensed, its package codes, the dispensed quantity, and the date and time of the dispense event.

The sender is the pharmacy information system (PIS) or pharmacy robotics system, and the receiver is the clinical application or EHR that raised the pharmacy order (often as an OMP or RDE message). RRD provides clinical confirmation that the medication has been prepared and is ready for clinical administration or pick-up.

When an RRD message is sent

An RRD message is sent asynchronously after a medication is dispensed from the pharmacy. It fires when the pharmacist completes a dispense transaction or when an automated dispensing cabinet verifies that a medication package has been picked, confirming that the order is complete.

Trigger event

The RRD message type carries a single trigger event:

  • RRD^O14 – Pharmacy dispense acknowledgement message.

The receiving application matches the response to the original order using the placer order number in ORC-2 and the message control ID echoed in MSA-2.

Integration topology

The diagram shows the pharmacy system returning a dispense response through the integration engine to the ordering EHR.

{{diagram: pharmacy system → RRD message → integration engine → clinical system (EHR)}}

Typical senders: pharmacy information system (PIS), automated dispensing cabinet, pharmacy robotics system.

Typical receivers: EHR, inpatient clinical documentation software, medication administration record (MAR) client.

Direction: response in a request-response pattern — the PIS acknowledges and confirms the dispensing of the medication order.

Segments in an RRD message

The RRD_O14 message opens with a header block (MSH, MSA, and optional ERR segments) followed by optional patient/visit context and one or more repeating ORDER groups. Cardinality follows HL7 notation: [X] optional, {X} repeating, [{X}] optional and repeating; a bare code is required. Each segment code links to its canonical field-by-field reference.

SegmentDescription
MSHMessage Header. Opens every RRD message. It names the sending and receiving applications, stamps the creation time, declares the trigger event in MSH-9 (RRD^O14), carries the message control id in MSH-10, and pins the HL7 version.
MSAMessage Acknowledgement. Required. Echoes the original message control id in MSA-2 and carries the acknowledgement code (e.g., AA accepted, AE error).
[{ERR}]Error. Details validation or application errors encountered when processing the dispense transaction. Optional and repeating.
[{NTE}]Notes and Comments. Header-level comments or text notes. Optional and repeating.
[PID]Patient Identification. Patient associated with the dispense transaction. Optional.
[PV1]Patient Visit. Encounter details related to the patient. Optional.
ORCCommon Order. Opens each ORDER group. It carries the order status, the placer order number, and the filler order number. Required within each repeating order group.
[{TQ1}]Timing/Quantity. Timing and frequency schedule. Optional and repeating.
RXDPharmacy Dispense. Required. Carries the dispensed medication name/code, quantity, units, form, package details, and dispense date/time.
[{RXR}]Pharmacy Route. The route of administration (e.g., oral, intravenous). Optional and repeating.
[{RXC}]Pharmacy Component. Details of drug components or ingredients. Optional and repeating.
[{NTE}]Notes and Comments (Line). Notes or pharmacist instructions for this specific dispense line. Optional.

[ ] = optional, { } = repeating

Sample RRD message

Note. Constructed for illustration. Medication codes, order numbers, and patient identifiers are fictional.

MSH|^~&|PHARMSYS|MERCY|EHRSYS|MERCY|20260604093000||RRD^O14^RRD_O14|MSG00048|P|2.5.1
MSA|AA|MSG00047
PID|1||MR98765^^^MERCY^MR||SMITH^PATRICIA^A||19720315|F
ORC|OK|REQ20260604-003^EHRSYS|FIL20260604-003^PHARMSYS
RXD|1|500^Amoxicillin^L|500|mg|capsule|||||||||||
RXR|PO^Oral^HL70162
NTE|1||Medication dispensed from central pharmacy; sent via courier.

What this sample shows

The RRD^O14 in MSH-9 marks a pharmacy dispense acknowledgement. MSA carries acknowledgement code AA (Application Accept) and acknowledges the original request control ID MSG00047. PID associates the response with patient MR98765. ORC carries order status OK (Order Accepted), links to placer order number REQ20260604-003, and supplies the pharmacy filler order number FIL20260604-003. The RXD segment carries the dispense details: medication Amoxicillin, quantity 500 mg, form capsule. RXR specifies route PO (Oral). The NTE notes that the item has been dispensed and dispatched via courier.

Working with RRD messages

Matching and Verification

When an RRD response is received, the ordering system correlates MSA-2 with the outbound request. The placer order number in ORC-2 is used to match individual lines. This correlation is essential for clinical staff to verify that the medication has been dispensed by the pharmacy before attempting pick-up.

Tracking Dispense Quantities

EHR applications must compare the dispensed quantities in the RXD segment against their original request details to ensure that nursing documentation and drug-administration records match the actual amount prepared by the pharmacy, preventing dosing errors.

Vendor variance. Different pharmacy systems use different coding systems in the RXD segment. Some systems return standard NDC codes in RXD-2, while others use hospital-specific formulary codes. Ensure your integration client parses both coding tables to support inventory tracking.

FHIR equivalent

A pharmacy dispense response maps conceptually to status changes on the FHIR MedicationDispense resource, representing updates to the status field (e.g. from preparation to completed or in-progress).

The HL7 v2-to-FHIR Implementation Guide publishes no message map for RRD_O14 and no ConceptMap for the RXD segment. Consequently, any FHIR translation must be mapped manually, using MSA-2 and ORC-2 to locate the existing MedicationDispense resource and updating its status or adding pharmacy filler identifiers as identifier elements.

Common pitfalls

Pitfall. Assuming the medication has been dispensed without checking ORC-5 or MSA-1. Presuming pharmacy acceptance on an error or rejection response can lead to clinical staff attempting to administer medication that was never dispensed.

Pitfall. Overlooking dispense status updates. Ignoring updates in the echoed RXD segment can result in the EHR displaying incorrect dispense records.

How Vorro handles RRD messages

Vorro ingests RRD responses over MLLP, validates the application acknowledgement code in MSA, and correlates each response to its originating request. Vorro updates the status of the medication dispense line items in the ordering EHR based on ORC-5 (Order Status) and passes through the pharmacy filler order number from ORC-3. Where a FHIR destination is configured, Vorro updates the corresponding MedicationDispense resource state manually, since the HL7 v2-to-FHIR guide provides no published map for this message.

  • RDS — the pharmacy dispense message.
  • RDE — the pharmacy encoded order message.
  • RAS — the pharmacy administration message.

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
HL7 RRD Messages: Pharmacy Dispense Acknowledgement | Vorro Academy | Vorro