关于 clinical-data-standards
clinical-data-standards 是关于临床术语和编码决策的领域知识技能,帮助 Agent 选择层级、映射 MedDRA、ICD-10、SNOMED CT 与 LOINC,并识别常见编码问题。
主要功能
- 01说明 MedDRA 编码层级
- 02选择 ICD-10 分组粒度
- 03导航 SNOMED CT 概念
- 04选择 LOINC 代码和面板
- 05指导跨系统术语映射
适用场景
- 01将不良事件文本编码为 MedDRA 术语
- 02为患病率分析归组诊断
- 03为实验室观察结果选择代码
- 04在临床术语系统间映射术语
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ awslabs/ hcls-agent-skills --skill clinical-data-standards安装后在 Claude Code 中输入/clinical-data-standards确认已加载。
详细介绍
临床数据术语标准
概述
本技能教会 Agent 如何理解临床术语系统——MedDRA、ICD-10、SNOMED CT 和 LOINC,以及临床数据编码、分组和映射所涉及的决策。它不会生成流水线代码;它提供领域知识,帮助在开始任何分析之前做出正确的编码和汇总选择。
术语使用错误会造成直接后果:不正确编码的不良事件会掩盖安全性信号,ICD-10 粒度不当会夸大或低估患病率估算值,错误的 LOINC 分配则会破坏实验室结果的互操作性。本技能总结了可避免这些错误的规则、层级结构和决策框架。
用法
在用户出现以下情况时调用本技能:
- 需要将不良事件原始文本编码为 MedDRA 术语。
- 询问频数表或信号检测应使用 MedDRA 的哪个层级。
- 想要按 ICD-10 代码对诊断进行分组,并且必须选择 3 字符还是 4 字符的粒度。
- 需要了解临床发现或操作所涉及的 SNOMED CT 概念关系。
- 必须为实验室检测选择 LOINC 代码,或了解面板组成。
- 正在不同术语系统之间进行映射(MedDRA ↔ ICD-10、SNOMED CT → ICD-10)。
- 询问临床试验中 AE 编码的监管要求。
Agent 应按以下方式作答:
- 确定术语系统,使其适用于数据类型和使用场景。
- 明确粒度——应采用哪个层级进行编码和报告。
- 应用映射规则,这些规则应针对源系统和目标系统。
- 指出常见陷阱——过度编码、编码不足、不恰当的汇总。
- 在相关时说明监管背景(ICH E2B、FDA、EMA 的要求)。
回复格式
- 开头直接给出建议或分类(≤3 句话)
- 按以下顺序组织:建议 → 理由(引用具体标准/阈值)→ 注意事项
- 比较内容使用表格;标准列表使用项目符号
- 省略用户已了解的背景信息——用户问的是具体问题
- 目标长度:200-400 个词,除非用户要求详尽说明 本技能中的决策树和框架仅供内部推理使用。运用它们得出结论,但不要在回复中复述。只呈现最终建议及其支持证据。
核心概念
1. MedDRA:5 级层级结构
MedDRA(监管活动医学词典)是临床试验和药物警戒中对不良事件、病史和适应症进行编码的标准。
| 层级 | 缩写 | 数量(约 v26) | 用途 |
|---|---|---|---|
| 系统器官分类 | SOC | ~27 | 最宽泛的分组(例如,“心脏疾病”) |
| 高位组术语 | HLGT | ~337 | 对 SOC 内相关的 HLT 进行分组 |
| 高位术语 | HLT | ~1,740 | 按解剖部位/机制对相关 PT 进行分组 |
| 首选术语 | PT | ~24,000 | 标准报告术语——核心术语 |
| 最低层级术语 | LLT | ~83,000 | 映射到一个 PT 的原文级同义词 |
编码路径
Verbatim AE text (from CRF)
│
▼
LLT (closest match to verbatim)
│
▼
PT (standard reportable term — one LLT maps to exactly one PT)
│
▼
HLT → HLGT → SOC (for grouping and display)
规则:
- 始终先编码到 LLT,再由层级结构推导出 PT。切勿从原始文本直接跳到 PT——LLT 层能够涵盖同义词和拼写变体。
- PT 是主要分析层级。 临床研究报告(CSR)中的频数表按 PT 列出 AE,并按 SOC 分组。
- 一个 LLT → 恰好对应一个 PT。 但一个 PT 可以属于多个 SOC(主要 SOC 分配决定默认分组方式)。
- 主要 SOC 分配遵循 ICH 规范:病因 SOC 优先于表现 SOC。“药物性肝炎”归入“肝胆疾病”(表现),但其主要 SOC 由 MedDRA 的主要路径规则决定。
- 多轴性:一个 PT 可以出现在多个 SOC 下。除非方案另有规定,频数表始终使用主要 SOC。
何时在 PT 之上进行聚合
| 场景 | 建议层级 | 理由 |
|---|---|---|
| 标准 AE 频数表(CSR) | SOC 内的 PT | 监管要求(ICH E3) |
| 对罕见事件进行信号检测 | HLT 或 HLGT | 单个 PT 过于稀疏;分组有助于揭示模式 |
| 标准化 MedDRA 查询(SMQ) | SMQ(预定义) | 针对已知安全主题(例如“肝脏疾病”)整理的术语组 |
| 高层级安全性概览 | SOC | 用于执行摘要,不适用于详细分析 |
决策树:MedDRA 编码层级
Start
│
├── Is this a standard CSR AE table?
│ └── Code at LLT → report at PT within primary SOC.
│
├── Are you looking for a safety signal across related terms?
│ ├── Does an SMQ exist for the topic?
│ │ └── Yes → Use the SMQ (narrow or broad scope as appropriate).
│ └── No SMQ → Aggregate at HLT. Document the grouping rationale.
│
├── Are individual PTs too rare to detect a signal?
│ └── Consider HLT or HLGT grouping, but report both grouped
│ and individual PT counts for transparency.
│
└── Executive safety summary only?
└── SOC-level counts are acceptable, with PT detail available on request.
2. ICD-10:编码结构与分组
ICD-10(《国际疾病分类》第 10 版)是用于理赔、EHR 和流行病学研究的标准诊断编码体系。
结构
Chapter (I–XXII)
└── Block (e.g., E10–E14: Diabetes mellitus)
└── Category — 3 characters (e.g., E11: Type 2 diabetes)
└── Subcategory — 4–7 characters (e.g., E11.6: With complications)
└── Extension (e.g., E11.65: With hyperglycemia)
| 层级 | 示例 | 粒度 |
|---|---|---|
| 章节 | 第 IV 章:内分泌疾病 | 对大多数分析而言过于宽泛 |
| 区块 | E10–E14 | 疾病家族分组 |
| 3 位类别 | E11 | 疾病实体(2 型糖尿病) |
| 4 位亚类别 | E11.6 | 并发症类型 |
| 完整代码 | E11.65 | 特定表现 |
分组决策
粒度的选择取决于分析目标:
| 分析类型 | 建议层级 | 示例 |
|---|---|---|
| 人群患病率研究 | 3 位类别 | E11(所有 2 型糖尿病) |
| 合并症指数(Charlson、Elixhauser) | 3 位类别或区块 | 每种疾病对应的预定义代码列表 |
| 特定结局研究 | 完整代码(4–7 位字符) | E11.65(特指高血糖) |
| 基于理赔的队列定义 | 3 位类别 + 排除项 | E11.*,排除 E11.0(伴昏迷) |
| 跨国比较 | 区块级别 | 不同国家的 ICD-10 修订版中,区块更稳定 |
决策树:ICD-10 分组层级
Start
│
├── Are you estimating disease prevalence or incidence?
│ └── 3-character category. Captures all subtypes.
│ Add block-level grouping if comparing across disease families.
│
├── Are you defining a specific clinical outcome?
│ └── Full code (4+ characters). Be explicit about which
│ manifestations qualify. Document inclusion/exclusion codes.
│
├── Are you building a comorbidity score?
│ └── Use the published code lists (Charlson/Elixhauser).
│ Do not invent your own groupings.
│
├── Are you comparing across countries or ICD-10 modifications?
│ └── Block level. National modifications (ICD-10-CM, ICD-10-GM)
│ diverge at the subcategory level.
│
└── Are you mapping from another system (MedDRA, SNOMED CT)?
└── Map to 3-character first, then refine to subcategory
only if the source system provides sufficient specificity.
ICD-10-CM 与 ICD-10-WHO
- ICD-10-CM(美国临床修订版):将代码扩展至 7 个字符,并增加侧别、就诊类型(初次/后续/后遗症)。用于美国的理赔和 EHR。
- ICD-10-WHO:国际基础版本。代码较短,不含侧别扩展。
- 务必注明所使用的修订版。在 ICD-10-CM 中有效的代码可能不存在于 ICD-10-WHO 中。
3. SNOMED CT:概念模型
SNOMED CT(《医学系统化命名法——临床术语》)是最全面的临床术语体系,用于临床发现、操作、物质、身体结构和生物体。
核心结构
- 概念:表示临床含义的唯一标识符(SCTID)。
- 描述:人类可读的术语(完全指定名称、首选术语、同义词)。
- 关系:概念之间的类型化链接。
关键关系类型
| 关系 | 含义 | 示例 |
|---|---|---|
| IS-A | 包含层级 | “急性心肌梗死” IS-A “心肌梗死” |
| 发现部位 | 发现所在的位置 | “肺炎” → 发现部位 → “肺结构” |
| 致病因子 | 导致该病症的因素 | “阿司匹林诱发的哮喘” → 致病因子 → “阿司匹林” |
| 相关形态 | 结构变化 | “肺腺癌” → 形态 → “腺癌” |
| 方法 | 执行操作的方式 | “腹腔镜胆囊切除术” → 方法 → “腹腔镜入路” |
何时使用 SNOMED CT 与其他体系
| 用例 | 首选体系 | 理由 |
|---|---|---|
| EHR 中的临床文档 | SNOMED CT | 概念模型丰富,可支持临床细节 |
| 计费和理赔 | ICD-10 | 付款方要求 |
| 不良事件报告 | MedDRA | 监管要求 |
| 实验室检查开单/结果 | LOINC | 实验室互操作性的标准 |
| 药物编码 | RxNorm(美国)/SNOMED CT | RxNorm 用于处方;SNOMED CT 用于物质 |
SNOMED CT 层级导航规则
- 使用 IS-A 层级进行包含关系查询。 若要查找“所有类型的糖尿病”,请查询概念 73211009(糖尿病)的后代概念。
- 后协调(组合概念)功能强大,但很复杂。若存在预协调概念,优先使用。
- 参考集(refset)为特定用例定义子集(例如国家级药品扩展)。务必确认适用于所在司法辖区的参考集。
- SNOMED CT → ICD-10 映射由 SNOMED International 维护。请使用官方映射,不要自行创建交叉映射。
4. LOINC:实验室检验编码
LOINC(Logical Observation Identifiers Names and Codes)是用于标识实验室检验和临床观察的标准。
6 部分命名规则
每个 LOINC 代码由六个轴定义:
| 轴 | 描述 | 示例(葡萄糖、空腹、血清) |
|---|---|---|
| 成分 | 测量什么 | 葡萄糖 |
| 属性 | 测量类型 | MCnc(质量浓度) |
| 时间 | 单个时间点或一段时间 | Pt(单个时间点) |
| 系统 | 标本类型 | Ser/Plas(血清或血浆) |
| 量表 | 定量、有序等 | Qn(定量) |
| 方法 | 测量方式(可选) | — |
检验组合
LOINC 检验组合将一起开具的相关检验归为一组:
| 检验组合 | LOINC 代码 | 包含项目 |
|---|---|---|
| 血常规(含分类) | 57021-8 | WBC、RBC、Hgb、Hct、MCV、MCH、MCHC、Plt、分类计数 |
| 基础代谢组合 | 51990-0 | 葡萄糖、BUN、肌酐、Na、K、Cl、CO2、Ca |
| 综合代谢组合 | 24323-8 | BMP + 白蛋白、胆红素、ALP、ALT、AST、总蛋白 |
| 血脂组合 | 24331-1 | 总胆固醇、HDL、LDL(计算值)、甘油三酯 |
| 肝功能组合 | 24325-3 | 白蛋白、胆红素(总量/直接)、ALP、ALT、AST、总蛋白 |
LOINC 选择规则
- 匹配全部六个轴。 血清葡萄糖检验(定量、质量浓度)与尿液葡萄糖检验(定量、质量浓度),或血清葡萄糖检验(有序)对应的 LOINC 代码不同。
- 除非方法会实质性影响结果解读(例如计算 LDL 与直接测量 LDL),否则优先选择不含方法轴的代码。
- 若开具了完整检验组合,则使用组合代码;其中各项结果使用对应的单项成员代码。
- 检查 LOINC 状态。 代码的状态可能为 ACTIVE、DEPRECATED 或 DISCOURAGED。仅使用 ACTIVE 代码。
- LOINC 答案(LA 代码)为有序观察结果提供标准化答案列表(例如阳性/阴性/不确定)。
5. 跨系统映射决策
术语系统之间的映射不可或缺,但容易出错。请遵循以下规则:
MedDRA → ICD-10
| 场景 | 处理方式 |
|---|---|
| AE 术语映射到诊断代码 | 将 PT 映射到 ICD-10 3 位类别。仅当 PT 提供足够的具体信息时,才细化到亚类别。 |
| 病史编码 | 在 PT 层级进行映射;仅当原文支持时,才映射到 ICD-10 亚类别。 |
| 合并症 | 若有官方 MedDRA-to-ICD 交叉映射表,请使用。 |
规则:
- 一个 MedDRA PT 可能映射到多个 ICD-10 代码(反之亦然)。记录映射表及其版本。
- 切勿将 LLT 直接映射到 ICD-10。 务必先通过 PT 映射——LLT 是同义词,并非独立概念。
- 粒度不匹配是正常情况。 MedDRA PT 通常比 ICD-10 亚类别更宽泛。请接受具体性损失,或要求补充临床背景。
SNOMED CT → ICD-10
- 使用 SNOMED International 维护的映射表(随每个 SNOMED CT 版本发布)。
- 映射表提供目标 ICD-10 代码及映射规则和优先级。
- 一个 SNOMED CT 概念可能映射到多个 ICD-10 代码(组合编码)。请遵循映射规则选择正确的目标代码。
- 不要反向使用映射表(ICD-10 → SNOMED CT),除非有专用的反向交叉映射表——正向映射是多对一的,反向使用会造成信息丢失。
LOINC → 本地检验代码
- 大多数机构都会维护本地代码到 LOINC 的映射表(通常称为“LOINC 映射”或“结果代码对照表”)。
- 对照本地检验定义,核验 LOINC 的全部六个轴。 常见错误是因为成分名称相符,就将血清检验映射到尿液 LOINC 代码。
- 检验组合与成分: 将检验组合的医嘱映射到检验组合的 LOINC 代码,并将每条结果映射到对应的单项成分 LOINC 代码。
决策树:该采用哪种映射方法?
Start
│
├── Source is verbatim AE text?
│ └── Code to MedDRA (LLT → PT). Map to ICD-10 only if
│ the downstream system requires it.
│
├── Source is EHR diagnosis (free text or local code)?
│ ├── US system → Map to ICD-10-CM (billing) and SNOMED CT (clinical).
│ └── Non-US → Map to ICD-10-WHO or national modification.
│
├── Source is lab result?
│ └── Map to LOINC. Match all six axes. Use panel codes for orders.
│
├── Need to cross-walk between MedDRA and SNOMED CT?
│ └── Go through ICD-10 as an intermediary (MedDRA → ICD-10 → SNOMED CT)
│ or use UMLS concept mappings. Direct MedDRA ↔ SNOMED CT maps
│ are not officially maintained.
│
└── Building a research dataset combining claims + EHR + trial data?
└── Define a canonical code system for each data element.
Map all sources to the canonical. Document every mapping
decision and version. Accept that some mappings are lossy.
6. 监管背景
| 标准 | 必需系统 | 背景 |
|---|---|---|
| ICH E2B(R3) | MedDRA | 个例安全性报告(ICSR) |
| ICH E3 | MedDRA | 临床研究报告——按 SOC 中的 PT 编制 AE 表格 |
| 美国理赔(CMS) | ICD-10-CM,CPT,HCPCS | 计费与报销 |
| 美国 EHR(ONC) | SNOMED CT,LOINC,RxNorm | 有意义使用 / 促进互操作性 |
| CDISC SDTM | MedDRA(AE 域),各域的词典 | 向 FDA 提交临床试验数据 |
| OMOP CDM | SNOMED CT(疾病),LOINC(测量),RxNorm(药物) | 观察性研究 |
不应使用此技能的情况
- 为监管安全报告分配 MedDRA 代码(需要受过培训的医学编码员)
- 编码需要对因果关系评估作出临床判断
- 适用法律责任的计费或报销 ICD-10 编码
何时升级至人工专家处理
- 某个术语对应多个属于不同 SOC 的 PT 候选项
- 交叉映射决策会影响监管申报的受理
- 本地编码规范与国际标准冲突
常见错误
-
错误: 将不良事件直接编码到 PT,跳过 LLT 层 正确: 始终先将原文编码到 LLT,再由层级体系推导出 PT 原因: LLT 层会收录同义词和拼写变体——跳过该层可能导致不同原文描述同一概念时编码不一致
-
错误: 在 AE 频数表中使用次要 SOC 正确: 除非方案明确另有规定,否则频数表始终使用主要 SOC 原因: 多轴 PT 会出现在多个 SOC 下——混用主要和次要 SOC 会夸大 AE 数量,并干扰信号检测
-
错误: 未记录理由就按 HLT 层级汇总 正确: 仅当单个术语过于稀疏、不足以进行信号检测时,才在 PT 以上层级汇总;始终同时显示分组和未分组的 PT 计数 原因: 按 HLT 分组会隐藏单个 PT 的信号,而这些信号可能代表不同的安全性问题
-
错误: 在非美国环境中使用 ICD-10-CM 编码 正确: 明确说明使用的是哪种 ICD-10 变体;对于非美国数据,使用 ICD-10-WHO 或适用的国家变体 原因: ICD-10-CM 的扩展(侧别、就诊类型)在 ICD-10-WHO 中不存在——编码可能无效或被误解
-
错误: 在特定结局研究中按 3 字符级别汇总 ICD-10 编码 正确: 当结局是某种特定表现时,使用完整编码(4 个或更多字符);明确记录纳入和排除的编码 原因: E11 包含所有 2 型糖尿病并发症——如果结局是“伴高血糖的 2 型糖尿病”,只有 E11.65 才正确
-
错误: 反转 SNOMED CT → ICD-10 映射,创建 ICD-10 → SNOMED CT 交叉映射 正确: 使用专门的反向交叉映射或基于 UMLS CUI 的映射;绝不要反转正向映射 原因: 正向映射是多对一的——反转后会产生含糊的一对多映射,且缺少用于消除歧义的映射规则
-
错误: 仅根据成分名称匹配 LOINC 编码 正确: 确认全部六个 LOINC 轴(成分、属性、时间、系统、量表、方法)都与本地检测定义相符 原因: 两个 LOINC 编码可能具有相同的成分,但系统(血清与尿液)、属性或量表不同——不完整的匹配会导致错误分配
-
错误: 未检查状态就使用已弃用的 LOINC 编码 正确: 始终检查 LOINC STATUS 字段,并用其有效后继编码替换已弃用的编码 原因: 已弃用的编码会破坏互操作性,接收系统也可能无法识别
-
错误: 不使用官方映射,而是临时创建术语交叉映射 正确: 使用 SNOMED International、NLM 或 MSSO 整理的映射;记录所用映射的版本 原因: 临时映射会引入不一致,无法复现,且偏离监管预期
-
错误: 合并多项研究的数据时忽略 MedDRA 版本差异 正确: 记录每项研究使用的 MedDRA 版本;协调不同版本间新增、合并或弃用的术语 原因: 不同版本间会新增、合并和弃用 PT——v25 中有效的术语在 v26 中可能已弃用,从而导致数据丢失或计数错误
-
错误: 存储结果时混淆 LOINC 检验组编码与成分编码 正确: 检验申请使用检验组编码,检验组内的每项结果使用各自的成分 LOINC 编码 原因: 将血糖结果存储在 CBC 检验组编码下在语义上是错误的,会破坏下游汇总和互操作性
-
错误: 不使用中间术语,直接将 MedDRA 映射到 SNOMED CT 正确: 使用 ICD-10 作为中间术语(MedDRA → ICD-10 → SNOMED CT),或使用基于 UMLS CUI 的映射;记录映射路径 原因: 不存在官方的 MedDRA ↔ SNOMED CT 直接交叉映射——直接映射会产生未经验证、无法复现的结果
参考资料
- MedDRA 入门指南:https://www.meddra.org/how-to-use/support-documentation
- ICH E2B(R3) 指南:https://database.ich.org/sites/default/files/E2B_R3__Guideline.pdf
- ICD-10-WHO:https://icd.who.int/browse10/2019/en
- ICD-10-CM:https://www.cms.gov/medicare/coding-billing/icd-10-codes
- SNOMED CT 入门指南:https://confluence.ihtsdotools.org/display/DOCSTART
- SNOMED CT 到 ICD-10 映射:https://www.snomed.org/snomed-ct/Use-SNOMED-CT/maps
- LOINC 用户指南:https://loinc.org/kb/users-guide/
- CDISC SDTM 实施指南:https://www.cdisc.org/standards/foundational/sdtm
- OMOP CDM 词汇表:https://ohdsi.github.io/CommonDataModel/