Andy_Kanter
(Andrew S. Kanter, MD MPH FACMI FAMIA)
#21
I definitely would like to be involved with this group. I manage the CIEL dictionary for OpenMRS and have published an open source concept dictionary (mapped to SNOMED, ICD-10, CVX, RxNORM) for COVID including vaccination concepts (including global vaccines) here: https://app.openconceptlab.org/#/orgs/CIEL/collections/COVID-19-Starter-Set/
Adam presented the decomposition of four pneumo CVX codes.
Why are we decomposing? We want a use case driven hierarchy and decomposition will help us identify the important attributes that should be considered when building a hierarchy.
In past work on vaccines vocab team did not infer attributes that were not explicitly stated in CVX concept name. Possibly better to decompose branded drug rather than CVX code.
In the case where CVX codes have only one branded drug form the decomposition is simple. For âunspecifiedâ case the decomposition is less clear.
Application â (1st, 2nd, 3rd dose) should be handled from the cohort building perspective and not encoded in the vocabulary.
Ingredient, brand, and vaccine type are important attributes for use cases
RxNorm separates dose of each individual ingredient. Is the dose of each individual ingredient important for vaccine use cases?
A lot of vaccine records are recorded in source data as procedures with very limited attribute information.
Ideas for improvements could be made in the near future
How much vaccine content is not represented as CVX?
CVX âmaps toâ RxNorm in a small number of cases: when there is an exact equivalent
April 28 meeting agenda
Decomposition update: Denys will present decomposition of Merck branded drugs
Review use cases and attributes required by use cases
Roadmap update and discussion:
Fix incorrect vaccine mappings identified by Denys
Introduce CVX Vaccine Group
ATC-RxNorm (CVX) hierarchy improvements â where to start
Iâve been following this thread and the vocabulary work from afar. The 6am MT meeting time is just too early for me. Here in Colorado, and other Epic data Iâve seen, have most vaccine data coming across as string text and not coded. Is providing guidance on mapping these data to standard concept_ids part of this WGs role? I define âguidanceâ as the process on mapping a string text. Something along the lines, map a drug based on the following attributes with #1 being the most important:
Given that we have a significant amount of decomposition work to complete I would like to adjust this meeting to every two weeks instead of weekly. This will give us more time to make progress on the decomposition work before we check in again. Our next meeting will be 5/19. Denys Kaduk and I will continue our work decomposing branded vaccine products. If anyone else wants to coordinate with us on this work please reach out to me or Denys directly.
Thanks again for your participation in this group! Iâll post the agenda for the 5/19 meeting here a few days before we meet again.
This is what I posted in the MS teams after the discussion:
The current solution (that is implemented for COVID and we need to apply for the whole list of vaccines):
Map them over to the Drug Domain concepts. The context whether itâs a first, second or buster dosage will be lost, but may be addressed in cohort definition.
Unclear historical or current vaccinations are mapped to the History of drug therapy concept, while the actual vaccine is mapped to the Drug Domain concept (value_as_concept_id field).
Unspecific vaccine / serum administrations are mapped over to the appropriate generic CVX concepts, unless we found them redundant or corrupting something.
I have been looking at the vaccine tradename to CVX mapping from the CDC (link) and it looks to me like different manufacturers sometimes produce vaccines under the same tradename perhaps at different points in time. For example:
Columns are: tradename, cvx name, cvx code, manufacturer
Can I safely assume that vaccines with the same tradename contain the same ingredients even if they were created by different manufacturers?
No, there is no clear rule.
Even within the same brand name and manufacturer they do change the composition of ingredients.
For flu vaccines it happens every year.
Another example is prevnar, prevnar 13 and prevnar 20 - pretty the same brand names.
For the rest it should be stable more or less, unless you compare the vaccines from the different decades.
And we didnât observe composition differences due to manufacturer change. Mostly it happens because of administrative reasons - companies collaborate or sell the technology to each others.
One thing that Iâm struggling with regarding CVX is when to assign attributes to a CVX code that are not explicitly stated in the description. For example what is the difference be between
CVX code 20 - diphtheria, tetanus toxoids and acellular pertussis vaccine
and CVX code 107 - diphtheria, tetanus toxoids and acellular pertussis vaccine, unspecified formulation
The latter implies that the former has a specified formulation. But what then is the formulation of CVX code 20?
There are at least four different branded products that map to CVX code 20 according to the product to CVX code crosswalk from CDC.
If these four products have different formulations then the formulation of CVX code 20 is ambiguous which is, for our purposes, the same as unspecified since we cannot say what the formulation is. (I actually canât tell if all of these have the same formulation and have found it difficult to find information on discontinued vaccines.)
Shouldnât CVX:20 and CVX:107 actually be represented by a single general DTaP concept in the OMOP vocabulary?
Iâd ask the CDC, @Adam. What their intention was to create 107 when they already had 20. Usually, there is some specific reason. Which may be already obsolete. I know it sucks.
It mostly depends on how you define the brand name.
I just checked in OMOP vocabulary. In RxNorm itâs all clean since even for the flu vaccines they made the following attributes a part of the brand name: season (year), dose potency, route of administration, number of ingredients, hemisphere it was recommended for.
And now the branded names look like:
In many vocabulary sources (and as well as in OMOP) such things are not considered to be the property of the brand name.
Thatâs why when I run the same query against RxNorm Extension I found many candidates.
However, most of them are just the same thing written differently (and this is another problem we have). Also, youâll find some erroneous combinations (like âCholera Vaccine / Vibrio cholerae Oral Suspensionâ).
But this is anyway a good list to start with:
The query
with inclusion as (SELECT
'vaccine|virus|Microb|Micr(o|)org|Bacter|Booster|antigen|serum|sera|antiserum|globin|globulin|strain|antibody|antitoxin|toxoid'
),
exclusion as (SELECT
'Drosera'
),
products as (
SELECT *
FROM concept c
WHERE c.vocabulary_id IN ('RxNorm', 'RxNorm Extension')
AND c.concept_class_id ~* 'branded|marketed'
AND c.concept_name ~* (select * from inclusion)
AND c.concept_name !~* (select * from exclusion)
),
a as (
SELECT c2.concept_name as brand_name,
c.concept_id as product_concept_id,
c.concept_name as product_concept_name,
array_agg(DISTINCT c3.concept_id ORDER BY c3.concept_id) as ingredients
FROM products c
JOIN concept_relationship cr
ON c.concept_id = cr.concept_id_1
AND cr.relationship_id IN ('Has brand name')
AND cr.invalid_reason IS NULL
JOIN concept c2
ON cr.concept_id_2 = c2.concept_id
JOIN concept_ancestor ca1
ON c.concept_id = ca1.descendant_concept_id
JOIN concept c3
ON ca1.ancestor_concept_id = c3.concept_id
AND c3.concept_class_id = 'Ingredient'
GROUP BY 1,2,3
),
brand as (
SELECT brand_name
FROM a
GROUP BY 1
HAVING COUNT(DISTINCT ingredients) > 1
)
SELECT DISTINCT b.brand_name,
product_concept_id,
product_concept_name,
ingredients
FROM brand b
JOIN a
ON b.brand_name = a.brand_name
ORDER BY b.brand_name,
product_concept_name,
product_concept_id,
ingredients;
Look here, this 20 guy is what typically recognized as DTaP, while 106 has more pertussis antigens and recognized as DTaP(5) / Daptacel. And the 107 guy is a common grouper for them and for all other DTaP-containing combined vaccines.
What scares me more is that 01 diphtheria, tetanus toxoids and pertussis vaccine and some other âcellularâ guys are all linked to DTaP (acellular) what is wrong by the definition, but was probably done because the âcellularâ DTPs are not longer used on the U.S. market. So they used the current, but more specific grouper what creates a lot of confusion.
In general I think the reliance on non-explicit information in the vocabulary is very bad. Vocabulary users should be able to take concepts at face value and not have to consider the intention of the creators. The reason is that if a user canât take CVX codes at face value how will they know they can take any standard OMOP concept at face value.
Agree, but how would you know when this elimination from the market has happened? In the sources you have both current and old data (when it was still used in the U.S.), while vocabularies can show only one (the current) state for the concept, i.e. DTP was widely used in the U.S. before they completely switched on DTaP.
Actually, we add it to the concept name (or synonym), look.
However, it looks like there are some more:
Maybe CVX just recently changed something, @Dymshyts@Violetta_Komar?
We anyway need to fix it and this is one of the low-hanging fruits we discussed in the vaccine WG.