Skip to content
runqinshiyePublic
forked from fightroad/DicomSCP

About

打造中文开源社区最完善轻量PACS系统,医学影像必备DICOM工具箱!

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

🏆 中文开源社区高完成度的 DICOM / PACS 基础服务组件

License .NET Version Gitee Stars Gitee Main Repo GitHub Stars GitHub Mirror Visitors

快速入口:快速开始 | Docker部署 | 功能特性 | 配置说明 | 常见问题 | 联系我们

关键词:开源 DICOM SCP、轻量级 PACS、WADO-URI、Worklist、Query/Retrieve、医学影像系统集成。

  • DicomSCP 是一个基于 .NET Core 的 DICOM 医学影像基础服务组件,提供轻量级 PACS 核心能力,可用于 DICOM 接入、影像存储、查询检索与系统集成。
  • 本项目由多年医学影像从业经验积累而来,旨在为中文医学影像生态提供一个轻量、开放、可扩展的 DICOM/PACS 基础设施实现。使用请遵守MIT许可协议,保留版权与许可声明并注明出处。如果项目对您有帮助,欢迎赞助支持我们继续改进!
  • 提供完整商业版云RIS/PACS(区域云影像)和云胶片(数字胶片)解决方案助力紧密型医共体和医保影像云,亦可提供医疗信息化相关的定制开发和接口改造服务,有相关需求可以联系咨询!
  • 很多用户咨询想要一套集成轻量报告功能的PACS系统,现推出了定位轻量应用场景的全流程MiniPACS系统满足不同需求。MiniPACS
  • 相关商业版配套子系统:CloudRIS | CloudFilm | DicomServer | DCMViewer | Acquisition-Engine | Integration-Engine
  • 测试工具(用于联调与传输测试):MiniScu | PacsExplorer | DicomTransfer | DicomStoreScp | DicomProxy_Viewer
  • 项目Gitee仓库 | 项目GitHub仓库

联系我们

如需云 RIS/PACS、云胶片、MiniPACS、定制开发或医院系统集成,欢迎通过以下方式联系:

添加好友时请备注来意(如:DicomSCP 咨询 / 商业合作),方便及时通过。

微信联系二维码
微信联系
QQ联系二维码
QQ联系

🔗 开源组件 vs 商业方案

维度 DicomSCP(开源) 商业解决方案
定位 DICOM/PACS 基础服务组件 医疗影像完整业务系统
面向对象 开发者 / 研究人员 / AI团队 医院 / 医疗企业 / 集成商
目标用途 技术学习 / PoC验证 / 系统联调 生产环境部署 / 业务系统建设
覆盖范围 DICOM核心服务能力(SCP / Worklist / Query / WADO等) RIS + PACS + 云影像 + 云胶片 + 系统集成
系统形态 独立基础服务组件 完整医疗影像业务平台
部署方式 Docker / 本地快速运行 私有化部署 / 多院区架构 / 云平台部署
维护模式 社区维护(开源) 项目制交付 + 定制支持
扩展能力 提供基础接口与协议实现 支持医院系统对接(HIS / EMR / AI影像平台)

商业解决方案部分预览

商业ris Risreport DicomServer viewer viewer

开源版功能预览

登录 影像管理 3d预览 OHIF预览 胶片

功能特性

  • 存储服务 (C-STORE SCP)

    • 按照4个级别的标签入库和归档
    • 按照级别标签自动组织存储目录结构
    • 支持 JPEG、JPEG2000、JPEG-LS、RLE 等压缩
  • 工作列表服务 (Worklist SCP)

    • 提供标准 DICOM Modality Worklist 服务
    • 支持多种查询条件(患者ID、检查号、日期等)
    • 支持请求字符集协商自动中英文转换
  • 查询检索服务 (QR SCP)

    • 提供 C-FIND、C-MOVE、C-GET 服务
    • 可配置多个目标节点
    • 支持多种查询级别(Study/Series/Image)
    • 支持JPEG、JPEG2000、JPEG-LS、RLE 传输语法实时转码
  • 打印服务 (Print SCP)

    • 打印任务队列管理
    • 打印任务状态跟踪
    • 支持灰度 / 彩色打印
    • 归档打印的原始文件和标签
  • WADOURI 服务 (Web Access to DICOM Objects)

    • 按 Study / Series / Object UID 获取 DICOM 或 JPEG
    • 支持传输语法转码与可选匿名化
    • 请求参数与示例见下方 WADO 请求示例
  • CSTORE-SCU (CSTORE-SCU)

    • 支持发送DICOM图像到DICOM SCP
    • 可配置多个目标节点
  • Print-SCU (Print-SCU)

    • 支持将PRINTSCP接收到的图像打印到其他打印机或PRINTSCP服务
    • 构建打印图像会保留原始图像的标签信息
  • Log Service (日志服务)

    • 支持查看、删除日志
    • 各服务日志独立配置
    • 多日志级别配置
    • 服务预置详细日志 方便对接查找问题

