Home
Orion Health
Orion Health Rhapsody Messaging Events
Orion Health Rhapsody Messaging Events
Version 1.0.0
The Orion Health Rhapsody Integration Engine processes healthcare messages in real-time across connected healthcare systems. This specification describes the event-driven messaging patterns supported by Rhapsody, including HL7v2 ADT (Admit/Discharge/Transfer) events, order messages (ORM/OML), result messages (ORU), and FHIR subscription notifications. Rhapsody acts as a healthcare message broker, routing and transforming messages between clinical systems using MLLP, TCP, HTTP, and other transport protocols.
View Spec
View on GitHub
EHR FHIR Health IT Healthcare HIE HL7 Integration Interoperability Population Health AsyncAPI Webhooks Events
Channels
adt/patient-admit
publish sendPatientAdmit
Send a patient admission event
Patient admission events (HL7v2 ADT^A01). Triggered when a patient is admitted to a healthcare facility. Contains patient demographics, visit information, attending provider, and insurance details.
adt/patient-discharge
publish sendPatientDischarge
Send a patient discharge event
Patient discharge events (HL7v2 ADT^A03). Triggered when a patient is discharged from a healthcare facility. Contains discharge disposition, diagnosis codes, and follow-up instructions.
adt/patient-transfer
publish sendPatientTransfer
Send a patient transfer event
Patient transfer events (HL7v2 ADT^A02). Triggered when a patient is transferred between locations or units within a facility.
adt/patient-registration
publish sendPatientRegistration
Send a patient registration event
Patient registration events (HL7v2 ADT^A04). Triggered when a patient is registered for outpatient services.
adt/patient-update
publish sendPatientUpdate
Send a patient update event
Patient demographics update events (HL7v2 ADT^A08). Triggered when patient demographic information is updated in the source system.
adt/patient-merge
subscribe onPatientMerge
Receive patient merge events
Patient merge events (HL7v2 ADT^A40). Triggered when duplicate patient records are merged in the source system.
orders/new-order
publish sendNewOrder
Send a new order event
New order events (HL7v2 ORM^O01). Triggered when a new clinical order is placed, such as laboratory, radiology, or pharmacy orders.
orders/order-update
subscribe onOrderUpdate
Receive order update events
Order update events. Triggered when an existing order is modified, cancelled, or its status changes.
results/observation-result
publish sendObservationResult
Send an observation result event
Observation result events (HL7v2 ORU^R01). Triggered when clinical results are available, including laboratory results, radiology reports, and other diagnostic findings.
scheduling/appointment-notification
subscribe onAppointmentNotification
Receive appointment notification events
Scheduling notification events (HL7v2 SIU^S12-S17). Triggered when appointments are created, modified, or cancelled.
fhir/subscription-notification
subscribe onFhirSubscriptionNotification
Receive FHIR subscription notifications
FHIR Subscription notification events. Triggered when FHIR resources matching a subscription criteria are created or updated, delivered as FHIR Bundle notifications over HTTPS.
documents/clinical-document
publish sendClinicalDocument
Send a clinical document event
Clinical document events (HL7v2 MDM^T02). Triggered when clinical documents such as discharge summaries, progress notes, or consult notes are created or updated.
Messages
✉
ADT_A01
Patient Admission
HL7v2 ADT^A01 patient admission message
✉
ADT_A02
Patient Transfer
HL7v2 ADT^A02 patient transfer message
✉
ADT_A03
Patient Discharge
HL7v2 ADT^A03 patient discharge message
✉
ADT_A04
Patient Registration
HL7v2 ADT^A04 patient registration message
✉
ADT_A08
Patient Demographics Update
HL7v2 ADT^A08 patient information update message
✉
ADT_A40
Patient Merge
HL7v2 ADT^A40 patient merge message
✉
ORM_O01
New Order
HL7v2 ORM^O01 general order message
✉
ORU_R01
Observation Result
HL7v2 ORU^R01 observation result message
✉
SIU_S12
Appointment Notification
HL7v2 SIU^S12 scheduling notification message
✉
FHIRSubscriptionNotification
FHIR Subscription Notification
FHIR R4 subscription notification bundle
✉
MDM_T02
Clinical Document Notification
HL7v2 MDM^T02 document notification with content
Servers
mllp
production
mllp://integration.orionhealth.com:2575
Production MLLP endpoint for HL7v2 messaging
https
production-http
https://integration.orionhealth.com/messaging
Production HTTPS endpoint for FHIR and REST messaging
mllp
sandbox
mllp://sandbox-integration.orionhealth.com:2575
Sandbox MLLP endpoint
https
sandbox-http
https://sandbox-integration.orionhealth.com/messaging
Sandbox HTTPS endpoint
AsyncAPI Specification
asyncapi: 2.6.0
info:
title: Orion Health Rhapsody Messaging Events
version: 1.0.0
description: >-
The Orion Health Rhapsody Integration Engine processes healthcare messages
in real-time across connected healthcare systems. This specification
describes the event-driven messaging patterns supported by Rhapsody,
including HL7v2 ADT (Admit/Discharge/Transfer) events, order messages
(ORM/OML), result messages (ORU), and FHIR subscription notifications.
Rhapsody acts as a healthcare message broker, routing and transforming
messages between clinical systems using MLLP, TCP, HTTP, and other
transport protocols.
contact:
name: Orion Health API Support
email: [email protected]
url: https://www.orionhealth.com/support
license:
name: Proprietary
url: https://www.orionhealth.com/terms-of-service
servers:
production:
url: mllp://integration.orionhealth.com:2575
protocol: mllp
description: Production MLLP endpoint for HL7v2 messaging
production-http:
url: https://integration.orionhealth.com/messaging
protocol: https
description: Production HTTPS endpoint for FHIR and REST messaging
sandbox:
url: mllp://sandbox-integration.orionhealth.com:2575
protocol: mllp
description: Sandbox MLLP endpoint
sandbox-http:
url: https://sandbox-integration.orionhealth.com/messaging
protocol: https
description: Sandbox HTTPS endpoint
defaultContentType: application/json
channels:
adt/patient-admit:
description: >-
Patient admission events (HL7v2 ADT^A01). Triggered when a patient
is admitted to a healthcare facility. Contains patient demographics,
visit information, attending provider, and insurance details.
subscribe:
operationId: onPatientAdmit
summary: Receive patient admission events
message:
$ref: '#/components/messages/ADT_A01'
publish:
operationId: sendPatientAdmit
summary: Send a patient admission event
message:
$ref: '#/components/messages/ADT_A01'
adt/patient-discharge:
description: >-
Patient discharge events (HL7v2 ADT^A03). Triggered when a patient
is discharged from a healthcare facility. Contains discharge
disposition, diagnosis codes, and follow-up instructions.
subscribe:
operationId: onPatientDischarge
summary: Receive patient discharge events
message:
$ref: '#/components/messages/ADT_A03'
publish:
operationId: sendPatientDischarge
summary: Send a patient discharge event
message:
$ref: '#/components/messages/ADT_A03'
adt/patient-transfer:
description: >-
Patient transfer events (HL7v2 ADT^A02). Triggered when a patient
is transferred between locations or units within a facility.
subscribe:
operationId: onPatientTransfer
summary: Receive patient transfer events
message:
$ref: '#/components/messages/ADT_A02'
publish:
operationId: sendPatientTransfer
summary: Send a patient transfer event
message:
$ref: '#/components/messages/ADT_A02'
adt/patient-registration:
description: >-
Patient registration events (HL7v2 ADT^A04). Triggered when a
patient is registered for outpatient services.
subscribe:
operationId: onPatientRegistration
summary: Receive patient registration events
message:
$ref: '#/components/messages/ADT_A04'
publish:
operationId: sendPatientRegistration
summary: Send a patient registration event
message:
$ref: '#/components/messages/ADT_A04'
adt/patient-update:
description: >-
Patient demographics update events (HL7v2 ADT^A08). Triggered when
patient demographic information is updated in the source system.
subscribe:
operationId: onPatientUpdate
summary: Receive patient update events
message:
$ref: '#/components/messages/ADT_A08'
publish:
operationId: sendPatientUpdate
summary: Send a patient update event
message:
$ref: '#/components/messages/ADT_A08'
adt/patient-merge:
description: >-
Patient merge events (HL7v2 ADT^A40). Triggered when duplicate
patient records are merged in the source system.
subscribe:
operationId: onPatientMerge
summary: Receive patient merge events
message:
$ref: '#/components/messages/ADT_A40'
orders/new-order:
description: >-
New order events (HL7v2 ORM^O01). Triggered when a new clinical
order is placed, such as laboratory, radiology, or pharmacy orders.
subscribe:
operationId: onNewOrder
summary: Receive new order events
message:
$ref: '#/components/messages/ORM_O01'
publish:
operationId: sendNewOrder
summary: Send a new order event
message:
$ref: '#/components/messages/ORM_O01'
orders/order-update:
description: >-
Order update events. Triggered when an existing order is modified,
cancelled, or its status changes.
subscribe:
operationId: onOrderUpdate
summary: Receive order update events
message:
$ref: '#/components/messages/ORM_O01'
results/observation-result:
description: >-
Observation result events (HL7v2 ORU^R01). Triggered when clinical
results are available, including laboratory results, radiology
reports, and other diagnostic findings.
subscribe:
operationId: onObservationResult
summary: Receive observation result events
message:
$ref: '#/components/messages/ORU_R01'
publish:
operationId: sendObservationResult
summary: Send an observation result event
message:
$ref: '#/components/messages/ORU_R01'
scheduling/appointment-notification:
description: >-
Scheduling notification events (HL7v2 SIU^S12-S17). Triggered when
appointments are created, modified, or cancelled.
subscribe:
operationId: onAppointmentNotification
summary: Receive appointment notification events
message:
$ref: '#/components/messages/SIU_S12'
fhir/subscription-notification:
description: >-
FHIR Subscription notification events. Triggered when FHIR resources
matching a subscription criteria are created or updated, delivered
as FHIR Bundle notifications over HTTPS.
subscribe:
operationId: onFhirSubscriptionNotification
summary: Receive FHIR subscription notifications
message:
$ref: '#/components/messages/FHIRSubscriptionNotification'
documents/clinical-document:
description: >-
Clinical document events (HL7v2 MDM^T02). Triggered when clinical
documents such as discharge summaries, progress notes, or consult
notes are created or updated.
subscribe:
operationId: onClinicalDocument
summary: Receive clinical document events
message:
$ref: '#/components/messages/MDM_T02'
publish:
operationId: sendClinicalDocument
summary: Send a clinical document event
message:
$ref: '#/components/messages/MDM_T02'
components:
messages:
ADT_A01:
name: ADT_A01
title: Patient Admission
summary: HL7v2 ADT^A01 patient admission message
contentType: application/json
payload:
$ref: '#/components/schemas/ADTEvent'
headers:
type: object
properties:
messageType:
type: string
const: ADT^A01
description: HL7 message type
messageControlId:
type: string
description: Unique message identifier
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
ADT_A02:
name: ADT_A02
title: Patient Transfer
summary: HL7v2 ADT^A02 patient transfer message
contentType: application/json
payload:
$ref: '#/components/schemas/ADTTransferEvent'
headers:
type: object
properties:
messageType:
type: string
const: ADT^A02
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
ADT_A03:
name: ADT_A03
title: Patient Discharge
summary: HL7v2 ADT^A03 patient discharge message
contentType: application/json
payload:
$ref: '#/components/schemas/ADTDischargeEvent'
headers:
type: object
properties:
messageType:
type: string
const: ADT^A03
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
ADT_A04:
name: ADT_A04
title: Patient Registration
summary: HL7v2 ADT^A04 patient registration message
contentType: application/json
payload:
$ref: '#/components/schemas/ADTEvent'
headers:
type: object
properties:
messageType:
type: string
const: ADT^A04
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
ADT_A08:
name: ADT_A08
title: Patient Demographics Update
summary: HL7v2 ADT^A08 patient information update message
contentType: application/json
payload:
$ref: '#/components/schemas/ADTEvent'
headers:
type: object
properties:
messageType:
type: string
const: ADT^A08
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
ADT_A40:
name: ADT_A40
title: Patient Merge
summary: HL7v2 ADT^A40 patient merge message
contentType: application/json
payload:
$ref: '#/components/schemas/ADTMergeEvent'
headers:
type: object
properties:
messageType:
type: string
const: ADT^A40
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
ORM_O01:
name: ORM_O01
title: New Order
summary: HL7v2 ORM^O01 general order message
contentType: application/json
payload:
$ref: '#/components/schemas/OrderEvent'
headers:
type: object
properties:
messageType:
type: string
const: ORM^O01
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
ORU_R01:
name: ORU_R01
title: Observation Result
summary: HL7v2 ORU^R01 observation result message
contentType: application/json
payload:
$ref: '#/components/schemas/ResultEvent'
headers:
type: object
properties:
messageType:
type: string
const: ORU^R01
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
SIU_S12:
name: SIU_S12
title: Appointment Notification
summary: HL7v2 SIU^S12 scheduling notification message
contentType: application/json
payload:
$ref: '#/components/schemas/SchedulingEvent'
headers:
type: object
properties:
messageType:
type: string
description: SIU^S12 through SIU^S17
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
FHIRSubscriptionNotification:
name: FHIRSubscriptionNotification
title: FHIR Subscription Notification
summary: FHIR R4 subscription notification bundle
contentType: application/fhir+json
payload:
$ref: '#/components/schemas/FHIRNotificationEvent'
MDM_T02:
name: MDM_T02
title: Clinical Document Notification
summary: HL7v2 MDM^T02 document notification with content
contentType: application/json
payload:
$ref: '#/components/schemas/DocumentEvent'
headers:
type: object
properties:
messageType:
type: string
const: MDM^T02
messageControlId:
type: string
sendingFacility:
type: string
receivingFacility:
type: string
timestamp:
type: string
format: date-time
schemas:
ADTEvent:
type: object
properties:
messageHeader:
$ref: '#/components/schemas/MessageHeader'
eventType:
type: string
description: ADT event type code
patient:
$ref: '#/components/schemas/PatientIdentification'
visit:
$ref: '#/components/schemas/PatientVisit'
attendingDoctor:
$ref: '#/components/schemas/Provider'
diagnosis:
type: array
items:
$ref: '#/components/schemas/Diagnosis'
insurance:
type: array
items:
$ref: '#/components/schemas/Insurance'
ADTTransferEvent:
type: object
properties:
messageHeader:
$ref: '#/components/schemas/MessageHeader'
eventType:
type: string
const: A02
patient:
$ref: '#/components/schemas/PatientIdentification'
visit:
$ref: '#/components/schemas/PatientVisit'
priorLocation:
$ref: '#/components/schemas/Location'
newLocation:
$ref: '#/components/schemas/Location'
ADTDischargeEvent:
type: object
properties:
messageHeader:
$ref: '#/components/schemas/MessageHeader'
eventType:
type: string
const: A03
patient:
$ref: '#/components/schemas/PatientIdentification'
visit:
$ref: '#/components/schemas/PatientVisit'
dischargeDisposition:
type: string
description: Discharge disposition code
dischargeDateTime:
type: string
format: date-time
diagnosis:
type: array
items:
$ref: '#/components/schemas/Diagnosis'
ADTMergeEvent:
type: object
properties:
messageHeader:
$ref: '#/components/schemas/MessageHeader'
eventType:
type: string
const: A40
survivingPatient:
$ref: '#/components/schemas/PatientIdentification'
mergedPatient:
$ref: '#/components/schemas/PatientIdentification'
mergeReason:
type: string
OrderEvent:
type: object
properties:
messageHeader:
$ref: '#/components/schemas/MessageHeader'
patient:
$ref: '#/components/schemas/PatientIdentification'
visit:
$ref: '#/components/schemas/PatientVisit'
orderControl:
type: string
description: Order control code (NW=New, CA=Cancel, XO=Change)
enum:
- NW
- CA
- XO
- DC
- HD
- RL
- SC
order:
type: object
properties:
placerOrderNumber:
type: string
fillerOrderNumber:
type: string
orderDateTime:
type: string
format: date-time
orderingProvider:
$ref: '#/components/schemas/Provider'
orderCode:
type: string
description: Code identifying the ordered service
orderCodeSystem:
type: string
description: Coding system (LOINC, CPT, local)
orderCodeText:
type: string
priority:
type: string
enum:
- S
- A
- R
- T
description: 'S=Stat, A=ASAP, R=Routine, T=Timed'
specimenSource:
type: string
clinicalInformation:
type: string
ResultEvent:
type: object
properties:
messageHeader:
$ref: '#/components/schemas/MessageHeader'
patient:
$ref: '#/components/schemas/PatientIdentification'
visit:
$ref: '#/components/schemas/PatientVisit'
order:
type: object
properties:
placerOrderNumber:
type: string
fillerOrderNumber:
type: string
orderCode:
type: string
orderCodeText:
type: string
resultStatus:
type: string
enum:
- F
- P
- C
- X
description: 'F=Final, P=Preliminary, C=Corrected, X=Cancelled'
observations:
type: array
items:
type: object
properties:
observationId:
type: string
observationCode:
type: string
observationCodeText:
type: string
value:
type: string
units:
type: string
referenceRange:
type: string
abnormalFlag:
type: string
enum:
- N
- L
- H
- LL
- HH
- A
description: 'N=Normal, L=Low, H=High, LL=Critical Low, HH=Critical High, A=Abnormal'
resultStatus:
type: string
observationDateTime:
type: string
format: date-time
SchedulingEvent:
type: object
properties:
messageHeader:
$ref: '#/components/schemas/MessageHeader'
eventType:
type: string
description: Scheduling event type (S12-S17)
patient:
$ref: '#/components/schemas/PatientIdentification'
appointment:
type: object
properties:
appointmentId:
type: string
startDateTime:
type: string
format: date-time
endDateTime:
type: string
format: date-time
duration:
type: integer
description: Duration in minutes
appointmentType:
type: string
appointmentReason:
type: string
status:
type: string
enum:
- booked
- cancelled
- rescheduled
- no-show
- completed
provider:
$ref: '#/components/schemas/Provider'
location:
$ref: '#/components/schemas/Location'
FHIRNotificationEvent:
type: object
properties:
resourceType:
type: string
const: Bundle
type:
type: string
const: history
timestamp:
type: string
format: date-time
entry:
type: array
items:
type: object
properties:
fullUrl:
type: string
format: uri
resource:
type: object
properties:
resourceType:
type: string
id:
type: string
request:
type: object
properties:
method:
type: string
enum:
- POST
- PUT
- DELETE
url:
type: string
subscription:
type: object
properties:
id:
type: string
criteria:
type: string
channel:
type: object
properties:
type:
type: string
enum:
- rest-hook
- websocket
- email
endpoint:
type: string
format: uri
DocumentEvent:
type: object
properties:
messageHeader:
$ref: '#/components/schemas/MessageHeader'
patient:
$ref: '#/components/schemas/PatientIdentification'
document:
type: object
properties:
documentId:
type: string
documentType:
type: string
description: Document type code
documentTypeText:
type: string
activityDateTime:
type: string
format: date-time
author:
$ref: '#/components/schemas/Provider'
authenticator:
$ref: '#/components/schemas/Provider'
contentType:
type: string
description: MIME type of the document content
content:
type: string
description: Base64-encoded document content
MessageHeader:
type: object
properties:
messageControlId:
type: string
description: Unique message identifier
messageType:
type: string
description: HL7 message type (e.g., ADT^A01)
triggerEvent:
type: string
description: Trigger event code
sendingApplication:
type: string
sendingFacility:
type: string
receivingApplication:
type: string
receivingFacility:
type: string
messageDateTime:
type: string
format: date-time
processingId:
type: string
enum:
- P
- T
- D
description: 'P=Production, T=Training, D=Debugging'
versionId:
type: string
description: HL7 version (e.g., 2.5.1)
PatientIdentification:
type: object
properties:
patientId:
type: string
description: Internal patient identifier
mrn:
type: string
description: Medical record number
externalIds:
type: array
items:
type: object
properties:
id:
type: string
assigningAuthority:
type: string
idType:
type: string
familyName:
type: string
givenName:
type: string
middleName:
type: string
dateOfBirth:
type: string
format: date
gender:
type: string
enum:
- M
- F
- O
- U
ssn:
type: string
address:
type: object
properties:
streetAddress:
type: string
city:
type: string
state:
type: string
postalCode:
type: string
country:
type: string
phone:
type: string
email:
type: string
PatientVisit:
type: object
properties:
visitNumber:
type: string
patientClass:
type: string
enum:
- I
- O
- E
- P
description: 'I=Inpatient, O=Outpatient, E=Emergency, P=Preadmit'
assignedLocation:
$ref: '#/components/schemas/Location'
admitDateTime:
type: string
format: date-time
dischargeDateTime:
type: string
format: date-time
admitReason:
type: string
admitSource:
type: string
visitType:
type: string
Location:
type: object
properties:
pointOfCare:
type: string
description: Ward or clinic
room:
type: string
bed:
type: string
facility:
type: string
building:
type: string
floor:
type: string
Provider:
type: object
properties:
id:
type: string
npi:
type: string
familyName:
type: string
givenName:
type: string
prefix:
type: string
specialty:
type: string
Diagnosis:
type: object
properties:
code:
type: string
codingSystem:
type: string
description: Coding system (ICD-10, SNOMED)
description:
type: string
type:
type: string
enum:
- admitting
- final
- working
dateTime:
type: string
format: date-time
Insurance:
type: object
properties:
planId:
type: string
planName:
type: string
groupNumber:
type: string
policyNumber:
type: string
subscriberName:
type: string
relationship:
type: string
coordinationOfBenefits:
type: integer
description: 'Priority order (1=Primary, 2=Secondary)'