Download OpenAPI specification:Download
An API for managing orders with Innovative Health Diagnostics.
The LabFlow API offers diagnostics-as-a-service features to its partners.
There are many different varieties of workflows that are enabled by the LabFlow API, which are customized based on the specific needs of the partner.
In scenarios where IHDLab will be handling the process of fulfilling patient kit orders, the partner's workflow will begin with a Kit Order.
In scenarios where the partner will provide the kit to the patient through other means, the partner's workflow will begin with a Lab Order.
The LabFlow API offers a single authentication mechanism: API keys. API keys are generated on a per-organization basis and are used to authenticate requests to the API. API keys are passed in the x-api-key
header.
Active partners will be provided with an admin portal to manage its own keys. Contact daas.support@ihdlab.com to request access to the portal or require a staging key for testing.
IHD provides a sample application to illustrate common interactions with the API later.
Q: How do I get my API key?
A: As part of partner onboarding, you will be provided with a One-Time Token URL, that can be consumed via a webbrowser or an API platform built for calling REST APIs. The response payload will contain the API key that can be used for your calls. Once the token is
consumed, it will no longer be available and subsequent calls will receive a 404
error.
If you are using a browser with plugins, the URL may be consumed by one of
the plugins, returning a 404 error, therefore we recommend using a neutral browser profile or a tool like Postman/Insomnia.
Q: Why do the mocked results look different than I'd expect?
A: Every partner's panel configuration is different, so there will be differences with the results and rejections returned. We can provide a customized mock after the original kit is configured by the lab, but until then, a more generic mock will be returned that demonstrates the keys and sample values in the payload.
Q: Why do the mocked results look different than I'd expect?
A: Every partner's panel configuration is different, so there will be differences with the results and rejections returned. We can provide a customized mock after the original kit is configured by the lab, but until then, a more generic mock will be returned that demonstrates the keys and sample values in the payload.
Get all of the active configured kits and their associated details
[- {
- "kitId": "kit-d3544371-6b8e-4dfb-a604-55e07b962d13",
- "panelId": "000999",
- "externalId": "PRTNR-00001",
- "name": "Partner Kit #1",
- "description": "A kit containing a specific test"
}
]
Get a specific kit and its details by kit ID
id required | string Unique identifier for a kit |
{- "kitId": "kit-d3544371-6b8e-4dfb-a604-55e07b962d13",
- "panelId": "000999",
- "externalId": "PRTNR-00001",
- "name": "Partner Kit #1",
- "description": "A kit containing a specific test"
}
[- {
- "id": "order-8655eb89-0b28-44f2-9e2b-5779cf5730b7",
- "status": "NEW",
- "org": {
- "orgId": "MDT99999",
- "orgName": "IHD Partner Organization",
- "providerNpi": "1234567890",
- "location": "99999"
}, - "kit": {
- "kitId": "kit-d3544371-6b8e-4dfb-a604-55e07b962d13",
- "panelId": "999999",
- "registrationCode": "PRTNR-00001",
- "externalId": "partner-external-id",
- "customer": {
- "email": "noreply@ihdlab.com",
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "externalId": "PRTNR-99999",
- "shipping": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}, - "billing": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}
}, - "accession": {
- "externalId": "string",
- "kitBarcode": "string",
- "patient": {
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "email": "noreply@ihdlab.com",
- "phone": "+1-626-555-1234",
- "dob": "1980-01-31",
- "gender": "Male",
- "address": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}, - "results": [
- { }
]
}
}
]
Get all orders for the organization with support for pagination and query param based filter support
orderNo | string Returns orders that have the specified Order No. |
string <email> Returns orders that have the specified email as customer email within order. | |
registrationCode | string Returns orders that have the specified Registration Code. |
orderType | string Enum: "KIT" "LAB" Returns orders that have the specified Order Type. |
orderStatus | string Enum: "NEW" "PENDING_DELIVERY" "IN_TRANSIT" "OUT_FOR_DELIVERY" "DELIVERED" "DELIVERED_TO_PARTNER" "DELIVERY_FAILED" "DELIVERY_ERROR" "CANCELATION_REQUESTED" "CANCELLED" "REGISTERED" "RECEIVED" "PROCESSING" "RESULTED" Returns orders that have the specified Order Status. |
kitId | string Returns orders that are created using the specified Kit Id, should follow |
externalId | string Returns orders that have the specified External Id. |
shipmentTrackingCode | string Returns orders that have the specified Shipment Tracking Code. |
returnShipmentTrackingCode | string Returns orders that have the specified Return Shipment Tracking Code. |
sortBy | string Enum: "dateCreated" "dateLastUpdated" Sort the responses by a set value. |
sortDir | string Enum: "asc" "desc" Sets the direction of the sort order. |
page | integer Page number. If not provided defaults to |
pageSize | integer Page size. If not provided defaults to |
dateCreatedStart | string <date-time> Returns orders created on or after the specified dateCreated. Should follow ISO 8601 format as |
dateCreatedEnd | string <date-time> Returns orders created on or before the specified dateCreated. Should follow ISO 8601 format as |
dateRegisteredStart | string <date-time> Returns orders registered on or after the specified dateRegistered. Should follow ISO 8601 format as |
dateRegisteredEnd | string <date-time> Returns orders registered on or before the specified dateRegistered. Should follow ISO 8601 format as |
dateCanceledStart | string <date-time> Returns orders canceled on or after the specified dateCanceled. Should follow ISO 8601 format as |
dateCanceledEnd | string <date-time> Returns orders canceled on or before the specified dateCanceled. Should follow ISO 8601 format as |
dateCollectedStart | string <date-time> Returns orders collected on or after the specified dateCollected. Should follow ISO 8601 format as |
dateCollectedEnd | string <date-time> Returns orders collected on or before the specified dateCollected. Should follow ISO 8601 format as |
dateResultedStart | string <date-time> Returns orders resulted on or after the specified dateResulted. Should follow ISO 8601 format as |
dateResultedEnd | string <date-time> Returns orders resulted on or before the specified dateResulted. Should follow ISO 8601 format as |
dateLastUpdatedStart | string <date-time> Returns orders last updated on or after the specified dateLastUpdated. Should follow ISO 8601 format as |
dateLastUpdatedEnd | string <date-time> Returns orders last updated on or before the specified dateLastUpdated. Should follow ISO 8601 format as |
{- "results": [
- {
- "id": "order-8655eb89-0b28-44f2-9e2b-5779cf5730b7",
- "status": "NEW",
- "org": {
- "orgId": "MDT99999",
- "orgName": "IHD Partner Organization",
- "providerNpi": "1234567890",
- "location": "99999"
}, - "kit": {
- "kitId": "kit-d3544371-6b8e-4dfb-a604-55e07b962d13",
- "panelId": "999999",
- "registrationCode": "PRTNR-00001",
- "externalId": "partner-external-id",
- "customer": {
- "email": "noreply@ihdlab.com",
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "externalId": "PRTNR-99999",
- "shipping": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}, - "billing": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}
}, - "accession": {
- "externalId": "string",
- "kitBarcode": "string",
- "patient": {
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "email": "noreply@ihdlab.com",
- "phone": "+1-626-555-1234",
- "dob": "1980-01-31",
- "gender": "Male",
- "address": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}, - "results": [
- { }
]
}
}
], - "pagination": {
- "total": 12,
- "currentPage": 1,
- "totalPages": 2,
- "pageSize": 10
}
}
Get a specific order by its order ID
id required | string |
{- "id": "order-8655eb89-0b28-44f2-9e2b-5779cf5730b7",
- "status": "NEW",
- "org": {
- "orgId": "MDT99999",
- "orgName": "IHD Partner Organization",
- "providerNpi": "1234567890",
- "location": "99999"
}, - "kit": {
- "kitId": "kit-d3544371-6b8e-4dfb-a604-55e07b962d13",
- "panelId": "999999",
- "registrationCode": "PRTNR-00001",
- "externalId": "partner-external-id",
- "customer": {
- "email": "noreply@ihdlab.com",
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "externalId": "PRTNR-99999",
- "shipping": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}, - "billing": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}
}, - "accession": {
- "externalId": "string",
- "kitBarcode": "string",
- "patient": {
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "email": "noreply@ihdlab.com",
- "phone": "+1-626-555-1234",
- "dob": "1980-01-31",
- "gender": "Male",
- "address": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}, - "results": [
- { }
]
}
}
Create an order for a kit
kitId required | string [ 1 .. 50 ] characters |
required | object |
{- "kitId": "kit-d3544371-6b8e-4dfb-a604-55e07b962d13",
- "customer": {
- "email": "noreply@ihdlab.com",
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "phone": "+1-626-555-1234",
- "shipping": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US",
- "shippingCarrier": "USPS",
- "shippingType": "Priority"
}, - "billing": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}
}
{- "id": "string",
- "success": true,
- "error": "Error message"
}
Register a kit that has been received by a customer. This will trigger the order to be sent to the lab.
test | string Instantly populates mock order results when set to |
testType | string Enum: "RECEIVED" "REJECTED" "RESULTED" Works when coupled with |
registrationCode required | string |
required | object |
{- "registrationCode": "string",
- "patient": {
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "email": "noreply@ihdlab.com",
- "phone": "+1-626-555-1234",
- "dob": "1980-01-31",
- "gender": "Male",
- "address": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}
}
{- "id": "string",
- "success": true,
- "error": "Error message"
}
Create a lab order directly
test | string Instantly populates mock order results when set to true Only valid in the staging environment. |
testType | string Enum: "RECEIVED" "REJECTED" "RESULTED" Works when coupled with |
kitId required | string |
externalId | string An |
dateRegistered | string <date-time> ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$ |
required | object |
{- "kitId": "string",
- "externalId": "string",
- "dateRegistered": "2023-01-01T11:11:11Z",
- "patient": {
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "email": "noreply@ihdlab.com",
- "phone": "+1-626-555-1234",
- "dob": "1980-01-31",
- "gender": "Male",
- "address": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}
}
{- "id": "string",
- "success": true,
- "error": "Error message"
}
The inbox provides a mechanism for surfacing updates to orders that are deemed relevant to the partner.
The inbox should be checked between 30 and 60 minutes for the most current results.
[- {
- "id": "order-8655eb89-0b28-44f2-9e2b-5779cf5730b7",
- "status": "NEW",
- "org": {
- "orgId": "MDT99999",
- "orgName": "IHD Partner Organization",
- "providerNpi": "1234567890",
- "location": "99999"
}, - "kit": {
- "kitId": "kit-d3544371-6b8e-4dfb-a604-55e07b962d13",
- "panelId": "999999",
- "registrationCode": "PRTNR-00001",
- "externalId": "partner-external-id",
- "customer": {
- "email": "noreply@ihdlab.com",
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "externalId": "PRTNR-99999",
- "shipping": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}, - "billing": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}
}, - "accession": {
- "externalId": "string",
- "kitBarcode": "string",
- "patient": {
- "firstName": "John",
- "middleName": "Peter",
- "lastName": "Doe",
- "email": "noreply@ihdlab.com",
- "phone": "+1-626-555-1234",
- "dob": "1980-01-31",
- "gender": "Male",
- "address": {
- "name": "John Peter Doe",
- "street1": "123 Anywhere St.",
- "street2": "Apt B",
- "city": "Irvine",
- "state": "CA",
- "postalCode": "92610",
- "country": "US"
}
}, - "results": [
- { }
]
}
}
]