# DICOM数据管理功能实现说明 ## 功能概述 本次实现了完整的DICOM文件上传、解析和数据管理功能,包括: ### 第一步:DICOM文件上传和解析 ✓ 1. **DICOM文件上传** - 支持单文件和批量上传 - 自动解析DICOM文件,提取患者信息和检查信息 - 自动保存患者信息到patient_info表 - 自动保存检查信息到study_info表 - 文件存储到本地:`/data/dicom/{机构ID}/{日期}/{文件ID}.dcm` 2. **DICOM解析功能** - 提取患者基本信息:患者ID、姓名、性别、年龄等 - 提取检查信息:检查日期、检查类型、检查描述、检查部位等 - 识别多部位检查(根据检查描述中的关键词) - 自动判断数据是否需要治理(关键字段缺失) 3. **多部位检查识别** - 根据检查描述自动识别多部位检查 - 关键词:双侧、双、和、+、&、bilateral、and、with等 - 支持拆分多部位检查描述 ### 第二步:数据管理功能 ✓ 1. **数据列表展示** - 机构名称 - 患者姓名 - 手机号 - 身份证号 - 检查日期 - 检查类型 - 检查状态(待检查、检查中、已完成) - 数据上传时间 - 智能治理(操作按钮) - 确认状态(待确认、已确认、已驳回) - 操作(确认、查看、删除) 2. **数据筛选功能** - 按机构筛选 - 按患者姓名筛选 - 按手机号筛选 - 按检查类型筛选 - 按检查状态筛选 - 按治理状态筛选 - 按确认状态筛选 3. **数据操作功能** - **智能治理**:自动标准化数据(检查描述、检查类型、检查部位等) - **确认数据**:确认或驳回检查数据 - **删除数据**:删除检查数据 - **查看数据**:查看详情(预留接口) ## 数据库表结构 ### 扩展的表字段 **patient_info表新增字段:** - phone:手机号 - id_card:身份证号 **study_info表新增字段:** - check_status:检查状态(0待检查 1检查中 2已完成) - upload_time:数据上传时间 - govern_status:治理状态(0未治理 1已治理 2治理中) - confirm_status:确认状态(0待确认 1已确认 2已驳回) - is_split:是否拆分(0否 1是) - parent_study_id:父检查ID(拆分后的记录指向原始检查) ### 新增的表 1. **study_split_record**:检查项目拆分记录表 2. **data_govern_record**:数据治理记录表 3. **dicom_file_info**:DICOM文件信息表 4. **image_thumbnail**:影像缩略图表 ## 文件结构 ### 后端文件 ``` QConline/src/main/java/com/zskk/qconline/modules/ ├── dicom/ │ ├── controller/ │ │ ├── DicomController.java # DICOM上传接口 │ │ └── DataManageController.java # 数据管理接口 │ ├── service/ │ │ ├── DicomService.java # DICOM服务接口 │ │ └── DataManageService.java # 数据管理服务接口 │ ├── service/impl/ │ │ ├── DicomServiceImpl.java # DICOM服务实现 │ │ └── DataManageServiceImpl.java # 数据管理服务实现 │ ├── vo/ │ │ ├── DicomUploadVO.java # DICOM上传响应VO │ │ ├── DataManageQueryVO.java # 数据管理查询VO │ │ └── DataManageVO.java # 数据管理列表VO │ └── util/ │ └── DicomParser.java # DICOM解析工具类 ``` ### 前端文件 ``` qconline_web/src/ ├── api/ │ ├── dicom.ts # DICOM上传API │ ├── dataManage.ts # 数据管理API │ └── institution.ts # 机构API └── views/ ├── DicomUpload.vue # DICOM上传页面 └── DataManage.vue # 数据管理列表页面 ``` ## 使用说明 ### 1. 执行数据库脚本 首先执行数据库表结构扩展脚本: ```bash mysql -u root -p qconline < /path/to/data_management_tables.sql ``` ### 2. 配置文件存储路径 确保服务器有以下目录并具有写权限: ```bash mkdir -p /data/dicom chmod 755 /data/dicom ``` 或者修改 `DicomServiceImpl.java` 中的存储路径: ```java private static final String DICOM_ROOT_PATH = "/your/custom/path/"; ``` ### 3. 重启后端服务 由于添加了新的依赖(dcm4che),需要重新构建: ```bash cd /Users/geng/Documents/IdeaProjects/QConline mvn clean package # 然后重启应用 ``` ### 4. 使用功能 #### DICOM上传 1. 登录系统 2. 点击菜单:数据管理 → DICOM上传 3. 选择所属机构 4. 选择上传方式(单文件/批量) 5. 拖拽或选择DICOM文件 6. 点击"开始上传" 7. 查看上传结果(患者信息、检查信息、是否多部位、是否需要治理) #### 数据管理 1. 点击菜单:数据管理 → 数据列表 2. 使用顶部筛选条件查询数据 3. 查看列表中的数据信息 4. 点击"治理"按钮进行智能治理 5. 点击"确认"按钮确认数据 6. 点击"查看"按钮查看详情(预留) 7. 点击"删除"按钮删除数据 ## API接口文档 ### 1. DICOM上传 **上传单个DICOM文件** - URL: `POST /api/dicom/upload` - 参数: - file: MultipartFile(DICOM文件) - institutionId: String(机构ID) - 响应: DicomUploadVO **批量上传DICOM文件** - URL: `POST /api/dicom/batch-upload` - 参数: - files: MultipartFile[](DICOM文件数组) - institutionId: String(机构ID) - 响应: DicomUploadVO[] ### 2. 数据管理 **分页查询数据列表** - URL: `GET /api/data-manage/list` - 参数: DataManageQueryVO - 响应: Page **确认检查数据** - URL: `PUT /api/data-manage/confirm/{studyId}` - 参数: - confirmStatus: Integer(1已确认 2已驳回) - 响应: 成功/失败 **执行数据治理** - URL: `PUT /api/data-manage/govern/{studyId}` - 响应: 成功/失败 **删除检查数据** - URL: `DELETE /api/data-manage/{studyId}` - 响应: 成功/失败 ## 核心功能说明 ### DICOM解析 使用dcm4che库解析DICOM文件,提取以下信息: **患者信息:** - PatientID(患者ID) - PatientName(患者姓名) - PatientSex(性别) - PatientAge(年龄) - PatientTelephoneNumbers(电话) **检查信息:** - StudyInstanceUID(检查实例UID) - StudyDate(检查日期) - StudyTime(检查时间) - AccessionNumber(检查号) - Modality(检查类型) - StudyDescription(检查描述) - BodyPartExamined(检查部位) - ViewPosition(体位) ### 多部位检查识别 **识别规则:** 1. 检查描述包含关键词:双侧、双、和、+、&、bilateral、and、with、plus等 2. 检查部位包含分号";"分隔符 **拆分逻辑:** 1. 根据分隔符拆分检查描述 2. 为每个部位创建独立的检查记录 3. 关联原始检查ID ### 数据治理 **治理内容:** 1. 移除检查描述中多余空格 2. 标准化检查类型(转大写) 3. 标准化检查部位(移除空格) 4. 更多治理规则可扩展 **治理记录:** - 所有治理操作记录到data_govern_record表 - 包含治理前后的值对比 - 记录治理规则和时间 ## 注意事项 1. **DICOM文件格式**:只支持标准DICOM格式(.dcm、.dicom) 2. **文件存储**:确保有足够的磁盘空间存储DICOM文件 3. **权限控制**:只能查看和操作本机构的数据 4. **数据删除**:删除操作不可恢复,请谨慎操作 5. **批量上传**:批量上传时建议一次不超过100个文件 ## 后续扩展建议 1. **影像预览**:实现DICOM文件转图片和缩略图生成 2. **多部位拆分**:完善拆分逻辑和拆分后的图像关联 3. **AI辅助治理**:集成AI模型进行智能数据治理 4. **数据导出**:支持导出检查数据和统计报告 5. **权限细化**:增加更细粒度的权限控制 6. **操作日志**:记录所有操作日志用于审计 ## 技术栈 - **后端**:Spring Boot 2.x + MyBatis-Plus + dcm4che - **前端**:Vue 3 + TypeScript + Element Plus - **数据库**:MySQL 8.0 - **DICOM解析**:dcm4che 5.23.3 ## 联系方式 如有问题,请联系开发团队。