Section 2.2: Code Sets and Terminologies
A deep dive into the “universal languages” of health data. We’ll master RxNorm for medications, SNOMED CT for clinical findings, LOINC for lab tests, and ICD-10 for diagnoses.
Code Sets and Terminologies
Learning the grammar and vocabulary of interoperable health information.
2.2.1 The “Why”: From Ambiguity to Precision
In your pharmacy practice, you are a master of managing ambiguity. A patient says they take “the little blue water pill.” A doctor’s office faxes a handwritten prescription for “MS 15mg PO Q4H PRN.” You use your clinical knowledge, experience, and contextual clues to translate these ambiguous statements into a precise, verifiable medication order. You are the human engine of interoperability. But this process, while a testament to your skill, is not scalable and is fraught with inherent risk. What if “the little blue water pill” was triamterene/HCTZ and not furosemide? What if “MS” was misinterpreted as magnesium sulfate instead of morphine sulfate?
The entire field of health informatics is, in many ways, an attempt to solve this single, monumental problem: how can we represent clinical information in a way that is completely unambiguous to a computer? If we can solve this, we can build systems that automatically check for errors, identify trends, and share information seamlessly between providers, hospitals, and even countries, without the risk of misinterpretation. This is the “why” behind standardized code sets and terminologies. They are the agreed-upon dictionaries and grammar books that allow different computer systems to have a meaningful conversation about a patient’s health.
Think of these terminologies not as a technical burden, but as the most powerful safety tool in your informatics arsenal. They are the foundation upon which every advanced feature is built. An automated allergy check is impossible if the EHR doesn’t have a specific code for “penicillin.” A report on A1c control in diabetic patients is meaningless if one system records the lab test with one name and a second system uses another. In the previous section, we learned about the “filing cabinets” (databases) where data is stored. In this section, we will learn about the precise, standardized labels that must be on every file within those cabinets to make the system work. Mastering these “languages”—RxNorm for drugs, SNOMED CT for clinical ideas, LOINC for labs, and ICD-10 for diagnoses—is the transition from being a skilled user of health information to being an architect of it.
Retail Pharmacist Analogy: The Universal Product Code (UPC)
Imagine your pharmacy before the invention of the barcode. To do inventory, you would have a clipboard with product descriptions: “Tylenol Extra Strength 100ct,” “Bayer Aspirin 325mg 200ct,” etc. Your wholesaler might use slightly different descriptions. A report on your top sellers would be a manual, error-prone process. The same product might be entered with ten different variations of its name, making accurate analysis impossible.
Now, consider the Universal Product Code (UPC). That 12-digit number beneath the barcode is a standardized, universal, and completely unambiguous identifier for a specific product. A bottle of Tylenol Extra Strength 100ct has the exact same UPC in your pharmacy as it does in a grocery store across the country. This simple standard revolutionized retail for several key reasons:
- Speed & Accuracy: A scanner is infinitely faster and more accurate than a human typing a name.
- Inventory Management: It enables precise, real-time tracking of stock levels.
- Data Analysis: It allows for powerful analysis. A company can track the sales of a specific UPC across thousands of stores to understand market trends.
- Interoperability: It allows your point-of-sale system to communicate flawlessly with your wholesaler’s ordering system.
RxNorm, SNOMED, LOINC, and ICD-10 are the UPCs of healthcare. RxNorm is the UPC for every clinical drug. LOINC is the UPC for every lab test. SNOMED is the UPC for every clinical idea, from “sore throat” to “total knee replacement.” ICD-10 is the UPC for every billable diagnosis. Your job as a pharmacist has always been to ensure the right medication gets to the patient. Your new job as an informaticist is to ensure the right “UPC” is attached to every piece of health data, so that our systems can finally operate with the same level of safety, efficiency, and interoperability as a modern supermarket.
2.2.2 RxNorm: The Universal Language of Medications
We begin with the terminology that is most central to your expertise: RxNorm. Developed and maintained by the National Library of Medicine (NLM), RxNorm is the designated standard for medications in the United States. Its purpose is to be a normalized naming system for clinical drugs and to support semantic interoperability. In simpler terms, RxNorm’s job is to make sure that “Lisinopril 10mg Oral Tablet,” “Prinivil 10mg Oral Tablet,” and “Zestril 10mg Oral Tablet” can all be understood by a computer as representing the same fundamental clinical concept.
The RxNorm Concept Unique Identifier (RxCUI)
The heart of RxNorm is the RxCUI, a unique integer that serves as the identifier for a single concept. Every concept in RxNorm, whether it’s an ingredient, a brand name, or a specific clinical drug, has its own unique RxCUI. This is the “UPC” we discussed. When two systems are exchanging medication information, they don’t need to worry about name variations. If they both send the RxCUI, they are guaranteed to be talking about the same thing.
The Building Blocks: RxNorm Atom Types (TTYs)
RxNorm achieves its power by breaking down the idea of a “drug” into its component parts, or “atoms.” Each atom has a specific Term Type (TTY). Understanding these TTYs is the key to mastering RxNorm. While there are many TTYs, we will focus on the most important ones for a pharmacist.
Visualizing the RxNorm Hierarchy
Think of RxNorm as a pyramid. At the very top, you have the most general concept (the ingredient). As you move down the pyramid, you add more specific details (dose form, strength, brand name) until you reach a specific, dispensable product. Each level of this pyramid corresponds to a different set of TTYs.
Ingredient (IN)
Lisinopril [RxCUI: 29046]
Semantic Clinical Drug (SCD)
Lisinopril 10 MG Oral Tablet [RxCUI: 311044]
Semantic Branded Drug (SBD)
Prinivil 10 MG Oral Tablet [RxCUI: 312563]
Semantic Branded Drug (SBD)
Zestril 10 MG Oral Tablet [RxCUI: 314126]
Masterclass Table: Core RxNorm Term Types (TTYs)
| TTY | Term Type Name | Description | Pharmacist’s Viewpoint & Example |
|---|---|---|---|
| IN | Ingredient | The active ingredient of a drug, without any strength or dose form information. This is the highest level of abstraction. | This is what you use for drug-class based alerting. Example: Lisinopril [RxCUI: 29046]. An alert for “ACE Inhibitors” would be built on a list of IN concepts. |
| SCD | Semantic Clinical Drug | The most important concept for clinical use. It represents the Ingredient + Strength + Dose Form. It is brand-agnostic. | This is the level at which most clinical decisions are made and most orders are written. It is the concept of a “generic” drug. Example: Lisinopril 10 MG Oral Tablet [RxCUI: 311044]. |
| BN | Brand Name | A commercial brand name for a drug. It is linked to the ingredient(s). | This is the name the patient or provider might use. Example: Prinivil [RxCUI: 10582]. RxNorm knows that Prinivil’s ingredient is Lisinopril. |
| SBD | Semantic Branded Drug | This represents a specific branded product: Brand Name + Ingredient + Strength + Dose Form. | This is the brand-name equivalent of an SCD. It’s how you link a specific brand to its generic clinical concept. Example: Prinivil 10 MG Oral Tablet [RxCUI: 312563]. |
| GPCK | Generic Pack | A non-branded drug package, typically containing multiple medications. | This is for combination products or kits. Example: Tri-Lo-Marzia (a multi-phasic oral contraceptive pack). |
| BPCK | Branded Pack | A branded drug package, such as a manufacturer’s retail box. | This is the specific package you would dispense. Example: Z-Pak [RxCUI: 214197], which contains specific tablets of Azithromycin. |
The Power of Relationships: Solving Therapeutic Duplication
The true power of RxNorm isn’t just the codes themselves, but the rich network of relationships that connect them. An SCD concept like “Lisinopril 10 MG Oral Tablet” has relationships pointing to its ingredient (“Lisinopril”), and multiple SBD concepts like “Prinivil 10 MG Oral Tablet” and “Zestril 10 MG Oral Tablet” have relationships pointing back to it.
Scenario: A patient is admitted. The medication history from their outpatient clinic’s EHR is electronically transmitted and contains an active medication: RxCUI 312563 (Prinivil 10 MG Oral Tablet). In the hospital, a physician writes a new order for RxCUI 311044 (Lisinopril 10 MG Oral Tablet).
Without RxNorm: A simple computer system would see two different strings of text (“Prinivil 10 MG…” vs. “Lisinopril 10 MG…”) and might not recognize them as a duplication.
With RxNorm: An intelligent CDS system can instantly see that both RxCUIs share the same ancestor concept: the SCD “Lisinopril 10 MG Oral Tablet”. It recognizes this as a potential therapeutic duplication and fires a high-priority alert to the pharmacist and physician. This is the essence of semantic interoperability, and it is a direct result of the structured, relational nature of the RxNorm terminology.
2.2.3 SNOMED CT: The “Google” of Clinical Medicine
If RxNorm is the comprehensive dictionary for medications, then SNOMED CT (Systematized Nomenclature of Medicine – Clinical Terms) is the encyclopedia for everything else in healthcare. It is a massive, multinational, and multilingual terminology designed to represent virtually any clinical idea, from a patient’s complaint to a complex surgical procedure. While you, as a pharmacist, will live primarily in the world of RxNorm, you must understand SNOMED because it provides the essential clinical context for every medication order.
Why is a patient on lisinopril? Because they have the SNOMED concept “Hypertension.” Why was an EpiPen ordered? Because the patient has a history of “Anaphylaxis” (a SNOMED concept) due to an “Allergy to peanuts” (another SNOMED concept). SNOMED provides the structured language to document these clinical realities in a way a computer can understand and act upon.
The Three Pillars of SNOMED CT
SNOMED’s architecture is built on three core components:
- Concepts: A concept is a unique clinical idea, represented by a numeric SNOMED CT ID. There are over 350,000 concepts, organized into hierarchies like “Clinical finding,” “Procedure,” “Body structure,” and “Substance.”
- Descriptions: Each concept has multiple descriptions, or text-based ways of referring to it. For example, the concept for “Myocardial infarction” has descriptions like “Heart attack” (a synonym) and “MI” (an abbreviation). This allows clinicians to use familiar language while the system stores the data under a single, unambiguous concept ID.
- Relationships: This is where SNOMED’s true power lies. Concepts are linked to each other through a network of defined relationships. For example, the concept “Viral pneumonia” has an
is_arelationship to “Pneumonia” and acausative_agentrelationship to “Virus.” This rich network allows for very sophisticated data queries (e.g., “Find all patients with any type of infectious lung disease”).
A Pharmacist’s View of the SNOMED Hierarchy
Let’s look at how a clinically relevant idea is structured. The power of the hierarchy is that you can query at any level. You can search for the specific concept “Allergy to penicillin” or for the much broader parent concept “Allergic condition” to find all patients with any documented allergy.
-
Clinical finding
-
Disease
-
Allergic condition
-
Drug allergy
- Allergy to penicillin
-
Drug allergy
-
Allergic condition
-
Disease
Why SNOMED Matters for Medication Safety: Structuring Allergy Data
The “free text allergy” problem we discussed in the previous section is solved by SNOMED. A properly designed EHR doesn’t just have a text box for allergies. It uses SNOMED to capture three discrete pieces of information:
- The Substance: The specific allergen is coded using a SNOMED concept from the “Substance” hierarchy (e.g., the concept for “Penicillin”).
- The Reaction: The specific manifestation is coded using a SNOMED concept from the “Clinical finding” hierarchy (e.g., “Hives,” “Anaphylaxis,” “Nausea”).
- The Criticality: A flag indicating the severity (e.g., Mild, Moderate, Severe).
When this structured data is captured, you can build incredibly powerful and precise CDS rules. You can build a rule that fires a “hard stop” alert if a patient with a documented “Anaphylaxis” reaction to “Penicillin” is ordered any drug belonging to the penicillin class. You can build a different, less severe “warning” alert if a patient with a “Nausea” reaction is ordered the same drug. This level of nuanced safety is impossible without the granularity provided by SNOMED CT.
2.2.4 LOINC & ICD-10: Coding the Observations and Diagnoses
Rounding out our core set of terminologies are LOINC, which covers the “what did we find?” part of medicine, and ICD-10, which covers the “what do we call it for billing?” part.
LOINC: The Universal Language of Labs
Logical Observation Identifiers Names and Codes (LOINC) is the standard for lab tests, clinical measurements (like vital signs), and other observations. Its purpose is to solve the same problem RxNorm solves for drugs: a hospital’s internal lab system might call a test “K+”, “Serum Potassium”, or “Potassium, S”. LOINC provides a single, universal code that represents the exact same test regardless of who is performing it. Every LOINC code is defined by 6 main parts that leave no room for ambiguity.
Masterclass Table: Deconstructing a LOINC Code
Let’s deconstruct the LOINC code for a common and critically important lab test for pharmacists: the INR for a patient on warfarin.
| Part | Description | Example Value for INR Test | Pharmacist’s Interpretation |
|---|---|---|---|
| Component | What is being measured? | INR |
We are measuring the International Normalized Ratio. |
| Property | What characteristic of the component is being measured? | Tme Rto (Time Ratio) |
We are measuring a ratio based on time. |
| Time Aspect | Is it a point-in-time measurement or over a duration? | Pt (Point in time) |
This is a snapshot, not a 24-hour collection. |
| System | What is the specimen or subject? | BldP (Blood, Platelet poor plasma) |
The test is performed on platelet poor plasma from a blood sample. |
| Scale | How is the result expressed? Quantitative, Qualitative, etc. | Qn (Quantitative) |
The result will be a number (e.g., 2.5). |
| Method | What technique was used? (Optional) | Coag (Coagulation) |
This was a coagulation method. |
|
Resulting LOINC Code for INR: 6301-6 INR in Platelet poor plasma by Coagulation method |
|||
Why this matters: By using the LOINC code 6301-6, an anticoagulation management clinic can electronically receive lab results from five different commercial labs and have their system automatically interpret every single one correctly, triggering alerts for sub- or supra-therapeutic values without any human intervention or risk of misinterpretation.
ICD-10-CM: The Language of Billing and Classification
Finally, we have the International Classification of Diseases, 10th Revision, Clinical Modification (ICD-10-CM). While SNOMED is used to capture the rich detail of a clinical encounter, ICD-10 is used to classify that encounter into a standardized category for the purposes of billing, public health surveillance, and statistical analysis. It is the code that goes on the insurance claim.
As a pharmacist, you won’t typically be assigning ICD-10 codes, but you will constantly be working with them. They are often required on prior authorization forms to justify the medical necessity of a drug. A patient’s list of ICD-10 codes provides a concise, if not clinically detailed, summary of their major health problems.
2.2.5 The Grand Unification: A Patient Encounter in Four Languages
The true power—and complexity—of health informatics comes from how these terminologies work together to paint a complete, structured picture of a patient’s care. No single terminology is sufficient on its own. They are designed to be a complementary ecosystem. Let’s walk through a single, common clinical scenario and see how each code set plays its critical role.
Patient Case: Managing Type 2 Diabetes
Scenario: A 65-year-old male patient, John Smith, comes to his primary care physician for a routine follow-up for his diabetes.
1. The Clinical Encounter (Documented with SNOMED CT)
The physician documents the encounter in the EHR. A well-designed system will capture this information as discrete SNOMED concepts, not just free text.
- History of Present Illness: “Patient reports good adherence to medications.” (This would likely remain as text, but could be linked to concepts).
- Review of Systems: Patient denies “polyuria” (SNOMED CT ID: 28442001) and “polydipsia” (SNOMED CT ID: 17173007).
- Physical Exam: “Foot examination” (SNOMED CT ID: 401191008) performed, findings are normal.
- Assessment: The primary issue remains “Type 2 diabetes mellitus” (SNOMED CT ID: 44054006).
2. The Lab Orders & Results (Coded with LOINC)
Based on the assessment, the physician orders labs to monitor the patient’s condition.
- Order: “Hemoglobin A1c/Hemoglobin.total in Blood” (LOINC Code: 4548-4).
- Order: “Creatinine in Serum or Plasma” (LOINC Code: 2160-0).
- Result: The lab returns a value of “7.8%” for LOINC code 4548-4 and “1.1 mg/dL” for LOINC code 2160-0.
3. The Medication Orders (Normalized with RxNorm)
The physician decides to add a new medication based on the A1c result.
- Discontinue Order: Stop “glipizide 5 MG Oral Tablet” (Represents RxNorm SCD: 310489).
- New Order: Start “Empagliflozin 10 MG Oral Tablet” (Represents RxNorm SCD: 1541334). The brand name selected is Jardiance, which corresponds to the SBD.
4. The Billing and Diagnosis (Classified with ICD-10-CM)
At the end of the visit, the billing department generates a claim based on the physician’s documentation.
- The SNOMED concept “Type 2 diabetes mellitus” is mapped to the billable ICD-10 code. Because the A1c is not well-controlled, the most appropriate code is E11.65: Type 2 diabetes mellitus with hyperglycemia.
The Result: A complete, structured, and interoperable record of the patient encounter has been created. Another system can now receive this data and know, without ambiguity, the patient’s diagnosis, their latest lab values, and their precise medication regimen. This is the foundation of modern, data-driven healthcare.