Modelling inert tablets, diluents, and solvents

We are seeking feedback on a proposed approach to modelling inert tablets, diluents, and solvents in a way that’s consistent with the international medicinal product concept model. Modelling these concepts will allow us to (for example) distinguish between a 21 tablet hormone pack (which contains only tablets with an active ingredient) and a 28 tablet hormone pack (which contains an additional 7 sugar tablets); and also between a pack that contains only a ‘powder for solution for injection’ and a pack that contains both a vial of the powder and a vial of the diluent/solvent.

The proposed approach for inert tablets is to create:

  • MP: |Inert product|
    • Is a Medicinal product
    • Count of active ingredients = #0
  • MPF: n/a
  • CD: |Inert oral tablet|
    • Is a Medicinal product
    • Count of active ingredient = #0,
    • Has manufactured dose form = |Oral tablet|

Note that even though the |Inert oral tablet| does not include a strength, we’re proposing to add this as a Clinical Drug, so that this concept can be used by the ‘Packaged Clinical Drug’ as a value of the |Contains clinical drug| relationship.

For diluents that contain ‘Sterile water’ or ‘Sodium chloride’, we are planning to use these substances as the ‘active ingredient’ of the clinical drug (e.g. ‘Sterile water 100% solution for injection’) - even though they are not an active part of the combined packaged clinical drug, they are often available separately with this active ingredient.

Thoughts on this proposal?

1 Like

Assuming I’ve read the proposal correctly, we’d either need to update the Editorial Guide or make an exception for these.

According to the guide:
Count of base of active ingredient (attribute)
Concrete Type: Integer
Range: >#0..
Cardinality: 1..1

I’m not sure whether there are any other problems with setting a ‘concrete value’ to exactly zero. For example does ECL or any databases cope with it?

But I do like the way of saying this concept is stated as having precisely no / zero active ingredients.

3 Likes

Hi @lbird2 ,

Thanks - it would be good to have a standardised approach here.

Looking at the modelling, proposing a slight variation on above for conversation - if ‘inert matter (substance)’ is used as the substance it would allow the ‘count of base…’ attribute to be >0, and allow modelling at MP-containing, MP-only and MPF to adhere to International Drug Model.

Clinical Drug concept level would still be a variation from International Drug Model as there is no strength to represent.

Example below showing MP-Only, Clinical Drug, and extending to a Real Clinical Drug post classification. (Ignore FSNs/PTs - I was only looking at the modelling)

Some points:

  • If a substance was to be used, would ‘inert matter’ be the most appropriate?
  • Including the substance brings it closer to the clinical drug modelling - but still not adhering to it (even if we ignore the fact that, by definition, the ‘inert matter’ does not play the role of a PAI or BoSS).
1 Like

Hi Linda,

@mcordell and I discussed this yesterday, sorry we didn’t get back to you sooner.

AMT currently uses has active ingredient = inert substance. This pattern comes from AMT v3, which inherited it from v2, and so on.

Here’s some examples, first the "clinical drug” level concept

and a “real clinical drug” level concept

Personally, I have never been comfortable with this modelling. “Has active ingredient = inert substance” feels like an oxymoron, although it depends on how you define “active” and “inert”. Likewise, concepts like “Loette (inert substance) tablet” with a non-zero count of active ingredients seem logically inconsistent.

My preference would be to avoid using has active ingredient (or any subproperty) altogether for inert products. Nothing in these products is intended to be active by definition. A simple “count of active ingredient = 0” is accurate, and in my view sufficient to define the concept. If I could redesign this part of AMT, that is the approach I would take.

That said, the current AMT implementation does not cause any functional problems that I am aware of. AMT has used this pattern for nearly twenty years, and there has been no push from stakeholders to change it. If I tried to convince vendors to adopt a revised model, I doubt I could demonstrate enough practical benefit to justify the cost and consultation effort. So although the current pattern is not ideal, changing it would be hard to justify.

On diluents, I would not model “sterile water” or “sodium chloride” as active ingredients, even though AMT sometimes does so. These substances do not meet the definition of active ingredient:

The clinically relevant part or whole of the substance that is intended to have a therapeutic action on or within the body. It excludes esters, salts or other non-covalent derivatives (such as a complex, chelate etc.), but may include secondary modifications.

