Reassessing Allergy Severity Mapping in FHIR

I’ve observed that the severity for certain allergies is indicated as UNABLE-TO-ASSESS . Here’s a summary of my investigation into identifying the root cause.

When saving an allergy for a patient, we collect the following information:

  1. Allergen
  2. Reactions
  3. Severity of worst reaction (mild, moderate, severe)
  4. comment

If we look into a FHIR resource, there’s two fields related to severity:


  • This element describes the criticality of the allergy or intolerance.
  • Possible values include:
    • low (Low Risk): The reaction is not likely to result in a life-threatening situation.
    • high (High Risk): The reaction has the potential to be life-threatening.
    • unable-to-assess (Unable to Assess Risk): The criticality of the reaction cannot be determine


  • This element provides information about the severity of reactions.
  • It is part of the AllergyIntolerance.reaction element
  • Possible values:
    • mild
    • moderate
    • severe

When going through the source code of the FHIR module, I realised that this is how we translate an allergy in the DB to a FHIR resources.

  1. AllergyIntolerance.criticality:

    if severity_of_worst_reaction is mild ⇒ map to low

    else if severe ⇒ map to high

    else ⇒ map to unable-to-assess (so the moderate maps to this which results displaying as unable-to-assess in the UI)

  2. AllergyIntolerance.reaction.severity:

    the value of severity_of_worst_reaction will assigned to this.

We should reconsider the criticality; the current method of linking severity to criticality might be a bit misleading. One solution could be to add a custom field in the allergy form specifically for indicating criticality. Let me know what you think.

Relevant links:

cc: @grace @ibacher @dennis

1 Like

@pmanko @burke @akanter @janflowers Ignoring the simple fix we need to do for this table (the Severity Column should obviously be fetching the “severity” api call, not the “criticality” one): Does this seem quite odd to you that our FHIR layer is mapping “SAME-AS” the “severity” and “criticality” of allergic reactions? Is this standard practice with FHIR…? I get that they are related but I don’t know that I would say for certain they’re equivalent.

1 Like

This is clearly a mistaken mapping. There’s a bit of a mismatch here between FHIR’s model and OpenMRS’s, specifically, in FHIR severity is a property of each recorded adverse reaction, i.e., it’s a property of the event and not the allergy itself. OpenMRS is storing the severity as a property of the allergy itself. I’ll assume we have good reason for this, e.g., that what is clinically relevant is the worst reaction a patient has had to a substance.

Best thing here would be to introduce an extension and not map data to either the criticality field or the reaction.severity field, since populating either of these leads to semantically incorrect results.

1 Like