WangYunchao2023

pharma-report-analyzer

药品研究报告分析解读。用于分析药品开发、生产、监管、注册申报、沟通交流、医药行业/行情等领域的各类报告,评估报告中的数据对结论的支持程度,识别逻辑问题,检查是否符合法规和指导原则要求。

WangYunchao2023 0 Updated 2mo ago

Resources

10
GitHub

Install

npx skillscat add wangyunchao2023/auto-optimize-skills

Install via the SkillsCat registry.

SKILL.md

药品研究报告分析解读

概述

本skill用于对药品开发、生产、监管、注册申报领域的各类专业报告,以及医药行业/行情报告进行分析解读,核心功能包括:

  • 提取报告中的关键数据点和结论
  • 评估数据对结论的支持程度(强支持/弱支持/不支持/证据不足)
  • 识别逻辑漏洞和数据矛盾
  • 检查报告内容是否符合法规和指导原则要求
  • 输出增强版结构化JSON,支撑后续数据信息库建设
  • 支持版本管理和多维度检索

增强版特性(v2.0)

特性 说明
唯一ID体系 drug_id, report_id, data_uuid, conc_uuid, issue_uuid
版本管理 支持报告版本迭代和修改历史
数据分离 药品基础信息与报告详情分离存储
检索标签 预定义多维度检索标签
关系图谱 支持药品-报告-数据-结论-问题关联

分析Prompt模板

本Skill使用独立的Prompt模板进行报告分析,模板定义在 references/prompt_template.md 中。

核心原则

  • 提取报告中的关键数据点和结论
  • 评估数据对结论的支持程度(强支持/弱支持/不支持/证据不足)
  • 识别逻辑漏洞和数据矛盾
  • 检查是否符合法规和指导原则要求

灵活性

  • 根据实际情况调整分析深度
  • 明确标注来源(区分原报告内容和LLM推断)
  • 证据不足时明确说明

详见 references/prompt_template.md

适用报告类型

类别 具体报告类型
药品开发 药学研究报告、药理毒理报告、临床试验方案及总结报告
生产监管 GMP检查报告、偏差报告、OOS/OOT调查、年度质量回顾、验证报告
注册申报 CTD申报资料、沟通交流会纪要、审评意见书、发补回复
上市后 不良反应报告、变更申请报告、再注册资料
医药行业/行情 医药行业研究报告、药品市场调研报告、行情分析报告、投资研究报告、销售数据报告

输入要求

支持的文件格式

格式 扩展名 说明
PDF .pdf 电子版可直接读取
PDF .pdf(扫描版) 需先进行OCR识别(调用ocr skill)
Word .docx / .doc 文字型报告
Excel .xlsx / .xls 数据表格、汇总表
网页 .html / .htm 在线报告、网页抓取
文本 .txt 纯文本报告
Markdown .md Markdown格式

文件处理流程

用户上传文件
    │
    ├─→ PDF(电子版)─────→ 直接读取分析
    │
    ├─→ PDF(扫描版/图片)→ OCR识别 → 读取分析
    │
    ├─→ Word/Excel ───────→ 直接读取分析
    │
    └─→ 网页/文本 ────────→ 直接读取分析

其他说明

  • 语言:中文报告为主,可处理中英文混排
  • 内容要求:包含研究数据、结论陈述的分析报告
  • 特殊处理
    • 扫描版PDF:自动调用ocr skill进行文字识别
    • 加密文件:需要先解密
    • 多个文件:可批量分析

特殊情况处理

报告结构不完整的处理

本skill设计时已充分考虑实际工作中报告结构不完整的情况:

场景 处理方式
仅有数据,无明确结论 提取数据点,标注"原报告无明确结论",由LLM基于数据推断潜在结论
结论简单 保留原报告简单结论,添加LLM的深入分析作为补充
Excel表格+简单标注 识别表格中的关键数据,提取标注作为结论,标注数据来源
数据不充分 支持度评估为"证据不足",明确说明缺乏哪些数据

报告完整性评估

在分析时,对报告完整性进行初步评估:

完整性级别 说明
完整 包含明确的数据、分析过程、结论
基本完整 有数据和结论,分析过程简略
数据汇总 主要是数据表格,结论简单或无明确结论
仅数据 仅有原始数据,无结论

灵活性原则

  • 根据实际情况调整分析深度:完整报告做深度分析,不完整的报告聚焦于数据提取和基于现有信息的评估
  • 明确标注来源:区分"原报告内容"和"LLM推断内容",避免混淆
  • 证据不足时明确说明:不强行得出结论,而是标注需要补充什么数据

混合PDF分离处理

对于包含扫描页和文字页的混合PDF,进行分离处理:

