FO-DICOM是一个用于处理DICOM格式医学图像的开源库。它提供了大量用于解析、修改和传输DICOM数据的功能。在本文代码主要是演示如何使用FO-DICOM库进行网络传输的C-ECHO和C-STORE服务类。
在开始之前,请确保你的项目已经安装了FO-DICOM开源库。最简单的就是直接通过NuGet包管理器来安装,简单快捷,就是得注意下选择fo-dicom的版本号,这里实例是用4.0系列的。
不废话直接上代码:
一、C-ECHO服务(验证服务端服务是否开启)
C-ECHO是一种用于测试DICOM通信的服务类。它发送一个请求并等待响应,以确认通信是否正常。下面是C#+fo-dicom简单的C-ECHO请求例子
using Dicom; using Dicom.Network; class Program { static void Main(string[] args) { var client = new DicomClient("localhost", 104); // 指定远程主机和端口号 var request = new DicomCEchoRequest(); // 创建C-ECHO请求 request.OnResponseReceived = (request, response) => { if (response.Status.Success) { Console.WriteLine("C-ECHO成功!"); } else { Console.WriteLine("C-ECHO失败:{0}", response.Status.ErrorMessage); } }; client.Send(request); // 发送请求 } }
$67abd01c-0c2b-c538-007c-76a50b76b44f
二、C-STORE(用于影像传输)
C-STORE服务用于将DICOM图像发送到远程AE服务器进行存储。以下是一个简单的C-STORE请求例子:
using Dicom; using Dicom.Network; using System.IO; class Program { static void Main(string[] args) { var file = @"C:\path\to\your\dicomfile.dcm"; // 指定要发送的DICOM文件路径 var dataset = DicomFile.Open(file).Dataset; // 打开DICOM文件并获取数据集 var client = new DicomClient("localhost", 104); // 指定远程主机和端口号 var request = new DicomCStoreRequest(dataset); // 创建C-STORE请求 request.OnResponseReceived = (request, response) => { if (response.Status.Success) { Console.WriteLine("C-STORE成功!"); } else { Console.WriteLine("C-STORE失败:{0}", response.Status.ErrorMessage); } }; client.Send(request); // 发送请求 } }
简单概述: C-ECHO和C-STORE服务类就能够实现与DICOM放射设备和pacs系统进行通信的应用服务程序,做到医学图像(dcm)的传输和存储。