Mapping an ATC4 drug, when only the ATC4 code is present in the source data

Our vaccination register source data occasionally has only information on the ATC codes, nothing else, (ATC5, ATC4, ATC3).

If I remember correctly, we are not suppose to use an ATC conceptId in the drug_concept_id in the drug_exposure table. Because they are Classification codes and not Standard codes.

However, by doing so we wont be able to map half of our registry.

Is there any solution for this ??

As an example:
We have only the ATC code : J07BB02
https://athena.ohdsi.org/search-terms/terms/21601335
It has many ATC to RxNorm/ext, but all more detailed.

More extreme example:
We have only J07BB code: Influenza vaccines
https://athena.ohdsi.org/search-terms/terms/21601333
There is not Maps to or similar.
There is ATC to SNOMED, but I checked these in the concept_ancestor table and they are not list as descendants of J07BB

There fore in both cases if i want to search for defendant of J07BB Influenza vaccines in Atlas. It will miss all the these ATC codes that are not mapped.

Cannot we simply put the ATC conceptId in the drug_concept_id, that will solve it ??

Thanks

Hi @Javier,

This is a very valid statement. If I remember correctly, the reason why some ATC 5th and most of ATC 4th don’t have “Maps to” is because they truly belong to multiple ingredients, and not wanting to give you 1-to-manies we don’t know which one of many we should pick programmatically and give you.

But for vaccines, it’s a bit different. We actually have a proper sole target ingredient for most of them, if not for all of them. This is because both RxNorm and CVX allow generic and not-so-generic ingredients for vaccines, such as influenza virus vaccine, unspecified formulation in your cases. You may say your first one is more specific, which is true. But this is what we need to live with as long as we use RxNorm and CVX as our Standard - but this is still pretty good mapping.

Since doing this programatycall might not be such a trivial task (under your first concept you can see multiple Haemophilus influenzae bacterial ingredients which have nothing to do with the Influenza viral vaccine) and because LLMs are still not aware of OMOP logic in the Drug domain, especially in the vaccine space, I would suggest to manually map those that you have in your bucket. Please, submit the Community contribution afterwards so that we have these mappings shared with everybody.

Thanks so much @Alexdavv ,

We didnt know about the CVX vocab.

The only problem with that is that if our users use an ATC code
as in the example J07BB with the descendants,
this will not pick up code in the CVX vocabulary, as it is not included as descendant in the concept_ancestor table.

Is there a reason why this is not there?
Could we add these vaccines in CVX to as descendants of an ATC?
We could do this locally first

Hi @Javier

You’re right. The entire Vaccine vocabulary WG has been working on the solution for quite some time. But this is not trivial. ATC, CVX, and RxNorm don’t perfectly share the common set of attributes between themselves, and even if they do, there’s no guarantee that you get the needed combination of attributes always substantiated into a concept. As in your example in ATC, it is an inactivated type of antigen with split or surface representation, while in CVX they are either too specific:

So, practically speaking, there won’t be any CVX descendants for this specific ATC.

Also, the hierarchy, being the 1-parent-to-many-descendants thing, can’t solve the ETL mapping problem. You still won’t know which one to pick out of many. Therefore, somebody needs to produce “Maps to” and put them into vocabularies.