NDC is too low level. You may have to simplify to a level of an active ingredient. Can you explain more about your context. And the term Authorized Generic. Is AG a drug product (ingredient+dose_form) or an ingredient?
I hope continuing an older thread is OK, as I have a similar question. It seemed preferable to starting a new thread, but I would be glad to. I am looking into the feasibility of finding generic equivalents of a drug, given, as a starting point, the NDC code of a brand name drug.
Could you clarify what you mean by “NDC is too low level”? Given the NDC 43353084915 of the brand name “Abilify 20MG” medication, I was able to use the following process to find the equivalent generic:
MariaDB [rx]> select rxcui from RXNSAT s where s.atn='NDC' and s.atv='43353084915';
+--------+
| rxcui |
+--------+
| 352309 |
+--------+
MariaDB [rx]> select r.rxcui1 from RXNREL r where r.rxcui2=352309 and r.rela='tradename_of';
+--------+
| rxcui1 |
+--------+
| 349553 |
+--------+
MariaDB [rx]> select c.str from RXNCONSO c where c.rxcui=349553 and c.tty='PSN';
+--------------------------------+
| str |
+--------------------------------+
| ARIPiprazole 20 MG Oral Tablet |
+--------------------------------+
(I also did this as a single query with joins, but it took several minutes to run, I’m sure because of indexes I am missing).
I was wondering if you could elaborate on a couple things:
Pitfalls of this process, as your comment implies
How comprehensive is RXNORM’s NDC collection? I tried the same with NDC “49491066” (Zoloft/Sertraline 100MG) but I can’t find that NDC at all in RXNORM. (Possibly because it is eight digits? I did try padding with zeroes to 10 and 11 and all the dashed forms).
We don’t have that information as an attribute in the RxNorm concepts, @Ramy_Alsaffar. We know when something is branded. If it is not branded it could be an authorized explicit generic, or just lack of brand information. In fact, if something is authorized or not has nothing to do with the NDC or RxNorm, it is something between the insurance and the provider.
We don’t use NDC as standard concepts in the OMOP Vocabularies. We use RxNorm. However, there is a many to one mapping between NDC and RxNorm.
I do not think this notion is relevant here. But maybe @Vojtech_Huser has some more idea.
We don’t use the original RxNorm files. In fact, they are very badly performing, as you found out. They are not built for such a process.
Here is the process you want to do in the OMOP CDM:
Lookup the NDC CONCEPT record by concept_code (or in Athena)
Map it to the standard RxNorm by looking it up in the CONCEPT_RELATIONSHIP table (relationship_id=‘Maps to’, in Athena)
Lookup the Clinical (generic) Concept by again consulting the CONCEPT_RELATIONSHIP table (relationship_id='Tradename of", Athena).
Thank you for detailing the process and even going as far as constructing the links with my specific examples. That does look promising. We are looking into building this capability into an electronic medical record system, i.e., suggesting generic alternatives for a brand medication. It does not have to be perfect in the sense that if it occasionally does not find any suggestions, that is ok; the user will often know the generic or look it up if really necessary. So may I ask you then, whether the CDM information can be built into commercial products, like an EMR/EHR, or is that not allowed?
The OMOP Standardized Vocabularies are Apache Public License, except SNOMED and the proprietary. So, RxNorm and NDC are APL, and you can do whatever you want, as long as you give credit to OHDSI. But don’t forget that the data are given AS IS, which means it is at your own risk if we make a mistake.