OHDSI Home | Forums | Wiki | Github

Drug indications and diagnosis


(Gowtham Rao) #1

Good evening:

Every drug packet insert has an list approved "on label"indications. Is it possible to link drug to condition that indicates the drug, e.g. RxNorm linked to SNOMED? Of-course “Off-label” indications is also possible, but that is out of scope of this question.

Use case: We expect individuals with Diabetes Mellitus to see a physician in outpatient setting every 6 months. We want to study

Outcome: ER outpatient visit rates

Comparator groups:

  1. Individuals on a drug with a recent outpatient physician visit for one of the indications for the drug
  2. Individuals on a drug without a recent outpatient physician visit for one of the indications for the drug.

Is it possible to relate drug to its indication in the OHDSI vocabulary?


Vocabulary navigation proposal
Evaluating the performance of a causal platform
(Christian Reich) #2

@Gowtham_Rao:

Each drug product is connected through the CONCEPT_RELATIONSHIP table to a Concept with the concept_class_id=‘Indication’. Those relationships have the relationship_id ‘Has FDA-appr ind’ and ‘Has off-label ind’ (if you have a license to FDB) and ‘May treat’ and ‘May prevent (NDF-RT)’ (which is free). Those are connected to SNOMED concepts through a second CONCEPT_RELATIONSHIP record.

Alternatively, you can use the LAERTES project to find out about the label information: https://github.com/OHDSI/KnowledgeBase.


(Gowtham Rao) #3

Got it. Something like this? is there a better way?

select a.concept_name as condition_name
		, c.concept_name as drug_name
from 
	schema.CONCEPT as a
inner join
	schema.CONCEPT_RELATIONSHIP as b
on a.concept_id = b.concept_id_1
inner join
	schema.CONCEPT as c
on b.concept_id_2 = c.concept_id
where a.concept_class_id = 'Ind / CI'
		and a.domain_id = 'Drug'
        and b.relationship_id = 'May be treated by'
        and a.concept_name like '%Diabetes Mellitus%'
        and a.invalid_reason is null
        and b.invalid_reason is null
        and c.invalid_reason is null
order by a.concept_name

(Christian Reich) #4

@Gowtham_Rao:

This works, except you won’t get Standard Concepts, because they are not always directly linked. You’d have to keep joining CONCEPT_RELATIONSHIP all the way down.

Obviously, that is a huge pain, and we have the CONCEPT_ANCESTOR table that does that for you. So, if you want just Indication, you can do this:

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_class_id in ('Ind / CI', 'Indication') -- One is for NDFRT, the other for FDB Indications
and de.vocabulary_id in ('RxNorm', 'RxNorm Extension') -- You don't need that if you join directly with DRUG_EXPOSURE
and lower(an.concept_name) like '%diabetes%'

However, if you want to distinguish labeled and off-label indication, you’d have to traverse it manually. We don’t have a good solution for that. Same is true for contra-indications.


(Christian Reich) #5

Actually, you said you need to check the conditions in the CONDITION table. Indications are not Conditions, they are Drug classes. But there is a cross-link to Conditions:

select 
  c.concept_id as c_id, c.concept_name as c_name, c.vocabulary_id as c_vocab, c.domain_id as c_domain, c.concept_class_id as c_class, -- Condition
  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 -- Drug
from concept an -- Indications
join concept_ancestor a on a.ancestor_concept_id=an.concept_id -- connect to 
join concept de on de.concept_id=a.descendant_concept_id -- ...drug
join concept_relationship r on r.concept_id_1=an.concept_id -- connect to
join concept c on c.concept_id=r.concept_id_2 and c.domain_id='Condition' -- Snomed Conditions
where an.concept_class_id in ('Ind / CI', 'Indication')
and de.vocabulary_id in ('RxNorm', 'RxNorm Extension')
and lower(c.concept_name) like '%diabet%' 

Let me know.


(Gowtham Rao) #6

Thank you. That works very nicely.


t