后端开发完成说明.md 12 KB

医学影像智能质控系统 - 后端开发完成说明

项目概述

基于Spring Boot 2.2.7 + MyBatis-Plus + MySQL 8.0 + Spring Security + JWT的医学影像智能质控系统后端已完成核心功能开发。

已完成功能模块

1. 认证授权模块 ✅

目录: src/main/java/com/zskk/qconline/modules/auth/

  • AuthController.java: 认证控制器

    • POST /api/auth/login - 用户登录
    • POST /api/auth/logout - 用户登出
    • GET /api/auth/userInfo - 获取当前用户信息
  • LoginVO.java: 登录请求对象

  • LoginDTO.java: 登录响应对象

技术要点:

  • Spring Security认证
  • JWT Token生成和验证
  • Redis存储用户会话(24小时过期)

2. PACS数据接收模块 ✅

目录: src/main/java/com/zskk/qconline/modules/pacs/

  • PacsController.java: PACS数据接收控制器

    • POST /api/pacs/study - 接收检查数据
    • POST /api/pacs/report - 接收报告数据
  • StudyDataDTO.java: PACS数据传输对象

  • PacsDataService.java: PACS数据处理服务

  • PacsDataServiceImpl.java: 服务实现

功能说明:

  • 接收PACS系统推送的检查和报告数据
  • 自动保存或更新患者、检查、报告信息
  • 支持事务管理,确保数据一致性

3. 质控核心引擎模块 ✅

目录: src/main/java/com/zskk/qconline/modules/qc/engine/

3.1 质控规则引擎

  • QcRuleEngine.java: 规则执行引擎
    • 支持操作符:notEmpty, notNull, equals, in, >=, <=, >, <
    • 支持数据类型:string, number, date
    • JSON规则配置解析

规则示例:

{
  "operator": ">=",
  "value": 10,
  "dataType": "number"
}

3.2 质控因子检查器

  • QcFactorChecker.java: 因子检查器
    • 检查检查信息(StudyInfo)
    • 检查报告信息(ReportInfo)
    • 支持字数统计检查

4. 质控任务执行模块 ✅

目录: src/main/java/com/zskk/qconline/modules/qc/task/

  • QcTaskExecutor.java: 异步任务执行器

    • 异步执行质控任务(@Async
    • 实时更新进度到Redis
    • 支持多种质控类型(数据、影像、报告)
    • 自动保存质控结果
  • QcTaskService.java: 任务管理服务

    • 创建并执行任务
    • 查询任务进度
    • 取消任务

执行流程:

  1. 解析质控类型(支持多选)
  2. 获取质控因子
  3. 查询待检查数据
  4. 逐条执行质控检查
  5. 更新进度(每100ms)
  6. 保存质控结果

5. 预制结果模块 ✅

目录: src/main/java/com/zskk/qconline/modules/qc/preset/

  • PresetResultService.java: 预制结果生成服务
    • 异步生成预制结果
    • 模拟执行进度(100-300ms/条)
    • 按配置的通过率生成结果
    • 随机生成失败原因

配置说明:

  • qc_preset_config表读取配置
  • 默认配置:总数100,通过率75%,失败率25%
  • 失败原因从配置的因子列表随机选择

6. AI质控模块 ✅

目录: src/main/java/com/zskk/qconline/modules/qc/ai/

  • AiQcService.java: AI质控服务(模拟)
    • aiImageQc() - AI图像质控(评分0-100)
    • aiReportQc() - AI报告质控(评分0-100)
    • aiComprehensiveQc() - AI综合质控
    • generateAiQcReport() - 生成AI质控报告

评分逻辑:

  • 基础分70分
  • 图像数量 ≥10:+5分
  • 序列数量 ≥1:+5分
  • 报告字数充足:+10-15分
  • 随机波动:±10分

7. 质控任务管理接口 ✅

目录: src/main/java/com/zskk/qconline/modules/qc/controller/

  • QcTaskManageController.java: 任务管理控制器
    • POST /api/qc/task/create - 创建并执行任务
    • GET /api/qc/task/progress/{taskId} - 查询任务进度
    • GET /api/qc/task/list - 查询任务列表
    • GET /api/qc/task/detail/{taskId} - 查询任务详情
    • POST /api/qc/task/cancel/{taskId} - 取消任务

相关DTO:

  • QcTaskCreateDTO: 任务创建请求
  • QcTaskProgressDTO: 任务进度响应

8. 质控结果查询接口 ✅

  • QcResultController.java: 结果查询控制器
    • GET /api/qc/result/list - 查询结果列表
    • GET /api/qc/result/detail/{resultId} - 查询结果详情
    • GET /api/qc/result/statistics/{taskId} - 查询结果统计
    • GET /api/qc/result/export/{taskId} - 导出结果(待开发)

相关DTO:

  • QcResultDetailDTO: 结果详情��含检查信息)
  • QcResultStatisticsDTO: 结果统计(含失败原因统计)

