Overview

Results are the output of an interview. They become available after Buoy’s AI has gathered enough information through its questions to reach a conclusion. Results tell the user about the level of care they may need and the condition matches (diagnoses) that may be relevant to them.

Result types

Results contain two key pieces of information: A differential (comprised of up to three potential diagnoses) and/or a triage recommendation. The "and/or" here is important, as a results output can take two general forms. They are:

  1. A differential and triage result with a differential diagnosis, where each potential condition match (diagnoses) includes specific notes and recommendations.

  2. A triage only result without a potential diagnoses. This type of result is intended for alarming, emergency scenarios.

Results will always have a triage recommendation, but they will not always include a differential. The reason? When a user tells Buoy’s AI something that indicates an emergency situation, the AI will stop asking questions and recommend that the user seek medical care. In these situations, the AI hasn’t asked enough questions to narrow down the potential diagnoses.

Differential and Triage Results

Below are two examples of a differential and triage result. This type of result is the most common result type on Buoy. Differential and triage results will only be generated from the "differential" interview mode.

In the first example below, the user's starting complaint (symptom) was a rash. After some Q&A, Buoy's AI has narrowed down the possible condition matches (diagnoses matches) to three results.

📘

Number of diagnoses in the differential

When a differential is present, the number of condition matches in the results can range from one to three. In many instances, three results will be returned, with the most likely condition match returned first.

Here's what those results look like:

{
    "token": "cc863aeb-35ca-4ae7-8997-b0498a566082",
    "alarm": false,
    "undiagnosed": false,
    "differential": [
        {
            "name": "Allergic reaction to poison ivy/oak/sumac",
            "overview": "Plants of the Toxicodendron genus are found throughout the continental United States, and exposure to these plants is a leading cause of contact dermititis, a medical term used to describe irritation and itching of the skin.",
            "care_notes": "Firstly, to prevent the irritation from getting worse, wash the affected area thoroughly with soap and water. Over-the-counter antihistamines such as Benadryl can help with the swelling and itching. Topical corticosteroids applied directly to the rash can also help relieve some of your symptoms",
            "token": "37cb03c3-7f61-466c-a477-bcf24f600a0f",
            "duration": "2 weeks",
            "could_explain": "This could explain your rash and red rash.",
            "cant_explain": "",
            "usually_causes": "This is typically also associated with face itch, facial skin changes, hand itch, and hiking.",
            "triage": {
                "token": null,
                "level": 1,
                "description": "Self-treatment"
            }
        },
        {
            "name": "Non-specific dermatitis (skin inflammation)",
            "overview": "Dermatitis is the inflammation (\"-itis\") of the skin (\"derma\" is a layer of the skin). It can be caused by any number of causes, from allergies to infections to autoimmune issues. Dermatitis of Normal Variation (also called, \"NOS\") means that all of those other causes of your rash have been ruled out. This is very common.",
            "care_notes": "You can treat this at home and the rash should go away on its own. In the meantime, you can use an anti-histamine (both by mouth OR as an ointment), or a topical corticosteroid to treat the itch and/or pain due to the rash.",
            "token": "32e2b80e-40c4-49c6-b7b9-d320f5e43167",
            "duration": "2 months",
            "could_explain": "This could explain your itchy rash and red rash.",
            "cant_explain": "",
            "usually_causes": "",
            "triage": {
                "token": null,
                "level": 1,
                "description": "Self-treatment"
            }
        },
        {
            "name": "Non-specific skin rash",
            "overview": "A rash is an area of irritated or swollen skin. Often, rashes are unidentifiable and some variation of normal. For example, scratching one's arm causes it to turn red (which is caused by mast cells releasing chemicals into the local area), but that's completely normal.",
            "care_notes": "At this time, you do not need treatment for this rash. If it worsens, you may need to consult a physician.",
            "token": "e8037881-12db-47c1-8d5a-f50f69a7bf90",
            "duration": "2 months",
            "could_explain": "This could explain your rash.",
            "cant_explain": "",
            "usually_causes": "",
            "triage": {
                "token": null,
                "level": 0,
                "description": "Wait and watch"
            }
        }
    ],
    "triage": {
        "token": null,
        "level": 1,
        "description": "Self-treatment"
    },
    "triage_explanation": {
        "explanation": "",
        "potential_condition": null
    }
}

As illustrated in the example above, each potential condition match includes a triage recommendation specific to that condition, along with additional information that may be useful for the user. For example, for the condition match, "Allergic reaction to poison ivy/oak/sumac", the triage recommendation is "Self-treat".

