药品研究报告分析解读。用于分析药品开发、生产、监管、注册申报、沟通交流、医药行业/行情等领域的各类报告,评估报告中的数据对结论的支持程度,识别逻辑问题,检查是否符合法规和指导原则要求。
Resources
10Install
npx skillscat add wangyunchao2023/auto-optimize-skills Install via the SkillsCat registry.
药品研究报告分析解读
概述
本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(扫描版) | 需先进行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/工作/药品数据信息库/ # 结构化数据(供数据信息库使用)日期确定规则
优先级:
- 报告日期(首选):从报告中提取的日期,如封面日期、签发日期、报告正文中的日期
- 会议日期:沟通交流会纪要等取会议召开日期
- 无日期时处理:如无法获取报告日期,使用"无日期"或分析时的日期,并在元数据中注明
日期格式:统一使用 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:报告完整性评估(重要!)
在正式分析前,先评估报告的完整程度:
- 识别报告结构:是否有明确章节?是否有摘要/结论章节?
- 判断完整性级别:
- 完整:数据+分析+结论齐全
- 基本完整:数据+结论,分析简略
- 数据汇总:主要是表格数据,结论简单或无
- 仅数据:原始数据,无结论
- 根据完整性调整分析策略
注意:对于不完整的报告,重点放在数据提取和基于现有信息的评估,不要强行得出原报告中不存在的结论。
Step 1:报告结构解析
- 识别报告类型和章节结构
- 提取报告元数据(标题、药品名称、申请人等)
- 定位关键章节(摘要、研究方法、数据、结论)
Step 2:数据与结论提取
提取数据点:识别报告中的关键数据,包括:
- 数值型数据(检测值、统计数据、限度值)
- 表格型数据(稳定性数据、检测结果汇总)
- 描述性数据(研究描述、观察结果)
提取结论:识别报告中声称的结论,包括:
- 有效性结论(疗效、安全性)
- 质量结论(工艺可行、质量可控)
- 合规性结论(符合法规要求)
- 风险评估结论
无结论情况的处理:
- 如原报告无明确结论:标注"原报告无明确结论",由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核心逻辑:
- MD5相同 → same_report(跳过)
- MD5不同 → 正文内容比对
- 正文相同 → same_report(跳过)
- 正文不同 → new_version(自动创建新版本)
返回结果:
new_drug: 新药品,创建新记录new_report: 已有药品,新增报告same_report: 正文相同,跳过分析new_version: 正文不同,自动创建新版本(v2, v3...)
使用提示:本skill为分析型skill,核心价值在于结构化提取和逻辑分析。分析深度可根据用户需求调整,重要报告建议进行深度分析。