QC-NS 项目结构说明
项目概述
qc-ns 是基于 QConline 项目重构的新版本,主要针对新国标的质控因子进行识别和质控。
技术栈
- Java 17
- Spring Boot 2.7.18
- MyBatis-Plus
- OpenCV 4.8.0
- MySQL
- Redis
项目结构
模块划分
项目按照功能模块进行划分,每个模块包含以下标准结构:
controller/ - 控制器层
service/ - 服务接口层
mapper/ - 数据访问层
entity/ - 实体类
request/ - 请求 DTO
response/ - 响应 DTO
核心模块
1. QC 模块 (modules/qc)
质控相关功能模块
Entity:
- QcFactor - 质控因子
- QcStandard - 质控标准
- QcStandardFactor - 质控标准因子关联
- QcTask - 质控任务
- QcResult - 质控结果
- QcResultSummary - 质控结果汇总
- QcPresetConfig - 质控预设配置
子模块:
ai/ - AI 质控相关
engine/ - 质控引擎
preset/ - 预设配置
task/ - 任务调度
2. Study 模块 (modules/study)
检查数据管理模块
Entity:
Service:
- StudyQueryService - 检查查询服务
- DataManageService - 数据管理服务
3. Patient 模块 (modules/patient)
患者信息管理模块
Entity:
4. Institution 模块 (modules/institution)
机构管理模块
Entity:
- Institution - 机构信息
- UserInstitution - 用户机构关联
5. System 模块 (modules/system)
系统管理模块
Entity:
- SysUser - 系统用户
- Menu - 菜单
- UserMenu - 用户菜单关联
- SysLog - 系统日志
6. Report 模块 (modules/report)
报告管理模块
Entity:
7. DICOM 模块 (modules/dicom)
DICOM 影像处理模块
Entity:
- DicomInstanceInfo - DICOM 实例信息
- SeriesInfo - 序列信息
- StudySplitRecord - 检查拆分记录
Service:
- DicomService - DICOM 服务
- DicomImageService - DICOM 图像服务
- DicomAsyncService - DICOM 异步服务
8. PACS 模块 (modules/pacs)
PACS 对接模块
Service:
9. User 模块 (modules/user)
用户管理模块
Controller:
Service:
10. Auth 模块 (modules/auth)
认证授权模块
Controller:
公共组件
component 包
response/ - 统一响应处理
aop/ - AOP 切面
jackson/ - Jackson 配置
common 包
config 包
security 包
utils 包
MyBatis 配置
Mapper 扫描路径
mybatis-plus:
mapper-locations: classpath*:com/zskk/qconline/modules/**/mapper/xml/*.xml
type-aliases-package: com.zskk.qcns.modules.*.entity
Mapper XML 文件位置
所有 Mapper XML 文件统一放在各模块的 mapper/xml/ 目录下,例如:
- QC 模块:
modules/qc/mapper/xml/*.xml
- Study 模块:
modules/study/mapper/xml/*.xml
- Patient 模块:
modules/patient/mapper/xml/*.xml
开发规范
包命名规范
- Entity:
com.zskk.qcns.modules.{模块}.entity
- Mapper:
com.zskk.qcns.modules.{模块}.mapper
- Service:
com.zskk.qcns.modules.{模块}.service
- Service Impl:
com.zskk.qcns.modules.{模块}.service.impl
- Controller:
com.zskk.qcns.modules.{模块}.controller
文件组织原则
- 按功能模块划分,而不是按技术层次
- 每个模块保持独立性,减少模块间耦合
- 通用功能放在 common 或 component 包
- 配置文件统一管理
数据库配置
数据源
- Host: 127.0.0.1:3306
- Database: qconline
- Username: root
Redis
- Host: localhost:6379
- Database: 0
与原项目的差异
结构改进
- 模块化: 从全局共享的 entity/mapper 改为按模块独立管理
- 清晰的层次: 每个模块都有完整的 MVC 结构
- XML 文件管理: 从统一的 resources/mapper 改为各模块的 mapper/xml 目录
- 包路径优化: 所有 import 语句都指向具体模块,避免命名冲突
优势
- 模块职责清晰,易于维护
- 代码组织更规范,符合 DDD 思想
- 便于团队协作,不同模块可独立开发
- 降低耦合度,提高代码复用性
下一步工作
- 业务优化: 实现新国标质控因子的识别和转换
- 任务调度: 实现周期性质控任务(按周、按月)
- 性能优化: DICOM 图像转换缓存策略
- 功能扩展: 质控标准的灵活组合
注意事项
- 确保所有 Mapper 接口的包名与 XML 文件的 namespace 一致
- Entity 类的包名要与 MyBatis 的 type-aliases-package 配置匹配
- 新增模块时遵循现有的目录结构规范
- Service 实现类统一放在 service/impl 包下