AutoMedinfo/Readme.md

281 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 益普生医学信息支持系统 - 软件开发需求文档
## 1. 项目概述
### 1.1 项目目的
构建一个智能化的医学信息支持系统,解决企业在受到客户(主要是医生)的信息支持需求时,能够利用该网站快速处理信息,给到客户支持。
### 1.2 核心价值
### 1.2.1 提高医学信息查询效率
- 从信息申请的文本中智能化提取出用于后续检索的关键词
- 首先在已建立的知识库中进行查询,而后在查询外部公开网络中的信息
- 通过AI对查询的结果进行智能化分析
- 自动化文献下载和管理
### 1.2.2 标准化信息处理流程
- 规范化回复内容生成
## 2. 详细业务流程
### 2.1 咨询需求创建阶段
1. **客户需求提交**:客户通过邮件向益普生提出需求(如:请提供达菲林最新的临床试验数据)
2. **需求记录**:医学信息团队记录需求并指派专门人员处理
3. **系统录入**:医学信息专员将查询内容录入系统
- **必填字段**:查询内容描述
- **可选字段**:邮箱(非必填)、姓名、联系方式等(非必填)
### 2.2 智能关键词提取阶段
4. **AI关键词提取**系统通过AI从查询申请的具体描述中自动提取关键词
- 提取范围药品中文名称阿司匹林、英文名称Aspirin、查询请求事项儿童用药中的安全性注意事项
- 该提取动作通过调用Dify配置的AI流程来实现。Dify的API URL为https://api.dify.ai/v1 API Key为app-croZF0SSV5fiyXbK3neGrOT6
5. **关键词展示与确认**:在页面显示提取的关键词,供用户确认和修改
6. **关键词优化**:用户可添加、删除或修改关键词,形成检索条件,检查并确认检索条件的准确性
### 2.3 数据源选择阶段
7. **检索范围选择**:用户通过按钮触发选择需要在以下范围进行查找,可以多选:
- **内部数据**:企业自有研究数据、历史回复、内部文献
- **知识库**:已整理的企业知识库数据
- **知网**:中国知网数据库
- **ClinicalTrials**:临床试验数据库
### 2.4 信息检索与结果处理阶段
8. **信息检索**:根据选择的数据源和构建好的检索条件进行检索
9. **结果展示**:根据每一数据源分别在页面显示检索结果列表
10. **结果筛选**:用户对每条记录进行判断和处理:
- **错误信息**:标记为错误并删除
- **纳入回复参考资料**:选择是否纳入最终回复
- **下载全文**:选择是否需要下载全文
### 2.5 文献下载管理阶段
11. **下载任务生成**:对需要下载全文的文献生成下载链接
12. **待下载页面**:在专门的待下载全文页面显示所有下载任务
13. **自动化下载**后续开发自动化工具联合使用RPA工具影刀读取待下载任务并执行下载
### 2.6 智能分析与回复生成阶段
14. **资料整合**:将用户勾选的文件和资料进行整合
15. **AI智能分析**通过调用AI智能体阅读和分析所有选定资料AI智能体的API地址与key的信息将写到代码中
16. **回复生成**:形成与待回答问题相关的标准化回复,包含:
- **问题**:原始查询问题
- **查询到的资料**:相关资料的简要说明
- **总结**:基于资料的核心观点总结
- **详细的资料列表**:完整的参考资料清单
### 2.7 审核与发送阶段
17. **内容审核**:医学信息人员对生成的回复进行审核
18. **最终确认**:确认无误后发送给客户
### 2.8 处理状态显示
19. **任务状态**:查询任务的状态包括,
- 创建成功 (查询创建后则状态自动标记为创建成功)
- 关键词提取
- 检索范围确定
- 检索结果预览
- 生成回复
- 修改回复
- 下载文献
- 发送回复
### 2.9 状态机与流程编排(按钮驱动)
为保证流程可视、可控、可追踪,系统引入显式状态机。每个状态通过页面上的“主要动作按钮”触发进入下一状态;也支持必要的回退。
- **状态定义State**
- 创建成功 (CREATED)
- 关键词提取 (KEYWORD_EXTRACTION)
- 检索范围确定 (SCOPE_CONFIRMED)
- 检索结果预览 (RESULTS_REVIEW)
- 下载文献 (DOWNLOAD_PENDING)
- 生成回复 (DRAFT_GENERATION)
- 修改回复 (REVISION)
- 发送回复 (SENT)
- **核心转移Transitions及触发按钮Action**
- CREATED → KEYWORD_EXTRACTION按钮“开始提取关键词”
- KEYWORD_EXTRACTION → SCOPE_CONFIRMED按钮“确认关键词并选择数据源”
- SCOPE_CONFIRMED → RESULTS_REVIEW按钮“开始检索”
- RESULTS_REVIEW → DOWNLOAD_PENDING按钮“生成下载任务”当勾选需下载全文的文献
- RESULTS_REVIEW → DRAFT_GENERATION按钮“生成草稿回复”当已选定参考资料
- DOWNLOAD_PENDING → RESULTS_REVIEW按钮“刷新下载结果并回到预览”下载完成后复核
- DRAFT_GENERATION → REVISION按钮“进入编辑修改”
- REVISION → SENT按钮“发送最终回复”
- 允许回退:
- RESULTS_REVIEW → SCOPE_CONFIRMED按钮“返回调整检索范围”
- REVISION → RESULTS_REVIEW按钮“返回结果预览”
- **前端页面与按钮布局建议**
- 咨询详情页(`InquiryDetail.vue`)顶部固定“状态徽标 + 主动作按钮”区,底部提供上下文次要操作。
- 不同状态下展示不同的主要按钮,保持单一、明确的下一步。
- 当必需输入或选择未完成时,主要按钮置灰并给出就绪条件提示。
- **后端状态管理约束**
- 单一来源:后端持久化字段记录任务状态,前端仅展示并通过 API 触发转移。
- 转移校验:后端校验当前状态是否允许进入目标状态;对缺失前置条件(如未选资料却生成草稿)返回 4xx 并附带原因。
### 2.10 文本流程图Mermaid
可在支持 Mermaid 的查看器中直接渲染:
```mermaid
flowchart TD
CREATED[创建成功] -->|开始提取关键词| KEYWORD[关键词提取]
KEYWORD -->|确认关键词并选择数据源| SCOPE[检索范围确定]
SCOPE -->|开始检索| PREVIEW[检索结果预览]
PREVIEW -->|生成下载任务| DL[下载文献]
DL -->|刷新下载结果并回到预览| PREVIEW
PREVIEW -->|生成草稿回复| DRAFT[生成回复]
DRAFT -->|进入编辑修改| REV[修改回复]
REV -->|发送最终回复| SENT[发送回复]
PREVIEW -->|返回调整检索范围| SCOPE
REV -->|返回结果预览| PREVIEW
```
### 2.11 API 与前端动作映射(概要)
- **开始提取关键词**
- 前端:在 `InquiryDetail.vue` 调用 `POST /api/inquiry/{id}/keywords/extract`
- 成功:后端更新为 KEYWORD_EXTRACTION 或直接返回关键词,前端进入关键词确认 UI
- **确认关键词并选择数据源**
- 前端:`POST /api/inquiry/{id}/scope` 提交关键词与数据源清单
- 成功:后端更新为 SCOPE_CONFIRMED
- **开始检索**
- 前端:`POST /api/inquiry/{id}/search`(异步)
- 成功:后端更新为 RESULTS_REVIEW并可分页拉取结果 `GET /api/inquiry/{id}/results`
- **生成下载任务**
- 前端:`POST /api/inquiry/{id}/downloads` 提交选中的条目 ID
- 成功:后端更新为 DOWNLOAD_PENDING下载进度 `GET /api/download-tasks`
- **生成草稿回复**
- 前端:`POST /api/inquiry/{id}/response/draft` 提交选定资料引用
- 成功:后端更新为 DRAFT_GENERATION
- **进入编辑修改**
- 前端:进入富文本/结构化编辑 UI保存 `PUT /api/inquiry/{id}/response`
- 成功:后端更新为 REVISION
- **发送最终回复**
- 前端:`POST /api/inquiry/{id}/send`
- 成功:后端更新为 SENT记录审计日志
## 3. 功能模块详细设计
### 3.1 用户管理模块
- **用户注册/登录**:支持多种角色(医学信息专员、管理员等)
- **权限管理**:基于角色的访问控制
- **用户信息管理**:个人资料维护
### 3.2 咨询需求管理模块
- **需求创建**:支持手动填写查询需求
- **需求列表**:查看所有咨询需求
- **需求详情**:查看具体需求信息
- **需求状态管理**:跟踪需求处理状态
### 3.3 智能关键词提取模块
- **AI关键词提取**基于Dify API的智能提取
- **关键词编辑**:用户可修改、添加、删除关键词
- **关键词历史**:保存历史提取记录
- **关键词模板**:常用关键词模板管理
### 3.4 数据源管理模块
- **数据源配置**:配置各种数据源的连接信息
- **检索策略**:定义检索顺序和策略
- **数据源状态监控**:监控各数据源可用性
### 3.5 信息检索模块
- **多源检索**支持内部数据、知识库、知网、ClinicalTrials等
- **检索结果管理**:结果展示、筛选、排序
- **检索历史**:保存检索记录和结果
### 3.6 文献下载管理模块
- **下载任务管理**:创建、查看、管理下载任务
- **下载状态跟踪**:实时跟踪下载进度
- **文件存储管理**:管理下载的文件
- **下载配置**:配置下载账号和路径
### 3.7 AI智能分析模块
- **文档阅读**AI智能体阅读选定资料
- **内容分析**:提取关键信息和观点
- **回复生成**:生成标准化回复内容
- **格式规范**:确保回复格式符合要求
### 3.8 知识库管理模块
- **知识库配置**:管理各类知识库连接
- **内容管理**:添加、编辑、删除知识库内容
- **分类管理**:知识库内容分类和标签
- **搜索功能**:知识库内容搜索
### 3.9 系统配置模块
- **API配置**配置Dify和其他API密钥DIFY_API_URL=https://api.dify.ai/v1
DIFY_API_KEY=your-dify-api-key-here
- **系统参数**:配置系统运行参数
- **数据源配置**:配置各种数据源连接
- **下载配置**:配置文献下载相关参数
## 4. 技术架构要求
### 4.1 开发技术栈
- **后端**Java + Spring Boot
- **前端**Vue3
- **数据库**MySQL 8.0+
- **AI引擎**Dify API
### 4.2 系统架构
- **架构模式**:前后端分离
- **API设计**RESTful API
- **安全认证**JWT Token
- **文件存储**:本地存储
### 4.3 部署要求
- **容器化**支持Docker部署
- **环境配置**:支持多环境配置
- **监控日志**:集成日志和监控系统
## 5. 数据源配置要求
### 5.1 内部数据源
- **企业研究数据**:内部研究项目数据
- **历史回复数据**:过往咨询回复记录
- **内部文献**:企业内部技术文档和报告
### 5.2 公开数据源
- **监管机构网站**FDA、EMA等监管数据
- **知网**:中国知网学术文献
- **PubMed**:医学文献数据库
- **EMBASE**:生物医学文献数据库
- **ClinicalTrials.gov**:临床试验数据库
### 5.3 扩展数据源
- **疾病数据**:疾病相关信息数据库
- **药物数据**:药物信息数据库
- **关联数据**:疾病-药物关联数据
## 6. 界面设计要求
### 6.1 整体设计原则
- **用户友好**:界面简洁直观,操作便捷
- **响应式设计**:支持多种屏幕尺寸
- **一致性**:保持界面风格统一
### 6.2 关键页面设计
- **咨询需求创建页面**:简化表单,突出必填项
- **关键词确认页面**:清晰展示提取结果,支持编辑
- **数据源选择页面**:直观的复选框选择界面
- **检索结果页面**:列表展示,支持批量操作
- **待下载页面**:任务列表,支持批量下载
- **回复生成页面**:分步骤展示生成过程
## 7. 非功能性需求
### 7.1 性能要求
- **响应时间**:页面加载时间 < 3秒
- **并发处理**支持多用户同时操作
- **数据处理**支持大量文献数据处理
### 7.2 安全要求
- **数据安全**敏感数据加密存储
- **访问控制**基于角色的权限管理
- **审计日志**记录所有操作日志
### 7.3 可维护性
- **代码规范**遵循Java和Vue开发规范
- **文档完整**提供完整的API和用户文档
- **模块化设计**便于功能扩展和维护