For the complete documentation index, see llms.txt. This page is also available as Markdown.

Querying the Drug Model

Overview

Querying SNOMED CT drug content is a fundamental capability for supporting clinical workflows, product selection, and analytics.

Because drug concepts are defined using structured attributes, effective querying depends on understanding both the hierarchy and the concept model.

The SNOMED CT Drug Model is designed to enable flexible querying across:

  • hierarchical relationships (e.g. ingredient → product → package)

  • defining attributes (e.g. ingredient, dose form, strength)

  • levels of abstraction (MP, MPF, CD, RCD, RPCD)

Effective querying relies on the use of Expression Constraint Language (ECL), which allows both hierarchical and attribute-based constraints to be combined. More information, see SNOMED CT Expression Constraint Language

Hierarchical Queries

Hierarchical queries use subtype relationships to retrieve groups of related concepts. These are particularly useful for aggregation and broad filtering.

Example: Aggregate by ingredient

<< 372687004 |Amoxicillin (substance)|

Explanation:

Retrieves all medicinal products containing amoxicillin, across all levels of the drug model (MP, MPF, CD, RCD, RPCD).

Typical use cases:

  • drug interaction checking

  • allergy alerts

  • population-level reporting

Example: Retrieve all capsule drugs

Explanation:

Retrieves all medicinal products that have unit of presentation of capsule, regardless of ingredient or strength.

Typical use cases:

  • filtering drug lists in prescribing systems

  • form-specific clinical rules

Attribute-Based Queries

Attribute-based queries refine results using specific characteristics of medicinal products.

Example: Dose-specific Clinical Drugs

The following expression constraint is satisfied by oral medicinal products, which contain amoxicillin and have a presentation strength greater than or equal to 250 mg.

Retrieves Clinical Drugs containing amoxicillin at a strength of 250 mg.

Typical use cases:

  • dose validation

  • prescribing decision support

Cross-Level Navigation

A key feature of the SNOMED CT Drug Model is the ability to move between levels of abstraction.

Upward navigation (aggregation)

  • RCD → CD → MP

Used to:

  • aggregate dispensing or administration data

  • support reporting and analytics

Downward navigation (product identification)

  • MP → CD → RCD → RPCD

Used to:

  • identify available products for a given clinical definition

  • support substitution and dispensing workflows

ECLs for Selecting Drug Model Classes

Selecting specific drug model classes is essential for accurate data entry and meaningful analytics. This can be achieved using ECL expressions that constrain content based on hierarchical structure, as well as the presence or absence of relevant attributes.

The following table shows the ECLs required to query specific Drug model classes.

Class
ECL

Medicinal product (MP)

<< 763158003 |Medicinal product| : [0..0] 1142139005 |Count of base of active ingredient| = *, [0..0] 411116001 |Has manufactured dose form| = *, [0..0] 774158006 |Has product name| = *

Medicinal product only (MPO)

<< 763158003 |Medicinal product| : 1142139005 |Count of base of active ingredient| = *, [0..0] 411116001 |Has manufactured dose form| = *, [0..0] 774158006 |Has product name| = *

Medicinal product form (MPF)

<< 763158003 |Medicinal product| : [0..0] 1142139005 |Count of base of active ingredient| = *, 411116001 |Has manufactured dose form| = *, [0..0] 774158006 |Has product name| = *

Medicinal product form only (MPFO)

<< 763158003 |Medicinal product| : 1142139005 |Count of base of active ingredient| = *, 411116001 |Has manufactured dose form| = *, [0..0] 732943007 |Has basis of strength substance (attribute)| = *, [0..0] 774158006 |Has product name| = *

Medicinal product precisely (MPP)

<< 763158003 |Medicinal product| : 762949000 |Has precise active ingredient (attribute)| = *, 1142139005 |Count of base of active ingredient| = *, [0..0] 732943007 |Has basis of strength substance (attribute)| = *, [0..0] 774158006 |Has product name| = *

Real medicinal product (RMP)

<< 763158003 |Medicinal product| : [0..0] 411116001 |Has manufactured dose form| = *, 774158006 |Has product name| = *

Clinical drug (CD)

<< 763158003 |Medicinal product| : 732943007 |Has basis of strength substance (attribute)| = *, [0..0] 774158006 |Has product name| = *

Real clinical drug (RCD)

<< 763158003 |Medicinal product| : 732943007 |Has basis of strength substance (attribute)| = *, 774158006 |Has product name| = *

Packaged clinical drug (PCD)

<< 781405001 |Medicinal product package|: [0..0] 774158006 |Has product name| = *

Real packaged clinical drug (RPCD)

<< 781405001 |Medicinal product package|: 774158006 |Has product name| = *

These ECLs can be tested live in this demonstrator:

https://ihtsdo.github.io/sct-implementation-demonstrator/#/medicinal-product-classes

Querying by Use Case

The appropriate query pattern depends on the use case and required level of detail.

Drug interaction checking (MP level)

Uses ingredient-level aggregation to ensure that all relevant products are included.

Dose validation (CD level)

Targets Clinical Drugs to ensure precise matching of strength and formulation.

Product selection (RCD level)

Retrieves all products containing a given ingredient, supporting dispensing and inventory workflows.

Provide Feedback