# 医学影像智能质控系统 - 实施指南 ## 项目概述 这是一个基于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. 数据库初始化 ```bash # 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`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/qconline?... username: root password: your_password # 修改为实际密码 redis: host: localhost port: 6379 password: # 如有密码请填写 ``` ### 4. 运行代码生成器 ```bash # 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. 启动后端服务 ```bash # 方式1:IDE中运行 # 运行 com.zskk.qconline.QconlineApplication # 方式2:命令行 mvn spring-boot:run # 方式3:打包后运行 mvn clean package java -jar target/QConline-1.0.0-SNAPSHOT.jar ``` 启动成功后: - 访问:http://localhost:8080 - API文档:http://localhost:8080/swagger-ui.html ### 6. 创建前端项目 ```bash # 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拦截器: ```java @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 添加数据权限拦截器 interceptor.addInnerInterceptor(new DataPermissionInterceptor()); return interceptor; } ``` ### 2. 质控规则引擎 规则格式(JSON): ```json { "operator": ">=", "value": 10, "dataType": "number" } ``` ### 3. 异步任务执行 ```java @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批**(业务基础): 5. 患者列表查询 6. 检查列表查询 7. 报告列表查询 8. 阅片器集成 **第3批**(质控配置): 9. 质控因子管理 10. 质控标准管理 11. 标准-因子配置 **第4批**(质控执行): 12. 质控任务创建 13. 任务执行引擎 14. 结果查询展示 **第5批**(演示功能): 15. 预制结果功能 16. 统计分析 17. AI质控(基础) ### 测试数据准备 **患者数据**: ```sql INSERT INTO patient_info VALUES ('P001', 'PAT001', '张三', '男', '1980-01-01', 45, 'INST001', NOW(), NOW()); ``` **检查数据**: ```sql INSERT INTO study_info VALUES ('S001', 'STUDY001', 'UID001', 'PAT001', '2025-12-25', '10:00:00', 'CT', 'CT胸部平扫', 'ACC001', 'INST001', NULL, 1, 15, '胸部', '仰卧位', NOW(), NOW()); ``` **报告数据**: ```sql 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质控)为模拟实现 - 建议先完成核心功能,再逐步添加高级特性 - 预制结果功能仅用于演示,不影响真实质控流程 --- **项目状态**:✅ 框架搭建完成,等待功能实现 祝开发顺利!🚀