文章目录
前言
前一篇已经讲述了MPPS原理:DICOM MPPS详细介绍
这里将详细讲述代码实现。
一、MPPS的SCU端实现
目前很多检查设备内部已经实现了MPPS的SCU功能,当检查状态更新时,会将更新状态和Dicom信息一并发送给SCP端。目前可以使用Fo-Dicom开源库快速实现该功能:
1、测试链接
实现一个CEcho:
private string _ipStr = "localhost";
private int _port = 8006;
private string _calledAE = "MPPSC";
private string _callingAE = "MPPSU";
var client = DicomClientFactory.Create(_ipStr,_port, false, _callingAE,_calledAE);
client.NegotiateAsyncOps();
DicomCEchoRequest request = new DicomCEchoRequest();
request.OnResponseReceived += (req, res) =>
{
if(res.Status == DicomStatus.Success)
{
MessageBox.Show("链接成功!!!");
}
else
{
MessageBox.Show("链接失败!!!");
}
};
await client.AddRequestAsync(request);
await client.SendAsync();
2、使用NCreate,创建实例并发送一个IN PROGRESS状态
private static async Task<(string responseStatus, string responseMessage)> SendMppsInProgressAsync(string serverIP,int serverPort,string clientAET, string serverAET)
{
var client = DicomClientFactory.Create(serverIP, serverPort, false, clientAET, serverAET);
var dataset = new DicomDataset
{
{
DicomTag.PerformedProcedureStepEndDate, DateTime.Now },
{
DicomTag.PerformedProcedureStepEndTime, DateTime.Now },
{
DicomTag.PerformedProcedureStepStatus, "IN PROGRESS" },
{
DicomTag.PerformedProcedureStepDescription, string.Empty },
{
DicomTag.PerformedProcedureTypeDescription, string.Empty }
};
var performedProtocolCodeSequence = new DicomSequence(DicomTag.PerformedProtocolCodeSequence);
dataset.Add(performedProtocolCodeSequence);
//空的序列信息
var performedSeriesSq = new DicomSequence(DicomTag.PerformedSeriesSequence);
dataset.Add