Mapping of FHIR Medication to SNOMED CT Concept

Mapping of FHIR Medication to SNOMED CT Concept



Logic

If only the ingredient(s) present, construct a Medicinal Product, OR

If form is also present, construct a Medicinal Product Form, OR

If amount is also present construct a Clinical Drug

Construct one role group in the template per ingredient object.

Assertion:  Cannot have an amount without form.

Assertion:  Cannot have numerator value without denominator value, although this may be "per 1 tablet"

Ignore any non-active ingredients - not part of SNOMED Drug Model.



Issues

  • Does not allow for amounts being based on the Basis of Substance Strength (BoSS).  Might be better to leave this attribute out, to avoid errors in subsumption calculation.

  • Will we have to create a map for the unit of presentation from the dose form?

  • SNOMED CT is still using "concepts as numbers" which we'd have to map to.

  • ingredient.amount.numerator.unit is a string.   We'll have to map to the SNOMED CT code from there, if "code" is not supplied.   Check system = snomed if code is supplied.

  • Still waiting for finalization of "Ingredient Count" attribute.

  • We'd want to normalize the amount using >1000 <1 rules eg 1500mg → 1.5g   and 0.05 g → 50mg.

  • No current SNOMED model for the "amount" which sits above the ingredient eg I want 5ml of 250mg/10ml     We have no representation for the 5ml, only the concentration.

SNOMED CT Template for Drugs

763158003 |Medicinal product (product)| :

[[0..1]] 411116001 |Has manufactured dose form (attribute)| = [[(<736542009 | Pharmaceutical dose form (dose form)|) @form ]],

[[0..1]] 763032000 |Has unit of presentation (attribute)| = [[+(<732935002 | Unit of presentation (unit of presentation)|) @??? ]],

[[1..*]] {    

[[1..1]] 762949000 |Has precise active ingredient (attribute)| = [[+(<261217004 |Substance (attribute)|) @ingredient.item ]],

  [[0..1]] 7732943007 |Has basis of strength substance (attribute)| = [[+(<261217004 |Substance (attribute)|) @ingredient.item ]],

[[0..1]] 732944001 |Has presentation strength numerator value (attribute)| = [[+(<260299005|Number (qualifier value)|) @ingredient.amount.numerator.value ]],

[[0..1]] 732945000 |Has presentation strength numerator unit (attribute)| = [[+(<258666001|Unit (qualifier value)) @ingredient.amount.numerator.code ]],

[[0..1]] 732947008 |Has presentation strength denominator unit (attribute)| = [[+(<260299005|Number (qualifier value)|) @ingredient.amount.denominator.value ]],

[[0..1]] 732947008 |Has presentation strength denominator unit (attribute)| = [[+(<258666001|Unit (qualifier value)) @ingredient.amount.denominator.code ]]

}

Worked Example



Copyright © 2025, SNOMED International