处理流程

混合PDF输入
    │
    ├─→ 页面分析 → 识别每页类型(文字页/扫描页)
    │
    ├─→ 文字页 → 直接提取文本(返回给调用者,不保存中间文件)
    │
    └─→ 扫描页 → 标记需要OCR处理

特点

  • 轻量处理:直接返回结果,不保存中间文件
  • 调用方式:作为中间步骤被主分析流程调用
  • 输出:返回每页类型、文字页内容、扫描页页码列表

注意:需要安装 ocr skill 才能处理扫描页

增量更新检测

在分析新报告前,自动检测是否需要增量更新,避免重复分析:

检测逻辑

接收新报告
    │
    ├─→ 提取关键信息 → 药品名称 + 申请人 + 报告类型 + 适应症
    │
    ├─→ 查询数据信息库
    │   ├─→ 药品是否存在?
    │   └─→ 报告是否存在?
    │
    └─→ 内容比对
        ├─→ MD5相同 → same_report(跳过)
        │
        └─→ MD5不同 → 正文内容比对
                │
                ├─→ 正文相同 → same_report(跳过)
                │
                └─→ 正文不同 → new_version(自动创建新版本)

处理规则

场景 处理方式
新药品 创建新目录,初始化drug_info.json
已有药品 + 新报告 复用drug_id,新增report_id
正文完全相同 跳过(不覆盖,不新增)
正文不同 自动创建新版本(v1→v2→v3...)

比对方式

步骤 方法 作用
1 MD5比对 快速判断文件是否完全相同
2 正文内容MD5比对 排除注释/批注差异,更精确判断

核心原则:正文相同时不覆盖、不新增;正文不同时自动创建新版本进行分析

输出格式

本skill输出以下3种文件:

输出类型 文件名 说明
1. 数据结论分析表 📋 数据结论分析表_{药品名称}_{报告类型}_{适应症}_{分析日期}.md 核心输出:数据点-结论逻辑分析过程
2. 简要汇总 📄 简要汇总_{药品名称}_{报告类型}_{适应症}_{分析日期}.md 文字版分析汇总
3. 问题清单 ⚠️ 问题清单_{药品名称}_{报告类型}_{适应症}_{分析日期}.md 发现的问题清单

文件命名规则

统一格式{药品名称}_{报告类型}_{适应症/其他标识}_{分析日期}.md

命名详细说明

报告类型 适应症/其他标识 示例
临床I期报告 适应症 阿达木单抗_临床I期报告_晚期实体瘤_20260318
临床II期报告 适应症 阿达木单抗_临床II期报告_类风湿性关节炎_20260318
临床III期报告 适应症 阿达木单抗_临床III期报告_类风湿性关节炎_20260318
临床总结报告 适应症 阿达木单抗_临床总结报告_银屑病_20260318
药学研究报告 剂型/研究内容 阿达木单抗_药学研究报告_注射液_20260318
稳定性研究报告 剂型 阿达木单抗_稳定性研究_注射液_20260318
方法学验证报告 研究内容 阿达木单抗_方法学验证_含量测定_20260318
GMP检查报告 检查类型+车间 某某制药_GMP检查报告_无菌车间_20260318
偏差调查报告 偏差编号 某某制药_偏差调查报告_OOS-2026-001_20260318
CAPA报告 CAPA编号 某某制药_CAPA报告_CAPA-2026-001_20260318
沟通交流会纪要 会议类型 阿达木单抗_沟通交流会纪要_Pre-IND_20260318
审评意见书 审评阶段 阿达木单抗_审评意见书_补充资料_20260318
发补回复 发补次数 阿达木单抗_发补回复_第一次_20260318
CTD申报资料 模块+适应症 阿达木单抗_CTD-M3_药学研究_类风湿性关节炎_20260318
行业研究报告 行业细分领域 中国ADC药物_行业研究报告_20260318
市场调研报告 治疗领域 PD-1抑制剂_市场调研报告_肿瘤_20260318
行情分析报告 药品+时间范围 阿达木单抗_行情分析报告_2025年_20260318
投资研究报告 适应症+公司 某创新药_投资研究报告_肺癌_20260318
销售数据报告 药品+年份 阿达木单抗_销售数据报告_2025年_20260318
年度质量回顾 车间/产品线 某某制药_年度质量回顾_无菌车间_20260318
验证报告 验证类型 某某制药_工艺验证报告_灌装_20260318
药理毒理报告 研究类型 XYZ_药理毒理报告_长期毒性_20260318
不良反应报告 报告类型 阿达木单抗_不良反应报告_2025年_20260318

说明:适应症字段必须填写,如无明确适应症则用"未知"或报告的主要研究内容替代

