# HG changeset patch # User Alain Mazy # Date 1706099271 -3600 # Node ID a111b79189c23054b33537514c8f9600021b3f58 # Parent c85e05785f9fcfc518825285df68e1a2e0dcc398 WADO-RS retrieve frame: fix issue 219 diff -r c85e05785f9f -r a111b79189c2 NEWS --- a/NEWS Tue Dec 19 12:07:22 2023 +0100 +++ b/NEWS Wed Jan 24 13:27:51 2024 +0100 @@ -1,3 +1,13 @@ +Pending changes in the mainline +=============================== + +Maintenance +----------- + +* WADO-RS retrieve frame: fix issue 219 (https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=219) + by converting BigEndianExplicitVR to LittleEndianExplicitVR. + + Version 1.16 (2023-12-19) ========================= diff -r c85e05785f9f -r a111b79189c2 Plugin/WadoRsRetrieveFrames.cpp --- a/Plugin/WadoRsRetrieveFrames.cpp Tue Dec 19 12:07:22 2023 +0100 +++ b/Plugin/WadoRsRetrieveFrames.cpp Wed Jan 24 13:27:51 2024 +0100 @@ -329,9 +329,18 @@ // The "transfer-syntax" info was added in version 1.1 of the plugin return "application/octet-stream; transfer-syntax=1.2.840.10008.1.2"; + // note: these 2 syntaxes are not supposed to be used in retrieve frames + // according to https://dicom.nema.org/MEDICAL/dicom/2019a/output/chtml/part18/chapter_6.html#table_6.1.1.8-3b + // "The Implicit VR Little Endian (1.2.840.10008.1.2), and Explicit VR Big Endian (1.2.840.10008.1.2.2) transfer syntaxes shall not be used with Web Services." case Orthanc::DicomTransferSyntax_LittleEndianExplicit: return "application/octet-stream; transfer-syntax=1.2.840.10008.1.2.1"; + case Orthanc::DicomTransferSyntax_BigEndianExplicit: + return "application/octet-stream; transfer-syntax=1.2.840.10008.1.2.2"; + + case Orthanc::DicomTransferSyntax_DeflatedLittleEndianExplicit: + return "application/octet-stream; transfer-syntax=1.2.840.10008.1.2.1.99"; + case Orthanc::DicomTransferSyntax_JPEGProcess1: return "image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.50"; @@ -369,7 +378,7 @@ return "image/jpx; transfer-syntax=1.2.840.10008.1.2.4.93"; default: - throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); + throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, std::string("WADO RS Retrieve frame: unhandled Transfer syntax ") + Orthanc::GetTransferSyntaxUid(syntax)); } } @@ -463,7 +472,16 @@ throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented, "Unknown transfer syntax: " + currentSyntaxString); } - Orthanc::DicomTransferSyntax targetSyntax = currentSyntax; + Orthanc::DicomTransferSyntax targetSyntax = currentSyntax; + + if (currentSyntax == Orthanc::DicomTransferSyntax_BigEndianExplicit || currentSyntax == Orthanc::DicomTransferSyntax_LittleEndianImplicit) + { + // note: these 2 syntaxes are not supposed to be used in retrieve frames + // according to https://dicom.nema.org/MEDICAL/dicom/2019a/output/chtml/part18/chapter_6.html#table_6.1.1.8-3b + // "The Implicit VR Little Endian (1.2.840.10008.1.2), and Explicit VR Big Endian (1.2.840.10008.1.2.2) transfer syntaxes shall not be used with Web Services." + targetSyntax = Orthanc::DicomTransferSyntax_LittleEndianExplicit; + } + bool transcodeThisInstance = false; if (ParseTransferSyntax(targetSyntax, request))