281 lines
12 KiB
Markdown
281 lines
12 KiB
Markdown
# 益普生医学信息支持系统 - 软件开发需求文档
|
||
|
||
## 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和用户文档
|
||
- **模块化设计**:便于功能扩展和维护
|
||
|
||
|