Built-in Medical Intelligence and Content

Built-in medical intelligence is a key pillar of the Health Bot platform that empowers healthcare organizations to leverage out-of-the-box conversational medical skills which can be customized or extended to support your organization's clinical use cases. Health Bot enables you to build an intelligent, white labelled, virtual Health Assistant that can perform sophisticated tasks such as triaging, checking symptoms or answering questions about medical conditions and symptoms.

Health Bot uses multiple credible medical content providers that author and validate the clinical content such as clinical triage protocols and information about conditions or medications. The Health Bot management portal exposes configurations that allow you to select the content sources that you want to surface through your Health Bot instance and make available to end-users.

Triage and Symptom checking

The built-in Triage and symptom checking engines are packaged and included as part of the Health Bot solution so that you can easily use them within your own Health Bot instance. Each triage engine has its own configurations so that you can tailor their behavior to your needs and the experience can be extended within a custom scenario. For example, you could easily enable end-users that complete the triage flow to schedule an appointment with a doctor, speak with a live nurse or help them find their nearest clinic using the Health Bot visual authoring tools for custom scenarios

Screenshot of the built-in symptom checker and triage

The built-in triage and symptom checking protocols are provided by third parties and licensed by Microsoft. Medical content providers are selected based on their credibility and experience, the quality and accuracy of their content and the clinical validation processes in place. Different providers offer different features and apply different clinical methodologies.

Currently, Health Bot includes a triage engine from (Infermedica and there are plans to extend the platform offering to include additional types of triage and medical intelligence from other providers soon.


The triage and symptom checking engine that was previously provided by HealthNavigator is no longer available as part of the Health Bot service.


Infermedica provides an advanced triage engine based on clinically validated probabilistic models. Infermedica is an expert system that offers many advantages over the simplistic decision tree models, such as high levels of accuracy and a multi-symptom triage entry point.

Infermedica maintains a mapping of 1000s of symptoms and conditions and can determine the likelihood of a condition given a set of symptoms and risk factors. Infermedica is a deterministic triage engine and uses machine learning in controlled feedback loops to improve the model based on real clinical outcomes.

Some of the key features of Infermedica:

  • Protocols based on advanced and sophisticated probabilistic modelling with a high level of clinical accuracy
  • Thorough and robust clinical validation process that leans on evidence-based medical practices.
  • Flexible triage engine that provides an optimal assessment path and shorter flows ideal for conversational experiences.
  • Multi-symptom: NLP and triage model that support reporting of multiple symptoms
  • Multi-language: Infermedica is available in over 17 languages and supports localization based on regional risk factors
  • Question and Triage rational (coming soon)
  • Highly Configurable options, such as interview modes tuned for triage or identifying possible causes

Default Configuration

The triage and symptom checkers in Health Bot can be used with zero configuration and work out of the box. To see the default end-user experience navigate to the management portal and open the webchat. Type a medical complaint such as "I have a fever" to trigger the symptom checker.

Screenshot of the Infermedica triage in the management portal webchat

To set Health Bot back to the default experience you should reset the Language models view and the Triage configuration. The "Medical complaints" language model should be mapped to /builtin/triage and under Configuration > Medical > Triage and symptom checking you should set your preferred provider. You can also use the "Reset" button to return to defaults.

Screen shot of the default configuration for the medical complaints recognizer

Configured experience

You can easily configure the default triage experience. In the management portal navigate to Configuration > Medical > Triage to see the settings available for the default triage provider.

Screenshot of the Infermedica triage configuration

Health Bot Users with editing rights can review the configuration options for the triage. For example, you can change the default strings for the preassessment prompts or set the acceptable age range to ask about pregnancy.

There is a rich set of configurations for each of the triage providers. Hover over the tooltips to see a description of the configuration and make sure to save your changes.

Extended experience

The built-in triage can easily be extended to add steps before or after the triage assessment. For example, if you want to collect some patient information or show some triage instructions before triggering the triage you can add those steps using the visual scenario authoring tools. You can also build custom logic based on the triage outcome, for example, if the triage suggests that the patient should see a doctor you could add steps that help them schedule an appointment or find a nearby clinic.

To build an extended triage experience using Infermedica, start by creating a new custom scenario. You should use a "Begin step" to trigger the built-in triage flow and you can add your own custom steps before and after the triage. You can also build out different paths based on the different outcomes provided by the triage.

Screen shot of an extended triage scenario

The Infermedica triage expects a text argument and an optional configuration object. The text argument is the medical complaint that was collected from the user. This text will be parsed by the Infermedica NLP and the starting symptoms extracted. Select "builtin/infermedica/triage" as the scenario trigger and pass the arguments using the correct format. If you want to pass the last message from the user as the argument, use the session.message.text to access that text.

Screenshot of invoking Infermedica as a subscenario

The configuration object is optional and allows you to override any settings you have set for the triage. For example, if you want to suppress the symptom summary (to format and display your own summary message) you can easily do so. View the full list of configurations available for the Infermedica triage.

The Infermedica scenario also returns a result object that includes important information collected during the triage assessment.

For example, with this information, you can easily switch to different paths based on the triage outcomes.

Screen shot of switch based on Infermedica outcomes

The Infermedica triage has 5 different levels of care that you can use to offer different services. For example, for the consultation case you could help the end-user schedule an appointment or find a clinic.

Available triage levels are presented below:

  • emergency_ambulance – the reported symptoms are very serious and the patient may require emergency care. The patient should call an ambulance right now,
  • emergency – the reported evidence appears serious and the patient should go to an emergency department. If the patient can't get to the nearest emergency department, he/she should call an ambulance,
  • consultation_24 – the patient should see a doctor within 24 hours. If the symptoms suddenly get worse, the patient should go to the nearest emergency department,
  • consultation – the patient may require medical evaluation and may need to schedule an appointment with a doctor. If symptoms get worse, the patient should see a doctor immediately,
  • self_care – a medical consultation is not strictly required; the patient should observe their symptoms and consult a doctor if symptoms worsen within 24 hours.

The triage outcome includes other types of information such as:

  • User details
  • Symptoms
  • Risk factors
  • Questions and responses
  • Possible causes (and ICD10 codes)
  • Triage results (and Telemedicine recommendation)
  • Messages (such as suggested care)

See an example of all the information that is returned from the infermedica triage

Multilingual triage (Infermedica)

The Infermedica Triage Content is available in multiple languages:

  • English (en-US)
  • Chinese (Simplified) (zh-Hans)
  • French (fr-FR)
  • German (de-DE)
  • Italian (it-IT)
  • Spanish (es-ES)
  • Arabic (ar-SA)
  • Portuguese (pt-PT)
  • Portuguese – Brazilian (pt-BR)
  • Russian (ru-RU)
  • Dutch (nl-NL)
  • Estonian (et-EE)
  • Polish (pl-PL)
  • Slovak (sk-SK)
  • Turkish (tr-TR)
  • Ukrainian (uk-UA)

The triage content (such as the questions and conditions) are translated and validated by professional human translators, however the NLP layer which understands an end-user intent is only available in English.

Behind the scenes the Health Bot leverages machine tranlation from Azure Congnitive Services in combination with the built-in triage NLP layers to understand non-English intents and entities.


To support multiple languages, this feature must be enabled in the Health Bot Configuration. Navigate to Configuration > Medical > Triage > Multi-lingual triage.

To test the multi-lingual triage you must set one of the supported locales in the webchat and then type a medical complaint (such as "I have a headache") in the respective language. Learn more about setting a locale at run time