OHDSI Home | Forums | Wiki | Github

Proposal of CVX and CVX-RxNorm/CVX-ATC hierarchical crosswalks creation

(Violetta Komar) #1

Hello, Everyone!

Currently, the CVX vocabulary is considered to be standard and is often used for mappings of vaccines from many different drug vocabularies. However, CVX vaccines have a granularity deficit due to the absence of such defined attributes as an exact ingredient, dose form or drug strength. This can complicate the cross-analysis of pharmaceutical information and lead to data loss during studies. Therefore, we have developed a new mapping logic for the CVX and built relationships providing hierarchical crosswalks to the RxNorm and ATC and making the CVX a more full-fledged part of the ATC-RxNorm hierarchy.

Please, see our proposal below.


CVX is a coding system for a vaccine substance administered. The codes are used for immunization messages and it is a product of the Centers for Disease Control and Prevention (CDC). CVX includes approximately 200 active and inactive vaccine terms. It also indicates a vaccine’s current availability and the last update time for the vaccine code. Inactive vaccine codes allow users to transmit historical immunization data.


All CVX source information is obtained from the following:

  1. Centers for Disease Control and Prevention (CDC) Website:
  1. The National Library of Medicine (NLM) Website:

For the purpose of comparative analysis, The NDC to CVX Lookup Crosswalk was used during the creation of CVX hierarchical relationships.

Standard concept

  • If CVX concept has a standard equivalent in "RxNorm", it is considered to be Non-standard.
  • If CVX concept does not have a standard equivalent in "RxNorm", it is considered to be Standard.


The majority of CVX concepts are in the "Drug" domain. Only “Tuberculin skin test”-related CVX concepts have the domain of ‘Measurement’ (5.3 Mapping to the SNOMED).

Concept Class

All CVX concepts have Concept Class of "CVX".

Internal CVX relationships

"Is a" from CVX Vaccine concepts to CVX Vaccine Groups and reverse "Subsumes" relationships define Internal CVX Hierarchy.

External CVX relationship

Target vocabularies for the CVX were defined as the RxNorm*, ATC and SNOMED.

Each CVX concept should be obligatory assigned either a ‘Maps to’ or ‘Is a’ relationship, except those mentioned in paragraph 4 (see below).

  • "Maps to" represents an equivalent mapping from a CVX concept to a standard RxNorm one. It can be only a one-to-one relationship.
  • "Is a" represents nonequivalent “uphill” mapping from a CVX concept to the closest (either single or multiple) standard logical ancestor(s) in the RxNorm or ATC.

The following relationships are optional:

  • "Subsumes" indicates “downward” mapping from the CVX to the closest (either single or multiple) standard logical descendant(s) in the RxNorm only
  • "CVX - RxNorm" relationships from the CVX concepts to the RxNorm, which have been made by the RxNorm team.

* Building of relationships from the CVX to the RxNorm Extension requires further assessment.

Mapping logic

  1. If a CVX concept has a standard semantic equivalent represented in the RxNorm by the following:
  • Ingredient - only a source ingredient of a CVX concept is defined,
  • Clinical Drug Component - while an ingredient is determined, a drug strength of a CVX concept not mentioned in the source can be defined under the global immunization standards (Internal link 5.2 Exact dosage ubiquity),
  • Clinical Drug Form - while an ingredient is determined, a dose form of a CVX concept, if not mentioned in the source, can be defined under the global immunization standards (5.2 Exact dosage ubiquity),

then “Maps to” relationship is assigned.

  1. If a CVX concept does not have a standard equivalent and is represented by the RxNorm Ingredient and, if present, other RxNorm attributes such as Drug strength, Dose Form, Quantity factor, it is considered to be AT or BELOW the RxNorm Ingredient level according to the OMOP Drug Domain rules. In such a case "Is a" relationship is assigned to the RxNorm Ingredient and "Subsumes" relationship - to the RxNorm Clinical Drug Component(s) or Clinical Drug Form(s), if possible.

  2. If a CVX concept does not have a standard equivalent and cannot be covered by OMOP Drug Domain rules, it is considered to be ABOVE the RxNorm Ingredient level. The following use cases are distinguished:

3.1 A CVX vaccine contains attributes other than RxNorm and not corresponds to a Marketed Drug Product. In such an instance, a single "Is a" relationship to the ATC is built.

3.2 A monocomponent CVX vaccine has several relevant RxNorm Ingredients. In this case, a single "Is a" relationship to the ATC and "Subsumes" relationships to several RxNorm Ingredients are assigned.

3.3 A CVX vaccine has several relevant RxNorm Ingredients, Dose Forms, and Drug Strengths. In such a case, a single “Is a” relationship to the ATC and “Subsumes” relationships to the RxNorm Quantified Clinical Drugs are built. It works with vaccines against Hepatitis A and a combined vaccine against Hepatitis A and Hepatitis B. For example, “hepatitis A vaccine, adult dosage” has 2 relevant RxNorm Ingredients of “798361 Hepatitis A Vaccine (Inactivated) Strain HM175” and “253174 Hepatitis A Vaccine, Inactivated” as well as Dose Forms (Injection, Prefilled Syringe) and Drug Strengths for adults’ immunization (1440 UNT/ML for HM175 strain and 50 UNT/ML for Hepatitis A Vaccine, Inactivated).

