GPI vs ATC: is Medi-Span's GPI better, or just entrenched?
Medi-Span’s Generic Product Identifier is built into US pharmacy claims, formularies and price lists. Some of that is history. Some of it is design: GPI does a few things the open standards don’t do out of the box. We went through them one by one, measured each on our own data, and closed the ones that can be closed.
Short answer
GPI’s real advantage for analytics is design, not just history: it gives every product exactly one class, and it covers new products as soon as the vendor adds them. WHO ATC classifies substances, so a substance with several uses keeps several codes, and RxNorm links new NDCs on a monthly cycle. Both gaps can be closed on open data: a primary ATC code per product from its route, strength and labelled use (we settle 98.2% of classified products this way), and new NDCs linked from the FDA directory. What can’t be closed: medical supplies (not drugs), and systems and contracts already written against GPI codes.
GPI vs ATC and RxNorm at a glance
| Medi-Span GPI | WHO ATC + RxNorm | |
|---|---|---|
| Maintained by | Wolters Kluwer (Medi-Span) | WHO Collaborating Centre (ATC); U.S. National Library of Medicine (RxNorm) |
| Access | Commercial license; codes can't be republished | Free; RxNorm redistributable, ATC codes publishable |
| Code | 14 characters, 7 levels read as prefixes | ATC 7 characters, 5 levels; RxNorm concept IDs per ingredient, form and strength |
| Top-level axis | Therapeutic use (US practice) | Organ system, then therapeutic and chemical (ATC) |
| Lowest level | Product: ingredient, salt, form, strength | ATC: substance. RxNorm: product (clinical drug) |
| Classes per product | One | Several per substance; one per product only once a primary is assigned |
| New products | Updated regularly from the vendor's surveillance of industry data | RxNorm monthly; ATC new codes yearly |
| Supplies and devices | Yes | No |
| Utilization measure | None built in | WHO defined daily dose (DDD) per ATC code |
| Where it's built in | Claims adjudication, formularies and pharmacy systems that use Medi-Span data | US health IT standards and Medicare Part D formulary files (RxNorm); international drug statistics (ATC) |
How do GPI levels line up with ATC and RxNorm?
GPI is one 14-character code read as prefixes. The open stack splits the same ground in two: WHO ATC for the class (five levels, organ system to substance) and NLM RxNorm for the product (ingredient, form, strength, NDC). The structure lines up; the axis at the top does not. Wolters Kluwer’s product pages don’t publish the level layout; the seven levels below are as GPI is commonly documented.
| GPI level (characters) | Open equivalent |
|---|---|
| Drug group (2) | ATC level 1–2: anatomical main group, therapeutic subgroup |
| Drug class (4) | ATC level 3: pharmacological subgroup |
| Drug subclass (6) | ATC level 4: chemical subgroup |
| Base name (8) | ATC level 5 / RxNorm ingredient |
| Name extension (10) — the salt | RxNorm precise ingredient |
| Dosage form (12) | RxNorm clinical drug form |
| Strength (14) | RxNorm clinical drug (SCD) |
Where is GPI better by design?
One class per product
A GPI is one code, so a product sits in exactly one place in its therapeutic hierarchy. ATC is assigned to substances, and a substance with several uses keeps several codes — WHO intends one per product (by route and main use), but nothing in the code set tells you which one a given product takes.
Coded at launch
A commercial compendium adds new NDCs in its regular file updates. RxNorm publishes monthly and the Medicare Part D files catch up later still, so a new generic can be on the market and priced weeks before an open source links its NDC to a drug.
Combinations have their own slots
GPI gives combination products their own base names. WHO's combination codes are coarser, and many US combinations have no exact WHO entry at all.
Supplies and devices
GPI also classifies medical supplies such as diabetic test strips and syringes, which payers adjudicate on the same pharmacy claims. They are not drugs, so neither ATC nor RxNorm covers them.
One string from class to strength
GPI characters are positional, so a drug list can be cut at any level of the 14-character code with a single prefix match — a whole class, one drug, or every brand and generic of one strength. Wolters Kluwer names formulary building and co-pay tiering as core PBM and payer uses.
Why does one drug have several ATC codes?
Before any fix, 3,633 of our drug products (21%) carried more than one ATC code, and about three quarters of those spanned different organ systems. That is not WHO’s design. WHO assigns a product one code, for its route and main therapeutic use. The extra codes come from the usual way ATC reaches US data: through the ingredient, which hands every product of a substance all of the substance’s codes. A lidocaine patch inherits the antiarrhythmic and the eye anaesthetic.
So the open stack’s weakness here is the mapping, not ATC. And a small part of it is real: a product sold for two markets, like methotrexate 2.5 mg for rheumatoid arthritis and cancer, genuinely has two uses. A single class hides that; a primary code with the other valid codes kept beside it, and the product’s indication mix one join away, does not.
How does a product get one primary ATC code?
The same order every time. First the route: a code the product’s dose form can’t take is out. Then structure: a single substance takes its plain entry over a “combinations” entry, and a contraceptive pack is fixed or sequential by its tablets. Where codes for different uses are still left, WHO’s strength convention decides first, then the product’s US label, and only then how the product is actually dispensed. Off-label use never outranks the label: misoprostol tablets stay in the ulcer-prevention group however much of their use is obstetric. Where none of this settles it, the product gets no primary rather than a guess.
| Product | Codes inherited | Primary |
|---|---|---|
| lidocaine 5% patch | 7 | D04AB01 anesthetics for topical use |
| timolol 0.5% eye drops | 2 | S01ED01 antiglaucoma beta blocker |
| timolol 10 mg tablet | 2 | C07AA06 beta blocker, non-selective |
| hydrocortisone 1% cream | 9 | D07AA02 corticosteroid, weak |
| dexamethasone 1.5 mg tablet | 11 | H02AB02 glucocorticoid, systemic |
| finasteride 1 mg tablet | 2 | D11AX10 hair loss (dermatological) |
| finasteride 5 mg tablet | 2 | G04CB01 benign prostatic hyperplasia |
| aspirin 81 mg vs 325 mg tablet | 3 | B01AC06 / N02BA01 antiplatelet / analgesic |
Which GPI advantages can an open stack close?
One class per product
Each product's codes are filtered to the ones its dose form's route allows, single substances drop WHO's "combinations" entries, packs follow their structure (fixed vs sequential contraceptives, placebo-week iron), and the branch built for the route wins (a skin cream is dermatological, not haemorrhoidal). Products whose route still allows codes for different uses are reviewed against their strength and indication mix. The result is a primary code per product, with every other valid code kept.
Rules settle 2,732 of the 3,633 products that carried more than one code; review settles 639 more. 14,452 of 14,714 classified products (98.2%) now have a primary code; the rest keep all their codes and no primary rather than a guess.
Coded at launch
New NDCs in the FDA NDC Directory (updated daily) are linked to the clinical drug that FDA products with identical ingredients, strengths, dose form and route already lead to — exact matches only, replaced as soon as RxNorm or Part D maps the NDC.
662 of 29,947 NDCs priced in the latest NADAC week had no drug concept, most of them new generic launches. The FDA match links 430 of them, leaving 232.
Combinations
WHO's own combination entries matched on the exact ingredient set, then WHO's combination rules applied to the sets it does not name, then packs inherit from their components.
84% of products carry an ATC code, combinations included; 86% of those WHO classifies at all.
Products WHO names differently
A curated alias list for single substances WHO names differently from RxNorm (thyroid USP → thyroid gland preparations, psyllium → ispaghula), route-specific where WHO splits by route.
Products WHO gives no code at all (menthol rubs, petrolatum, coal tar) are flagged rather than forced into one.
The salt, and what the strength measures
Each product carries its precise ingredient from RxNorm (metoprolol succinate vs metoprolol tartrate) and the substance its labelled strength measures: the salt for levothyroxine sodium, the base for amlodipine besylate (5 mg is 5 mg of amlodipine), the element for iron and fluoride salts.
7,310 of 17,504 products hold a salt or ester rather than the base substance. The drug name alone misses it whenever the strength is stated on the base.
One string from class to strength
With one primary code per product, ATC levels 1–5 plus RxNorm's ingredient → precise ingredient → clinical drug form → clinical drug give the same walk, as columns instead of a string.
Joins on open identifiers you can publish and share.
What doesn’t close?
- Medical supplies and devices. Test strips and syringes are not drugs; RxNorm and ATC don’t cover them.
- Therapeutic equivalence. Neither a GPI-14 nor an RxNorm clinical drug encodes FDA’s Orange Book ratings; products sharing either can still differ in rating.
- Systems built on GPI. Wolters Kluwer says its data runs claims adjudication and formulary maintenance at 17 of the 20 top-grossing PBMs and 95% of the top 20 health plans. Systems keyed on GPI need GPI; an open crosswalk can feed analytics around them, not replace them.
Where are ATC and RxNorm better?
- Open. RxNorm is free and redistributable; ATC codes can be published. GPI is licensed, and its codes and mappings can’t be shared outside the license.
- The US interoperability standard. RxNorm is the drug terminology of US health IT standards, and Medicare Part D formularies are submitted in RxNorm codes.
- Secondary uses stay visible. ATC keeps every use of a substance; a primary code on top gives one class without discarding the rest.
- Utilization measures. ATC pairs with WHO defined daily doses, the standard unit for comparing drug use across products and countries.
- Public rules. WHO publishes how codes are assigned; anyone can check a classification against them.
Frequently asked questions
What is the difference between GPI and ATC?
The Medi-Span Generic Product Identifier (GPI) is a licensed 14-character code from Wolters Kluwer that classifies a US drug product from therapeutic group down to strength; as one positional code, it places each product in exactly one spot in its hierarchy. The WHO Anatomical Therapeutic Chemical (ATC) code is a free, international 7-character code that classifies a substance from organ system down to chemical substance; it stops at the substance, so form and strength come from a product terminology such as RxNorm.
Can ATC and RxNorm replace GPI?
For classification and analytics, largely yes, once each product is given one primary ATC code and NDCs are linked to RxNorm drugs promptly; together they cover GPI's levels from class down to strength. They do not cover medical supplies and devices, and they will not replace GPI inside claims, formulary and pharmacy systems built on Medi-Span data. The two also meet: Wolters Kluwer maps its own data to standard code sets such as RxNorm.
Why does one drug have several ATC codes?
WHO classifies a substance by each of its uses and routes, so a substance can carry several codes (timolol is both an oral beta blocker and an antiglaucoma eye drop). WHO intends one code per product, by route and main therapeutic use. Crosswalks that map ATC through the ingredient give every product all of its substance's codes; picking the product's own code needs its route, strength and use.
Is there a free alternative to Medi-Span GPI?
There is no free code with GPI's exact structure. The open equivalent is WHO ATC for the therapeutic class combined with NLM RxNorm for ingredient, dose form, strength and NDC links. RxNorm is free; WHO ATC can be looked up free online and is available through NLM's RxClass.
What do GPI-10, GPI-12 and GPI-14 mean?
They are prefixes of the 14-character GPI, whose positional characters let a drug list be built at any level. As the levels are commonly documented, the first 10 characters identify the drug including its salt, the first 12 add the dosage form, and all 14 add the strength. In RxNorm the closest equivalents are the precise ingredient, the clinical drug form and the clinical drug.
How do you give each drug one ATC code?
Start from every code the product's substance carries, then apply WHO's own principle of one code per route and main use: drop codes the product's route can't take (an eye-drop code on a tablet), prefer the plain entry over a combinations entry for a single substance, follow pack structure for contraceptive packs, and where codes for different uses remain, decide by WHO's strength convention, then the US label, then how the product is actually dispensed. Leave the product without a primary when the evidence doesn't settle it rather than guess.
Does every drug have an ATC code?
No. WHO assigns codes on request and mostly to products with international use, so many US-only combinations and many over-the-counter products (skin protectants, rubs, supplements) have none. A crosswalk should flag those as having no WHO code instead of forcing one, and can fill some gaps from Health Canada, which publishes an ATC code for every marketed product.
Which is better for formulary and drug spend analysis?
GPI is convenient where systems already use it, because one string match selects a class, a drug or a product. ATC with RxNorm gives the same groupings with open identifiers that can be shared and published, keeps secondary uses visible, and pairs with WHO defined daily doses for utilization measures.
Sources
- WHO Collaborating Centre for Drug Statistics Methodology — ATC structure and principles
- U.S. National Library of Medicine — RxNorm
- U.S. National Library of Medicine — RxClass
- Wolters Kluwer — Medi-Span Generic Product Identifier
- Wolters Kluwer — Medi-Span for payers and pharmacy benefit managers
- Wolters Kluwer — Medi-Span for healthcare providers and EMRs
- U.S. FDA — National Drug Code Directory
Medi-Span and Generic Product Identifier (GPI) are trademarks of Wolters Kluwer. TwinFyRx is not affiliated with Wolters Kluwer; GPI facts on this page come from its public materials as of 2026-10-05. TwinFyRx figures are measured on its production data on the same date.
In TwinFyRx
drug_atc keeps every ATC code a product carries and marks its primary; drug_profile carries the primary code next to the RxNorm hierarchy. See what ATC is, what RxNorm is and how drugs map to indications.