Structured Reporting and Storescp

All other questions regarding DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
Brazillian
Posts: 10
Joined: Tue, 2005-06-14, 21:05

Structured Reporting and Storescp

#1 Post by Brazillian » Thu, 2005-12-01, 17:12

Hello,
I am working with a XA modality(Siemens) and the DCMTK Storescp server. This modality transmits to the Storescp server not only images but also structured reporting documents. My problem is that the server not accept this documents and its needs to do this. My command line is : storescu -v 192.45.85.5 4006 struct_report

give me the follow error:

Requesting Association
Association Accepted (Max Send PDV: 16372)
--------------------------
Sending file: 2392341
storescu: No presentation context for: (unknown SOP class) 1.3.12.2.1107.5.9.1
storescu: SCU Failed:
0006:0208 DIMSE No valid Presentation Context ID
Aborting Association


My storescp server use the command line:
storescp +xs -pm -od $HOME/listener 4006

How I can to resolve this?

thanks a million,

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

#2 Post by Marco Eichelberg » Fri, 2005-12-02, 12:04

1.3.12.2.1107.5.9.1 is not a standard DICOM SOP Class. It is most probably a private Siemens SOP class. By default, storescp does not accept such private SOP classes. To change this behavior, you can either define an association configuration file (see sample dcmnet/etc/storescp.cfg) that includes the UID of the private SOP class, or you can use the "promiscuous" mode (--promiscuous).

Brazillian
Posts: 10
Joined: Tue, 2005-06-14, 21:05

Structured Reporting and Storescp

#3 Post by Brazillian » Mon, 2005-12-05, 11:56

Thank you for your fast reply Marco but I am still confused.
The error it occurs in the storescu applicative right ? I am using Storescu only in my laboratory tests. In the hospital, the Siemens system is that will transmit the 1.3.12.2.1107.5.9.1 DICOM SOP Class. So, if i to use only the "promiscuous" mode (--promiscuous) the server will accept this SOP Class ? I say this because In the previous error the first lines show me " Association Accepted (Max Send PDV: 16372)..." and to failed at time of file transmission only.

And using storescp with --promiscuos and storescu for send the file, the storescp do not accept again !

Thanks in advance,

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

#4 Post by Marco Eichelberg » Mon, 2005-12-05, 19:12

Sorry, my response did not account for the fact that you are trying to use storescu. To understand what is happening here, you have to understand how the DICOM network protocol works. For each SOP class, a separate presentation context must be negotiated between SCU and SCP. The SCU proposes a list of SOP classes, and the SCP selects the one it supports from this list. In your case you have to get the SCP to accept the private SOP class and the SCU to propose it. The --promiscuous option will do this for the SCP side. On the SCU side, the Siemens device itself should propose the private SOP class, so a transfer from the device to StoreSCP should work in --promiscuous mode. For storescu, you also have to create a configuration file that includes the UID of the private SOP class. A sample is provided in dcmnet/etc/storescu.cfg.

Brazillian
Posts: 10
Joined: Tue, 2005-06-14, 21:05

storescp/storescu

#5 Post by Brazillian » Tue, 2005-12-06, 15:07

Marco:
Thanks for the comments and clarification about storescp/storescu applications for non DICOM standard SOP Class.

I simulated the transmission in laboratory and all work fine now. I hope that at the Hospital all works fine too.

Regards

Daniel

debio
Posts: 5
Joined: Tue, 2009-03-24, 17:19

tsame problem...

#6 Post by debio » Tue, 2009-03-24, 20:40

Hi --

I am having the same problem on an Ubuntu Ibex (8.10) installation running dcmtk-3.5.4-3 (sudo apt-get install dcmtk).

Can you point out exactly which files you edited and what edits you made?

Many thanks

Jörg Riesmeier
ICSMED DICOM Services
ICSMED DICOM Services
Posts: 2217
Joined: Fri, 2004-10-29, 21:38
Location: Oldenburg, Germany

#7 Post by Jörg Riesmeier » Wed, 2009-03-25, 09:44

Call "locate storescu.cfg" on your shell ... The documentation can be found in "asconfig.txt".

debio
Posts: 5
Joined: Tue, 2009-03-24, 17:19

#8 Post by debio » Mon, 2009-08-31, 20:39

Jörg Riesmeier wrote:Call "locate storescu.cfg" on your shell ... The documentation can be found in "asconfig.txt".
Yes -- I did in fact know where the storescu.cfg file was (/etc/dcmtk/storescu.cfg). Problem is that there is nothing in that file that gives (me, at least) any hints as to adding an exception for this private SOP class.

If anyone can enlighten me, I'd be very grateful.

Jörg Riesmeier
ICSMED DICOM Services
ICSMED DICOM Services
Posts: 2217
Joined: Fri, 2004-10-29, 21:38
Location: Oldenburg, Germany

#9 Post by Jörg Riesmeier » Tue, 2009-09-01, 13:23

Reading the documentation (see above or read it online) would help a lot. You need to add a presentation context for the Private SOP Class to the config file.

debio
Posts: 5
Joined: Tue, 2009-03-24, 17:19

#10 Post by debio » Wed, 2009-09-02, 20:28

Jörg Riesmeier wrote:Reading the documentation (see above or read it online) would help a lot. You need to add a presentation context for the Private SOP Class to the config file.
Thanks for the reference. I had checked through this, and while conceptually I *think* I understand, there's a bit of a gap between asconfig.txt and my specific problem -- at least for me.

