FO-DICOM网络传输之C-ECHO和C-STORE简单实现C#例子
FO-DICOM是一个用于处理DICOM格式医学图像的开源库。它提供了大量用于解析、修改和传输DICOM数据的功能。在本文代码主要是演示如何使用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系统进行通信的应用服务程序,实现医学图像的传输和存储。