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

Issue with Setting the Command Set in N_CREATE Response, 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 文档可能有更多相关信息(第一个 link),但我找不到它。

Command Group Length (0000,0000) 是二进制编码消息的总字节数。这通常应由您使用的工具包设置(请参阅 Scaramillion 的评论)。

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

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

至少这算作一次成功的 N-CREATE 操作。