Friends:
Together with @Christian_Reich, @abedtash_hamed, @Alexdavv, @Dymshyts and other contributors we revised the content of ATC and its relationship to RxNorm Drug Concepts. We learned a lot in the process, which may be useful for you to understand if you want to use ATC as a classification, or if ATC is part of your source data.
- ATC is much more complicated than it looks.
- We had to fix the ATC-RxNorm/Extension hierarchy.
- We added a mapping from ATC to RxNorm/Extension to support ETLing.
If you want to understand the details, please read on.
ATC, despite being the most popular drug classification system, has a number of non-obvious problems:
- Some ATC concepts are WYSIWYG, but others incorporate attributes that are not immediately visible: route of administration, indication, mechanism of action, dosage and combinations. Therefore, not every ATC code containing the name of a drug ingredient is automatically the correct classifier for that drug. For example prednisolone is the ingredient of 6 ATC concepts that have the same name but different routes of administration, dose or indication.
- Some drug classes have even more exotic attributes, like insulines and vaccines. For example, A10AB04 âinsulin lisproâ is fast-acting and A10AC04 âinsulin lisproâ is intermediate-acting.
- Many ATC concepts have no drugs in any of the markets we currently support. Often, these represent historic drug products that have left the market.
- Many drugs have no ATC class. This is predominantly the case for traditional medicines, extracts, allergenic preparations, but a few âgoodâ ones are there as well, such as thyroglobulin.
What is wrong with the way ATC was implemented till now:
- ATC 5-level concepts were mapped to RxNorm ingredients. As a consequence, all those additional attributes were not considered. E.g., ophthalmologic prednisolone was an ancestor to all drugs containing prednisolone. We took out all combinations a year ago to prevent complete chaos, but obviously that was not really solving the problem.
- Many people have ATC in source data, essentially using it as a way to define ingredients. We provided no support to convert these data into standard OMOP.
Here is what we did to fix the hierarchy:
- We revised the mapping to Ingredients
- We added some of the missing attribute information to the ATC 5 from the ATC website. For example, H02AB06 âprednisoloneâ became H02AB06 âprednisolone, systemicâ.
- Alternatively, we extended the attributes from ATC 3 or 4 levels down to ATC 5. For example, ATC 5 R03AC07 âisoetarineâ doesnât have route specified, but we inferred its route from an ancestor R03A âADRENERGICS, INHALANTSâ.
- We rebuilt the entire ATC-RxNorm hierarchy taking into account the tacit attributes. See the picture below. The above H02AB06 âPrednisoloneâ with its systemic route of administration is connected to the Ingredient Prednisolone in CONCEPT_ANCESTOR, and from there to only those descendants which have a form intended for system use (e.g. Oral Tablets or Injections). Combinations are also correctly handled:
Here is what we did to support mapping ATCs during ETL
- New âMaps toâ relationships connect ATC 5 to RxNorm and RxNorm Extension. See picture below. Single ingredient ATCs are mapped to RxNorm Ingredients. Combinations are only mapped to the explicit components.
What we havenât done and needs to be addressed in the future:
- Independent QA. We are planning to integrate the Norwegian drug repository, for which there is a definitive ATC mapping from the same WHO Collaborating Centre for Drug Statistics Methodology (WHOCC) which maintains the ATC, and then compare their assignments to ours. It wonât include all drugs though.
- Missing attributes. There are still attributes to be modelled and correctly implemented, even though they are not common. For example:
- We did not differentiate corticosteroids based on their potency: D07AC14 âmethylprednisolone aceponateâ is a potent corticosteroid and D07AA01 âmethylprednisoloneâ is a weak corticosteroid, but currently they have the same RxNorm descendants.
- We didnât implement mechanisms of action. For example, ATC B01AC06 âacetylsalicylic acid (Platelet aggregation inhibitors)â and N02BA01 âacetylsalicylic acid (OTHER ANALGESICS AND ANTIPYRETICS)â have the same RxNorm descendants.
- Orphan drugs. We have to think what to do with the RxNorm ingredients and corresponding drugs for which no ATC exists. One way is to bring it up with the WHOCC. Another way is to create a few pseudo-ATC catch-all classes.
As usual, we are happy to take comments, suggestions, bug reports and congratulations.