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