Skills

Normalizing Rxnorm

Normalizes drug mentions extracted by OpenMed to RxNorm RxCUIs using the free public...

Install

npx skills add maziyarpanahi/openmed --skill normalizing-rxnorm -g -a claude-code -y
Repository
maziyarpanahi/openmed5.8k
Category
Marketing
Updated
4d ago
License
Apache-2.0
Context cost
Mediumabout 1,800 tokens
Runs scripts
No, instructions only

What it does

Normalizes drug mentions extracted by OpenMed to RxNorm RxCUIs using the free public RxNav/RxNorm REST API. Use when the user wants to code, standardize, or de-duplicate medication names, resolve a brand/generic/ingredient to a stable RxCUI, link strength+dose-form to an SCD/SBD, attach NDCs, or build a US Core Medication resource. Trigger keywords: RxNorm, RxCUI, RxNav, drug normalization, medication coding, NDC, ingredient, SCD, SBD, brand vs generic, getApproximateMatch. Pairs after OpenMed NER: consume Pharmaceutical/Chemical entities from openmed.analyze_text and map each drug span to an RxCUI. RxNorm and RxNav are fully public and free, no API key, no license barrier, the lowest-friction terminology in this set.

Normalizing drug mentions to RxNorm

Map free-text medication mentions that OpenMed extracts to RxNorm, the U.S. National Library of Medicine's normalized drug nomenclature. The unit of meaning is the RxCUI (RxNorm Concept Unique Identifier): a stable integer that ties together brand, generic, ingredient, strength, and dose form.

RxNorm and the RxNav REST API are fully public and free: no API key, no license agreement, no rate-limit registration for normal use. Of every skill in this terminology batch, this one has the highest value-to-friction ratio, start here when grounding medications.

When to use

  • A clinical note names drugs ("metformin 500 mg", "Lipitor", "amox/clav") and you need one stable code per drug for storage, analytics, or interoperability.
  • You must distinguish ingredient ("metformin", IN) from a prescribable product, SCD (Semantic Clinical Drug, generic) or SBD (Semantic Brand Drug), e.g. "metformin 500 MG Oral Tablet".
  • You need to de-duplicate brand/generic synonyms onto one concept.
  • You need NDC codes (package-level) for a product, or a US Core Medication/MedicationRequest coded with RxNorm.

If the source text is non-English or you need ATC/SNOMED links instead, see mapping-to-snomed; RxNorm itself is U.S.-centric.

Quick start (real RxNav API calls)

Base URL: https://rxnav.nlm.nih.gov/REST. No auth. JSON via ?...&... paths ending in nothing or .json depending on endpoint; the REST root returns XML by default, so request JSON explicitly.

import requests

BASE = "https://rxnav.nlm.nih.gov/REST"

def rxcui_for(name: str) -> str | None:
    """Exact-match RxCUI lookup for a normalized drug name."""
    r = requests.get(f"{BASE}/rxcui.json", params={"name": name}, timeout=10)
    r.raise_for_status()
    ids = r.json().get("idGroup", {}).get("rxnormId", [])
    return ids[0] if ids else None
Read the whole SKILL.md on GitHub

More in Marketing