9. 患者数据查询接口 ✅

目录: src/main/java/com/zskk/qconline/modules/patient/

  • PatientQueryController.java: 患者数据查询控制器
    • GET /api/patient/list - 查询患者列表
    • GET /api/patient/study/list - 查询检查列表
    • GET /api/patient/study/detail/{studyInstanceUid} - 查询检查详情
    • GET /api/patient/study/viewerUrl/{studyInstanceUid} - 获取阅片器URL
    • GET /api/patient/report/list - 查询报告列表

相关DTO:

  • StudyDetailDTO: 检查详情(含患者和报告)

阅片器URL格式:

https://ppacsview.pacsonline.cn/#/pc
?studyurl=https%3A%2F%2Fquery.pacsonline.cn%2Fquery%2F
&study_id={studyInstanceUid}
&node_type=1
&version=V1.2.0.0

10. 系统管理接口 ✅

目录: src/main/java/com/zskk/qconline/modules/system/

  • SystemController.java: 系统管理控制器
    • GET /api/system/institution/tree - 获取机构树
    • GET /api/system/menu/tree - 获取菜单树

相关DTO:

  • InstitutionTreeDTO: 机构树节点
  • MenuTreeDTO: 菜单树节点

11. 配置模块 ✅

目录: src/main/java/com/zskk/qconline/config/

  • AsyncConfig.java: 异步任务配置

    • 线程池配置:核心5线程,最大10线程
    • 队列容量100
    • Bean名称:qcTaskExecutor
  • DataPermissionInterceptor.java: 数据权限拦截器

    • 基于机构ID的数据过滤
    • 管理员跳过过滤
    • 支持表:patient_info, study_info, report_info, qc_task, qc_result

项目目录结构

src/main/java/com/zskk/qconline/
├── modules/
│   ├── auth/                    # 认证授权模块
│   │   ├── controller/
│   │   │   └── AuthController.java
│   │   ├── dto/
│   │   │   └── LoginDTO.java
│   │   └── vo/
│   │       └── LoginVO.java
│   │
│   ├── pacs/                    # PACS数据接收模块
│   │   ├── controller/
│   │   │   └── PacsController.java
│   │   ├── dto/
│   │   │   └── StudyDataDTO.java
│   │   └── service/
│   │       ├── PacsDataService.java
│   │       └── impl/
│   │           └── PacsDataServiceImpl.java
│   │
│   ├── qc/                      # 质控核心模块
│   │   ├── engine/              # 质控引擎
│   │   │   ├── QcRuleEngine.java
│   │   │   └── QcFactorChecker.java
│   │   ├── task/                # 任务执行
���   │   │   ├── QcTaskExecutor.java
│   │   │   └── QcTaskService.java
│   │   ├── preset/              # 预制结果
│   │   │   └── PresetResultService.java
│   │   ├── ai/                  # AI质控
│   │   │   └── AiQcService.java
│   │   ├── controller/          # 控制器
│   │   │   ├── QcTaskManageController.java
│   │   │   └── QcResultController.java
│   │   └── dto/                 # 数据传输对象
│   │       ├── QcTaskCreateDTO.java
│   │       ├── QcTaskProgressDTO.java
│   │       ├── QcResultDetailDTO.java
│   │       └── QcResultStatisticsDTO.java
│   │
│   ├── patient/                 # 患者数据模块
│   │   ├── controller/
│   │   │   └── PatientQueryController.java
│   │   └── dto/
│   │       └── StudyDetailDTO.java
│   │
│   ├── system/                  # 系统管理模块
│   │   ├── controller/
│   │   │   └── SystemController.java
│   │   └── dto/
│   │       ├── InstitutionTreeDTO.java
│   │       └── MenuTreeDTO.java
│   │
│   ├── entity/                  # 实体类(代码生成器生成)
│   ├── mapper/                  # Mapper接口(代码生成器生成)
│   └── service/                 # 基础服务(代码生成器生成)
│
├── config/                      # 配置类
│   ├── AsyncConfig.java
│   ├── DataPermissionInterceptor.java
│   ├── SecurityConfig.java
│   └── RedisConfig.java
│
├── security/                    # 安全认证(已有)
│   ├── JwtAuthenticationFilter.java
│   ├── LoginUser.java
│   ├── MD5WithSaltPasswordEncoder.java
│   └── UserDetailsServiceImpl.java
│
├── utils/                       # 工具类(已有)
│   ├── JwtUtil.java
│   └── AesEcbUtil.java
│
├── component/                   # 通用组件(已有)
│   └── response/
│       └── RestResult.java
│
└── QconlineApplication.java     # 启动类

