Schedule a demo
Segment

Pharmacy/treatment administration

Documents the actual administration of a medication or vaccine to a patient, recording what was given, the amount, route, site, date and time, and the administering provider. It is sent from nursing or clinical applications to the pharmacy or EHR in RAS (Pharmacy/Treatment Administration) messages. RXA is also central to immunization messaging (VXU), where it records each vaccine dose administered and is transmitted to immunization registries.

28fields
6required
v2.9HL7 version
rxa.py
from zato.hl7v2 import RXA, CWE

rxa = RXA()
code = CWE(identifier='VIT01', text='Vitamin D 1000IU')
rxa.administered_code = code
rxa.administered_amount = '1'

Build RXA segments in Python

How to construct and work with real-world RXA segments.

1

Vitamin D administration

Sub-ids, start and end time, code, amount, units, and dosage form

from zato.hl7v2.v2_9 import RXA
from zato.hl7v2.v2_9 import CWE

rxa = RXA()
rxa.give_sub_id_counter = '1'
rxa.administration_sub_id_counter = '1'
rxa.date_time_start_of_administration = '20240415120000'
rxa.date_time_end_of_administration = '20240415120005'
rxa.administered_code = CWE(
    identifier='VITD',
    text='Vitamin D3 1000 IU',
)
rxa.administered_amount = '1'
rxa.administered_units = CWE(identifier='IU', text='IU')
rxa.administered_dosage_form = CWE(
    identifier='GEL', text='Softgel')
2

Omega-3 liquid with provider and notes

Administration notes, provider, per-time unit, and strength

from zato.hl7v2.v2_9 import RXA
from zato.hl7v2.v2_9 import CWE, XCN

rxa = RXA()
rxa.give_sub_id_counter = '1'
rxa.administration_sub_id_counter = '1'
rxa.date_time_start_of_administration = '20240415130000'
rxa.date_time_end_of_administration = '20240415130010'
rxa.administered_code = CWE(
    identifier='OM3', text='Omega-3 EPA-DHA')
rxa.administered_amount = '5'
rxa.administered_units = CWE(
    identifier='ML', text='mL')
rxa.administered_dosage_form = CWE(
    identifier='LIQ', text='Liquid')
rxa.administration_notes = [
    CWE(identifier='MEAL', text='With meal')]
rxa.administering_provider = XCN(
    person_identifier='778899',
    family_name='LAKE',
    given_name='TAYLOR',
    suffix='RN'
)
rxa.administered_per_time_unit = 'BID'
rxa.administered_strength = '1100'
rxa.administered_strength_units = CWE(
    identifier='MG', text='mg')
3

Probiotic completion with barcode and location

Lot, manufacturer, indication, status, barcode, pharmacy type, and tag

from zato.hl7v2.v2_9 import RXA
from zato.hl7v2.v2_9 import CWE, EI, PL, XAD

rxa = RXA()
rxa.give_sub_id_counter = '1'
rxa.administration_sub_id_counter = '1'
rxa.date_time_start_of_administration = '20240415140000'
rxa.date_time_end_of_administration = '20240415140005'
rxa.administered_code = CWE(
    identifier='PROB', text='Daily Probiotic')
rxa.administered_amount = '1'
rxa.administered_units = CWE(
    identifier='CAP', text='Capsule')
rxa.substance_lot_number = ['LOT88']
rxa.substance_expiration_date = ['20261231']
rxa.substance_manufacturer_name = [
    CWE(identifier='PROBIO', text='Probiotic Labs')]
rxa.indication = [
    CWE(identifier='GUT', text='Digestive wellness')]
rxa.completion_status = 'CP'
rxa.action_code_rxa = 'A'
rxa.system_entry_date_time = '20240415140006'
rxa.administered_drug_strength_volume = '2'
rxa.administered_drug_strength_volume_units = CWE(
    identifier='ML', text='mL')
rxa.administered_barcode_identifier = CWE(
    identifier='SCAN', text='Barcode')
rxa.pharmacy_order_type = 'O'
rxa.administer_at = PL(
    point_of_care='CLIN',
    room='201',
    bed='A',
)
rxa.administered_at_address = XAD(
    street_address='400 Health Ave',
    city='Denver',
    state_or_province='CO',
    zip_or_postal_code='80202',
    country='USA',
)
rxa.administered_tag_identifier = [
    EI(
        entity_identifier='ADM01',
        universal_id_type='WELL',
    ),
]

