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

Method Path Description
GET /v1/rxnorm/:rxcui Single RxCUI lookup
POST /v1/rxnorm/_batch Batch RxCUI lookup (up to 100)
GET /v1/rxnorm/shapes List 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:

TTY Description
IN Ingredient
SCD Semantic Clinical Drug
SBD Semantic Branded Drug
GPCK Generic Pack
BPCK Branded Pack
BN Brand 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:

Shape Description
compact Minimal data for lists and autocomplete
standard Core structured data (default)
full Complete 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.

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