智能智控系统演示版

gengjunfang cea7983c9d 质控演示版代码优化 il y a 2 jours
backup b26f8f6d1b 推送本地代码到代码仓库:质控演示版 il y a 1 semaine
doc cea7983c9d 质控演示版代码优化 il y a 2 jours
lib b26f8f6d1b 推送本地代码到代码仓库:质控演示版 il y a 1 semaine
src cea7983c9d 质控演示版代码优化 il y a 2 jours
.gitignore cea7983c9d 质控演示版代码优化 il y a 2 jours
README.md b26f8f6d1b 推送本地代码到代码仓库:质控演示版 il y a 1 semaine
pom.xml b26f8f6d1b 推送本地代码到代码仓库:质控演示版 il y a 1 semaine

README.md

医学影像智能质控系统 - 实施指南

项目概述

这是一个基于Spring Boot + Vue 3的医学影像智能质控系统,支持数据质控、影像质控和报告质控。

技术栈

  • 后端:Spring Boot 2.2.7 + MyBatis-Plus + MySQL 8.0 + Spring Security + JWT + Redis
  • 前端:Vue 3 + Element Plus + TypeScript + Vite
  • 部署:Docker + Docker Compose

已完成内容

数据库设计:14张表的完整建表SQL ✅ 初始数据:菜单数据、质控因子数据 ✅ 代码生成器:MyBatis-Plus代码生成工具 ✅ 配置文件:application.yml完整配置 ✅ 基础框架:Spring Security + JWT认证

快速开始

1. 环境准备

必需环境

  • JDK 11+
  • MySQL 8.0+
  • Redis 5.0+
  • Node.js 18+
  • Maven 3.6+

2. 数据库初始化

# 1. 登录MySQL
mysql -u root -p

# 2. 执行建表脚本
source /Users/geng/Documents/IdeaProjects/QConline/doc/sql/init.sql

# 3. 导入初始数据
source /Users/geng/Documents/IdeaProjects/QConline/doc/sql/menu_data.sql
source /Users/geng/Documents/IdeaProjects/QConline/doc/sql/qc_factor_data.sql

# 4. 验证
USE qconline;
SHOW TABLES;  # 应该看到14张表
SELECT * FROM sys_user;  # 应该有admin用户

默认管理员账号

  • 用户名:admin
  • 密码:admin123

3. 修改配置

编辑 src/main/resources/application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/qconline?...
    username: root
    password: your_password  # 修改为实际密码

  redis:
    host: localhost
    port: 6379
    password:  # 如有密码请填写

4. 运行代码生成器

# 1. 修改密码
# 编辑 src/main/java/com/zskk/qconline/generator/CodeGenerator.java
# 修改第21行:String password = "your_password";

# 2. 在IDE中右键运行 CodeGenerator.main()
# 或使用命令行:
mvn exec:java -Dexec.mainClass="com.zskk.qconline.generator.CodeGenerator"

# 3. 生成的代码在 src/main/java/com/zskk/qconline/modules/ 下

生成的文件结构

modules/
├── controller/  # 控制器(15个)
├── entity/      # 实体类(15个)
├── mapper/      # Mapper接口(15个)
└── service/     # 服务类(15个)
    └── impl/    # 服务实现(15个)

5. 启动后端服务

# 方式1:IDE中运行
# 运行 com.zskk.qconline.QconlineApplication

# 方式2:命令行
mvn spring-boot:run

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

启动成功后:

6. 创建前端项目

# 1. 进入项目父目录
cd /Users/geng/Documents/IdeaProjects

# 2. 创建Vue 3项目
npm create vue@latest qconline-web

# 选择以下选项:
# ✔ Add TypeScript? Yes
# ✔ Add JSX Support? No
# ✔ Add Vue Router? Yes
# ✔ Add Pinia? Yes
# ✔ Add Vitest? No
# ✔ Add ESLint? Yes

# 3. 安装依赖
cd qconline-web
npm install

# 4. 安装Element Plus
npm install element-plus
npm install @element-plus/icons-vue

# 5. 安装axios
npm install axios

# 6. 运行开发服务器
npm run dev

前端访问地址:http://localhost:5173


项目结构

后端结构

QConline/
├── doc/
│   ├── sql/                      # SQL脚本
│   ├── 开发大纲.md                # 详细开发大纲
│   └── README.md
├── src/main/java/com/zskk/qconline/
│   ├── modules/                  # 业务模块(代码生成器生成)
│   │   ├── controller/
│   │   ├── entity/
│   │   ├── mapper/
│   │   └── service/
│   ├── security/                 # 安全认证
│   │   ├── JwtAuthenticationFilter.java
│   │   ├── LoginUser.java
│   │   ├── MD5WithSaltPasswordEncoder.java
│   │   └── UserDetailsServiceImpl.java
│   ├── config/                   # 配置类
│   │   ├── SecurityConfig.java
│   │   ├── RedisConfig.java
│   │   └── ScheduleConfig.java
│   ├── component/                # 通用组件
│   │   ├── response/
│   │   └── aop/
│   ├── utils/                    # 工具类
│   │   ├── JwtUtil.java
│   │   └── AesEcbUtil.java
│   ├── generator/                # 代码生成器
│   │   └── CodeGenerator.java
│   └── QconlineApplication.java
└── src/main/resources/
    ├── mapper/                   # MyBatis XML
    ├── application.yml
    └── logback-spring.xml

