AutoMedinfo/PROJECT_STRUCTURE.md

9.2 KiB
Raw Blame History

医学信息支持系统 - 项目结构说明

项目概述

本项目是为益普生(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 文件。