OHDSI / OMOP-Standardized-Vocabularies

This repository is not longer active. It used to have the only purpose of creating releases of the Standardized Vocabularies, i.e. the content, not those of the Pallas Vocabulary Build System itself. As of 17-July-2018, vocabulary releases are also processed by Pallas. Please visit https://github.com/OHDSI/Vocabulary-v5.0/releases.
13 stars 6 forks source link

Why do not all clinical drugs have ingredients? #16

Closed PRijnbeek closed 6 years ago

PRijnbeek commented 6 years ago

I would expect that all clinical drugs are mapped to a standard ingredient in RxNorm and RxNormExtension.

700358 Thioridazine 2 MG/ML Oral Solution should have an 'RxNorm has Ingredient' relationship with 700299 Thioridazine Ingredient.

Also the relationship the other way around is not present in the vocab!!

This means if I search for Thioridazine ingredients I will miss drugs! This has impact on studies!

Are we running some sort of unit tests on the vocab to avoid this?

aostropolets commented 6 years ago

You should expect to see ingredients in concept_ancestor as ancestor_concept_ids, because this table is meant to show them. And you can see that in concept_ancestor Thioridazine 2 MG/ML Oral Solution sits just fine with it's ingredient. If you still want (for some special reason) to use 'RxNorm has Ingredient' relationship, then you need to go to the intermediate Clinical Drug Form that belongs to this dug, and only then query for 'RxNorm has Ingredient'.

Are we running some sort of unit tests on the vocab to avoid this? We are :)

PRijnbeek commented 6 years ago

Hi Ann,

Sorry your answer is not clear to me.

"You should expect to see ingredients in concept_ancestor as ancestor_concept_ids, because this table is meant to show them" -> yes it should but I think it does not.

  1. http://athena.ohdsi.org/search-terms/terms/700358/table?fullscreen=false&levels=10&standardsOnly=false&zoomLevel=4 does not show Thioridazine as ingredient

  2. "need to got to the intermediate Clinical Drug Form": Why do we have "Has Dose Form" and not "Has Ingredient" is not logical to me. Is there a good reason for this?

  3. "Also the relationship the other way around is not present in the vocab!! This means if I search for Thioridazine ingredients I will miss drugs!" -> that is still a problem or I have to make all kind of extra joins?? http://athena.ohdsi.org/search-terms/terms/700299/table?fullscreen=false&levels=10&standardsOnly=false&zoomLevel=4 shows only a relationship with the Thioridazine 2 MG /ML Component not with the clinical drug level. Why?

cgreich commented 6 years ago

@PRijnbeek:

This is how RxNorm works. Ingredients are not attributes, but parts of the hierarchy. They only connect to the next closest Concepts, which are Drug Forms and Drug Components. Just like the Concept "Heart Disease" doesn't have a relationship directly to "Atrial Fibrillation", but instead there are 4 or 5 levels between. That's the whole point of the CONCEPT_ANCESTOR table. It allows you to jump over as many intermediates as necessary, and still connect the Concepts.

You can read up on it here.

So, what you want to do is to use the CONCEPT_ANCESTOR table to find drugs containing Thioridazine:

select a.min_levels_of_separation as a_min,
  an.concept_id as an_id, an.concept_name as an_name, an.vocabulary_id as an_vocab, an.domain_id as an_domain, an.concept_class_id as an_class,
  de.concept_id as de_id, de.concept_name as de_name, de.vocabulary_id as de_vocab, de.domain_id as de_domain, de.concept_class_id as de_class
from concept an
join concept_ancestor a on a.ancestor_concept_id=an.concept_id
join concept de on de.concept_id=a.descendant_concept_id
where an.concept_id=700299;

700358 Thioridazine 2 MG/ML Oral Solution is right there (with 872 other descendants).

PRijnbeek commented 6 years ago

Hi Christian,

Of course... I actually run that query before...

Thanks for the reminder :)

Peter