# **CRA Agent (临床监查) 深度设计与展现方案**
**文档版本:** v2.0
**文档目的:** 针对多变量(300+)、高复杂度(入排/PD/AE/伦理)的临床研究场景,设计 CRA Agent 的数据处理逻辑与交互界面。
**适用版本:** IIT Manager Agent V2.9.1
**创建日期:** 2026-02-07
## **🏗️ 一、 架构设计:如何处理 300+ 变量?**
面对 10 个表单、300 个变量,我们不能试图一次性把所有数据塞进 Prompt。我们需要建立一个 **"变量知识图谱" (Variable Metadata Graph)**。
### **1.1 变量分组策略 (Grouping)**
在 Admin 端配置 REDCap 映射时,不仅要映射字段名,还要给变量打 **"语义标签"**:
| REDCap 变量名 | 语义标签 (Tag) | 归属域 (Domain) | 关键度 |
| :---- | :---- | :---- | :---- |
| dob | \#demographics | 基线 | High |
| icf\_date | \#consent, \#ethics | 伦理 | Critical |
| visit\_date | \#timeline | 访视 | High |
| alt, ast | \#lab, \#safety | 实验室 | Medium |
| tumor\_size | \#efficacy | 疗效 | High |
**设计价值**:
当 CRA Agent 需要核查 "是否符合入排标准" 时,它不需要读取 300 个变量,只需要请求 \#demographics \+ \#lab \+ \#efficacy 标签下的 20 个变量。
### **1.2 双层质控引擎 (Hybrid QC Engine)**
我们将质控分为两层,只有复杂逻辑才交给 LLM,既省钱又准确。
* **Layer 1: 基础清洗 (HardRuleEngine)**
* **执行者**:Node.js 代码
* **检查内容**:空值、数据类型、数值范围 (如 BMI \> 50)、逻辑跳转。
* **输出**:直接生成错误日志,不消耗 Token。
* **Layer 2: 医学逻辑 (AI Logic Engine)**
* **执行者**:LLM (DeepSeek/Qwen) \+ RAG (Protocol)
* **检查内容**:入排标准符合性、AE 判定、方案偏离 (PD)、合并用药禁忌。
* **输入**:Layer 1 清洗后的数据 \+ 方案规则。
## **🤖 二、 对 LLM 友好的数据格式设计 (Context Protocol)**
为了让 LLM 精准判断医学逻辑,我们放弃 JSON 堆砌,采用 **"临床切片 (Clinical Slice)"** 模式。
### **2.1 场景一:入排标准核查 (Inclusion/Exclusion)**
**LLM Prompt 结构建议:**
\核查该患者是否符合研究入排标准\
\
\<\!-- 从 RAG 检索出的标准 \--\>
1\. 年龄 18-75 岁。
2\. 病理确诊为非小细胞肺癌。
3\. 肝肾功能正常 (ALT/AST \< 2.5 ULN)。
\
\
\<\!-- 仅注入相关变量,已转化为自然语言描述 \--\>
\- 出生日期:1950-05-12 (当前年龄 75 岁)
\- 诊断:右肺腺癌 (2025-12-01 确诊)
\- 实验室检查:ALT 150 U/L (参考值 0-40), AST 45 U/L。
\
\
请一步步推理,对比患者数据与标准。重点关注肝功能指标。
\
### **2.2 场景二:方案偏离 (Protocol Deviation) \- 时间窗检查**
**LLM Prompt 结构建议:**
\检查 V2 访视是否超窗\
\
规则:V2 访视应在 V1 后 28 天 ± 3 天进行。
前提:V1 访视日期为基准。
\
\
\- V1 访视日期:2026-01-01
\- V2 实际访视日期:2026-02-05
\
### **2.3 场景三:AE 事件侦测 (Safety Monitoring)**
这是最复杂的,需要对比前后两次数据。
\基于实验室数据变化,判断是否发生潜在 AE\
\
\
WBC: 5.5 (正常)
PLT: 200 (正常)
\
\
WBC: 2.1 (低于下限 4.0) ⚠️
PLT: 180 (正常)
\
\
\
白细胞计数 (WBC) 出现显著下降且低于正常值,根据 CTCAE 标准,这属于几级不良事件?是否在 AE 表中记录?
\
## **🖥️ 三、 后台展现形式设计 (Human UI)**
Admin 端需要一个高密度的 **"CRA 驾驶舱"**,让 CRA 一眼看穿 300 个变量背后的风险。
### **3.1 宏观视图:风险热力图 (Risk Heatmap)**
不要只列出 List,要用矩阵。
* **行**:受试者 (Subject 001, 002...)
* **列**:访视/表单 (Screening, Baseline, V1, V2, AE, CM)
* **单元格**:颜色代表风险等级。
* 🟢 **Green**: Clean (无问题)
* 🟡 **Yellow**: Query (有疑问/空值)
* 🔴 **Red**: Critical (违背入排/严重 PD/SAE)
* ⚪ **Gray**: Not Started
**交互**:点击红色单元格,右侧滑出 "智能诊断报告"。
### **3.2 微观视图:智能诊断报告 (The "Why" Panel)**
当点击某个具体的报警(例如 Subject 001 的入排标准红色警告)时,展示如下内容:
#### **📋 诊断卡片:入排标准违规**
**\[结论\]**:❌ **建议剔除**
**\[置信度\]**:High (基于硬指标)
**\[AI 推理链\]**:
1. **标准要求**:ALT \< 2.5倍 ULN (即 \< 100 U/L)。
2. **患者数据**:当前 ALT 为 150 U/L。
3. **判定**:150 \> 100,不符合入组标准第 3 条。
**\[原始证据\]**:
* lab\_alt: 150 (来源于 form: lab\_results, field: alt)
* lab\_date: 2026-01-15
**\[CRA 操作区\]**:
* \[ \] 忽略 (医学判断无碍)
* \[ \] 发送 Query (询问 CRC)
* \[ \] 确认违规 (标记为 PD)
### **3.3 调试视图:LLM 视角 (Trace Viewer)**
在每条质控记录的详情中,提供一个 **"AI 思考过程"** Tab,实现黑盒透明化。
* **Input (Prompt Context)**: 展示发送给 LLM 的 XML+Markdown 格式原始提示词(即“临床切片”)。
* **Process (Thinking)**: 展示 LLM 的思维链(Chain of Thought)。
* **Output (JSON)**: 展示最终生成的结构化结论。
## **⚙️ 四、 配置层设计 (Rule Studio)**
### **4.1 规则配置中心**
采用 **“分层配置,自动托底”** 策略:
1. **Layer 1 字段自动映射 (Auto Mapping)**:
* 系统读取 REDCap Metadata,自动生成 Hard Rules(空值、范围)。
* 用户仅需为变量打标签(Tagging),如 \#safety, \#efficacy。
2. **Layer 2 逻辑构建器 (Logic Builder)**:
* 低代码配置跨表逻辑:IF \[V2.Date\] \- \[V1.Date\] \> 31 THEN \[PD Alert\]。
3. **Layer 3 AI 监查员配置 (AI Setup)**:
* **上传 Protocol PDF** \-\> AI 自动提取入排标准 \-\> 人工确认 \-\> 自动生成 Layer 2 检查 Prompt。
## **🛡️ 五、 特殊医学逻辑设计**
针对你提到的 4 个核心需求,设计如下专项 Check:
### **5.1 入排标准 (I/E Criteria)**
* **设计**:将 Protocol PDF 中的入排标准 OCR 化,转为结构化规则库。
* **展现**:在 "受试者列表" 增加一列 "I/E Status"。
* Pass: ✅
* Fail: ❌ (Hover 显示具体哪一条没过,如 "I3: Age")
### **5.2 方案偏离 (PD)**
* **核心**:时间窗 (Time Window) 和 漏做检查 (Missing Procedure)。
* **展现**:**时间轴视图 (Gantt-like)**。
* 展示 "计划访视日" vs "实际访视日"。
* 如果超窗,用红色区间标出。
### **5.3 伦理合规 (Ethics)**
* **核心逻辑**:Date(ICF\_Sign) \<= Date(Any\_Study\_Procedure)。
* **逻辑**:如果任何检查日期早于知情同意书签署日期,触发 **最高级别警报 (Critical)**。
* **展现**:置顶 Banner 警告,因为这是合规红线。
### **5.4 AE 事件侦测 (Safety)**
* **逻辑**:
1. **Change Check**: 实验室指标从 Normal 变为 Abnormal。
2. **Cross Check**: 检查 AE Log 表单中是否有对应日期的记录。
3. 如果 Lab 异常但 AE 表为空 \-\> **提示 "潜在漏报 AE"**。
* **展现**:
* "Lab vs AE 一致性检查" 面板。
* 左侧显示异常 Lab 指标,右侧显示 AE 记录,中间用连线表示匹配关系。
## **📝 总结建议**
1. **不要全量喂数据**:建立 VariableMetadata,按 Tag 切片。
2. **LLM 看"病历"**:将 JSON 转换为 **XML 标签包裹的 Markdown** 格式的“临床叙事”,不仅省 Token,还能极大提升 AI 对医学逻辑的理解力。
3. **UI 矩阵化**:CRA 需要上帝视角,热力图是最佳选择。
4. **推理透明化**:AI 报出错误时,必须展示 "标准 vs 现状" 的对比证据,方便 CRA 快速复核。