230 lines
9.2 KiB
Markdown
230 lines
9.2 KiB
Markdown
# 医学信息支持系统 - 项目结构说明
|
||
|
||
## 项目概述
|
||
|
||
本项目是为益普生(Ipsen)开发的医学信息支持系统,旨在帮助医学信息团队快速处理客户(主要是医生)的信息支持需求。
|
||
|
||
## 技术栈
|
||
|
||
### 后端
|
||
- **Java 17**
|
||
- **Spring Boot 3.2.0**
|
||
- **Spring Data JPA**
|
||
- **Spring Security**
|
||
- **MySQL 8.0**
|
||
- **Maven**
|
||
|
||
### 前端
|
||
- **Vue 3**
|
||
- **Vite**
|
||
- **Element Plus**
|
||
- **Pinia** (状态管理)
|
||
- **Vue Router**
|
||
- **Axios**
|
||
|
||
### 部署
|
||
- **Docker**
|
||
- **Docker Compose**
|
||
- **Nginx**
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
文献流程/
|
||
├── backend/ # 后端Spring Boot项目
|
||
│ ├── src/
|
||
│ │ ├── main/
|
||
│ │ │ ├── java/com/ipsen/medical/
|
||
│ │ │ │ ├── MedicalInfoApplication.java # 主应用类
|
||
│ │ │ │ ├── controller/ # 控制器层
|
||
│ │ │ │ │ ├── InquiryController.java
|
||
│ │ │ │ │ ├── KnowledgeBaseController.java
|
||
│ │ │ │ │ └── LiteratureController.java
|
||
│ │ │ │ ├── service/ # 服务层接口
|
||
│ │ │ │ │ ├── InquiryService.java
|
||
│ │ │ │ │ ├── KnowledgeBaseService.java
|
||
│ │ │ │ │ ├── LiteratureService.java
|
||
│ │ │ │ │ ├── DifyService.java
|
||
│ │ │ │ │ └── ExcelParserService.java
|
||
│ │ │ │ ├── service/impl/ # 服务层实现
|
||
│ │ │ │ │ ├── InquiryServiceImpl.java
|
||
│ │ │ │ │ ├── KnowledgeBaseServiceImpl.java
|
||
│ │ │ │ │ ├── LiteratureServiceImpl.java
|
||
│ │ │ │ │ ├── DifyServiceImpl.java
|
||
│ │ │ │ │ └── ExcelParserServiceImpl.java
|
||
│ │ │ │ ├── entity/ # 实体类
|
||
│ │ │ │ │ ├── InquiryRequest.java
|
||
│ │ │ │ │ ├── KnowledgeBase.java
|
||
│ │ │ │ │ ├── Literature.java
|
||
│ │ │ │ │ ├── User.java
|
||
│ │ │ │ │ └── AuditLog.java
|
||
│ │ │ │ ├── repository/ # 数据访问层
|
||
│ │ │ │ │ ├── InquiryRequestRepository.java
|
||
│ │ │ │ │ ├── KnowledgeBaseRepository.java
|
||
│ │ │ │ │ ├── LiteratureRepository.java
|
||
│ │ │ │ │ ├── UserRepository.java
|
||
│ │ │ │ │ └── AuditLogRepository.java
|
||
│ │ │ │ └── dto/ # 数据传输对象
|
||
│ │ │ │ ├── ApiResponse.java
|
||
│ │ │ │ ├── InquiryRequestDTO.java
|
||
│ │ │ │ ├── KnowledgeBaseDTO.java
|
||
│ │ │ │ └── LiteratureDTO.java
|
||
│ │ │ └── resources/
|
||
│ │ │ └── application.yml # 应用配置
|
||
│ │ └── test/ # 测试代码
|
||
│ ├── pom.xml # Maven配置
|
||
│ ├── Dockerfile # Docker构建文件
|
||
│ └── .gitignore
|
||
│
|
||
├── frontend/ # 前端Vue3项目
|
||
│ ├── src/
|
||
│ │ ├── api/ # API接口
|
||
│ │ │ ├── inquiry.js
|
||
│ │ │ ├── knowledge.js
|
||
│ │ │ └── literature.js
|
||
│ │ ├── assets/ # 静态资源
|
||
│ │ ├── components/ # 通用组件
|
||
│ │ ├── layout/ # 布局组件
|
||
│ │ │ └── index.vue
|
||
│ │ ├── router/ # 路由配置
|
||
│ │ │ └── index.js
|
||
│ │ ├── store/ # 状态管理
|
||
│ │ ├── utils/ # 工具函数
|
||
│ │ │ └── request.js
|
||
│ │ ├── views/ # 页面组件
|
||
│ │ │ ├── Dashboard.vue # 工作台
|
||
│ │ │ ├── Login.vue # 登录页
|
||
│ │ │ ├── inquiry/ # 查询管理
|
||
│ │ │ │ ├── InquiryList.vue
|
||
│ │ │ │ ├── InquiryCreate.vue
|
||
│ │ │ │ └── InquiryDetail.vue
|
||
│ │ │ ├── knowledge/ # 知识库管理
|
||
│ │ │ │ └── KnowledgeList.vue
|
||
│ │ │ └── system/ # 系统设置
|
||
│ │ │ ├── SystemConfig.vue
|
||
│ │ │ └── UserManagement.vue
|
||
│ │ ├── App.vue # 根组件
|
||
│ │ └── main.js # 入口文件
|
||
│ ├── index.html
|
||
│ ├── package.json # npm配置
|
||
│ ├── vite.config.js # Vite配置
|
||
│ ├── nginx.conf # Nginx配置
|
||
│ ├── Dockerfile # Docker构建文件
|
||
│ └── .gitignore
|
||
│
|
||
├── database/ # 数据库脚本
|
||
│ ├── schema.sql # 数据库结构
|
||
│ └── sample_data.sql # 示例数据
|
||
│
|
||
├── docker-compose.yml # Docker Compose配置
|
||
├── .env.example # 环境变量示例
|
||
├── .dockerignore # Docker忽略文件
|
||
├── Readme.md # 项目说明(需求文档)
|
||
└── PROJECT_STRUCTURE.md # 项目结构说明(本文件)
|
||
```
|
||
|
||
## 核心功能模块
|
||
|
||
### 1. 查询请求管理 (Inquiry Management)
|
||
- 上传标准化表格或手动创建查询请求
|
||
- 自动提取关键词(药物名称、疾病、问题)
|
||
- 执行多层次信息检索
|
||
- 生成回复内容
|
||
- 审核流程管理
|
||
- 文献下载
|
||
|
||
### 2. 知识库管理 (Knowledge Base Management)
|
||
- 支持三种类型知识库:
|
||
- **自有数据 (INTERNAL)**: 企业研究、历史回复、内部文献
|
||
- **公开数据 (PUBLIC)**: PubMed、EMBASE、知网、ClinicalTrials.gov
|
||
- **扩展数据 (EXTENDED)**: 疾病药物关联数据
|
||
- 优先级配置
|
||
- 动态启用/禁用
|
||
|
||
### 3. 文献管理 (Literature Management)
|
||
- 文献检索结果展示
|
||
- 文献选择
|
||
- 批量下载
|
||
- 多数据库账号配置
|
||
|
||
### 4. 系统配置 (System Configuration)
|
||
- Dify AI引擎配置
|
||
- 大模型API配置
|
||
- 文献下载账号配置
|
||
- 用户管理
|
||
|
||
## 数据库设计
|
||
|
||
### 主要表结构
|
||
|
||
1. **users** - 用户表
|
||
- 管理员 (ADMIN)
|
||
- 医学信息专员 (MEDICAL_SPECIALIST)
|
||
- 审核人员 (REVIEWER)
|
||
|
||
2. **inquiry_requests** - 查询请求表
|
||
- 请求状态流转:PENDING → KEYWORD_EXTRACTED → SEARCHING → SEARCH_COMPLETED → UNDER_REVIEW → DOWNLOADING → COMPLETED
|
||
|
||
3. **knowledge_bases** - 知识库表
|
||
- 类型、优先级、配置管理
|
||
|
||
4. **literatures** - 文献表
|
||
- 文献信息、下载状态
|
||
|
||
5. **audit_logs** - 审核日志表
|
||
- 操作追踪、审核记录
|
||
|
||
## API接口
|
||
|
||
### 查询管理 API
|
||
- `POST /api/inquiries/upload` - 上传查询表格
|
||
- `POST /api/inquiries` - 创建查询请求
|
||
- `GET /api/inquiries` - 获取查询列表
|
||
- `GET /api/inquiries/{id}` - 获取查询详情
|
||
- `POST /api/inquiries/{id}/extract-keywords` - 提取关键词
|
||
- `POST /api/inquiries/{id}/search` - 执行检索
|
||
- `POST /api/inquiries/{id}/generate-response` - 生成回复
|
||
- `POST /api/inquiries/{id}/review` - 审核回复
|
||
- `POST /api/inquiries/{id}/complete` - 完成处理
|
||
|
||
### 知识库管理 API
|
||
- `GET /api/knowledge-bases` - 获取知识库列表
|
||
- `POST /api/knowledge-bases` - 创建知识库
|
||
- `PUT /api/knowledge-bases/{id}` - 更新知识库
|
||
- `DELETE /api/knowledge-bases/{id}` - 删除知识库
|
||
- `PATCH /api/knowledge-bases/{id}/toggle` - 启用/禁用
|
||
|
||
### 文献管理 API
|
||
- `GET /api/literatures/inquiry/{inquiryId}` - 获取文献列表
|
||
- `POST /api/literatures/{id}/select` - 选择文献
|
||
- `POST /api/literatures/{id}/download` - 下载文献
|
||
- `POST /api/literatures/inquiry/{inquiryId}/download-selected` - 批量下载
|
||
|
||
## 工作流程
|
||
|
||
1. **接收请求**: 医学信息专员上传标准化表格或手动填写查询内容
|
||
2. **关键词提取**: 系统调用Dify API提取关键词
|
||
3. **信息检索**: 按优先级在各知识库中检索相关信息
|
||
4. **生成回复**: 系统整理检索结果,生成回复草稿
|
||
5. **人工审核**: 审核人员审核回复内容
|
||
6. **下载文献**: 系统下载选中的文献
|
||
7. **完成处理**: 将回复和文献发送给客户
|
||
|
||
## 扩展点
|
||
|
||
系统设计了多个扩展点,便于后续功能增强:
|
||
|
||
1. **AI引擎**: 使用Dify作为AI引擎,支持切换不同的大模型
|
||
2. **知识库**: 支持动态添加新的知识库类型
|
||
3. **文献下载**: 支持添加新的文献数据库
|
||
4. **审核流程**: 可扩展多级审核流程
|
||
5. **权限管理**: 基于角色的权限控制
|
||
|
||
## 开发说明
|
||
|
||
详细的部署和开发说明请参考 `DEPLOYMENT.md` 文件。
|
||
|
||
|
||
|
||
|