OHDSI Home | Forums | Wiki | Github

Vaccines standard - CVX or RxNorm?

@Violetta_Komar:

Could you be so kind and create a comprehensive graphical image of the ATC, CVX and various RxNorm concepts in this example and their hierarchical relationships? Would make understanding your approach a lot easier.

I see, there are some RxNorm vaccines we can’t properly assign to CVX.
@Violetta_Komar, can we make only uphill relationships from CVX as a first step.
I mean these CVX 45, 08, 44, 128 Is a 528323 Hepatitis B Surface Antigen Vaccine.
For now we have only one use case: we need to find CVX codes by the ATC hierarchy, and building Is a relationships from CVXs is enough.

Now vaccine from this example will been mapped to RxNorm Ingredient, if you still need comprehensive graphical image i will be making it

@Violetta_Komar: Be so kind.

According the initial question - what are the best candidates to map CPT to.
Here is the table attached with manual evaluation whether meaning of RxNorm or CVX concept is closer to initial CPT4 meaning. See the flags in “RxNorm is better” and “cvx is better”. “0” means no difference.
In the cases where CVX and RxNorm are equivelent we map to RxNorm as it has better hierarchical tree.

cpt_rxn_cvx_compare.xlsx (11.7 KB)

Hello @Dymshyts
Thank you for all this work!!
Wouldn’t IG IM map to RxNorm code- 108067- Intramuscular immunoglobulin

and IG IV map to - 353532 Immunoglobins, Intravenous

This way we can distinguish the IV from the IM, and there are other more specific codes with concentration but I don’t know if we need those or not.

You’re welcome, @schillil :slight_smile:
Both “108067- Intramuscular immunoglobulin” and “353532 Immunoglobins, Intravenous” are non-standard concepts. We can use only standard concepts in CDM, thus we map only to standard ones.
Note,
108067 Intramuscular immunoglobulin Is Precise Ingredient, Form of 5666 Immunoglobulin G
and 353532 is just outdated, RxNorm never uses Route in Ingredients.

Mappings from here
https://www2a.cdc.gov/vaccines/iis/iisstandards/vaccines.asp?rpt=cpt
exist in OMOP vocabulary now except those that can be mapped to RxNorm better.
And we are working on CVX harmonization itself.

Ah, @Dymshyts you’re right-- I thought all the RxNorms were standard for drugs so I didn’t even check the specific attributes of the codes. Thanks again.

Can you use RxNorm Extension here?
36783518 Immunoglobulin G Intravenous Solution
44029797 Immunoglobulin G Intramuscular Solution

1 Like

Ah, you’re right, CVX is much better here.

Technically there should’t be even such a two different Dose Forms like “Intravenous Solution” and “Intramuscular Solution”. both should be “Injectable solution” - exactly as RxNorm does.

Keeping you posted:
Almost finished, stuck with Influenza vaccines.
We discovered significant inconsistency in concept definition between RxNorm and CVX here:

CVX Influenza concept attributes:
quadrivalent / trivalent / null
preservative-free / contain preservative / null
pediatric / null
intradermal / nasal / injectable / null
seasonal / null
recombinant
adjuvanted

RxNorm Influenza concept attributes
Number of ingredients
Dose Form
distinct strain name (i.e. influenza A virus A/Michigan/45/2015 (H1N1) )

I recently completed manual mapping of Colorado’s influenza string data to the most granular concept available. Sometimes this resulted in mapping the source string to an ingredient or generic concept_id because the source string didn’t specify whether the drug contained a preservative or the specific strain of the drug and we don’t make assumptions. Would you like to take a look at some real world data? It’s interesting from a geeky, terminology perspective :slight_smile:

CVX and RxNorm Ingredient have a different attributes. But at the detailed product (Clinical or Branded) level only a few attributes combinations really exist. Often only one. So, you may want to create an alternative CVX to RxNorm Detail mapping (a so-called jump) based on these mappings, and then we let the postprocessing sort things out. Want to try?

absolutely:)

Sounds good, doensn’t work.
CVX1 Subsumes “Drug X with ingredient A”
CVX2 Subsumes “Drug Y with ingredient A”
X and Y have the same ingredients but different Brand Names: one of them, let’s say, is “preservative-free”, another “contain preservative”.
Postprocessing will make
CVX1 Subsumes ingredient A
CVX2 Subsumes ingredient A
which is wrong.

We want to release CVX in this way:
If we can find unambigous hierarchical relationships between CVX and RxNorm, we build them as “Is a” / “Subsumes” which will be included in concept_ancestor.
When we’re not sure about a hierarchical connection, we’ll build “CVX - RxNorm” relationships given by the source. But they will be non-hierarchical.

Hi everyone. We have a new proposal mapping logic of CVX here

@Christian_Reich should we use these mappings and make CVX non-standard? I’m a fan of CVX codes, but from what I remember CVX codes are not included in the covariate analysis for the PLE packages. Is that correct @schuemie?

I don’t know the CohortMethods code, but it seems like the eras are constructed on RxNorm. If this is the case, then CVX codes would not be incorporated into these analyses, which does affect our OMOP instance. Hopefully, I’m interpreting the code wrong and CVX codes are included as covariates, in which case I’m fine w/ CVX codes since that’s what used in our immunization registry :slight_smile:

FYI, @Christian_Reich @schuemie @Patrick_Ryan I created an issue in the FeatureExtraction repo b/c I think CVX codes are not being included as a covariant.

1 Like

just following up on this issue. @schuemie , if you think this is correct, I can try to create a PR if you’d like. thanks.

t