Dicom C-move 请求QR服务
个人理解 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服务的更多相关文章
- Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
问题1:ORA-12154: TNS: 无法解析指定的连接标识符 在一台服务器上部署了Oracle客户端,使用IP/SID的方式访问,老是报ORA-12154错误,而使用tnsnames访问却没有问题 ...
- Node.js 使用 soap 模块请求 WebService 服务接口
项目开发中需要请求webservice服务,前端主要使用node.js 作为运行环境,因此可以使用soap进行请求. 使用SOAP请求webservice服务的流程如下: 1.进入项目目录,安装 so ...
- 安装完oracle重新启动后报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(重启前正常)
安装完oracle重新启动后报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(重启前正常) 刚安装完后用plSql登录正常. 在dos命令行下 输入 sqlplus 用户 ...
- Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7932268 在前面一篇文章中,我们分析了And ...
- Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7884628 前面我们已经学习过Android应 ...
- sql2008r2,以前好好可以用的,但装了vs2017后,连接不上了,服务也停了,结果手动也 启动不了, 无法加载或初始化请求的服务提供程
日志: 2017-12-14 12:33:17.53 服务器 A self-generated certificate was successfully loaded for encryption.2 ...
- http客户端请求及服务端详解
http客户端请求及服务端详解 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...
- kmspico_setup.exe运行提示系统资源不足,无法完成请求的服务
在使用KMSpico激活office时,windows下运行exe会提示系统资源不足,无法完成请求的服务. 我的解决方法是:卸载电脑上的wps...
- node socket :10106无法加载或初始化请求的服务提供程序
node socket :10106无法加载或初始化请求的服务提供程序 无端端的,不知道怎么回事,node突然就坏掉 了,应该是某些配置无意中改动了,问题如下: 目前能想到的解决办法就是:重置配置,用 ...
- python服务器端、客户端的模型,客服端发送请求,服务端进行响应(web.py)
服务器端.客户端的模型,客服端发送的请求,服务端的响应 相当于启动了一个web server install web.py 接口框架用到的包 http://webpy.org/tutorial3.zh ...
随机推荐
- 鸿蒙Navigation知识点详解
Navigation是路由导航的根视图容器,一般作为页面(@Entry)的根容器,包括单栏(Stack).分栏(Split)和自适应(Auto)三种显示模式.Navigation组件适用于模块内和跨模 ...
- IPC-7093A-CN 中文 2020底部端子元器件(BTCs)设计和组装工艺的实施
IPC-7093A 标准为实施底部端子元器件(BTCs)提供了基本的设计和组装指南.具体而言,IPC-7093A 提供了与 BTCs 相关的关键设计.材料.组装.检查.维修.质量和可靠性问题的指南. ...
- (Redis基础教程之十一) 如何使Redis中的Key过期
介绍 Redis是一个开源的内存中键值数据存储.默认情况下,Redis密钥是_永久性_的,这意味着Redis服务器将继续存储它们,除非手动将其删除.但是,在某些情况下,您已经设置了密钥,但是您知道要在 ...
- Vim基本使用指南
一般模式:移动光标的方法 h或 向左方向键(←)光标向左移动一个字符 j或 向下方向键(↓)光标向下移动一个字符 k或 向上方向键(↑)光标向上移动一个字符 l或 向右方向键(→)光标向右移动一个字符 ...
- 通过jconsole查看tomcat运行情况的配置方法——基于JDK1.5、Linux(Redhat5.5)、Tomcat6
由于项目的原因,需要使用jconsole对tomcat进行远程监控,结合网上的资料对配置方法进行了总结. 第一步.配置tomcat 打开%TOMCAT_HOME%/bin下的文件catalina.sh ...
- Python模块之functools.partial
在Python编程中,functools.partial是一个强大的工具,它提供了一种部分应用函数的方式,能够在创建新函数时固定部分参数,从而在后续调用中减少需要传递的参数数量.本文将深入介绍func ...
- Nuxt.js 应用中的 webpack:progress 事件钩子
title: Nuxt.js 应用中的 webpack:progress 事件钩子 date: 2024/11/27 updated: 2024/11/27 author: cmdragon exce ...
- Vue脚手架(vue-cli)搭建和目录结构
环境搭建 1.安装node.npm.webpack 2.安装vue-cli脚手架构建工具,打开命令行工具输入:npm install vue-cli -g,安装完成之后输入 vue -V(注意这里是大 ...
- 鸿蒙UI开发快速入门 —— part11: 鸿蒙计算器开发实践
1.前言 经过我们前面10章的学习,我们基本上可以开发出一个简单的APP了,为了巩固学习的内容,我们先开发一个计算器APP来连个手(文末有源代码),界面如下: 包含基本的计算器运算功能 支持一键清空, ...
- Python中指数概率分布函数的绘图详解
在数据科学和统计学中,指数分布是一种应用广泛的连续概率分布,通常用于建模独立随机事件发生的时间间隔.通过Python,我们可以方便地计算和绘制指数分布的概率密度函数(PDF).本文将详细介绍指数分布的 ...