内容
# DicomFlow
一款用于工程师的原生 macOS 应用,用于**测试 DICOM 网络**和**查看 DICOM 图片** — 开发者用于 PACS 集成工作、协议调试和数据集研究的工具箱。**非医疗产品**:无诊断,无临床使用。
完全原生 — SwiftUI + Metal,通过 Obj-C++ 桥接**静态链接 DCMTK**。无 Python,无子进程,无运行时依赖。
## 两种模式
### 测试工具 / 工具箱
DICOM 工具侧边栏:
- **网络** — C-ECHO、C-STORE、查询/检索(C-FIND / C-MOVE / C-GET)、**模态工作列表**(MWL C-FIND)、**DICOMweb**(QIDO / WADO / STOW)、**FHIR**(ImagingStudy)、**HL7 v2 over MLLP**(发送 + 监听器)、内置**测试 SCP** / 微型 PACS、**协商探测器**(对等方接受哪些表示上下文?)和**协议检查器** — 解码的 DICOM 流量时间线,还可以**导入 .pcap/.pcapng** 捕获并剖析其 PDU。
- **文件和标签** — 标签**检查器**、**编辑器**、**匿名化器**(PS3.15 基本配置文件)、**像素遮蔽**(通过 Vision OCR 进行嵌入文本检测)、一致性**验证器**(完整 IOD 验证)、两文件**比较**(标签差异)、**DICOMDIR** 读取器、**数据集转储**和**合成生成器**。
- **DICOM TLS**(BCP 195)用于每个外出连接;按目标切换。
参见 **[docs/TESTER-TOOLS.md](docs/TESTER-TOOLS.md)** 以获取完整介绍。
### 查看器
2D 切片(轴向 / 冠状 / 矢状,键盘驱动,右拖动 W/L),Orthanc 样式的 **2×2 MPR**,带有链接十字线,以及 **Metal GPU 体积渲染**,具有五种重建模式(MIP、MinIP、X-Ray/DRR、体积、等表面)— 球面或旋转台旋转,剪切平面,传输函数画廊,视图预设。持久测量(距离 / ROI + HU 直方图 / 角度),多帧堆栈,结构化报告以文本形式渲染,PNG 和电影导出。编解码器:未压缩 / JPEG / JPEG-LS / RLE / **JPEG 2000**。
参见 **[docs/VIEWER.md](docs/VIEWER.md)**。
### MCP 服务器
`dicomflow-mcp` 通过 [MCP](https://modelcontextprotocol.io) stdio 服务器将相同的原生 DICOM 引擎暴露给 AI 代理 — 回声,查询,检索,检查标签,渲染切片。它是一个单独的非沙盒命令行工具(从此仓库构建,在应用沙盒之外分发)。
参见 **[docs/MCP.md](docs/MCP.md)**。
## 构建
需要 **macOS 26**,Xcode 26+,和 [XcodeGen](https://github.com/yonaskolb/XcodeGen)(`brew install xcodegen`)。仅适用于 Apple Silicon。
```bash
# 一次性:构建 DCMTK 静态框架(~2 分钟)和 OpenJPEG(~1 分钟)
bash native/build-dcmtk.sh # → native/DCMTKit.xcframework
bash native/build-openjpeg.sh # → native/openjpeg-install
# 生成 Xcode 项目并构建
xcodegen generate
xcodebuild -project DicomFlow.xcodeproj -scheme DicomFlow -configuration Debug \
-derivedDataPath build build
# 运行
open build/Build/Products/Debug/DicomFlow.app
# 验证(单元测试 + 构建 + 无头集成钩子;网络对等方自动跳过)
bash scripts/verify.sh # 或 --fast 仅限单元测试
```
默认情况下,构建**未签名**,因此任何人都可以编译(应用沙盒保持开启)。维护者使用 `scripts/notarize.sh` 生成签名 + notarized DMGs。OpenSSL 静态库在 `native/openssl/` 中提供。
实时 PACS 测试是可选的:`ORTHANC_HOST=<host> xcodebuild … test`(可选 `ORTHANC_PORT` / `ORTHANC_AE`)针对真实 Orthanc 运行往返测试;取消设置,测试套件完全离线。
## 布局
```
App/ SwiftUI 应用目标(DicomFlowApp,AppState,RootView,Settings)
Sources/ DicomNative(Obj-C++ ↔ DCMTK)· DicomEngine(+ DICOMweb/FHIR/HL7 客户端)
DicomModel · MetalRender · DesignSystem · AppCore · TesterUI · ViewerUI
mcp/ dicomflow-mcp — MCP stdio 服务器目标
native/ DCMTK + OpenJPEG 构建脚本(输出 git-ignored)· 托管
fmjpeg2k 编解码器 + OpenSSL 静态库(已提交)
Tests/ XCTest 逻辑测试(离线;实时测试由 ORTHANC_HOST 控制)
project.yml XcodeGen 规范 — .xcodeproj 已生成,永不提交
scripts/ verify.sh · build-mcp.sh · notarize.sh · tls-proxy.py
docs/ ARCHITECTURE · TESTER-TOOLS · VIEWER · MCP + 项目网站
```
## 文档
- [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — 组件,原生引擎,Metal 管道
- [docs/TESTER-TOOLS.md](docs/TESTER-TOOLS.md) — 每个测试工具,关键文件,无头钩子
- [docs/VIEWER.md](docs/VIEWER.md) — 查看器布局,工具,键盘快捷键,数据支持
- [docs/MCP.md](docs/MCP.md) — 将 DicomFlow 用作 AI 代理工具
## 许可证
[MIT](LICENSE)。捆绑 DCMTK(BSD-3),OpenJPEG(BSD-2),fmjpeg2koj(Apache-2.0),和 OpenSSL(Apache-2.0)— 参见
[THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md)。
DicomFlow 是工程师的测试和可视化工具。**它不是医疗设备**,不得用于诊断或治疗。