Storescp does not receive images

All other questions regarding DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
bkuemmer
Posts: 21
Joined: Wed, 2005-05-04, 12:49
Location: Bremen, Germany

Storescp does not receive images

#1 Post by bkuemmer »

First of all sorry for the very unspecific subject, but I did not find a way to describe the problem in a short manner... So here's the long version:

We are using storescp and movescu (dcmtk 3.5.3) to retrieve images from a PACS system (major vendor).
The problem is the following:
When using the default storescp.cfg file (as included in etc/storescp.cfg), we are not able to retrieve MRImageStorage objects, but we are able to retrieve SecondaryCaptureImageStorage objects.

When I change the transfer syntax configuration for MRImageStorage to UncompressedOrZlib, retrieval of MR images works as well.

My expectation would have been that even when the SCU negotiates a compressed transfer syntax, I would at least receive the object, but it seems that the association is just closed after the initial communication.

Here's the output of storescp -d when sending an MR image.

Code: Select all

D:\test>storescp.exe -d -xf storescp.cfg Default 1602
PDU Type: Associate Request PDU Length: 5919
Only dumping 512 bytes
  01  00  00  00  17  19  00  01  00  00  6d  69  64  63  30  30
  31  20  20  20  20  20  20  20  20  20  47  45  50  41  43  53
  20  20  20  20  20  20  20  20  20  20  00  00  00  00  00  00
  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  00  00  00  00  00  00  00  00  00  00  10  00  00  15  31  2e
  32  2e  38  34  30  2e  31  30  30  30  38  2e  33  2e  31  2e
  31  2e  31  20  00  00  7a  01  00  00  00  30  00  00  14  31
  2e  32  2e  38  34  30  2e  31  30  30  30  38  2e  31  2e  32
  30  2e  31  40  00  00  13  31  2e  32  2e  38  34  30  2e  31
  30  30  30  38  2e  31  2e  32  2e  32  40  00  00  13  31  2e
  32  2e  38  34  30  2e  31  30  30  30  38  2e  31  2e  32  2e
  31  40  00  00  11  31  2e  32  2e  38  34  30  2e  31  30  30
  30  38  2e  31  2e  32  40  00  00  17  32  2e  31  36  2e  38
  34  30  2e  31  2e  31  31  33  37  30  39  2e  31  2e  32  2e
  31  20  00  00  7d  03  00  00  00  30  00  00  17  31  2e  32
  2e  38  34  30  2e  31  30  30  30  38  2e  33  2e  31  2e  32
  2e  33  2e  33  40  00  00  13  31  2e  32  2e  38  34  30  2e
  31  30  30  30  38  2e  31  2e  32  2e  32  40  00  00  13  31
  2e  32  2e  38  34  30  2e  31  30  30  30  38  2e  31  2e  32
  2e  31  40  00  00  11  31  2e  32  2e  38  34  30  2e  31  30
  30  30  38  2e  31  2e  32  40  00  00  17  32  2e  31  36  2e
  38  34  30  2e  31  2e  31  31  33  37  30  39  2e  31  2e  32
  2e  31  20  00  00  77  05  00  00  00  30  00  00  11  31  2e
  32  2e  38  34  30  2e  31  30  30  30  38  2e  31  2e  31  40
  00  00  13  31  2e  32  2e  38  34  30  2e  31  30  30  30  38
  2e  31  2e  32  2e  32  40  00  00  13  31  2e  32  2e  38  34
  30  2e  31  30  30  30  38  2e  31  2e  32  2e  31  40  00  00
  11  31  2e  32  2e  38  34  30  2e  31  30  30  30  38  2e  31
  2e  32  40  00  00  17  32  2e  31  36  2e  38  34  30  2e  31
  2e  31  31  33  37  30  39  2e  31  2e  32  2e  31  20  00  00
  99  07  00  00  00  30  00  00  19  31  2e  32  2e  38  34  30
  2e  31  30  30  30  38  2e  35  2e  31  2e  34  2e  31  2e  31