分析表结构

# 📋 数据结论分析表
# {药品名称} {报告类型} 数据-结论逻辑分析
# 适应症:{适应症} | 分析日期:{分析日期}

---

## 报告基本信息
| 字段 | 内容 |
|------|------|
| 药品名称/代号 | xxx |
| 报告类型 | xxx |
| 适应症/适应领域 | xxx |
| 申请人/企业 | xxx |
| 报告来源 | xxx |
| 报告日期 | xxx |
| 分析日期 | xxx |
| 分析版本 | xxx |

---

## 数据点 - 结论 逻辑分析

### DATA_001:{数据点标题/描述}

| 字段 | 内容 |
|------|------|
| **原始内容** | {数据点在原报告中的完整表述} |
| **数据类型** | 数值型 / 表格型 / 描述性 |
| **原报告位置** | 第X页/第X章/图X/表X |
| **索引标记** | [DATA_001] |

**关联结论**:[CONC_001]

#### ① 原报告分析过程
> {原报告中对该数据的分析过程和得出的结论}
> 
> (来源:原报告第X页...)

#### ② LLM自主分析
> {基于LLM理解,对该数据的独立分析过程和结论}
> 
> - 分析要点:...
> - 补充说明:...

**支持度评估**:强支持 / 弱支持 / 不支持 / 证据不足

---

### CONC_001:{结论标题}

| 字段 | 内容 |
|------|------|
| **结论内容** | {结论的完整表述} |
| **结论类型** | 有效性 / 安全性 / 质量可控 / 合规性 / 风险评估 / 市场预测 |
| **索引标记** | [CONC_001] |

**支持数据**:[DATA_001]、[DATA_002]...

#### ① 原报告结论及分析过程
> {原报告中声称的结论及其分析推理过程}
> 
> (来源:原报告第X页...)

#### ② LLM自主分析结论
> {LLM基于全部相关数据的独立分析结论}
> 
> - 分析要点:...
> - 与原报告差异(如有):...
> - 补充考量因素:...

**支持度**:强支持 / 弱支持 / 不支持 / 证据不足

---

### DATA_002:(以此类推)

输出2:文字版简要汇总

文件命名📄 简要汇总_{药品名称}_{报告类型}_{适应症}_{分析日期}.md

内容结构

# 📄 简要汇总
# {药品名称} {报告类型} 分析汇总
# 适应症:{适应症} | 分析日期:{分析日期}

---

## 一、报告概述
- 药品名称:xxx
- 报告类型:xxx
- 适应症/领域:xxx
- 审评阶段:xxx
- 申请人/企业:xxx
- 报告日期:xxx
- 报告完整性:完整 / 基本完整 / 数据汇总 / 仅数据

## 二、主要研究发现
### 2.1 有效性数据
- 发现1:xxx(数据来源:[DATA_001])
- 发现2:xxx(数据来源:[DATA_002])

### 2.2 安全性数据
- 发现1:xxx
- 发现2:xxx

### 2.3 质量/其他数据
- 发现1:xxx

## 三、主要结论及支持度
| 结论ID | 结论内容 | 支持度 | 关键数据 |
|--------|---------|--------|---------|
| CONC_001 | xxx | 强支持 | DATA_001, DATA_002 |
| CONC_002 | xxx | 弱支持 | DATA_003 |

## 四、关键问题摘要
| 问题ID | 严重程度 | 类型 | 描述 |
|--------|---------|------|------|
| ISSUE_001 | 严重 | 证据不足 | xxx |
| ISSUE_002 | 一般 | 合规问题 | xxx |

## 五、建议
- 建议1:xxx
- 建议2:xxx

输出3:问题清单

文件命名⚠️ 问题清单_{药品名称}_{报告类型}_{适应症}_{分析日期}.md

内容结构

# ⚠️ 问题清单
# {药品名称} {报告类型} 发现的问题
# 适应症:{适应症} | 分析日期:{分析日期}

---

## 问题汇总
| 问题ID | 严重程度 | 类型 | 描述 | 涉及数据 | 涉及结论 |
|--------|---------|------|------|---------|---------|
| ISSUE_001 | 严重 | 逻辑漏洞 | xxx | DATA_001 | CONC_001 |
| ISSUE_002 | 一般 | 合规问题 | xxx | DATA_003 | CONC_002 |
| ISSUE_003 | 提示 | 证据不足 | xxx | DATA_005 | CONC_003 |

---

## 问题详情

### ISSUE_001:{问题标题}
| 字段 | 内容 |
|------|------|
| **严重程度** | 严重 / 一般 / 提示 |
| **类型** | 逻辑漏洞 / 数据矛盾 / 证据不足 / 合规问题 / 缺失信息 |
| **描述** | xxx |
| **涉及数据** | [DATA_001], [DATA_002] |
| **涉及结论** | [CONC_001] |

