个人理解 Dicom C-get 就是在没有设置任何验证情况下请求QR服务,而C-move是有验证的情况下请求QR服务。一般都是C-move,因为机器都需要验证。

Dicom C-move 原理:自己写一个SCU程序,通过scu发送请求给QR服务,再用自己的SCP来接收QR的C-Store回传的影像。

需要引用Dicom.Core 4.0.8.0或以下

  /// <summary>
/// C-Store SCP AE Title:影像归档目的地的 AE Title,之所以这样写,是因为 C-Move 既可以是两方通信,也可以是三方通信,如果是两方通信,那么 C-Move SCU 同时需要提供 C-Store SCP 的功
/// 能,这里就可以写 C-Move SCU 的 AE Title;如果是三方通信,那么这个影像归档的目的地之需要提供 C-Store SCP 的功能,所以这里的参数就要写C-Store SCP 的 AE Title;
/// StudyInstanceUID:检查唯一标识;
/// C-Move SCP IP:C-Move 服务端的 IP 地址或机器名;
/// C-Move SCP Port:C-Move 服务端的端口;
/// C-Move SCU AE Title:C-Move 客户端应用实体的名称;
/// C-Move SCP AE Title:C-Move 服务端应用实体的名称;
/// </summary>
[Obsolete]
private void C_Move(string studyInstanceUID)
{
try
{ SQLDBHelper helper = new SQLDBHelper(); var model = helper.GetByStudyID(studyInstanceUID);
if (model != null && model.ID > 0)
return; var successNum = new List<int>();
var client = new DicomClient();
//var request = new DicomCMoveRequest({ C - Store SCP AE Title }, { StudyInstanceUID}); var destinationAe = ConfigurationManager.AppSettings["DestinationAe"];
string host = ConfigurationManager.AppSettings["DicomHost"];
int port = int.Parse(ConfigurationManager.AppSettings["DicomPort"]);
bool useTls = bool.Parse(ConfigurationManager.AppSettings["DicomUseTls"]);
string callingAe = ConfigurationManager.AppSettings["DicomcallingAe"];
string calledAe = ConfigurationManager.AppSettings["DicomcalledAe"]; var request = new DicomCMoveRequest(destinationAe, studyInstanceUID);
client.AddRequest(request); request.OnResponseReceived += (DicomCMoveRequest requ, DicomCMoveResponse response) =>
{
if (response.Status.State == DicomState.Pending)
{
successNum.Add(response.Remaining);
//Console.WriteLine("Sending is in progress. please wait: " + response.Remaining + " SOP instances need to do C-Store options");
}
else if (response.Status.State == DicomState.Success)
{
if (successNum != null && successNum.Count > 0)
{
var maxNum = successNum.Max(); helper.Insert(studyInstanceUID, maxNum + 1);
} //Console.WriteLine("Sending successfully finished");
}
else if (response.Status.State == DicomState.Failure)
{
//Console.WriteLine("Error sending datasets: " + response.Status.Description);
}
//Console.WriteLine(response.Status);
}; //client.Send({ C - Move SCP IP}, { C - Move SCP Port}, false, { C - Move SCU AE Title}, { C - Move SCP AE Title}); client.Send(host, port, useTls, callingAe, calledAe); }
catch (Exception ex)
{
Logger.Instance().Error("用C-MOVE获取图像失败:" + ex.Message + " ,具体错误如下" + ex);
}
}

Dicom C-move 请求QR服务的更多相关文章

  1. Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序

    问题1:ORA-12154: TNS: 无法解析指定的连接标识符 在一台服务器上部署了Oracle客户端,使用IP/SID的方式访问,老是报ORA-12154错误,而使用tnsnames访问却没有问题 ...

  2. Node.js 使用 soap 模块请求 WebService 服务接口

    项目开发中需要请求webservice服务,前端主要使用node.js 作为运行环境,因此可以使用soap进行请求. 使用SOAP请求webservice服务的流程如下: 1.进入项目目录,安装 so ...

  3. 安装完oracle重新启动后报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(重启前正常)

    安装完oracle重新启动后报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(重启前正常) 刚安装完后用plSql登录正常. 在dos命令行下 输入  sqlplus 用户 ...

  4. Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7932268 在前面一篇文章中,我们分析了And ...

  5. Android应用程序请求SurfaceFlinger服务创建Surface的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7884628 前面我们已经学习过Android应 ...

  6. sql2008r2,以前好好可以用的,但装了vs2017后,连接不上了,服务也停了,结果手动也 启动不了, 无法加载或初始化请求的服务提供程

    日志: 2017-12-14 12:33:17.53 服务器 A self-generated certificate was successfully loaded for encryption.2 ...

  7. http客户端请求及服务端详解

    http客户端请求及服务端详解 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...

  8. kmspico_setup.exe运行提示系统资源不足,无法完成请求的服务

    在使用KMSpico激活office时,windows下运行exe会提示系统资源不足,无法完成请求的服务. 我的解决方法是:卸载电脑上的wps...

  9. node socket :10106无法加载或初始化请求的服务提供程序

    node socket :10106无法加载或初始化请求的服务提供程序 无端端的,不知道怎么回事,node突然就坏掉 了,应该是某些配置无意中改动了,问题如下: 目前能想到的解决办法就是:重置配置,用 ...

  10. python服务器端、客户端的模型,客服端发送请求,服务端进行响应(web.py)

    服务器端.客户端的模型,客服端发送的请求,服务端的响应 相当于启动了一个web server install web.py 接口框架用到的包 http://webpy.org/tutorial3.zh ...

随机推荐

  1. C语言指针一些常见的错误用法

    指针用的好犹如神助,用不好会让你叫苦连连,但大多数人是用不好指针的,所以后来的很多语言都把指针封装,屏蔽.比如JAVA,java是没有指针的,但是很多地方都用到指针,不过不对用户开放,语言的自身机制帮 ...

  2. 2023NOIP A层联测32 T3 sakuya

    2023NOIP A层联测32 T3 sakuya 虚伪的期望,彬彬赛时都能 A 的数学题. 思路 考虑算出来总的花费,再除以 \(m!\) 求期望. 对于某个排列的花费为:\(\sum\limits ...

  3. OSG开发笔记(三十四): OsgUtil::Simplifier:简化几何体,提升显示性能和渲染效率

    前言   对于一些较大的图形,会出现显示卡顿和渲染缓慢的问题,这时候就要使用到osgUtil::Simplifier简化器,来对其进行简化.   Demo            osgUtil   o ...

  4. 我的neovim配置

    init.vim " Vim with all enhancements "文件管理器,我想试一下ranger syntax enable syntax on let maplea ...

  5. Mybatis源代码分析之类型转换

    ORM框架最重要功能是将面向对象方法中的对象和关系型数据库中的表关联了起来,在关联过程中就必然涉及到对象中的数据类型和数据库中的表字段类型的转换,Mybatis中的org.apache.ibatis. ...

  6. 关于ClassLoader中getResource与getResourceAsStream的疑问

    背景: 某日临近下班,一个同事欲任何类中获取项目绝对路径,不通过Request方式获取,可是始终获取不到预想的路径.于是晚上回家google了一下,误以为是System.getProperty(&qu ...

  7. 理解Flink之一编译Flink-1.11.1

    下载源码 git clone -b release-1.11.1 https://github.com/apache/flink.git --depth=1 flink-1.11.1 编译 mvn c ...

  8. go mod使用小结

    转载请注明出处: go mod 命令是用于管理 Go 语言项目的模块依赖关系的工具.Go 语言从 1.11 版本开始引入了模块支持,并在后续版本中逐渐完善.模块是 Go 语言代码的一个集合,每个模块都 ...

  9. 微信小程序手机号登录

    import { wxPhoneLogin, getPhoneNumber } from '../login' // 后端接口 // 服务端接口 - 获取openid function queryOp ...

  10. DTL事务控制语言--sql事务

    DTL事务控制语言体格sql语句就是一个事务事务可以保证 一组sql语句要么都成功,要么都失败默认自动提交一可以关闭 set autocommit=0关闭自动提交最后 插入或者修改时 只有commit ...