这是一个基于 fo-dicom 库实现的 DICOM 存储服务(Storage SCP),用于接收和存储医学影像。
- 支持 C-STORE 服务,用于接收 DICOM 图像
- 支持 C-ECHO 服务,用于验证连接
- 支持多种传输语法,包括无损压缩格式:
- JPEG-LS Lossless
- JPEG2000 Lossless
- JPEG Process 14
- JPEG Process 14 SV1
- RLE Lossless
- 按照 modality/studyuid/seriesuid/sop.dcm 的目录结构存储图像
- 自动生成检查信息 JSON 文件,包含患者和检查的基本信息
- 支持图像转码,可配置目标传输语法
- 支持多个 SCU 同时连接发送
- .NET 8.0 或更高版本
- Windows/Linux/macOS
配置文件 appsettings.json
:
{
"DicomSettings": {
"AeTitle": "STORESCP", // DICOM AE 标题
"Port": 11112, // 监听端口
"StoragePath": "./DICOM", // 存储目录
"TranscodeToTransferSyntax": "" // 转码格式,留空表示不压缩
}
}
支持的压缩格式:
- JPEGLS - JPEG-LS 无损压缩
- JPEG2000 - JPEG2000 无损压缩
- RLE - RLE 无损压缩
- JPEG - JPEG Process 14 无损压缩
- JPEGV1 - JPEG Process 14 SV1 无损压缩
- 配置 appsettings.json
- 运行程序:
或指定端口(将覆盖配置文件中的端口设置):
dotnet run
dotnet run -- 11112
注意:
- 命令行参数指定的端口会覆盖配置文件中的 Port 设置
- 其他设置(AE 标题、存储路径、转码格式等)仍然使用配置文件中的值
DICOM/
├── CT/
│ └── 1.2.3.4.5/ # StudyUID
│ ├── study_info.json # 检查信息
│ └── 1.2.3.4.5.1/ # SeriesUID
│ └── 1.2.3.4.5.1.1.dcm # 图像文件
├── MR/
└── ...
{
"StudyInstanceUID": "1.2.3.4.5",
"PatientID": "P123456",
"PatientName": "张三",
"Modality": "CT",
"StudyDate": "20240101",
"StudyTime": "120000",
"AccessionNumber": "ACC001",
"StudyDescription": "胸部平扫",
"TransferSyntax": "JPEG-LS Lossless Image Compression",
"ImageCount": 133,
"ReceiveTime": "2024-01-01T12:00:00.123456+08:00",
"CallingAE": "STORESCU"
}