Orion Health Rhapsody Integration API

API for healthcare integration engine enabling connectivity between disparate healthcare systems.

Documentation

Specifications

Other Resources

OpenAPI Specification

orion-rhapsody-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Orion Health Rhapsody Integration API
  description: >-
    The Orion Health Rhapsody Integration Engine API provides management and
    monitoring capabilities for the Rhapsody healthcare integration platform.
    It enables programmatic control of integration routes, communication points,
    message queues, and system monitoring. Rhapsody supports HL7v2, FHIR, CDA,
    X12, DICOM, and other healthcare messaging standards for connecting
    disparate healthcare systems.
  version: 1.0.0
  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
  termsOfService: https://www.orionhealth.com/terms-of-service
servers:
  - url: https://api.orionhealth.com/rhapsody
    description: Rhapsody Management API
  - url: https://sandbox.orionhealth.com/rhapsody
    description: Sandbox Rhapsody API
security:
  - oauth2: []
  - bearerAuth: []
  - apiKeyAuth: []
tags:
  - name: Communication Points
    description: Communication point configuration and management
  - name: Configuration
    description: Engine configuration management
  - name: Lookup Tables
    description: Lookup table management for data mapping
  - name: Message Queues
    description: Message queue monitoring and management
  - name: Messages
    description: Message search, inspection, and reprocessing
  - name: Monitoring
    description: System health and performance monitoring
  - name: Routes
    description: Integration route management