**原报告相关内容**:
> {原报告中与此问题相关的描述}

**问题分析**:
> {LLM对该问题的详细分析}

**法规依据**:
- 《xxx》第x条
- 《xxx》指导原则

**建议措施**:
1. xxx
2. xxx

---

### ISSUE_002:(以此类推)

输出4:结构化JSON(增强版 - 供数据信息库使用)

{
  "library_version": "2.0",
  "schema_version": "2026.03.18",
  
  "drug_info": {
    "drug_id": "AUTO_GENERATED",
    "drug_name": "",
    "drug_code": "",
    "generic_name": "",
    "brand_names": [],
    "target": "",
    "mechanism": "",
    "drug_type": "化学药品/生物制品/中药/未知",
    "manufacturer": "",
    "indications": [],
    "dosage_form": "",
    "specifications": [],
    "first_analysis_date": "",                       # 首次分析日期
    "last_analysis_date": "",                       # 最近分析日期
    "total_reports_count": 0                         # 已分析报告数量
  },
  
  "report_meta": {
    "report_id": "AUTO_GENERATED",
    "report_type": "",
    "indication": "",
    "version": "1.0",
    "previous_version": null,
    "analysis_date": "",
    "report_date": "",
    "source": "",
    "source_type": "CDE/企业/第三方/自研",
    "review_stage": "Pre-IND/IND/临床I期/临床II期/临床III期/NDA/补充申请/上市后",
    "original_filename": "",
    "file_path": "",
    
    "completeness": "完整/基本完整/数据汇总/仅数据",
    "confidence_level": "高/中/低"
  },
  
  "retrieval_tags": {
    "disease_areas": [],
    "therapeutic_areas": [],
    "study_phases": [],
    "endpoints": [],
    "keywords": [],
    "regulatory_tags": [],
    "custom_tags": []
  },
  
  "data_points": [
    {
      "data_id": "DATA_001",
      "data_uuid": "AUTO_GENERATED_UUID",
      "title": "",
      "raw_content": "",
      "data_type": "数值型/表格型/描述性",
      "data_category": "有效性/安全性/质量/工艺/法规/市场/其他",
      "source_location": "第X页/第X章/图X/表X",
      "value": "",
      "unit": "",
      "comparator": "",
      "threshold": "",
      "pass_fail": "通过/未通过/不适用",
      "related_conclusions": ["CONC_001"],
      "llm_analysis": "",
      "confidence": "高/中/低",
      "source_attribution": "原报告/LLM推断"
    }
  ],
  
  "conclusions": [
    {
      "conc_id": "CONC_001",
      "conc_uuid": "AUTO_GENERATED_UUID",
      "title": "",
      "content": "",
      "conc_type": "有效性/安全性/质量可控/合规性/风险评估/市场预测/其他",
      "source_attribution": "原报告/LLM推断",
      "source_content": "",
      "llm_analysis": "",
      "supporting_data": ["DATA_001", "DATA_002"],
      "supporting_data_count": 2,
      "confidence": "强支持/弱支持/不支持/证据不足",
      "data_conflicts": [],
      "regulatory_alignment": "符合/部分符合/不符合/不明确",
      "related_issues": ["ISSUE_001"]
    }
  ],
  
  "issues": [
    {
      "issue_id": "ISSUE_001",
      "issue_uuid": "AUTO_GENERATED_UUID",
      "title": "",
      "severity": "严重/一般/提示",
      "issue_type": "逻辑漏洞/数据矛盾/证据不足/合规问题/缺失信息",
      "description": "",
      "related_data": ["DATA_xxx"],
      "related_conclusions": ["CONC_xxx"],
      "regulatory_reference": "",
      "llm_suggestion": "",
      "resolution_status": "待解决/已解决/不适用",
      "priority": 1
    }
  ],
  
  "regulatory_references": [
    {
      "regulation_name": "",
      "article": "",
      "requirement": "",
      "compliance_status": "符合/不符合/部分符合"
    }
  ],
  
  "relationships": {
    "drug_to_reports": ["report_id_1", "report_id_2"],
    "linked_drugs": [],
    "conflicts_with": []
  },
  
  "metadata": {
    "created_by": "pharma-report-analyzer",
    "created_date": "",
    "last_modified": "",
    "analysis_date": "",                              # 分析操作日期
    "report_date": "",                                # 原始报告日期
    "report_date_source": "封面/签发/正文/会议/未知",  # 日期来源
    "modification_history": [
      {
        "date": "",
        "action": "created/updated",
        "details": ""
      }
    ],
    "data_status": "active/archived/deprecated",
    "file_paths": {                                   # 文件路径记录
      "original_report": "",                          # 原始报告路径
      "analysis_report": "",                          # 分析报告路径
      "summary": "",                                  # 简要汇总路径
      "issue_list": "",                               # 问题清单路径
      "json_output": ""                              # JSON输出路径
    }
  }
}