WADO 请求示例

参数 必填 说明
requestType 是 固定为 WADO
studyUID / seriesUID / objectUID 是 检查 / 序列 / 实例 UID
contentType 否 默认 image/jpeg;亦可 application/dicom
transferSyntax 否 DICOM 传输语法 UID,不传则不转码
anonymize 否 yes 时匿名化

常用 transferSyntax:1.2.840.10008.1.2(Implicit LE)、1.2.840.10008.1.2.1(Explicit LE)、1.2.840.10008.1.2.4.50(JPEG Baseline)、1.2.840.10008.1.2.4.70(JPEG Lossless SV1)、1.2.840.10008.1.2.4.90(JPEG 2000 Lossless)、1.2.840.10008.1.2.4.80(JPEG-LS)、1.2.840.10008.1.2.5(RLE)。

http://localhost:5000/wado?requestType=WADO&studyUID={StudyUID}&seriesUID={SeriesUID}&objectUID={SOPInstanceUID}&contentType=application/dicom&transferSyntax=1.2.840.10008.1.2.4.70&anonymize=yes

系统要求

  • Windows 10/11 或 Windows Server 2012+(亦可使用 Docker 部署于 Linux)
  • .NET 8.0 或更高版本(Docker 镜像已内置运行时)
  • SQLite 3.x
  • 8GB+ RAM
  • 100GB+ 可用磁盘空间
  • 现代浏览器(Chrome/Firefox/Edge)

构建和发布

Windows 单文件发布

发布为自包含的单文件可执行程序:

dotnet publish -c Release -r win-x64 /p:SelfContained=true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true /p:DebugType=None /p:DebugSymbols=false

发布后的文件位于:bin/Release/net8.0/win-x64/publish/DicomSCP.exe

快速开始

  1. 下载最新发布版本 releases
  2. 修改 appsettings.json 配置文件 appsettings.json
  3. 运行 DicomSCP.exe
  4. 访问 http://localhost:5000
  5. 默认账号 admin / admin

配置说明

主配置文件为运行目录下的 appsettings.json(Docker 见上文挂载路径)。完整字段以仓库内文件为准:

DicomSettings(DICOM 服务)

配置项 说明
AeTitle C-STORE SCP 的应用实体标题(AE Title)
StoreSCPPort 存储服务监听端口(默认 11112)
StoragePath 接收影像的归档目录,相对路径相对程序工作目录
TempPath 临时文件目录
Advanced 存储高级选项:ValidateCallingAE / AllowedCallingAEs 控制呼叫方 AE 校验;EnableCompression、PreferredTransferSyntax 等与压缩/传输语法相关
WorklistSCP 工作列表服务:AeTitle、Port(默认 11113)、呼叫方 AE 白名单等
QRSCP 查询检索 SCP:Port(默认 11114)、MoveDestinations 为 C-MOVE 目标节点列表(Name / AeTitle / HostName / Port)
PrintSCP 打印 SCP:Port(默认 11115)、AllowedCallingAEs 等
PrintSCU 打印 SCU:Printers 为远端打印节点;IsDefault 指定默认打印机

QueryRetrieveConfig(查询检索 SCU)

配置项 说明
LocalAeTitle 本机作为 SCU 对外使用的 AE Title
RemoteNodes 远端节点列表:AeTitle、HostName、Port、Type(如 store / qr)供界面或转发使用

Kestrel(Web 与端口)

配置项 说明
Kestrel:Endpoints:Http:Url HTTP 监听地址,默认 http://0.0.0.0:5000;改端口后 Docker 需同步 -p
Kestrel:Limits:MaxRequestBodySize 请求体大小上限(字节),大文件上传时可按需调大

