Mercurial > hg > orthanc-dicomweb
changeset 643:a111b79189c2
WADO-RS retrieve frame: fix issue #219
author | Alain Mazy <am@osimis.io> |
---|---|
date | Wed, 24 Jan 2024 13:27:51 +0100 |
parents | c85e05785f9f |
children | 1efd6296c589 |
files | NEWS Plugin/WadoRsRetrieveFrames.cpp |
diffstat | 2 files changed, 30 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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) =========================
--- 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))