ID生成规则

ID类型 格式 示例 说明
drug_id DRUG_{序号} DRUG_001 药品唯一标识
report_id RPT_{日期}_{序号} RPT_20260318_001 报告ID(每份报告唯一)
analysis_id ANA_{日期}_{序号}_v{版本} ANA_20260318_001_v1 每次分析的ID(同一报告多次分析时递增)
data_id DATA_{序号} DATA_001 数据点ID(每次分析内唯一)
conc_id CONC_{序号} CONC_001 结论ID(每次分析内唯一)
issue_id ISSUE_{序号} ISSUE_001 问题ID(每次分析内唯一)

说明

  • report_id:每份报告的唯一标识,用于跨系统对接和检索
  • analysis_id:同一报告的多次分析,生成不同的analysis_id(如 v1, v2...),历史版本同时保留
  • 每次分析内的 data_id/conc_id/issue_id 从001开始递增

保存位置

根目录

~/Documents/工作/药品报告分析/   # 分析结果(人类可读的报告)
~/Documents/工作/药品数据信息库/  # 结构化数据(供数据信息库使用)

日期确定规则

优先级

  1. 报告日期(首选):从报告中提取的日期,如封面日期、签发日期、报告正文中的日期
  2. 会议日期:沟通交流会纪要等取会议召开日期
  3. 无日期时处理:如无法获取报告日期,使用"无日期"或分析时的日期,并在元数据中注明

日期格式:统一使用 YYYYMMDD 格式

日期格式识别与处理

报告中的日期格式 处理方式 示例
2025年12月15日 转换为YYYYMMDD 20251215
2025.12.15 转换为YYYYMMDD 20251215
2025-12-15 转换为YYYYMMDD 20251215
2025/12/15 转换为YYYYMMDD 20251215
2025.12 取月末日,视为20251231 20251231
2025 视为20251231 20251231
无日期/无法识别 使用"无日期" 无日期
多日期(封面/正文/签发) 优先取签发日期,无签发则取封面日期 20251215

重要:日期作为文件命名的一部分,必须尽力识别。若原报告无任何日期信息,文件命名中使用"无日期",并在元数据中记录"报告日期:未知"

目录结构

📁 ~/Documents/工作/药品报告分析/              # 人类可读的分析结果
└── 📁 {药品名称}/                                 # 按药品名称分类
    ├── 📁 报告原文/                              # 原始报告副本(重命名保存)
    │   └── {report_id}_{药品名}_{申请人}_{报告类型}_{标识信息}_{补充信息}_{报告日期}.{pdf/docx/html}
    └── 📁 {report_id}_{报告类型}_{适应症}_{分析日期}/        # 分析结果目录
        ├── 📋 数据结论分析表_{药品名称}_{报告类型}_{适应症}_{分析日期}.md
        ├── 📄 简要汇总_{药品名称}_{报告类型}_{适应症}_{分析日期}.md
        └── ⚠️ 问题清单_{药品名称}_{报告类型}_{适应症}_{分析日期}.md

📁 ~/Documents/工作/药品数据信息库/              # 结构化数据(供检索和程序使用)
└── 📁 {药品名称}/                                 # 按药品名称分类
    ├── 📄 drug_info.json                        # 药品基础信息(全局一份)
    ├── 📄 retrieval_tags.json                   # 检索标签(全局一份)
    ├── 📄 metadata.json                        # 元数据(全局一份)
    └── 📁 reports/                             # 报告详情目录(按report_id分类)
        └── 📁 {report_id}/
            └── 📊 report_{report_id}_v{版本}.json   # 结构化数据

说明

报告原文文件名命名规则

格式

{report_id}_{药品/行业名}_{申请人/企业}_{报告类型}_{标识信息}_{补充信息}_{报告日期}.{扩展名}

字段说明

字段 必填 说明 示例
report_id 系统唯一标识 RPT_20260318_001
药品/行业名 药品名或行业领域 阿达木单抗、中国ADC行业
申请人/企业 申报企业或机构 信达生物、某某制药
报告类型 报告大类 临床III期试验报告、药学研究报告、GMP检查报告
标识信息 根据类型变化 适应症(临床)、研究内容(CMC)、车间(GMP)、偏差编号
补充信息 额外说明 制剂研究、长期稳定性、第一次发补
报告日期 原报告日期YYYYMMDD 20251215

