FO-DICOM网络传输之C-ECHO和C-STORE简单实现C#例子


FO-DICOM是一个用于处理DICOM格式医学图像的开源库。它提供了大量用于解析、修改和传输DICOM数据的功能。在本文代码主要是演示如何使用FO-DICOM库进行网络传输的C-ECHO和C-STORE服务类。

FO-DICOM网络传输之C-ECHO和C-STORE简单实现栗子

在开始之前,请确保你的项目已经安装了FO-DICOM开源库。你可以通过NuGet包管理器来安装它。

一、C-ECHO服务(验证服务端服务是否开启)

C-ECHO是一种用于测试DICOM通信的服务类。它发送一个请求并等待响应,以确认通信是否正常。以下是一个C#简单的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); // 发送请求  
    }  
}

二、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系统进行通信的应用服务程序,实现医学图像的传输和存储。