wiki:RxNormForVista

RxNorm Files for Vista/RPMS

Welcome to the homepage for the RxNorm VISTA/RPMS Support. I am Sam Habiel, and I am the developer for these packages. I can be reached at sam dot habiel at gmail dot com.

What is RxNorm?

RxNorm is a standardized vocabulary set for Drugs in the United States. The goal of RxNorm is drug nomenclature standardization and systems interoperability. More information on RxNorm can be found at http://www.nlm.nih.gov/research/umls/rxnorm/.

Why do I want this?

RxNorm is necessary for interoperability with other systems. If you use VISTA alone without having to talk to any other system, then you don't need RxNorm. However, if you perform external drug interactions, send CCDA documents, or archive patient records for CCR, you are going to need RxNorm. For Meaningful Use, you are required to have RxNorm for various purposes.

What does this release contain?

This release contains Fileman files corresponding to most of public domain RxNorm (archived data is not loaded into VISTA). It also contains utilities for querying RxNorm for specific information and a utility to add drugs to the drug files automatically based on an RxNorm number.

It's important to note that the public domain RxNorm files here differ from the NLM prescribable subset of RxNorm. While both are public domain, the prescribable subset does not contain the VA datasets that enable translation between VISTA and RxNorm. These are available in the full RxNorm package from the NLM. Public domain corresponds to UMLS Restriction Level 0. Read further below to see how to get proprietary codes into your data file like First Databank GCNs and SNOMED codes.

How much does this cost?

This release is licensed under AGPL v3.0 and is free as in free beer. A commercial license for commercial entities running VISTA can be obtained for $2000 per VISTA instance; the commercial license can be found here: RxNormForVista/CommercialLicense. Support costs for monthly updates are $100/month per VISTA instance both for AGPL and commercial users.

How can I install RxNorm on VISTA/RPMS?

Before you install

YOU MUST READ THIS BEFORE INSTALLING

The RxNorm globals file is about 2.5 GB, and when loaded it takes up about 2.5GB. You therefore need to have at least 10 GB available on your drive.

It is very highly recommended that you load and maintain RxNorm in the ^C0CRXN global in an UNJOURNALED portion of your Mumps Database. The data is reproducible and does not need to be journaled; and journaling it is very expensive in terms of journal size. In addition, once loaded, it will not change until the next load. Maintaining back-ups of your database will be easier this way.

RxNorm contains very long text values. You must ensure that your Mumps database can do at least 16,000 characters in a single global node.

On GT.M V6.0, create the following Global File Definition, and run it with GDE:

add    -segment C0CRXN  -file="/path/to/your/globals/c0crxn.dat" -allocation=200000 -block_size=4096 -lock_space=100 -extension_count=1000  -global_buffer_count=8192
add    -region  C0CRXN  -record_size=16368 -key_size=255 -dyn=C0CRXN
add    -name    C0CRXN  -region=C0CRXN

It's often necessary to increase your shared memory. The last line will change it for all reboots; the first line will do it for this boot.

sysctl -w kernel.shmmax=67108864
echo "kernel.shmmax=67108864" >> /etc/sysctl.conf

If you use GT.M less than V6.0, you must make sure that your block size and record size synchronize since GT.M couldn't span blocks then.

On Cache, create a new database, and map ^C0CRXN to it. By default Cache databases allow 32K of global node length.

Installation

