crossmap_icd_meddra
Cross-map medical concepts between ICD-10 and MedDRA coding systems for regulatory submissions and pharmacovigilance.
Instructions
Cross-map between ICD-10 and MedDRA terminology. Provides conceptual mapping guidance for translating diagnoses between coding systems — critical for regulatory submissions, REMS, and pharmacovigilance.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Medical concept to cross-map (e.g. 'depression', 'heart failure', 'neutropenia') | |
| direction | No | Mapping direction | both |
Implementation Reference
- index.js:372-421 (handler)The main handler function for the crossmap_icd_meddra tool. Accepts 'term' and 'direction' params, fetches ICD-10 codes from the NLM API, looks up MedDRA SOC from the curated MEDDRA_PT_SOC dictionary, and returns a formatted cross-map result.
async ({ term, direction }) => { // Fetch ICD-10 codes for the term const icdData = await apiFetch( `${ICD_BASE}/search?sf=code,name&terms=${encodeURIComponent(term)}&maxList=5` ).catch(() => null); const icdEntries = icdData?.[3] || []; const meddra_soc = MEDDRA_PT_SOC[term.toLowerCase()] || Object.entries(MEDDRA_PT_SOC).find(([k]) => k.includes(term.toLowerCase()))?.[1] || "Not found in curated index — verify in MedDRA browser"; let text = `## Cross-Map: "${term}"\n\n`; text += `> ⚠️ There is no official 1:1 ICD-10↔MedDRA mapping. These systems use different granularity and purposes. Use this as guidance only.\n\n`; if (direction !== "meddra_to_icd") { text += `### ICD-10-CM Codes (Diagnosis Coding)\n`; if (icdEntries.length) { text += icdEntries.map(([code, name]) => `- **${code}** — ${name}`).join("\n"); } else { text += `_No ICD-10-CM codes found for this term._`; } text += "\n\n"; } if (direction !== "icd_to_meddra") { text += `### MedDRA (Pharmacovigilance Coding)\n`; text += `- **Preferred Term (PT):** ${term.charAt(0).toUpperCase() + term.slice(1)}\n`; text += `- **System Organ Class (SOC):** ${meddra_soc}\n\n`; } text += `### Key Differences\n`; text += `| | ICD-10-CM | MedDRA |\n`; text += `|--|-----------|--------|\n`; text += `| **Purpose** | Clinical diagnosis billing | Adverse event / safety reporting |\n`; text += `| **Owner** | WHO / CMS | ICH / MSSO |\n`; text += `| **Used in** | EHR, claims, hospitals | FAERS, EudraVigilance, clinical trials |\n`; text += `| **Granularity** | Etiology, site, severity | Clinical manifestation |\n`; text += `| **Update cycle** | Annual (Oct 1) | Biannual (March, September) |\n`; text += `| **Access** | Free (public) | Subscription required |\n\n`; text += `### Regulatory Guidance\n`; text += `- **ICH E2B(R3):** Use MedDRA for ICSRs (individual case safety reports)\n`; text += `- **FDA FAERS:** MedDRA PTs required for adverse event coding\n`; text += `- **EMA EudraVigilance:** MedDRA mandatory for EU safety reporting\n`; text += `- **Clinical trials (CTCAE):** Use NCI CTCAE grading alongside MedDRA PTs\n\n`; text += `_Always consult a trained medical coder or pharmacovigilance specialist for regulatory submissions._`; return { content: [{ type: "text", text }] }; } - index.js:363-371 (schema)Zod schema for the crossmap_icd_meddra tool. Defines 'term' as a required string, 'direction' as an enum (icd_to_meddra, meddra_to_icd, both) with default 'both'.
{ term: z .string() .describe("Medical concept to cross-map (e.g. 'depression', 'heart failure', 'neutropenia')"), direction: z .enum(["icd_to_meddra", "meddra_to_icd", "both"]) .default("both") .describe("Mapping direction"), }, - index.js:360-422 (registration)Tool registration via server.tool('crossmap_icd_meddra', ...) with description about ICD-10 to MedDRA cross-mapping for regulatory submissions, REMS, and pharmacovigilance.
server.tool( "crossmap_icd_meddra", "Cross-map between ICD-10 and MedDRA terminology. Provides conceptual mapping guidance for translating diagnoses between coding systems — critical for regulatory submissions, REMS, and pharmacovigilance.", { term: z .string() .describe("Medical concept to cross-map (e.g. 'depression', 'heart failure', 'neutropenia')"), direction: z .enum(["icd_to_meddra", "meddra_to_icd", "both"]) .default("both") .describe("Mapping direction"), }, async ({ term, direction }) => { // Fetch ICD-10 codes for the term const icdData = await apiFetch( `${ICD_BASE}/search?sf=code,name&terms=${encodeURIComponent(term)}&maxList=5` ).catch(() => null); const icdEntries = icdData?.[3] || []; const meddra_soc = MEDDRA_PT_SOC[term.toLowerCase()] || Object.entries(MEDDRA_PT_SOC).find(([k]) => k.includes(term.toLowerCase()))?.[1] || "Not found in curated index — verify in MedDRA browser"; let text = `## Cross-Map: "${term}"\n\n`; text += `> ⚠️ There is no official 1:1 ICD-10↔MedDRA mapping. These systems use different granularity and purposes. Use this as guidance only.\n\n`; if (direction !== "meddra_to_icd") { text += `### ICD-10-CM Codes (Diagnosis Coding)\n`; if (icdEntries.length) { text += icdEntries.map(([code, name]) => `- **${code}** — ${name}`).join("\n"); } else { text += `_No ICD-10-CM codes found for this term._`; } text += "\n\n"; } if (direction !== "icd_to_meddra") { text += `### MedDRA (Pharmacovigilance Coding)\n`; text += `- **Preferred Term (PT):** ${term.charAt(0).toUpperCase() + term.slice(1)}\n`; text += `- **System Organ Class (SOC):** ${meddra_soc}\n\n`; } text += `### Key Differences\n`; text += `| | ICD-10-CM | MedDRA |\n`; text += `|--|-----------|--------|\n`; text += `| **Purpose** | Clinical diagnosis billing | Adverse event / safety reporting |\n`; text += `| **Owner** | WHO / CMS | ICH / MSSO |\n`; text += `| **Used in** | EHR, claims, hospitals | FAERS, EudraVigilance, clinical trials |\n`; text += `| **Granularity** | Etiology, site, severity | Clinical manifestation |\n`; text += `| **Update cycle** | Annual (Oct 1) | Biannual (March, September) |\n`; text += `| **Access** | Free (public) | Subscription required |\n\n`; text += `### Regulatory Guidance\n`; text += `- **ICH E2B(R3):** Use MedDRA for ICSRs (individual case safety reports)\n`; text += `- **FDA FAERS:** MedDRA PTs required for adverse event coding\n`; text += `- **EMA EudraVigilance:** MedDRA mandatory for EU safety reporting\n`; text += `- **Clinical trials (CTCAE):** Use NCI CTCAE grading alongside MedDRA PTs\n\n`; text += `_Always consult a trained medical coder or pharmacovigilance specialist for regulatory submissions._`; return { content: [{ type: "text", text }] }; } ); - index.js:28-34 (helper)Helper apiFetch function used by the handler to call external NIH NLM APIs.
async function apiFetch(url) { const res = await fetch(url, { headers: { "Accept": "application/json" } }); if (!res.ok) throw new Error(`API error ${res.status}: ${url}`); return res.json(); } - index.js:70-116 (helper)MEDDRA_PT_SOC curated dictionary mapping MedDRA Preferred Terms to System Organ Classes, used for fast lookup in the handler.
const MEDDRA_PT_SOC = { "nausea": "Gastrointestinal disorders", "vomiting": "Gastrointestinal disorders", "diarrhoea": "Gastrointestinal disorders", "diarrhea": "Gastrointestinal disorders", "constipation": "Gastrointestinal disorders", "abdominal pain": "Gastrointestinal disorders", "headache": "Nervous system disorders", "dizziness": "Nervous system disorders", "tremor": "Nervous system disorders", "somnolence": "Nervous system disorders", "seizure": "Nervous system disorders", "insomnia": "Psychiatric disorders", "depression": "Psychiatric disorders", "anxiety": "Psychiatric disorders", "agitation": "Psychiatric disorders", "hallucination": "Psychiatric disorders", "suicidal ideation": "Psychiatric disorders", "rash": "Skin and subcutaneous tissue disorders", "pruritus": "Skin and subcutaneous tissue disorders", "alopecia": "Skin and subcutaneous tissue disorders", "fatigue": "General disorders and administration site conditions", "pyrexia": "General disorders and administration site conditions", "oedema": "General disorders and administration site conditions", "edema": "General disorders and administration site conditions", "dyspnoea": "Respiratory, thoracic and mediastinal disorders", "dyspnea": "Respiratory, thoracic and mediastinal disorders", "cough": "Respiratory, thoracic and mediastinal disorders", "pneumonia": "Infections and infestations", "neutropenia": "Blood and lymphatic system disorders", "thrombocytopenia": "Blood and lymphatic system disorders", "anaemia": "Blood and lymphatic system disorders", "anemia": "Blood and lymphatic system disorders", "hypertension": "Vascular disorders", "hypotension": "Vascular disorders", "tachycardia": "Cardiac disorders", "qt prolongation": "Cardiac disorders", "myocardial infarction": "Cardiac disorders", "alanine aminotransferase increased": "Investigations", "aspartate aminotransferase increased": "Investigations", "weight decreased": "Investigations", "weight increased": "Investigations", "creatinine increased": "Investigations", "renal failure": "Renal and urinary disorders", "hepatotoxicity": "Hepatobiliary disorders", "liver injury": "Hepatobiliary disorders", };