AMT mostly uses the same pattern as the inert tablets for diluents, with has active ingredient = inert substance, and usually does not specify the actual excipients because AMT does not model excipients for active products either.

But in some cases like this multi chamber drug, it does model the ingredient in the diluent chamber

I find this awkward. Sodium chloride in a diluent does not have a therapeutic action. It is a functional ingredient, which is a subtype of excipient. In this case it is a tonicity adjuster that supports safe and comfortable administration but does not contribute to the therapeutic effect.

I am not saying we should not model these ingredients. I am saying they are not active ingredients according to the definition. Ideally, we would have a separate branch under has ingredient for inactive ingredients, with the option to further specify their functional roles if useful.

Again, this is something I would change about AMT if the costs and benefits made sense, but at present they do not.

If I were to remodel diluents, I would treat them the same way as inert tablets: count of active ingredient = 0 with no has active ingredient relationship. I would only explicitly model diluent ingredients where clinically necessary or useful, and I would represent them using a separate subproperty under has ingredient, not under has active ingredient.

Those are my thoughts on what I would do different, but as I said I would have a hard time selling that change in and of itself - unless I’m missing some existing problems or benefits.

I hope that’s useful,

Dion

2 Likes

I do like the approach you’ve described @lbird2. @dmcmurtrie has covered everything we talked about, but I will add - one factor why AMT has had “inert substances” is how the concept names are generated - it’s always been based off the modelling. Though simply saying “has ingredient=Inert substance” would be a more accurate way of getting that string in there. And for diluents - why not just use the attribute 762951001|Has ingredient (attribute)| ? Rather than “has active ingredient”?

But I also wanted to respond to this:

There isn’t actually any such thing as a “Clinical Drug”.

The range for “Contains clinical drug” is simply “Medicinal Products”.
image See: Packaged Clinical Drug (PCD) Specifications

This ties back to my comments on the semantic tags. I’m not sure why the drug project started proliferating them… (AMT has a variety also due to the legacy Dion touched on).

But it’s the actual grouper concepts that are important/useful. And there no such concept as |Clinical Drug| - so it can’t be referenced in MRCM or ECL… (except with ECL description filters…).

We dropped “class grouper” concepts in AMT in the move from v3-v4, but they are useful. (And would be easy to add back in).

Really great point Stuart! Yes, this proposal would require the MRCM rule to expand the range of this attribute to allow a #0 value.

Thanks for your feedback Shane! And I agree that it would be good to have a standardised approach here. This is something that most countries will need to deal with.

To me, it seems like an oxymoron to say that a product has an active ingredient, but it only contains inert matter. I do find it difficult to get comfortable with thinking of inert matter as an active ingredient. Stuart has also referred me to a product in the UK called Osmohale - which is a licensed diagnostic medicine, that includes an empty capsule. The empty capsule is a component of the licensed medicine, which does not contain any inert matter - it literally contains nothing.

The other aspect of your modelling, which I would question, is the use of the |Has basis of strength substance|, without a strength to be the basis of. It doesn’t feel right to me to separate these.

Thanks Shane!

1 Like

I’d like to provide an update on this proposal. We have been considering the feedback, and would like to put forward a revised version of this proposal.