paths:
  /routes:
    get:
      operationId: listRoutes
      summary: Orion Health List integration routes
      description: >-
        Retrieve all integration routes configured in the Rhapsody engine,
        including their current operational status.
      tags:
        - Routes
      parameters:
        - name: status
          in: query
          description: Filter by route status
          schema:
            type: string
            enum:
              - started
              - stopped
              - error
              - disabled
        - name: folder
          in: query
          description: Filter by route folder path
          schema:
            type: string
        - name: search
          in: query
          description: Search routes by name
          schema:
            type: string
        - $ref: '#/components/parameters/PageOffset'
        - $ref: '#/components/parameters/PageLimit'
      responses:
        '200':
          description: List of integration routes
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Route'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /routes/{routeId}:
    get:
      operationId: getRoute
      summary: Orion Health Get route details
      description: Retrieve detailed information about a specific integration route.
      tags:
        - Routes
      parameters:
        - name: routeId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Route details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteDetail'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /routes/{routeId}/start:
    post:
      operationId: startRoute
      summary: Orion Health Start a route
      description: Start a stopped integration route to begin processing messages.
      tags:
        - Routes
      parameters:
        - name: routeId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Route started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteStatus'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Route already started or in error state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /routes/{routeId}/stop:
    post:
      operationId: stopRoute
      summary: Orion Health Stop a route
      description: Stop an active integration route from processing messages.
      tags:
        - Routes
      parameters:
        - name: routeId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Route stopped
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteStatus'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /routes/{routeId}/restart:
    post:
      operationId: restartRoute
      summary: Orion Health Restart a route
      description: Restart an integration route by stopping and starting it.
      tags:
        - Routes
      parameters:
        - name: routeId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Route restarted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteStatus'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /routes/{routeId}/statistics:
    get:
      operationId: getRouteStatistics
      summary: Orion Health Get route processing statistics
      description: >-
        Retrieve message processing statistics for a specific route
        including throughput, error rates, and processing times.
      tags:
        - Monitoring
        - Routes
      parameters:
        - name: routeId
          in: path
          required: true
          schema:
            type: integer
        - name: periodStart
          in: query
          schema:
            type: string
            format: date-time
        - name: periodEnd
          in: query
          schema:
            type: string
            format: date-time
        - name: interval
          in: query
          description: Statistics aggregation interval
          schema:
            type: string
            enum:
              - minute
              - hour
              - day
              - week
      responses:
        '200':
          description: Route statistics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteStatistics'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /communication-points:
    get:
      operationId: listCommunicationPoints
      summary: Orion Health List communication points
      description: >-
        Retrieve all communication points (input and output connectors)
        configured in the Rhapsody engine.
      tags:
        - Communication Points
      parameters:
        - name: type
          in: query
          description: Communication point type
          schema:
            type: string
            enum:
              - input
              - output
              - bidirectional
        - name: protocol
          in: query
          description: Communication protocol
          schema:
            type: string
            enum:
              - tcp
              - http
              - https
              - sftp
              - database
              - file
              - web-service
              - mllp
              - smtp
              - pop3
        - name: status
          in: query
          schema:
            type: string
            enum:
              - started
              - stopped
              - error
              - disabled
        - $ref: '#/components/parameters/PageOffset'
        - $ref: '#/components/parameters/PageLimit'
      responses:
        '200':
          description: List of communication points
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CommunicationPoint'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /communication-points/{commPointId}:
    get:
      operationId: getCommunicationPoint
      summary: Orion Health Get communication point details
      description: Retrieve detailed configuration of a specific communication point.
      tags:
        - Communication Points
      parameters:
        - name: commPointId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Communication point details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommunicationPointDetail'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /communication-points/{commPointId}/start:
    post:
      operationId: startCommunicationPoint
      summary: Orion Health Start a communication point
      description: Start a stopped communication point.
      tags:
        - Communication Points
      parameters:
        - name: commPointId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Communication point started
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                  status:
                    type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /communication-points/{commPointId}/stop:
    post:
      operationId: stopCommunicationPoint
      summary: Orion Health Stop a communication point
      description: Stop an active communication point.
      tags:
        - Communication Points
      parameters:
        - name: commPointId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Communication point stopped
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                  status:
                    type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /queues:
    get:
      operationId: listQueues
      summary: Orion Health List message queues
      description: >-
        Retrieve all message queues in the Rhapsody engine with their
        current depth and status.
      tags:
        - Message Queues
      parameters:
        - name: routeId
          in: query
          description: Filter by route ID
          schema:
            type: integer
        - name: hasErrors
          in: query
          description: Only show queues with errors
          schema:
            type: boolean
        - $ref: '#/components/parameters/PageOffset'
        - $ref: '#/components/parameters/PageLimit'
      responses:
        '200':
          description: List of message queues
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Queue'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /queues/{queueId}:
    get:
      operationId: getQueue
      summary: Orion Health Get queue details
      description: Retrieve details of a specific message queue.
      tags:
        - Message Queues
      parameters:
        - name: queueId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Queue details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueueDetail'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /queues/{queueId}/messages:
    get:
      operationId: listQueueMessages
      summary: Orion Health List messages in a queue
      description: Retrieve messages currently held in a specific queue.
      tags:
        - Message Queues
        - Messages
      parameters:
        - name: queueId
          in: path
          required: true
          schema:
            type: integer
        - name: status
          in: query
          schema:
            type: string
            enum:
              - queued
              - error
              - held
        - $ref: '#/components/parameters/PageOffset'
        - $ref: '#/components/parameters/PageLimit'
      responses:
        '200':
          description: List of messages
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Message'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /messages/{messageId}:
    get:
      operationId: getMessage
      summary: Orion Health Get message details
      description: >-
        Retrieve the full content and metadata of a specific message,
        including its processing history.
      tags:
        - Messages
      parameters:
        - name: messageId
          in: path
          required: true
          schema:
            type: integer
        - name: includeBody
          in: query
          description: Include message body content
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: Message details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageDetail'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /messages/search:
    get:
      operationId: searchMessages
      summary: Orion Health Search messages
      description: >-
        Search for messages across all routes and queues using various
        criteria including message content, type, and date range.
      tags:
        - Messages
      parameters:
        - name: query
          in: query
          description: Full-text search query against message content
          schema:
            type: string
        - name: messageType
          in: query
          description: HL7 message type (e.g., ADT^A01)
          schema:
            type: string
        - name: routeId
          in: query
          schema:
            type: integer
        - name: status
          in: query
          schema:
            type: string
            enum:
              - processed
              - error
              - held
              - queued
        - name: dateFrom
          in: query
          schema:
            type: string
            format: date-time
        - name: dateTo
          in: query
          schema:
            type: string
            format: date-time
        - name: patientId
          in: query
          description: Search by patient identifier in message content
          schema:
            type: string
        - $ref: '#/components/parameters/PageOffset'
        - $ref: '#/components/parameters/PageLimit'
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Message'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /messages/{messageId}/reprocess:
    post:
      operationId: reprocessMessage
      summary: Orion Health Reprocess a message
      description: Resubmit a held or errored message for reprocessing through its route.
      tags:
        - Messages
      parameters:
        - name: messageId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Message resubmitted for processing
          content:
            application/json:
              schema:
                type: object
                properties:
                  messageId:
                    type: integer
                  status:
                    type: string
                  reprocessedAt:
                    type: string
                    format: date-time
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Message cannot be reprocessed in current state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /monitoring/dashboard:
    get:
      operationId: getMonitoringDashboard
      summary: Orion Health Get monitoring dashboard
      description: >-
        Retrieve an overview of the Rhapsody engine status including
        system health, active routes, queue depths, and error counts.
      tags:
        - Monitoring
      responses:
        '200':
          description: Dashboard data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dashboard'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /monitoring/health:
    get:
      operationId: getHealthStatus
      summary: Orion Health Get system health status
      description: >-
        Retrieve the overall health status of the Rhapsody engine
        including component-level health checks.
      tags:
        - Monitoring
      security: []
      responses:
        '200':
          description: System is healthy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthStatus'
        '503':
          description: System is unhealthy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthStatus'
  /monitoring/alerts:
    get:
      operationId: listMonitoringAlerts
      summary: Orion Health List monitoring alerts
      description: Retrieve active monitoring alerts for the Rhapsody engine.
      tags:
        - Monitoring
      parameters:
        - name: severity
          in: query
          schema:
            type: string
            enum:
              - info
              - warning
              - error
              - critical
        - name: acknowledged
          in: query
          schema:
            type: boolean
        - $ref: '#/components/parameters/PageOffset'
        - $ref: '#/components/parameters/PageLimit'
      responses:
        '200':
          description: List of alerts
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/MonitoringAlert'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /monitoring/alerts/{alertId}/acknowledge:
    post:
      operationId: acknowledgeAlert
      summary: Orion Health Acknowledge a monitoring alert
      description: Acknowledge a monitoring alert to indicate it has been reviewed.
      tags:
        - Monitoring
      parameters:
        - name: alertId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                note:
                  type: string
      responses:
        '200':
          description: Alert acknowledged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitoringAlert'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /lookup-tables:
    get:
      operationId: listLookupTables
      summary: Orion Health List lookup tables
      description: >-
        Retrieve lookup tables used for data transformation and mapping
        within integration routes.
      tags:
        - Lookup Tables
      parameters:
        - name: search
          in: query
          description: Search by table name
          schema:
            type: string
        - $ref: '#/components/parameters/PageOffset'
        - $ref: '#/components/parameters/PageLimit'
      responses:
        '200':
          description: List of lookup tables
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/LookupTable'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /lookup-tables/{tableId}:
    get:
      operationId: getLookupTable
      summary: Orion Health Get lookup table contents
      description: Retrieve the contents of a specific lookup table.
      tags:
        - Lookup Tables
      parameters:
        - name: tableId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Lookup table contents
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LookupTableDetail'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateLookupTable
      summary: Orion Health Update lookup table contents
      description: Replace the contents of a lookup table.
      tags:
        - Lookup Tables
      parameters:
        - name: tableId
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LookupTableUpdate'
      responses:
        '200':
          description: Lookup table updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LookupTableDetail'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /lookup-tables/{tableId}/lookup:
    get:
      operationId: lookupValue
      summary: Orion Health Look up a value
      description: Look up a value in a specific lookup table by key.
      tags:
        - Lookup Tables
      parameters:
        - name: tableId
          in: path
          required: true
          schema:
            type: integer
        - name: key
          in: query
          required: true
          description: Lookup key
          schema:
            type: string
        - name: column
          in: query
          description: Column name to return
          schema:
            type: string
      responses:
        '200':
          description: Lookup result
          content:
            application/json:
              schema:
                type: object
                properties:
                  key:
                    type: string
                  value:
                    type: string
                  row:
                    type: object
                    additionalProperties:
                      type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Key not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /configuration/engine:
    get:
      operationId: getEngineConfiguration
      summary: Orion Health Get engine configuration
      description: Retrieve the current Rhapsody engine configuration settings.
      tags:
        - Configuration
      responses:
        '200':
          description: Engine configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineConfiguration'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /configuration/components:
    get:
      operationId: listComponents
      summary: Orion Health List installed components
      description: >-
        List all installed Rhapsody components including filters,
        communication point types, and custom modules.
      tags:
        - Configuration
      parameters:
        - name: type
          in: query
          schema:
            type: string
            enum:
              - filter
              - communication-point
              - module
              - connector
        - $ref: '#/components/parameters/PageOffset'
        - $ref: '#/components/parameters/PageLimit'
      responses:
        '200':
          description: List of installed components
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Component'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.orionhealth.com/oauth2/token
          scopes:
            rhapsody:read: Read access to Rhapsody engine
            rhapsody:write: Write access to Rhapsody engine
            rhapsody:admin: Administrative access
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
  parameters:
    PageOffset:
      name: offset
      in: query
      description: Number of items to skip
      schema:
        type: integer
        minimum: 0
        default: 0
    PageLimit:
      name: limit
      in: query
      description: Maximum number of items to return
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
  schemas:
    Route:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        folderPath:
          type: string
        status:
          type: string
          enum:
            - started
            - stopped
            - error
            - disabled
        inputCommPointCount:
          type: integer
        outputCommPointCount:
          type: integer
        filterCount:
          type: integer
        messagesProcessed:
          type: integer
          description: Total messages processed since last restart
        errorCount:
          type: integer
        lastMessageTime:
          type: string
          format: date-time
    RouteDetail:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        folderPath:
          type: string
        status:
          type: string
          enum:
            - started
            - stopped
            - error
            - disabled
        inputCommunicationPoints:
          type: array
          items:
            $ref: '#/components/schemas/CommunicationPoint'
        outputCommunicationPoints:
          type: array
          items:
            $ref: '#/components/schemas/CommunicationPoint'
        filters:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              type:
                type: string
              order:
                type: integer
        messagesProcessed:
          type: integer
        errorCount:
          type: integer
        averageProcessingTimeMs:
          type: number
        lastMessageTime:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
    RouteStatus:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        status:
          type: string
          enum:
            - started
            - stopped
            - error
            - disabled
        statusChangedAt:
          type: string
          format: date-time
    RouteStatistics:
      type: object
      properties:
        routeId:
          type: integer
        routeName:
          type: string
        period:
          type: object
          properties:
            start:
              type: string
              format: date-time
            end:
              type: string
              format: date-time
        totalMessages:
          type: integer
        successfulMessages:
          type: integer
        errorMessages:
          type: integer
        averageProcessingTimeMs:
          type: number
        maxProcessingTimeMs:
          type: number
        messagesPerSecond:
          type: number
        timeline:
          type: array
          items:
            type: object
            properties:
              timestamp:
                type: string
                format: date-time
              messagesProcessed:
                type: integer
              errors:
                type: integer
              avgProcessingTimeMs:
                type: number
    CommunicationPoint:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        type:
          type: string
          enum:
            - input
            - output
            - bidirectional
        protocol:
          type: string
          enum:
            - tcp
            - http
            - https
            - sftp
            - database
            - file
            - web-service
            - mllp
            - smtp
            - pop3
        status:
          type: string
          enum:
            - started
            - stopped
            - error
            - disabled
        routeId:
          type: integer
        connectionCount:
          type: integer
    CommunicationPointDetail:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        type:
          type: s

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/orion/refs/heads/main/openapi/orion-rhapsody-openapi.yml