Documentation
API: Triage
Medical Concepts

Medical concepts

Medical information that is recognized by our engine is categorized into symptoms, laboratory test results, and risk factors. All three categories are also collectively referred to as observations. Conditions and observations together are referred to as medical concepts.

ℹ️

Browse through all available conditions and symptoms

To take advantage of the symptom assessment capabilities of our API, you must describe your patient cases in terms of the observations that are available in our model; in other words, you need to know the IDs of the observations that you would like to pass to the /diagnosis endpoint. To make it possible to discover and search for observations, we provide a number of endpoints, which are described in this and the subsequent sections.

For each medical concept category there are two REST-inspired read-only endpoints that support GET requests:

  • one returns the list of all the concepts in a given category for a 25 year old person (e.g. /conditions?age.value=25),
  • the other returns a single concept by its ID for a 25 year old person (e.g. /conditions/c_1?age.value=25).

Each concept is represented by a JSON object with several attributes. Some attributes are common to all concepts:

  • id – short and unique concept id,
  • name – concept name (professional medical term),
  • common_name – alternative name (plain language). If common_name is not defined, the API returns name instead.

Please note that endpoints returning a single concept (e.g. /conditions/c_1?age.value=25) may return more attributes than endpoints returning a list of concepts (e.g. /conditions?age.value=25).

Below you can find descriptions and examples of the available endpoints for discovery of medical concepts. Additional information can be found in API Reference.

Conditions

Conditions represents the medical pathologies, conditions, diseases and disorders that are defined in our model. IDs of conditions always start with the c_ prefix and are followed by an integer, e.g. c_26.

Endpoints

The /conditions?age.value=25 endpoint responds to GET requests by returning the list of all available conditions.

cURL
       curl "https://api.infermedica.com/v3/conditions?age.value=25" \
      -X "GET" \
      -H "App-Id: XXXXXXXX" \
      -H "App-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
      -H "Interview-Id:d083e76f-3c29-44aa-8893-587f3691c0c5"

The /conditions/{id}?age.value={age} endpoint also responds to GET requests, but returns the details of only a single condition. Specifying an invalid condition ID causes an error response (404).

cURL
    curl "https://api.infermedica.com/v3/conditions/c_26?age.value=25" \
      -X "GET" \
      -H "App-Id: XXXXXXXX" \
      -H "App-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
      -H "Interview-Id:d083e76f-3c29-44aa-8893-587f3691c0c5"

Attributes

Apart from id, name and common_name, each condition has several available attributes:

  • sex_filter
    filter indicating conditions only valid for one sex: one of both, female, male

  • categories
    list of categories the condition belongs to (e.g. Dermatology or Gastroenterology)

  • prevalence
    approximate estimate of how common the condition is: one of very_rare, rare, moderate, common

  • acuteness
    comparative distinction between acute and chronic conditions: one of chronic, chronic_with_exacerbations, acute_potentially_chronic, acute

  • severity
    approximate estimate of how severe the condition is: one of mild, moderate, severe; can be used together with acuteness to alert users, e.g. when an acute and severe condition is suggested by /diagnosis

  • hint
    brief bit of advice for patients that recommends the steps to take if a condition is suspected (e.g. Please consult a dermatologist as soon as possible); may be null

  • icd10_code
    ICD-10 code of condition; may be null

Example of a JSON object representing a condition, as returned by /conditions/c_26?age.value=25:

JSON
       {
      "id": "c_26",
      "name": "Major depressive disorder",
      "common_name": "Depression",
      "sex_filter": "both",
      "categories": [
        "Psychiatry"
      ],
      "prevalence": "moderate",
      "acuteness": "chronic_with_exacerbations",
      "severity": "moderate",
      "extras": {
        "hint": "I suggest you consult a psychologist or psychiatrist.",
        "icd10_code": "F33"
      }
    }

Browse through all available conditions:

Adults →

Pediatrics →

Symptoms

Symptoms represents medical signs and symptoms caused by conditions from our model. IDs of symptoms always start with the s_ prefix and are followed by an integer, e.g. s_962.

In our model, symptoms are organized into a parent-child hierarchy. Each symptom can have a single parent symptom assigned, e.g. severe headache is a child of headache. Each parent-child relation has a type assigned to it. The type of each relation is provided as the parent_relation attribute and describes how the child symptom relates to its parent; e.g. the child may refer to a specific body location (e.g. lumbar back pain or back pain) or an exacerbating factor (e.g. abdominal pain increasing after a meal or abdominal pain).

The parent-child hierarchy of symptoms plays an important role in the symptom assessment process:

  • reporting a child symptom automatically adds its parent symptom to the evidence list
  • reporting a parent symptom as absent will inform the engine not to ask about its children.

Endpoints

The /symptoms?age.value=25 endpoint responds to GET requests by returning the list of all available symptoms for a 25 years old person.

