maxyadamsilaen/healthcare-dicom
GitHub: maxyadamsilaen/healthcare-dicom
Stars: 0 | Forks: 0
# 🏥 医疗 DICOM 处理流水线与 PACS 集成
[](https://python.org)
[](https://www.djangoproject.com/)
[](https://www.django-rest-framework.org/)
[](https://docs.celeryq.dev/)
[](https://redis.io/)
[](https://www.postgresql.org/)
[](https://www.docker.com/)
[](https://aws.amazon.com/)
[](LICENSE)
这是一个**生产级 DICOM 处理流水线**,可自动化医学影像工作流程——从摄取和匿名化到导出和 PACS 集成。该系统专为**法国和新加坡**的放射科提供商构建,处理了 **5,000+ 项研究**,减少了 **70%** 的人工操作,并确保符合医疗数据隐私法规。
🔗 **在线演示**:*由于保密协议,不公开提供。*
📬 **联系方式**:作品集咨询请发送邮件至 [maxyadamsilaen1207@gmail.com](mailto:maxyadamsilaen1207@gmail.com)。
## 📚 目录
- [概述](#overview)
- [主要功能](#key-features)
- [技术栈](#technology-stack)
- [系统架构](#system-architecture)
- [工作流](#workflow)
- [实现亮点](#implementation-highlights)
- [业务影响](#business-impact)
- [未来增强](#future-enhancements)
- [联系方式](#contact)
## 🧭 概述
医学影像工作流程通常涉及手动、耗时的步骤,这会延误诊断并增加运营成本。本项目提供了一个**全自动后端系统**,从 PACS 摄取 DICOM 文件,进行处理(匿名化、格式转换),并使其可供下游应用程序使用(研究、远程放射学、AI 分析)。
该流水线专为可扩展性而设计,使用 **异步处理**(Celery + Redis)来处理大文件(每项研究最高 **500MB**),并通过 REST API 与 **Orthanc PACS** 无缝集成。该系统已部署用于**法国和新加坡**的放射科提供商,处理了超过 **5,000 项研究**,并将人工工作量减少了 **70%**。
## ✨ 主要功能
### 🔹 自动化 DICOM 摄取
- 通过 webhook 或轮询监控 PACS 服务器 以发现新的研究。
- 提取元数据(患者、研究、序列、设备类型)并将其存储在 PostgreSQL 中。
### 🔹 匿名化引擎
- 可配置的规则,根据 HIPAA/GDPR 删除或混淆受保护的健康信息 (PHI)。
- 维护原始标识符到匿名化标识符的映射,以确保可追溯性。
### 🔹 批量处理与导出
- 异步将 DICOM 转换为 PNG/JPEG 以便 Web 查看。
- 将研究批量压缩为 ZIP,用于外部共享或长期存储。
### 🔹 兼容 FHIR 的 REST API
- 通过类 FHIR 端点公开研究元数据和下载链接。
- 支持与 EMR/EHR 系统及前端查看器(OHIF, Cornerstone.js)集成。
### 🔹 可扩展的异步架构
- Celery workers 处理繁重任务(转换、匿名化),而不会阻塞主 API。
- Redis broker 确保可靠的任务分发和重试。
### 🔹 云端就绪部署
- 使用 Docker 容器化,部署在 AWS 上(EC2 用于计算,S3 用于对象存储)。
- 支持本地或混合部署。
## 🛠 技术栈
| 层级 | 技术选型 |
|------------------------|------------------------------------------------------------------------------------|
| **后端框架** | Python, Django, Django REST Framework |
| **DICOM 处理** | pydicom, Orthanc PACS (通过 REST API 集成) |
| **异步任务** | Celery, Redis |
| **数据库** | PostgreSQL (元数据), AWS S3 / MinIO (文件存储) |
| **API 标准** | FHIR (Fast Healthcare Interoperability Resources) |
| **部署** | Docker, AWS (EC2, S3), Nginx, Gunicorn |
| **监控** | Prometheus, Grafana, Sentry, ELK Stack (可选) |
## 🏗 系统架构
该系统遵循**模块化、事件驱动架构**。以下是组件和数据流的高级图表。
### 📥 数据流
- **摄取** – 一项新研究被推送到 Orthanc PACS(或通过轮询发现)。
- **通知** – Orthanc 通过 webhook 通知 Django 后端(或后端进行轮询)。
- **任务排队** – Django 创建 Celery 任务用于元数据提取、匿名化和转换。
- **异步处理** – Celery workers 执行任务:
- 使用 `pydicom` 提取元数据并存储在 PostgreSQL 中。
- 匿名化 DICOM 文件(移除 PHI)。
- 将 DICOM 转换为 PNG/JPEG 并存储在 S3 中。
- 如果有请求,生成研究的 ZIP 归档。
- **API 暴露** – 元数据和下载链接通过兼容 FHIR 的 REST 端点公开。
- **客户端访问** – 前端查看器或研究平台通过 API 消费数据,以显示图像和元数据。
### 🔄 工作流(逐步示例)
1. **研究到达** – 一项新的 MRI 研究(200 张图像,300 MB)被发送到 Orthanc。
2. **触发** – Orthanc 的 webhook 调用 `POST /api/webhook/orthanc` 并附带 study UID。
3. **任务创建** – Django 验证研究并创建三个 Celery 任务:
- `extract_metadata`
- `anonymize_study`
- `convert_to_png`
4. **元数据提取** – Worker 读取 DICOM 标签并将结构化数据(患者年龄、设备类型、序列详情)存储在 PostgreSQL 中。
5. **匿名化** – Worker 创建 DICOM 文件的匿名化副本(新 UID,移除患者姓名等)并将其存储在安全位置。
6. **转换** – Worker 将每个 DICOM 切片转换为 PNG,上传到 S3,并记录 URL。
7. **完成** – Django 将研究标记为“已处理”,并通过 API 使其可用。
8. **客户端检索** – 放射科医生打开前端查看器,该查看器查询 `GET /api/studies/{id}/` 并从 S3 加载图像。
### 🔧 实现亮点
- **自动化 DICOM 提取** – 使用 `pydicom` 解析标签并处理边缘情况(封装的 PDF、多帧)。
- **批量匿名化** – 可配置的规则引擎,支持标签的白名单/黑名单、UID 重新生成以及临床相关元数据的保留。
- **压缩与导出** – 按需生成原始或已处理研究的 ZIP;采用异步方式以避免超时。
- **Celery 优化** – 任务优先级排序、速率限制以及带有指数退避的重试。
- **大文件处理** – 向 S3 流式上传、分块处理以及内存高效的 DICOM 解析。
- **FHIR API** – 端点符合 FHIR `ImagingStudy` 和 `DocumentReference` 资源,简化与现代医疗系统的集成。
### 📊 业务影响
- **减少 70% 的人工操作** – 放射科医生和技术人员不再需要手动匿名化或转换研究。
- **处理了 5,000+ 项研究** – 该流水线成功处理了数千项研究且无故障,证明了其可靠性。
- **可扩展的基础设施** – 通过增加更多的 Celery workers,该系统可以轻松扩展到每天处理数千项研究。
- **增强的研究合规性** – 匿名化数据在不损害患者隐私的情况下实现了科研用途。
- **更快的周转速度** – 自动化工作流将研究从采集完成到可供远程阅片的时间从几小时缩短到了几分钟。
### 🚀 未来增强
- **AI 集成** – 自动对传入研究运行推理模型(例如骨折检测)并存储结果。
- **DICOM-Web 支持** – 实现 DICOMweb API 以获得更广泛的兼容性。
- **多站点 PACS 聚合** – 从不同位置的多个 PACS 服务器摄取研究。
- **高级匿名化配置** – 支持每个机构自定义匿名化策略。
- **实时仪表板** – 通过 Grafana 监控流水线性能和研究吞吐量。
### 📬 联系方式
**Maxy Silaen**
高级 Python 后端工程师与医疗 IT 顾问
- 🔗 [LinkedIn](https://linkedin.com/in/maxy-silaen-99ab0658)
- 💻 [GitHub](https://github.com/maxyadamsilaen)
- 📧 maxyadamsilaen1207@gmail.com
⭐ 如果您正在寻找一位可靠的医疗后端工程师来构建或优化您的医学影像工作流,请随时联系。
### 📥 数据流
- **摄取** – 一项新研究被推送到 Orthanc PACS(或通过轮询发现)。
- **通知** – Orthanc 通过 webhook 通知 Django 后端(或后端进行轮询)。
- **任务排队** – Django 创建 Celery 任务用于元数据提取、匿名化和转换。
- **异步处理** – Celery workers 执行任务:
- 使用 `pydicom` 提取元数据并存储在 PostgreSQL 中。
- 匿名化 DICOM 文件(移除 PHI)。
- 将 DICOM 转换为 PNG/JPEG 并存储在 S3 中。
- 如果有请求,生成研究的 ZIP 归档。
- **API 暴露** – 元数据和下载链接通过兼容 FHIR 的 REST 端点公开。
- **客户端访问** – 前端查看器或研究平台通过 API 消费数据,以显示图像和元数据。
### 🔄 工作流(逐步示例)
1. **研究到达** – 一项新的 MRI 研究(200 张图像,300 MB)被发送到 Orthanc。
2. **触发** – Orthanc 的 webhook 调用 `POST /api/webhook/orthanc` 并附带 study UID。
3. **任务创建** – Django 验证研究并创建三个 Celery 任务:
- `extract_metadata`
- `anonymize_study`
- `convert_to_png`
4. **元数据提取** – Worker 读取 DICOM 标签并将结构化数据(患者年龄、设备类型、序列详情)存储在 PostgreSQL 中。
5. **匿名化** – Worker 创建 DICOM 文件的匿名化副本(新 UID,移除患者姓名等)并将其存储在安全位置。
6. **转换** – Worker 将每个 DICOM 切片转换为 PNG,上传到 S3,并记录 URL。
7. **完成** – Django 将研究标记为“已处理”,并通过 API 使其可用。
8. **客户端检索** – 放射科医生打开前端查看器,该查看器查询 `GET /api/studies/{id}/` 并从 S3 加载图像。
### 🔧 实现亮点
- **自动化 DICOM 提取** – 使用 `pydicom` 解析标签并处理边缘情况(封装的 PDF、多帧)。
- **批量匿名化** – 可配置的规则引擎,支持标签的白名单/黑名单、UID 重新生成以及临床相关元数据的保留。
- **压缩与导出** – 按需生成原始或已处理研究的 ZIP;采用异步方式以避免超时。
- **Celery 优化** – 任务优先级排序、速率限制以及带有指数退避的重试。
- **大文件处理** – 向 S3 流式上传、分块处理以及内存高效的 DICOM 解析。
- **FHIR API** – 端点符合 FHIR `ImagingStudy` 和 `DocumentReference` 资源,简化与现代医疗系统的集成。
### 📊 业务影响
- **减少 70% 的人工操作** – 放射科医生和技术人员不再需要手动匿名化或转换研究。
- **处理了 5,000+ 项研究** – 该流水线成功处理了数千项研究且无故障,证明了其可靠性。
- **可扩展的基础设施** – 通过增加更多的 Celery workers,该系统可以轻松扩展到每天处理数千项研究。
- **增强的研究合规性** – 匿名化数据在不损害患者隐私的情况下实现了科研用途。
- **更快的周转速度** – 自动化工作流将研究从采集完成到可供远程阅片的时间从几小时缩短到了几分钟。
### 🚀 未来增强
- **AI 集成** – 自动对传入研究运行推理模型(例如骨折检测)并存储结果。
- **DICOM-Web 支持** – 实现 DICOMweb API 以获得更广泛的兼容性。
- **多站点 PACS 聚合** – 从不同位置的多个 PACS 服务器摄取研究。
- **高级匿名化配置** – 支持每个机构自定义匿名化策略。
- **实时仪表板** – 通过 Grafana 监控流水线性能和研究吞吐量。
### 📬 联系方式
**Maxy Silaen**
高级 Python 后端工程师与医疗 IT 顾问
- 🔗 [LinkedIn](https://linkedin.com/in/maxy-silaen-99ab0658)
- 💻 [GitHub](https://github.com/maxyadamsilaen)
- 📧 maxyadamsilaen1207@gmail.com
⭐ 如果您正在寻找一位可靠的医疗后端工程师来构建或优化您的医学影像工作流,请随时联系。标签:AWS, Celery, DICOM处理, Django, Docker, DPI, GDPR, PACS集成, PostgreSQL, Python, Redis, REST API, 医学影像存档, 医疗影像, 医疗数据隐私, 医院信息系统, 后端开发, 安全防御评估, 异步任务队列, 搜索引擎查询, 放射科工作流, 数据匿名化, 无后门, 测试用例, 漏洞利用检测, 生产级, 自动化流程, 请求拦截, 逆向工具, 隐私合规