Metrics on this tab
- Drug Information Content
Drug Information Content
Motivation
The OMOP documentation provides the following guidance on populating the drug_concept_id field of the drug_exposure table:
"The Drug Concept with the most detailed content of information is preferred during the mapping process. These are indicated in the CONCEPT_CLASS_ID field of the Concept and are recorded in the following order of precedence: ‘Branded Pack’, ‘Clinical Pack’, ‘Branded Drug’, ‘Clinical Drug’, ‘Branded Drug Component’, ‘Clinical Drug Component’, ‘Branded Drug Form’, ‘Clinical Drug Form’, and only if no other information is available ‘Ingredient’. Note: If only the drug class is known, the DRUG_CONCEPT_ID field should contain 0.”
In order to maximize the utility of the records in the drug_exposure table, it is important that selected drug concepts (and their associated concept classes) contain as much information as possible along the following attributes:
- Ingredient
- Drug Strength
- Dose Form
- Brand Name
- Quantity Factor
- Box size
- Pack content
- Supplier
Score
Based on the attributes listed in OHDSI's table of drug classes, we apply precedence scores to each drug concept class, such that 1 is best and 9 is worst.
A site's drug information content score is calculated as:
Scores are graded as follows:
- 1-4: Good
- 5-6: Fair
- 7-9: Poor
Examples
To improve the information content score, drug_concept_ids must be mapped to concepts within higher ranked drug classes. For example:
aspirin (concept_id = 1112807) -----> aspirin 0.1 MG/MG Oral Powder (concept_id = 43816662)
atorvastatin (concept_id = 1545958) -----> atorvastatin 20 MG (concept_id = 1545992)
duloxetine (concept_id = 19060281) -----> duloxetine 60 MG Delayed Release Oral Capsule [Cymbalta] Box of 7 (concept_id = 43296127)
Queries
-- Calculate the average precedence of drug records submitted
WITH drug_class_ranks AS (
SELECT * FROM (
SELECT 1 precendence, drug_class_name FROM UNNEST([
'Branded Pack', 'Quant Clinical Drug', 'Quant Branded Drug', 'Clinical Drug Box',
'Branded Drug Box', 'Quant Clinical Box', 'Quant Branded Box', 'Clinical Pack Box',
'Branded Pack Box', 'Marketed Product'
]) AS drug_class_name UNION ALL
SELECT 1 precedence, 'Quant Clinical Drug' drug_class_name UNION ALL
SELECT 2 precendence, 'Clinical Pack' drug_class_name UNION ALL
SELECT 3 precendence, 'Branded Drug' drug_class_name UNION ALL
SELECT 4 precendence, 'Clinical Drug' drug_class_name UNION ALL
SELECT 5 precendence, 'Branded Drug Component' drug_class_name UNION ALL
SELECT 6 precendence, 'Clinical Drug Component' drug_class_name UNION ALL
SELECT 7 precendence, 'Branded Drug Form' drug_class_name UNION ALL
SELECT 8 precendence, 'Clinical Drug Form' drug_class_name UNION ALL
SELECT 9 precendence, 'Ingredient' drug_class_name
)
)
SELECT
AVG(precendence) average_precendence
FROM drug_exposure de
JOIN concept c
ON c.concept_id = de.drug_concept_id
LEFT JOIN drug_class_ranks dr
ON dr.drug_class_name = c.concept_class_id
WHERE c.vocabulary_id IN ('RxNorm', 'RxNorm Extension')
ORDER BY average_precendence ASC;
-- Get counts of concept classes
SELECT
c.concept_class_id, COUNT(*)
FROM drug_exposure de
JOIN concept c
ON c.concept_id = de.drug_concept_id
GROUP BY c.concept_class_id
ORDER BY COUNT(*) DESC;