AutoMedinfo/PROJECT_STRUCTURE.md

230 lines
9.2 KiB
Markdown
Raw 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.

# 医学信息支持系统 - 项目结构说明
## 项目概述
本项目是为益普生(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` 文件。