各类型报告示例

# 临床试验报告
RPT_20260318_001_阿达木单抗_信达生物_临床III期试验报告_类风湿性关节炎_临床III期_20251215.pdf

# CMC/药学研究报告
RPT_20260318_002_阿达木单抗_信达生物_药学研究报告_注射液_处方筛选研究_20251120.pdf
RPT_20260318_003_阿达木单抗_信达生物_稳定性研究报告_注射液_长期稳定性_20251125.pdf

# GMP/偏差报告
RPT_20260318_005_某某制药_GMP检查报告_无菌车间_20251115.pdf
RPT_20260318_006_某某制药_偏差调查报告_OOS-2025-001_20251110.pdf

# 行业研究报告
RPT_20260318_007_中国ADC行业_行业研究报告_2025年_20251201.pdf
  • report_id:每份报告的唯一标识,格式 RPT_{日期}_{序号},如 RPT_20260318_001
  • 同一药品、同一适应症、同一阶段的多项研究:通过 report_id 区分
  • 药品报告分析目录:保存人类可读的.md文件
  • 药品数据信息库:保存结构化.json文件,供数据检索和程序调用

注意:增强版将药品基础信息(drug_info)和检索标签(retrieval_tags)独立存储,支持多份报告共享同一药品信息,便于后续数据信息库的高效检索。

可扩展性设计(增强版)

📁 药品报告分析/                              # 人类可读的分析结果
└── 📁 阿达木单抗/
    ├── 📁 报告原文/
    │   ├── RPT_20260318_001_阿达木单抗_信达生物_临床III期试验报告_类风湿性关节炎_临床III期_20251215.pdf
    │   ├── RPT_20260318_002_阿达木单抗_信达生物_药学研究报告_注射液_处方筛选研究_20251120.pdf
    │   ├── RPT_20260318_003_阿达木单抗_信达生物_稳定性研究报告_注射液_长期稳定性_20251125.pdf
    │   └── RPT_20260318_004_某某制药_GMP检查报告_无菌车间_20251115.pdf
    ├── 📁 RPT_20260318_001_临床III期试验报告_类风湿性关节炎_20260318/
    │   ├── 📋 数据结论分析表_阿达木单抗_临床III期试验报告_类风湿性关节炎_20260318.md
    │   ├── 📄 简要汇总_阿达木单抗_临床III期试验报告_类风湿性关节炎_20260318.md
    │   └── ⚠️ 问题清单_阿达木单抗_临床III期试验报告_类风湿性关节炎_20260318.md
    └── RPT_20260318_002_药学研究报告_注射液_20260318/
        └── ...

📁 药品数据信息库/                            # 结构化数据
└── 📁 阿达木单抗/
    ├── 📄 drug_info.json
    ├── 📄 retrieval_tags.json
    ├── 📄 metadata.json
    └── 📁 reports/
        ├── 📁 RPT_20260318_001/
        │   └── 📊 report_RPT_20260318_001_v1.json
        ├── 📁 RPT_20260318_002/
        │   └── 📊 report_RPT_20260318_002_v1.json
        └── 📁 RPT_20260318_003/
            └── 📊 report_RPT_20260318_003_v1.json

说明

  • report_id:每份报告的唯一ID,格式 RPT_{日期}_{序号}
  • 同一药品的多项研究:通过 report_id 区分
  • analysis_id:标识每次分析操作,用于同一报告的多次分析
  • 同一报告多次分析:版本递增(v1 → v2),同时保留历史版本
  • 结构化JSON只保存在数据信息库中,报告分析目录只保留.md文件

可扩展性设计(增强版)

增强版JSON预留以下扩展点:

{
  "drug_info": {
    "custom_fields": {},           // 自定义字段
    "external_links": {},          // 外部链接(CDE受理号、临床试验登记号等)
    "attachments": []              // 附件列表
  },
  "report_meta": {
    "cross_references": [],         // 关联的其他报告ID
    "related_submissions": []       // 关联的申报记录
  },
  "retrieval_tags": {
    "ai_generated_tags": [],        // AI自动生成的标签
    "user_tags": []                 // 用户自定义标签
  }
}

分析流程

Step 0:报告完整性评估(重要!)

在正式分析前,先评估报告的完整程度:

  1. 识别报告结构:是否有明确章节?是否有摘要/结论章节?
  2. 判断完整性级别
    • 完整:数据+分析+结论齐全
    • 基本完整:数据+结论,分析简略
    • 数据汇总:主要是表格数据,结论简单或无
    • 仅数据:原始数据,无结论
  3. 根据完整性调整分析策略