ConnectionStrings(数据库)

配置项 说明
DicomDb SQLite 连接串,Data Source 指向库文件路径(默认 ./db/dicom.db);Docker 下建议与挂载的 db 目录一致

Logging / Swagger

  • Logging:全局 LogPath、RetainedDays;Services 下可按服务(StoreSCP、QRSCP、WADO 等)单独开关文件/控制台日志、级别与目录。
  • Swagger:Enabled 控制是否暴露 API 文档;生产环境可关闭。

修改 DICOM 端口或防火墙策略时,需与设备端 AE、IP、端口配置一致;修改路径后请确保进程对目录有读写权限。

Docker部署

appsettings.json需要先在宿主机目录下创建好!

docker run -d --name DicomSCP --restart unless-stopped \
  -p 5000:5000 \
  -p 11112-11115:11112-11115 \
  -v /opt/docker/dicomscp/keys:/root/.aspnet/DataProtection-Keys \
  -v /opt/docker/dicomscp/logs:/app/logs \
  -v /opt/docker/dicomscp/received_files:/app/received_files \
  -v /opt/docker/dicomscp/temp_files:/app/temp_files \
  -v /opt/docker/dicomscp/appsettings.json:/app/appsettings.json \
  -v /opt/docker/dicomscp/db:/app/db \
  fightroad/dicomscp:latest

常见问题(FAQ)

点击 Weasis 没反应?

界面中的 Weasis 入口会尝试调用本机已安装的 Weasis 客户端打开影像。若未安装或安装路径未注册协议,点击可能无反应。请先安装 Weasis,再重试。

Docker 启动失败?

容器依赖将宿主机的 appsettings.json 挂载进 /app/appsettings.json。请先在宿主机创建好 Docker 命令里各 -v 对应的目录与文件(尤其是 appsettings.json),内容可参考仓库中的示例后再启动容器,避免因缺少文件或目录导致启动失败。

C-MOVE 之后接收不到影像?

C-MOVE 会把影像推到目标存储节点(接收端)。若配置或类型不对,会出现“MOVE 成功但本机收不到”的情况。请检查 appsettings.json 中 QueryRetrieveConfig:RemoteNodes 是否已正确添加该目标节点,且 Type 必须为 store(表示 C-STORE 接收端);AeTitle、HostName、Port 需与对端实际监听一致。

Nginx反向代理

HTTPS 反代示例(按需替换证书路径与域名):

server {
    listen 443 ssl;
    server_name pacs.example.com;

    ssl_certificate     /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/privkey.pem;

    client_max_body_size 512m;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_read_timeout 3600s;
    }
}

使用的开源项目

本项目使用了以下优秀的开源项目:

感谢这些优秀的开源项目,让本项目得以实现!

赞助项目

如果这个项目对您有帮助,欢迎赞助支持我们继续改进!

微信赞助
微信赞助
支付宝赞助
支付宝赞助

您的每一份支持都将帮助我们:

  • 🚀 开发新功能
  • 🐛 修复已知问题
  • 📚 完善项目文档
  • 🎨 优化用户体验

赞助时请备注您的信息,我们会将您添加到赞助者名单中。

赞助者

感谢以下赞助者的支持(排名不分先后):

  • QQ:生活
  • GITEE:mmkangaroo
  • GITEE:wisgtalt
  • GITEE:longlong159357
  • GITEE:Dentalman
  • alipay:恒
  • wechat:syg
  • GITEE:qi-hc
  • GITEE:kyo
  • GITEE:yunyunvip
  • GITEE:三才网络
  • GITEE:叶秋梦
  • wechat:Calf

参与贡献

我们非常欢迎您的贡献!如果您有任何想法或建议:

  1. Fork 本仓库
  2. 创建您的特性分支
  3. 提交您的更改
  4. 推送到分支
  5. 打开一个 Pull Request

您也可以通过以下方式参与:

  • 提交 Bug 报告
  • 提出新功能建议
  • 改进文档
  • 分享使用经验

每一份贡献都将受到重视和感谢!

许可证

本项目采用 MIT License。

使用、修改或分发时,请保留版权与许可声明,并注明出处。正式条款以根目录 LICENSE 为准。

About

打造中文开源社区最完善轻量PACS系统,医学影像必备DICOM工具箱!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages