Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package orthanc-dicomweb for
openSUSE:Factory checked in at 2024-01-04 15:57:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/orthanc-dicomweb (Old)
and /work/SRC/openSUSE:Factory/.orthanc-dicomweb.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "orthanc-dicomweb"
Thu Jan 4 15:57:20 2024 rev:14 rq:1134974 version:1.16
Changes:
--------
--- /work/SRC/openSUSE:Factory/orthanc-dicomweb/orthanc-dicomweb.changes
2023-09-06 18:58:47.920853588 +0200
+++
/work/SRC/openSUSE:Factory/.orthanc-dicomweb.new.28375/orthanc-dicomweb.changes
2024-01-04 15:59:11.616455690 +0100
@@ -1,0 +2,9 @@
+Sat Dec 23 17:24:28 UTC 2023 - Axel Braun <[email protected]>
+
+- version 1.16
+ * Removed misleading log messages about transcoding.
+
https://discourse.orthanc-server.org/t/dicomweb-plugin-1-13-possible-unnecessary-transcoding/3979
+ * Fix parsing of Accept header "multipart/related;
type=application/octet-stream; transfer-syntax=*" that is used by OHIF.
+ * When retrieving frames, WADO-RS may now retrieve transcoded instances from
Orthanc StorageCache (for Orthanc >= 1.12.2)
+
+-------------------------------------------------------------------
Old:
----
OrthancDicomWeb-1.15.tar.gz
New:
----
OrthancDicomWeb-1.16.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ orthanc-dicomweb.spec ++++++
--- /var/tmp/diff_new_pack.TWCJCm/_old 2024-01-04 15:59:12.336481993 +0100
+++ /var/tmp/diff_new_pack.TWCJCm/_new 2024-01-04 15:59:12.340482139 +0100
@@ -21,10 +21,10 @@
Summary: WebViewer plugin for Orthanc
License: AGPL-3.0-or-later
Group: Productivity/Graphics/Viewers
-Version: 1.15
+Version: 1.16
Release: 0
URL: https://orthanc-server.com
-Source0:
https://www.orthanc-server.com/downloads/get.php?path=/plugin-dicom-web/OrthancDicomWeb-%{version}.tar.gz
+Source0:
https://orthanc.uclouvain.be/downloads/sources/%{name}/OrthancDicomWeb-%{version}.tar.gz
Source1: cornerstone.css
Source2: cornerstone.min.js
Source3: bootstrap-4.3.1.zip
++++++ OrthancDicomWeb-1.15.tar.gz -> OrthancDicomWeb-1.16.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/.hg_archival.txt
new/OrthancDicomWeb-1.16/.hg_archival.txt
--- old/OrthancDicomWeb-1.15/.hg_archival.txt 2023-08-24 16:29:33.000000000
+0200
+++ new/OrthancDicomWeb-1.16/.hg_archival.txt 2023-12-19 12:06:33.000000000
+0100
@@ -1,6 +1,6 @@
repo: d5f45924411123cfd02d035fd50b8e37536eadef
-node: 8ccaf9f005a783c7ccd0a98aa438c58bd07a922a
-branch: OrthancDicomWeb-1.15
+node: 7f3f3dd90701572bc90a18148d02e9428c86be24
+branch: OrthancDicomWeb-1.16
latesttag: null
-latesttagdistance: 549
-changessincelatesttag: 581
+latesttagdistance: 567
+changessincelatesttag: 609
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/CMakeLists.txt
new/OrthancDicomWeb-1.16/CMakeLists.txt
--- old/OrthancDicomWeb-1.15/CMakeLists.txt 2023-08-24 16:29:33.000000000
+0200
+++ new/OrthancDicomWeb-1.16/CMakeLists.txt 2023-12-19 12:06:33.000000000
+0100
@@ -22,13 +22,13 @@
project(OrthancDicomWeb)
-set(ORTHANC_DICOM_WEB_VERSION "1.15")
+set(ORTHANC_DICOM_WEB_VERSION "1.16")
if (ORTHANC_DICOM_WEB_VERSION STREQUAL "mainline")
set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "mainline")
set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
else()
- set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "daf4807631c5") # TODO: upgrade to
1.12.2 when available
+ set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "1.12.2")
set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
endif()
@@ -235,3 +235,5 @@
target_link_libraries(UnitTests
${GOOGLE_TEST_LIBRARIES}
)
+
+DefineSourceBasenameForTarget(UnitTests)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/NEWS
new/OrthancDicomWeb-1.16/NEWS
--- old/OrthancDicomWeb-1.15/NEWS 2023-08-24 16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/NEWS 2023-12-19 12:06:33.000000000 +0100
@@ -1,3 +1,11 @@
+Version 1.16 (2023-12-19)
+=========================
+
+* Removed misleading log messages about transcoding.
+
https://discourse.orthanc-server.org/t/dicomweb-plugin-1-13-possible-unnecessary-transcoding/3979
+* Fix parsing of Accept header "multipart/related;
type=application/octet-stream; transfer-syntax=*" that is used by OHIF.
+* When retrieving frames, WADO-RS may now retrieve transcoded instances from
Orthanc StorageCache (for Orthanc >= 1.12.2)
+
Version 1.15 (2023-08-24)
=========================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/Plugin/DicomWebClient.cpp
new/OrthancDicomWeb-1.16/Plugin/DicomWebClient.cpp
--- old/OrthancDicomWeb-1.15/Plugin/DicomWebClient.cpp 2023-08-24
16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/Plugin/DicomWebClient.cpp 2023-12-19
12:06:33.000000000 +0100
@@ -776,7 +776,7 @@
* chunked transfers, or a version of Orthanc <= 1.7.2 that
* supports chunk transfers, but cannot receive multipart
* messages larger than 2GB. The latter problem is fixed by:
- * https://hg.orthanc-server.com/orthanc/rev/36257d6f348f
+ * https://orthanc.uclouvain.be/hg/orthanc/rev/36257d6f348f
**/
if (client->IsChunkedTransfersAllowed())
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/Plugin/OrthancExplorer.js
new/OrthancDicomWeb-1.16/Plugin/OrthancExplorer.js
--- old/OrthancDicomWeb-1.15/Plugin/OrthancExplorer.js 2023-08-24
16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/Plugin/OrthancExplorer.js 2023-12-19
12:06:33.000000000 +0100
@@ -126,7 +126,6 @@
.append($('<div>')
.addClass('ui-block-b')
.append($('<a>')
- .attr('id', 'coucou')
.attr('data-role', 'button')
.attr('href', '#')
.attr('data-icon', 'forward')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/Plugin/Plugin.cpp
new/OrthancDicomWeb-1.16/Plugin/Plugin.cpp
--- old/OrthancDicomWeb-1.15/Plugin/Plugin.cpp 2023-08-24 16:29:33.000000000
+0200
+++ new/OrthancDicomWeb-1.16/Plugin/Plugin.cpp 2023-12-19 12:06:33.000000000
+0100
@@ -536,6 +536,8 @@
return -1;
}
+
SetPluginCanDownloadTranscodedFile(OrthancPlugins::CheckMinimalOrthancVersion(1,
12, 2));
+
#if HAS_ORTHANC_PLUGIN_CHUNKED_HTTP_CLIENT == 0
LOG(WARNING) << "Performance warning in DICOMweb: The plugin was compiled
against "
<< "Orthanc SDK <= 1.5.6. STOW and WADO chunked transfers
will be entirely stored in RAM.";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/Plugin/StowRs.cpp
new/OrthancDicomWeb-1.16/Plugin/StowRs.cpp
--- old/OrthancDicomWeb-1.15/Plugin/StowRs.cpp 2023-08-24 16:29:33.000000000
+0200
+++ new/OrthancDicomWeb-1.16/Plugin/StowRs.cpp 2023-12-19 12:06:33.000000000
+0100
@@ -64,7 +64,7 @@
}
// Hotfix for bug #190, until the Orthanc Framework is fixed
- // https://bugs.orthanc-server.com/show_bug.cgi?id=190
+ // https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=190
if (!boundary.empty() &&
boundary.size() >= 2 &&
boundary[0] == '"' &&
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/Plugin/WadoRs.h
new/OrthancDicomWeb-1.16/Plugin/WadoRs.h
--- old/OrthancDicomWeb-1.15/Plugin/WadoRs.h 2023-08-24 16:29:33.000000000
+0200
+++ new/OrthancDicomWeb-1.16/Plugin/WadoRs.h 2023-12-19 12:06:33.000000000
+0100
@@ -100,3 +100,5 @@
void RetrieveStudyRendered(OrthancPluginRestOutput* output,
const char* url,
const OrthancPluginHttpRequest* request);
+
+void SetPluginCanDownloadTranscodedFile(bool enable);
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/Plugin/WadoRsRetrieveFrames.cpp
new/OrthancDicomWeb-1.16/Plugin/WadoRsRetrieveFrames.cpp
--- old/OrthancDicomWeb-1.15/Plugin/WadoRsRetrieveFrames.cpp 2023-08-24
16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/Plugin/WadoRsRetrieveFrames.cpp 2023-12-19
12:06:33.000000000 +0100
@@ -31,6 +31,8 @@
#include <boost/algorithm/string/replace.hpp>
#include <boost/lexical_cast.hpp>
+static bool pluginCanDownloadTranscodedFile = false;
+
static void TokenizeAndNormalize(std::vector<std::string>& tokens,
const std::string& source,
@@ -111,33 +113,24 @@
if (type == "application/octet-stream")
{
- if (transferSyntax.empty() ||
- transferSyntax == "1.2.840.10008.1.2.1")
+ if (transferSyntax.empty())
{
syntax = Orthanc::DicomTransferSyntax_LittleEndianExplicit;
return true;
}
- else if (transferSyntax == "1.2.840.10008.1.2")
- {
- syntax = Orthanc::DicomTransferSyntax_LittleEndianImplicit;
- return true;
- }
- else if (transferSyntax == "1.2.840.10008.1.2.2") // New in 1.3
- {
- syntax = Orthanc::DicomTransferSyntax_BigEndianExplicit;
- return false;
- }
else if (transferSyntax == "*")
{
- // New in DICOMweb plugin 1.1
- return false;
+ // don't change transferSyntax, it must have been set to the
'current' value before calling this method
+ return true;
}
else
{
- throw Orthanc::OrthancException(
- Orthanc::ErrorCode_BadRequest,
- "DICOMweb RetrieveFrames: Cannot specify a transfer syntax (" +
- transferSyntax + ") for default Little Endian uncompressed pixel
data");
+ if (!Orthanc::LookupTransferSyntax(syntax, transferSyntax))
+ {
+ throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
+ "Unknown transfer syntax in
'Accept' header: " + transferSyntax);
+ }
+ return true;
}
}
else
@@ -287,7 +280,7 @@
}
}
- // By default, DICOMweb expectes Little Endian uncompressed pixel data
+ // By default, DICOMweb expects Little Endian uncompressed pixel data
syntax = Orthanc::DicomTransferSyntax_LittleEndianExplicit;
return true;
}
@@ -435,44 +428,73 @@
std::list<unsigned int>& frames)
{
std::string orthancId, studyInstanceUid, seriesInstanceUid, sopInstanceUid;
- OrthancPlugins::MemoryBuffer content;
- if (LocateInstance(output, orthancId, studyInstanceUid, seriesInstanceUid,
sopInstanceUid, request) &&
- content.RestApiGet("/instances/" + orthancId + "/file", false))
+ if (LocateInstance(output, orthancId, studyInstanceUid, seriesInstanceUid,
sopInstanceUid, request))
{
- if (allFrames)
- {
- OrthancPlugins::LogInfo("DICOMweb RetrieveFrames on " + orthancId + ",
all frames");
- }
- else
- {
- std::string s = "DICOMweb RetrieveFrames on " + orthancId + ", frames: ";
- for (std::list<unsigned int>::const_iterator
- frame = frames.begin(); frame != frames.end(); ++frame)
+ OrthancPlugins::MemoryBuffer content;
+ Orthanc::DicomTransferSyntax currentSyntax;
+ std::unique_ptr<OrthancPlugins::DicomInstance> instance;
+
+ { // logging only
+ if (allFrames)
{
- s += boost::lexical_cast<std::string>(*frame + 1) + " ";
+ OrthancPlugins::LogInfo("DICOMweb RetrieveFrames on " + orthancId + ",
all frames");
}
+ else
+ {
+ std::string s = "DICOMweb RetrieveFrames on " + orthancId + ", frames:
";
+ for (std::list<unsigned int>::const_iterator
+ frame = frames.begin(); frame != frames.end(); ++frame)
+ {
+ s += boost::lexical_cast<std::string>(*frame + 1) + " ";
+ }
- OrthancPlugins::LogInfo(s);
+ OrthancPlugins::LogInfo(s);
+ }
}
- Orthanc::DicomTransferSyntax targetSyntax;
+ std::string currentSyntaxString;
+ if (!OrthancPlugins::RestApiGetString(currentSyntaxString, "/instances/" +
orthancId + "/metadata/TransferSyntax", false))
+ {
+ throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
"DICOMWeb: Unable to get TransferSyntax for instance " + orthancId);
+ }
- std::unique_ptr<OrthancPlugins::DicomInstance> instance;
+ if (!Orthanc::LookupTransferSyntax(currentSyntax, currentSyntaxString))
+ {
+ throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
"Unknown transfer syntax: " + currentSyntaxString);
+ }
+
+ Orthanc::DicomTransferSyntax targetSyntax = currentSyntax;
+ bool transcodeThisInstance = false;
+
if (ParseTransferSyntax(targetSyntax, request))
{
- OrthancPlugins::LogInfo("DICOMweb RetrieveFrames: Transcoding instance "
+ orthancId +
- " to transfer syntax " +
Orthanc::GetTransferSyntaxUid(targetSyntax));
+ transcodeThisInstance = targetSyntax != currentSyntax;
+ }
- instance.reset(OrthancPlugins::DicomInstance::Transcode(
- content.GetData(), content.GetSize(),
GetTransferSyntaxUid(targetSyntax)));
+ // maximize the use the Orthanc storage cache. Since 1.12.2, transcoded
file may be stored in the storage cache
+ if (pluginCanDownloadTranscodedFile && transcodeThisInstance)
+ {
+ if (!content.RestApiGet("/instances/" + orthancId + "/file?transcode=" +
Orthanc::GetTransferSyntaxUid(targetSyntax), false))
+ {
+ throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
"DICOMWeb: Unable to get transcoded file for for instance " + orthancId);
+ }
+ instance.reset(new OrthancPlugins::DicomInstance(content.GetData(),
content.GetSize()));
}
- else
+ else // pre 1.12.2 code (or no transcoding needed)
{
+ if (!content.RestApiGet("/instances/" + orthancId + "/file", false))
+ {
+ throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
"DICOMWeb: Unable to get file for for instance " + orthancId);
+ }
instance.reset(new OrthancPlugins::DicomInstance(content.GetData(),
content.GetSize()));
- if (!Orthanc::LookupTransferSyntax(targetSyntax,
instance->GetTransferSyntaxUid()))
+
+ if (transcodeThisInstance)
{
- throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented,
- "Unknown transfer syntax: " +
std::string(GetTransferSyntaxUid(targetSyntax)));
+ OrthancPlugins::LogInfo("DICOMweb RetrieveFrames: Transcoding instance
" + orthancId +
+ " to transfer syntax " +
Orthanc::GetTransferSyntaxUid(targetSyntax));
+
+ instance.reset(OrthancPlugins::DicomInstance::Transcode(
+ content.GetData(), content.GetSize(),
GetTransferSyntaxUid(targetSyntax)));
}
}
@@ -513,3 +535,8 @@
ParseFrameList(frames, request);
RetrieveFrames(output, request, false, frames);
}
+
+void SetPluginCanDownloadTranscodedFile(bool enable)
+{
+ pluginCanDownloadTranscodedFile = enable;
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/README
new/OrthancDicomWeb-1.16/README
--- old/OrthancDicomWeb-1.15/README 2023-08-24 16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/README 2023-12-19 12:06:33.000000000 +0100
@@ -36,7 +36,7 @@
----------------------
Build and usage instructions are available in the Orthanc Book:
-http://book.orthanc-server.com/plugins/dicomweb.html
+https://orthanc.uclouvain.be/book/plugins/dicomweb.html
Contributing
@@ -44,7 +44,7 @@
Instructions for contributing to the Orthanc project are included in
the Orthanc Book:
-https://book.orthanc-server.com/developers/repositories.html
+https://orthanc.uclouvain.be/book/developers/repositories.html
Licensing: AGPL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/OrthancDicomWeb-1.15/Resources/CMake/JavaScriptLibraries.cmake
new/OrthancDicomWeb-1.16/Resources/CMake/JavaScriptLibraries.cmake
--- old/OrthancDicomWeb-1.15/Resources/CMake/JavaScriptLibraries.cmake
2023-08-24 16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/Resources/CMake/JavaScriptLibraries.cmake
2023-12-19 12:06:33.000000000 +0100
@@ -18,7 +18,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-set(BASE_URL "http://orthanc.osimis.io/ThirdPartyDownloads/dicom-web")
+set(BASE_URL
"https://orthanc.uclouvain.be/downloads/third-party-downloads/dicom-web")
DownloadPackage(
"da0189f7c33bf9f652ea65401e0a3dc9"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/OrthancDicomWeb-1.15/Resources/Orthanc/CMake/Compiler.cmake
new/OrthancDicomWeb-1.16/Resources/Orthanc/CMake/Compiler.cmake
--- old/OrthancDicomWeb-1.15/Resources/Orthanc/CMake/Compiler.cmake
2023-08-24 16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/Resources/Orthanc/CMake/Compiler.cmake
2023-12-19 12:06:33.000000000 +0100
@@ -263,3 +263,24 @@
# preceding batches. https://cmake.org/Bug/view.php?id=14874
set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> <LINK_FLAGS> q <TARGET> <OBJECTS>")
endif()
+
+
+# This function defines macro "__ORTHANC_FILE__" as a replacement to
+# macro "__FILE__", as the latter leaks the full path of the source
+# files in the binaries
+# https://stackoverflow.com/questions/8487986/file-macro-shows-full-path
+# https://twitter.com/wget42/status/1676877802375634944?s=20
+function(DefineSourceBasenameForTarget targetname)
+ # Microsoft Visual Studio is extremely slow if using
+ # "set_property()", we only enable this feature for gcc and clang
+ if (CMAKE_COMPILER_IS_GNUCXX OR
+ CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ get_target_property(source_files "${targetname}" SOURCES)
+ foreach(sourcefile ${source_files})
+ get_filename_component(basename "${sourcefile}" NAME)
+ set_property(
+ SOURCE "${sourcefile}" APPEND
+ PROPERTY COMPILE_DEFINITIONS "__ORTHANC_FILE__=\"${basename}\"")
+ endforeach()
+ endif()
+endfunction()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/OrthancDicomWeb-1.15/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
new/OrthancDicomWeb-1.16/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
---
old/OrthancDicomWeb-1.15/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
2023-08-24 16:29:33.000000000 +0200
+++
new/OrthancDicomWeb-1.16/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
2023-12-19 12:06:33.000000000 +0100
@@ -153,9 +153,13 @@
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.11.2")
set(ORTHANC_FRAMEWORK_MD5 "ede3de356493a8868545f8cb4b8bc8b5")
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.11.3")
- set(ORTHANC_FRAMEWORK_MD5 "5c1b11009d782f248739919db6bf7f7a")
+ set(ORTHANC_FRAMEWORK_MD5 "f941c0f5771db7616e7b7961026a60e2")
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.12.0")
set(ORTHANC_FRAMEWORK_MD5 "d32a0cde03b6eb603d8dd2b33d38bf1b")
+ elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.12.1")
+ set(ORTHANC_FRAMEWORK_MD5 "8a435140efc8ff4a01d8242f092f21de")
+ elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.12.2")
+ set(ORTHANC_FRAMEWORK_MD5 "d2476b9e796e339ac320b5333489bdb3")
# Below this point are development snapshots that were used to
# release some plugin, before an official release of the Orthanc
@@ -166,21 +170,27 @@
#
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "ae0e3fd609df")
# DICOMweb 1.1 (framework pre-1.6.0)
+ set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
set(ORTHANC_FRAMEWORK_MD5 "7e09e9b530a2f527854f0b782d7e0645")
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "82652c5fc04f")
# Stone Web viewer 1.0 (framework pre-1.8.1)
+ set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
set(ORTHANC_FRAMEWORK_MD5 "d77331d68917e66a3f4f9b807bbdab7f")
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "4a3ba4bf4ba7")
# PostgreSQL 3.3 (framework pre-1.8.2)
+ set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
set(ORTHANC_FRAMEWORK_MD5 "2d82bddf06f9cfe82095495cb3b8abde")
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "23ad1b9c7800")
# For "Toolbox::ReadJson()" and "Toolbox::Write{...}Json()" (pre-1.9.0)
+ set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
set(ORTHANC_FRAMEWORK_MD5 "9af92080e57c60dd288eba46ce606c00")
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "b2e08d83e21d")
# WSI 1.1 (framework pre-1.10.0), to remove "-std=c++11"
+ set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
set(ORTHANC_FRAMEWORK_MD5 "2eaa073cbb4b44ffba199ad93393b2b1")
elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "daf4807631c5")
# DICOMweb 1.15 (framework pre-1.12.2)
+ set(ORTHANC_FRAMEWORK_PRE_RELEASE ON)
set(ORTHANC_FRAMEWORK_MD5 "c644aff2817306b3207c98c92e43f35f")
endif()
endif()
@@ -269,7 +279,7 @@
else()
message("Forking the Orthanc source repository using Mercurial")
execute_process(
- COMMAND ${ORTHANC_FRAMEWORK_HG} clone
"https://hg.orthanc-server.com/orthanc/"
+ COMMAND ${ORTHANC_FRAMEWORK_HG} clone
"https://orthanc.uclouvain.be/hg/orthanc/"
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
RESULT_VARIABLE Failure
)
@@ -318,7 +328,11 @@
else()
# Default case: Download from the official Web site
set(ORTHANC_FRAMEMORK_FILENAME Orthanc-${ORTHANC_FRAMEWORK_VERSION}.tar.gz)
- set(ORTHANC_FRAMEWORK_URL
"https://orthanc.uclouvain.be/third-party-downloads/orthanc-framework/${ORTHANC_FRAMEMORK_FILENAME}")
+ if (ORTHANC_FRAMEWORK_PRE_RELEASE)
+ set(ORTHANC_FRAMEWORK_URL
"https://orthanc.uclouvain.be/downloads/third-party-downloads/orthanc-framework/${ORTHANC_FRAMEMORK_FILENAME}")
+ else()
+ set(ORTHANC_FRAMEWORK_URL
"https://orthanc.uclouvain.be/downloads/sources/orthanc/${ORTHANC_FRAMEMORK_FILENAME}")
+ endif()
endif()
set(ORTHANC_FRAMEWORK_ARCHIVE
"${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${ORTHANC_FRAMEMORK_FILENAME}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/OrthancDicomWeb-1.15/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake
new/OrthancDicomWeb-1.16/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake
---
old/OrthancDicomWeb-1.15/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake
2023-08-24 16:29:33.000000000 +0200
+++
new/OrthancDicomWeb-1.16/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake
2023-12-19 12:06:33.000000000 +0100
@@ -50,7 +50,7 @@
elseif (STATIC_BUILD OR NOT USE_SYSTEM_GOOGLE_TEST)
set(GOOGLE_TEST_SOURCES_DIR ${CMAKE_BINARY_DIR}/googletest-release-1.8.1)
- set(GOOGLE_TEST_URL
"https://orthanc.uclouvain.be/third-party-downloads/gtest-1.8.1.tar.gz")
+ set(GOOGLE_TEST_URL
"https://orthanc.uclouvain.be/downloads/third-party-downloads/gtest-1.8.1.tar.gz")
set(GOOGLE_TEST_MD5 "2e6fbeb6a91310a16efe181886c59596")
DownloadPackage(${GOOGLE_TEST_MD5} ${GOOGLE_TEST_URL}
"${GOOGLE_TEST_SOURCES_DIR}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/OrthancDicomWeb-1.15/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp
new/OrthancDicomWeb-1.16/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp
---
old/OrthancDicomWeb-1.15/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp
2023-08-24 16:29:33.000000000 +0200
+++
new/OrthancDicomWeb-1.16/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp
2023-12-19 12:06:33.000000000 +0100
@@ -79,6 +79,10 @@
}
}
+ void ResetGlobalContext()
+ {
+ globalContext_ = NULL;
+ }
bool HasGlobalContext()
{
@@ -1670,15 +1674,16 @@
return true;
}
- // Parse the version
- int aa, bb, cc;
- if (
#ifdef _MSC_VER
- sscanf_s
+#define ORTHANC_SCANF sscanf_s
#else
- sscanf
+#define ORTHANC_SCANF sscanf
#endif
- (version, "%4d.%4d.%4d", &aa, &bb, &cc) != 3 ||
+
+ // Parse the version
+ int aa, bb, cc = 0;
+ if ((ORTHANC_SCANF(version, "%4d.%4d.%4d", &aa, &bb, &cc) != 3 &&
+ ORTHANC_SCANF(version, "%4d.%4d", &aa, &bb) != 2) ||
aa < 0 ||
bb < 0 ||
cc < 0)
@@ -2602,7 +2607,7 @@
if (body.isMember(KEY_PRIORITY))
{
- if (body[KEY_PRIORITY].type() != Json::booleanValue)
+ if (body[KEY_PRIORITY].type() != Json::intValue)
{
#if HAS_ORTHANC_EXCEPTION == 1
throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/OrthancDicomWeb-1.15/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h
new/OrthancDicomWeb-1.16/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h
---
old/OrthancDicomWeb-1.15/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h
2023-08-24 16:29:33.000000000 +0200
+++
new/OrthancDicomWeb-1.16/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h
2023-12-19 12:06:33.000000000 +0100
@@ -137,6 +137,8 @@
void SetGlobalContext(OrthancPluginContext* context);
+ void ResetGlobalContext();
+
bool HasGlobalContext();
OrthancPluginContext* GetGlobalContext();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/Resources/SyncOrthancFolder.py
new/OrthancDicomWeb-1.16/Resources/SyncOrthancFolder.py
--- old/OrthancDicomWeb-1.15/Resources/SyncOrthancFolder.py 2023-08-24
16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/Resources/SyncOrthancFolder.py 2023-12-19
12:06:33.000000000 +0100
@@ -12,7 +12,7 @@
TARGET = os.path.join(os.path.dirname(__file__), 'Orthanc')
PLUGIN_SDK_VERSION = '1.12.1'
-REPOSITORY = 'https://hg.orthanc-server.com/orthanc/raw-file'
+REPOSITORY = 'https://orthanc.uclouvain.be/hg/orthanc/raw-file'
FILES = [
('OrthancFramework/Resources/CMake/AutoGeneratedCode.cmake', 'CMake'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/TODO
new/OrthancDicomWeb-1.16/TODO
--- old/OrthancDicomWeb-1.15/TODO 2023-08-24 16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/TODO 2023-12-19 12:06:33.000000000 +0100
@@ -1,3 +1,17 @@
+* when retrieving frames from Multi-frame instances, we should not transcode
the whole instance for each frame !!!
+ For a 90MB instance with 88 frames, OHIF is unusable because of this !
+ Sample request:
+ curl -H "Accept: multipart/related; type=application/octet-stream"
http://localhost:8043/dicom-web/studies/1.2.156.112536.1.2143.25015081191207.14610300430.5/series/1.2.156.112536.1.2143.25015081191207.14610300430.6/instances/1.2.156.112536.1.2143.25015081191207.14610309990.44/frames/3
--output /tmp/out.bin
+ check for these logs: DICOMweb RetrieveFrames: Transcoding instance
a7aec17a-e296e51f-2abe8ad8-bc95d57b-4de269d0 to transfer syntax
1.2.840.10008.1.2.1
+
+ We should very likely implement a cache in the DicomWEB plugin and make sure
that, if 3 clients are requesting the same instance at the same time, we only
+ request one transcoding.
+
+ No such issue in StoneViewer since Stone downloads the whole file. However,
Stone uses 2-3 workers at the same time and the file is read 2-3 times at the
same time
+ before it ends up in Orthanc cache -> we should introduce a state
"is_being_loaded" in caches and have other consumers wait for it to be
available.
+
https://discourse.orthanc-server.org/t/possible-memory-leak-with-multiframe-dicom-orthanc-ohif/3988/12
+
+
* Implement capabilities:
https://www.dicomstandard.org/using/dicomweb/capabilities/
from
https://groups.google.com/d/msgid/orthanc-users/c60227f2-c6da-4fd9-9b03-3ce9bf7d1af5n%40googlegroups.com?utm_medium=email&utm_source=footer
@@ -8,6 +22,10 @@
* Add support for application/zip in /dicom-web/studies/ (aka sup 211:
https://www.dicomstandard.org/docs/librariesprovider2/dicomdocuments/news/ftsup/docs/sups/sup211.pdf?sfvrsn=9fe9edae_2)
+* Support private tags in search fields:
+
https://discourse.orthanc-server.org/t/dicomweb-plugin-exception-of-unknown-dicom-tag-for-private-data-element-tags-while-using-query-parameters/3998
+
+
* Based on this discussion:
https://discourse.orthanc-server.org/t/series-metadata-retrieval-is-very-long-even-with-configuration-optimization/3389
optimize studies/.../series/.../metadata route when "SeriesMetadata" is set
to "MainDicomTags" and "ExtraMainDicomTags" are configured according to
recommandation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/OrthancDicomWeb-1.15/WebApplication/index.html
new/OrthancDicomWeb-1.16/WebApplication/index.html
--- old/OrthancDicomWeb-1.15/WebApplication/index.html 2023-08-24
16:29:33.000000000 +0200
+++ new/OrthancDicomWeb-1.16/WebApplication/index.html 2023-12-19
12:06:33.000000000 +0100
@@ -44,7 +44,7 @@
</p>
<p>
<a class="btn btn-primary btn-lg"
- href="https://book.orthanc-server.com/plugins/dicomweb.html"
+ href="https://orthanc.uclouvain.be/book/plugins/dicomweb.html"
target="_blank" role="button">Open documentation</a>
<a class="btn btn-primary btn-lg"
:href="orthancApiRoot"