# 医学影像智能质控系统 - 后端开发完成说明 ## 项目概述 基于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规则配置解析 **规则示例**: ```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. 数据库初始化 ```bash # 执行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`: ```yaml spring: datasource: password: 你的密码 redis: password: 你的密码(如有) ``` ### 4. 运行代码生成器 ```bash # 在IDE中运行 CodeGenerator.main() # 或使用Maven mvn exec:java -Dexec.mainClass="com.zskk.qconline.generator.CodeGenerator" ``` ### 5. 启动应用 ```bash # 方式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