Specifying Modification List for N-SET-RQ

73 views
Skip to first unread message

martin....@medlever.com

unread,
Oct 24, 2018, 6:33:43 PM10/24/18
to Fellow Oak DICOM
I'm working on a project whose workflow calls for N-SET requests to update an in-progress record. I haven't been able to find any good sample code so I'm hoping that someone here can help me out.

The DICOM Message Exchange spec calls for a Modification List that encodes the attributes that you wish to update in an N-SET request: http://dicom.nema.org/medical/Dicom/2017e/output/chtml/part07/sect_10.3.3.html#table_10.3-5

Do I specify these attributes by appending them to the NSetRequest object's Command dataset, or should they be added as a new Dataset for the NSetRequest.Dataset property?

For example, if I wanted to set the Patient Comments attribute on some bogus object, would this be a valid request setup?

var nSetRequest = new DicomNSetRequest(
    new DicomUID("1.2.3", "Bogus SOP Class", DicomUidType.SOPClass),
    new DicomUID("1.2.3.0.1", "Bogus Instance", DicomUidType.SOPInstance));
nSetRequest.Command.Add(DicomTag.PatientComments, "Foo bar baz");


The SCP I am communicating with is something of a black box, and I have been getting Association Aborts from it, with the reason code UnexpectedPDU. I am not currently in a position to get more detail from the system or from the vendor so in the meantime I want to make sure that I'm at least forming the NSet request correctly.

Thanks in advance,

-martin

martin....@medlever.com

unread,
Oct 31, 2018, 1:46:50 PM10/31/18
to Fellow Oak DICOM
Just following up on my own message so I can share the resolution.

First, N-SET modification lists should go into the Dataset rather than the Command. For example:

var nSetRequest = new DicomNSetRequest(
    new DicomUID("1.2.3", "Bogus SOP Class", DicomUidType.SOPClass),
    new DicomUID("1.2.3.0.1", "Bogus Instance", DicomUidType.SOPInstance));

var dataset = new DicomDataset()
{
    { DicomTag.PatientComments, "Foo bar baz" }
};
nSetRequest.Dataset = dataset;

Second, we obtained a packet capture log from the vendor showing a successful N-SET operation, which revealed that their systems sent N-SET command and data PDVs as separate PDUs. Combining both PDVs in a single PDU triggered the Association Abort error. We were able to send a successful N-SET request by giving our client a DicomServiceOptions instance with MaxPDVsPerPDU set to 1.

-martin
Reply all
Reply to author
Forward
0 new messages