Orthanc Dicom web support multi frame instance

Hi All,

Currently I use OrthanC and Cornerstone to view dicom. However seems like Orthanc cannot handle multi frame instance when Cornerstone makes request a WADO-RS to it. I tried to debug the Orthanc Dicom Web plugin and observed that it failed at the following stacks:

Orthanc: /home/phongtd/workingspace/orthanc-dicomweb/build/GDCM-prefix/src/GDCM/Source/DataStructureAndEncodingDefinition/gdcmExplicitDataElement.txx:479: const ostream& gdcm::ExplicitDataElement::Write(std::ostream&) const [with TSwap = gdcm::SwapperNoOp; std::ostream = std::basic_ostream]: Assertion `ValueField->GetLength() == ValueLengthField’ failed.
[1] 9325 abort (core dumped) ./Orthanc Configuration.json

Currently OrthanC Dicom Web is using GDCM version 2.8.8, but the newest version 3.0.4 already fixed the multiframe issue. In this link: https://book.orthanc-server.com/faq/supported-images.html, it said that “multiframe (notably cine) DICOM instances are currently not supported by the Web viewer plugin”. So is there any plan that gets OrthanC Dicom Web plugin fixed ?

Hello,

Please would you kindly share a sample (possibly anonymized) DICOM image, together with command lines that lead to this backtrace, so that we can independently reproduce your issue?

Regards,
Sébastien-

Hi Sebastien,

Attachment is the sample MRI exported to us. I tried to use this url to access frames from OrthanC, and it threw exceptions as I post previously

localhost:8042/dicom-web/studies/1.3.46.670589.11.83128.5.0.13336.2019121008390581002/series/1.3.46.670589.11.83128.5.0.2832.2019121009172415354/instances/1.3.46.670589.11.83128.5.20.1.1.2832.2019121009172415354/frames/1

Orthanc: /home/phongtd/workingspace/orthanc-dicomweb/build/GDCM-prefix/src/GDCM/Source/DataStructureAndEncodingDefinition/gdcmExplicitDataElement.txx:479: const ostream& gdcm::ExplicitDataElement::Write(std::ostream&) const [with TSwap = gdcm::SwapperNoOp; std::ostream = std::basic_ostream]: Assertion `ValueField->GetLength() == ValueLengthField’ failed.
[1] 30132 abort (core dumped) ./Orthanc Configuration.json

MR000000.dcm (3.53 MB)

Hello,

Thanks for sharing this file.

I have just upgraded GDCM from 2.8.8 to 3.0.4 in the static builds of the DICOMweb plugin, and I confirm that the issue vanishes thanks to this single update:
https://bitbucket.org/sjodogne/orthanc-dicomweb/commits/dfec31bf370f91483cac911013d809a01aba2792

Regards,

Sébastien-

Hi Sébastien,

Can we please get a new “latest” release of the orthanc-plugins docker image at dockerhub with these changes?
BTW, is it something only you can access, or can other people initiate a docker image release there?

Thanks,
András

Hello,

The “jodogne/orthanc-plugins:latest” Docker image is now updated with this modification (i.e. the DICOMweb plugin using GDCM 3.0.4).

If you want to rebuild the Docker images by yourself, check out this repository:
https://github.com/jodogne/OrthancDocker

Sébastien-

Hi Sebastien,

I see another error when trying use them new lib OrthanCDicomWeb

http://localhost:8042/dicom-web/studies/1.3.46.670589.11.83128.5.0.13336.2019121008390581002/series/1.3.46.670589.11.83128.5.0.2832.2019121009172415354/instances/1.3.46.670589.11.83128.5.20.1.1.2832.2019121009172415354/frames/1

{
	"HttpError" : "Bad Request",
	"HttpStatus" : 400,
	"Message" : "Parameter out of range",
	"Method" : "GET",
	"OrthancError" : "Parameter out of range",
	"OrthancStatus" : 3,
	"Uri" : "/dicom-web/studies/1.3.46.670589.11.83128.5.0.13336.2019121008390581002/series/1.3.46.670589.11.83128.5.0.2832.2019121009172415354/instances/1.3.46.670589.11.83128.5.20.1.1.2832.2019121009172415354/frames/1"
}


This is exception from log:
E0201 10:46:12.903453 PluginsErrorDictionary.cpp:111] Exception inside the plugin engine: Parameter out of range

Can you please help to elaborate ?

I think I’ve already seen this error when I forgot to include -H “Accept: multipart/related” in the curl command.

BTW, this reminded me that I forgot to commit this change to improve the error report: https://bitbucket.org/sjodogne/orthanc-dicomweb/commits/b5faee100a744eb0c3117a710b882baedf61c003

Hello,

Your command works properly on my computer using the latest Docker image.

In some terminal, start Orthanc as follows:

$ docker pull jodogne/orthanc-plugins:latest
$ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:latest

In another terminal, it can be seen that the requested frame is properly decoded by the DICOMweb plugin:

$ curl -u orthanc:orthanc http://localhost:8042/instances --data-binary @/tmp/MR000000.dcm
{
“ID” : “04382407-24c4f5bb-463c5341-3daa9b93-043bc785”,
“ParentPatient” : “3ea6c91e-241f256e-5e3a88eb-d6473720-22323a53”,
“ParentSeries” : “0a8b1b5d-99969812-a612784d-915d7d7a-d9e79906”,
“ParentStudy” : “be147f72-d17ebd8d-01290ce0-f80553ed-e4499f00”,
“Path” : “/instances/04382407-24c4f5bb-463c5341-3daa9b93-043bc785”,
“Status” : “Success”
}

$ curl -s -v -u orthanc:orthanc http://localhost:8042/dicom-web/studies/1.3.46.670589.11.83128.5.0.13336.2019121008390581002/series/1.3.46.670589.11.83128.5.0.2832.2019121009172415354/instances/1.3.46.670589.11.83128.5.20.1.1.2832.2019121009172415354/frames/1 > a

  • Trying 127.0.0.1…

  • TCP_NODELAY set

  • Connected to localhost (127.0.0.1) port 8042 (#0)

  • Server auth using Basic with user ‘orthanc’

GET /dicom-web/studies/1.3.46.670589.11.83128.5.0.13336.2019121008390581002/series/1.3.46.670589.11.83128.5.0.2832.2019121009172415354/instances/1.3.46.670589.11.83128.5.20.1.1.2832.2019121009172415354/frames/1 HTTP/1.1
Host: localhost:8042
Authorization: Basic b3J0aGFuYzpvcnRoYW5j
User-Agent: curl/7.58.0
Accept: /

< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Type: multipart/related; type=“application/octet-stream; transfer-syntax=1.2.840.10008.1.2.1”; boundary=04648276-bc03-47d1-b8d2-ca61fb7040ff-3ba29520-cd4e-4d4f-b25e-1a82b5bdf
< Content-Length: 131593
<
{ [65285 bytes data]

  • Connection #0 to host localhost left intact

Sébastien-