Skip to main content

Requesting results

Lab results are available as FHIR DiagnosticReport resources.

You can search for DiagnosticReports using various properties.

For example, you can search by Patient:

curl https://api.kit.com/fhir/R4/DiagnosticReport?patient=Patient/$PATIENT_ID \
-H "Authorization: Bearer $MY_ACCESS_TOKEN"

For example, you can search by ServiceRequest:
curl https://api.kit.com/fhir/R4/DiagnosticReport?based-on=ServiceRequest/$SERVICE_REQUEST_ID \
-H "Authorization: Bearer $MY_ACCESS_TOKEN"

The result of a DiagnosticReport search will be a Bundle resource. Matching reports will be in the Bundle "entry".

A DiagnosticReport is a collection of resources:

{
"resourceType": "DiagnosticReport",
"id": "101",
"status": "final",
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "58410-2",
"display": "Complete blood count (hemogram) panel - Blood by Automated count"
},
{
"code": "CBC",
"display": "MASTER FULL BLOOD COUNT"
}
],
"text": "Complete Blood Count"
},
"subject": {
"reference": "Patient/pat2"
},
"performer": [
{
"reference": "Organization/1832473e-2fe0-452d-abe9-3cdb9879522f",
"display": "Acme Laboratory, Inc"
}
],
"result": [
{
"reference": "Observation/r1"
},
...
]
}

Individual lab results are represented by Observation resources:

{
"resourceType": "Observation",
"id": "r1",
"status": "final",
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "718-7",
"display": "Hemoglobin [Mass/volume] in Blood"
}
],
"text": "Haemoglobin"
},
"subject": {
"reference": "Patient/pat2"
},
"performer": [
{
"reference": "Organization/1832473e-2fe0-452d-abe9-3cdb9879522f",
"display": "Acme Laboratory, Inc"
}
],
"valueQuantity": {
"value": 176,
"unit": "g/L",
"system": "http://unitsofmeasure.org",
"code": "g/L"
},
"referenceRange": [
{
"low": {
"value": 135,
"unit": "g/L",
"system": "http://unitsofmeasure.org",
"code": "g/L"
},
"high": {
"value": 180,
"unit": "g/L",
"system": "http://unitsofmeasure.org",
"code": "g/L"
}
}
]
}

For more information about FHIR DiagnosticReport:

Failure modes for service requests happen for example, when sample is insufficient or does not pass quality control. In this case the ServiceRequest will have an updated status in the ServiceRequest.orderDetail object.

For example

{
"orderDetail": [
{
"text": "VOIDED",
"coding": [
{
"system": "https://kit.com/statusReason",
"code": "QNS"
}
]
}
]
}

The following VOIDED states are possible

Voided:

  • "QNS"
  • "Shipped outside of sample stability"