[Ctk-developers] data exchange in the DICOM Hosting implementation

Sascha Zelzer s.zelzer at dkfz-heidelberg.de
Wed Jun 8 12:48:34 EDT 2011


Hi Michael,

it looks like the deserialization code of QtSoapArray is buggy. When 
serializing a QtSoapArray instance to XML, it writes a position 
attribute like "[3]", but when reading it in, this string is getting 
converted to an integer which always leads to 0 (because the conversion 
fails due to the brackets). Please try to replace line 1284 in 
qtsoap.cpp (located in your CTK superbuild build tree) with:

pos = posattr.value().mid(1, posattr.value().size()-2).toInt();

and make a build at the superbuild level. If that solves your problem I 
will push that fix to our repo and update
http://www.commontk.org/index.php/Documentation/DicomApplicationHosting:DataExchangeDevelopment 
with a comment. I am aware of the limitation that this will only allow 
to deserialize one-dimensional arrays, but I think there is no 
multi-dimensional use case in the DICOM AppHosting standard, so I would 
refrain from writing support for it until we need it.

Best,
Sascha

On 06/08/2011 07:24 AM, Caylus, Michael (SCR US) wrote:
> Hi Sascha,
>
> I have been feeding the available data structure through multiple calls to the addToAvailableData(ctkDicomAppHosting::AvailableData&  data,
>                          ctkDicomObjectLocatorCache* objectLocatorCache,
>                          const QString&  filename)
>
> function: one call per file found in my DICOM folder and then I send the notifyDataAvailable message only once.
>
> You should have got the SOAP messages on both the server and client side from my previous mail if not let me know I can send you the files again.
>
> I have also tried to send only the objectDescriptors array as suggested by Ben but I have observed the same issue.
>
> Best,
> Michael
>




More information about the Ctk-developers mailing list