RxNorm Technical Documentation
This documentation provides detailed information about the technical aspects of RxNorm.
1.0 Introduction
RxNorm, a standardized nomenclature for clinical drugs, is produced by the National Library of Medicine. In this context, a clinical drug is a pharmaceutical product given to (or taken by) a patient with a therapeutic intent. In RxNorm, the name of a clinical drug combines its ingredients, strengths, and form.
In RxNorm, the form is the physical form in which the drug is administered or is specified to be administered in a prescription or order. The RxNorm clinical drug name does not indicate the form in which the product was manufactured, or its form when it arrived at the dispensary. With few exceptions (for packs), the RxNorm clinical drug name does not indicate the size of a package of drug units. RxNorm clinical drug names do not differentiate between over-the-counter and prescription medications.
RxNorm's standard names for clinical drugs are connected to the varying names of drugs present in many different controlled vocabularies within the Unified Medical Language System (UMLS) Metathesaurus, including those in commercially available drug information sources. These connections are intended to facilitate interoperability among the computerized systems that record or process data dealing with clinical drugs.
Like other vocabularies in the Metathesaurus, RxNorm is organized by concept or meaning. All concepts in RxNorm are assigned at least one semantic type from the Semantic Network ( Chapter 5 of the UMLS Reference Manual ). This provides consistent categorization of all concepts in RxNorm at the relatively general level represented in the Semantic Network.
2.0 Scope of RxNorm
RxNorm is both a source and a subset of the Metathesaurus. The scope of RxNorm is determined by the combined scope of its source vocabularies. Many relationships (primarily synonymous), concept attributes, and some concept names are added by the NLM during the creation of RxNorm forms. The concepts themselves are derived from the names provided by the source vocabularies.
3.0 Preservation of Content and Meaning from Source Vocabularies
RxNorm reflects and preserves the meanings, concept names, and relationships from its source vocabularies in the same way that the Metathesaurus preserves content and meaning. Please refer to the UMLS Reference Manual for further information on this topic.
RxNorm contains source vocabularies produced by different copyright holders. The majority of the content of RxNorm is available for use under the basic and open terms described in sections 1-11 and 13-16 of the Metathesaurus license . Please refer to the UMLS Reference Manual for further information on this topic.
3.1 Source Vocabularies
Click on a Source Abbreviation (SAB) link in the table below for details about a source, including how a source is represented in RxNorm. The following source vocabularies are included in RxNorm:
SAB | Source Name | Source Restriction Level (SRL) † |
---|---|---|
ATC | Anatomical Therapeutic Chemical Classification System | 0 |
CVX | Vaccines Administered | 0 |
DRUGBANK | DrugBank | 0 |
GS | Gold Standard Drug Database | 3 |
MMSL | Multum MediSource Lexicon | 1 |
MMX | Micromedex RED BOOK | 3 |
MSH* | Medical Subject Headings (MeSH) [subset] | 0 |
MTHCMSFRF | CMS Formulary Reference File [subset] | 0 |
MTHSPL | FDA Structured Product Labels | 0 |
NDDF | FDB MedKnowledge (formerly NDDF Plus) | 3 |
RXNORM | RxNorm terminology normalized names and codes | 0 |
SNOMEDCT_US | US Edition of SNOMED CT [drug information subset]** | 9 |
USP | USP Compendial Nomenclature | 0 |
VANDF | Veterans Health Administration National Drug File | 0 |
* Medical Subject Headings (MeSH) last appeared in the October 2, 2023 monthly release.
† Source restriction level (SRL) corresponds to section 12 of the UMLS license agreement . Sources with SRL=0 follow the general terms of the license. Sources with SRL=1,2,3,4 have restrictions outlined in section 12 of the license, in addition to the general terms of the license. Appendix 2 of the license defines the terms of use for SNOMEDCT_US (SRL=9).
**RxNorm includes SNOMEDCT_US concepts in the three trees listed below where at least one term in each of these concepts contains a string with ‘(clinical drug)’, ‘(medicinal product)’, ‘(medicinal product form)’, '(product)' or '(substance)'. Also, SNOMEDCT_US concepts containing the word gluten, skin, or gene are excluded from RxNorm.
- Pharmaceutical / biologic product (ConceptID 373873005)
- Biological substance (ConceptID 115668003)
- Drug or medicament (ConceptID 410942007)
RxNorm also includes the SNOMEDCT_US relationships that exist between concepts meeting the above criteria.
See the current release notes on the RxNorm Files page for the date when each source was last updated in RxNorm, as well as term type and NDC counts. For more information about these sources, including contact information and license restriction levels, refer to the RXNSAB.RRF file.
4.0 Ambiguity in RxNorm Source Data
The disparate variety of source providers to the RxNorm dataset, along with their individual schedules for updating and modifying their datasets, has created the possibility of atom strings coming from source providers that look similar, but have different meanings. It is common for these ambiguous strings to be placed in separate concepts within RxNorm in order to maintain the separate level of meaning for each string.
In some cases, the ambiguity is a result of the inability to resolve the correct meaning for a given string from a particular source. For example, attributes of an atom string may conflict with the string of the atom. One attribute may refer to an "Oral Tablet", while another may refer to "Extended Release Tablet", while the string that names the atom might disagree with these attributes. This could result in the string in question being placed in a concept separate from similar looking string(s) whose meaning is more clearly apparent in the name.
Another case of ambiguity could involve different quantities of a particular drug. In the case of an inhaler, a source may provide a string for a particular brand of inhaler, without specifying the number of actuations in the container. Another source may provide this information for a similar drug string, and research at NLM will confirm the different sizes of containers for the particular brand, thus making the first string ambiguous in meaning.
NLM strives to review these ambiguous strings on a regular basis in both the RxNorm and UMLS data sets. In the UMLS, relationships are created between ambiguous concepts and a unique name is created for each string with multiple meanings.
RxNorm normal forms (e.g. SCD, SBD, GPCK, BPCK) are created when the meaning of the source string is clear at the appropriate level of abstraction. In this sense, SAB=RXNORM normal form atoms are never ambiguous.
5.0 Drug Delivery Devices
The RxNorm model of a prescribable drug, which specifies the ingredient, strength, and dose form, adequately represents most prescriptions for medicines. However; some important medicines are not sufficiently or appropriately characterized by those three components alone. These have been identified as medicines that are dispensed in "Packs". Examples of medicines prescribed and dispensed as Packs include Z-Pak, Medrol Dose Pack, and various oral contraceptive packages. A Pack contains one or more SCD's or SBD's along with a quantification to represent the number of SCD's or SBD's of each type that are contained in the Pack.
Packs may be branded or generic packs. A Branded Pack would contain SBD's and/or SCD's and be provided with a Market Name, while a Generic Pack would contain one or more SCD's only. The new Term Types "BPCK" and "GPCK" have been created to properly categorize these strings in the RxNorm vocabulary. These term types in RxNorm have the following syntax:
Generic Pack (GPCK): "{'quantity' (SCD1) / 'quantity' (SCD2) / 'quantity' (SCDn) } Pack"
Branded Pack (BPCK): "{'quantity' (SCD1/SBD1) / 'quantity' (SCD2/SBD2) / 'quantity' (SCDn/SBDn) } Pack [Market Name]"
Examples of BPCK's:
{12 (Ethinyl Estradiol 0.035 MG / Norethindrone 0.5 MG Oral Tablet) / 9 (Ethinyl Estradiol 0.035 MG / Norethindrone 1 MG Oral Tablet) / 7 (Inert Ingredients 1 MG Oral Tablet) } Pack [Leena 28 Day]
{6 (azithromycin 250 MG Oral Tablet) } Pack
Examples of GPCK's:
{28 (Norethindrone 0.35 MG Oral Tablet) } Pack
{11 (varenicline 0.5 MG Oral Tablet) / 42 (varenicline 1 MG Oral Tablet) } Pack
Each BPCK atom has a corresponding GPCK atom. These atom pairs will be represented with relationships in the RXNREL.RRF file in the following way:
BPCK -- tradename of -- GPCK
GPCK -- has_tradename -- BPCK
In addition, relationships are created between the Drug Delivery Device term type atoms (BPCK, GPCK), to their component SCD(s) and/or SBD(s). These relationships are represented in the RXNREL.RRF file in the following way:
BPCK -- contains -- SCD
BPCK -- contains -- SBD
GPCK -- contains -- SCD
SCD -- contained_in -- BPCK
SCD -- contained_in -- GPCK
SBD -- contained_in -- BPCK
6.0 Normalizing NDC codes in RxNorm
RxNorm currently distributes NDC data in the RXNSAT.RRF file from seven different sources - CVX, GS, MMSL, MMX, MTHSPL, NDDF, and VANDF. Each of these sources provide NDC codes in a different format. Examples of these include a 12 digit "6-4-2" format, 10 digit "5-3-2", "4-4-2" or "5-4-1" formats, 12 digits with no dashes format, and the 11 digit, no dashes HIPAA format.
The NDCs asserted for the atoms of each of these sources are found in RXNSAT.RRF as values of the attribute ATN='NDC'. Since these NDCs are in separate formats, it is difficult to determine when the NDC assignments are inconsistent across sources. A single RxNorm clinical drug concept may properly have several NDCs (each corresponding to a different package size), but a single NDC would be expected to be assigned to only one RxNorm clinical drug concept (RXCUI).
The NLM is associating normalized NDC codes to RxNorm clinical drug concepts that have an atom with one of the term types 'SCD', 'SBD', 'BPCK' and 'GPCK' (SAB=RXNORM atoms). The normalized NDCs will follow the 11 digit, no dashes HIPAA format. These normalized NDCs will be associated with those RXCUIs for which the NLM can determine the "correct" NDCs. NDCs that are labeled obsolete by their original sources are marked as SUPPRESS="O" in the RXNSAT.RRF file. Obsolete NDCs are not normalized or propagated to SAB=RXNORM atoms. Obsolete NDCs remain with their source atoms in their original format. In general, "correctness" of an NDC assignment means there is consistency among the various sources in the association of an RXCUI with a particular NDC. Sometimes the RxNorm editors may refer to additional references (e.g. information provided by manufacturers) to determine “correctness” of an NDC. These normalized NLM-asserted NDC associations will be found in RXNSAT.RRF, in addition to all the source-asserted NDC associations that already appear there. The normalized NLM-asserted NDC associations are assigned SAB='RXNORM'. You can download the algorithm used for normalizing NDC codes (RTF document).
6.1 Examples of NDC code normalizations
Source-asserted NDC attribute | Normalized NLM-asserted NDC attribute |
---|---|
000406-0522-05 | 00406052205 |
000406052201 | 00406052201 |
054868-5338-*3 | 54868533803 |
0591-0933-01 | 00591093301 |
60951-700-85 | 60951070085 |
6.2 Examples of RXNSAT.RRF entries for an RXCUI (ATN="NDC")
213684|||2368285|AUI|759|||NDC|MMSL|61646050116|N||
213684|||1171481|AUI|213684|||NDC|RXNORM|61646050116|N||
213684|||1171481|AUI|213684|||NDC|RXNORM|58716032716|N||
7.0 Propagating NDC codes in RxNorm
As noted above, a single NDC code should properly be associated with only a single RxCUI, though a single RxCUI can have multiple NDCs. Beginning with the February 2009 release, RxNorm has stopped propagating NDC codes from the branded drugs to the corresponding unbranded drugs. In this way, NDC codes are associated with RxNorm atoms that are within the same concept only. This has been implemented for the BPCK, GPCK, and SBD term types. Essentially all cascading of NDC codes has been discontinued, and NLM-assigned NDC associations will only relate a single RxCUI to a given NDC.
Through the data received from sources that contain NDC codes, RxNorm computes which NDC codes will be propagated from source atoms to RxNorm normal forms within the same concept. Within certain exception, this is the criteria for inclusion in the propagation: 1) The NDC code must carry a SUPPRESS value of "N" and 2) The NDC must be represented in one RxNorm concept only; other wise, this is considered a conflict to be resolved by RxNorm editors.
7.1 NDC data counts
In the release notes with each monthly release is a set of data counts for that release, which includes counts of SAB=RXNORM NDCs and distinct SAB=RXNORM NDCs. SAB=RXNORM NDCs are normalized to 11 digit, no dashes HIPAA format. The SAB=RXNORM and distinct SAB=RXNORM counts include all NDCs assigned to SAB=RXNORM atoms. Because NDCs are not duplicated on SAB=RXNORM atoms, the SAB=RXNORM and distinct SAB=RXNORM counts will always be the same.
8.0 UNII codes in RxNorm
U.S. Food and Drug Administration (FDA) generated unique ingredient identifiers (UNIIs) are available in RXNCONSO.RRF as the 'CODE' value for SAB=MTHSPL TTY=SU atoms. These UNII codes are pulled directly from the ingredient information included in the structured product labels (SPLs) on DailyMed .
The UNII is a non-proprietary, free, unique, unambiguous, non semantic, alphanumeric identifier based on a substance’s molecular structure and/or descriptive information. For more information on the FDA UNII codes, please refer to this FDA web page .
A portion of SAB=MTHSPL TTY=SU atoms do not have UNIIs as the 'CODE' value. Biological product names impacted by FDA's guidance on Nonproprietary Naming of Biological Products contain a biological drug substance code instead of a UNII in the 'CODE' field. Biological drug substance codes are obtained from the SPL Biologic or Drug Substance Indexing File available on DailyMed . To learn more about biological product names, refer to FDA’s Nonproprietary Naming of Biological Products .
9.0 Duplicating Source Asserted Atoms (to resolve NDC conflicts)
Atoms coming from our sources can contain multiple NDC codes for the same atom. In most cases, the NDC codes associated with the atoms are describing the same product. However, there are instances where NDC codes received from sources for a single atom carry different meanings. For example, a single source atom with a string “TachoSil Absorbable Fibrin Sealant Topical Patch” can have different NDC codes for patches with different overall strengths. The NDCs representing the products with different strengths of the drug are associated to this one atom. RxNorm is creating duplicates of such source asserted atoms to separate NDC codes and properly associate NDC codes with RxNorm forms.
When an atom is duplicated, the original source atom is considered a 'Base' atom. Since the Base atom represents multiple drugs, the Base atom often lacks an RxNorm form, illustrated in Table 1 below. However, in certain cases, a Base atom can be assigned to an SCD or SBD form with a Suppress=E value. Suppress=E forms represent unquantified, non-dispensable drugs with related quantified, dispensable drugs. Base atoms are assigned to an SCD or SBD form with a Suppress=E value if the duplicate atoms’ meanings share the same ingredient, strength, and dose form but differ only in Quantity Factor, illustrated in Table 2.
The duplicate atoms' strings are created by appending '_#N' to the Base atom string where 'N' is a number from 1 to N number of duplicates for this Base atom. The duplicate atoms will carry the same source asserted relationships and attributes as the Base atom except for the NDC code attributes. The NDC code attributes of the Base atom will only be assigned to the duplicate atoms that represent the specific meaning of the NDC code. RxNorm forms will be created to reflect the true meaning of the NDC code(s) assigned to each duplicate. An NDC code from a Base atom can only be assigned to one duplicate atom at a time, but a duplicate atom can carry more than one synonymous NDC code from the Base atom. The duplicate atom's term type will be created by prepending 'MTH_RXN_' to the Base atom's term type.
A Base atom can be identified by the existence of an attribute in RXNSAT.RRF where the ATN='AMBIGUITY_FLAG' and the ATV='Base'. Similarly, the duplicate atoms are identified with ATN='AMBIGUITY_FLAG' and ATV='Duplicate'. This attribute will carry the SAB=RXNORM. In addition, a relationship will exist between the Base atom and its duplicate atoms in RXNREL.RRF with "includes" and "included_in" relationship attributes (RELA). This relationship will carry the SAB=RXNORM.
Example 1: Base atom NOT assigned an RxNorm form
Sample records of RXNCONSO.RRF entries for a Base atom and its duplicates
1875730|ENG||||||8739698||||GS|BD|105940|TachoSil Absorbable Fibrin Sealant Topical Patch||N||
1001593|ENG||||||8742121||||GS|MTH_RXN_BD|105940|TachoSil Absorbable Fibrin Sealant Topical Patch_#1||N||
1014305|ENG||||||8742122||||GS|MTH_RXN_BD|105940|TachoSil Absorbable Fibrin Sealant Topical Patch_#2||N||
Sample records of RXNSAT.RRF entries for these atoms (ATN="AMBIGUITY_FLAG")
1875730|||8739698|AUI|105940|||AMBIGUITY_FLAG|RXNORM|Base|N||
1001593|||8742121|AUI|105940|||AMBIGUITY_FLAG|RXNORM|Duplicate|N||
1014305|||8742122|AUI|105940|||AMBIGUITY_FLAG|RXNORM|Duplicate|N||
Sample records of RXNREL.RRF entries for these atoms
|8739698|AUI|RO||8742121|AUI|included_in|108284901||RXNORM||||||
|8742121|AUI|RO||8739698|AUI|includes|108284902||RXNORM||||||
|8739698|AUI|RO||8742122|AUI|included_in|108284903||RXNORM||||||
|8742122|AUI|RO||8739698|AUI|includes|108284904||RXNORM||||||
Table 1. Summary chart of Base atom NOT assigned an RxNorm form
Data Element | Base atom | Duplicate 1 | Duplicate 2 |
---|---|---|---|
CODE | 105940 | 105940 | 105940 |
RXAUI | 8739698 | 8742121 | 8742122 |
ATV (Attribute Value) | Base | Duplicate | Duplicate |
STR (SAB=not RXNORM source atom string) | TachoSil Absorbable Fibrin Sealant Topical Patch | TachoSil Absorbable Fibrin Sealant Topical Patch_#1 | TachoSil Absorbable Fibrin Sealant Topical Patch_#2 |
TTY (Term Type) | BD | MTH_RXN_BD | MTH_RXN_BD |
NDC | 00944-8701-01 (SUPPRESS=Y) 00944-8702-02 (SUPPRESS=Y) | 00944-8702-01 (SUPPRESS=N) | 00944-8702-02 (SUPPRESS=N) |
RXCUI | 1875730 | 1001593 | 1014305 |
STR (SAB=RXNORM String) | None* | Fibrinogen 337 MG / Thrombin 123 UNT Medicated Patch [TachoSil] (SUPPRESS=N) | Fibrinogen 173 MG / Thrombin 62.2 UNT Medicated Patch [TachoSil] (SUPPRESS=N) |
*No single SAB=RXNORM name exists that represents the multiple drugs indicated by the two NDCs on the Base atom.
Example 2: Base atom assigned an SBD form with SUPPRESS=E value
Sample records of RXNCONSO.RRF entries for a Base atom and its duplicates
1360216|ENG||||||2938275||||MMSL|BD|6598|Flovent Diskus, 100 mcg inhalation powder||N||
896031|ENG||||||7725578||||MMSL|MTH_RXN_BD|6598|Flovent Diskus, 100 mcg inhalation powder_#1||N||
896023|ENG||||||7725579||||MMSL|MTH_RXN_BD|6598|Flovent Diskus, 100 mcg inhalation powder_#2||N||
Sample records of RXNSAT.RRF entries for these atoms (ATN="AMBIGUITY_FLAG")
1360216|||2938275|AUI|6598|||AMBIGUITY_FLAG|RXNORM|Base|N||
896031|||7725578|AUI|6598|||AMBIGUITY_FLAG|RXNORM|Duplicate|N||
896023|||7725579|AUI|6598|||AMBIGUITY_FLAG|RXNORM|Duplicate|N||
Sample records of RXNREL.RRF entries for these atoms
|2938275|AUI|RO||7725578|AUI|included_in|93439907||RXNORM||||||
|7725578|AUI|RO||2938275|AUI|includes|93439908||RXNORM||||||
|2938275|AUI|RO||7725579|AUI|included_in|93439913||RXNORM||||||
|7725579|AUI|RO||2938275|AUI|includes|93439914||RXNORM||||||
|5034888|AUI|SY||2938275|AUI||||RXNORM||||||*
*This relationship indicates the Base atom (AUI 2938275) is synonymous with or associated with atom AUI 5034888 which is an SAB=RXNORM name with SUPPRESS=E value in this case.
Table 2. Summary chart of Base atom assigned an SBD with Suppress=E value
Data Element | Base atom | Duplicate 1 | Duplicate 2 |
---|---|---|---|
CODE | 6598 | 6598 | 6598 |
RXAUI | 2938275 | 7725578 | 7725579 |
ATV (Attribute Value) | Base | Duplicate | Duplicate |
STR (SAB=not RXNORM source atom string) | Flovent Diskus, 100 mcg inhalation powder | Flovent Diskus, 100 mcg inhalation powder_#1 | Flovent Diskus, 100 mcg inhalation powder_#2 |
TTY (Term Type) | BD | MTH_RXN_BD | MTH_RXN_BD |
NDC | 00173060202 (SUPPRESS=Y) 00173060200 (SUPPRESS=Y) 54569626600 (SUPPRESS=O) | 00173060200 (SUPPRESS=N) | 00173060202 (SUPPRESS=N) |
RXCUI | 1360216 | 896031 | 896023 |
STR (SAB=RXNORM String) | Fluticasone propionate 0.1 MG/ACTUAT Dry Powder Inhaler [Flovent] (SUPPRESS=E form AUI 2938275)* | 28 ACTUAT Fluticasone propionate 0.1 MG/ACTUAT Dry Powder Inhaler [Flovent] (SUPPRESS=N) | 60 ACTUAT Fluticasone propionate 0.1 MG/ACTUAT Dry Powder Inhaler [Flovent] (SUPPRESS=N) |
*A SAB=RXNORM name exists for this unquantified form of the drug and is assigned to the Base atom. Suppress=E forms are not dispensable products.
10.0 Drug Dose Forms and the Modified Format for SCD and SBD Normal Forms
To accurately represent factors of time, measures or strength for certain dose forms within RxNorm, an additional format for SCD and SBD forms has been utilized along with a more succinct set of dose forms for certain categories of forms. The factor of time, measure or strength can now be represented by a Quantity Factor appended to the beginning of the SCD or SBD name. This quantity factor consists of a number followed by a unit measure. The number might represent a strength, a unit of time, or a quantity of dosages depending upon the dosage form in use at the time. This quantity factor is stored as an attribute to the RxNorm SAB atom as the value of the ATN='RXN_QUANTITY' in RXNSAT.RRF. Some dose forms have been retired and replaced by more generic dose form names, allowing for greater flexibility in representing drug names. Other dose forms have been added.
The following dose forms have been replaced by the more general dose form shown to the right of the name. The Quantity number is variable according to the clinical drug being represented.
Old Dose Form | New Dose Form | Quantity number | Quantity Unit | Quantity Factor Required |
---|---|---|---|---|
12 hour Extended Release Capsule | Extended Release Capsule | 12 | HR | No |
12 hour Extended Release Tablet | Extended Release Tablet | 12 | HR | No |
24 hour Extended Release Capsule | Extended Release Capsule | 24 | HR | No |
24 hour Extended Release Tablet | Extended Release Tablet | 24 | HR | No |
16 Hour Transdermal Patch | Transdermal Patch | 16 | HR | No |
24 Hour Transdermal Patch | Transdermal Patch | 24 | HR | No |
72 Hour Transdermal Patch | Transdermal Patch | 72 | HR | No |
Biweekly Transdermal Patch | Transdermal Patch | 84 | HR | No |
Weekly Transdermal Patch | Transdermal Patch | 168 | HR | No |
Example RxNorm forms before the data transformation:
Bupropion 300 MG 24 hour Extended Release Tablet [Wellbutrin]
Clonidine 0.00833 MG/HR Weekly Transdermal Patch
And after the data transformation:
24 HR Bupropion 300 MG Extended Release Tablet [Wellbutrin]
168 HR Clonidine 0.00833 MG/HR Transdermal Patch
Example forms are shown below:
3 ML Insulin, Aspart, Human 100 UNT/ML Prefilled Syringe
2 ML hyaluronate 10 MG/ML Prefilled Syringe [Hyalgan]
Sample records of RXNSAT.RRF entries for an RXCUI (ATN="RXN_QUANTITY")
104420|||2701594|AUI|104420|||RXN_QUANTITY|RXNORM|24 HR|N||
104873|||2701596|AUI|104873|||RXN_QUANTITY|RXNORM|72 HR|N||
10.1 Syrup and Elixir Dose Forms
In an effort to reduce the discrepancies related to NDC codes on RxNorm forms, beginning with the March 2008 release, RxNorm has chosen to use the Oral Solution dose form in lieu of the Syrup and Elixir dose forms. Existing RxNorm normal forms (SCD, SBD, SCDF, SBDF) using Syrup and Elixir were transformed into RxNorm normal forms using the Oral Solution dose form. In some cases, this process resulted in new RxNorm forms being created, in others, an RxNorm form already existed and was reused. The RxNorm normal forms that contained Syrup and Elixir dose forms have been archived.
10.2 Extended Release Products
Specified (with quantity factor) and unspecified (without quantity factor) versions of extended release products are connected by the "has_quantified_form" and "quantified_form_of" reciprocal relationship attributes (RELA) in the RXNREL.RRF file. Specified forms are connected to a single unspecified form, while an unspecified form may be connected to multiple specified forms (8 HR, 12 HR, etc.). These relationships exist from SCD to SCD and from SBD to SBD only.
Examples:
RXCUI (1) | TTY (1) | STR (1) | RELA | RXCUI (2) | TTY (2) | STR (2) |
---|---|---|---|---|---|---|
1099759 | SCD | 24 HR Valproic Acid 250 MG Extended Release Capsule | has_quantified_form | 1099760 | SCD | Valproic Acid 250 MG Extended Release Capsule |
1014577 | SBD | 12 HR cetirizine hydrochloride 5 MG / Pseudoephedrine Hydrochloride 120 MG Extended Release Tablet [Cetiri-D] | has_quantified_form | 1014578 | SBD | cetirizine hydrochloride 5 MG / Pseudoephedrine Hydrochloride 120 MG Extended Release Tablet [Cetiri-D] |
849487 | SCD | Naproxen sodium 825 MG Extended Release Tablet | quantified_form_of | 849484 | SCD | 24 HR Naproxen sodium 825 MG Extended Release Tablet |
1098612 | SBD | lamotrigine 300 MG Extended Release Enteric Coated Tablet [Lamictal] | quantified_form_of | 1098610 | SBD | 24 HR lamotrigine 300 MG Extended Release Enteric Coated Tablet [Lamictal] |
10.3 Qualitative Distinctions
The RxNorm model revolves around the active ingredient, strength, and dose form (i.e., TTY=SCD) for drug products. There are some cases, as identified by those using RxNorm in eprescribing systems and drug formularies, where the RxNorm model groups drugs that, in practice, need to have separate RXCUIs. To allow flexibility in the RxNorm model to handle such cases, RxNorm includes a Qualitative Distinction (QD) modifier that can be applied as a prefix to SCD and SBD normalized names. Drugs that include the QD have a different RXCUI than the same drugs without the QD, and information about these drugs, including drug descriptions and NDCs, are split into the appropriate RXCUI.
For each SCD or SBD with a QD, there is an associated attribute in RXNSAT.RRF with the attribute name (ATN) of 'RXN_QUALITATIVE_DISTINCTION'.
Normalize Name Examples:
RXCUI | Term Type (TTY) | String |
---|---|---|
848951 | SBD | Sugar-Free Cholestyramine Resin 4000 MG Powder for Oral Suspension [Prevalite] |
1801283 | SCD | Emollient Fluocinonide 0.5 MG/ML Topical Cream |
1801298 | SCD | Microencapsulated Potassium Chloride 10 MEQ Extended Release Oral Tablet |
993954 | SBD | Smoking Cessation 12 HR Bupropion Hydrochloride 150 MG Extended Release Oral Tablet [Zyban] |
Attribute Examples:
Attribute Name (ATN) | Attribute Value (ATV) |
---|---|
RXN_QUALITATIVE_DISTINCTION | Emollient |
RXN_QUALITATIVE_DISTINCTION | Microencapsulated |
RXN_QUALITATIVE_DISTINCTION | Smoking Cessation |
RXN_QUALITATIVE_DISTINCTION | Sugar-Free |
11.0 Release Types and Explanation
RxNorm is released on the first Monday of each month (or the next day of Tuesday if the first Monday falls on a Federal holiday). The monthly release is a full release of all of the RxNorm data, including all data sources and RxNorm forms (SAB=RXNORM atoms).
Weekly updates to RxNorm are released each Wednesday beginning with the Wednesday following the monthly RxNorm release. If Wednesday is a holiday, the weekly file will use the next day's date (i.e. Thursday). There are 52 RxNorm weekly releases per year.
The weekly updates contain new data from the FDA Structured Product Labels (MTHSPL) and the RxNorm forms (SAB=RXNORM atoms) created for the new MTHSPL data. The weekly updates contain new data only and are designed to be used in conjunction with the last monthly release of RxNorm in order to create the most up-to-date picture of the RxNorm dataset.
Each weekly release published within one month's time can be systematically applied to the monthly dataset (or monthly plus weekly). In this way, only one database needs to be maintained, with each weekly update in a month appended to the existing database which is created new with each monthly release.
Both the monthly release and weekly updates contain database control files and SQL commands for use in the automation of the loading process of these files into a RDBMS. Scripts and controls are provided for the loading the RxNorm files into an Oracle database or a MySQL database.
The most complete, accurate and up-to-date drug information can be obtained from the use of these RxNorm release files. Visit the RxNorm Files page to download the latest RxNorm release and read the current release notes, which list when each source was last updated and include term type and NDC data counts.
11.1 Character Encoding
The character set of RxNorm release files is Unicode UTF-8.
11.2 RxNorm Release File Format
RxNorm uses the Rich Release Format (RRF), introduced in 2004. All Rich Release Format file names have an extension (.RRF). The RxNorm Rich Release Format is described in this documentation (usually abbreviated as RXNRRF). Refer to the UMLS Reference Manual for a complete description of the RRF.
11.3 RxNorm Conventions
RxNorm follows all previously established standards and practices of the latest version of the UMLS Metathesaurus. Where RxNorm may differ slightly from these practices is documented here.
11.4 Uses of Concept and Atom Identifiers
In RxNorm, each RXCUI (concept) is linked to at least one RXAUI (atom), but can be linked to many of these. Each RXAUI (atom) is linked to a single RXCUI (concept).
11.5 Concepts and Concept Identifiers
A concept is a meaning. A meaning can have different names. The goal of RxNorm vocabulary construction is to understand the intended meaning of each drug name in each source vocabulary and to link all the names from all of the source vocabularies that mean the same thing (the synonyms) to a single RxNorm normal form. Each concept or meaning in RxNorm has a unique concept unique identifier (RXCUI).
An RXCUI will be removed from the primary RxNorm file (RXNCONSO.RRF) when it is discovered that two RXCUIs name the same concept – in other words, when undiscovered synonymy comes to light. In these cases, one of the two RXCUIs will be retained, all relevant information in RxNorm will be linked to it, and the other RXCUI will be retired. Additionally, in rare cases, RXCUIs with RxNorm normalized names in the RXNORM source vocabulary (e.g. SAB=RXNORM) can be remapped, split, or archived to disambiguate and clarify concept meanings.
Out of scope drugs (e.g. non-therapeutic radiopharmaceuticals, bulk powders, contrast media, food, dietary supplements, and medical devices) do not receive RxNorm normalized names. Therefore, they are excluded from the SAB=RXNORM source vocabulary. RXCUIs for out of scope drugs are transient and can change at any time.
Retired RXCUIs are never re-used or deleted. Each release of RxNorm includes files that detail RXCUI changes from the previous edition. One RxNorm file (RXNCUI.RRF) tracks RXCUI changes from March, 2009 to the present for dispensable drugs (e.g. term type = SCD, SBD, GPCK, BPCK in SAB=RXNORM), allowing you to check the fate of an RXCUI that is no longer present in RxNorm.
11.6 RxNorm Current Prescribable Content
The RxNorm Current Prescribable Content is a subset of currently prescribable drugs found in RxNorm. We intend it to be an approximation of the prescription drugs currently marketed in the US. The subset also includes some frequently-prescribed over-the-counter drugs. The subset includes only the active RxNorm normalized names, codes (RxCUIs), attributes, and relationships. In addition to the RxNorm normalized names, it also includes data from the MTHSPL and MTHCMSFRF sources. We also removed suppressed and obsolete data.
You can find more information at the RxNorm Current Prescribable Content page and access the data files from RxNorm Files page . We make the Current Prescibable Content available as a separate download that does not require a license. Alternatively, the regular RxNorm release includes the Current Prescibable Content files as well.
12.0 Data Files - RxNorm Rich Release Format (RXNRRF)
All file names begin with the letters RXN (RxNorm) and are followed by letters that denote the file contents (e.g., RXNREL=relationships, RXNSAB=source abbreviations), and then a file extension .RRF.
The data in each RxNorm entry may be represented in different "relations" or files. These files correspond to the four logical groups of data elements described in Sections 2.3 - 2.6 of the UMLS Reference Manual . The exceptions to this rule are the RxNorm history files: RXNCUI.RRF, RXNATOMARCHIVE.RRF, and RXNCUICHANGES.RRF.
The RXNCUI.RRF file is being provided as of April, 2009. This file is created by RxNorm for use in tracking the retired RxNorm Concept Unique Identifiers (RXCUIs) in SAB=RXNORM with term type (TTY)= SCD, SBD, GPCK, BPCK. Tracking of this information began in March, 2009 and data will be cumulative from this date.
The RXNATOMARCHIVE.RRF file is created by RxNorm for use in tracking the archival of names (atoms) no longer used by the RxNorm system. Only atoms from the source RxNorm (SAB=RXNORM) will be in this file. Data in RXNATOMARCHIVE is cumulative from March 2005.
The RXNCUICHANGES.RRF file tracks changes to the RxNorm Concept_id (RXCUI) for all atoms in the RxNorm system. In other words, source asserted atoms (SAB=not RXNORM) and RxNorm normalized forms (SAB=RXNORM atoms) are included in the RXNCUICHANGES file. For each release, this tracking is provided for data changed since the last release of RxNorm. The data file is not cumulative.
RxNorm provides data in the following types of files:
Concepts, Concept Names, and their sources (2.2) = RXNCONSO.RRF
Attributes (2.3) = RXNSAT.RRF , RXNSTY.RRF
Relationships (2.4) = RXNREL.RRF
Data about RxNorm (2.5) = RXNDOC.RRF , RXNSAB.RRF , RXNCUI.RRF
Archive Data = RXNATOMARCHIVE.RRF
Concept Changes Tracking Data = RXNCUICHANGES.RRF
12.1 Columns and Rows
Each file or named table of data values has by definition a fixed number of columns; the number of rows depends on the content of a particular version of the RxNorm. The RxNorm release files follow the format of the Metathesaurus releases files with a few exceptions which are noted below.
12.2 Descriptions of Each File
The descriptions of the files appear in the following order:
a) Key data about RxNorm: Files; Columns or data elements; Documentation that explains the meaning of abbreviations that appear as values in RxNorm data elements and attributes,
b) Concept names and their vocabulary sources
c) Attributes
d) Relationships
e) Other data about RxNorm
Each file description lists the columns or data elements that appear in the file and includes sample rows from the file.
Certain sample rows from a file include the RxNorm Versioned Source Abbreviation (VSAB) name which indicates UMLS Metathesaurus information, date, and release type. The VSAB date format is YYMMDD, where YY=year, MM=numeric month, and DD=day of month. In the RxNorm VSAB name, a letter ‘F’ or ‘W’ will be present after the date values. The letter 'F' indicates a full monthly release, while ‘W’ indicates a weekly release.
For example, in the VSAB name RXNORM_16AB_161107F, the 16AB indicates the RXNORM data is consistent with the 16AB release of the UMLS Metathesaurus, and 161107F means this is the November 7, 2016 full monthly release.
12.3 Documentation for Abbreviated Values (File = RXNDOC.RRF)
This file follows the format of the Metathesaurus MRDOC.RRF file. At this time, this file contains all of the data contained in the UMLS MRDOC.RRF file. In the future, the contents of this file may be tailored to the RxNorm subset of data only. There is exactly one row in this table for each allowed value of selected data elements or attributes that have a finite number of abbreviations as allowed values. Examples of such data elements include TTY, ATN, TS, STT, REL, RELA.
Column Number | Column | Description |
---|---|---|
1 | KEY | Data element or attribute |
2 | VALUE | Abbreviation that is one of its values |
3 | TYPE | Type of information in EXPL column |
4 | EXPL | Explanation of VALUE |
Sample Records
ATN|DDF|expanded_form|Drug Doseform|
ATN|DHJC|expanded_form|HCPCS J-code|
12.4 Concept Names and Sources (File = RXNCONSO.RRF)
This file follows the general format of the MRCONSO.RRF file of the Metathesaurus. Some of the Metathesaurus fields are not provided by RxNorm and are marked as "(no value provided)". There is exactly one row in this file for each atom (each occurrence of each unique string or concept name within each source vocabulary) in RxNorm, i.e., there is exactly one row for each unique RXAUI in RxNorm. Every string or concept name in RxNorm appears in this file, connected to its language, source vocabularies, and its concept identifier (RXCUI).
Column Number | Column | Description |
---|---|---|
1 | RXCUI | RxNorm Unique identifier for concept (concept ID) |
2 | LAT | Language of Term |
3 | TS | Term status (no value provided) |
4 | LUI | Unique identifier for term (no value provided) |
5 | STT | String type (no value provided) |
6 | SUI | Unique identifier for string (no value provided) |
7 | ISPREF | Atom status - preferred (Y) or not (N) for this string within this concept (no value provided) |
8 | RXAUI | Unique identifier for atom (RxNorm Atom ID) |
9 | SAUI | Source asserted atom identifier [optional] |
10 | SCUI | Source asserted concept identifier [optional] |
11 | SDUI | Source asserted descriptor identifier [optional] |
12 | SAB | Source abbreviation |
13 | TTY | Term type in source |
14 | CODE | "Most useful" source asserted identifier (if the source vocabulary has more than one identifier), or a RxNorm-generated source entry identifier (if the source vocabulary has none.) |
15 | STR | String |
16 | SRL | Source Restriction Level (no value provided) |
17 | SUPPRESS | Suppressible flag. Values = N, O, Y, or E. N - not suppressible. O - Specific individual names (atoms) set as Obsolete because the name is no longer provided by the original source. Y - Suppressed by RxNorm editor. E - unquantified, non-prescribable drug with related quantified, prescribable drugs. NLM strongly recommends that users not alter editor-assigned suppressibility. |
18 | CVF | Content view flag. RxNorm includes one value, '4096', to denote inclusion in the Current Prescribable Content subset. All rows with CVF='4096' can be found in the subset. |
Sample Records
91348|ENG||||||707001|707001|91348||RXNORM|SCD|RX10091348|Hydrogen Peroxide 300 MG/ML Topical Solution||||
83|ENG||||||1960||||SNOMEDCT|PT|75368007|4-Hydroxyphenylpyruvate dioxygenase||||
83|ENG||||||1960||||SNOMEDCT|PT|75368007|4-Hydroxyphenylpyruvate dioxygenase||||
12.5 Simple Concept and Atom Attributes (File = RXNSAT.RRF)
This file follows the general format of the MRSAT.RRF file of the Metathesaurus. Some of the Metathesaurus fields are not provided by RxNorm and are marked as "(no value provided)". There is exactly one row in this table for each concept, atom, or relationship attribute that does not have a sub-element structure. Not all RxNorm concepts or RxNorm relationships have entries in this file. This file includes all source vocabulary attributes that do not fit into other categories.
Column Number | Column | Description |
---|---|---|
1 | RXCUI | Unique identifier for concept (concept id) |
2 | LUI | Unique identifier for term (no value provided) |
3 | SUI | Unique identifier for string (no value provided) |
4 | RXAUI | RxNorm atom identifier (RXAUI) or RxNorm relationship identifier (RUI). |
5 | STYPE | The name of the column in RXNCONSO.RRF or RXNREL.RRF that contains the identifier to which the attribute is attached, e.g., CUI, AUI. |
6 | CODE | "Most useful" source asserted identifier (if the source vocabulary has more than one identifier), or a RxNorm-generated source entry identifier (if the source vocabulary has none.) |
7 | ATUI | Unique identifier for attribute |
8 | SATUI | Source asserted attribute identifier (optional - present if it exists) |
9 | ATN | Attribute name (e.g. NDC). Possible values appear in RXNDOC.RRF and are described on the UMLS Attribute Names page |
10 | SAB | Abbreviation of the source of the attribute. Possible values appear in RXNSAB.RRF and are listed on the UMLS Source Vocabularies page |
11 | ATV | Attribute value described under specific attribute name on the UMLS Attribute Names page (e.g. 000023082503 where ATN = 'NDC'). A few attribute values exceed 1,000 characters. Many of the abbreviations used in attribute values are explained in RXNDOC.RRF and included UMLS Abbreviations Used in Data Elements page |
12 | SUPPRESS | Suppressible flag. Values = O, Y, or N. Reflects the suppressible status of the attribute. N - Attribute is not suppressed. O - Attribute is suppressed at source level. Y - Attribute is suppressed by RxNorm editors. |
13 | CVF | Content view flag. RxNorm includes one value, '4096', to denote inclusion in the Current Prescribable Content subset. All rows with CVF='4096' can be found in the subset. |
Sample Records
178|||4996|AUI|MTHU000146|AT32525185||TYPE|MMSL|bulk compounding chemicals|N||
38|||829|AUI|38|||RXN_BN_CARDINALITY|RXNORM|single|N||
12.6 Semantic Types (File = RXNSTY.RRF)
This file follows the general format of the MRSTY.RRF file of the Metathesaurus. There is exactly one row in this file for each Semantic Type assigned to each concept. All RxNorm concepts have at least one entry in this file. Many have more than one entry. The TUI, STN, and STY are all direct links to the UMLS Semantic Network.
Column Number | Column | Description |
---|---|---|
1 | RXCUI | Unique identifier of concept (concept id) |
2 | TUI | Unique identifier of Semantic Type |
3 | STN | Semantic Type tree number |
4 | STY | Semantic Type. The valid values are defined in the Semantic Network. |
5 | ATUI | Unique identifier for attribute |
6 | CVF | Content view flag (no value provided) |
Sample Records
44|T109|A1.4.1.2.1|Organic Chemical|||
7624|T122|A1.4.1.1.2|Biomedical or Dental Material|||
12.7 Related Concepts (File = RXNREL.RRF)
This file follows the general format of the MRREL.RRF file of the Metathesaurus. Some of the Metathesaurus fields are not provided by RxNorm and are marked as "(no value provided)". There is one row in this table for each relationship between concepts or atoms known to RxNorm. In addition, explicit SY RELs are provided which give the UMLS Metathesaurus CUI and AUI as the RXCUI2 and RXAUI2 fields.
Note that for asymmetrical relationships there is one row for each direction of the relationship. Note also the direction of REL - the relationship which the SECOND concept or atom (with Concept Unique Identifier RXCUI2 and Atom Unique Identifier RXAUI2) HAS TO the FIRST concept or atom (with Concept Unique Identifier RXCUI1 and Atom Unique Identifier RXAUI1).
Column Number | Column | Description |
---|---|---|
1 | RXCUI1 | Unique identifier of first concept |
2 | RXAUI1 | Unique identifier for first atom |
3 | STYPE1 | The name of the column in RXNCONSO.RRF that contains the identifier used for the first concept or first atom in source of the relationship (e.g., 'AUI' or 'CUI'). |
4 | REL | Relationship of second concept or atom to first concept or atom |
5 | RXCUI2 | Unique identifier of second concept |
6 | RXAUI2 | Unique identifier for second atom |
7 | STYPE2 | The name of the column in RXNCONSO.RRF that contains the identifier used for the second concept or second atom in the source of the relationship (e.g., 'AUI' or 'CUI'). |
8 | RELA | Additional (more specific) relationship label (optional) |
9 | RUI | Unique identifier for relationship |
10 | SRUI | Source asserted relationship identifier, if present (no value provided) |
11 | SAB | Abbreviation of the source of relationship |
12 | SL | Source of relationship labels (no value provided) |
13 | RG☨ | Machine generated and unverified indicator (optional) ☨RG values will occupy column 14 using the database load scripts provided below. |
14 | DIR☦ | Source asserted directionality flag. (no value provided) Y indicates that this is the direction of the relationship in its source; N indicates that it is not; a blank indicates that it is not important or has not yet been determined. ☦DIR values will occupy column 13 using the database load scripts provided below. |
15 | SUPPRESS | Suppressible flag. Values = Y, E, or N. Reflects the suppressible status of the relationship; not yet in use. See also SUPPRESS in MRCONSO.RRF and MRDEF.RRF and MRREL.RRF in the UMLS Reference Manual . |
16 | CVF | Content view flag. RxNorm includes one value, '4096', to denote inclusion in the Current Prescribable Content subset. All rows with CVF='4096' can be found in the subset. |
Sample Records
334291||CUI|RO|259711||CUI|consists_of|4194504||RXNORM||||N||
|2074692|AUI|SY||2849222|AUI|print_name_of|4622221||VANDF||||||
12.8 Source Information (File=RXNSAB.RRF)
This file follows the general format of the MRSAB.RRF file of the Metathesaurus. Please refer to the UMLS Reference Manual for more specific information regarding this file.
There is one row in this file for every source in RxNorm that is represented in this RxNorm release.
The structure of RXNSAB.RRF is as follows:
Column Number | Column | Full Name | Description |
---|---|---|---|
1 | VCUI | CUI | CUI of the versioned SRC concept for a source |
2 | RCUI | Root CUI | CUI of the root SRC concept for a source |
3 | VSAB | Versioned Source Abbreviation | The versioned source abbreviation for a source, e.g., NDDF_2004_11_03 NOTE: For the RxNorm terminology (e.g. SAB=RXNORM), the UMLS Metathesaurus version data will be frozen with the year 2020 starting with the RxNorm November 2020 release. |
4 | RSAB | Root Source Abbreviation | The root source abbreviation, for a source e.g. NDDF |
5 | SON | Official Name | The official name for a source |
6 | SF | Source Family | The Source Family for a source |
7 | SVER | Version | The source version, e.g., 2001 NOTE: For the RxNorm terminology (e.g. SAB=RXNORM), the UMLS Metathesaurus version data will be frozen with the year 2020 starting with the RxNorm November 2020 release. |
8 | VSTART | Start Date | The date a source became active, e.g., 2001_04_03 |
9 | VEND | End Date | The date a source ceased to be active, e.g., 2001_05_10 |
10 | IMETA | Meta Insert Version | The version of the Metathesaurus a source first appeared, e.g., 2001AB NOTE: For the RxNorm terminology (e.g. SAB=RXNORM), the UMLS Metathesaurus version data will be frozen with the year 2020 starting with the RxNorm November 2020 release. |
11 | RMETA | Meta Remove Version | The version of the Metathesaurus a source was removed, e.g., 2001AC |
12 | SLC | Source License Contact | The source license contact information. A semi-colon separated list containing the following fields: Name; Title; Organization; Address 1; Address 2; City; State or Province; Country; Zip or Postal Code; Telephone; Contact Fax; Email; URL |
13 | SCC | Source Content Contact | The source content contact information. A semi-colon separated list containing the following fields: Name; Title; Organization; Address 1; Address 2; City; State or Province; Country; Zip or Postal Code; Telephone; Contact Fax; Email; URL |
14 | SRL | Source Restriction Level | 0,1,2,3,4 - explained in the License Agreement. |
15 | TFR | Term Frequency | The number of terms for this source in RXNCONSO.RRF, e.g., 12343 (not implemented yet) |
16 | CFR | CUI Frequency | The number of CUIs associated with this source, e.g., 10234 (not implemented yet) |
17 | CXTY | Context Type | The type of relationship label ( Section 2.4.2 of UMLS Reference Manual ) |
18 | TTYL | Term Type List | Term type list from source, e.g., MH, CD, PT, IN ( UMLS Source and Term Types ) |
19 | ATNL | Attribute Name List | The attribute name list, e.g., NDC, NDA, ANDA, LABELER ( UMLS Attribute Names ) |
20 | LAT | Language | The language of the terms in the source |
21 | CENC | Character Encoding | Character set as specified by the IANA official names for character assignments http://www.iana.org/assignments/character-sets |
22 | CURVER | Current Version | A Y or N flag indicating whether or not this row corresponds to the current version of the named source |
23 | SABIN | Source in Subset | A Y or N flag indicating whether or not this row is represented in the current MetamorphoSys subset. Initially always Y where CURVER is Y, but later is recomputed by MetamorphoSys. |
24 | SSN | Source short name | The short name of a source as used by the NLM Knowledge Source Server. |
25 | SCIT | Source citation | Citation information for a source. A semi-colon separated list containing the following fields: Author(s); Author(s) address; Author(s) organization; Editor(s); Title; Content Designator; Medium Designator; Edition; Place of Publication; Publisher; Date of Publication/copyright; Date of revision; Location; Extent; Series; Availability Statement (URL); Language; Notes |
Sample Record
C5195649|C1140284|RXNORM_19AB_200106F|RXNORM|RxNorm Vocabulary|RXNORM|19AB_200106F|||2019AB||RxNorm Customer Service;;U.S. National Library of Medicine;8600 Rockville Pike;;Bethesda;MD;United States;20894;(888) FIND-NLM;;rxnorminfo@nlm.nih.gov;https://www.nlm.nih.gov/research/umls/rxnorm/|RxNorm Customer Service;;U.S. National Library of Medicine;8600 Rockville Pike;;Bethesda;MD;United States;20894;(888) FIND-NLM;;rxnorminfo@nlm.nih.gov;https://www.nlm.nih.gov/research/umls/rxnorm/|0||||IN,SBDC,SBDF,SCD,BPCK,SBD,SCDG,SBDG,MIN,BN,GPCK,PIN,ET,SCDF,SY,DFG,SCDC,TMSY,DF,PSN|NDC,RXN_IN_EXPRESSED_FLAG,ORIG_CODE,RXN_BOSS_FROM,RXN_BOSS_STRENGTH_DENOM_UNIT,RXTERM_FORM,RXN_STRENGTH,RXN_BOSS_STRENGTH_NUM_UNIT,RXN_QUALITATIVE_DISTINCTION,RXN_VET_DRUG,RXN_AVAILABLE_STRENGTH,RXN_BOSS_STRENGTH_DENOM_VALUE,RXN_HUMAN_DRUG,RXN_QUANTITY,RXN_OBSOLETED,RXN_BOSS_AI,AMBIGUITY_FLAG,RXN_ACTIVATED,RXN_BOSS_STRENGTH_NUM_VALUE,RXN_BN_CARDINALITY,RXN_BOSS_AM,ORIG_SOURCE|ENG|UTF-8|Y|Y|RxNorm work done by the National Library of Medicine|;;;;RxNorm;;;META2019AB Full Update 2020_01_06;Bethesda, MD;National Library of Medicine;;;;;;;;|
12.9 Retired RXCUI Data (File = RXNCUI.RRF)
There are one or more rows in this file for each RxNorm Concept Unique Identifier (RXCUI) that was moved directly to a different RXCUI. The file includes mappings to RXCUIs as synonymous or to one or more related RXCUI where possible. Some RXCUIs may be mapped to more than one other RXCUI as represented by multiple rows for a retired RXCUI in the file.
The RXNCUI file contains SAB=RXNORM concepts with the following term types (TTY) only: SCD, SBD, GPCK, and BPCK. RXNCUI data is cumulative from March 2009 and includes forms archived in the March 2, 2009 release.
RXCUIs may be retired when: (1) two concepts are found to be synonyms and so are merged, retiring one previously released RXCUI; (2) the concept is replaced by a new concept; or (3) the concept was created as the result of an acknowledged error in a source vocabulary. In the case of (3), the RXCUI will be shown as synonymous to itself. In other words, the RXCUI was errant and there is no active RXCUI that now represents this error.
The structure of RXNCUI.RRF is as follows:
Column Number | Column | Description |
---|---|---|
1 | CUI1 | Unique identifier of retired concept |
2 | VER_START | Version Source Abbreviation of the first RxNorm release CUI1 appeared in NOTE: For the RxNorm terminology (e.g. SAB=RXNORM), the UMLS Metathesaurus version data will be frozen with the year 2020 starting with the RxNorm November 2020 release. |
3 | VER_END | Version Source Abbreviation of the last RxNorm release CUI1 appeared in NOTE: For the RxNorm terminology (e.g. SAB=RXNORM), the UMLS Metathesaurus version data will be frozen with the year 2020 starting with the RxNorm November 2020 release. |
4 | Cardinality | The number of RXCUIs that CUI1 was moved or split to. |
5 | CUI2 | Unique identifier of synonymous concept for CUI1 |
Sample Records
106107|RXNORM_04AC_050210F|RXNORM_08AB_090302F|1|834308|
730597|RXNORM_07AC_071102F|RXNORM_08AB_090302F|1|731567|
202242|RXNORM_05AA_050617F|RXNORM_08AB_090302F|1|208400|
12.10 Archive Data (File = RXNATOMARCHIVE.RRF)
This file contains data about RxNorm normalized names (atoms) that are no longer a part of the RxNorm database. The RXNATOMARCHIVE file contains all SAB=RXNORM term types. For a full list of term types in SAB=RXNORM, go to Appendix 5 - RxNorm Term Types (TTY) . RXNATOMARCHIVE data is cumulative from 2005. This file is not similar to any Metathesaurus RRF files. It is newly created by RxNorm.
The structure of RXNATOMARCHIVE.RRF is as follows:
Column Number | Column | Description |
---|---|---|
1 | RXAUI | RxNorm Unique identifier for atom (RxNorm Atom ID) |
2 | AUI | Metathesaurus Unique identifier for atom |
3 | STR | String |
4 | ARCHIVE_TIMESTAMP | Date/Time Archived |
5 | CREATED_TIMESTAMP | Date/Time Created in this version of RxNorm |
6 | UPDATED_TIMESTAMP | Date/Time Updated in this version of RxNorm |
7 | CODE | "Most useful" source asserted identifier (if the source vocabulary has more than one identifier), or a Metathesaurus-generated source entry identifier (if the source vocabulary has none.) |
8 | IS_BRAND | Branded data flag (not used) |
9 | LAT | Language of Term |
10 | LAST_RELEASED | Date this name (atom) was last released from RxNorm |
11 | SAUI | Source asserted atom identifier [optional] |
12 | VSAB | Versioned Source Abbreviation NOTE: For the RxNorm terminology (e.g. SAB=RXNORM), the UMLS Metathesaurus version data will be frozen with the year 2020 starting with the RxNorm November 2020 release. |
13 | RXCUI | RxNorm Unique identifier for concept (concept ID) |
14 | SAB | Source abbreviation |
15 | TTY | Term type in source |
16 | MERGED_TO_RXCUI | RxNorm Unique identifier for concept (concept ID) which name (atom) was merged into |
Sample Records
1138734|A0540716|Cefotetan Disodium|3/15/2005 8:05:03 PM|3/10/2005 2:56:21 PM| 3/15/2005 8:05:02 PM|10203141||ENG||||203141|RXNORM|IN|203141
2057262|2057262|Testosterone / Testosterone Injectable Solution [Andro-Cyp 100]|3/17/2005 2:01:59 PM| 3/16/2005 12:23:16 PM|3/17/2005 2:01:58 PM|10363337||ENG||||363337|RXNORM|SBDF|363337
12.11 Concept Changes (File = RXNCUICHANGES.RRF)
This file provides information about changes to the concept_id (RXCUI) for all atoms in RxNorm from release to release. For source asserted atoms, all data fields will be populated. For RXCUI changes to RxNorm forms that have been archived, only the SAB, OLD_RXCUI, and NEW_RXCUI will be provided. Additional information about RxNorm forms (SAB=RXNORM) that have been archived can be found in the RXNATOMARCHIVE.RRF file.
Information is provided here as a convenience. The file provides data about changes since the last release of RxNorm; it is not cumulative. This file is not similar to any Metathesaurus RRF file. It is newly created by RxNorm.
Column Number | Column | Description |
---|---|---|
1 | RXAUI | RxNorm Unique identifier for concept (concept ID) |
2 | CODE | "Most useful" source asserted identifier (if the source vocabulary has more than one identifier), or a Metathesaurus-generated source entry identifier (if the source vocabulary has none.) |
3 | SAB | Source abbreviation |
4 | TTY | Term type in source |
5 | STR | String |
6 | OLD_RXCUI | Old RxNorm Unique identifier for concept (concept ID) |
7 | NEW_RXCUI | New RxNorm Unique identifier for concept (concept ID) |
Sample Records
426260|117164003|SNOMEDCT|PT|HLA-DQ2 antigen|27034|461862|
||RXNORM|||670619|702633|
Summary of RxNorm History files: RXNCUI, RXNATOMARCHIVE, RXNCUICHANGES
File Characteristic | RXNCUI | RXNATOMARCHIVE | RXNCUICHANGES |
---|---|---|---|
General purpose | To track retired RxNorm normalized names for dispensable drugs | To track archival of all RxNorm normalized names | To track RXCUI changes for any atom in the RxNorm database since the last monthly release |
Term Types (TTY) included | SCD, SBD, GPCK, BPCK from SAB=RXNORM only | All TTYs from SAB=RXNORM only | All TTYs from data sources (SAB=not RXNORM) and SAB=RXNORM Note: For SAB=RXNORM, all data fields are populated for SY and PSN. For other TTYs, only SAB, OLD_RXCUI, and NEW_RXCUI data are provided. |
Cumulative status | Cumulative from March 2009 | Cumulative from March 2005 | Not Cumulative |
RXCUI data fields | CUI1 CUI2 | RXCUI MERGED_TO_RXCUI | OLD_RXCUI NEW_RXCUI |
13.0 Database Creation Automation
We are providing scripts and control files to help in the creation and automation of your database loading with the RxNorm Release Files.
There are two sets of load scripts. The main directory of the zip archive contains a 'scripts' subdirectory. This directory contains the scripts for loading all of the full monthly release data. The 'prescribe' subdirectory contains a separate 'scripts' directory that contains the load scripts for the prescribable content subset release files.
For clarity we will refer to these two separate 'scripts' directories as the 'main' scripts directory ( Section 13.1 ) and the 'prescribe' scripts directory ( Section 13.2 ).
13.1 Main scripts subdirectory
13.1.1 Oracle database (\scripts\oracle subdirectory)
Filenames and brief descriptions follow:
Filename | Description |
---|---|
populate_oracle_rxn_db.bat | The batch control file for the load process |
rxn_index.sql | Index creation commands (optional) |
RxNormDDL.sql | Table creation (and deletion) commands |
RXNATOMARCHIVE.ctl | Control file for RXNATOMARCHIVE.RRF |
RXNCONSO.ctl | Control file for RXNCONSO.RRF |
RXNCUI.ctl | Control file for RXNCUI.RRF |
RXNCUICHANGES.ctl | Control file for RXNCUICHANGES.RRF |
RXNDOC.ctl | Control file for RXNDOC.RRF |
RXNREL.ctl | Control file for RXNREL.RRF |
RXNSAB.ctl | Control file for RXNSAB.RRF |
RXNSAT.ctl | Control file for RXNSAT.RRF |
RXNSTY.ctl | Control file for RXNSTY.RRF |
The populate_oracle_rxn_db.bat file contains 4 parameters, which should be customized for your particular environment. They are as follows:
Parameter | Description |
---|---|
ORACLE_HOME | The location of your RDBMS software binaries (in this case, Oracle) |
user | The user name to use to connect to your database schema |
password | The password to use to connect to your database schema |
tns_name | The server name (or SID) of your database |
Once these parameters are populated, you should remove the '::' (double colon) characters from the front of each line - this will make the commands active.
Use the RxNormDDL.sql file to create the tables in your database schema (the schema must already exist), then use the .bat file to load the data into your tables. Once this is complete you may run the rxn_index.sql to create indexes on the tables, if so desired.
Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
- Set innodb_large_prefix to ON
- Create index rxnsat_idx on RXNSAT (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Alter table RXNSAT add primary key (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
13.1.2 MySQL database (\scripts\mysql subdirectory)
Recommended Software Version - MySQL Server version 5.0
Filenames and brief descriptions follow:
Filename | Description |
---|---|
Table_scripts_mysql_rxn.sql | Creates the tables |
Populate_mysql_rxn.bat | Load the RxNorm files from windows into tables |
populate_mysql_rxn.sh | Load the RxNorm files from Unix/Linux to tables |
Load_scripts_mysql_rxn_win.sql | Windows loading script (called from populate script) |
Load_scripts_mysql_rxn_unix.sql | Unix/Linux loading script (called from populate script) |
Indexes_mysql_rxn.sql | Creates table indexes (optional) |
Prerequisite
The script is written to expect that there is a local MySql Server installed and configured and that you plan to load your RxNorm subset database into a database being managed by this local server. For more information on that, you are encouraged to visit http://www.mysql.com
Creating a Database
In order to load your subset into a MySQL database, you will have to either use an existing database or create a new one. To create a new database, use the following command:
CREATE DATABASE IF NOT EXISTS [database name] CHARACTER SET utf8;
Configuring and Running the Load Script
Windows
Copy the following files to the local drive, where the RRF files are saved:
- Load_scripts_mysql_rxn_win.sql
- Populate_mysql_rxn.bat
- Indexes_mysql_rxn.sql
- Table_scripts_mysql_rxn.sql
Edit the Populate_mysql_rxn.bat script and configure the five parameters at the top of the script. These are:
Parameter | Description |
---|---|
MYSQL_HOME | The path to your MySQL home directory |
user | The user name to use to connect to your database schema |
password | The password to use to connect to your database schema |
host_name | The host name of your database server |
db_name | The name of your RxNorm database schema |
MYSQL_HOME should be set to the installation directory of your MySQL server. This is likely to be something like “C:\Program Files\MySQL\MySQL Server 5.0". Remember to enclose the value in quotes if the directory name contains spaces. If your database is configured without a password you can leave the password setting blank. If your database is configured without a hostname you can leave the hostname blank or use localhost. After configuring these four parameters, this section of your script may look something like the following.
Set MYSQL_HOME= “C:\Program Files\MySQL\MySQL Server 5.0"
Set user=myuser
Set password=p4ssword
Set host_name=localhost
Set db_name =RxNorm
You are now ready to run the script. To do so, navigate to your subset directory using the Windows explorer and double-click on the “Populate_mysql_rxn.bat" file you just finished editing.
Here are some things to keep in mind when using this script:
- If your database is configured without a password, then update the script “Populate_mysql_rxn.bat“ and remove all references to the “-p%password%” parameter. Thus, a line like this:
%MYSQL_HOME%\bin\mysql –u %user% -p%password% -h%hostname% --local-infile=1 %db_name% <Table_scripts_mysql_rxn.sql >>mysql.log 2 >&1
Must be changed to:
%MYSQL_HOME%\bin\mysql –u %user% -h%hostname% --local-infile=1 %db_name% <Table_scripts_mysql_rxn.sql >>mysql.log 2 >&1
- The script will automatically create a log file called “mysql.log” in the same directory as the script. If you are planning on running the script more than once, you should consider renaming the log file before the second run, otherwise the contents of the first run will be lost.
- While the script is running, you can monitor the process from within the MYSQL command shell by using “mysql>show processlist;”
- The load may take some time. When it completes, each of the tables will be loaded.
- If you want to create indexes on the tables, then execute the following script:
Indexes_mysql_rxn.sql
At the mysql command prompt execute the command as given below.
USE <DATABASENAME>
Give the path where the Indexes_mysql_rxn.sql script is saved in the local drive.
Eg: \. C:\RXNORM\MySQL\Indexes_mysql_rxn.sql- Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
- Set innodb_large_prefix to ON
- Create index rxnsat_idx on RXNSAT (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Alter table RXNSAT add primary key (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
Linux or Solaris
Copy the following files to the local drive, where the RRF files are saved:
- Load_scripts_mysql_rxn_unix.sql
- populate_mysql_rxn.sh
- Indexes_mysql_rxn.sql
- Table_scripts_mysql_rxn.sql
Edit the "populate_mysql_rxn.sh" script and configure the four parameters at the top of the script. These are:
Parameter | Description |
---|---|
MYSQL_HOME | The path to your MySQL home directory |
user | The user name to use to connect to your database schema |
password | The password to use to connect to your database schema |
db_name | The name of your RxNorm database schema |
dbserver | The name of your database server |
MYSQL_HOME should be set to the installation directory of your local MYSQL Server. If your database is configured without a password you can leave the password setting blank. After configuring these four parameters, this section of your script may look something like this.
MYSQL_HOME= /usr
user=myuser
password=p4ssw0rd
db_name=RxNorm
dbserver=ServerName
You are now ready to run the script. To do so, navigate to your subset directory and invoke the script from the command line. It may be necessary to change the file permissions to make the script executable before it can be started. For example:
chmod 775 populate_mysql_rxn.sh
And to execute the script
populate_mysql_rxn.sh
Here are some things to keep in mind when using this script.
- If your database is configured without a password, then update the script “populate_mysql_rxn.sh“ and remove all references to the –p%password%” parameter. Thus a line like this:
$MYSQL_HOME/bin/mysql –u $user –p$password $db_name <Table_scripts_mysql_rxn.sql >>mysql.log 2>&1
Must be changed to this:
$MYSQL_HOME/bin/mysql –u$user $db_name <Table_scripts_mysql_rxn.sql >>mysql.log 2>&1
- The script will automatically create a log file called “mysql.log” in the same directory as the script.If you are planning on running the script more than once, you should consider renaming the log file before the second run, otherwise the contents of the first run will be lost.
- While the script is running, you can monitor the process from within the MYSQL command shell by using “mysql>show processlist;”
- The load may take some time, when it completes, each of the tables will be loaded.
- To create indexes execute the script “Indexes_mysql_rxn.sql”.
At the shell command prompt, type:
chmod +x Indexes_mysql_rxn.sql
mysql -umyuser –pmypass -hmyhost RxNorm < Indexes_mysql_rxn.sql- Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
- Set innodb_large_prefix to ON
- Create index rxnsat_idx on RXNSAT (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Alter table RXNSAT add primary key (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
13.2 Prescribe scripts subdirectory
13.2.1 Oracle database (\prescribe\scripts\oracle subdirectory)
Filenames and brief descriptions follow:
Filename | Description |
---|---|
populate_oracle_rxn_db.bat | The batch control file for the load process |
rxn_index.sql | Index creation commands (optional) |
RxNormDDL.sql | Table creation (and deletion) commands |
RXNCONSO.ctl | Control file for RXNCONSO.RRF |
RXNREL.ctl | Control file for RXNREL.RRF |
RXNSAT.ctl | Control file for RXNSAT.RRF |
The populate_oracle_rxn_db.bat file contains 4 parameters, which should be customized for your particular environment. They are as follows:
Parameter | Description |
---|---|
ORACLE_HOME | The location of your RDBMS software binaries (in this case, Oracle) |
user | The user name to use to connect to your database schema |
password | The password to use to connect to your database schema |
tns_name | The server name (or SID) of your database |
Once these parameters are populated, you should remove the '::' (double colon) characters from the front of each line - this will make the commands active.
Use the RxNormDDL.sql file to create the tables in your database schema (the schema must already exist), then use the .bat file to load the data into your tables. Once this is complete you may run the rxn_index.sql to create indexes on the tables, if so desired.
Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
- Set innodb_large_prefix to ON
- Create index rxnsat_idx on RXNSAT (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Alter table RXNSAT add primary key (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
13.2.2 MySQL database (\prescribe\scripts\mysql subdirectory)
Recommended Software Version - MySQL Server version 5.0
Filenames and brief descriptions follow:
Filename | Description |
---|---|
Table_scripts_mysql_rxn.sql | Creates the tables |
Populate_mysql_rxn.bat | Load the RxNorm files from windows into tables |
populate_mysql_rxn.sh | Load the RxNorm files from Unix/Linux to tables |
Load_scripts_mysql_rxn_win.sql | Windows loading script (called from populate script) |
Load_scripts_mysql_rxn_unix.sql | Unix/Linux loading script (called from populate script) |
Indexes_mysql_rxn.sql | Creates table indexes (optional) |
Prerequisite
The script is written to expect that there is a local MySql Server installed and configured and that you plan to load your RxNorm Current Prescribable Content subset database into a database being managed by this local server. For more information on that, you are encouraged to visit http://www.mysql.com
Creating a Database
In order to load your subset into a MySQL database, you will have to either use an existing database or create a new one. To create a new database, use the following command:
CREATE DATABASE IF NOT EXISTS [database name] CHARACTER SET utf8;
Configuring and Running the Load Script
Windows
Copy the following files to the local drive, where the RRF files are saved:
- Load_scripts_mysql_rxn_win.sql
- Populate_mysql_rxn.bat
- Indexes_mysql_rxn.sql
- Table_scripts_mysql_rxn.sql
Edit the Populate_mysql_rxn.bat script and configure the five parameters at the top of the script. These are:
Parameter | Description |
---|---|
MYSQL_HOME | The path to your MySQL home directory |
user | The user name to use to connect to your database schema |
password | The password to use to connect to your database schema |
host_name | The host name of your database server |
db_name | The name of your RxNorm Current Prescribable Content database schema |
MYSQL_HOME should be set to the installation directory of your MySQL server. This is likely to be something like “C:\Program Files\MySQL\MySQL Server 5.0". Remember to enclose the value in quotes if the directory name contains spaces. If your database is configured without a password you can leave the password setting blank. If your database is configured without a hostname you can leave the hostname blank or use localhost. After configuring these four parameters, this section of your script may look something like the following.
Set MYSQL_HOME= “C:\Program Files\MySQL\MySQL Server 5.0"
Set user=myuser
Set password=p4ssword
Set host_name=localhost
Set db_name =RxNormPrescribe
You are now ready to run the script. To do so, navigate to your subset directory using the Windows explorer and double-click on the “Populate_mysql_rxn.bat" file you just finished editing.
Here are some things to keep in mind when using this script:
- If your database is configured without a password, then update the script “Populate_mysql_rxn.bat“ and remove all references to the “-p%password%” parameter. Thus, a line like this:
%MYSQL_HOME%\bin\mysql –u %user% -p%password% -h%hostname% --local-infile=1 %db_name% <Table_scripts_mysql_rxn.sql >>mysql.log 2 >&1
Must be changed to:
%MYSQL_HOME%\bin\mysql –u %user% -h%hostname% --local-infile=1 %db_name% <Table_scripts_mysql_rxn.sql >>mysql.log 2 >&1
- The script will automatically create a log file called “mysql.log” in the same directory as the script. If you are planning on running the script more than once, you should consider renaming the log file before the second run, otherwise the contents of the first run will be lost.
- While the script is running, you can monitor the process from within the MYSQL command shell by using “mysql>show processlist;”
- The load may take some time. When it completes, each of the tables will be loaded.
- If you want to create indexes on the tables, then execute the following script:
Indexes_mysql_rxn.sql
At the mysql command prompt execute the command as given below.
USE <DATABASENAME>
Give the path where the Indexes_mysql_rxn.sql script is saved in the local drive.
Eg: \. C:\RXNORM\MySQL\Indexes_mysql_rxn.sql- Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
- Set innodb_large_prefix to ON
- Create index rxnsat_idx on RXNSAT (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Alter table RXNSAT add primary key (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
Linux or Solaris
Copy the following files to the local drive, where the RRF files are saved:
- Load_scripts_mysql_rxn_unix.sql
- populate_mysql_rxn.sh
- Indexes_mysql_rxn.sql
- Table_scripts_mysql_rxn.sql
Edit the "populate_mysql_rxn.sh" script and configure the four parameters at the top of the script. These are:
Parameter | Description |
---|---|
MYSQL_HOME | The path to your MySQL home directory |
user | The user name to use to connect to your database schema |
password | The password to use to connect to your database schema |
db_name | The name of your RxNorm Current Prescribable Content database schema |
dbserver | The name of your database server |
MYSQL_HOME should be set to the installation directory of your local MYSQL Server. If your database is configured without a password you can leave the password setting blank. After configuring these four parameters, this section of your script may look something like this.
MYSQL_HOME= /usr
user=myuser
password=p4ssw0rd
db_name=RxNormPrescribe
dbserver=ServerName
You are now ready to run the script. To do so, navigate to your subset directory and invoke the script from the command line. It may be necessary to change the file permissions to make the script executable before it can be started. For example:
chmod 775 populate_mysql_rxn.sh
And to execute the script
populate_mysql_rxn.sh
Here are some things to keep in mind when using this script.
- If your database is configured without a password, then update the script “populate_mysql_rxn.sh“ and remove all references to the –p%password%” parameter. Thus a line like this:
$MYSQL_HOME/bin/mysql –u $user –p$password $db_name <Table_scripts_mysql_rxn.sql >>mysql.log 2>&1
Must be changed to this:
$MYSQL_HOME/bin/mysql –u$user $db_name <Table_scripts_mysql_rxn.sql >>mysql.log 2>&1
- The script will automatically create a log file called “mysql.log” in the same directory as the script.If you are planning on running the script more than once, you should consider renaming the log file before the second run, otherwise the contents of the first run will be lost.
- While the script is running, you can monitor the process from within the MYSQL command shell by using “mysql>show processlist;”
- The load may take some time, when it completes, each of the tables will be loaded.
- To create indexes execute the script “Indexes_mysql_rxn.sql”.
At the shell command prompt, type:
chmod +x Indexes_mysql_rxn.sql
mysql -umyuser –pmypass -hmyhost RxNorm < Indexes_mysql_rxn.sql- Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
- Set innodb_large_prefix to ON
- Create index rxnsat_idx on RXNSAT (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Alter table RXNSAT add primary key (RXAUI, RXCUI, SAB, ATN(250),ATV(700))
- Specific versions of mySQL may have index limitation issues. As a workaround, implement the steps below in the order provided and limit the index and key sizes.
14.0 RxNorm in a Database System
Once you've loaded the RxNorm data files into a database system, you can query the tables to find the RxNorm drug information you need. The RxNorm RRF files are not fully normalized. By design, there is duplication of data among different files and within certain files. In particular, relationships between different RxNorm concepts appear twice (e.g., from entry A to entry B and from entry B to entry A) in RXNREL.RRF. You will need to make your own decisions about the extent to which this redundancy should be retained, reduced, or increased for your applications.
14.1 Primary Keys for Each File
The following primary keys can be used to identify each unique row within the RxNorm RRF files.
File | Primary Key |
---|---|
RXNDOC.RRF | There is no primary key. Whole record must be unique. |
RXNCONSO.RRF | RXAUI can be used as a primary key. |
RXNSAT.RRF | RXAUI, RXCUI, SAB, ATN, and ATV (RXCUI not needed) combination can be used as a composite primary key. |
RXNSTY.RRF | RXCUI, STY combination can be used as a composite primary key. |
RXNREL.RRF | Adding “RELA” to the key combination RXAUI1, RXCUI1, RXAUI2, RXCUI2, REL, and RUI can be used as a composite primary key. |
RXNSAB.RRF | RSAB can be used as a primary key. |
RXNCUI.RRF | CUI1, CUI2 can be used as a composite primary key. |
RXNATOMARCHIVE.RRF | RXAUI, RXCUI, and MERGED_TO_RXCUI combination can be used as a composite primary key. |
RXNCUICHANGES.RRF | There is no primary key. Whole record must be unique. |
You can see the all of the files and their primary keys in the RxNorm entity diagram .
14.2 Sample Database Queries
How do I find the RxCUI for a given NDC (00093075301)?
SELECT rxcui
FROM rxnsat
WHERE atv = '00093075301';
How do I find all the NDC(s) for a given RxCUI (313820)?
SELECT atv
FROM rxnsat
WHERE atn = 'NDC'
AND rxcui = '313820';
How do I find only the RxNorm normalized NDC(s) for a given RxCUI (313820)?
SELECT atv
FROM rxnsat
WHERE atn = 'NDC'
AND rxcui = '313820'
AND sab = 'RXNORM';
How do I find the RxCUI, SAB, TTY, CODE, and STR for a given NDC (50458025303)?
SELECT rxcui, sab, tty, code, str
FROM rxnconso
WHERE rxcui in (select rxcui FROM rxnsat WHERE atv = '50458025303');
How do I find the RxCUI for a drug with a given NDDF GCN_SEQ_NO (023855)?
SELECT rxcui
FROM rxnconso
WHERE code='023855'
AND sab='NDDF';
How do I find the CODE for a drug with a given RxCUI (243670)?
SELECT code
FROM rxnconso
WHERE rxcui='243670';
How do I find the current RxCUI(s) for a given retired RxCUI (102889)?
SELECT cui2
FROM rxncui
WHERE cui1='102889';
How do I get the SAB=RXNORM SBD drug name (STR) for RXCUI 1049565 from the RXNCONSO file and the MTHSPL drug schedule from the RXNSAT file?
SELECT distinct a.rxcui, b.atv as schedule, a.str
FROM rxnconso a, rxnsat b
WHERE a.rxcui = '1049565'
AND a.tty = 'SBD'
AND a.rxcui = b.rxcui
AND b.sab = 'MTHSPL'
AND b.atn = 'DCSA';
How do I get a mapping of NDCs and RXCUIs from the RXNSAT file and the SAB=RXNORM drug name (STR) from the RXNCONSO file?
SELECT a.atv as ndc, a.rxcui, b.str
FROM rxnsat a, rxnconso b
WHERE a.atn = 'NDC'
AND a.rxaui = b.rxaui
AND b.tty in ('SCD','SBD','GPCK','BPCK')
ORDER BY b.str;
How do I find RxNorm drugs that are associated with HCPCS J codes?
SELECT distinct b.rxcui, a.atv as hcpcs, b.tty, b.str
FROM rxnsat a, rxnconso b
WHERE a.atn = 'DHJC'
AND a.atv like 'J%'
AND a.rxcui = b.rxcui
AND b.tty in ('GPCK', 'BPCK', 'SCD', 'SBD')
ORDER BY a.atv;
How do I find SAB=RXNORM quantified form drug data related to a given RxCUI (1359714)?
SELECT rxcui, sab, tty, suppress, str
FROM rxnconso
WHERE tty in ('SCD', 'SBD')
AND rxcui in (SELECT rxcui1 FROM rxnrel WHERE rxcui2='1359714' AND rela='has_quantified_form');
15.0 RxNorm for Drug Application Interfaces
RxNorm provides a fairly comprehensive list of normalized names for clinical drugs. When it comes to developing medication entry interfaces for electronic health records or e-prescribing applications, using fully specified RxNorm drug names may not be the most user-friendly choice. Normalized drug names can be quite long and the list of drugs containing a specific ingredient can be very long due to the different dose forms and available strengths. To help with these issues, RxNorm has a set of term types, attributes, and relationships that are meant to be used with the Current Prescribable Content in drug application interfaces.
Term Types
Dose Form Group (DFG) is a term type that serves as a grouping of dose forms (TTY=DF) related by route of administration (i.e., Topical) or dose form (i.e., Pill). A complete list of dose form groups and the dose forms they include can be found in Appendix 3 .
Semantic Clinical Dose Form Group (SCDG) uses the ingredient(s) and dose form group and Semantic Branded Dose Form Group (SBDG) uses the branding information and dose form group.
SCDG and SBDG names are shorter, because the strength information is not included, and the lists of drugs containing a particular ingredient would also be shorter, because of the grouping of dose forms into dose form groups.
Sample Records
1151122|ENG||||||3813590|3813590|1151122||RXNORM|DFG|1151122|Topical Product||N||
1155862|ENG||||||3818473|3818473|1155862||RXNORM|SCDG|1155862|Diazepam Pill||N||
1187310|ENG||||||3848818|3848818|1187310||RXNORM|SBDG|1187310|Tylenol Oral Liquid Product||N||
Attributes
The RXN_AVAILABLE_STRENGTH attribute specifies all of the available strengths for a particular drug for all dose forms within the dose form group. For example, the SCDG 'Diazepam Pill' has multiple ATN=RXN_AVAILABLE_STRENGTH attributes with one value (ATV) for each of the available strengths for all of the dose forms (oral tablet, oral capsule, etc.) - 2 MG, 5 MG, 10 MG, and 15 MG. The corresponding SCD/SBD for each SCDG/SBDG will also have an ATN=RXN_AVAILABLE_STRENGTH attribute with only one value (ATV) for its particular strength.
The RXN_AVAILABLE_STRENGTH attribute allows you to match the more user-friendly SCDG/SBDG to the fully specified drug names SCD/SBD using the relationships listed below.
Sample Records
1155862|||3818473|AUI|1155862|||RXN_AVAILABLE_STRENGTH|RXNORM|10 MG|N||
1187310|||3848818|AUI|1187310|||RXN_AVAILABLE_STRENGTH|RXNORM|100 MG/ML|N||
1171313|||3828706|AUI|1171313|||RXN_AVAILABLE_STRENGTH|RXNORM|0.12 MG/ML (expressed as Naphazoline Hydrochloride) / 2 MG/ML|N||
The RXTERM_FORM attribute provides dose form strings, many of which are abbreviated, that are useful for drug application interfaces. These attributes are associated with SCD and SBD concepts. For example, the SCD 'Diazepam 2 MG Oral Tablet' has an ATN=RXTERM_FORM attribute with a value (ATV) of 'Tab'.
Sample Records
1294556|||4613852|AUI|1294556|||RXTERM_FORM|RXNORM|Sol|N||
1293983|||4612808|AUI|1293983|||RXTERM_FORM|RXNORM|Lotion|N||
1293648|||4612141|AUI|1293648|||RXTERM_FORM|RXNORM|Prefilled Syringe|N||
Relationships
The following relationships are used to connect DFGs, SCDGs, and SBDGs to other RxNorm term types:
- doseformgroup_of / has_doseformgroup
- These relationships exist between a DFG and a DF, an SCDG, or an SBDG.
- ingredient_of / has_ingredient
- These relationships exist between an SCDG and an IN, and between an SBDG and a BN.
- isa / inverse_isa
- These relationships exist between an SCDG and an SCD or an SCDF, and between an SBDG and an SBD or an SBDF.
- tradename_of / has_tradename
- These relationships exist between an SCDG and an SBDG.
Sample Records
1155862||CUI|RN|197589||CUI|isa|18339458||RXNORM||||||
1155862||CUI|RN|197590||CUI|isa|18339449||RXNORM||||||
1155862||CUI|RO|1151133||CUI|doseformgroup_of|18687095||RXNORM||||||
Last Reviewed: November 7, 2023