Hello,
I did not yet try to set a VOI window, but i'll try as soon as I finished the Query/Retrieve part.
I have two questions :
The first is related to storescp and SCP in general.
I built storescp as a shared library for Android, and used the
dcmscu example to send move requests. It works, but the problem is that I cannot stop the server once I retrieved the study. It results in a background thread that I cannot stop properly.
I would like to start the server each time I want to retrieve a study, but with different parameters (port, output directory).
Is it possible to stop the storeSCP after retrieving a study, for instance using option --exec-on-eostudy ?
I also wanted to implement a c-get request. However it does not work. Here is my code :
--------------
Get.cpp
--------------
Code:
//init scu and JNI stuff...
scu.setACSETimeout(5);
scu.setPacs(jHost, jPort, jPeerAeTitle, jCallingAeTitle);
OFList<OFString> ts;
ts.push_back(UID_LittleEndianExplicitTransferSyntax);
ts.push_back(UID_BigEndianExplicitTransferSyntax);
ts.push_back(UID_LittleEndianImplicitTransferSyntax);
scu.addPresentationContext(UID_GETStudyRootQueryRetrieveInformationModel, ts);
scu.addPresentationContext(UID_VerificationSOPClass, ts);
OFCondition result = scu.initNetwork();
if (result.bad())
{
scu.setLastError(result.text());
scu.closeAssociation(DCMSCU_RELEASE_ASSOCIATION);
return 1;
}
result = scu.negotiateAssociation();
if (result.bad())
{
OFString s("Unable to negotiate association: ");
scu.setLastError(s + result.text());
scu.closeAssociation(DCMSCU_RELEASE_ASSOCIATION);
return 2;
}
T_ASC_PresentationContextID presID = scu.findUncompressedPC(UID_GETStudyRootQueryRetrieveInformationModel);
if (presID == 0)
{
scu.setLastError("There is no uncompressed presentation context for Study Root FIND");
return 3;
}
OFString storageDir = env->GetStringUTFChars(jStorageDir, NULL);
scu.setStorageDir(storageDir);
OFString uid = env->GetStringUTFChars(jUid, NULL);
DcmDataset *req = new DcmDataset;
req->putAndInsertOFStringArray(DCM_QueryRetrieveLevel, "SERIES");
LOGI("%s", uid.c_str());
req->putAndInsertOFStringArray(DCM_SeriesInstanceUID, uid, true);
OFList<RetrieveResponse *> responses;
result = scu.sendCGETRequest(presID, req, &responses);
if (result.bad())
{
scu.setLastError("C-GET request failed");
return 4;
}
scu.closeAssociation(DCMSCU_RELEASE_ASSOCIATION);
return 0;
}
-------
DicomSCU.cpp
The DicomSCU class inherits
DcmSCU-------
Code:
OFCondition DicomSCU::handleCGETResponse(const T_ASC_PresentationContextID presID,
RetrieveResponse *response,
OFBool &continueCGETSession)
{
LOGI("%s", response->m_affectedSOPClassUID.c_str());
LOGI("Failed : %d", response->m_numberOfFailedSubops);
LOGI("Completed : %d", response->m_numberOfCompletedSubops);
LOGI("Remaining : %d", response->m_numberOfRemainingSubops);
return DcmSCU::handleCGETResponse(presID, response, continueCGETSession);
}
LOGI refers to Android Log.
The output is :
Failed : 22
Completed : 0
Remaining : 0
The study I want to retrieve has effectively 22 elements, however the single C-GET response tell me it failed.
How to solve it ? Is it due to a bad presentation context?
Could you provide a C-GET example?
Thanks by Advance
相关推荐
TIFF support: set "DCMTK_WITH_TIFF" to "ON" and "WITH_LIBTIFFINC" to the directory containing TIFF include files, while "WITH_LIBTIFFLIB" should point to the TIFF library location. ICU (International...
这是博文《第一个 DCMTK 程序:显示 DICOM 图像(DCMTK 3.6.4 + Qt 5.14.2 + VS2015)》的源码,详细内容见博客文章 https://blog.csdn.net/blackwoodcliff/article/details/109481195
nodejs-dcmtk 基于Nodsjs Alpine和DCMTK的Docker映像
dcmtk dcmtk的目标是包装'DICOM'工具包('DCMTK') 。 移植了医学数字成像和通信('DICOM')工具包的功能集,这是一组处理成像数据的功能。 安装 您可以使用以下方法从安装dcmtk的发行版本: install.packages( ...
专栏博文“DICOM:基于DCMTK实现C-FIND SCU”中对应的源代码。基于dcmtk开源库中的findscu工程,实现的简单的C-FIND SCU,用于示范如何使用dcmtk操作实现具体的DICOM应用。
3. **命令行工具**:DCMTK提供了一系列的命令行工具,如dcmdump用于查看DICOM文件内容,dcmsend用于发送DICOM数据,dcmscp作为DICOM接收器,以及dcmmkdir用于创建DICOM目录结构等。 4. **API接口**:DCMTK提供了C++...
名称:DCMTK 评级:★★★★★ 开源许可:BSD 功能: 影像处理,影像归档,影像管理,影像传输 标准:DICOM 语言:英语 客户端: 桌面 平台:跨平台 编程语言:C/C++ 官方网站:http://dicom.offis.de/
接下来,我们看看如何在VS2017和Qt5环境中集成和使用DCMTK: 1. **环境配置**:安装CMake,创建一个新项目,设置VS2017作为生成器,指定Qt5和DCMTK的路径。 2. **添加依赖**:在CMakeLists.txt文件中链接DCMTK库,...
2. **研究DcmSCP类**:通过阅读DCMTK源码,了解`DcmSCP`类的成员函数和工作流程,如`onCStoreRequest()`方法,它是处理C-STORE请求的关键。 3. **创建子类**:根据需求扩展`DcmSCP`类,可能需要覆盖或添加新的功能,...
在Visual Studio 2019环境下,你可以通过以下步骤集成DCMTK: 1. 解压提供的`Dcmtk-3.6.7`压缩包。 2. 配置项目的属性页,添加DCMTK库的包含目录(头文件)和库目录(链接库)。 3. 链接所需的DCMTK库文件,这些...
DCMTK攻略 DCMTK(DICOM Toolkit)是德国Offis公司开发的开源项目,旨在提供一个实现DICOM协议的平台,为开发者提供了一个便捷的开发环境。DCMTK提供了所有的源代码、支持库和帮助文档,支持多种操作系统,包括...
DCMTK(DICOM ToolKit)是一个开源软件库,专门用于处理医学图像数据,符合DICOM(Digital Imaging and Communications in Medicine)标准。该标准在医疗领域广泛使用,用于存储、传输和打印医学影像数据。DCMTK ...
首先,"DCMTK"是DICOM(Digital Imaging and Communications in Medicine)工具包的缩写,这是一个开源软件库,主要用于医学图像处理,如读取、写入和转换DICOM格式的数据。"vs2008"指的是Visual Studio 2008,这是...
DCMTK(Digital Imaging and Communications in Medicine Toolkit)是开源软件库,主要用于开发医学影像通信标准(DICOM)的软件。这个3.6.0版本的官方帮助文档是开发者和使用者理解DCMTK的重要资源,提供了详尽的...
DCMTK入门指南-编译说明 DCMTK(DICOM_toolkit)是一个开源软件,使得开发者可以轻松地处理DICOM格式的医学图像。以下是 DCMTK 的编译说明: 环境准备 在编译 DCMTK 之前,需要准备以下环境: * 操作系统:WIN7 ...
- 在"Where to build the binary:"字段填写C:\DCMTK\dcmtk-3.5.4。 - 点击"Configure"按钮,选择"Visual Studio 8 2005",点击OK。 - 根据需要,CMake会自动搜索libxml, libpng等库的路径,你可以根据需求开启要...
DCMTK 新手使用指南 DCMTK 是一个 DICOM 工具包,提供了 DICOM 协议的实现和DICOM 文件处理功能。作为新手,使用 DCMTK 可能会遇到很多疑惑之处。本文总结了 DCMTK 新手使用指南,旨在帮助大家快速上手 PACS 事业。...
DCMTK(DICOM ToolKit)是一套开源的软件库,专门用于开发处理DICOM(Digital Imaging and Communications in Medicine)标准的应用程序。DICOM是一种广泛应用于医疗成像领域的国际标准,它定义了医学图像和相关数据...
DCMTK(Digital Imaging and Communications in Medicine Toolkit)是一款开源的医学图像处理库,主要用于医疗影像数据的处理、传输和解析。这个压缩包提供的是已经针对Windows 10操作系统编译好的DCMTK工具集,意味...
DCMTK(DICOM Toolkit)是开放源代码的软件库,专为开发和处理遵循DICOM(Digital Imaging and Communications in Medicine)标准的医疗影像数据而设计。DICOM是一种广泛使用的国际标准,它定义了医疗设备之间以及...