Suggest Related concepts

Providing initial observations is crucial for the /diagnosis to return best possible results. There are different ways of gathering the initial evidence from a user, with the /search and /parse endpoints being the most useful. The /suggest endpoint aims to further enhance this process in interactive applications by encouraging users to provide additional health information.

Every evidence gathered by way of /suggest should be marked with "source": "suggest", e.g.

{
    ...
    "evidence": [
      {"id": "s_21", "choice_id": "present", "source": "suggest"},
      {"id": "s_13", "choice_id": "absent", "source": "suggest"},
      {"id": "s_102", "choice_id": "absent", "source": "suggest"}
    ]
}

/suggest endpoint has 3 modes, each described in detail in the following subsections.

Similar symptoms (default)

{"suggest_method": "symptoms"} is a default mode. It returns symptoms that have frequently been reported by other users with similar symptoms, age, and sex. Suggestions from this mode may help a patient in expressing their chief complaint more precisely.

Relevant risk factors

{"suggest_method": "risk_factors"} returns risk factors which are the most appropriate to ask given patient’s age and sex. This mode allows for empty evidence, i.e. "age" : {"value": 25}, "sex" : "female", "evidence" : [] is a valid request body.

Red flags

{"suggest_method": "red_flags"} returns alarming symptoms - a list of observations related to patient’s evidence that may be associated with potentially life-threatening conditions. This mode is an equivalent of /red_flags.

After a user of your application selects some symptoms with /search or /parse, you can use /suggest to generate suggestions of other symptoms that might be present (think of a recommendation system such as "Other users with your symptoms also reported..."). The /suggest endpoint can also be used without sending any selected symptoms, to generate a list of the most commonly reported symptoms. This can be useful before or instead of /search in some scenarios.

Please note, however, that /suggest shouldn't be used as a replacement for /diagnosis. The /suggest endpoint cannot perform differential diagnosis and uses a different statistical engine. After you've gathered 3-6 initial symptoms, you're safe to start making calls to /diagnosis.

The /suggest endpoint is available in all languages, but can only work with the Infermedica default model.

Request

The /suggest endpoint responds to POST requests of the same structure as /diagnosis:

curl "https://api.infermedica.com/v3/suggest" \
  -X "POST" \
  -H "App-Id: XXXXXXXX" -H "App-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" -d '{
        "age" : {
          "value": 25
        },
        "sex" : "female",
        "evidence" : [ 
            {
                "choice_id" : "present",
                "id" : "s_305",
                "source": "initial"
            }
        ],
        "suggest_method": "symptoms"
}'

The example above describes the case of a 25-year-old female patient who has already reported vomiting (represented here by the symptom ID s_305).

Response

The response contains a list of symptoms that have often been reported together with the provided observations by other patients of the same sex and similar age. Each returned symptom is represented by a JSON object with the following attributes: id, name and name_common. These values are consistent with the database of medical concepts understood by the Infermedica API.

[
    {
        "id": "s_156",
        "name": "Nausea",
        "common_name": "Feeling sick"
    },
    {
        "id": "s_13",
        "name": "Abdominal pain",
        "common_name": "Stomach pain"
    },
    {
        "id": "s_8",
        "name": "Diarrhea",
        "common_name": "Diarrhea"
    }
]

Please note that the free trial plan of the Infermedica API allows for only a limited number of calls to the /suggest endpoint. Please contact us for other plan options.