{"id":87805,"plugin_id":"plugin_asdk_app_6aece7f7d7b881919fb25c6fcaaabc21","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-09T18:09:06.092Z","digest":"4915a27029c4d6f054def466809dc8b8f45a51f1b3516de668f4703935c93542","against":null,"payload":{"description":"Normalize clinical terms to standard IMO terminology across Problem, Procedure, Medication, and Lab domains using Precision Normalize (PPML)","included_files":[],"name":"imo-normalize","skill_md_contents":"---\r\nname: imo-normalize\r\ndescription: Normalize clinical terms to standard IMO terminology across Problem, Procedure, Medication, and Lab domains using Precision Normalize (PPML)\r\nwhen_to_use: Use when the user wants to normalize, standardize, or map a free-text clinical term to IMO's standard clinical terminology. Triggers on words like \"normalize\", \"standardize\", \"map term\", \"what's the standard name for\", or when a raw clinical term needs to be resolved to an IMO concept.\r\nuser-invocable: true\r\n---\r\n\r\n# Normalization\r\n\r\nResolve free-text terms to standardized IMO terminology across four domains. **1 tool.**\r\n\r\n## `normalize_ppml___normalize_ppml_term`\r\n\r\n**When to use:** Use when the user wants a canonical standardized term or needs an IMO lexical code for a downstream lookup. Split a mixed-domain list into separate calls.\r\n\r\n### Purpose, documented response, and behavior\r\n\r\nNormalize medical terms using the IMO Precision Normalize API across Problem, Procedure, Medication, and Lab domains.\r\n\r\nSend one or more medical terms and receive raw normalization results from the API.\r\nFor Medication domain, returns 20 results per term. For Problem, Procedure, and Lab domains, returns 1 result per term.\r\n\r\n### Input arguments exposed by the connected MCP tool\r\n\r\nHost-visible tool: `mcp__imo_health__normalize_ppml___normalize_ppml_term`.\r\n\r\nThe following argument type and parameter comments are copied verbatim from the connected tool definition. Fields marked `?` are optional; fields without `?` are required. Pass the argument object matching this definition.\r\n\r\n```typescript\r\ntype Input = {\r\n  // The domain of the medical terms. Must be one of: 'Problem', 'Procedure', 'Medication', 'Lab'.\r\n  domain: string;\r\n  // List of medical terms to normalize (e.g., ['diabetes', 'chest pain', 'amoxicillin', 'CBC'])\r\n  terms: Array<string>;\r\n};\r\n```\r\n\r\n### Documented input schema (JSON Schema)\r\n\r\n```json\r\n{\r\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\r\n  \"title\": \"normalize_ppml___normalize_ppml_term\",\r\n  \"type\": \"object\",\r\n  \"properties\": {\r\n    \"domain\": {\r\n      \"type\": \"string\",\r\n      \"enum\": [\r\n        \"Problem\",\r\n        \"Procedure\",\r\n        \"Medication\",\r\n        \"Lab\"\r\n      ],\r\n      \"description\": \"The domain of the medical terms. Must be one of: 'Problem', 'Procedure', 'Medication', 'Lab'.\"\r\n    },\r\n    \"terms\": {\r\n      \"type\": \"array\",\r\n      \"items\": {\r\n        \"type\": \"string\"\r\n      },\r\n      \"description\": \"List of medical terms to normalize (e.g., ['diabetes', 'chest pain', 'amoxicillin', 'CBC'])\"\r\n    }\r\n  },\r\n  \"required\": [\r\n    \"domain\",\r\n    \"terms\"\r\n  ]\r\n}\r\n```\r\n\r\n### Inputs\r\n\r\n| Parameter | Type | Required | Meaning, default, and constraints |\r\n| --- | --- | --- | --- |\r\n| `domain` | `string` | Yes | The domain of the medical terms. Must be one of: 'Problem', 'Procedure', 'Medication', 'Lab'. |\r\n| `terms` | `Array<string>` | Yes | List of medical terms to normalize (e.g., ['diabetes', 'chest pain', 'amoxicillin', 'CBC']) |\r\n\r\n### Interpretation and related-tool guidance\r\n\r\nFor a single canonical result, use this tool; for several ranked Problem candidates use `concept_guideline___get_concept_candidates`; for mapped search results use Core Search.\r\n\r\n## Workflow and presentation\r\n\r\n1. Determine the intended domain: diagnoses/findings → Problem; procedures → Procedure; medications → Medication; laboratory tests → Lab.\r\n2. Send one or more terms from the same domain. Domain values are exactly `Problem`, `Procedure`, `Medication`, and `Lab`.\r\n3. Present the returned standardized title and IMO lexical ID. If available, distinguish the internal `imo_code` from the `lexical_code`.\r\n4. Use `lexical_code` for subsequent Core Search/Knowledge Graph calls only when the user requests that work.\r\n5. If normalization yields no match, state that and suggest alternative wording; do not fabricate a lexical.\r\n\r\nThe service forwards normalization output rather than declaring a complete output schema. Existing documentation describes `imo_code`, `lexical_code`, `title`, and domain-dependent mappings; present only fields actually returned.\r\n\r\n## Examples\r\n\r\n**Single term:**\r\n> \"Normalize heart attack\"\r\n```json\r\n{ \"terms\": [\"heart attack\"], \"domain\": \"Problem\" }\r\n```\r\n\r\n**Multiple terms, same domain:**\r\n> \"Standardize amoxicillin, metformin, and lisinopril\"\r\n```json\r\n{ \"terms\": [\"amoxicillin\", \"metformin\", \"lisinopril\"], \"domain\": \"Medication\" }\r\n```\r\n\r\n**Mixed domains — split into separate calls:**\r\n> \"Normalize diabetes, colonoscopy, and CBC\"\r\n- Call 1: `{ \"terms\": [\"diabetes\"], \"domain\": \"Problem\" }`\r\n- Call 2: `{ \"terms\": [\"colonoscopy\"], \"domain\": \"Procedure\" }`\r\n- Call 3: `{ \"terms\": [\"CBC\"], \"domain\": \"Lab\" }`\r\n\r\n## Chaining to Other Skills\r\n\r\nAfter normalization, the user may want to:\r\n\r\n- **Get full details** → use `imo-core-search` with the returned lexical codes via `get_term_detail`\r\n- **Map to other code systems** → use `imo-graphql` with `get_mappings` using the `lexical_code`\r\n- **Explore hierarchy / refine specificity** → use `imo-graphql` with `get_narrower_hierarchy` or `get_allowed_refinements`\r\n- **Find cross-domain relationships** → use `imo-graphql` with `get_cross_domain`\r\n- **Search clinical guidelines by concept** → use `imo-guideline` with `search_by_imo_codes` using the `lexical_code`\r\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}