AgentSkillsCN

map-drugs

药品与 RxNorm 标准概念映射的一般原则。涵盖映射类型(精确/宽泛)、术语适配、单位换算,以及常见陷阱。

SKILL.md
--- frontmatter
name: map-drugs
description: General principles for mapping pharmaceutical products to RxNorm standard concepts. Covers mapping types (EXACT/BROAD), terminology adaptation, unit conversions, and common pitfalls.
user-invocable: false

Map Drugs to RxNorm

General principles for mapping pharmaceutical products to RxNorm standard concepts.

When to Use

When asked to map a product to RxNorm, create or review a mapping.tsv, or find RxNorm concepts for a drug.

Related Skills

  • find-concepts - Search for RxNorm concepts using the semantic search API
  • map-ema-drugs - Map EMA centrally authorised products to RxNorm
  • map-latvia-drugs - Map Latvian national products to RxNorm

General Mapping Principles

These apply across all data sources:

Mapping Types

  • EXACT: Matches active ingredient, strength, and dose form. Do NOT use US-only brand names - RxNorm contains US brands which may differ from EU names. Use unbranded concepts unless the brand is the same in both EU and US (e.g., Twinrix, Lantus). Minor label variations do not constitute a brand difference — if the base brand name matches, the branded RxNorm concept is appropriate. This includes suffixes like "Velotab", "DIF", "Ellipta", "Control", "Maintena", qualifiers like "Adult"/"Paediatric", and other sub-brand or formulation descriptors added to the same base brand.
  • BROAD: Less specific match. Use when only a concept without specific strength/volume is available, or for vaccines/biologicals with less granular RxNorm coverage. When choosing between multiple BROAD candidates, pick the one that preserves the most clinically relevant information — dose (strength + volume) matters more than device/form differences. For example, 0.5 ML etanercept 50 MG/ML Prefilled Syringe is preferred over etanercept 50 MG/ML Auto-Injector for a 25 mg pen injector, because the volume distinguishes the 25 mg dose from the 50 mg dose.

Terminology Adaptation

EMA/EU terminology must be adapted to RxNorm conventions:

  • "film-coated tablet" / "tablet" -> "oral tablet"
  • "solution for injection" -> "injectable solution" or "injection"
  • "capsule, hard" -> "oral capsule"

Dose Form Selection

The find-concepts script returns dose form definitions alongside search results — use these to select the correct form. Key distinction for injectables include:

  • Injectable Solution: multi-use product (e.g., vials intended for multiple withdrawals)
  • Injectable Suspension: multi-use product (e.g., vials intended for multiple withdrawals)
  • Injection: single-use product
  • Prefilled Syringe: single-use solution in a syringe

Precision: Volume-specific vs Generic Concepts

Always select the most precise concept that is correct:

  • Single-use products (ampoules, prefilled syringes): the volume is part of the dose and clinically relevant. If a volume-specific concept exists and matches (e.g., 2 ML ondansetron 2 MG/ML Injection), use it — this is EXACT. If no volume-specific concept exists, use the concentration-only concept (e.g., ondansetron 2 MG/ML Injection) — BROAD if ingredient, strength, and form match.
  • Multi-use products (vials): usually only the concentration matters, not the container volume. There will usually only be concentration-only concepts available, these are EXACT.
  • If you can only find a less specific concept (e.g., missing clinically relevant strength or form), the mapping is BROAD, not EXACT.

Common Pitfalls

  • Concentration vs total dose: EMA lists both; RxNorm may express as concentration and/or total volume
  • Biologicals/vaccines: BROAD mapping acceptable when exact match unavailable
  • Multiple strengths: Different strengths must map to different RxNorm concepts
  • Base to salt conversions: Check weight_conversions.tsv in this skill directory when in doubt
  • Metered vs actuated dose: Verify via SmPC/FDA labelling, add sources.md if needed
  • Pack sizes: Different pack sizes of the same drug map to the same RxNorm concept
  • Unit conversion: IU = UNT, RxNorm uses MG not µg or MCG

Output Format

Create mapping.tsv in the product folder with these columns:

ColumnDescription
<source_id>Source-specific ID (e.g., ma_number for EMA, product_id for Latvia)
concept_idRxNorm concept_id from search results
concept_nameRxNorm concept_name from search results
concept_codeRxNorm concept_code from search results
mapping_typeEXACT, BROAD, or empty
commentOptional note explaining the mapping decision
suggestionIdeal concept name when no exact match exists
last_updated_dateDate in YYYY-MM-DD format

See source-specific skills (map-ema-drugs, map-latvia-drugs) for the exact ID column name and any additional rules.

Validation

After creating or editing any mapping.tsv, validate it:

bash
python3 skills/map-drugs/validate_mapping.py <path_to_mapping.tsv>

This checks header columns, date format, concept_id type, and mapping_type values.

Biosimilars

Reference Data

Check skills/map-drugs/biosimilars/ for per-INN reference files listing known biosimilars with FDA names and EU equivalents.

Search Strategy

Run all of these queries:

  1. EU biosimilar brand name
  2. INN + strength + form with brand
  3. INN + strength + form (unbranded)
  4. INN alone (to discover FDA-suffixed variants)

Scenario 1: FDA-suffixed INN exists in RxNorm

Map to the unbranded FDA-suffixed concept with mapping_type = EXACT. Do NOT use US-branded concepts.

Example: Insulin aspart Sanofi (EU) = insulin aspart-szjj (FDA):

  • concept_name: 3 ML insulin aspart-szjj 100 UNT/ML Pen Injector
  • mapping_type: EXACT

Scenario 2: No FDA equivalent

Map to the plain INN (unbranded) concept with mapping_type = BROAD, and construct the suggestion:

code
<volume> <INN>-xxxx <strength> <dose_form> [<EU Brand Name>]

Example: Izamby (denosumab biosimilar, 60 MG/ML, 1 ML prefilled syringe):

  • concept_name: 1 ML denosumab 60 MG/ML Prefilled Syringe
  • mapping_type: BROAD
  • suggestion: 1 ML denosumab-xxxx 60 MG/ML Prefilled Syringe [Izamby]

Important

  • Do NOT use US brand names when EU has different name (e.g., [Merilog], [Zarxio])
  • Do NOT use the originator brand for non-originator drug (e.g., [Prolia], [Xgeva])