OHDSI Home | Forums | Wiki | Github

Mapping RxNorm to ATC with mapping in concept_relationship

Hi, we are trying to map the RxNorm code in our data source to ATC categories using the concept_relationship. The RxNorm code in our data do not have OMOP extension and there are in total of around 55k unique RxNorms. Even though there are around 42k non-OMOP relationship provided in concept_relationship, we were only able to find mapping of 3800 of them. Do you happen to know why this is happening and what would be a possible solution? Is there any possible step of internal RxNorm-to-RxNorm mapping in between that we are missing? Thank you very much

Hello, @Ivonne_Xu

ATC - RxNorm is a little bit complex type of relationship. To get these links, you should use concept_ancestor table, where most of the ATC - RxNorm relationships are present. The original ATC hierarchy is extended by Standard Drug Products of RxNorm and RxNorm Extension vocabularies, which are assigned to be descendants of the 5th ATC Classes, meaning only Standard Drug Products have them.

However, if you want to get the absolute maximum, you need to query concept_relationship too, because there are some relationships in concept_relationship, absent in concept_ancestor

I also suggest this short tutorial on ATC and the ATC vocabulary documentation.

Regarding your use case, do you mean here, that most of your RxNorms are Invalid? What’s the 42k non-OMOP relationship?

42k non- OMOP extension relationship. This is very helpful we will take a look into the links you shared. Thank you!

Another question that I have is that- I noticed in our raw database it usually consists of a more simple version of the rxnorm. For example, we have code 704 in raw database but I can only find mapping of code 4316 while they mean the same thing — (as indicated in rxcui portion in the link https://bioportal.bioontology.org/ontologies/RXNORM?p=classes&conceptid=704) how can we better pair them in this case? Thank you!

@Ivonne_Xu:

No idea what Bioportal does there. That RxCUI list makes no sense. 740 is amitriptyline, 4316 is felodipine. Athena has it the same way. The other RxCUIs listed there are other things. Beats me.

Thank you for the clarification. As responded by Oleg, concept_ancestor table and rxnorm-atc relationship in concept_relationship table are both good methods we can find the mapping between rxnorm and atc categories. There are a lot of rxnorm ingredients that we couldn’t find mapping to atc using the above methods still, but we can find them linking to atc categories under ‘MAP FROM’ relationships in concept_relationship table. E.g. Bacitracin with RxNorm code 1291, concept_id 915175 is MAP FROM bacitracin oral with ATC code R02AB04, concept_id 21603239; bacitracin systemic with ATC code J01XX10, concept_id 21603070; and bacitracin topical with ATC code D06AX05, concept_id 21602065. I want to ask is there any risk if we create a mapping based on ‘MAP FROM’? And why is it a MAP FROM relationship instead of RxNorm - ATC in these cases? Thank you

Thank you for the clarification. As responded by Oleg, concept_ancestor table and rxnorm-atc relationship in concept_relationship table are both good methods we can find the mapping between rxnorm and atc categories. There are a lot of rxnorm ingredients that we couldn’t find mapping to atc using the above methods still, but we can find them linking to atc categories under ‘MAP FROM’ relationships in concept_relationship table. E.g. Bacitracin with RxNorm code 1291, concept_id 915175 is MAP FROM bacitracin oral with ATC code R02AB04, concept_id 21603239; bacitracin systemic with ATC code J01XX10, concept_id 21603070; and bacitracin topical with ATC code D06AX05, concept_id 21602065. I want to ask is there any risk if we create a mapping based on ‘MAP FROM’ ? And why is it a MAP FROM relationship instead of RxNorm - ATC in these cases? Thank you

t