核心技术特性

1. 异步任务执行

  • 使用@Async注解实现异步执行
  • 自定义线程池配置
  • 任务进度实时更新到Redis

2. 规则引擎

  • JSON格式规则配置
  • 支持多种操作符和数据类型
  • 反射机制获取字段值

3. 数据权限

  • MyBatis-Plus拦截器
  • 基于机构ID自动过滤
  • 管理员权限判断

4. 事务管理

  • @Transactional注解
  • 数据一致性保证

5. 进度监控

  • Redis存储进度(键:qc:task:progress:{taskId}
  • 24小时自动过期
  • 实时查询接口

API接口总览

认证授权

  • POST /api/auth/login
  • POST /api/auth/logout
  • GET /api/auth/userInfo

PACS数据接收

  • POST /api/pacs/study
  • POST /api/pacs/report

质控任务

  • POST /api/qc/task/create
  • GET /api/qc/task/progress/{taskId}
  • GET /api/qc/task/list
  • GET /api/qc/task/detail/{taskId}
  • POST /api/qc/task/cancel/{taskId}

质控结果

  • GET /api/qc/result/list
  • GET /api/qc/result/detail/{resultId}
  • GET /api/qc/result/statistics/{taskId}
  • GET /api/qc/result/export/{taskId}

患者数据

  • GET /api/patient/list
  • GET /api/patient/study/list
  • GET /api/patient/study/detail/{studyInstanceUid}
  • GET /api/patient/study/viewerUrl/{studyInstanceUid}
  • GET /api/patient/report/list

系统管理

  • GET /api/system/institution/tree
  • GET /api/system/menu/tree

启动步骤

1. 环境要求

  • JDK 11+
  • MySQL 8.0+
  • Redis 5.0+
  • Maven 3.6+

2. 数据库初始化

# 执行SQL脚本
mysql -u root -p < doc/sql/init.sql
mysql -u root -p < doc/sql/menu_data.sql
mysql -u root -p < doc/sql/qc_factor_data.sql

3. 修改配置

编辑 src/main/resources/application.yml

spring:
  datasource:
    password: 你的密码
  redis:
    password: 你的密码(如有)

4. 运行代码生成器

# 在IDE中运行
CodeGenerator.main()

# 或使用Maven
mvn exec:java -Dexec.mainClass="com.zskk.qconline.generator.CodeGenerator"

5. 启动应用

# 方式1:IDE中运行
运行 QconlineApplication.main()

# 方式2:Maven
mvn spring-boot:run

# 方式3:打包后运行
mvn clean package
java -jar target/QConline-1.0.0-SNAPSHOT.jar

6. 访问Swagger文档

http://localhost:8080/swagger-ui.html


默认账号

  • 用户名:admin
  • 密码:admin123

待完成功能

后端

  1. ✅ 核心功能已完成
  2. ⚠️ Excel导出功能(需要EasyExcel依赖)
  3. ⚠️ 数据权限拦截器SQL改写(当前仅示例)
  4. ⚠️ 系统日志记录(AOP切面)
  5. ⚠️ 用户机构关联查询优化

前端

  1. ⏳ 创建Vue3项目
  2. ⏳ 实现登录和主框架
  3. ⏳ 实现所有业务页面

注意事项

  1. 预制结果功能:仅用于演示,不影响真实质控流程
  2. AI质控功能:当前为模拟实现,评分基于简单规则
  3. 数据权限:当前实现为示例,建议使用MyBatis-Plus插件
  4. 异步任务:确保Redis正常运行,否则进度查询会失败
  5. PACS接口:需要PACS系统主动推送数据

联系支持

如有问题或需要进一步的代码实现,请随时提出!

项目状态:✅ 后端核心功能已完成,等待前端开发


生成时间:2025-12-25 版本:v1.0.0