Orion Health · AsyncAPI Specification

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 EHRFHIRHealth ITHealthcareHIEHL7IntegrationInteroperabilityPopulation HealthAsyncAPIWebhooksEvents

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

Raw ↑
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)'