The screen below is another example of differential and triage results. In this interview, the user's presenting complaint was knee pain. After asking some questions, the AI narrowed down the differential, and "Severe kneecap dislocation" returned as one of the possible condition matches. In this instance, the possible condition match included a recommendation for an emergency room visit.

{
    "token": "1cc7c8bd-23ea-4b57-896c-711b863179f3",
    "alarm": true,
    "undiagnosed": false,
    "differential": [
        {
            "name": "Knee bruise",
            "overview": "A knee contusion (bruise) is damage to the blood vessels (veins and capillaries) of the knee, which keeps blood from coming back out from the injured area. It is the second most common type of knee injury, behind a knee sprain.",
            "care_notes": "You can treat this like any other bruise with: rest, ice, compression, and elevation.",
            "token": "0211a200-39d3-4794-ab0d-77056c2de1cf",
            "duration": "2 months",
            "could_explain": "This could explain your knee pain.",
            "cant_explain": "This wouldn't explain your hand pain, hip pain, or joint pain.",
            "usually_causes": "",
            "triage": {
                "token": null,
                "level": 1,
                "description": "Self-treatment"
            }
        },
        {
            "name": "Severe kneecap dislocation",
            "overview": "The kneecap connects the muscles in the front of the thigh to the shinbone (tibia). When the kneecap slips out of the groove, problems and pain often result.",
            "care_notes": "You should seek immediate medical care at an urgent care clinic or ER, because this is a concerning type of knee dislocation that cannot be easily pushed back in place (reduced). A consult from an orthopedic surgeon may be needed to evaluate possible damage.",
            "token": "34352d01-1e79-469b-a928-fbb8841d4122",
            "duration": "1 week",
            "could_explain": "This could explain your knee pain and kneecap dislocation.",
            "cant_explain": "This wouldn't explain your hand pain, hip pain, or joint pain.",
            "usually_causes": "This is typically also associated with knee buckling and sports injury.",
            "triage": {
                "token": null,
                "level": 6,
                "description": "Hospital emergency room"
            }
        },
        {
            "name": "Psoriatic arthritis",
            "overview": "Psoriatic arthritis is a condition that causes joint inflammation. It can develop in people with psoriasis, an immune system problem affecting the skin. It it is more common in people with a family history of psoriatic arthritis or psoriasis. Common symptoms include joint pain, stiffness, and tenderness, as well as patchy skin and brittle nails.",
            "care_notes": "You should consider visiting a medical professional to discuss your symptoms. Psoriatic arthritis can be evaluated with a physical exam, a review of your symptoms and medical history. An X-ray or examination of a joint fluid sample may be performed as well. Once diagnosed, symptoms may be controlled by over-the-counter pain and inflamation medication in mild cases, and prescription medication in more severe cases.",
            "token": "039fa7b6-7b87-4f27-8672-c76d36746f82",
            "duration": "many years",
            "could_explain": "This could explain your hip pain, joint pain, joint stiffness, and knee pain.",
            "cant_explain": "This wouldn't explain your hand pain.",
            "usually_causes": "This is typically also associated with finger pain, rash resembling psoriasis, and sausage digit.",
            "triage": {
                "token": null,
                "level": 3,
                "description": "Primary care doctor"
            }
        }
    ],
    "triage": {
        "token": null,
        "level": 6,
        "description": "Hospital emergency room"
    },
    "triage_explanation": {
        "explanation": "",
        "potential_condition": null
    }
}

🚧

Handling alarms in differential and triage results

It is possible for differential and triage results to contain one or more condition matches that require immediate escalation to an emergency room or EMS. In the example above, "alarm" is set to "true", indicating that an alarming condition match is present in the results. The root triage level is also set to "6 - Hospital emergency room."

In this type of result, the "alarm" and root "triage" fields can be ignored. Your application should present all three condition matches to users in the order that they appear. Depending on the triage level provided in the differential, you may wish to color-code results differently. For example, you may choose to add a red banner to triage level 6 and 7 results to indicate that the individual condition match is alarming. Users should use the additional information provided in the result, such as the condition overview and reasons for and against the condition match, to determine if the condition match returned by the interview aligns with their symptoms closely enough to warrant emergency care.

Triage-Only Results

When Buoy's AI thinks a situation is likely an emergency, it will immediately end the interview and provide the user with triage-only results. Triage-only results are most commonly generated from the "protocol" interview mode, but may also come from the "differential" interview mode.

