Concept Names of ATC code

In the current vocab assessed through Athena I see that there are routes added in the concept names of ATC codes:

I can see that this may be useful for some use cases but it then needs to be correct or I suggest to completely remove the route.

For example “M01AE01 Ibuprofen; systemic, rectal” how is this concept name created? Is this done by OHDSI in some way? This ATC code has multiple routes including Oral. Why is rectal selected here as label only? What is the QA procedure on this concept name creation? Where is the code that does this to check?

Thanks.

Added Fully automated AI Generated Report with some examples:

OMOP vs WHO ATC Route Discrepancy Analysis for M01A Drugs

Summary

Analysis reveals systematic errors in OMOP ATC concept naming where parenteral routes are consistently omitted despite being officially included in WHO ATC/DDD definitions.

Detailed Comparison Table

ATC Code Drug Name OMOP Concept Name WHO Official Routes Explicitly Named Routes Missing from Name Issue?
M01AE01 Ibuprofen “ibuprofen; systemic, rectal” O, P, R Only R (rectal) O (Oral), P (Parenteral) :x: YES - SEVERE
M01AB05 Diclofenac “diclofenac; systemic, rectal” O, P, R Only R (rectal) O (Oral), P (Parenteral) :x: YES - SEVERE
M01AE03 Ketoprofen “ketoprofen; systemic, rectal” O, P, R Only R (rectal) O (Oral), P (Parenteral) :x: YES - SEVERE
M01AE02 Naproxen “naproxen; oral, rectal” O, R O (oral), R (rectal) None :white_check_mark: NO
M01AB01 Indometacin “indometacin; systemic, rectal” O, P, R Only R (rectal) O (Oral), P (Parenteral) :x: YES - SEVERE
M01AB02 Sulindac “sulindac; systemic, rectal” O, R Only R (rectal) O (Oral) :x: YES - MODERATE
M01AC01 Piroxicam “piroxicam; systemic, rectal” O, P, R Only R (rectal) O (Oral), P (Parenteral) :x: YES - SEVERE
M01AC06 Meloxicam “meloxicam; systemic, rectal” O, P, R Only R (rectal) O (Oral), P (Parenteral) :x: YES - SEVERE
M01AE09 Flurbiprofen “flurbiprofen; oral, rectal” O, R O (oral), R (rectal) None :white_check_mark: NO
M01AC02 Tenoxicam “tenoxicam; systemic, rectal” O, P, R Only R (rectal) O (Oral), P (Parenteral) :x: YES - SEVERE
M01AC05 Lornoxicam “lornoxicam; systemic, rectal” O, P, R Only R (rectal) O (Oral), P (Parenteral) :x: YES - SEVERE

Route Abbreviations

  • O = Oral
  • P = Parenteral (IV/IM/SC)
  • R = Rectal

Key Findings

1. The “Systemic” Problem is Universal

  • ALL drugs using “systemic, rectal” naming have the same problem as M01AE01
  • 9 out of 11 drugs (82%) have incorrect OMOP concept names
  • “Systemic” obscures specific routes - users cannot tell which systemic routes are included

Issue Severity Levels:

  • SEVERE: Missing 2+ explicitly named routes (oral AND parenteral hidden behind “systemic”)
  • MODERATE: Missing 1 explicitly named route (oral hidden behind “systemic”)

2. Inconsistent Terminology

  • Some drugs correctly use “oral, rectal” when only O,R routes exist
  • Others incorrectly use “systemic, rectal” when parenteral routes exist but are omitted

3. M01AE01 (Ibuprofen) - Most Problematic

  • OMOP concept name: “ibuprofen; systemic, rectal”
  • WHO official routes: O, P, R (Oral, Parenteral, Rectal)
  • The name only explicitly mentions rectal
  • “Systemic” is ambiguous and doesn’t clearly indicate oral or parenteral routes
  • This is the most misleading concept name as it obscures two of the three official routes

Impact Assessment

:white_check_mark: Correctly Named Concepts (Only 2!)

  • M01AE02 (Naproxen): “naproxen; oral, rectal” explicitly names both WHO routes “O,R”
  • M01AE09 (Flurbiprofen): “flurbiprofen; oral, rectal” explicitly names both WHO routes “O,R”

