I0713 14:25:02.091757 CommandDispatcher.cpp:491] Association Received from AET XXXX on IP XXX.XXX.XXX.XXX
I0713 14:25:02.091757 main.cpp:187] Incoming connection from AET XXXX on IP XXX.XXX.XXX.XXX, calling AET XXXX
I0713 14:25:02.091757 CommandDispatcher.cpp:689] Association Acknowledged (Max Send PDV: 64222)
I0713 14:25:02.123000 main.cpp:200] Incoming Move request from AET XXXX on IP XXX.XXX.XXX.XXX, calling AET XXXX
W0713 14:25:02.123000 OrthancMoveRequestHandler.cpp:179] Move-SCU request received for AET "XXXX"
I0713 14:25:02.123000 OrthancMoveRequestHandler.cpp:187] (0008,0052) QueryRetrieveLevel = STUDY
I0713 14:25:02.123000 OrthancMoveRequestHandler.cpp:187] (0020,000d) StudyInstanceUID = 1.2.826.0.1.3680043.2.876.5887.1.2.3.20180712183706.0.3
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT d.id FROM DicomIdentifiers AS d, Resources AS r WHERE d.id = r.internalId AND r.resourceType=? AND d.tagGroup=? AND d.tagElement=? AND d.value=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT d.id FROM DicomIdentifiers AS d, Resources AS r WHERE d.id = r.internalId AND r.resourceType=? AND d.tagGroup=? AND d.tagElement=? AND d.value=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT publicId FROM Resources WHERE internalId=?
I0713 14:25:02.123000 OrthancMoveRequestHandler.cpp:71] Sending resource 202ac532-46dded50-2972b72d-926faf99-876e551c to modality "XXXX"
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT internalId, resourceType FROM Resources WHERE publicId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT resourceType FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT resourceType FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT resourceType FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT publicId FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT resourceType FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT resourceType FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT publicId FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT resourceType FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT a.internalId FROM Resources AS a, Resources AS b WHERE a.parentId = b.internalId AND b.internalId = ?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT resourceType FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT publicId FROM Resources WHERE internalId=?
T0713 14:25:02.123000 Statement.cpp:144] SQLite::Statement::Step SELECT internalId, resourceType FROM Resources WHERE publicId=?
T0713 14:25:02.154264 Statement.cpp:144] SQLite::Statement::Step SELECT uuid, uncompressedSize, compressionType, compressedSize, uncompressedMD5, compressedMD5 FROM AttachedFiles WHERE id=? AND fileType=?
I0713 14:25:02.154264 FilesystemStorage.cpp:155] Reading attachment "b23b075c-5c35-4caa-90af-2c4a8dce7ac8" of "DICOM" content type
I0713 14:25:02.232368 DicomUserConnection.cpp:901] Opening a DICOM SCU connection from AET "XXXX" to AET "XXXX" on host XXX.XXX.XXX.XXX:4006 (manufacturer: Generic)
I0713 14:25:02.247992 DicomUserConnection.cpp:302] Change in the transfer syntax: the C-Store associated must be renegotiated
I0713 14:25:02.247992 DicomUserConnection.cpp:316] Renegotiating a C-Store association due to a change in the parameters
I0713 14:25:02.247992 DicomUserConnection.cpp:901] Opening a DICOM SCU connection from AET "XXXX" to AET "XXXX" on host XXX.XXX.XXX.XXX:4006 (manufacturer: Generic)
E0713 14:25:02.279241 DicomUserConnection.cpp:167] DicomUserConnection: DIMSE Failed to send message
E0713 14:25:02.310539 MoveScp.cpp:221] IMoveRequestHandler Failed: Error in the network protocol
I0713 14:25:02.357387 CommandDispatcher.cpp:892] DUL Peer Requested Release
I0713 14:25:02.357387 CommandDispatcher.cpp:899] Association Release
T0713 14:25:07.210104 Connection.cpp:388] SQLite::Connection::FlushToDisk
Shown on the console:
W: DIMSE Warning: (GVMIEXT,AE_Imagerie01): sendMessage: unable to convert dataset from 'JPEG-LS Lossless' transfer syntax to 'Little Endian Explicit'
This is what it looks like on eFilm’s side in the DICOM.log :
(1644) 07-13 14:25:02.44 MC3 W: Presentation context 1 rejected, reason 0x03
(1644) 07-13 14:25:02.45 MC3 W: | Abstract syntax: 1.2.840.10008.5.1.4.1.2.3.1 (PATIENT_STUDY_ONLY_QR_FIND)
(1644) 07-13 14:25:02.45 MC3 W: | Abstract Syntax Rejected
(1644) 07-13 14:25:02.45 MC3 W: Presentation context 3 rejected, reason 0x03
(1644) 07-13 14:25:02.46 MC3 W: | Abstract syntax: 1.2.840.10008.5.1.4.1.2.3.2 (PATIENT_STUDY_ONLY_QR_MOVE)
(1644) 07-13 14:25:02.46 MC3 W: | Abstract Syntax Rejected
We just installed Orthanc last week as an alternative to our ageing and unstable Conquest PACS server and so far, we are please with the results. However, most of our users internally use eFilm 3.3 vet edition. Now, most DICOM transfers work without issue. However, we were getting some issues (as reported here https://groups.google.com/forum/#!topic/orthanc-users/yU-XasmYSU4) with JPEG-LS Lossless syntax which, for one reason or another, could not be accepted by eFilm during the retrieve process. We know this issue rests solely on eFilm's shoulders as we can open these same studies using a different viewer (RADIANT).
We read about similar problems with other viewers elsewhere here so we are awaiting feedback from eFilm's support regarding this but, in the meantime, we figured we'd simply disable the JPEG-LS syntax from the orthanc.json config file like so:
// The transfer syntaxes that are accepted by Orthanc C-Store SCP
"JpegLosslessTransferSyntaxAccepted" : false,
Now, for some reason unknown to me, it appears we're still getting the issue with some new studies being sent as JPEG-LS regardless. Unless I am misunderstanding something here, shouldn't the sending DICOM node be renegotiating with Orthanc using a different syntax? Why are we still getting some JPEG-LS studies?
The source PACS is external to our institution and not controlled by us in any way. It is a referral, meaning it can be anything and we have no way of knowing without calling the referring institution ourselves and asking them.
This is what has me wondering if I disabled the right thing. Is there any way for the Source PACS to send JPEG-LS to Orthanc even if its disabled on Orthanc's side?
Hello,
On Tuesday, July 17, 2018 at 8:32:04 PM UTC+2, Mat M wrote:The source PACS is external to our institution and not controlled by us in any way. It is a referral, meaning it can be anything and we have no way of knowing without calling the referring institution ourselves and asking them.As a consequence, setting the "JpegLosslessTransferSyntaxAccepted" to "false" will not solve your issue in all the cases. This solution is only valid if the PACS of the referring institution has transcoding capabilities. If the latter has no such capabilities, the transfer from the referring institution to Orthanc would fail.
This is what has me wondering if I disabled the right thing. Is there any way for the Source PACS to send JPEG-LS to Orthanc even if its disabled on Orthanc's side?No, this is not be possible. Are you sure that you have cleared all the content of the Orthanc database after setting the option to "false"? If not, JPEG-LS files that were received before setting the option to "false" will not be readable by eFilm.
The actual solution to your problem consists in transcoding the JPEG-LS files once Orthanc receives them, either through REST scripting or through Lua scripting:As a starting point, you can take inspiration from the following sample Lua script that is part of the Orthanc source distribution, and that transcodes any incoming DICOM file to JPEG2k in order to reduce the disk space:Sébastien-
1.2.840.10008.5.1.4.1.2.3.1 | Patient/Study Only Query/Retrieve Information Model – FIND | Retired |
1.2.840.10008.5.1.4.1.2.3.2 | Patient/Study Only Query/Retrieve Information Model – MOVE | Retired |
1.2.840.10008.1.2.4.80 | JPEG-LS Lossless Image Compression |