Retrieving results
This section describes a basic flow to retrieve the results of a given test. The BioTests API offers a few variants, be sure to refer to the full API Reference.
Retrieving the test id
In order to retrieve the results of a particular test, you will generally need the test ID. This is different from the kit ID or order number. The test ID is shared with you via a webhook notification (it is included in all notifications starting at the LAB_ACCESSIONED
step). If you use other endpoints than the one used in this page, however, be sure to check whether you need the test id or the kit id.
Retrieving the test results
The results can then be retrieved by calling the GET api.hurdle.bio/tests/v2/{testid}
endpoint. The results look like this:
{
"id": "6377bcd6cd7907948cb56ff7",
"kitId": "MMM1234535",
"productCode": "C1BLP05400",
"status": "PROCESSED",
"metadata": {
"dateOfBirth": "1990-05-12",
"gender": "f"
},
"registeredAt": "2022-11-18T17:11:50.243Z",
"specimens": [
{
"id": "6377bcd6cd7907948cb56ff8",
"barcode": "BLC2211006182093",
"status": "PROCESSED",
"testId": "6377bcd6cd7907948cb56ff7",
"processedAt": "2022-11-18T17:14:31.493Z",
"registeredAt": "2022-11-18T17:11:00.000Z",
"accessionedAt": "2022-11-18T17:12:25.043Z",
"specimenType": "CAPILLARY_BLOOD_DBS"
}
],
"biomarkerResults": [
{
"id": "6377bd775428f230ea2a7431",
"result": "20",
"specimenId": "6377bcd6cd7907948cb56ff8",
"testId": "6377bcd6cd7907948cb56ff7",
"interpretation": "NORMAL",
"biomarker": {
"id": "62c2c004cb575368fb1593ed",
"name": "LDL Cholesterol",
"code": "LDL",
"unit": "mg/dl",
"interpretationRule": {
"rule": "RANGE",
"value": {
"NORMAL": [
"<=99"
],
"HIGH": [
">99"
]
}
},
"specimenType": "CAPILLARY_BLOOD_DBS"
}
},
{
"id": "6377bd775428f230ea2a742f",
"result": "20",
"specimenId": "6377bcd6cd7907948cb56ff8",
"testId": "6377bcd6cd7907948cb56ff7",
"interpretation": "LOW",
"biomarker": {
"id": "62c2bfaccb575368fb1593ec",
"name": "Triglycerides",
"code": "TGL",
"unit": "mg/dl",
"interpretationRule": {
"rule": "RANGE",
"value": {
"LOW": [
"<26"
],
"NORMAL": [
">=26",
"<=149"
],
"HIGH": [
">149"
]
}
},
"specimenType": "CAPILLARY_BLOOD_DBS"
}
},
{
"id": "6377bd775428f230ea2a742d",
"result": "20",
"specimenId": "6377bcd6cd7907948cb56ff8",
"testId": "6377bcd6cd7907948cb56ff7",
"interpretation": "DIABETES",
"biomarker": {
"id": "62cea5a521d4c31a5ab7f63a",
"name": "Hemoglobin A1c",
"code": "HbA1c",
"unit": "%",
"interpretationRule": {
"rule": "RANGE",
"value": {
"NORMAL": [
"<5.7"
],
"PRE_DIABETIC": [
">=5.7",
"<=6.4"
],
"DIABETES": [
">6.4"
]
}
},
"specimenType": "CAPILLARY_BLOOD_DBS"
},
# redacted for brevity
}
],
"productDisclaimer": {
"disclaimer": "NULL"
},
"reportUrlPaths": [
"/tests/v2/6377bcd6cd7907948cb56ff7/reports/967f5438-d1f1-43d2-acf7-48c2981fb448"
]
}
For each biomarker in the test, you can read the measurement, interpretation, and reference interpretation rules.
Edge cases
Sometimes things go wrong, and there is no result. For example, if there was not enough blood in a capillary blood test. You may then see error messages as text instead of the actual result, in the result field. The interpretation will then be indefinite
. For example:
# ...
"interpretation": "Indefinite",
"result": "Quantity Not Sufficient"
# ...
Results
The result field contains the result as measured by the lab. It is typically numerical, although it could be categorical for some biomarkers (e.g. DETECTED
). Alternatively, when something goes wrong, an error code can be returned. The list of possible result error codes is as follows:
Error code | Description |
---|---|
Expired Sample | In order to ensure the accuracy of your results we can only accept samples within a set time-window. Unfortunately the time between your sample being taken and tested is too great. Please contact customer services for support. |
Cancelled | Your test has been cancelled. Please contact customer services for more information. |
Clotted | During transit your blood sample has clotted, so it cannot be processed in the lab. This is most commonly caused by not mixing the sample after the blood has been collected. This does not indicate any medical problem. Please contact customer services for support. |
Discarded | The sample was discarded by the lab. This can be for a number of reasons. Please contact customer services for support. |
Haemolysed | During transit the red blood cells in your sample have broken down. This can be due to squeezing your finger too hard, or movement in the post which causes damage to the cells. This does not indicate any medical problem. Please contact customer services for support. |
Icteric | Your blood test has a high level of bilirubin, which may affect the accuracy of results of other tests. We recommend that you seek advice from your doctor to advise you on further or repeat testing. |
Insufficient Sample | There is not enough of the sample in the tube to perform an accurate test. Please contact customer services for support. |
Labelling Error | There was a problem with the label on your sample. In order to ensure that we match the correct sample to the correct patient the lab cannot process this test. Please contact customer services for support. |
Incorrect sample tube | Different sample bottles are used for different tests. It appears your sample had an incorrect lid or tube. Please contact customer services for support. |
Lipaemic | Your test had a very high level of fat (or lipids), which has made it impossible to provide an accurate result. This is most commonly caused by eating a meal high in fats prior to your test. Please contact customer services for support. |
Sample not received by lab | Unfortunately your sample was not received by the lab. Please contact customer services for support. |
Test not suitable | In some cases the lab is not able to ensure the accuracy of the test. In this case they do not complete the test. This can be due to a number of reasons. Please contact customer services for support. |
Error in lab | In some cases the lab is not able to ensure the accuracy of the test. In this case they do not complete the test. This can be due to a number of reasons. Please contact customer services for support. |
Sample contaminated | In rare cases the sample contains an unexpected substance, in which case the lab does not complete the test in order to ensure the accuracy of results released. This can be due to a number of reasons. Please contact customer services for support. |
Triglycerides too high | Your test had a very high level of triglycerides, which has made it impossible to provide an accurate result. We recommend that you seek advice from your doctor to advise you on further or repeat testing. |
Test not recognised | It is not possible to provide a result as the test requested was not recognised in the lab, or some details were missing from the order. Please contact customer services for support. |
White cells damaged | The white cells in your sample have broken down in transit, or clumped together, meaning that it is not possible to provide an accurate result. Please contact customer services for support. |
Not Calculated | The lab was unable to carry out a calculation based on your sample results. This may be due to problems with the sample. Please contact customer services for support. |
Incorrect sample type | The type of sample received by the lab was not appropriate for the type of bottle used or test requested. Please contact customer services for support. |
Sample Pending Review | Your sample returned an unexpected result and needs to be reprocessed to ensure that it is accurate. Please contact customer services for support. |
Blood tube expired | The sample bottle has expired, so the accuracy of the test cannot be guaranteed. Please contact customer services for support. |
Indeterminate | A clear or definite result cannot be returned. Please contact customer services for support. |
No form | A completed sample form was not received with your sample. Please contact customer services for support. |
Test sample | This sample was marked as a test sample only. If you have received this error please contact customer services for support. |
Crystals in sample | Crystals were found in the sample, which can be caused by high levels of minerals in your blood or urine. Please discuss this result with your doctor. |
Discuss with doctor | This result cannot be interpreted on its own. You will need to discuss this with your doctor, who will assess the significance of this value. |
Interpretation codes
The interpretation field of a result can be:
Indefinite
: this would happen if the result is an error (see above), or if for some reason an interpretation could not be applied (this would be the case for some biomarkers based on the phase of the fertility cycle, when we don't know which phase the test taker was in)- Any of the following interpretation codes. Which codes are sent depend on each biomarker, and can depend on the lab (this is why some interpretations seem very similar to others). Note that the meaning detailed in the following table is only indicative: the official interpretation comes from a lab and consists only of that one keyword.
Interpretation code | Meaning |
---|---|
NORMAL | Result falls within the range of normal values for this patient |
LOW | The result is lower than expected for this patient, so medical assessment is advised |
BORDERLINE_HIGH* | The result is on the upper limit of normal for this patient, so medical assessment is advised |
HIGH | The result is higher than expected for this patient, so medical assessment is advised |
VERY_LOW* | The result is significantly lower than expected for this patient, so urgent medical assessment is advised |
VERY_HIGH* | The result is significantly higher than expected for this patient, so urgent medical assessment is advised |
CRITICAL_LOW | The result could indicate an immediate danger to the patient which requires an urgent medical assessment |
CRITICAL_HIGH | The result could indicate an immediate danger to the patient which requires an urgent medical assessment |
CRITICAL* | The result could indicate an immediate danger to the patient which requires an urgent medical assessment |
MILDLY_DEFICIENT* | The result is a little lower than expected for this patient |
SEVERELY_DEFICIENT* | The result is a much lower than the ideal level and needs a medical review |
DEFICIENT | The result is lower than expected for this patient, so medical assessment is advised |
INSUFFICIENT | The result is a little lower than expected for this patient, so medical assessment is advised |
ADEQUATE | Result falls within the range of normal values for this patient |
OPTIMAL | Result falls within the range of ideal values for this patient |
UNDETECTED* | No trace was found in the sample |
DETECTED* | The element or pathogen being investigated was found in the sample, so medical assessment is advised |
PRE_DIABETIC | The result suggests the patient is prediabetic and needs appropriate medical advice |
DIABETES_/_GLYCEMIC_CONTROL | Where the patient doesn’t have a diagnosis of diabetes, this result requires immediate medical review. Where the patient already has a diagnosis of diabetes, this result suggests good control. |
DIABETES | Where the patient doesn’t have a diagnosis of diabetes, this result requires immediate medical review. Where the patient already has a diagnosis of diabetes, this result suggests poor control. |
CONSIDER_TOXICITY | The result is significantly higher than expected for this patient, so urgent medical assessment is advised |
Items marked with an (*)asterisk are considered rarely used (few biomarkers).
Note that the interpretation rule relevant to the patient is returned with each result.
Note about critical results
When a lab detects a critical result, an escalation process immediately starts - before the results are even published. Some labs will then return this result as critical, while others will just report them as high or low. This means that:
- results that were critical and were escalated might not be flagged as critical in the results
- results that are flagged as critical do not require specific treatment as the process has already happened or started in parallel.
Units
The unit returned with the result will be one of the following:
mmol/L
g/L
IU/L
U/L
mg/L
pmol/L
nmol/L
mU/L
ug/L
%
mg/dL
IU/mL
x10^12/L
L/L
fL
x10^9/L
mmol/mol
mL/min/1.73m^2
pg/cell
[blank]
ratio
pg
ng/mL
pg/mL
ng/dL
µU/mL
kU/L
µmol/L
mIU/mL
µg/L
age acceleration (years)
mIU/L
kg/m2
MET minutes
h
score
servings/day
servings/week
µIU/mL
Updated 12 months ago