注意:对于不完整的报告,重点放在数据提取和基于现有信息的评估,不要强行得出原报告中不存在的结论。

Step 1:报告结构解析

  1. 识别报告类型和章节结构
  2. 提取报告元数据(标题、药品名称、申请人等)
  3. 定位关键章节(摘要、研究方法、数据、结论)

Step 2:数据与结论提取

  1. 提取数据点:识别报告中的关键数据,包括:

    • 数值型数据(检测值、统计数据、限度值)
    • 表格型数据(稳定性数据、检测结果汇总)
    • 描述性数据(研究描述、观察结果)
  2. 提取结论:识别报告中声称的结论,包括:

    • 有效性结论(疗效、安全性)
    • 质量结论(工艺可行、质量可控)
    • 合规性结论(符合法规要求)
    • 风险评估结论
  3. 无结论情况的处理

    • 如原报告无明确结论:标注"原报告无明确结论",由LLM基于数据推断潜在结论
    • 如结论简单:保留原结论,添加LLM深入分析作为补充
    • 如仅为Excel表格:提取表格数据,识别表格后的简要标注作为结论

Step 3:数据-结论关联分析

对每个结论,识别支持该结论的数据点,并评估:

支持度 定义
强支持 数据直接、充分支持结论,无重大矛盾
弱支持 数据部分支持结论,但存在不完整或间接之处
不支持 数据与结论相矛盾
证据不足 缺乏足够数据支持该结论

Step 4:法规符合性判断

检查报告内容是否符合相关法规和指导原则要求:

  • 《药品注册管理办法》
  • 《中国药典》
  • ICH指导原则(Q系列:质量、M系列:安全性、S系列:有效性)
  • CDE发布的技术指导原则
  • GMP相关法规

如发现问题,标注问题类型、描述、法规依据。

Step 5:问题识别

识别并记录以下类型的问题:

问题类型 说明
逻辑漏洞 以偏概全、因果谬误、偷换概念
数据矛盾 前后数据不一致、数据与结论矛盾
证据不足 缺乏必要数据支持结论
合规问题 不符合法规/指导原则要求
缺失信息 重要信息缺失或未说明

常用法规和指导原则参考

注册申报类

  • 《药品注册管理办法》(国家市场监管总局令第27号)
  • 《化学药品注册分类及申报资料要求》
  • 《生物制品注册分类及申报资料要求》
  • 《药品注册申报资料格式体例与整理规范》
  • ICH M4 CTD格式

药学研究类

  • 《化学药品药学研究变更技术指导原则》
  • 《药品注册检验工作程序和技术要求规范》
  • 《ICH Q3D 元素杂质指导原则》
  • 《ICH Q6A 规格:设置新原料药和制剂的接受标准》

临床研究类

  • 《药物临床试验质量管理规范》
  • 《ICH E3 临床研究报告的结构与内容》
  • 《药物临床试验伦理审查工作指导原则》

非临床研究类

  • 《药物非临床研究质量管理规范》
  • 《ICH M3(R2) 人用药物临床试验安全性研究》
  • 《ICH S6(R1) 生物制品的临床前安全性评价》

生产监管类

  • 《药品生产质量管理规范》(GMP)及附录
  • 《药品召回管理办法》
  • 《药品不良反应报告和监测管理办法》

注意:详细法规内容请查阅references/目录下的法规参考文件,或在分析时通过web-access skill获取最新法规。

关键分析要点

药学研究报告

  • 工艺研究是否充分,数据是否能支持工艺可行性
  • 质量研究是否完整,方法学验证是否充分
  • 稳定性数据是否充分,是否能支持有效期
  • 变更前后质量对比是否充分

临床试验报告

  • 疗效终点是否达到预设统计学要求
  • 安全性数据是否充分,不良反应是否可接受
  • 亚组分析是否充分,结论外推是否合理
  • 与同类产品对比是否充分

GMP检查/偏差报告

  • 根本原因分析是否到位
  • CAPA是否充分有效
  • 纠正措施是否可验证
  • 风险评估是否合理

注册申报资料

  • 研究内容是否完整,是否符合CTD格式要求
  • 数据是否充分支持结论
  • 变更是否按照相关指导原则进行
  • 法规符合性声明是否准确

医药行业/行情报告

  • 市场数据来源是否可靠,样本量是否充分
  • 预测假设是否合理,是否有明确依据
  • 竞争格局分析是否全面,数据是否最新
  • 结论与数据是否存在夸大或选择性呈现
  • 投资建议是否有充分的风险提示

与数据信息库的对接

本skill的输出(增强版JSON格式)在分析报告时同步保存到数据信息库。

数据同步机制