In the triage-only result example responses below, you'll see that the "differential" field is an empty array and the "undiagnosed" field is set to "true". This indicates that the AI did not reach a conclusion for a potential differential diagnoses. Lastly, notice that the triage_explanation field is now populated with a reason for the given triage level.

{
    "token": "a565a22d-34f2-4c82-9dec-862245a37ce8",
    "alarm": true,
    "undiagnosed”: true,
    "differential": [],
    "triage": {
        "token": "6cd2f003-810c-4bc4-83c4-991abdc25c37",
        "level": 7,
        "description": "Emergency medical service"
    },
    "triage_explanation": {
        "explanation": "Because of your severe chest pain, you may need emergency medical transport.",
        "potential_condition": null
    }
}
{
    "token": "28de839e-40ea-4a09-9687-0487642819a6",
    "alarm": true,
    "undiagnosed": true,
    "differential": [],
    "triage": {
        "token": "24359275-12d3-4777-a8d3-441aeb7527f0",
        "level": 6,
        "description": "Hospital emergency room"
    },
    "triage_explanation": {
        "explanation": "Because of your moderate difficulty breathing, you may have coronavirus.",
        "potential_condition": {
            "name": "coronavirus",
            "overview": "Call ahead so they can prepare for your arrival. If your condition is contagious, this can help prevent it from spreading.",
            "care_notes": "There is no treatment to cure coronavirus (COVID-19), but it is advised to see a healthcare provider for testing. Mild symptoms can be treated the same as one would do for the common cold or flu. Very young children, the elderly, and people with known (heart- or lung) disease or a suppressed immune system can become more ill. These people might need extra support or treatment to help with breathing issues. It is very important to prevent the virus from spreading by washing hands frequently, covering mouth and nose while sneezing and coughing, and by staying away from other people when sick."
        }
    }
}
{
    "token": "f91f475a-9f30-4a54-801d-dad9fe7387fe",
    "alarm": true,
    "undiagnosed": true,
    "differential": [],
    "triage": {
        "token": "8d359b7c-405d-4583-8dd9-4a0d0ddc8aa7",
        "level": 6,
        "description": "Hospital emergency room"
    },
    "triage_explanation": {
        "explanation": "Because of your change in shape (deformity) of leg and knee pain from an injury, you may need to visit your local emergency room right away.",
        "potential_condition": null
    }
}

As you examine the triage-only example results above, note the following:

  • No differential is provided. Additionally, "alarm" and "undiagnosed" are set to "true".
  • The triage level varies to indicate different levels of recommended care.
  • A potential condition match is not always provided.

❗️

Handling instances where Buoy is unable to provide a result

In rare instances, the user's combination of symptoms and responses to questions may lead to Buoy not being able to provide a condition match. In this instance you will receive a result similar to the examples below where undiagnosed will be set to true and the differential field will contain an empty array. In these instances, the triage element will contain a null value for token and level. Additionally, the description element will be "We didn’t find a good match for your symptoms. Please try again by using a different description for the symptom that is bothering you the most." Your client should display the description above to the user and request them to start over.

{
    "token": "9dee5546-7a16-4370-b70c-4aca32a2f1f7",
    "alarm": false,
    "undiagnosed": true,
    "differential": [],
    "triage": {
        "token": null,
        "level": null,
        "description": "We didn’t find a good match for your symptoms. Please try again by using a different description for the symptom that is bothering you the most."
    },
    "triage_explanation": {
        "explanation": "",
        "potential_condition": null
    }
}

Displaying results

There's flexibility in how results can be displayed within your API client. As you build your application, consider the following:

The display order of differential and triage results

Condition matches should always be presented in the order that they appear in the result response body. Higher triage levels should not be displayed first as they may not be the most likely condition match.

How triage recommendations appear

The triage levels reference guide has recommended headers, sub-headers, and descriptions. Additionally, you may wish to color coding to highlight emergency or escalated scenarios. We recommend exploring Buoy's Symptom Checker to see how we've designed our user experiences.

Mapping end-points to appropriate triage levels

Developers are able to use Buoy's symptom checker API in different contexts. For example, your API client may look to direct a user to a provider finder, scheduling system, or nurse line. Your care endpoints should be mapped to the various triage levels described in the triage levels reference guide. We recommend mapping triage level 7 to 911 or another local emergency service. Similarly, triage level 6 is often mapped to urgent care resources, and lower level triage levels are typically mapped to providers (levels 2-5) or education (levels 0-1). For more information, visit how-to map your care endpoints to interview results.