:x: Incorrectly Named Concepts (9 drugs!)

SEVERE Issues (7 drugs) - Missing explicit mention of 2 routes:

  • M01AE01 (Ibuprofen): “systemic” hides oral + parenteral routes
  • M01AB05 (Diclofenac): “systemic” hides oral + parenteral routes
  • M01AE03 (Ketoprofen): “systemic” hides oral + parenteral routes
  • M01AB01 (Indometacin): “systemic” hides oral + parenteral routes
  • M01AC01 (Piroxicam): “systemic” hides oral + parenteral routes
  • M01AC06 (Meloxicam): “systemic” hides oral + parenteral routes
  • M01AC02 (Tenoxicam): “systemic” hides oral + parenteral routes
  • M01AC05 (Lornoxicam): “systemic” hides oral + parenteral routes

MODERATE Issue (1 drug) - Missing explicit mention of 1 route:

  • M01AB02 (Sulindac): “systemic” hides oral route

Recommended Corrections

All drugs currently using “systemic, rectal” should have explicit route naming:

Current OMOP Name Should Be
“ibuprofen; systemic, rectal” “ibuprofen; oral, parenteral, rectal”
“diclofenac; systemic, rectal” “diclofenac; oral, parenteral, rectal”
“ketoprofen; systemic, rectal” “ketoprofen; oral, parenteral, rectal”
“indometacin; systemic, rectal” “indometacin; oral, parenteral, rectal”
“piroxicam; systemic, rectal” “piroxicam; oral, parenteral, rectal”
“meloxicam; systemic, rectal” “meloxicam; oral, parenteral, rectal”
“tenoxicam; systemic, rectal” “tenoxicam; oral, parenteral, rectal”
“lornoxicam; systemic, rectal” “lornoxicam; oral, parenteral, rectal”
“sulindac; systemic, rectal” “sulindac; oral, rectal”

Conclusion

This analysis reveals a critical data quality issue in the OHDSI OMOP vocabulary where 82% of analyzed ATC concept names use ambiguous terminology that obscures official WHO routes. The systematic use of “systemic” instead of explicit route naming creates misleading concept names that could significantly impact:

  1. Drug utilization studies
  2. Clinical decision support systems
  3. Pharmacovigilance analyses
  4. Healthcare analytics relying on accurate route information

Recommendation: OHDSI vocabulary team should review and correct these concept names to ensure alignment with authoritative WHO ATC/DDD definitions.

Hi @Rijnbeek, thanks for raising this - great catch and worth fixing or at least making deterministic and documented.

The route suffixes that appear in ATC class concept names in Athena/ATLAS were introduced in 2020. Before that change, ATC classes surfaced without route/form hints, so users often saw several codes with the same ingredient label and had to leave Athena/ATLAS to cross-check the WHO ATC browser by code. As I know, the intent of adding route hints was usability.

What you are observing now - labels like “ibuprofen; systemic, rectal” - comes from a normalization rule in the ATC ingestion step that maps WHO Adm.R to a succinct suffix. Specifically, O + P (oral + parenteral) is collapsed to “systemic” (because both oral and parenteral routes deliver drug into the bloodstream for body-wide effect). if R is also present, the suffix becomes “systemic, rectal.” That’s why classes with WHO routes O,P,R display as “systemic, rectal,” while O,R classes enumerate “oral, rectal.” Functionally nothing is missing from the source, but the summarization masks which systemic routes are present. Your audit is right that this creates ambiguity.

I see two clean ways forward. Either to remove route hints from names altogether and surface Adm.R only as structured metadata; or, to enumerate them so O,P,R → “oral, parenteral, rectal.” Given how people actually search and build concept sets, my recommendation is the latter: keep the hints but make them explicit and deterministic, and document the rule.

If vocab maintainers agree, the next step is to open an issue proposing (a) publication of the Adm.R→suffix mapping table and (b) adoption of deterministic route labels in the vocabulary’s load_stage scripts, followed by a PR; if ATC is not on the February 2026 roadmap, this can proceed as a community contribution.

Below is a mapping from WHO Adm.R route combinations to OMOP route suffixes for multi-route drugs. These reflect the 2020 implementation, details may have changed since.