分析报告 → 生成结构化JSON → 同时保存到两个位置
                              │
                              ├─→ 药品报告分析文件夹(人类可读)
                              └─→ 药品数据信息库(结构化存储)

存储位置

数据类型 存储位置
药品基础信息 ~/Documents/工作/药品数据信息库/{药品名称}/drug_info.json
检索标签 ~/Documents/工作/药品数据信息库/{药品名称}/retrieval_tags.json
元数据 ~/Documents/工作/药品数据信息库/{药品名称}/metadata.json
结构化数据 ~/Documents/工作/药品数据信息库/{药品名称}/{报告名}_{分析ID}_{版本}.json

多次分析处理

场景 处理方式
同一药品新报告 新增JSON文件
同一报告首次分析 新增JSON文件,版本=v1
同一报告再次分析 新增JSON文件,版本=v2/v3,保留历史版本
drug_info/retrieval_tags 每次分析时同步更新

检索维度设计

增强版JSON支持以下检索维度:

维度 字段路径 示例值
药品名称 drug_info.drug_name 阿达木单抗
靶点 drug_info.target TNF-α
适应症 drug_info.indications ["类风湿性关节炎", "银屑病"]
审评阶段 report_meta.review_stage 临床III期
报告类型 report_meta.report_type 临床试验报告
结论类型 conclusions[].conc_type 有效性/安全性
支持度 conclusions[].confidence 强支持/弱支持
问题严重程度 issues[].severity 严重/一般/提示
法规标签 retrieval_tags.regulatory_tags ICH-Q3D, GMP附录
关键词 retrieval_tags.keywords AC R20, 生物等效性

自动化撰写时的数据调用

未来"自动化撰写"skill调用数据信息库时的典型流程:

1. 明确撰写目标
   └─→ 例:"撰写某药品临床III期总结报告的有效性章节"

2. 检索相关数据
   ├─→ 按药品名称检索 drug_info
   ├─→ 按报告类型筛选 report_meta.review_stage = "临床III期"
   ├─→ 按结论类型筛选 conclusions[].conc_type = "有效性"
   └─→ 按支持度排序 confidence = "强支持"

3. 提取可用数据点
   ├─→ data_points[].value (数值)
   ├─→ data_points[].source_location (来源页码)
   └─→ conclusions[].content (结论描述)

4. 生成内容并标注来源
   └─→ 输出时引用 data_id/conc_id,保持溯源

5. 人工审核与修改

分析ID与版本说明

字段 说明
analysis_id 每次分析的ID,格式:ANA_{日期}_{序号}
version 版本号,如 v1, v2, v3...
previous_version 上一个版本号(用于追溯)

同一报告多次分析时:version递增(如 v1 → v2),历史版本保留,不覆盖

与未来skill的接口约定

# 伪代码:数据信息库检索接口
def query_drug_database(
    drug_name: str = None,
    indication: str = None,
    review_stage: str = None,
    conc_type: str = None,
    min_confidence: str = None,
    keywords: list = None
) -> list[ReportData]:
    """
    返回匹配的report_id列表及摘要
    """
    pass

def get_report_detail(report_id: str) -> dict:
    """
    返回完整报告JSON(含data_points, conclusions, issues)
    """
    pass

资源文件

references/

  • regulations.md - 常用药品法规清单及查询指引
  • ctd_structure.md - CTD申报资料结构参考

scripts/

脚本 功能 使用方式
mixed_pdf_processor.py 混合PDF分离处理(文字页+扫描页) 作为中间步骤被调用,不保存中间文件
incremental_check.py 增量更新检测(自动处理版本) python incremental_check.py <药品名> <申请人> <报告类型> <适应症> [文件路径]

mixed_pdf_processor.py

  • 作用:分析混合PDF,识别文字页和扫描页
  • 特点:直接返回结果,不保存中间文件
  • 输出
    • 每页类型分析(文字页/扫描页)
    • 文字页文本内容
    • 扫描页页码列表(待OCR处理)

incremental_check.py 用法

# 检测增量更新
python scripts/incremental_check.py 阿达木单抗 信达生物 临床III期试验报告 类风湿性关节炎 /path/to/report.pdf

核心逻辑

  1. MD5相同 → same_report(跳过)
  2. MD5不同 → 正文内容比对
    • 正文相同 → same_report(跳过)
    • 正文不同 → new_version(自动创建新版本)

返回结果

  • new_drug: 新药品,创建新记录
  • new_report: 已有药品,新增报告
  • same_report: 正文相同,跳过分析
  • new_version: 正文不同,自动创建新版本(v2, v3...)

使用提示:本skill为分析型skill,核心价值在于结构化提取和逻辑分析。分析深度可根据用户需求调整,重要报告建议进行深度分析。