changeset 942:d1259f584f1e default tip

merge
author Alain Mazy <am@orthanc.team>
date Fri, 17 Jul 2026 15:05:44 +0200
parents 3a440ee47213 (current diff) e6666a9679c3 (diff)
children
files
diffstat 1 files changed, 30 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/Plugins/DicomWeb/Run.py	Fri Jul 17 15:05:29 2026 +0200
+++ b/Plugins/DicomWeb/Run.py	Fri Jul 17 15:05:44 2026 +0200
@@ -1961,6 +1961,9 @@
             seriesInstanceUid = instances[0]['0020000E']['Value'][0]
             sopInstanceUid = instances[0]['00080018']['Value'][0]
 
+            BASE_URI = '/dicom-web/studies/%s/series/%s/instances/%s/bulk' % (studyInstanceUid, seriesInstanceUid, sopInstanceUid)
+            BASE_URL = 'http://%s:%s%s' % (args.server, args.rest, BASE_URI)
+
             metadata = DoGet(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/metadata' % (
                 studyInstanceUid, seriesInstanceUid, sopInstanceUid), headers = {
                 'Accept': 'application/dicom+json',
@@ -1969,24 +1972,37 @@
 
             of = metadata[0]['00660016']
             self.assertEqual('OF', of['vr'])
-            self.assertEqual(3, len(of['Value']))
-            self.assertAlmostEqual(10.1, of['Value'][0], places = 5)
-            self.assertAlmostEqual(20.2, of['Value'][1], places = 5)
-            self.assertAlmostEqual(30.3, of['Value'][2], places = 5)
+            if 'Value' in of:
+                # This was the case in Orthanc <= 1.12.11 and DICOMweb <= 1.23
+                self.assertEqual(3, len(of['Value']))
+                self.assertAlmostEqual(10.1, of['Value'][0], places = 5)
+                self.assertAlmostEqual(20.2, of['Value'][1], places = 5)
+                self.assertAlmostEqual(30.3, of['Value'][2], places = 5)
+            else:
+                self.assertTrue('BulkDataURI' in of)
+                self.assertEqual('%s/00660016' % BASE_URL, of["BulkDataURI"])
 
             od = metadata[0]['0070150D']
             self.assertEqual('OD', od['vr'])
-            self.assertEqual(3, len(od['Value']))
-            self.assertAlmostEqual(1.1, od['Value'][0])
-            self.assertAlmostEqual(2.2, od['Value'][1])
-            self.assertAlmostEqual(3.3, od['Value'][2])
+            if 'Value' in od:
+                self.assertEqual(3, len(od['Value']))
+                self.assertAlmostEqual(1.1, od['Value'][0])
+                self.assertAlmostEqual(2.2, od['Value'][1])
+                self.assertAlmostEqual(3.3, od['Value'][2])
+            else:
+                self.assertTrue('BulkDataURI' in od)
+                self.assertEqual('%s/0070150d' % BASE_URL, od["BulkDataURI"])
 
-            od = metadata[0]['00660041']
-            self.assertEqual('OL', od['vr'])
-            self.assertEqual(3, len(od['Value']))
-            self.assertEqual(42, od['Value'][0])
-            self.assertEqual(0, od['Value'][1])
-            self.assertEqual(15, od['Value'][2])
+            ol = metadata[0]['00660041']
+            self.assertEqual('OL', ol['vr'])
+            if 'Value' in ol:
+                self.assertEqual(3, len(ol['Value']))
+                self.assertEqual(42, ol['Value'][0])
+                self.assertEqual(0, ol['Value'][1])
+                self.assertEqual(15, ol['Value'][2])
+            else:
+                self.assertTrue('BulkDataURI' in ol)
+                self.assertEqual('%s/00660041' % BASE_URL, ol["BulkDataURI"])
 
 
     def test_multiframe_rgb48_raw(self):