cURL
   curl "https://api.infermedica.com/v3/symptoms?age.value=25" \
      -X "GET" \
      -H "App-Id: XXXXXXXX" \
      -H "App-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
      -H "Interview-Id:d083e76f-3c29-44aa-8893-587f3691c0c5"

The /symptoms/{id}?age.value={age} endpoint also responds to GET requests, but only returns the details of a single symptom. Specifying an invalid symptom ID causes an error response (404).

cURL
    curl "https://api.infermedica.com/v3/symptoms/s_962?age.value=25" \
      -X "GET" \
      -H "App-Id: XXXXXXXX" \
      -H "App-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
      -H "Interview-Id:d083e76f-3c29-44aa-8893-587f3691c0c5"

Attributes

Like conditions, symptoms have several available attributes (including id, name and common_name):

  • question
    question asking the patient to confirm or deny the symptom; may be null for professional symptoms, which are only intended for medical providers and are not used in patient interviews

  • question_third_person
    question in third person form, asking the reporter to confirm or deny the symptom; may be null for professional symptoms, which are only intended for medical providers and are not used in patient interviews

  • sex_filter
    filter indicating symptoms only valid for one sex: one of both, female, male

  • category
    category of the symptom; currently all symptoms are assigned to the same category: Signs and symptoms

  • parent_id
    ID of the parent symptom; may be null

  • parent_relation
    type of relation with the parent symptom: one of duration, severity, character, exacerbating_factor, diminishing_factor, location, radiation , may be null

  • children
    list of child symptoms (symptoms that indicate this symptom as their parent) and their relations with this symptom

  • image_url
    URL of an optional image that illustrates this symptom; may be null

  • image_source
    source or copyright information for image from image_url attribute; may be null

Example of a JSON object representing a symptom, as returned by /symptoms/s_962?age.value=25:

JSON
    {
        "id": "s_962",
        "name": "Dysphagia",
        "common_name": "Difficulty swallowing",
        "question": "Have you observed discomfort or difficulty swallowing?",
        "question_third_person": "Does he|she find it difficult to swallow food or feel like it gets stuck in his|her throat or chest?",
        "sex_filter": "both",
        "category": "Signs and symptoms",
        "seriousness": "serious",
        "extras": {},
        "children": [
            {
                "id": "s_1779",
                "parent_relation": "location"
            },
            {
                "id": "s_1776",
                "parent_relation": "location"
            }
        ],
        "image_url": null,
        "image_source": null,
        "parent_id": null,
        "parent_relation": null
    }

Browse through all available conditions:

Adults →

Pediatrics →

Risk factors

Risk factors represent a patient’s chronic conditions (e.g. diabetes), lifestyle factors (e.g. smoking), geographical locations (e.g. Central Africa) and events (e.g. insect bite or head injury) that may modify the baseline probability of conditions. IDs of risk factors always start with the p_ prefix (as in predisposition) and are followed by an integer, e.g. p_28.

Endpoints

The /risk_factors?age.value=25 endpoint responds to GET requests by returning the list of all available risk factors for a 25 years old person.

cURL
    curl "https://api.infermedica.com/v3/risk_factors?age.value=25" \
      -X "GET" \
      -H "App-Id: XXXXXXXX" \
      -H "App-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
      -H "Interview-Id:d083e76f-3c29-44aa-8893-587f3691c0c5"

The /risk_factors/{id}?age.value={age} endpoint also responds to GET requests, but only returns the details of a single risk factor. Specifying an invalid risk factor ID causes an error response (404).

cURL
    curl "https://api.infermedica.com/v3/risk_factors/p_28?age.value=25" \
      -X "GET" \
      -H "App-Id: XXXXXXXX" \
      -H "App-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
      -H "Interview-Id:d083e76f-3c29-44aa-8893-587f3691c0c5"

Attributes

These are the attributes available for a risk factor (including id, name and common_name):

  • question
    question asking the patient to confirm or deny the risk factor; may be null for risk factors that should be added automatically based on sex- or age-related risk factors

  • question_third_person
    question in third person form, asking the reporter to confirm or deny the risk factor; may be null for risk factors that should be added automatically based on sex- or age-related risk factors

  • sex_filter
    filter indicating risk factors only valid for one sex: one of both, female, male

  • category
    category of the risk factor; currently all risk factors are assigned to the same category: Risk factors

  • image_url
    URL of an optional image that illustrates this risk factor; may be null

  • image_source
    source or copyright information for the image from the image_url attribute; may be null

Example of a JSON object representing a risk factor, as returned by /risk_factors/p_28?age.value=25:

JSON
    {
        "id": "p_28",
        "name": "Smoking",
        "common_name": "Smoking",
        "question": "Do you smoke?",
        "question_third_person": "Do they smoke or have they smoked cigarettes in the past for at least 10 years?",
        "sex_filter": "both",
        "category": "Risk factors",
        "extras": {},
        "image_url": null,
        "image_source": null
    }