Forge Tools rxnorm

rxnorm read

scidex.forge.rxnorm

Query the NLM RxNorm API for standardized drug names, RxCUI identifiers, and brand↔generic relationships. RxNorm is the normalized drug vocabulary (750K+ concepts) used by FDA, CMS, and EHR systems to canonicalize drug names. Returns the primary RxCUI and canonical name for the queried drug, plus all matching concept variants (ingredient, brand, semantic clinical drug, etc.) with their ingredients and brand name lists. Free NLM API — no authentication required.

HTTP: POST /api/scidex/forge/rxnorm

Invoke

Calls scidex.tool.invoke on the substrate with this tool name. Edit the JSON below — it must match the input schema. The substrate runs the tool, records the call in substrate_tool_calls, and returns a structured envelope.

Sign in to invoke this tool. Schema and curl snippet are visible to anyone.

Schemas

Input schema
{
  "additionalProperties": false,
  "description": "Input schema for ``scidex.forge.rxnorm``.",
  "properties": {
    "query": {
      "description": "Drug name to search. Accepts brand names (e.g. 'Tylenol'), generic names (e.g. 'acetaminophen'), or partial names (e.g. 'aspirin').",
      "title": "Query",
      "type": "string"
    },
    "query_type": {
      "default": "drug_name",
      "description": "Query mode: 'drug_name' (default) — search by drug name.",
      "title": "Query Type",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "description": "Maximum number of drug concepts to return (1–50). Default 10.",
      "maximum": 50,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "ForgeRxnormIn",
  "type": "object"
}
Output schema
{
  "$defs": {
    "RxnormConcept": {
      "description": "One RxNorm drug concept.",
      "properties": {
        "rxcui": {
          "description": "RxNorm Concept Unique Identifier (e.g. '1191').",
          "title": "Rxcui",
          "type": "string"
        },
        "name": {
          "description": "Normalized drug name (e.g. 'Aspirin').",
          "title": "Name",
          "type": "string"
        },
        "term_type": {
          "description": "RxNorm term type code (e.g. 'IN'=ingredient, 'BN'=brand name, 'SCD'=semantic clinical drug, 'SBD'=semantic branded drug).",
          "title": "Term Type",
          "type": "string"
        },
        "ingredients": {
          "description": "Ingredient names for this concept (from related IN-type concepts).",
          "items": {
            "type": "string"
          },
          "title": "Ingredients",
          "type": "array"
        },
        "brand_names": {
          "description": "Brand names for this concept (from related BN-type concepts).",
          "items": {
            "type": "string"
          },
          "title": "Brand Names",
          "type": "array"
        },
        "drug_class": {
          "default": "",
          "description": "Drug class (e.g. 'NSAID'); empty when not available.",
          "title": "Drug Class",
          "type": "string"
        }
      },
      "required": [
        "rxcui",
        "name",
        "term_type"
      ],
      "title": "RxnormConcept",
      "type": "object"
    }
  },
  "description": "Response shape for ``scidex.forge.rxnorm``.",
  "properties": {
    "query": {
      "description": "The drug name that was queried.",
      "title": "Query",
      "type": "string"
    },
    "query_type": {
      "description": "Query mode used.",
      "title": "Query Type",
      "type": "string"
    },
    "primary_rxcui": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "RxCUI of the primary ingredient (IN-type) concept, or the first concept if no IN-type found. None when not_found.",
      "title": "Primary Rxcui"
    },
    "canonical_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Canonical drug name for the primary_rxcui. None when not_found.",
      "title": "Canonical Name"
    },
    "drug_concepts": {
      "description": "All matching drug concepts up to limit, each with term_type, ingredients, and brand_names.",
      "items": {
        "$ref": "#/$defs/RxnormConcept"
      },
      "title": "Drug Concepts",
      "type": "array"
    },
    "not_found": {
      "default": false,
      "description": "True when the query matched no RxNorm concepts.",
      "title": "Not Found",
      "type": "boolean"
    }
  },
  "required": [
    "query",
    "query_type"
  ],
  "title": "ForgeRxnormOut",
  "type": "object"
}

curl snippet

Replace $SCIDEX_JWT with a valid bearer token. Read verbs are usually accessible without auth in dev; production requires a JWT.

curl -sS -X POST '/api/scidex/forge/rxnorm' \
  -H 'authorization: Bearer $SCIDEX_JWT' \
  -H 'content-type: application/json' \
  -d '{
  "query": ""
}'

Discussion

Posting anonymously. Sign in for attribution.

No comments yet — be the first.