Mailbox

Status Request

View the MailBox API Reference for detailed request body information.

This endpoint should be used to obtain the status of Script and/or Fill requests previously submitted. No request body is required.
HealthDyne employs a mailbox style order status reporting methodology. Therefore, when an order has a status update, the status message is delivered to the partner’s mailbox. This status message remains in the mailbox until the status message is retrieved by the partner and receipt of the message is acknowledged.
A maximum of 100 status messages will be returned with a single request. Multiple requests may be necessary to receive all outstanding status messages. Please refer to the Status Codes returned to determine if all messages have been retrieved.
Note, the status messages are not considered delivered and removed from the mailbox until the receipt of the message is acknowledged by using a POST method with the batchId as a query parameter. Hence, another status request should not be submitted until the previous status response is acknowledged.

Server

Only https connections are accepted.
REQUEST TYPEENDPOINT
GET or Post (Test)api.uat-healthdyne.com/v2/mailbox
GET or Post (Prod)api.healthdyne.com/v2/mailbox

Header

KeyValue
Acceptapplication/json
Content-Typeapplication/json
HealthDyne-Subscription-KeyProvided by HealthDyne

GET Request

Sample GET Request

<https://api.uat-healthdyne.com/v2/mailbox?messageCount=10>

This tells the API to only respond with 10 messages. The default message count is 25 messages.

GET Status Response

The below table lists the potential response codes that can be received in response to a GET request.

CodeDescription
200All messages delivered
204No messages
206Max allowed messages delivered - submit another request for remaining messages
400Bad Request – typically header is missing key
401Unauthorized
500Internal Server Error

Sample Status Response

{
    "batchId": "1000018",
    "count": 9,
    "approximateRemainingCount": 0,
    "messageList": [
        {
            "eventId": "1000003",
            "eventDateUtc": "2023-05-08T19:14:55.22818Z",
            "eventType": "RXTRANSFER",
            "scriptKey": "1000001",
            "status": "Transferred",
            "statusMessage": "The Rx has been transferred successfully",
            "detail": {
                "patientKey": "1000002",
                "rxNumber": "RX12345"
            }
        },
        {
            "eventId": "1000005",
            "eventDateUtc": "2023-05-08T19:15:55.22818Z",
            "eventType": "RXTRANSFER",
            "scriptKey": "1000004",
            "status": "Rejected",
            "statusMessage": "The file [http://somedomain.com/files/12548.png] could not be retrieved.",
            "detail": {
                "patientKey": "1000002",
                "rxNumber": null
            }
        }
    ]
}

POST Request

Sample POST Request

<https://api.uat-healthdyne.com/v2/mailbox?batchId=1000018>

Sample POST Response

{ 
    "batchId": "1000018", 
    "status": "The messages were marked read.", 
    "eventId": [ 
        "304e3794", 
        "1a80023e", 
        "fc9842da", 
        "8af06bfd", 
        "ed83822b", 
        "476316d9", 
        "0b543def", 
        "f2b31796", 
        "661d01f2" 
    ] 
}

Status Event Types:

RxTransfer Status Events

Transferred

Once the PNG or XML has been successfully downloaded, HealthDyne will store the file and create the prescription record in HealthDyne's pharmacy management system. Once the Rx has been created, HealthDyne will generate a ‘Transferred’ event.

Sample "Transferred" event

{
  "eventId": "1000003",
  "eventDateUtc": "2023-05-08T19:14:55.22818Z",
  "eventType": "RXTRANSFER",
  "scriptKey": "1000001",
  "status": "Transferred",
  "statusMessage": "The Rx has been transferred successfully",
  "detail": {
    "patientKey": "1000002",
    "rxNumber": "RX12345"
   }
}

Rejected

When a RxTransfer request can't be validated, HealthDyne generates a rejection event with status "Rejected". RxTransfers will be rejected if the PNG or XML download was unsuccessful after two (2) failed attempts.

Sample "Rejected" event

{
  "eventId": "1000005",
  "eventDateUtc": "2023-05-08T19:15:55.22818Z",
  "eventType": "RXTRANSFER",
  "scriptKey": "1000004",
  "status": "Rejected",
  "statusMessage": "The file [http://somedomain.com/files/12548.png] could not be retrieved.",
  "detail": {
    "patientKey": "1000002",
    "rxNumber": null
  }
}

Fill Request Status Events

Submitted

HealthDyne will create the order after receiving a Fill Request by sending create order command in the downstream pharmacy management system. Once the order has been successfully created, HealthDyne will generate a ‘submitted’ order status message and queues the event up for the client to retrieve it.

sample "Submitted" event

{
  "eventId": "1000007",
  "eventDateUtc": "2023-05-08T19:16:55.22818Z",
  "eventType": "FILLREQUEST",
  "fillRequestKey": "1000006",
  "status": "Submitted",
  "statusMessage": "The order is being processed",
  "detail": {
    "orderNumber": "12345"
  }
}