Basically, I get:
storescu: No presentation context for: (unknown SOP class) 1.3.12.2.1107.5.9.1
storescu: SCU Failed:
0006:0208 DIMSE No valid Presentation Context ID

I edited /etc/dcmtk/storescu.cfg's [StoreageCompressedAndUncompressed] section by adding:

PresentationContext125 = 1.3.12.2.1107.5.9.1

(commenting out the existing PresentationContext125 since there can only be 128 contexts in total).

I got the same error. I then edited /etc/dcmtk/storescp.cfg, adding a similar presentation context. The error persisted.

I then tried to add a descriptor under [Default] in both cfg files:
PresentationContextsSiemens = PrivateSiemensSOP

and then added:
[PrivateSiemensSOP]
PresentationContext1 = 1.3.12.2.1107.5.9.1

in both cfg files. And, yes, I still got the same error.

Can anyone provide any other suggestions?

-=R

Jörg Riesmeier
ICSMED DICOM Services
ICSMED DICOM Services
Posts: 2217
Joined: Fri, 2004-10-29, 21:38
Location: Oldenburg, Germany

#11 Post by Jörg Riesmeier » Thu, 2009-09-03, 08:06

A Presentation Context is a combination of one SOP Class and one or more Transfer Syntaxes, so the following should work:

Code: Select all

[[TransferSyntaxes]]

[Uncompressed]
TransferSyntax1 = LocalEndianExplicit
TransferSyntax2 = OppositeEndianExplicit
TransferSyntax3 = LittleEndianImplicit

[[PresentationContexts]]

[PrivateSiemensSOPClass] 
PresentationContext1 = VerificationSOPClass\Uncompressed
PresentationContext2 = 1.3.12.2.1107.5.9.1\Uncompressed

[[Profiles]]

[PrivateSiemens]
PresentationContexts = PrivateSiemensSOPClass

debio
Posts: 5
Joined: Tue, 2009-03-24, 17:19

#12 Post by debio » Thu, 2009-09-03, 16:15

Thanks for this, Jörg. It feels like I'm *almost* there, but am still not getting it right. Perhaps it's a permuation problem -- do I change the storescu.cfg, the storescp.cfg, both? Many possible combinations. Well, maybe not that many. 4, I guess. :-)

Still, based on your quote, it seems you are proposing changes to the /etc/dcmtk/storecp.cfg file. I implemented your suggestion, but my original error was still there.

I changed the \Uncompressed to \AnyTransferSyntax (which was already defined in the storescp.cfg file). No luck.

I then added the same changes (and the [AnyTransferSyntax] section) to the storescu.cfg file. I am still getting the error.

Does the 0006:0208 in the storescu error message refer to DICOM tag in the image that is giving the problems? Is there any sense in perhaps editing the DICOM metadata -- MatLAB might have tools I can use to try this...
Jörg Riesmeier wrote:A Presentation Context is a combination of one SOP Class and one or more Transfer Syntaxes, so the following should work:

Code: Select all

[[TransferSyntaxes]]

[Uncompressed]
TransferSyntax1 = LocalEndianExplicit
TransferSyntax2 = OppositeEndianExplicit
TransferSyntax3 = LittleEndianImplicit

[[PresentationContexts]]

[PrivateSiemensSOPClass] 
PresentationContext1 = VerificationSOPClass\Uncompressed
PresentationContext2 = 1.3.12.2.1107.5.9.1\Uncompressed

[[Profiles]]

[PrivateSiemens]
PresentationContexts = PrivateSiemensSOPClass

Jörg Riesmeier
ICSMED DICOM Services
ICSMED DICOM Services
Posts: 2217
Joined: Fri, 2004-10-29, 21:38
Location: Oldenburg, Germany

#13 Post by Jörg Riesmeier » Thu, 2009-09-03, 16:43

In my last posting, I quoted a sample configuration for the storescp because your original question was referring to the storescp.

debio
Posts: 5
Joined: Tue, 2009-03-24, 17:19

#14 Post by debio » Thu, 2009-09-03, 19:11

I think the *original* poster, 'brazilian' referred to 'storescp'. My posting dove-tailed on the issue with the Private Siemens class. I didn't specifically care/know which cfg file to "hack".

Do you have any insights into editing 'storescu.cfg' to resolve this? Moreover, is there a way to get storescp/storescu (I still don't completely understand the relationship between these two, but so be it) to *not* fail if there is a non-valid Presentation Context ID?
Jörg Riesmeier wrote:In my last posting, I quoted a sample configuration for the storescp because your original question was referring to the storescp.

Jörg Riesmeier
ICSMED DICOM Services
ICSMED DICOM Services
Posts: 2217
Joined: Fri, 2004-10-29, 21:38
Location: Oldenburg, Germany

#15 Post by Jörg Riesmeier » Fri, 2009-09-04, 08:05

As my colleague Marco already wrote in a previous posting, you could also use the storescp option --promiscuous as an alternative to the config file.

For the storescu, there is currently no other way than using an appropriate config file when transferring DICOM files with a private SOP class. As you can read in the documentation, the structure and content of the storescu config file is more or less identical to the storescp config file – this is at least true for the parts that are relevant to your problem.

Basically, you have to understand that the storescu needs to propose all combinations of SOP class and transfer syntaxes (i.e. presentation contexts) which are to be used for the association ...

Post Reply

Who is online

Users browsing this forum: Bing [Bot], Google [Bot] and 1 guest