Conquest on a Virtual Machine

  • Hello Marcel,


    When calling getScu from DCMTK, this is the following output. It is trying to save the dicom data which is shipped with Conquest.


    Johns-MBP:Dicom johnbell$ getscu -k PatientID="0009703828" 127.0.0.1 5678 -aet CONQUESTSRV1 -v -pdu 56032

    I: Requesting Association

    I: Association Accepted (Max Send PDV: 32756)

    I: Sending C-GET Request (MsgID 1)

    I: Received C-STORE Request (MsgID 7299)

    W: DcmItem: Invalid Element (0002,0001) found in data set

    W: DcmItem: Invalid Element (0002,0002) found in data set

    W: DcmItem: Invalid Element (0002,0003) found in data set

    W: DcmItem: Invalid Element (0002,0010) found in data set

    W: DcmItem: Invalid Element (0002,0012) found in data set

    W: DcmItem: Invalid Element (0002,0013) found in data set

    W: DcmItem: Length of element (7fe0,0010) is not a multiple of 2 (VR=OW)

    E: cannot write DICOM file: CT.1.3.46.670589.5.2.10.2156913941.892665339.718742

    I: Sending C-STORE Response (Error: CannotUnderstand)

    I: Releasing Association

    E: Association Release Failed: 0006:0316 DUL P-Data PDU arrived

    I: Aborting Association


    Any thoughts on this?


    Regards,


    Daniel

  • Thanks for that. I believe conquest fails to strip the header and maybe is sending compressed data? I will try to fix this very soon. We have only tested cget with pynetdicom and conquest itself.

  • Yes indeed,


    it fails to decompress or strip the header. Can you try this:


    In nkiqrsop.cxx, around line 665, replace this code:


    Code
    else
    {
    AcceptedCompress = UsedPDU->GetAcceptedCompressionType(iUID);
    StripGroup2 = memicmp(AcceptedCompress, "as", 2)!=0 && memicmp(AcceptedCompress, "is", 2)!=0;

    By:


    Code
    else
                {
                if (!cget) AcceptedCompress = UsedPDU->GetAcceptedCompressionType(iUID);
                else AcceptedCompress = "un";
    StripGroup2 = memicmp(AcceptedCompress, "as", 2)!=0 && memicmp(AcceptedCompress, "is", 2)!=0;

    This should fix the issue.


    Marcel

  • Hi,


    just tried dcmtk myself, conquest returns 6 bytes too much, and getscu fails on that. I changed pdata.cxx line 202 as follows:


    Code
    BlockSize = MaxSubLen-6; //16384; // was 4096;

    And then getscu works. Sorry for that!


    Marcel

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!