The main thing we have been reconsidering is how to model diluents/solvents with ingredients like ‘Sterile water’ or ‘Sodium chloride’. We like the suggestion of introducing a new subtype of |Has ingredient| to represent |Has excipient ingredient| (or alternatively: ‘Has inactive ingredient’). These ingredients are often defined in the license of Canadian registered products, and are therefore are important to define. However (as @dmcmurtrie pointed out) they do not have a therapeutic/pharmacological effect on the body. Therefore it would make sense to use a |Has excipient ingredient| relationship, rather than a |Has active ingredient| relationship. If we model these using an approach consistent with our last proposal, we get something like this:

  • MP1: |Product containing no active ingredients and excipient sterile water (medicinal product)|
    • Is a Medicinal product
    • Count of active ingredients = #0
    • { Has excipient ingredient = |Sterile water| }
  • MPF1: |Product containing no active ingredients and excipient sterile water liquid for injection (medicinal product form)|
    • Is a Medicinal product
    • Count of active ingredients = #0
    • Has manufactured dose form = |Liquid for injection|
    • { Has excipient ingredient = |Sterile water| }
  • CD1: |Product containing no active ingredients and excipient sterile water 1 gram/1 milliliter liquid for injection (clinical drug)||
    • Is a Medicinal product
    • Count of active ingredient = #0,
    • Has manufactured dose form = |Liquid for injection|
    • { Has excipient ingredient = |Sterile water|
      Has concentration strength numerator value = #1
      Has concentration strength numerator units = |gram|
      Has concentration strength denominator value = #1
      Has concentration strength denominator units = |milliliter|

Notice that we have intentionally NOT used a ‘Count of excipient ingredients’, as we want to use existential logic for these (i.e. there may be additional excipients not listed).

If we now add in the 2 concepts from our original proposal:

  • MP0: |Product containing no active ingredients (medicinal product)|
    • Is a Medicinal product
    • Count of active ingredients = #0
  • CD0: |Product containing no active ingredients in liquid for injection (clinical drug)|
    • Is a Medicinal product
    • Count of active ingredients = #0
    • Has manufactured dose form = |Liquid for injection|

After classification, CD0 would become a supertype of MPF1 above … which we believe is not desirable. Therefore, to avoid the situation in which a MPF is a child of a CD, we now believe that we need to make the “Inert tablet”, “Inert solution for injection”, “Inert liquid” etc an MPF … to preserve the order of the hierarchy - i.e.

  • MP0: |Product containing no active ingredients (medicinal product)|
    • Is a Medicinal product
    • Count of active ingredients = #0
  • MPF0: |Product containing no active ingredients in liquid for injection (medicinal product form)|
    • Is a Medicinal product

    • Count of active ingredients = #0

    • Has manufactured dose form = |Liquid for injection|

The consequence of this, however, is that we will need to allow the |Contains clinical drug| relationship to have an MPF value when the Package component contains no active ingredients and no known excipients (e.g. |Inert tablet|, |Inert liquid for injection|), but when an excipient and its strength is known, the |Contains clinical drug| relationship is able to have a CD value (e.g. |Water 100% liquid for injection|. Both of these situations arise.

Comments on the revisions to our proposal? (diagram below)

Here is some feedback on the proposed modelling approach:

  1. Modelling “No Active Ingredient” products:

    • We could utilize the existing 762951001 |Has ingredient (attribute)| attribute, which is the parent of |Has active ingredient|. It is a valid way to model the presence of some ingredient (the excipient/diluent/solvent).

    • To explicitly state the absence of any active ingredient, the statement Count of active ingredient = 0 is sufficient and conceptually clear. Crucially, it would prevent any inert product from incorrectly subsuming existing medicinal products that do contain active ingredients, as such a statement does not exist on active medicinal products.

    • I am wondering if a new attribute like ‘Has excipient ingredient’ is necessary at this stage, as the presence of any ingredient can be modelled with |Has ingredient|.

  2. Using Count of active ingredient:
    While ‘Count of base of active ingredient’ is commonly used for most content, the using Count of active ingredient = 0 remains the effective and simple way to explicitly model “no active ingredient” and manage the subsumption hierarchy effectively. Since this statement is absent in active products, it serves as a clear differentiator. All inert products must include this in the model. The other benefit is a much simpler ECL query for inert products.

  3. Use of Contains clinical drug:
    Regarding the use of 774160008 |Contains clinical drug| for the MPF and CD of inert products:

    • We acknowledge that the name of the attribute (|Contains clinical drug|) suggests a range of only Clinical Drugs (CDs).

    • However, the MRCM constraint currently allows a broader range. We should be okay to use it though the attribute name sounds odd in the model of Inert product packages when Medicinal Product Form (MPF) is used. MRCM range: << 781405001 |Medicinal product package (product)|: [1..*] { [1..1] 774160008 |Contains clinical drug| = << 763158003 |Medicinal product (product)| }

Looking forward to discussing this further at our next meeting.

2 Likes

I agree with the simpler approach you’ve outline and comment @ygao. And the MRCM for |Contains clinical drug| already supports using MPF.

Some additional comments:

  • We actually use Count of active ingredient predominately, in AMT for all products. And only use the Count of base of active ingredient for the very few concepts where it’s actually significant. For most products, the two values are the same. (This also comes back to what’s really meant by these ingredient relationships that was never actually resolved).

  • @lbird2 mentions ‘Sterile water’ or ‘Sodium chloride’ as examples. I remember SI specifically objecting to things like “Sterile water” and “water for injection” last year as “not really substances”. But the reality is these already exist in a number of extensions - UK, AU, Spain, Ireland - as this is the language used in pharmacopieas.

    “Saline solutions” are an interesting one because we can probably model specific strengths as products. But SNOMED CT is lacking when it comes to how to model general mixture substances… Currently “Saline IS A Chlorine compound”.

Looking at several drug dictionaries, drug extensions, and other standardization building efforts currently led by FDA and EMA on the FHIR resources supporting the representation of medicinal products not only from the clinical standpoint but from the regulatory use case (, , PackagedProductDefinition - FHIR v6.0.0-ballot4) we expect alignment will be desirable, or at least, contradiction would be undesirable.

Because those representations are aligned with IDMP, and the SI clinical drug model was strongly influenced by IDMP alignment before the FHIR resources and consensus building about implied models for exchanging that information were mature, there is a natural alignment between IDMP logical model, FHIR resources supporting the exchange of (in SNOMED CT dialect) real clinical drugs, clinical drugs, and packages containing items (mainly clinical drugs), including the composition of the clinical drug, co-packaging, etc. I would take a look at the FHIR resources and avoid contradictions with IDMP or FHIR models because most local drug dictionaries would be influenced by the consensus building effort led by FDA, EMA< and Health Canada.

That means in this case:

SNOMED attribute Has ingredient was created to support future siblings of active ingredient (roles of the substance ingredient in IDMP), the two ones mentioned were Has inactive ingredient (a supertype or equivalent to Has excipient ingredient) and Has adjuvant ingredient. Since this is contemplated also in the FHIR resources, I support the proposal of NOT using active ingredient, and use Has inactive ingredient or has excipient. Some extension implementations might use active ingredient role for substances that are not active (in the sense Dion noted above, that is the consensus), but that is a different decision or legacy limitation. What we see is that sometimes the same extension considers dextrose an active ingredient, sometimes it is not, sometimes it is not modeled. So we have to be ecologically friendly and avoid disabling the standard path because we have limitations to follow it.

first conclusion: create has excipient ingredient (subtype of has ingredient). Since excipient ingredient is not a subtype of has active ingredient, it would never classify under MP contains and below by itself (if there are no active ingredients). Note that excipient ingredients might have a strength, that needs to be supported.

Then the discussion about inert substances and inert products (or inert packageItems in general).

Has active ingredient count = 0 is a nice hack, but it is disabling other extensions that might have clinical drug equivalents or Virtual medicinal products, or other packageable items that HAVE active ingredients but are not modeled (e.g. some multivitamins, some nutriceutials,etc) or have only a partial representation of the ingredients and the ingredient count might not be consistent. Those “special” VMPs might have 30 “active” ingredients that are not modeled, they are just referred by a generic name. So saying that the count of active ingredients is 0 would disable future evolution of the model.

What we want is a consistently classifieable way of distinguishing inert products (that might have excipipient ingredients modeled or not). I would either add an attribute or use productCharacteristic = Inert. It would classify correctly and we are not disabling the evolution just to enable ours.

Please be careful with the use of the word inert when it comes to excipients.
Inert refers to substances with no active pharmacological effect.
Vaccine adjuvants are not inert they elicit an enhanced immune response.
Excipients can have there own problems e.g. see How to identify and manage ‘problem’ excipients in medicines for children - The Pharmaceutical Journal.
Formulation excipients can enhance or reduce drug bioavailability by modifying solubility, dissolution, permeability, or metabolism. Are they truly inert?
Best
Ian

2 Likes

Following up on the recent discussion, I want to support the simpler approach outlined by @ygao - Count of active ingredient = 0 combined with the existing Has ingredient (762951001) where the ingredient substance is relevant.

For products with no active ingredient:

  • Count of active ingredient = 0
  • No Has active ingredient relationship
  • If the composition is relevant (e.g., a diluent containing sodium chloride), use Has ingredient to represent what the product contains without asserting therapeutic activity
  • If the composition is not relevant (e.g., a placebo tablet in a contraceptive pack), the dose form alone is sufficient with Count of active ingredient = 0

The definition of Count of active ingredient is “a count of attribute ‘has active ingredient’ in a concept definition.” If there are no such attributes, the count is logically zero. The Editorial Guide currently specifies a range of >#0 which would need to be updated to >=#0 to permit this.

As @ygao points out, the Contains clinical drug attribute’s MRCM range is << 763158003 |Medicinal product|, which is broader than the attribute name suggests. This means inert products modelled at the MPF level (since they have no strength and therefore aren’t naturally “Clinical Drugs”) could still be referenced in pack compositions.

On the question of whether a new Has excipient ingredient attribute is needed - I don’t think it is. Has ingredient already says what needs to be said. When combined with Count of active ingredient = 0, the inference that the ingredients are not therapeutically active is clear. For products with both active and non-active ingredients, excipient information is product-specific, varies between brands, and is better handled as reference data against branded products rather than as defining properties of abstract clinical drugs.

For branded products in national extensions where excipient detail matters, Has ingredient still covers it - the clinical question is “does this product contain lactose?”, not “does this product contain lactose as an excipient?”. Introducing Has excipient ingredient invites further specialisation - adjuvant, preservative, colouring, stabiliser - each a valid IDMP distinction but none adding value for the use cases a clinical terminology serves. Sometimes saying less is more.

In terms of IDMP, SNOMED compatibility with IDMP doesn’t require identical representation - it requires mappable representation, and Has ingredient with Count of active ingredient = 0 maps cleanly to IDMP’s excipient ingredient role.

Regarding @ispiers’ point about “inert” being a misnomer - agreed, and this extends to adjuvants as well. Vaccine adjuvants like aluminium hydroxide or AS01B are pharmacologically active - they deliberately enhance the immune response - but they are not the intended therapeutic moiety. The “active” in Has active ingredient should mean “the intended therapeutic substance”, not “pharmacologically active”. Adjuvants belong under Has ingredient, not Has active ingredient. Modelling aluminium hydroxide as an active ingredient would classify vaccines under “aluminium hydroxide-containing product” alongside antacids, which is misleading. Has ingredient covers the full spectrum of “substances present in the product that are not the intended therapeutic moiety” - whether they are pharmacologically inert excipients, functionally active adjuvants, or anything in between. I’m not aware of further categorisation of the role being needed for the use cases a clinical terminology serves.

In AMT, we currently use Has active ingredient = Inert substance with Count of active ingredient = 1. As I’ve said previously, I’ve never been comfortable with this — it’s an oxymoron. The approach above is what I think we should have done, and what I’d recommend going forward.

1 Like

I don’t really like overloading the count of active ingredient = 0 and would prefer a specific attribute, product characteristic or additional property to flag them, as we have extensions with active ingredients that are not fully modeled (and the count = 0). Dion has pointed out (in other discussion threads) the value of aligning with FHIR medicinalProductDefinition and related resources, also in alignment with IDMP where the role of the substance is active ingredient, inactive ingredient (or excipient ingredient) and adjuvant ingredient. So to preserve alignment with those FHIR resources we expect would simplify manufacturer-regulatory body interactions, we strongly object to using the general “has ingredient” attribute to mean not active ingredient. Also, because inactive ingredients might have strength and might not be inert (the name could be handled by local implementations), I think the issue is the model rather than the tag.

That sounds like a bug, if I understand what you’ve said correctly. If you have a not-fully-modelled drug then it should be primitive and no value provided for count-of-active-ingredient, because count-of-active-ingredient is there specifically (and only) to simulate “only” semantics. Saying count-of-active-ingredient=0 explicitly means that there are no active ingredients (contains only zero active ingredients).

Yes, I think valid patterns for the “only” semantics are

Product with active ingredients with all those ingredients stated

  • primitive = false
  • has active ingredient populated with ingredients
  • count of active ingredients = number of modelled ingredients

Product with active ingredients where those ingredients aren’t all stated

  • primitive = true
  • some has active ingredient populated - incomplete modelling
  • no count of active ingredients property

Product with no active ingredients (e.g. contraceptive pill inert tablet)

  • primitive = false
  • no active ingredient properties
  • count of active ingredients = 0
1 Like