The current version is 2.5. You now install the dictionary file (which you need to only install once unless it changes) and then download the data file from NLM (https://www.nlm.nih.gov/research/umls/rxnorm/docs/rxnormfiles.html) monthly, unzip it, and then pass the file path to the rrf directory in D IMPORT^C0CRXNRD("/path/to/rrf",0 or 1 to import restricted data sources). See the Programmer APIs section below. The data load takes about 20 minutes. If you would rather not do that, some Public Domain Data that is several years old is provided below.

Installation Order:

Installation is a normal KIDS file installation. There is nothing special about it.

Contents of the KIDS file

File list

NameNumberGlobalRxNorm NLM FileApprox # of entries at the end of 2013
RXNORM CONCEPT NAMES AND SOURCES176.001^C0CRXN(176.001)RXNCONSO.RRF1,000,000
RXNORM SIMPLE CONCEPT AND ATOM ATTRIBUTES176.002^C0CRXN(176.002)RXNSAT.RRF7,000,000
RXNORM SOURCE INFORMATION176.003^C0CRXN(176.003)RXNSAB.RRF13
RXNORM SEMANTIC TYPES176.004^C0CRXN(176.004)RXNSTY.RRF400,000
RXNORM RELATED CONCEPTS176.005^C0CRXN(176.005)RXNREL.RRF5,000,000
RXNORM DOCUMENTATION FOR ABBREVIATED VALUES176.006^C0CRXN(176.006)RXNDOC.RRF3,000

Pharmacy Files Computed Fields

File NameFile numberField NameField NumberDescription
DRUG50RXNCUI176.001Pointer to the Semantic Clinical Drug in 176.001 that corresponds to this drug.
DRUG50RXN SCD NAME176.002Canonical Clinical Drug name according to RxNorm.
VA PRODUCT50.68COMPUTED GCNSEQNO176.001Multiple of GCNs corresponding to a VA PRODUCT

Routines

RoutineDescriptionSpecial Remarks
C0CRXNnnComplied cross reference routines (12 routines on Fileman 22.2)Routines compiled dynamically; not shipped in KIDS build.
C0CRXNRDImport RxNorm data from NLM filesSee below for API
C0CRXNLKRxNorm mapping APIs for VISTASee below for APIs
C0CRXNADAdd a drug to drug file based on RxNorm codeSee below for API

What can I do with RxNorm

User Mode use

All files are shipped with no file access code security for reading, and as such they can be read by all users if they are granted access to Fileman and don't have Kernel Part III security turned on. If Kernel Part III security is turned on, you will need to grant users access to files 176.001 through 176.006. If you don't know what Part III security is, then you don't have it.

Concepts

Users can query the Concepts file by typing the concept name (usually a drug generic name or brand name) or a drug code (such as a VUID). Here are a couple of examples:

Search for all entries that have the word PROZAC in them:

Select RXNORM CONCEPT NAMES AND SOURCES RXCUI: PROZAC
     1   PROZAC  58827     MSH     PEN     D005473     Prozac
     2   PROZAC  58827     RXNORM     TMSY     58827     PROzac
     3   PROZAC  58827     RXNORM     BN     58827     Prozac
     4   PROZAC 10 MG (FLUOXETINE HYDRO  205535     RXNORM     SY     205535    
 Prozac 10 MG (fluoxetine hydrochloride 11.2 MG) Oral Capsule
     5   PROZAC 10 MG (FLUOXETINE HYDRO  205535     RXNORM     TMSY     205535  
   PROzac 10 MG (FLUoxetine hydrochloride 11.2 MG) Oral Capsule

Search for the VUID for Prozac after we obtain it from the NDF:

OUTPUT FROM WHAT FILE: RXNORM CONCEPT NAMES AND SOURCES// 50.68  VA PRODUCT
                                          (23779 entries)
Select VA PRODUCT NAME: FLUOXETINE
     1   FLUOXETINE HCL 10MG CAP  
     2   FLUOXETINE HCL 10MG CAP,UD  
     3   FLUOXETINE HCL 10MG TAB  
     4   FLUOXETINE HCL 20MG CAP  
     5   FLUOXETINE HCL 20MG CAP,UD  
Press <RETURN> to see more, '^' to exit this list, OR
CHOOSE 1-5: 4  FLUOXETINE HCL 20MG CAP
ANOTHER ONE: 
STANDARD CAPTIONED OUTPUT? Yes//   (Yes)
Include COMPUTED fields:  (N/Y/R/B): NO//  - No record number (IEN), no Computed
 Fields
DISPLAY AUDIT TRAIL? No//   NO

NAME: FLUOXETINE HCL 20MG CAP           VA GENERIC NAME: FLUOXETINE
  DOSAGE FORM: CAP,ORAL                 STRENGTH: 20
  UNITS: MG
  NATIONAL FORMULARY NAME: FLUOXETINE CAP,ORAL
  VA PRINT NAME: FLUOXETINE HCL 20MG CAP
  VA PRODUCT IDENTIFIER: F0049          TRANSMIT TO CMOP: YES
  VA DISPENSE UNIT: CAP
ACTIVE INGREDIENTS: FLUOXETINE HYDROCHLORIDE
  STRENGTH: 20                          UNITS: MG
  PRIMARY VA DRUG CLASS: CN609          NATIONAL FORMULARY INDICATOR: YES
  CS FEDERAL SCHEDULE: Unscheduled      SINGLE/MULTI SOURCE PRODUCT: Multisource
  DSS NUMBER: 1                         OVERRIDE DF DOSE CHK EXCLUSION: NO
  CREATE DEFAULT POSSIBLE DOSAGE: YES
  FDA MED GUIDE: Fluoxetine_Cap_(Generic)_(2009).pdf
  SERVICE CODE: 608147
EFFECTIVE DATE/TIME: MAR 10, 2005       STATUS: ACTIVE
  VUID: 4008621                         MASTER ENTRY FOR VUID: YES



Select VA PRODUCT NAME: 




Select OPTION: INQUIRE TO FILE ENTRIES  



OUTPUT FROM WHAT FILE: VA PRODUCT// 176.001  RXNORM CONCEPT NAMES AND SOURCES
                                          (687143 entries)
Select RXNORM CONCEPT NAMES AND SOURCES RXCUI: 4008621
     1   4008621  310385     VANDF     CD     4008621     FLUOXETINE HCL 20MG CA
P
     2   4008621  310385     VANDF     AB     4008621     FLUOXETINE HCL 20MG CA
P
CHOOSE 1-2: 1  310385     VANDF     CD     4008621     FLUOXETINE HCL 20MG CAP
ANOTHER ONE: 
STANDARD CAPTIONED OUTPUT? Yes//   (Yes)
Include COMPUTED fields:  (N/Y/R/B): NO//  - No record number (IEN), no Computed
 Fields

RXCUI: 310385                           LAT: ENG
  RXAUI: 1424227                        SAB: VANDF
  TTY: CD                               CODE: 4008621
  STR: FLUOXETINE HCL 20MG CAP          SUPPRESS: N

Atoms

To search the Atoms file, chose file 176.002. You can search by the type of Atom or the Atom itself. The most useful thing to search here are NDC numbers. Here's a search for a Prozac NDC.

Select RXNORM SIMPLE CONCEPT AND ATOM ATTRIBUTES ATN: 00777310502  NDC     RXNOR
M     00777310502
ANOTHER ONE: 
STANDARD CAPTIONED OUTPUT? Yes//   (Yes)
Include COMPUTED fields:  (N/Y/R/B): NO//  - No record number (IEN), no Computed
 Fields

ATN: NDC                                RXAUI: 787787
  STYPE: AUI                            CODE: 104849
  RXCUI: 104849                         SAB: RXNORM
  ATV: 00777310502                      SUPPRESS: N
  CVF: 4096

You can also enter an RxNorm concept code to get all available atoms about a drug. Using the RXCUI we just obtained above, we can get an exhaustive list of everything about it:

OUTPUT FROM WHAT FILE: RXNORM SIMPLE CONCEPT AND ATOM ATTRIBUTES// 
         
Select RXNORM SIMPLE CONCEPT AND ATOM ATTRIBUTES ATN: 104849
     1   104849  NST     MTHFDA     20 MG
     2   104849  NDC     MTHFDA     054868-0511-*1
     3   104849  NDC     MTHFDA     053002-1016-*0
     4   104849  DRT     MTHFDA     ORAL
     5   104849  NDC     RXNORM     00777310502
Press <RETURN> to see more, '^' to exit this list, OR
CHOOSE 1-5: 
     6   104849  NDC     MTHFDA     016590-*843-90
     7   104849  DDF     MTHFDA     CAPSULE
     8   104849  NDC     MTHFDA     000002-3105-14
     9   104849  NDC     MTHFDA     051655-*390-25
     10  104849  NDC     MTHFDA     054868-0511-*5
Press <RETURN> to see more, '^' to exit this list, OR
CHOOSE 1-10: 
     11  104849  DDF     MTHFDA     CAPSULE, GELATIN COATED
     12  104849  MARKETING_STATUS     MTHSPL     active
     13  104849  DST     MTHFDA     20 MG
     14  104849  DDF     MTHFDA     CAPSULE
     15  104849  NDC     MTHFDA     054868-0511-*2
Press <RETURN> to see more, '^' to exit this list, OR
CHOOSE 1-15: 
     16  104849  NDC     RXNORM     58864091730
     17  104849  TRN     MTHFDA     PROZAC FLUOXETINE CAPSULES USP
     18  104849  DDF     MTHFDA     CAPSULE, GELATIN COATED
     19  104849  DRT     MTHFDA     ORAL
     20  104849  DST     MTHFDA     20 MG
Press <RETURN> to see more, '^' to exit this list, OR
CHOOSE 1-20: 
     21  104849  DRT     MTHFDA     ORAL
     22  104849  DRT     MTHFDA     ORAL
     23  104849  DST     MTHFDA     20 MG
     24  104849  DDF     MTHFDA     CAPSULE, GELATIN COATED
     25  104849  NDC     MTHFDA     000077-3105-07

Sources

File 176.004 is the Sources file. It isn't that useful except to check the proprietariness of a source or to check when it was last updated for your database. Here's an example:

OUTPUT FROM WHAT FILE: RXNORM SIMPLE CONCEPT AND ATOM ATTRIBUTES// 176.003  RXNO
RM SOURCE INFORMATION                     (13 entries)
Select RXNORM SOURCE INFORMATION RSAB: ?
 Answer with RXNORM SOURCE INFORMATION RSAB
 Do you want the entire 13-Entry RXNORM SOURCE INFORMATION List? y  (Yes)
   Choose from:
   ATC        Anatomical Therapeutic Chemical Classification System     3
   GS        Gold Standard Drug Database     3
   MDDB        Master Drug Data Base     3
   MMSL        Multum MediSource Lexicon     1
   MMX        Micromedex RED BOOK     3
   MSH        Medical Subject Headings, 2013_2013_01_21     0
   MTHFDA        Metathesaurus FDA National Drug Code Directory     0
   MTHSPL        Metathesaurus FDA Structured Product Labels     0
   NDDF        FDB MedKnowledge (formerly NDDF Plus)     3
   NDFRT        National Drug File     0
   RXNORM        RxNorm Vocabulary     0
   SNOMEDCT_US        US Edition of SNOMED CT     9
   VANDF        Veterans Health Administration National Drug File     0
    
Select RXNORM SOURCE INFORMATION RSAB: VANDF       Veterans Health Administratio
n National Drug File     0
ANOTHER ONE: 
STANDARD CAPTIONED OUTPUT? Yes//   (Yes)
Include COMPUTED fields:  (N/Y/R/B): NO//  - No record number (IEN), no Computed
 Fields

RSAB: VANDF                             RCUI: C1140288
  VSAB: VANDF_2013_09_27                VCUI: C3530306
  SON: Veterans Health Administration National Drug File
  SF: VANDF                             SVER: 2013_09_27
  IMETA: 2013AA
  SLC: Michael Lincoln, M.D.;;U.S. Department of Veterans Affairs, Veterans Heal
th Administration;;;Washington;DC;United States;;;;michael.lincoln@med.va.gov;ht
tp://www.pbm.va.gov/default.aspx
  SCC: Michael Lincoln, M.D.;;;;;;;;;;;michael.lincoln@med.va.gov;http://www.pbm
.va.gov/default.aspx                    SRL: 0
  TTYL: IN,CD,AB,PT,MTH_RXN_CD
  ATNL: VAC,DRUG_CLASS_TYPE,VA_CLASS_NAME,DDF,NFI,DCSA,PARENT_CLASS,VMO,SNGL_OR_
MULT_SRC_PRD,EXCLUDE_DI_CHECK,NDF_TRANSMIT_TO_CMOP,NF_INACTIVATE,VA_DISPENSE_UNI
T,VA_GENERIC_NAME,NF_NAME,NDC           LAT: ENG
  CENC: UTF-8                           CURVER: Y
  SABIN: Y                              SSN: National Drug File
  SCIT: ;;;;Veterans Health Administration National Drug File;;;September 27, 20
13;Washington, DC;U.S. Department of Veterans Affairs;;;;;;;;

According to this, RxNorm was last updated with VA sources on September 27th 2013. An SRL of 0 means that the source is public domain.

Relationships

RxNorm relationships are not easy to query in this version due to Fileman not behaving well with compound B indexes. But they are doable if you know what you are searching for.

Let's find out the generic drug concept that corresponds to the RxNorm code we obtained via the NDC for Prozac 20mg:

Select RXNORM RELATED CONCEPTS RXCUI1: 104849
                                 RELA: has_tradename
                               RXCUI2: 

     1   104849  
     2   1048498  
     3   1048499  
CHOOSE 1-3: 1  RXNORM
Select Another RXNORM RELATED CONCEPTS RXCUI1: 
                                         RELA: 
                                       RXCUI2: 

STANDARD CAPTIONED OUTPUT? Yes//   (Yes)
Include COMPUTED fields:  (N/Y/R/B): NO//  - No record number (IEN), no Computed
 Fields

SAB: RXNORM                             STYPE1: CUI
  REL: RB                               RXCUI2: 310385
  STYPE2: CUI                           RELA: has_tradename
  RUI: 4086805                          RXCUI1: 104849
  SUPPRESS: N                           CVF: 4096

To confirm that we indeed got the generic, we jump over to 176.001:

OUTPUT FROM WHAT FILE: RXNORM RELATED CONCEPTS// 176.001  RXNORM CONCEPT NAMES A
ND SOURCES                                (687143 entries)
Select RXNORM CONCEPT NAMES AND SOURCES RXCUI: 310385
     1   310385       RXNORM     SCD     310385     Fluoxetine 20 MG Oral Capsul
e
     2   310385       VANDF     CD     4008621     FLUOXETINE HCL 20MG CAP
     3   310385       VANDF     CD     4013939     FLUOXETINE HCL 20MG CAP,UD
     4   310385       MTHFDA     CD     272755     FLUOXETINE / FLUOXETINE HYDRO
CHLORIDE ORAL CAPSULE
     5   310385       MTHFDA     CD     235824     FLUOXETINE 20 MG ORAL CAPSULE

The Semantic Clinical Drug entry (SCD) for RxNorm means that we hit the jackpot: That is indeed the canonical generic entry for the branded Prozac 20mg capsule.

Programmer APIs

Update API

To update RxNorm to a newer monthly version from the NLM, run the following:

D IMPORT^C0CRXNRD("/path/to/rrf/folder/",optional include restricted/copyrighted sources (1 -> yes). Default is no.)

If you need FDB or SNOMED-CT codes, you need to pass in the second parameter.

The import runs in 2 parallel threads. The background thread takes about 15 minutes to finish. You need to use your system status utility in order to check to see if it finished yet.

Look-up APIs

This is a list of APIs available for programmers for converting one terminology to another. Some APIs return multiple results. If so, they will be delimited by "^".

$$EXIST^C0CRXNLK(RXN)               $$ Public - Does this RxNorm CUI exist?
$$GCN2RXN^C0CRXNLK(GCN)             $$ Public - Get RxNorm CUI using GCN
$$RXN2GCN^C0CRXNLK(RXNCUI)          $$ Public - Get GCN(s) given an RxNorm Number
$$RXN2VUI^C0CRXNLK(RXNCUI)          $$ Public - Get VUID(s) for given RXNCUI for Clinical Drug
$$VUI2VAP^C0CRXNLK(VUID)            $$ Public - Get VA Product IEN(s) from VUID
$$VAP2MED^C0CRXNLK(VAPROD)          $$ Public - Get Drug(s) using VA Product IEN
$$RXN2MEDS^C0CRXNLK(RXNCUI)         $$ Public - Convert RxNorm value to currently existing drugs in File 50.
$$FDI2RXN^C0CRXNLK(BASE)            $$ Public - Get RxNorm CUI for FDB Ingredient/Base
$$RXN2VIN^C0CRXNLK(RXNCUI)          $$ Public - Get VUID Ingredient for RxNorm CUI
$$VIN2VAG^C0CRXNLK(VUID)            $$ Public - Get VA Generic for VUID Ingredient
$$FDI2VAG^C0CRXNLK(BASE)            $$ Public - Get VA Generic for FDB Ingredient/Base
$$VIN2DIN^C0CRXNLK(VUID)            $$ Public - Get Drug Ingredient for VUID Ingredient
$$FDI2DIN^C0CRXNLK(BASE)            $$ Public - Get Drug Ingredient for FDB Ingredient/Base
$$VUI2RXN^C0CRXNLK(VUID,TTY)        $$ Public - Get RXNCUI for VUID (any VUID type)
$$VUI2GCN^C0CRXNLK(VUID)            $$ Public - Get GCNs for a given VUID (any VUID type)
$$MED2RXN^C0CRXNLK(DA)              $$ Public - Get RxNorm CUI for Drug
$$MED2SCDN^C0CRXNLK(DA)             $$ Public - Medication to Semantic Clinical Drug Name
$$SCDNAME^C0CRXNLK(RXNCUI)          $$ Public - Semantic Clinical Drug Name for RxNorm CUI
$$ANYNAME^C0CRXNLK(RXNCUI)          $$ Public - Get the RxNorm name, no matter what it is
$$RXN2NDI^C0CRXNLK(RXNCUI)          $$ Public - Get NDDF Ingredient for RXNCUI
$$VIN2NDI^C0CRXNLK(VUID)            $$ Public - Get NDDF Ingredient for VUID
$$NDC2RXN^C0CRXNLK(NDC)             $$ Public - Get RxCUI given the NDC
$$NDC2RXN2^C0CRXNLK(NDC,SOURCE)     $$ Public - Get RxCUI given the source
$$ISBRAND^C0CRXNLK(RXN)             $$ Public - Is this RxCUI for a brand drug?
$$BR2GEN^C0CRXNLK(RXN)              $$ Public - Convert Brand RxCUI to Generic RxCUI (many to 1)
$$GEN2BR^C0CRXNLK(RXN)              $$ Public - Convert Generic RxCUI to Brand RxCUIs (1 to many).
$$RXN2BNS^C0CRXNLK(RXN)             $$ Public - Get all Brand Names associated with an RXN
$$RXN2NDC^C0CRXNLK(RXN)             $$ Public - Get NDC codes for RxNorm code
$$LVUID^C0CRXNLK(RXN)               $$ Public - Locate VUID, any type, given RxNorm. Iterative Search.
D loopVUIDs^C0CRXNLK                Public - Paste VUIDs in to get RxNorms

Here's an example call to return all active NDCs for brand name Prozac 20mg capsules:

GTM>W $$RXN2NDC^C0CRXNLK(104849)
00777310502^58864091730^58016082830^58016082820^66105056403^58016082810^58016082890^52959023320
^54868051105^00777310507^52959023310^00247037204^58864097130^55289021522^54868051101^52959023314
^58016082840^52959023340^52959023350^54868051102^00247037210^00777310530^52959023330^54868051100
^58016082860^16590084390^52959023300^58016082800

C0CRXNLK comes with Unit Tests. To run them, make sure M-Unit is installed and run ^C0CRXNLK from the top.

Automatic Drug Addition API using RxNorm

To add a drug to the drug file using the RxNorm CUI, call the following entry point:

W $$ADDDRUG^C0CRXNLK(RXNCUI for Drug, optional NDC to file, optional barcode to put for BCMA)

Please note that this routine does not check to see if the drug is already there; it will add it again.

This routine can be enhanced to use the barcode to figure out which drug it is that is being added from RxNorm. As such, it will enable you to add drugs to the drug file by just bar-code scanning them.

Technical Details

The following are technical details for this package.

Package File Entry

NAME: RXNORM FOR VISTA                  PREFIX: C0CR
  SHORT DESCRIPTION: RxNorm data dictionaries and loading routines for VISTA
FILE: RXNORM CONCEPT NAMES AND SOURCES
FILE: RXNORM SIMPLE CONCEPT AND ATOM ATTRIBUTES
FILE: RXNORM SOURCE INFORMATION
FILE: RXNORM SEMANTIC TYPES
FILE: RXNORM RELATED CONCEPTS
FILE: RXNORM DOCUMENTATION FOR ABBREVIATED VALUES
VERSION: 2.3                            DATE DISTRIBUTED: NOV 14, 2013

Dependencies

  • Kernel 8
  • Fileman 22.2 (Fileman 22.0 can be used but it may not be used to edit the data definitions).

Routine list

Routine Summary
Checksums shown are NEW Checksums
The following routines are included in this patch.  The second line of each
of these routines now looks like:
 ;;2.5;RXNORM FOR VISTA;**[Patch List]**;Nov 14, 2013;Build 8

Routine         Old         New        Patch List
C0CRXNAD        n/a      18747982
C0CRXNLK        n/a      159120024
C0CRXNRD        n/a      52136432

In addition, routines C0CRXNnn (where nn is a number), are created automatically as Fileman compiles the RxNorm cross-references.

Description of routines and overall flow

The three routines are relatively self-contained. C0CRXNRD load RxNorm codes from the RRF files supplied by NLM. C0CRXNLK has various translation utilities. C0CRXNAD add a drug to the drug file based on an RxNorm code.

Modifications to National VA distributed routines

None.

File list

NameNumberGlobalRxNorm NLM FileApprox # of entries at the end of 2013
RXNORM CONCEPT NAMES AND SOURCES176.001^C0CRXN(176.001)RXNCONSO.RRF1,000,000
RXNORM SIMPLE CONCEPT AND ATOM ATTRIBUTES176.002^C0CRXN(176.002)RXNSAT.RRF7,000,000
RXNORM SOURCE INFORMATION176.003^C0CRXN(176.003)RXNSAB.RRF13
RXNORM SEMANTIC TYPES176.004^C0CRXN(176.004)RXNSTY.RRF400,000
RXNORM RELATED CONCEPTS176.005^C0CRXN(176.005)RXNREL.RRF5,000,000
RXNORM DOCUMENTATION FOR ABBREVIATED VALUES176.006^C0CRXN(176.006)RXNDOC.RRF3,000

Pharmacy Files Computed Fields

File NameFile numberField NameField NumberDescription
DRUG50RXNCUI176.001Pointer to the Semantic Clinical Drug in 176.001 that corresponds to this drug.
DRUG50RXN SCD NAME176.002Canonical Clinical Drug name according to RxNorm.
VA PRODUCT50.68COMPUTED GCNSEQNO176.001Multiple of GCNs corresponding to a VA PRODUCT

Exported Options

None included.

Archiving and Purging

Not supported.

Supported APIs

All non-testing APIs in C0CRXNLK are supported.

D IMPORT^C0CRXNRD

$$ADDDRUG^C0CRXNAD

For details, see the Programmer APIs section.

External Interfaces, External Relations

Utility functions in Fileman and Kernel.

Access to Drug, VA Product and VA Generic files for various computations in C0CRXNLK.

Modifications of Drug and VA Product Data Dictionaries to add convenience computed fields to tie the files with RxNorm.

Internal relations

None.

Package wide-variables

None.

Security

This software implements no security of its own beyond Fileman access codes on the fields which can be seen below in the File Structure section. None of the data contained is sensitive in any way.

File Structure

All files have only a zero node for each entry and correspond as much as possible to the RxNorm file format, except that the '|' has been substitued with a "^". The exception to that rule is when a file's first field cannot be the .01 because it's missing for some entries. In this case, the first field and a key field are switched so that the key field can be the .01.

CONDENSED DATA DICTIONARY---RXNORM CONCEPT NAMES AND SOURCES FILE (#176.001)UCI: F201303,ICARUS 

STORED IN: ^C0CRXN(176.001,                               11/21/13    PAGE 1
------------------------------------------------------------------------------------------------------------------------------------

                                                  FILE SECURITY
                                   DD SECURITY    : @     DELETE SECURITY: 
                                   READ SECURITY  :       LAYGO SECURITY : 
                                   WRITE SECURITY : @
CROSS REFERENCED BY:
     

FILE #176.001
INDEXED BY:       RXCUI (B), CODE (CODE), SAB & TTY & CODE & RXCUI (STC), STR (STR), SAB & TTY & RXCUI & CODE (STX)


                                 FILE STRUCTURE

FIELD     FIELD
NUMBER    NAME

.01       RXCUI (RFJ8), [0;1]
.02       LAT (RFJ3), [0;2]
.03       TS (FJ1), [0;3]
.04       LUI (FJ8), [0;4]
.05       STT (FJ3), [0;5]
.06       SUI (FJ8), [0;6]
.07       ISPREF (FJ1), [0;7]
.08       RXAUI (RFJ8), [0;8]
.09       SAUI (FJ50), [0;9]
.1        SCUI (FJ50), [0;10]
.11       SDUI (FJ50), [0;11]
.12       SAB (RFJ20), [0;12]
.13       TTY (RFJ20), [0;13]
.14       CODE (RFJ50), [0;14]
.15       STR (RFJ3000), [0;15]
.16       SRL (FJ10), [0;16]
.17       SUPPRESS (FJ1), [0;17]
.18       CVF (FJ50), [0;18]
50        COMPUTED DRUGS (Cmp50), [ ; ]



CONDENSED DATA DICTIONARY---RXNORM SIMPLE CONCEPT AND ATOM ATTRIBUTES FILE (#176.002)UCI: F201303,ICARUS 

STORED IN: ^C0CRXN(176.002,                               11/21/13    PAGE 1
------------------------------------------------------------------------------------------------------------------------------------

                                                  FILE SECURITY
                                   DD SECURITY    : @     DELETE SECURITY: @
                                   READ SECURITY  :       LAYGO SECURITY : @
                                   WRITE SECURITY : @
CROSS REFERENCED BY:
      ATN(XATN)  ATV(XATV) 

FILE #176.002
INDEXED BY:       RXCUI & SAB & ATN & ATV (ANDFRT), SAB & ATN & ATV & RXCUI (ASAA), SAB & ATN & RXCUI & ATV (ASAR), RXCUI (RXCUI)


                                 FILE STRUCTURE

FIELD     FIELD
NUMBER    NAME

.01       ATN (RFJ1000), [0;1]
.02       LUI (FJ8), [0;2]
.03       SUI (FJ8), [0;3]
.04       RXAUI (FJ8), [0;4]
.05       STYPE (FJ50), [0;5]
.06       CODE (FJ50), [0;6]
.07       ATUI (FJ11), [0;7]
.08       SATUI (FJ50), [0;8]
.09       RXCUI (FJ8), [0;9]
.1        SAB (RFJ20), [0;10]
.11       ATV (FJ4000), [0;11]
.12       SUPPRESS (FJ1), [0;12]
.13       CVF (FJ50), [0;13]



CONDENSED DATA DICTIONARY---RXNORM SOURCE INFORMATION FILE (#176.003)UCI: F201303,ICARUS 

STORED IN: ^C0CRXN(176.003,                               11/21/13    PAGE 1
------------------------------------------------------------------------------------------------------------------------------------

                                                  FILE SECURITY
                                   DD SECURITY    : @     DELETE SECURITY: @
                                   READ SECURITY  :       LAYGO SECURITY : @
                                   WRITE SECURITY : @
CROSS REFERENCED BY:
      RSAB(B) 


                                 FILE STRUCTURE

FIELD     FIELD
NUMBER    NAME

.01       RSAB (RFJ20), [0;1]
.02       RCUI (FJ8), [0;2]
.03       VSAB (FJ40), [0;3]
.04       VCUI (FJ8), [0;4]
.05       SON (FJ3000), [0;5]
.06       SF (FJ20), [0;6]
.07       SVER (FJ20), [0;7]
.08       VSTART (FJ10), [0;8]
.09       VEND (FJ10), [0;9]
.1        IMETA (FJ10), [0;10]
.11       RMETA (FJ10), [0;11]
.12       SLC (FJ1000), [0;12]
.13       SCC (FJ1000), [0;13]
.14       SRL (NJ10,0), [0;14]
.15       TFR (NJ10,0), [0;15]
.16       CFR (NJ10,0), [0;16]
.17       CXTY (FJ50), [0;17]
.18       TTYL (FJ300), [0;18]
.19       ATNL (FJ1000), [0;19]
.2        LAT (FJ3), [0;20]
.21       CENC (FJ20), [0;21]
.22       CURVER (FJ1), [0;22]
.23       SABIN (FJ1), [0;23]
.24       SSN (FJ3000), [0;24]
.25       SCIT (FJ4000), [0;25]



CONDENSED DATA DICTIONARY---RXNORM SEMANTIC TYPES FILE (#176.004)UCI: F201303,ICARUS 

STORED IN: ^C0CRXN(176.004,                               11/21/13    PAGE 1
------------------------------------------------------------------------------------------------------------------------------------

                                                  FILE SECURITY
                                   DD SECURITY    : @     DELETE SECURITY: @
                                   READ SECURITY  :       LAYGO SECURITY : @
                                   WRITE SECURITY : @
CROSS REFERENCED BY:
      RXNCUI(B) 


                                 FILE STRUCTURE

FIELD     FIELD
NUMBER    NAME

.01       RXNCUI (RFJ8), [0;1]
.02       TUI (FJ4), [0;2]
.03       STN (FJ100), [0;3]
.04       STY (FJ50), [0;4]
.05       ATUI (FJ11), [0;5]
.06       CVF (FJ50), [0;6]



CONDENSED DATA DICTIONARY---RXNORM RELATED CONCEPTS FILE (#176.005)UCI: F201303,ICARUS 

STORED IN: ^C0CRXN(176.005,                               11/21/13    PAGE 1
------------------------------------------------------------------------------------------------------------------------------------

                                                  FILE SECURITY
                                   DD SECURITY    : @     DELETE SECURITY: @
                                   READ SECURITY  :       LAYGO SECURITY : @
                                   WRITE SECURITY : @
CROSS REFERENCED BY:
     

FILE #176.005
INDEXED BY:       RXCUI1 & RELA & RXCUI2 (B)


                                 FILE STRUCTURE

FIELD     FIELD
NUMBER    NAME

.01       SAB (RFJ20), [0;1]
.02       RXAUI1 (FJ8), [0;2]
.03       STYPE1 (FJ50), [0;3]
.04       REL (FJ4), [0;4]
.05       RXCUI2 (FJ8), [0;5]
.06       RXAUI2 (FJ8), [0;6]
.07       STYPE2 (FJ50), [0;7]
.08       RELA (FJ100), [0;8]
.09       RUI (FJ10), [0;9]
.1        SRUI (FJ50), [0;10]
.11       RXCUI1 (FJ8), [0;11]
.12       SL (FJ1000), [0;12]
.13       DIR (FJ1), [0;13]
.14       RG (FJ10), [0;14]
.15       SUPPRESS (FJ1), [0;15]
.16       CVF (FJ50), [0;16]



CONDENSED DATA DICTIONARY---RXNORM DOCUMENTATION FOR ABBREVIATED VALUES FILE (#176.006)UCI: F201303,ICARUS 

STORED IN: ^C0CRXN(176.006,                               11/21/13    PAGE 1
------------------------------------------------------------------------------------------------------------------------------------

                                                  FILE SECURITY
                                   DD SECURITY    : @     DELETE SECURITY: @
                                   READ SECURITY  :       LAYGO SECURITY : @
                                   WRITE SECURITY : @
CROSS REFERENCED BY:
      DOCKEY(B) 


                                 FILE STRUCTURE

FIELD     FIELD
NUMBER    NAME

.01       DOCKEY (RFJ50), [0;1]
.02       VALUE (FJ1000), [0;2]
.03       TYPE (FJ50), [0;3]
.04       EXPL (FJ1000), [0;4]

A crucial part of speed in the RxNorm operations is the extensive indexing on the files. What follows are the defined new-style indexes:

NEW-STYLE INDEX LIST -- FILE #176.001                                                                           11/21/13    PAGE 1
-----------------------------------------------------------------------------------------------------------------------------------

File #176.001

  New-Style Indexes:

  B (#983)    FIELD    REGULAR    IR    LOOKUP & SORTING
      Short Descr:  Regular B Index
        Set Logic:  S ^C0CRXN(176.001,"B",X,DA)=""
       Kill Logic:  K ^C0CRXN(176.001,"B",X,DA)
       Whole Kill:  K ^C0CRXN(176.001,"B")
             X(1):  RXCUI  (176.001,.01)  (Subscr 1)  (forwards)

  CODE (#1020)    FIELD    REGULAR    IR    LOOKUP & SORTING
      Short Descr:  Code Index
        Set Logic:  S ^C0CRXN(176.001,"CODE",X,DA)=""
       Kill Logic:  K ^C0CRXN(176.001,"CODE",X,DA)
       Whole Kill:  K ^C0CRXN(176.001,"CODE")
             X(1):  CODE  (176.001,.14)  (Subscr 1)  (forwards)

  STC (#1021)    RECORD    MUMPS    IR    LOOKUP & SORTING
      Short Descr:  Source Term Type Code Index
      Description:  Use this index to do compound searches on RxNorm Concepts.  
                     
                    Examples: SAB="NDDF", TTY="CDC", CODE={GCN} will give you the entry a clinical drug in First Database with GCN
                    Code {GCN}.  
                     
                    SAB="RXNORM", TTY="SCD", CODE={RXNORM} will give you the entry that is the Semantic Clinical Drug for the
                    RxNorm code.  
                     
                    SAB="VANDF", TTY="CD", CODE={VUID} will give you a drug that has that VUID.  
        Set Logic:  S ^C0CRXN(176.001,"STC",X(1),X(2),X(3),DA)=X(4)
       Kill Logic:  K ^C0CRXN(176.001,"STC",X(1),X(2),X(3),DA)
       Whole Kill:  K ^C0CRXN(176.001,"STC")
             X(1):  SAB  (176.001,.12)  (Subscr 1)  (forwards)
             X(2):  TTY  (176.001,.13)  (Subscr 2)  (forwards)
             X(3):  CODE  (176.001,.14)  (Subscr 3)  (forwards)
             X(4):  RXCUI  (176.001,.01)  (forwards)

  STR (#1022)    FIELD    REGULAR    IR    LOOKUP & SORTING
      Short Descr:  String Lookup Index
        Set Logic:  S ^C0CRXN(176.001,"STR",$E(X,1,30),DA)=""
       Kill Logic:  K ^C0CRXN(176.001,"STR",$E(X,1,30),DA)
       Whole Kill:  K ^C0CRXN(176.001,"STR")
             X(1):  STR  (176.001,.15)  (Subscr 1)  (Len 30)  (forwards)
                      Transform (Storage):  S X=$$UP^XLFSTR(X)
                       Transform (Lookup):  S X=$$UP^XLFSTR(X)

  STX (#1023)    RECORD    MUMPS    IR    LOOKUP & SORTING
      Short Descr:  Source Term Type RxCUI Code Index
      Description:  Use this index as a reverse of the STC index.  
                     
                    The STC index will give you an entry if you know the source, the type and the code. This index will give you
                    the codes if you know the source, the type, but not the code, but rather the RxNorm code.  
        Set Logic:  S ^C0CRXN(176.001,"STX",X(1),X(2),X(3),DA)=X(4)
       Kill Logic:  K ^C0CRXN(176.001,"STX",X(1),X(2),X(3),DA)
       Whole Kill:  K ^C0CRXN(176.001,"STX")
             X(1):  SAB  (176.001,.12)  (Subscr 1)  (forwards)
             X(2):  TTY  (176.001,.13)  (Subscr 2)  (forwards)
             X(3):  RXCUI  (176.001,.01)  (Subscr 3)  (forwards)
             X(4):  CODE  (176.001,.14)  (forwards)

NEW-STYLE INDEX LIST -- FILE #176.002                                                                           11/21/13    PAGE 1
-----------------------------------------------------------------------------------------------------------------------------------

File #176.002

  New-Style Indexes:

  ANDFRT (#1024)    RECORD    REGULAR    IR    SORTING ONLY
      Short Descr:  RxNorm NDFRT Index
        Set Logic:  S ^C0CRXN(176.002,"ANDFRT",X(1),$E(X(3),1,30),$E(X(4),1,30),DA)=""
         Set Cond:  S X=X(2)="NDFRT"
       Kill Logic:  K ^C0CRXN(176.002,"ANDFRT",X(1),$E(X(3),1,30),$E(X(4),1,30),DA)
        Kill Cond:  S X=X(2)="NDFRT"
       Whole Kill:  K ^C0CRXN(176.002,"ANDFRT")
             X(1):  RXCUI  (176.002,.09)  (Subscr 1)  (forwards)
             X(2):  SAB  (176.002,.1)  (forwards)
             X(3):  ATN  (176.002,.01)  (Subscr 2)  (Len 30)  (forwards)
             X(4):  ATV  (176.002,.11)  (Subscr 3)  (Len 30)  (forwards)

  ASAA (#1025)    RECORD    MUMPS    IR    SORTING ONLY
      Short Descr:  SAB (Source) ATN (Attribute Name) ATV (Value) Index
        Set Logic:  S ^C0CRXN(176.002,"ASAA",X(1),$E(X(2),1,30),$E(X(3),1,30),DA)=X(4)
       Kill Logic:  K ^C0CRXN(176.002,"ASAA",X(1),$E(X(2),1,30),$E(X(3),1,30),DA)
       Whole Kill:  K ^C0CRXN(176.002,"ASAA")
             X(1):  SAB  (176.002,.1)  (Subscr 1)  (forwards)
             X(2):  ATN  (176.002,.01)  (Subscr 2)  (Len 30)  (forwards)
             X(3):  ATV  (176.002,.11)  (Subscr 3)  (Len 30)  (forwards)
             X(4):  RXCUI  (176.002,.09)  (forwards)

  ASAR (#1026)    RECORD    MUMPS    IR    SORTING ONLY
      Short Descr:  SAB (Source) ATN (Attribute Name) RxCUI Index
        Set Logic:  S ^C0CRXN(176.002,"ASAR",X(1),$E(X(2),1,30),X(3),DA)=X(4)
       Kill Logic:  K ^C0CRXN(176.002,"ASAR",X(1),$E(X(2),1,30),X(3),DA)
       Whole Kill:  K ^C0CRXN(176.002,"ASAR")
             X(1):  SAB  (176.002,.1)  (Subscr 1)  (forwards)
             X(2):  ATN  (176.002,.01)  (Subscr 2)  (Len 30)  (forwards)
             X(3):  RXCUI  (176.002,.09)  (Subscr 3)  (forwards)
             X(4):  ATV  (176.002,.11)  (forwards)

  RXCUI (#1027)    FIELD    REGULAR    IR    LOOKUP & SORTING
      Short Descr:  RXCUI Index
        Set Logic:  S ^C0CRXN(176.002,"RXCUI",X,DA)=""
       Kill Logic:  K ^C0CRXN(176.002,"RXCUI",X,DA)
       Whole Kill:  K ^C0CRXN(176.002,"RXCUI")
             X(1):  RXCUI  (176.002,.09)  (Subscr 1)  (forwards)

NEW-STYLE INDEX LIST -- FILE #176.003                                                                           11/21/13    PAGE 1
-----------------------------------------------------------------------------------------------------------------------------------

NEW-STYLE INDEX LIST -- FILE #176.004                                                                           11/21/13    PAGE 1
-----------------------------------------------------------------------------------------------------------------------------------

NEW-STYLE INDEX LIST -- FILE #176.005                                                                           11/21/13    PAGE 1
-----------------------------------------------------------------------------------------------------------------------------------

File #176.005

  New-Style Indexes:

  B (#1028)    RECORD    REGULAR    IR    LOOKUP & SORTING
      Short Descr:  Compound Index for RXCUI1/RELA/RXCUI2
        Set Logic:  S ^C0CRXN(176.005,"B",X(1),X(2),X(3),DA)=""
       Kill Logic:  K ^C0CRXN(176.005,"B",X(1),X(2),X(3),DA)
       Whole Kill:  K ^C0CRXN(176.005,"B")
             X(1):  RXCUI1  (176.005,.11)  (Subscr 1)  (forwards)
             X(2):  RELA  (176.005,.08)  (Subscr 2)  (forwards)
             X(3):  RXCUI2  (176.005,.05)  (Subscr 3)  (forwards)

NEW-STYLE INDEX LIST -- FILE #176.006                                                                           11/21/13    PAGE 1
-----------------------------------------------------------------------------------------------------------------------------------
Last modified 3 years ago Last modified on Apr 27, 2016, 6:58:32 PM

Attachments (1)

Download all attachments as: .zip