前端结构(待创建)

qconline-web/
├── src/
│   ├── api/                      # API接口
│   ├── assets/                   # 静态资源
│   ├── components/               # 全局组件
│   │   └── ViewerDialog/         # 阅片器组件
│   ├── layout/                   # 布局组件
│   ├── router/                   # 路由配置
│   ├── stores/                   # Pinia状态管理
│   ├── utils/                    # 工具类
│   ├── views/                    # 页面组件
│   │   ├── login/
│   │   ├── dashboard/
│   │   ├── system/
│   │   ├── patient/
│   │   └── qc/
│   ├── App.vue
│   └── main.ts
├── .env.development              # 开发环境配置
├── .env.production               # 生产环境配置
└── package.json

核心功能实现指南

1. 登录认证(已有框架)

现有的Spring Security + JWT框架已配置完成,需要完善:

后端

  • JwtAuthenticationFilter - JWT过滤器
  • UserDetailsServiceImpl - 用户详情服务
  • SecurityConfig - Security配置
  • ⚠️ 需要添加:登录接口 /api/auth/login

前端

  • 创建登录页面 /views/login/index.vue
  • 配置axios拦截器(token处理)
  • 实现登录/登出逻辑

2. 系统管理模块

用户管理

  • Controller: SysUserController(已生成)
  • 需要添加:用户CRUD、权限配置接口

机构管理

  • Controller: InstitutionController(已生成)
  • 需要添加:树形结构接口

权限管理

  • 数据权限拦截器(基于机构)
  • 菜单权限动态加载

3. 质控核心功能

质控因子

  • 使用生成的 QcFactorController
  • 添加分类筛选、规则配置接口

质控标准

  • 使用生成的 QcStandardController
  • 添加标准-因子关联配置接口

质控任务

  • 使用生成的 QcTaskController
  • ⚠️ 重点:实现任务执行引擎
    • 异步执行服务
    • 规则引擎
    • 进度更新

质控结果

  • 使用生成的 QcResultController
  • 添加统计分析接口

4. 预制结果功能

需要实现:

  • 预制结果生成算法
  • 模拟执行流程(带进度)

关键技术实现

1. 数据权限过滤

使用MyBatis-Plus拦截器:

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    // 添加数据权限拦截器
    interceptor.addInnerInterceptor(new DataPermissionInterceptor());
    return interceptor;
}

2. 质控规则引擎

规则格式(JSON):

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

3. 异步任务执行

@Async("qcTaskExecutor")
public void executeTask(String taskId) {
    // 质控任务执行逻辑
}

4. 阅片器集成

URL模板:

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

前端使用iframe嵌入。


开发建议

分批次实现

由于系统功能复杂,建议按以下顺序实现:

第1批(核心功能):

  1. 登录认证接口
  2. 用户管理CRUD
  3. 机构管理CRUD
  4. 权限配置

第2批(业务基础):

  1. 患者列表查询
  2. 检查列表查询
  3. 报告列表查询
  4. 阅片器集成

第3批(质控配置):

  1. 质控因子管理
  2. 质控标准管理
  3. 标准-因子配置

第4批(质控执行):

  1. 质控任务创建
  2. 任务执行引擎
  3. 结果查询展示

第5批(演示功能):

  1. 预制结果功能
  2. 统计分析
  3. AI质控(基础)

测试数据准备

患者数据

INSERT INTO patient_info VALUES
('P001', 'PAT001', '张三', '男', '1980-01-01', 45, 'INST001', NOW(), NOW());

检查数据

INSERT INTO study_info VALUES
('S001', 'STUDY001', 'UID001', 'PAT001', '2025-12-25', '10:00:00',
 'CT', 'CT胸部平扫', 'ACC001', 'INST001', NULL, 1, 15, '胸部', '仰卧位', NOW(), NOW());

报告数据

INSERT INTO report_info VALUES
('R001', 'REP001', 'STUDY001', 'PAT001', 'INST001',
 '双肺纹理清晰,未见明显异常密度影...', '双肺未见明显异常。',
 'DOC001', '李医生', NOW(), NULL, NULL, NULL, 1, NOW(), NOW());

常见问题

Q1: 代码生成器报错连接数据库失败

A: 检查 CodeGenerator.java 中的数据库密码是否正确。

Q2: 启动时报Redis连接失败

A: 确保Redis服务已启动,或临时禁用Redis(注释相关配置)。

Q3: 前端访问后端接口跨域

A: 在后端添加CORS配置,或前端配置代理。

Q4: JWT Token过期时间

A: 在 application.yml 中修改 jwt.expiration 配置。


下一步行动

立即执行

  1. ✅ 导入数据库(3个SQL文件)
  2. ✅ 修改 application.yml 数据库密码
  3. ✅ 运行代码生成器
  4. ✅ 启动后端服务(验证Swagger文档)
  5. ⏳ 创建前端Vue项目
  6. ⏳ 实现登录功能(前后端联调)

需要帮助时

  • 参考 doc/开发大纲.md 查看详细设计
  • 查看已有代码示例:security/ 包下的认证代码
  • 使用Swagger UI测试API

联系与支持

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

重要提示

  • 本系统设计为演示系统,部分功能(如AI质控)为模拟实现
  • 建议先完成核心功能,再逐步添加高级特性
  • 预制结果功能仅用于演示,不影响真实质控流程

项目状态:✅ 框架搭建完成,等待功能实现

祝开发顺利!🚀