experimental DcmSCU class

All other questions regarding DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
Geert Vandenbussche
Posts: 7
Joined: Tue, 2018-11-13, 09:05

experimental DcmSCU class

#1 Post by Geert Vandenbussche » Thu, 2021-07-29, 19:44

The documentation states:
There are also two experimental classes for implementing a DICOM Service Class User and Provider:

DcmSCU
DcmSCP

The following classes are derived from the above experimental classes and provide a particular DICOM Service:

DcmStorageSCU
DcmStorageSCP
As the latter classes are derived from experimental classes, are they also to be considered experimental?
I'm using the DcmSCU class (in a C-STORE context) and didn't detect any issues yet. Are there known issues with the DcmSCU class?

The application only proposes presentation contexts which are derived from the actual SOP Class UID's and Transfer Syntaxes from the objects (not according to the DICOM standard, but avoiding conversions). DcmStorageSCP behaves differently on this level as far as I understand.
(There's the possibility of diving deeper into the storescu.cc code in order to avoid the DcmSCU class, but if there are no clear objections I would prefer to keep using this class.)

J. Riesmeier
DCMTK Developer
Posts: 2313
Joined: Tue, 2011-05-03, 14:38
Location: Oldenburg, Germany
Contact:

Re: experimental DcmSCU class

#2 Post by J. Riesmeier » Sun, 2021-08-01, 20:09

As the latter classes are derived from experimental classes, are they also to be considered experimental?
I'm using the DcmSCU class (in a C-STORE context) and didn't detect any issues yet. Are there known issues with the DcmSCU class?
I think the DcmSCU and DcmSCP classes are still labeled as "exprimental" since the functionality is not yet complete and API changes are more likely than for other DCMTK classes. In general, I would regard DcmStorageSCU and DcmStorageSCP as quite stable.
The application only proposes presentation contexts which are derived from the actual SOP Class UID's and Transfer Syntaxes from the objects (not according to the DICOM standard, but avoiding conversions).
What do you mean by "not according to the DICOM standard"?
DcmStorageSCP behaves differently on this level as far as I understand.
Right, DcmStorageSCP requires a configuration file for the specification of the acceptable Presentation Contexts. Both classes implement what was needed at the time when I designed them. In general, both classes demonstrate how to use the underlying
base classes DcmSCU and DcmSCP, and at the same time tests them.
(There's the possibility of diving deeper into the storescu.cc code in order to avoid the DcmSCU class, but if there are no clear objections I would prefer to keep using this class.)
If I were you, I wouldn't use the ancient storescu code but start with DcmSCU (or DcmStorageSCU).

Geert Vandenbussche
Posts: 7
Joined: Tue, 2018-11-13, 09:05

Re: experimental DcmSCU class

#3 Post by Geert Vandenbussche » Mon, 2021-08-02, 09:33

Jörg,

Thanks for your reply. It's clear what is being meant with "experimental".
What do you mean by "not according to the DICOM standard"?
I only include the actual transfer syntaxes of the objects in the presentation contexts. Normally the DICOM Default Transfer Syntax should also be present (except for a number of defined cases).

Best regards,

Geert Vandenbussche

J. Riesmeier
DCMTK Developer
Posts: 2313
Joined: Tue, 2011-05-03, 14:38
Location: Oldenburg, Germany
Contact:

Re: experimental DcmSCU class

#4 Post by J. Riesmeier » Mon, 2021-08-02, 09:47

Geert,
I only include the actual transfer syntaxes of the objects in the presentation contexts. Normally the DICOM Default Transfer Syntax should also be present (except for a number of defined cases).
in fact, the default behavior of the DcmStorageSCU class is to also propose the Default Transfer Syntax (i.e. Implicit VR Little Endian) for all uncompressed and lossless compressed datasets. Only for lossy compressed datasets, the Default Transfer Syntax is not proprosed (which is one of the exceptions in the DICOM standard you were probably referring to). This default behavior of the class can be changed by calling DcmStorageSCU::setDecompressionMode().

Regards,
Jörg

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest