在 N_CREATE 响应中设置命令集的问题,pydicom

问题描述

我正在开发一个 MPPS SCP,如下所述:MPPS SCP 作为基本框架。

我已经能够使用 DVTk 对其进行了一些测试,这里提供了一些工具:DVTk

其中大部分似乎工作正常,但我似乎遇到的问题是响应假设在“命令集”而不是在返回的数据集中返回带有组 0000 的标签:我实际上做了将它们设置在 DataSet 中只是为了验证我是否获得了正确的值,例如:

python_mpps_1         | (0000,0000) Command Group Length  ????
python_mpps_1         | (0000,0002) Affected SOP Class UID              UI: Modality Performed Procedure Step SOP Class
python_mpps_1         | (0000,0100) Command Field                       US: 33088
python_mpps_1         | (0000,0120) Message ID Being Responded To       US: 2
python_mpps_1         | (0000,0800) Command Data Set Type               US: 0
python_mpps_1         | (0000,0900) Status                              US: 0
python_mpps_1         | (0008,0016) SOP Class UID                       UI: Modality Performed Procedure Step SOP Class

我不确定命令组长度、命令字段和命令数据集类型应该是什么,但更重要的是,我不知道如何适当地设置它们。我不认为它们应该在数据集中设置,而是 N_CREATE 响应的命令集对象的一部分:

#     'N-CREATE-RSP': (
#         'CommandGroupLength','AffectedSOPClassUID','CommandField',#         'MessageIDBeingRespondedTo','CommandDataSetType','Status',#         'AffectedSOPInstanceUID',#         'ErrorID','ErrorComment'
#     ),

使用 DVTk 作为测试工具,在他们的示例脚本中使用 MPPS.SCU 脚本,除了没有在响应中发送命令集值之外,一切似乎都有效。经过一番挖掘,我认为必须以另一种方式设置,但我不确定如何设置。

pynetdicom 文档可能有更多相关信息(第一个链接),但我一直找不到。

解决方法

命令组长度 (0000,0000) 是二进制编码消息的总字节数。这通常应该由您使用的工具包设置(参见 Scaramillion 的推荐)。

您的命令类型是 N-CREATE Response,通常没有任何数据集。不知道 DVT 脚本,我假设您的脚本不希望将数据集附加到命令集。

即(0008,0016) SOP Class UID 不应存在(它已经作为 (0000,0002) Affected SOP Class UID 作为命令集的一部分),并且 (0000,0800) 命令数据集类型应设置为 0x0101 以指示没有数据集跟随命令集。

至少这对成功的 N-CREATE 操作很重要。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...