RxVerified

A "RxVerified" event will be generated once a Pharmacist has completed PV1 and released the prescription for fulfillment.

📃

NOTE: This is at Rx level (i.e. for each Rx)

sample "RxVerified" event

{
  "eventId": "1000008",
  "eventDateUtc": "2023-05-08T19:17:55.22818Z",
  "eventType": "FILLREQUEST",
  "fillRequestKey": "1000006",
  "status": "RxVerified",
  "statusMessage": "The Rx has been verified by the pharmacist (PV1)",
  "detail": {
    "orderNumber": "12345",
    "scriptKey": "1000004",
    "dispenseDrug": {
      "dispenseNDC": "780000001290",
      "dispenseDrugName": "Tylenol",
      "daySupply": 30,
      "prescribedQuantity": 60,
      "labelDirections": "TAKE 1 TABLET DAILY",
      "dosageForm": "TABLET",
      "drugStrength": "200",
      "drugStrengthUOM": "Mg"
    }
  }
}

Rejected

If order creation errors/rejects; then Rejected event will be created. Possible reasons for system to reject order request include existing open orders for an Rx.

Sample "Rejected" event

{
  "eventId": "1000012",
  "eventDateUtc": "2023-05-08T19:19:55.22818Z",
  "eventType": "FILLREQUEST",
  "fillRequestKey": "1000010",
  "status": "Rejected",
  "statusMessage": "An open order exists for one or more RXs"
}

RxIssue

When an Order is successfully created, and then one of the Rx is subsequently rejected by pharmacy (reason such as: Insurance reason/DUR/Pharmacy unable to read/understand the prescription)- then RxIssue event will be pushed.

📃

NOTE: This is at Rx level (i.e. for each Rx)

Sample "RxIssue" event

{
  "eventId": "1000016",
  "eventDateUtc": "2023-05-08T19:20:55.22818Z",
  "eventType": "FILLREQUEST",
  "fillRequestKey": "1000013",
  "status": "RxIssue",
  "statusMessage": "ALLERGY/MEDICAL CONDITION INFO",
  "detail": {
    "orderNumber": "56789",
    "scriptKey": "1000003",
    "issueMessage": "Clarification Required - Prescriber"
  }
}

The 'statusMessage' field will show the pharmacy defined reason for the RxIssue status. Please see the Status Message table for a list of issues.

PATIENT PROFILECREDIT CARD
NDC NOT COVEREDDOCTOR DENIED/NON-RESPONSE
ORDER ISSUEPRIOR AUTHORIZATION REQUIRED
HIGH COPAYALLERGY/MEDICAL CONDITION INFO
PAYMENT REQUIREDCOPAY ASSISTANCE ENROLLMENT MANDATORY
RPH NEEDS MEMBER CONSULTATIONSHORT-TERM ANTIBIOTICS MUST BE FILLED LOCALLY
SPECIALTY MEDICATION MUST BE FILLED THROUGH SPECIALTY PHARMACYHEALTHDYNE RX REJECTED
INSURANCE ISSUE

Additional details will be provided via free form text notes from the pharmacy in the 'issueMessage' field. For example, "Clarification required from prescriber"

📃

The 'issueMessage' field is a free form text field and can vary in response.

RxCancel

When a Rx or multiple Rx(s) in the order have been canceled pharmacy, HealthDyne will send an update at Rx level for each Rx in the order notifying of the canceled status. By default, unless order split has been configured for the client, the entire order will be cancelled when there is an issue with any of the Rx in the same order. Cancelled Rx that have not also been rejected due to "RxIssue" are available to be assigned to a new Fill Request without additional action via the Script API.

📃

NOTE: This is at Rx level (i.e. for each Rx)

Sample "RxCancel" event

{
  "eventId": "1000017",
  "eventDateUtc": "2023-05-08T19:20:55.22818Z",
  "eventType": "FILLREQUEST",
  "fillRequestKey": "1000013",
  "status": "RxCancel",
  "statusMessage": "Order canceled",
  "detail": {
    "orderNumber": "56789",
    "scriptKey": "1000003"
  }
}

Shipped

Once the Rx has been shipped successfully by pharmacy, then send update for each Rx within the order will be sent to client. This event will be ‘Shipped’ event sent for each Rx.

📃

NOTE: This is at Rx level (i.e. for each Rx)

Sample "Shipped" event

{
  "eventId": "1000009",
  "eventDateUtc": "2023-05-08T19:18:55.22818Z",
  "eventType": "FILLREQUEST",
  "fillRequestKey": "1000006",
  "status": "RxShipped",
  "statusMessage": "The Rx has been shipped",
  "detail": {
    "orderNumber": "12345",
    "scriptKey": "1000004",
    "shipments": [
      {
        "trackingNumber": "1X00000000000001",
        "shipmentCode": "UPS 1D",
        "weight": 1.2,
        "cost": 3.45
      }
    ],
    "fillNumber": 2
  }
}