WHO Adm.R Current OMOP suffix Proposed explicit suffix (if keeping)
Chewing gum + Inhal + N + SL + TD chewing gum, inhalant, nasal, sublingual, transdermal -
implant + N + P implant, nasal, parenteral -
implant + P implant, parenteral -
Inh.aerosol + O + P + R + SL systemic, rectal, sublingual inhalant, oral, parenteral, rectal, sublingual
Inhal + Inhal.powder + Inhal.solution + P inhalant, parenteral -
Inhal. powder + Inhal.solution + O inhalant, oral -
lamella + ointment + Opht (S01) ophthalmic -
N + O nasal, oral -
N + O + P + R nasal, systemic, rectal nasal, oral, parenteral, rectal
N + O + P + R + TD + V nasal, systemic, rectal, transdermal, vaginal nasal, oral, parenteral, rectal, transdermal, vaginal
N + O + P + SL nasal, systemic, sublingual nasal, oral, parenteral, sublingual
N + P nasal, parenteral -
N + SL + TD nasal, sublingual, transdermal -
O (D11AX10) oral, topical -
O (A01A, A07EA06, R02AA0) oral, local oral -
O + oral aerosol + SL + TD oral, oral aerosol, sublingual, transdermal to check
O + P + R systemic, rectal oral, parenteral, rectal
O + P + R + SL + TD systemic, rectal, sublingual, transdermal oral, parenteral, rectal, sublingual, transdermal
O + P + R + V systemic, rectal, vaginal oral, parenteral, rectal, vaginal
O + P + SL systemic, sublingual oral, parenteral, sublingual
O + P + TD systemic, transdermal oral, parenteral, transdermal
O + P + V systemic, vaginal oral, parenteral, vaginal
O + R oral, rectal -
O + SL oral, sublingual to check
O + SL oral, local oral to check
O + TD oral, transdermal -
O + V oral, vaginal -
P + SL + TD parenteral, sublingual, transdermal -
P + urethral parenteral, urethral -
T (R01A) inhalant, nasal -
T (S03) ophthalmic, otic -
T (C05A) rectal, topical -

Hi @Rijnbeek Thank you for raising this issue.

As @Polina_Talapova mentioned earlier, the concept name conversion is not a bug but an intentional feature by design. These changes were introduced years ago to embed pharmacological effects (e.g., systemic vs. local) into concept names to improve usability in known use-cases. However, as highlighted in your audit, the current implementation creates some ambiguity by summarizing routes rather than explicitly enumerating them.

There are several potential approaches to address the request:

  1. Revising concept_name (concept and concept_synonym refactoring) to
  • Explicitly enumerate all routes (e.g., “oral, parenteral, rectal”)
  • Remove route hints from names
  • Add new synonyms (or transfer the current concept_name to a synonym)
  1. Creating a structured representation that links each ATC5 entity to standard_concept_ids from the Route domain (concept_relationship refactoring)
  2. Implement both solutions to ensure clarity and usability.

Before proceeding, it is crucial to align on use cases and overarching ideologies to avoid introducing further complexity or fragmentation. It’s important, as there’s an option 4, the option to keep everything as it is. @Christian_Reich @aostropolets , I do believe that your input in this case is valuable, as you were defining ATC vocabulary behavior in OHDSI at the time of its introduction.

Each of these approaches (except option 4) will require time and careful refinement. Given that this is not the only request related to ATC processing, it may be worth considering a more comprehensive refactoring of ATC handling rather than treating this as a simple refresh task.

Regards,
Vlad

@Rijnbeek that’s quite a long read to say you want oral and parenteral rather than systemic :slight_smile:

ATC does not provide routes as part of names, which caused confusion among users both in terms of the fact that ATC 5th codes represent not only igredient but also a route and in terms of how to appropriately use the codes.

So 4 or 5 years ago, we added the names of the routes to the concept names to help out. At some point, we combined oral and parental into systemic for readibilty, because both of these routes represent a systemic route. We show the example of L04AX03 methotrexate; systemic at our vocabulary tutorials and workshops. Input from the community like this is exactly what we need as the whole reason for adding route names is to enable users to use ATC in the way that aligns with its pricnciples and structure.

It seems to me that you bumped into this because you were using ATC names in some sort of specific way that relied on names to create concept sets. It would be very useful for us too to learn about what you did and how you used ATC.