Parameters:
Our Implementation Class UID:    1.2.276.0.7230010.3.0.3.5.3
Our Implementation Version Name: OFFIS_DCMTK_353
Their Implementation Class UID:    1.2.840.113619.6.94
Their Implementation Version Name: CENTRICITY_2.1
Application Context Name:    1.2.840.10008.3.1.1.1
Calling Application Name:    GEPACS
Called Application Name:     midc001
Responding Application Name:
Our Max PDU Receive Size: 16384
Their Max PDU Receive Size: 28672
Presentation Contexts:
  Context ID:        1 (Proposed)
    Abstract Syntax: =StorageCommitmentPushModelSOPClass
    Proposed SCP/SCU Role: SCP
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        3 (Proposed)
    Abstract Syntax: =ModalityPerformedProcedureStepSOPClass
    Proposed SCP/SCU Role: SCP
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        5 (Proposed)
    Abstract Syntax: =VerificationSOPClass
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        7 (Proposed)
    Abstract Syntax: =MRImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        9 (Proposed)
    Abstract Syntax: =ComputedRadiographyImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        11 (Proposed)
    Abstract Syntax: =CTImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        13 (Proposed)
    Abstract Syntax: =SecondaryCaptureImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        15 (Proposed)
    Abstract Syntax: =UltrasoundImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        17 (Proposed)
    Abstract Syntax: =UltrasoundMultiframeImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =JPEGBaseline
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
  Context ID:        19 (Proposed)
    Abstract Syntax: =RETIRED_UltrasoundImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =JPEGBaseline
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
  Context ID:        21 (Proposed)
    Abstract Syntax: =RETIRED_UltrasoundMultiframeImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =JPEGBaseline
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
  Context ID:        23 (Proposed)
    Abstract Syntax: =NuclearMedicineImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        25 (Proposed)
    Abstract Syntax: =XRayAngiographicImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        27 (Proposed)
    Abstract Syntax: =RETIRED_XRayAngiographicBiPlaneImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        29 (Proposed)
    Abstract Syntax: =XRayFluoroscopyImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        31 (Proposed)
    Abstract Syntax: =DigitalXRayImageStorageForPresentation
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        33 (Proposed)
    Abstract Syntax: =DigitalXRayImageStorageForProcessing
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        35 (Proposed)
    Abstract Syntax: =DigitalMammographyXRayImageStorageForPresentation
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        37 (Proposed)
    Abstract Syntax: =DigitalMammographyXRayImageStorageForProcessing
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        39 (Proposed)
    Abstract Syntax: =RTImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        41 (Proposed)
    Abstract Syntax: =VLEndoscopicImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        43 (Proposed)
    Abstract Syntax: =VLMicroscopicImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        45 (Proposed)
    Abstract Syntax: =VLPhotographicImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        47 (Proposed)
    Abstract Syntax: =VLSlideCoordinatesMicroscopicImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        49 (Proposed)
    Abstract Syntax: =PETImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        51 (Proposed)
    Abstract Syntax: 1.2.840.113619.4.26
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        53 (Proposed)
    Abstract Syntax: 1.2.840.113619.4.30
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        55 (Proposed)
    Abstract Syntax: =RETIRED_NuclearMedicineImageStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      2.16.840.1.113709.1.2.2
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      =JPEGBaseline
  Context ID:        57 (Proposed)
    Abstract Syntax: =FINDPatientRootQueryRetrieveInformationModel
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        59 (Proposed)
    Abstract Syntax: =MOVEPatientRootQueryRetrieveInformationModel
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        61 (Proposed)
    Abstract Syntax: =FINDPatientStudyOnlyQueryRetrieveInformationModel
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        63 (Proposed)
    Abstract Syntax: =MOVEPatientStudyOnlyQueryRetrieveInformationModel
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        65 (Proposed)
    Abstract Syntax: =FINDStudyRootQueryRetrieveInformationModel
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        67 (Proposed)
    Abstract Syntax: =MOVEStudyRootQueryRetrieveInformationModel
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
      2.16.840.1.113709.1.2.1
  Context ID:        69 (Proposed)
    Abstract Syntax: =RTPlanStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
  Context ID:        71 (Proposed)
    Abstract Syntax: =RTStructureSetStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
  Context ID:        73 (Proposed)
    Abstract Syntax: =RTBeamsTreatmentRecordStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
  Context ID:        75 (Proposed)
    Abstract Syntax: =RTBrachyTreatmentRecordStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
  Context ID:        77 (Proposed)
    Abstract Syntax: =RTDoseStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
  Context ID:        79 (Proposed)
    Abstract Syntax: =RTTreatmentSummaryRecordStorage
    Proposed SCP/SCU Role: Default
    Accepted SCP/SCU Role: Default
    Proposed Transfer Syntax(es):
      =BigEndianExplicit
      =LittleEndianExplicit
      =LittleEndianImplicit
