9.2 KiB
9.2 KiB
医学信息支持系统 - 项目结构说明
项目概述
本项目是为益普生(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配置
- 文献下载账号配置
- 用户管理
数据库设计
主要表结构
-
users - 用户表
- 管理员 (ADMIN)
- 医学信息专员 (MEDICAL_SPECIALIST)
- 审核人员 (REVIEWER)
-
inquiry_requests - 查询请求表
- 请求状态流转:PENDING → KEYWORD_EXTRACTED → SEARCHING → SEARCH_COMPLETED → UNDER_REVIEW → DOWNLOADING → COMPLETED
-
knowledge_bases - 知识库表
- 类型、优先级、配置管理
-
literatures - 文献表
- 文献信息、下载状态
-
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- 批量下载
工作流程
- 接收请求: 医学信息专员上传标准化表格或手动填写查询内容
- 关键词提取: 系统调用Dify API提取关键词
- 信息检索: 按优先级在各知识库中检索相关信息
- 生成回复: 系统整理检索结果,生成回复草稿
- 人工审核: 审核人员审核回复内容
- 下载文献: 系统下载选中的文献
- 完成处理: 将回复和文献发送给客户
扩展点
系统设计了多个扩展点,便于后续功能增强:
- AI引擎: 使用Dify作为AI引擎,支持切换不同的大模型
- 知识库: 支持动态添加新的知识库类型
- 文献下载: 支持添加新的文献数据库
- 审核流程: 可扩展多级审核流程
- 权限管理: 基于角色的权限控制
开发说明
详细的部署和开发说明请参考 DEPLOYMENT.md 文件。