3.4 A CVX vaccine contains "unspecified formulation" and resembles a category. For all such concepts single "Is a" relationships to the ATC are assigned.

  1. If a CVX concept does not have a standard equivalent and cannot be mapped via “Is a” to the closest semantic ancestor, it remains unmapped and does not participate in the CVX-RxNorm and CVX-ATC hierarchies. Absence of mapping is attributable to the following:
  • a vaccine does not exist yet (“65 - leprosy vaccine”)
  • a vaccine is currently under development or not approved by the FDA (“61 - human immunodeficiency virus vaccine”, “58 - hepatitis C vaccine”)
  • a CVX concept represents not a vaccine (“99 - RESERVED - do not use”)
  1. Particular cases:

5.1 Vague RxNorm Ingredient formulation

Some of the RxNorm Ingredients have semantic duplicates with insufficient details. There is a checklist with such RxNorm Ingredients. The reason why an Ingredient was treated as less appropriate is represented at a "deprecation_reason" column.

Incorrect RxNorm Ingredients.xlsx (5.8 KB)

5.2 Exact dosage ubiquity

For some CVX vaccines, exact dosages not mentioned in the source are determined according to the global immunization standards established by WHO and CDC . For example, "121 - zoster vaccine, live" is used only for the prevention of shingles in an exact dosage of 29800 UNT/ML. Meanwhile, "21 - varicella virus vaccine" is used for the prevention of rubella in an exact dosage of 2700 UNT/ML. So, they both are mapped to corresponding RxNorm Clinical Drug Components.

5.3 Mapping to the SNOMED

Among CVX codes, there are 3 exceptions, which are mapped through "Is a" relationships both to the RxNorm Ingredient (a "Drug" domain) and the SNOMED Procedure (a "Measurement" domain) due to mention of such a procedure in the concept name.

5.4 Relationships for Influenza vaccines

The majority of CVX Influenza vaccines are ambiguous in meaning because they do not have information about an Influenza strain and a year of utilization, while this is always reflected by the RxNorm. Thus, such vaccines cannot be embedded in the RxNorm Hierarchy. However, to preserve links given by the source (NLM), not hierarchical relationships "CVX - RxNorm" have been used. Meanwhile, to interpose CVX Influenza vaccines to the ATC hierarchy, "Is a" relationships to the ATC have also been built.

Only one Influenza vaccine (CVX code of “160”) has an "Is a" link to the RxNorm Ingredient because it semantically resides AT the RxNorm Ingredient level.


Depending on a semantic localization towards the RxNorm Ingredient, CVX concepts are embedded either in the RxNorm or ATC hierarchy, as shown in a diagram below.

As a result, a hierarchical crosswalk between CVX, ATC, and RxNorm will be available after an ATC to RxNorm mapping improvement.

Exclusion criterion for participation in a hierarchy construction is an absence of mapping either to the RxNorm or ATC.

CVX current mappings.xlsx (103.0 KB)

Vaccines standard - CVX or RxNorm?
(Violetta Komar) #2

@Christian_Reich, @Dymshyts, @aostropolets what do you think about that?

Also, we want to draw your attention to paragraph 5.3 Mapping to the SNOMED. Do you agree with this approach?

(Christian Reich) #3

@Violetta_Komar: Wow. This is a big bite we need to chew on. Give us a minute. :slight_smile:

(Dmytry Dymshyts) #4

So, the question is
“Can we map diagnostic test to a Drug domain?”
according to our documentation
A Drug is a biochemical substance formulated in such a way that when administered to a Person it will exert a certain physiological or biochemical effect.

So, tuberculin skin test is a Drug. But not a procedure, because CVX encodes product, but not a procedure in this case.

(Anna Ostropolets) #5

I think so far we’ve been considering diagnostic tests as devices or procedures. Probably, this is because of the logic that is not explicitly stated in the definition above but is implied: these substances not only have a certain physiological effect but also are administered because of that. So, the primary reason for ordering tuberculin skin test is to test and not to treat; the effect of the test is therefore somehow ‘side’. Otherwise, we could also classify foods as drugs as they have a physiological and biochemical effect on the body.

(Dmytry Dymshyts) #6

Right, and what should we do with Homeopathy - put to procudure alike a psychotherapy?:slight_smile:

LPD_Belgium, JMDC, DA_France have these tuberculins stated as Devices,
RxNorm and RxNorm Extension(!) have a lot of Drug concepts.
So, the correct decision is to assign to some RxNorm and subsequentially RxNorm Extension Ingredients Device domain.
It might be a relatively big effort as we need to modify all our drug scripts.
So, I would like to keep CVX mapping for tubrerculin test as is for now.

(Vojtech Huser) #7

However, CVX vaccines have a granularity deficit due to the absence of such defined attributes as an exact ingredient, dose form or drug strength

I agree that ideal standard vaccine terminology should have those.

A nice vaccine attribute would also be type: either live virus or not live (=chopped virus particles).

As a personal hobby - I like to collect boxes of influenza vaccines from past years (the part of the box with NDC code). And then in few years later, I challenge all fancy systems with searching for those NDC codes from those boxes.

Do I also understand correct that specific vendor of vaccine may not be captured if we exchange CVX codes. (in other words - vaccines may have same problem as devices or “procedure-drugs”).

(Violetta Komar) #8

Hello, we updated the file with mappings