Requested Extended Negotiation: none
Accepted Extended Negotiation: none
Constructing Associate AC PDU
DIMSE receiveCommand
And this is all that happens... I am not sure, but shouldn't there be an "association aborted" or something like that?

Note that the SCU also tries to negotiate a private transfer syntax.

What is also puzzling is that both MRImageStorage and SecondaryCaptureImageStorage are configured as AnyTransferSyntax, but nonetheless one of them works and one of them doesn't.

Any idea what is happening here?

Thanks for any help
Bernd

Marco Eichelberg
OFFIS DICOM Team
OFFIS DICOM Team
Posts: 1493
Joined: Tue, 2004-11-02, 17:22
Location: Oldenburg, Germany
Contact:

#2 Post by Marco Eichelberg »

Very interesting case. When using the default storescp.cfg file, storescp will select JPEGBaseline as the transfer syntax for all image SOP classes proposed by the SCU (the PACS). Since the SCU only proposes one presentation context per SOP class, this means that once the connection is established the SCU can only send in JPEGBaseline (lossy JPEG compressed) transfer syntax. It seems that the SCU manages to do this for Secondary Capture images while somehow failing on MR images. Since you do not see any aborted connection, the association is actually still open. Possibly the PACS is even creating a compressed version of each MR slice in the background, but you break the connection too early by stopping storescp. Anyway, hard to say why it works for SC but not for MR.
For the initiated, the private transfer syntax (which is never accepted by storescp and, thus, does not hurt) clearly identifies who we're talking to here, but then the implementation version name is also clear enough :)

bkuemmer
Posts: 21
Joined: Wed, 2005-05-04, 12:49
Location: Bremen, Germany

#3 Post by bkuemmer »

Marco, thanks a lot for your reply.
When using the default storescp.cfg file, storescp will select JPEGBaseline as the transfer syntax for all image SOP classes proposed by the SCU (the PACS).
Hmm, maybe I don't understand this 100%? Why ist JPEGBaseline selected, and not any of the other TXs in AnyTransferSyntax?
Anyway, hard to say why it works for SC but not for MR.
The Conformance Statement actually talks about two different sets of Transfer Syntaxes which are proposed depending on the SOPClass, one includes the standard syntaxes and the private one, the other is just JPEGBaseline. Why the behaviour is different between SC and MR is not clear to me though from the Conformance Statement.
For the initiated, the private transfer syntax (which is never accepted by storescp and, thus, does not hurt) clearly identifies who we're talking to here, but then the implementation version name is also clear enough
Well, I didn't want to make it too hard :wink:

All the best
Bernd

Marco Eichelberg
OFFIS DICOM Team
OFFIS DICOM Team
Posts: 1493
Joined: Tue, 2004-11-02, 17:22
Location: Oldenburg, Germany
Contact:

#4 Post by Marco Eichelberg »

Why ist JPEGBaseline selected, and not any of the other TXs in AnyTransferSyntax?
For each presentation context only one transfer syntax can be selected. When using storescp with a configuration file, storescp goes down the list of transfer syntaxes specified for the given SOP class in the configuration file and selects the first one that is also present in the list of proposed transfer syntaxes from the SCU's A-ASSOCIATE-RQ. Since JPEGBaseline is defined in "AnyTransferSyntax" before any of the uncompressed transfer syntaxes, this always gets selected.
The Conformance Statement actually talks about two different sets of Transfer Syntaxes which are proposed depending on the SOPClass, one includes the standard syntaxes and the private one, the other is just JPEGBaseline.
If that was true, transmission should work, but it is not true. See the list of presentation contexts proposed by the SCU. Each Image SOP Class is present only once, not twice.

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot] and 1 guest