Dashboard

RxNorm API

Look up RxNorm (RxCUI) information for normalized drug names and relationships.

Overview

RxNorm provides normalized names for clinical drugs and links to many drug vocabularies. FHIRfly provides fast lookups against the NLM RxNorm database.

Endpoints

MethodPathDescription
GET/v1/rxnorm/:rxcuiSingle RxCUI lookup
POST/v1/rxnorm/_batchBatch RxCUI lookup (up to 100)
GET/v1/rxnorm/shapesList available response shapes

Single Lookup

Look up acetohexamide by RxCUI

Request
Node.js
import { Fhirfly } from "@fhirfly-io/terminology";

const client = new Fhirfly({ apiKey: "YOUR_API_KEY" });

const result = await client.rxnorm.lookup("173");
console.log(result.data);
Response
JSON
{
  "data": {
    "brand_names": [],
    "ingredients": [],
    "is_prescribable": false,
    "name": "acetohexamide",
    "ndcs": [],
    "rxcui": "173",
    "semantic_types": [
      "Organic Chemical",
      "Pharmacologic Substance"
    ],
    "status": "ACTIVE",
    "tty": "IN"
  },
  "meta": {
    "legal": {
      "attribution_required": false,
      "citation": "RxNorm from NLM. Accessed 2026-01-14 via FHIRfly.",
      "license": "public_domain",
      "source_name": "RxNorm"
    }
  }
}

Term Types (TTY)

Common RxNorm term types:

TTYDescription
INIngredient
SCDSemantic Clinical Drug
SBDSemantic Branded Drug
GPCKGeneric Pack
BPCKBranded Pack
BNBrand Name

Batch Lookup

Look up multiple RxCUIs in a single request (up to 100):

Look up multiple drugs

Request
Node.js
import { Fhirfly } from "@fhirfly-io/terminology";

const client = new Fhirfly({ apiKey: "YOUR_API_KEY" });

const result = await client.rxnorm.lookupMany(["173","38","44"]);
console.log(result.data.results);
Response
JSON
{
  "count": 3,
  "results": [
    {
      "input": "173",
      "rxcui": "173",
      "status": "ok",
      "data": {
        "name": "acetohexamide",
        "tty": "IN",
        "status": "ACTIVE"
      }
    },
    {
      "input": "38",
      "rxcui": "38",
      "status": "ok",
      "data": {
        "name": "Parlodel",
        "tty": "BN",
        "status": "ACTIVE"
      }
    },
    {
      "input": "44",
      "rxcui": "44",
      "status": "ok",
      "data": {
        "name": "mesna",
        "tty": "IN",
        "status": "ACTIVE"
      }
    }
  ],
  "meta": {
    "legal": {
      "license": "UMLS"
    }
  }
}

Batch with shape=full

When using shape=full on batch requests, the response includes meta.source with provenance information:

POST /v1/rxnorm/_batch?shape=full
{
  "count": 3,
  "results": [
    {
      "input": "173",
      "rxcui": "173",
      "status": "ok",
      "data": { "name": "acetohexamide", "tty": "IN", "status": "ACTIVE" }
    }
  ],
  "meta": {
    "source": {
      "name": "RxNorm",
      "url": "https://www.nlm.nih.gov/research/umls/rxnorm/",
      "version": "monthly",
      "fhirfly_updated_at": "2026-03-01T03:00:00Z"
    },
    "legal": {
      "license": "UMLS",
      "attribution_required": false
    }
  }
}

Response Shapes

Control the level of detail in responses with the shape query parameter:

ShapeDescription
compactMinimal data for lists and autocomplete
standardCore structured data (default)
fullComplete data with provenance for AI agents
# Minimal data
GET /v1/rxnorm/173?shape=compact

# Standard data (default)
GET /v1/rxnorm/173?shape=standard

# Full data with provenance
GET /v1/rxnorm/173?shape=full

See Response Shapes for field details.

Drug Class Enrichment

RxNorm concepts include a drug_classes array in standard and full shapes, linking each drug to its RxClass classifications. This provides mechanism of action, physiologic effect, and pharmacologic class information directly on the drug record.

{
  "data": {
    "rxcui": "161",
    "name": "acetaminophen",
    "drug_classes": [
      {
        "class_id": "N0000175722",
        "class_name": "Analgesic",
        "class_type": "EPC",
        "source": "FDASPL"
      },
      {
        "class_id": "N0000000174",
        "class_name": "Decreased Pain Perception",
        "class_type": "PE",
        "source": "MED-RT"
      }
    ]
  }
}

See RxClass API for more details on drug classifications.

Contraindications

RxNorm concepts with known contraindication data include a contraindications array in standard and full shapes. This surfaces drug interaction and safety information directly on the drug record.

{
  "data": {
    "rxcui": "83367",
    "name": "warfarin",
    "contraindications": [
      {
        "concept_name": "Hemorrhagic Disorder",
        "concept_id": "N0000010554",
        "source": "MED-RT",
        "relationship": "CI_with"
      }
    ]
  }
}

Contraindications are derived from MED-RT relationships and are available for drugs that have documented CI_with or CI_PE mappings.

SNOMED CT Enrichment

RxNorm concepts with SNOMED mappings include a snomed array in standard and full shapes, linking drug concepts to SNOMED CT clinical terminology.

{
  "data": {
    "rxcui": "161",
    "name": "acetaminophen",
    "snomed": [
      {
        "concept_id": "387517004",
        "display": "Paracetamol",
        "map_type": "equivalent",
        "map_source": "umls"
      }
    ]
  }
}

See SNOMED CT API for more details.

Required Scopes

  • rxnorm.read - Single and batch lookups