Learn by building

Step-by-step guides for working with HL7 v2 in Zato.

Frequently asked questions

RXA records an administration event: start and end time, product code, amount, units, notes, provider, strength, lot and manufacturer, completion and action codes, and identifiers for nutrition and wellness workflows. It appears with ORC, RXE, RXO, RXR, RXG, and PID in order-related messages.

Fields 1–6 are required: give_sub_id_counter, administration_sub_id_counter, date_time_start_of_administration, date_time_end_of_administration, administered_code, and administered_amount. Field 11 is withdrawn in the standard; leave it empty in ER7.

from zato.hl7v2.v2_9 import RXA, CWE

rxa = RXA()
rxa.give_sub_id_counter = '1'
rxa.administration_sub_id_counter = '1'
rxa.date_time_start_of_administration = '20240415120000'
rxa.date_time_end_of_administration = '20240415120001'
rxa.administered_code = CWE(identifier='MV', text='Multivitamin')
rxa.administered_amount = '1'

HL7 reserves RXA field 11 in many guides; leave it empty so field 12 (administered_per_time_unit) stays aligned with your trading partner specification.

Assign Python lists for fields such as administration_notes, administering_provider, substance_lot_number, substance_expiration_date, substance_manufacturer_name, substance_treatment_refusal_reason, indication, and administered_tag_identifier.

from zato.hl7v2.v2_9 import RXA, CWE

rxa = RXA()
rxa.give_sub_id_counter = '1'
rxa.administration_sub_id_counter = '1'
rxa.date_time_start_of_administration = '20240415120000'
rxa.date_time_end_of_administration = '20240415120001'
rxa.administered_code = CWE(identifier='MIN', text='Mineral blend')
rxa.administered_amount = '1'
rxa.administration_notes = [
    CWE(identifier='HYDR', text='With water'),
]

RXG often describes intended give parameters for an order group, RXD documents a dispense, and RXA records that a dose was administered. Your interface specification should define how sub-id counters and order control numbers tie these segments together.

Zato connects to any system that speaks HL7v2 over MLLP or FHIR over REST. This includes Epic, Cerner, Meditech, Allscripts, and other EHR platforms.

Yes, Zato has built-in MLLP support for sending and receiving HL7v2 messages. MLLP channels handle the framing protocol automatically.

Zato supports HL7 v2.9, which is backward compatible with earlier versions including v2.3, v2.5, and v2.7. Standard segments and datatypes are available as typed Python classes.

Yes. Zato handles both HL7v2 and FHIR natively, so you can parse v2 messages and build FHIR resources with IG-specific extensions in the same service. Typed Python classes are available for both protocols, including extensions from US Core, UK Core, Da Vinci, and other Implementation Guides.

RXA field reference

Complete list of fields in the RXA segment, HL7 v2.9.

#Python nameDatatypeUsageRepeatableTable
1give_sub_id_counterNMRequiredNo-
2administration_sub_id_counterNMRequiredNo-
3date_time_start_of_administrationDTMRequiredNo-
4date_time_end_of_administrationDTMRequiredNo-
5administered_codeCWERequiredNoHL70292
6administered_amountNMRequiredNo-
7administered_unitsCWEOptionalNoHL70689
8administered_dosage_formCWEOptionalNoHL70690
9administration_notesCWEOptionalYesHL70691
10administering_providerXCNOptionalYes-
12administered_per_time_unitSTOptionalNo-
13administered_strengthNMOptionalNo-
14administered_strength_unitsCWEOptionalNoHL70692
15substance_lot_numberSTOptionalYes-
16substance_expiration_dateDTMOptionalYes-
17substance_manufacturer_nameCWEOptionalYes-
18substance_treatment_refusal_reasonCWEOptionalYesHL70693
19indicationCWEOptionalYesHL70694
20completion_statusIDOptionalNoHL70322
21action_code_rxaIDOptionalNoHL70206
22system_entry_date_timeDTMOptionalNo-
23administered_drug_strength_volumeNMOptionalNo-
24administered_drug_strength_volume_unitsCWEOptionalNoHL70695
25administered_barcode_identifierCWEOptionalNoHL70696
26pharmacy_order_typeIDOptionalNoHL70480
27administer_atPLOptionalNo-
28administered_at_addressXADOptionalNo-
29administered_tag_identifierEIOptionalYes-

Ready to build integrations?

Get started with Zato and connect your systems in minutes.

Open source In Python