Documentation
Conversational Triage API
Build your solution
Assessment and results

Assessment and results

The assessment is the structured medical state behind the conversation: who the patient is, what evidence has been collected, which conditions are in the differential, and — once the interview concludes — the triage recommendation.

It is a conversation-level object. Read it as a whole snapshot and replace your local copy; never merge fields.

Getting the assessment

GET /conversations/{conversation_id}/assessment

Returns 200 OK with the current Assessment. On the blocking HTTP transport this is the canonical way to refresh state after a turn, because POST /turns deliberately omits the assessment.

On the streaming transports you do not need this call: every turn emits conversation.assessment.updated with the full snapshot.

Shape

FieldTypeDescription
ageAge or nullPatient age.
sex"male", "female", or nullPatient sex.
relationshipPatientRelationship or nullWho the user is answering for — self, child, or other.
evidenceEvidence[]Evidence matched to knowledge-base concepts.
unmatched_evidenceUnmatchedEvidence[]Evidence not yet linked to a concept.
conditionsCondition[]Knowledge-enriched differential rows; populated once a recommendation exists.
recommendationRecommendation or nullSet once the conversation reaches a recommendation.
ℹ️

conditions and recommendation.conditions carry the same rows once a recommendation exists. Read either — they do not diverge.

Evidence

Each matched evidence item tells you not just what was collected but how:

JSON
{
  "id": "s_21",
  "name": "Headache",
  "common_name": "Headache",
  "state": "present",
  "origin": "asked",
  "seriousness": "normal",
  "parent_id": null
}

state is present, absent, or unknown — the last meaning the user did not know or declined to answer.

origin records how the item entered the conversation, which is what lets you distinguish your own seed data from what the assistant established:

originMeaning
seededPre-seeded by your client on conversation creation.
initialReported by the user at the beginning of the conversation.
askedAnswered in response to a question from the assistant.
spontaneousVolunteered by the user without being asked.
inferredInferred by the system from other evidence.

seriousness is normal, serious, emergency, or emergency_ambulance, ordered from least to most urgent. snomed_ct carries the SNOMED CT mapping when one exists and is omitted otherwise. parent_id is set when an immediate parent concept is also present in evidence.

Unmatched evidence

unmatched_evidence holds free-text or extracted findings the engine could not link to a knowledge concept — a label and a state, nothing more. Surface it in clinician-facing summaries; it does not participate in the differential.

Conditions

Condition rows are knowledge-enriched, so you can render a full result screen without a second API call:

JSON
{
  "id": "c_49",
  "probability": 0.4532,
  "name": "Migraine",
  "common_name": "Migraine",
  "condition_details": {
    "icd10_code": "G43",
    "snomed_ct": { "code": "37796009" },
    "category": { "id": "...", "name": "Neurological" },
    "prevalence": "common",
    "severity": "moderate",
    "acuteness": "acute",
    "hint": null,
    "has_patient_education": true,
    "triage_level": "consultation"
  }
}

has_patient_education tells you whether patient education content is available for that condition. condition_details.triage_level is the level recommended for that condition — distinct from the conversation-level recommendation.triage_level.

Recommendation

recommendation stays null until the interview concludes. When it is set, the conversation has finished:

FieldTypeDescription
triage_levelTriageLevelThe triage band for the user.
conditionsCondition[]The ranked differential.
has_emergency_evidencebooleanWhether emergency-level evidence was observed.
serious_evidenceSeriousEvidence[]Highlighted serious evidence.
specialistSpecialistSuggested specialist.
channelRecommendationChannelSuggested contact channel.
stop_reasonstringWhy the diagnostic flow stopped.

Triage levels, from least to most urgent:

triage_levelMeaning
self_careManageable with self-care.
consultationRoutine consultation recommended.
consultation_24Consultation recommended within 24 hours.
emergencyEmergency-level care recommended.
emergency_ambulanceEmergency-level care requiring ambulance transport.

channel is personal_visit, video_teleconsultation, audio_teleconsultation, or text_teleconsultation.

⚠️

A recommendation is not the only way a conversation ends. Check is_terminated too: an underage patient or a confirmed change of age or sex ends the conversation with recommendation still null. See Lifecycle and terminal states.

Drilling into results

Once a recommendation exists you can go deeper per condition:

  • Reasoning — why the assistant asked what it asked, at a turn boundary.
  • Condition details — supporting and conflicting evidence, plus patient education content.
  • Summary report — a PDF of the whole conversation.

Was this page helpful?