annotate Plugins/DicomWeb/Run.py @ 735:be8f174d3c9d find-refactoring tip

tools/find: Limit and Since are now forbidden when filtering on DICOM tags that are not stored in DB
author Alain Mazy <am@orthanc.team>
date Thu, 24 Oct 2024 15:08:59 +0200
parents 8561d9c88d1a
children d2ac1c6588db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
655
b4fed8dca955 moving to python3 in DICOMweb tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 654
diff changeset
1 #!/usr/bin/python3
224
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
2 # -*- coding: utf-8 -*-
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
3
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 # Orthanc - A Lightweight, RESTful DICOM Store
73
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 33
diff changeset
6 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 # Department, University Hospital of Liege, Belgium
649
5d7b6e43ab7d updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
8 # Copyright (C) 2017-2023 Osimis S.A., Belgium
5d7b6e43ab7d updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
9 # Copyright (C) 2024-2024 Orthanc Team SRL, Belgium
640
9f8276ac1cdd update year to 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 608
diff changeset
10 # Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 #
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 # This program is free software: you can redistribute it and/or
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 # modify it under the terms of the GNU General Public License as
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 # published by the Free Software Foundation, either version 3 of the
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 # License, or (at your option) any later version.
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 #
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 # This program is distributed in the hope that it will be useful, but
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 # WITHOUT ANY WARRANTY; without even the implied warranty of
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 # General Public License for more details.
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 #
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 # You should have received a copy of the GNU General Public License
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 # along with this program. If not, see <http://www.gnu.org/licenses/>.
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25
85
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
26
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
27 # You must add the following to the configuration file:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
28 #
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
29 # "DicomWeb" : {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
30 # "Servers" : {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
31 # "sample" : [ "http://localhost:8042/dicom-web/", "alice", "orthanctest" ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
32 # }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
33 # }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
34
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
35
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
36
558
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
37 import argparse
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
38 import copy
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 import os
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
40 import pprint
559
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
41 import pydicom
558
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
42 import re
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43 import sys
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 import unittest
558
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
45 import xml.dom.minidom
575
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
46 import time
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
47 from PIL import ImageChops
563
be69d6d8260c fix for python2
Alain Mazy <am@osimis.io>
parents: 562
diff changeset
48 from io import BytesIO
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
49 from DicomWeb import *
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'Tests'))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 from Toolbox import *
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 ## Parse the command-line arguments
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59 parser = argparse.ArgumentParser(description = 'Run the integration tests for the DICOMweb plugin.')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61 parser.add_argument('--server',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62 default = 'localhost',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63 help = 'Address of the Orthanc server to test')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 parser.add_argument('--rest',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65 type = int,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 default = 8042,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67 help = 'Port to the REST API')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68 parser.add_argument('--username',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
69 default = 'alice',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
70 help = 'Username to the REST API')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71 parser.add_argument('--password',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
72 default = 'orthanctest',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
73 help = 'Password to the REST API')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
74 parser.add_argument('--wado',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
75 default = '/wado',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
76 help = 'Path to the WADO API')
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
77 parser.add_argument('--dicomweb',
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
78 default = '/dicom-web/',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79 help = 'Path to the DICOMweb API')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80 parser.add_argument('--force', help = 'Do not warn the user',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81 action = 'store_true')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82 parser.add_argument('options', metavar = 'N', nargs = '*',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83 help='Arguments to Python unittest')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
84
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
85 args = parser.parse_args()
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
86
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
87
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
88 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89 ## Configure the testing context
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
91
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
92 if not args.force:
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93 print("""
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
94 WARNING: This test will remove all the content of your
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
95 Orthanc instance running on %s!
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
96
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
97 Are you sure ["yes" to go on]?""" % args.server)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
98
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
99 if sys.stdin.readline().strip() != 'yes':
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
100 print('Aborting...')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
101 exit(0)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
102
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
103
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
104 ORTHANC = DefineOrthanc(server = args.server,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105 username = args.username,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
106 password = args.password,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
107 restPort = args.rest)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
108
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
109
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
110 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
111 ## The tests
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
112 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
113
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
114
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
115 def UploadAndGetWadoPath(dicom):
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
116 i = UploadInstance(ORTHANC, dicom) ['ID']
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
117 study = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['StudyInstanceUID']
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
118 series = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['SeriesInstanceUID']
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
119 instance = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['SOPInstanceUID']
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
120 return '/studies/%s/series/%s/instances/%s' % (study, series, instance)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
121
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
122
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
123
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
124 class Orthanc(unittest.TestCase):
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
125 def setUp(self):
83
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
126 if (sys.version_info >= (3, 0)):
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
127 # Remove annoying warnings about unclosed socket in Python 3
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
128 import warnings
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
129 warnings.simplefilter("ignore", ResourceWarning)
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
130
270
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
131 #print("In test: ", self._testMethodName)
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
132
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133 DropOrthanc(ORTHANC)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135 def test_wado_dicom(self):
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136 UploadInstance(ORTHANC, 'Brainix/Flair/IM-0001-0001.dcm')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
137
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
138 SIZE = 169478
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
139 INSTANCE = '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549'
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
140 SERIES = '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497'
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
141 STUDY = '2.16.840.1.113669.632.20.1211.10000357775'
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
142
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
143 self.assertRaises(Exception, lambda: DoGet(ORTHANC, args.wado))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
144 self.assertRaises(Exception, lambda: DoGet(ORTHANC, args.wado + '?requestType=WADO'))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
145 self.assertRaises(Exception, lambda: DoGet(ORTHANC, args.wado + '?objectUID=%s' % INSTANCE))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
146
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
147 dicom = DoGet(ORTHANC, args.wado + '?contentType=application/dicom&requestType=WADO&objectUID=%s' % INSTANCE)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
148 self.assertEqual(SIZE, len(dicom))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
149
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
150 dicom = DoGet(ORTHANC, args.wado + '?contentType=application/dicom&requestType=WADO&objectUID=%s&seriesUID=%s' % (INSTANCE, SERIES))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
151 self.assertEqual(SIZE, len(dicom))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
152
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
153 dicom = DoGet(ORTHANC, args.wado + '?contentType=application/dicom&requestType=WADO&objectUID=%s&seriesUID=%s&studyUID=%s' % (INSTANCE, SERIES, STUDY))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
154 self.assertEqual(SIZE, len(dicom))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
155
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
156 dicom = DoGet(ORTHANC, args.wado + '?contentType=application/dicom&requestType=WADO&objectUID=%s&seriesUID=%s' % (INSTANCE, SERIES))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157 self.assertEqual(SIZE, len(dicom))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159 dicom = DoGet(ORTHANC, args.wado + '?contentType=application/dicom&requestType=WADO&objectUID=%s&studyUID=%s' % (INSTANCE, STUDY))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
160 self.assertEqual(SIZE, len(dicom))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
161
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162 self.assertRaises(Exception, lambda: DoGet(ORTHANC, args.wado + '?requestType=WADO&objectUID=%s&seriesUID=nope' % INSTANCE))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163 self.assertRaises(Exception, lambda: DoGet(ORTHANC, args.wado + '?requestType=WADO&objectUID=%s&studyUID=nope' % INSTANCE))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
164 self.assertRaises(Exception, lambda: DoGet(ORTHANC, args.wado + '?requestType=WADO&objectUID=%s&seriesUID=nope&studyUID=nope' % INSTANCE))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166 def test_wado_image(self):
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 UploadInstance(ORTHANC, 'Phenix/IM-0001-0001.dcm')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
168 INSTANCE = '1.2.840.113704.7.1.1.6632.1127829031.2'
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
170 im = GetImage(ORTHANC, args.wado + '?requestType=WADO&objectUID=%s' % INSTANCE)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171 self.assertEqual('JPEG', im.format)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
172 self.assertEqual('L', im.mode)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
173 self.assertEqual(512, im.size[0])
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
174 self.assertEqual(358, im.size[1])
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
175
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
176 im = GetImage(ORTHANC, args.wado + '?contentType=image/jpg&requestType=WADO&objectUID=%s' % INSTANCE)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
177 self.assertEqual('JPEG', im.format)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
178
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
179 im = GetImage(ORTHANC, args.wado + '?contentType=image/png&requestType=WADO&objectUID=%s' % INSTANCE)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
180 self.assertEqual('PNG', im.format)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
181 self.assertEqual('L', im.mode)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
182 self.assertEqual(512, im.size[0])
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
183 self.assertEqual(358, im.size[1])
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
184
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
185 def test_stow(self):
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
186 self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
187 SendStow(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Phenix/IM-0001-0001.dcm'))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
188 self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
189 a = SendStow(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Phenix/IM-0001-0001.dcm'))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
190 self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
191
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
192 self.assertEqual(4, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
193
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
194 # Specific character set
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
195 self.assertTrue('00080005' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
196 self.assertEqual('CS', a['00080005']['vr'])
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
197
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
198 self.assertTrue(a['00081190']['Value'][0].endswith('studies/2.16.840.1.113669.632.20.1211.10000098591'))
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
199 self.assertEqual('UR', a['00081190']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
200
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
201 self.assertFalse('Value' in a['00081198']) # No error => empty sequence
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
202 self.assertEqual('SQ', a['00081198']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
203
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
204 self.assertEqual(1, len(a['00081199']['Value'])) # 1 success
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
205 self.assertEqual('SQ', a['00081199']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
206
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
207 b = a['00081199']['Value'][0]
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
208
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
209 # Referenced SOP class UID
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
210 self.assertEqual('UI', b['00081150']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
211 self.assertEqual(1, len(b['00081150']['Value']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
212 self.assertEqual('1.2.840.10008.5.1.4.1.1.2', b['00081150']['Value'][0])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
213
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
214 # Referenced SOP instance UID
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
215 self.assertEqual('UI', b['00081155']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
216 self.assertEqual(1, len(b['00081155']['Value']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
217 self.assertEqual('1.2.840.113704.7.1.1.6632.1127829031.2', b['00081155']['Value'][0])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
218
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
219 # Retrieve URL
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
220 self.assertEqual('UR', b['00081190']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
221 self.assertEqual(1, len(b['00081190']['Value']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
222 self.assertTrue(b['00081190']['Value'][0].
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
223 endswith('series/1.2.840.113704.1.111.5692.1127828999.2/instances/1.2.840.113704.7.1.1.6632.1127829031.2'))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
224
83
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
225 # Remove the "http://localhost:8042" prefix
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
226 url = a['00081190']['Value'][0]
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
227 url = re.sub(r'(http|https)://[^/]+(/.*)', r'\2', url)
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
228
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
229 # Get the content-length of all the multiparts of this WADO-RS
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
230 # request (prevent transcoding by setting transfer-syntax to
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
231 # "*", necessary since release 1.5 of the DICOMweb plugin)
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
232 b = DoGet(ORTHANC, url, headers = {
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
233 'Accept' : 'multipart/related;type=application/dicom;transfer-syntax=*'
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
234 }).decode('utf-8', 'ignore')
83
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
235 parts = re.findall(r'^Content-Length:\s*(\d+)\s*', b, re.IGNORECASE | re.MULTILINE)
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
236 self.assertEqual(1, len(parts))
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
237 self.assertEqual(os.path.getsize(GetDatabasePath('Phenix/IM-0001-0001.dcm')), int(parts[0]))
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
238
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
239
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
240 def test_server_get(self):
277
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
241 try:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
242 DoDelete(ORTHANC, '/dicom-web/servers/google') # If "AllWindowsStart.sh" is used
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
243 except:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
244 pass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
245
388
3ef44d201875 revert incorrect changeset 386
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 386
diff changeset
246 try:
3ef44d201875 revert incorrect changeset 386
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 386
diff changeset
247 DoDelete(ORTHANC, '/dicom-web/servers/hello') # If "test_add_server" fails
3ef44d201875 revert incorrect changeset 386
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 386
diff changeset
248 except:
3ef44d201875 revert incorrect changeset 386
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 386
diff changeset
249 pass
3ef44d201875 revert incorrect changeset 386
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 386
diff changeset
250
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
251 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
252
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
253 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/servers')))
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
254 self.assertTrue('sample' in DoGet(ORTHANC, '/dicom-web/servers'))
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
255
129
53d522dd4a38 added tests for ?expand in /dicom-web/servers route
amazy
parents: 114
diff changeset
256 serversReadback = DoGet(ORTHANC, '/dicom-web/servers?expand')
53d522dd4a38 added tests for ?expand in /dicom-web/servers route
amazy
parents: 114
diff changeset
257 self.assertEqual('http://localhost:8042/dicom-web/', serversReadback['sample']['Url'])
53d522dd4a38 added tests for ?expand in /dicom-web/servers route
amazy
parents: 114
diff changeset
258 self.assertEqual('alice', serversReadback['sample']['Username'])
53d522dd4a38 added tests for ?expand in /dicom-web/servers route
amazy
parents: 114
diff changeset
259
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
260 sample = DoGet(ORTHANC, '/dicom-web/servers/sample')
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
261 self.assertEqual(5, len(sample))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
262 self.assertTrue('stow' in sample)
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
263 self.assertTrue('retrieve' in sample)
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
264 self.assertTrue('get' in sample)
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
265 self.assertTrue('wado' in sample) # New in 0.7
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
266 self.assertTrue('qido' in sample) # New in 0.7
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
267
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
268 # application/dicom+xml
131
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
269 self.assertEqual(2, len(re.findall('^--', DoGet(ORTHANC, '/dicom-web/studies',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
270 headers = { 'Accept' : 'application/dicom+xml' }),
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
271 re.MULTILINE)))
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
272 self.assertEqual(2, len(re.findall('^--', DoPost
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
273 (ORTHANC, '/dicom-web/servers/sample/get',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
274 { 'Uri' : '/studies',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
275 'HttpHeaders' : { 'Accept' : 'application/dicom+xml' }
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
276 }), re.MULTILINE)))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
277
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
278 # application/dicom+json
131
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
279 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
280 headers = { 'Accept' : 'application/dicom+json' })))
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
281 self.assertEqual(1, len(DoPost(ORTHANC, '/dicom-web/servers/sample/get',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
282 { 'Uri' : '/studies',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
283 'HttpHeaders' : { 'Accept' : 'application/dicom+json' }})))
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
284
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
285 # application/json
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
286 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
287 headers = { 'Accept' : 'application/json' })))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
288 self.assertEqual(1, len(DoPost(ORTHANC, '/dicom-web/servers/sample/get',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
289 { 'Uri' : '/studies',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
290 'HttpHeaders' : { 'Accept' : 'application/json' }})))
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
291
131
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
292 # application/dicom+json is the default as of OrthancDicomWeb-0.5
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
293 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies')))
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
294 self.assertEqual(1, len(DoPost(ORTHANC, '/dicom-web/servers/sample/get',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
295 { 'Uri' : '/studies' })))
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
296
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
297
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
298 def test_server_stow(self):
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
299 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
300
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
301 self.assertRaises(Exception, lambda:
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
302 DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
303 { 'Resources' : [ 'nope' ],
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
304 'Synchronous' : True })) # inexisting resource
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
305
672
c26163577c91 DW tests for 'Server'
Alain Mazy <am@orthanc.team>
parents: 655
diff changeset
306 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 18, 0):
c26163577c91 DW tests for 'Server'
Alain Mazy <am@orthanc.team>
parents: 655
diff changeset
307 l = 4 # "Server" has been added
c26163577c91 DW tests for 'Server'
Alain Mazy <am@orthanc.team>
parents: 655
diff changeset
308 else:
c26163577c91 DW tests for 'Server'
Alain Mazy <am@orthanc.team>
parents: 655
diff changeset
309 l = 3 # For >= 1.10.1
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
310
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
311 # study
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
312 r = DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
313 { 'Resources' : [ '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' ],
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
314 'Synchronous' : True })
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
315
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
316 self.assertEqual(l, len(r))
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
317 self.assertEqual("0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918", r['Resources']['Studies'][0])
673
Alain Mazy <am@orthanc.team>
parents: 672
diff changeset
318 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 18, 0):
Alain Mazy <am@orthanc.team>
parents: 672
diff changeset
319 self.assertEqual("sample", r['Server'])
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
320
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
321 # series
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
322 r = DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
323 { 'Resources' : [ '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' ],
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
324 'Synchronous' : True })
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
325 self.assertEqual(l, len(r))
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
326 self.assertEqual("6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285", r['Resources']['Series'][0])
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
327
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
328 # instances
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
329 r = DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
330 { 'Resources' : [ 'c8df6478-d7794217-0f11c293-a41237c9-31d98357' ],
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
331 'Synchronous' : True })
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
332 self.assertEqual(l, len(r))
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
333 self.assertEqual("c8df6478-d7794217-0f11c293-a41237c9-31d98357", r['Resources']['Instances'][0])
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
334
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
335 # altogether
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
336 r = DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
337 { 'Resources' : [
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
338 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
339 '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
340 '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285',
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
341 'c8df6478-d7794217-0f11c293-a41237c9-31d98357' ],
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
342 'Synchronous' : True })
510
Alain Mazy <am@osimis.io>
parents: 499
diff changeset
343 # pprint.pprint(r)
499
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
344 self.assertEqual(l, len(r))
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
345 self.assertEqual("ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17", r['Resources']['Patients'][0])
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
346 self.assertEqual("0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918", r['Resources']['Studies'][0])
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
347 self.assertEqual("6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285", r['Resources']['Series'][0])
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
348 self.assertEqual("c8df6478-d7794217-0f11c293-a41237c9-31d98357", r['Resources']['Instances'][0])
9a6fa1ffb23a tests for DicomWeb 1.10.1
Alain Mazy <am@osimis.io>
parents: 487
diff changeset
349
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
350
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
351
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
352 def test_server_retrieve(self):
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
353 COUNT = 'ReceivedInstancesCount'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
354 #COUNT = 'Instances' # In version <= 0.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
355
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
356 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
357 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0002.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
358 UploadInstance(ORTHANC, 'Knee/T2/IM-0001-0001.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
359
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
360 self.assertRaises(Exception, lambda:
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
361 DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
362 { 'Resources' : [ { 'Study' : 'nope' } ]})) # inexisting resource
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
363
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
364 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
365 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
366 self.assertEqual(3, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
367
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
368 # Missing "Study" field
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
369 self.assertRaises(Exception, lambda:
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
370 DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
371 { 'Resources' : [ { 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ]}))
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
372
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
373 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
374 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
375 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
376 self.assertEqual(2, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
377
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
378 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
379 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
380 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
381 self.assertEqual(1, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
382
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
383 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
384 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
385 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' },
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
386 { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
387 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
388 self.assertEqual(3, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
389
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
390 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
391 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
392 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
393 'Instance' : '1.3.46.670589.11.17521.5.0.3124.2008081909113806560' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
394 self.assertEqual(1, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
395
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
396
114
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
397 def test_bitbucket_issue_53(self):
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
398 # DICOMWeb plugin support for "limit" and "offset" parameters in QIDO-RS
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
399 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=53
114
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
400
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
401 UploadInstance(ORTHANC, 'Brainix/Flair/IM-0001-0001.dcm')
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
402 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
403
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
404 brainix = '2.16.840.1.113669.632.20.1211.10000357775'
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
405 knee = '2.16.840.1.113669.632.20.121711.10000160881'
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
406
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
407 a = DoGet(ORTHANC, '/dicom-web/studies',
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
408 headers = { 'accept' : 'application/json' })
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
409 self.assertEqual(2, len(a))
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
410
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
411 b = []
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
412 a = DoGet(ORTHANC, '/dicom-web/studies?limit=1',
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
413 headers = { 'accept' : 'application/json' })
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
414 self.assertEqual(1, len(a))
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
415 b.append(a[0]['0020000D']['Value'][0])
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
416
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
417 a = DoGet(ORTHANC, '/dicom-web/studies?limit=1&offset=1',
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
418 headers = { 'accept' : 'application/json' })
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
419 self.assertEqual(1, len(a))
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
420 b.append(a[0]['0020000D']['Value'][0])
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
421
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
422 self.assertTrue(brainix in b)
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
423 self.assertTrue(knee in b)
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
424
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
425
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
426 def test_bitbucket_issue_111(self):
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
427 # Wrong serialization of empty values
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
428 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=111
319
de6e73e4df60 leaving bitbucket
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 318
diff changeset
429 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/3
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
430
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
431 # According to the standard, section F.2.5
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
432 # (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_F.2.5.html),
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
433 # null values behave as follows: If an attribute is present in
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
434 # DICOM but empty (i.e., Value Length is 0), it shall be
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
435 # preserved in the DICOM JSON attribute object containing no
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
436 # "Value", "BulkDataURI" or "InlineBinary".
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
437 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=111
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
438
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
439 UploadInstance(ORTHANC, 'Issue111.dcm')
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
440
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
441 # Test WADO-RS
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
442 a = DoGet(ORTHANC, '/dicom-web/studies/1.2.276.0.7230010.3.1.2.8323329.30185.1551199973.371589/metadata')
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
443 self.assertEqual(1, len(a))
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
444 self.assertTrue('00080050' in a[0]) # AccessionNumber is null
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
445 self.assertEqual(1, len(a[0]['00080050'])) # 'vr' is the only field to be present
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
446 self.assertEqual('SH', a[0]['00080050']['vr'])
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
447
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
448 # Test QIDO-RS
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
449 a = DoGet(ORTHANC, '/dicom-web/studies')
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
450 self.assertEqual(1, len(a))
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
451 self.assertTrue('00080050' in a[0]) # AccessionNumber is null
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
452 self.assertEqual(1, len(a[0]['00080050'])) # 'vr' is the only field to be present
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
453 self.assertEqual('SH', a[0]['00080050']['vr'])
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
454
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
455
537
Alain Mazy <am@osimis.io>
parents: 533
diff changeset
456 # this test fails if SeriesMetadata = "MainDicomTags" (this is expected since the reference json is the full json)
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
457 def test_wado_hierarchy(self):
700
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
458 if IsOrthancVersionAbove(ORTHANC, 1, 12, 5) and DoGet(ORTHANC, '/system')['ApiVersion'] >= 26: # reference file has been updated
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
459 def CheckJson(uri, headers = {}):
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
460 with open(GetDatabasePath('DummyCT.json'), 'r') as f:
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
461 expected = json.loads(f.read())
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
462 actual = DoGet(ORTHANC, uri, headers)
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
463 self.assertEqual(1, len(actual))
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
464 AssertAlmostEqualRecursive(self, expected, actual[0])
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
465
700
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
466 UploadInstance(ORTHANC, 'DummyCT.dcm')
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
467 study = '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
468 series = '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
469 instance = '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109'
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
470
700
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
471 URI = '/dicom-web/studies/%s/series/%s/instances/%s/metadata'
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
472 self.assertRaises(Exception, lambda: DoGet(ORTHANC, URI % (study, series, instance),
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
473 headers = { 'accept' : 'application/nope' }))
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
474
700
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
475 CheckJson(URI % (study, series, instance), headers = { 'accept' : 'application/dicom+json' })
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
476 CheckJson('/dicom-web/studies/%s/series/%s/metadata' % (study, series))
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
477 CheckJson('/dicom-web/studies/%s/metadata' % study)
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
478
700
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
479 self.assertRaises(Exception, lambda: DoGet(ORTHANC, URI % ('nope', series, instance)))
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
480 self.assertRaises(Exception, lambda: DoGet(ORTHANC, URI % (study, 'nope', instance)))
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
481 self.assertRaises(Exception, lambda: DoGet(ORTHANC, URI % (study, series, 'nope')))
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
482 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/series/%s/metadata' % ('nope', series)))
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
483 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/series/%s/metadata' % (study, 'nope')))
Alain Mazy <am@orthanc.team>
parents: 698
diff changeset
484 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % 'nope'))
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
485
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
486
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
487 def test_wado_pixel_data(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
488 orthanc = UploadInstance(ORTHANC, 'Issue29.dcm') ['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
489 a = DoGet(ORTHANC, '/dicom-web/instances')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
490 self.assertEqual(1, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
491 url = a[0]['00081190']['Value'][0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
492
278
514785dacd6d fix dicomweb tests with debian
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 277
diff changeset
493 prefix = 'http://%s:%s' % (args.server, args.rest)
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
494 self.assertTrue(url.startswith(prefix))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
495
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
496 b = DoGet(ORTHANC, url[len(prefix):] + '/metadata')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
497 self.assertEqual('OB', b[0]['7FE00010']['vr'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
498 self.assertEqual(2, len(b[0]['7FE00010']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
499 self.assertTrue('BulkDataURI' in b[0]['7FE00010'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
500
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
501 url = b[0]['7FE00010']['BulkDataURI']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
502 self.assertTrue(url.startswith(prefix))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
503
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
504 p = DoGetMultipart(ORTHANC, url[len(prefix):])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
505
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
506 self.assertEqual(2, len(p)) # There are 2 fragments in this image
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
507 self.assertEqual(4, len(p[0]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
508 self.assertEqual(114486, len(p[1]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
509
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
510
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
511 def test_wado_hierarchy_bulk(self):
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
512 def CheckBulk(value, bulk):
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
513 self.assertEqual(2, len(value))
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
514 self.assertTrue('BulkDataURI' in value)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
515 self.assertTrue('vr' in value)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
516 self.assertEqual(value['BulkDataURI'], bulk)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
517
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
518 orthanc = UploadInstance(ORTHANC, 'PrivateTags.dcm') ['ID']
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
519 study = '1.2.840.113619.2.115.147416.1094281639.0.29'
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
520 series = '1.2.840.113619.2.115.147416.1094281639.0.30'
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
521 sop = '1.2.840.113619.2.115.147416.1094281639.0.38'
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
522
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
523 # WARNING: This test will fail on Orthanc <= 1.5.5, because
319
de6e73e4df60 leaving bitbucket
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 318
diff changeset
524 # the following fix was not included yet:
586
Alain Mazy <am@osimis.io>
parents: 575
diff changeset
525 # https://orthanc.uclouvain.be/hg/orthanc/rev/b88937ef597b
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
526
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
527 a = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
528 self.assertEqual(1, len(a))
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
529
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
530 BASE_URI = '/dicom-web/studies/%s/series/%s/instances/%s/bulk' % (study, series, sop)
278
514785dacd6d fix dicomweb tests with debian
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 277
diff changeset
531 BASE_URL = 'http://%s:%s%s' % (args.server, args.rest, BASE_URI)
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
532
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
533 self.assertEqual(2, len(a[0]['60031010']['Value']))
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
534 CheckBulk(a[0]['60031010']['Value'][0]['60031011'], '%s/60031010/1/60031011' % BASE_URL)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
535 CheckBulk(a[0]['60031010']['Value'][1]['60031011'], '%s/60031010/2/60031011' % BASE_URL)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
536 CheckBulk(a[0]['7FE00010'], '%s/7fe00010' % BASE_URL)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
537
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
538 b = DoGetRaw(ORTHANC, '/instances/%s/content/6003-1010/0/6003-1011' % orthanc) [1]
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
539 c = DoGetMultipart(ORTHANC, '%s/60031010/1/60031011' % BASE_URI)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
540
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
541 self.assertEqual(12288, len(b))
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
542 self.assertEqual(1, len(c))
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
543 self.assertEqual(b, c[0])
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
544
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
545
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
546 def test_bitbucket_issue_112(self):
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
547 # Wrong serialization of number values
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
548 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=112
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
549 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/4/
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
550
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
551 UploadInstance(ORTHANC, 'DummyCT.dcm')
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
552 study = '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
553
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
554 # This is the WADO-RS testing
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
555 a = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
556 self.assertEqual(1, len(a))
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
557 self.assertEqual('IS', a[0]['00180091']['vr']) # EchoTrainLength
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
558
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
559 if (sys.version_info >= (3, 0)):
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
560 types = (int)
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
561 else:
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
562 types = (int, long)
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
563
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
564 b = a[0]['00180091']['Value'][0]
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
565 self.assertTrue(isinstance(b, types))
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
566 self.assertEqual(10, b)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
567
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
568 # This is the QIDO-RS testing
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
569 a = DoGet(ORTHANC, '/dicom-web/studies')
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
570 self.assertEqual(1, len(a))
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
571 self.assertEqual('IS', a[0]['00201208']['vr']) # Number of Study Related Instances
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
572
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
573 b = a[0]['00201208']['Value'][0]
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
574 self.assertTrue(isinstance(b, types))
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
575 self.assertEqual(1, b)
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
576
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
577
224
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
578 def test_bitbucket_issue_113(self):
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
579 # Wrong serialization of PN VR
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
580 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=113
224
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
581 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/2/
314
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
582
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
583 # Make sure UTF-8 encoding is used
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
584 self.assertEqual('Utf8', DoPut(ORTHANC, '/tools/default-encoding', 'Utf8'))
224
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
585
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
586 UploadInstance(ORTHANC, 'Encodings/DavidClunie/SCSX1')
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
587 study = '1.3.6.1.4.1.5962.1.2.0.1175775771.5711.0'
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
588
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
589 # This is the WADO-RS testing
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
590 a = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study)
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
591 self.assertEqual(1, len(a))
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
592
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
593 pn = a[0]['00100010'] # Patient name
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
594 self.assertEqual('PN', pn['vr'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
595 self.assertEqual(1, len(pn['Value']))
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
596 self.assertEqual('Wang^XiaoDong', pn['Value'][0]['Alphabetic'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
597 self.assertEqual(u'王^小東', pn['Value'][0]['Ideographic'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
598
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
599 # This is the QIDO-RS testing
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
600 a = DoGet(ORTHANC, '/dicom-web/studies')
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
601 self.assertEqual(1, len(a))
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
602
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
603 pn = a[0]['00100010'] # Patient name
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
604 self.assertEqual('PN', pn['vr'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
605 self.assertEqual(1, len(pn['Value']))
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
606 self.assertEqual('Wang^XiaoDong', pn['Value'][0]['Alphabetic'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
607 self.assertEqual(u'王^小東', pn['Value'][0]['Ideographic'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
608
676
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
609 # new derivated test added later
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
610 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 18, 0):
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
611 a = DoGet(ORTHANC, '/dicom-web/studies?StudyInstanceUID=1.3.6.1.4.1.5962.1.2.0.1175775771.5711.0')
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
612 self.assertEqual(1, len(a))
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
613 pn = a[0]['00100010'] # Patient name
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
614 self.assertEqual('PN', pn['vr'])
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
615 self.assertEqual(1, len(pn['Value']))
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
616 self.assertEqual('Wang^XiaoDong', pn['Value'][0]['Alphabetic']) # before 1.18, one of the 2 values was empty !
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
617 self.assertEqual(u'王^小東', pn['Value'][0]['Ideographic'])
85c1447fa86b DW test for empty PatientName
Alain Mazy <am@orthanc.team>
parents: 673
diff changeset
618
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
619
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
620 def test_bitbucket_issue_96(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
621 # WADO-RS RetrieveFrames rejects valid accept headers
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
622 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=96
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
623 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/5/
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
624
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
625 UploadInstance(ORTHANC, 'Brainix/Epi/IM-0001-0001.dcm')
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
626
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
627 a = DoGet(ORTHANC, '/dicom-web/instances')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
628 self.assertEqual(1, len(a))
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
629 self.assertEqual(256, a[0]['00280010']['Value'][0]) # Rows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
630 self.assertEqual(256, a[0]['00280011']['Value'][0]) # Columns
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
631 self.assertEqual(16, a[0]['00280100']['Value'][0]) # Bits allocated
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
632
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
633 url = a[0]['00081190']['Value'][0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
634
278
514785dacd6d fix dicomweb tests with debian
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 277
diff changeset
635 prefix = 'http://%s:%s' % (args.server, args.rest)
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
636 self.assertTrue(url.startswith(prefix))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
637 uri = url[len(prefix):]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
638
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
639 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 0)))
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
640 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 2)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
641
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
642 b = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1))
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
643 self.assertEqual(1, len(b))
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
644 self.assertEqual(256 * 256 * 2, len(b[0]))
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
645 self.assertEqual('ce394eb4d4de4eeef348436108101f3b', ComputeMD5(b[0]))
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
646
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
647 c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
648 headers = { 'Accept' : 'multipart/related; type=application/octet-stream' })
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
649 self.assertEqual(1, len(c))
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
650 self.assertEqual(b[0], c[0])
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
651 self.assertEqual('ce394eb4d4de4eeef348436108101f3b', ComputeMD5(c[0]))
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
652
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
653 c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
654 headers = { 'Accept' : 'multipart/related; type="application/octet-stream"' })
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
655 self.assertEqual(1, len(c))
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
656 self.assertEqual(b[0], c[0])
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
657 self.assertEqual('ce394eb4d4de4eeef348436108101f3b', ComputeMD5(c[0]))
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
658
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
659 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
660 headers = { 'Accept' : 'multipart/related; type="nope"' }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
661
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
662 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
663 headers = { 'Accept' : 'multipart/related; type=nope' }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
664
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
665 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
666 headers = { 'Accept' : 'nope' }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
667
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
668
608
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
669 def test_bugzilla_219(self):
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
670 # WADO-RS RetrieveFrames shall transcode ExplicitBigEndian to ExplicitLittleEndian
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
671 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=219
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
672
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
673 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 17, 0):
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
674
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
675 UploadInstance(ORTHANC, 'TransferSyntaxes/1.2.840.10008.1.2.2.dcm')
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
676
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
677 r = DoGetMultipart(ORTHANC, '/dicom-web/studies/1.2.840.113619.2.21.848.246800003.0.1952805748.3/series/1.2.840.113619.2.21.24680000.700.0.1952805748.3.0/instances/1.2.840.1136190195280574824680000700.3.0.1.19970424140438/frames/1', {}, True )
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
678 self.assertIn('transfer-syntax=1.2.840.10008.1.2.1', r[0][1]['Content-Type'])
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
679
ba06331ac8dd new test for issue 219
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
680
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
681 def test_qido_fields(self):
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
682 UploadInstance(ORTHANC, 'DummyCT.dcm')
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
683
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
684 a = DoGet(ORTHANC, '/dicom-web/studies')
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
685 self.assertEqual(1, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
686 self.assertFalse('00280010' in a[0]) # Rows
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
687
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
688 a = DoGet(ORTHANC, '/dicom-web/studies?includefield=Rows')
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
689 self.assertEqual(1, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
690 self.assertTrue('00280010' in a[0])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
691 self.assertEqual(512, a[0]['00280010']['Value'][0])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
692
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
693 a = DoGet(ORTHANC, '/dicom-web/studies?Rows=128')
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
694 self.assertEqual(0, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
695
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
696 a = DoGet(ORTHANC, '/dicom-web/studies?Rows=512')
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
697 self.assertEqual(1, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
698 self.assertTrue('00280010' in a[0])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
699 self.assertEqual(512, a[0]['00280010']['Value'][0])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
700
654
3117e3f73b9a qido-rs sequence
Alain Mazy <am@orthanc.team>
parents: 649
diff changeset
701 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 17, 0):
3117e3f73b9a qido-rs sequence
Alain Mazy <am@orthanc.team>
parents: 649
diff changeset
702 a = DoGet(ORTHANC, '/dicom-web/studies/1.2.840.113619.2.176.2025.1499492.7391.1171285944.390/series/1.2.840.113619.2.176.2025.1499492.7391.1171285944.394/instances?includefield=00081140')
3117e3f73b9a qido-rs sequence
Alain Mazy <am@orthanc.team>
parents: 649
diff changeset
703 self.assertEqual(1, len(a))
3117e3f73b9a qido-rs sequence
Alain Mazy <am@orthanc.team>
parents: 649
diff changeset
704 self.assertTrue('00081140' in a[0])
3117e3f73b9a qido-rs sequence
Alain Mazy <am@orthanc.team>
parents: 649
diff changeset
705 self.assertEqual(2, len(a[0]['00081140']['Value']))
3117e3f73b9a qido-rs sequence
Alain Mazy <am@orthanc.team>
parents: 649
diff changeset
706 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286241.719', a[0]['00081140']['Value'][0]['00081155']['Value'][0])
3117e3f73b9a qido-rs sequence
Alain Mazy <am@orthanc.team>
parents: 649
diff changeset
707
3117e3f73b9a qido-rs sequence
Alain Mazy <am@orthanc.team>
parents: 649
diff changeset
708
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
709
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
710 def test_stow_errors(self):
398
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
711 def CheckSequences(a):
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
712 self.assertEqual(3, len(a))
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
713 self.assertTrue('00080005' in a)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
714 self.assertTrue('00081198' in a)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
715 self.assertTrue('00081199' in a)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
716 self.assertEqual('CS', a['00080005']['vr'])
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
717 self.assertEqual('SQ', a['00081198']['vr'])
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
718 self.assertEqual('SQ', a['00081199']['vr'])
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
719
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
720 # Pushing an instance to a study that is not its parent
398
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
721 (status, a) = SendStowRaw(ORTHANC, args.dicomweb + '/studies/nope', GetDatabasePath('Phenix/IM-0001-0001.dcm'))
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
722 self.assertEqual(409, status)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
723 CheckSequences(a)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
724
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
725 self.assertFalse('Value' in a['00081199']) # No success instance
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
726
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
727 self.assertEqual(1, len(a['00081198']['Value'])) # One failed instance
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
728 self.assertEqual('1.2.840.10008.5.1.4.1.1.2',
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
729 a['00081198']['Value'][0]['00081150']['Value'][0])
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
730 self.assertEqual('1.2.840.113704.7.1.1.6632.1127829031.2',
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
731 a['00081198']['Value'][0]['00081155']['Value'][0])
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
732 self.assertEqual(0x0110, # Processing failure
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
733 a['00081198']['Value'][0]['00081197']['Value'][0])
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
734
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
735 # Pushing an instance with missing tags
398
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
736 (status, a) = SendStowRaw(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Issue111.dcm'))
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
737 self.assertEqual(400, status)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
738 CheckSequences(a)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
739
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
740 self.assertFalse('Value' in a['00081198']) # No failed instance, as tags are missing
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
741 self.assertFalse('Value' in a['00081199']) # No success instance
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
742
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
743 # Pushing a file that is not in the DICOM format
398
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
744 (status, a) = SendStowRaw(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Issue111.dump'))
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
745 self.assertEqual(400, status)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
746 CheckSequences(a)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
747
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
748 self.assertFalse('Value' in a['00081198']) # No failed instance, as non-DICOM
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
749 self.assertFalse('Value' in a['00081199']) # No success instance
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
750
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
751 # Pushing a DICOM instance with only SOP class and instance UID
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
752 (status, a) = SendStowRaw(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Issue196.dcm'))
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
753 self.assertEqual(400, status)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
754 CheckSequences(a)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
755
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
756 self.assertFalse('Value' in a['00081199']) # No success instance
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
757
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
758 self.assertEqual(1, len(a['00081198']['Value'])) # One failed instance
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
759 self.assertEqual('1.2.840.10008.5.1.4.1.1.4',
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
760 a['00081198']['Value'][0]['00081150']['Value'][0])
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
761 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109',
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
762 a['00081198']['Value'][0]['00081155']['Value'][0])
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
763 self.assertEqual(0xC000, # Error: Cannot understand (cannot understand certain Data Elements)
9528e2a03d3c adapt DICOMweb tests following fix of issue 196 (STOW-RS: Should return 200 only when successfully stored all instances)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 388
diff changeset
764 a['00081198']['Value'][0]['00081197']['Value'][0])
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
765
239
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
766
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
767 def test_allowed_methods(self):
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
768 self.assertEqual(0, len(DoGet(ORTHANC, '/dicom-web/studies')))
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
769
549
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
770 e = DoPutRaw(ORTHANC, '/dicom-web/studies')
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
771 self.assertEqual(405, int(e[0]['status']))
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
772 self.assertEqual('GET,POST', e[0]['allow'])
239
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
773
549
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
774 e = DoDeleteRaw(ORTHANC, '/dicom-web/studies')
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
775 self.assertEqual(405, int(e[0]['status']))
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
776 self.assertEqual('GET,POST', e[0]['allow'])
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
777
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
778
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
779 def test_add_server(self):
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
780 try:
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
781 DoDelete(ORTHANC, '/dicom-web/servers/hello')
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
782 except:
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
783 pass
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
784
277
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
785 try:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
786 DoDelete(ORTHANC, '/dicom-web/servers/google') # If "AllWindowsStart.sh" is used
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
787 except:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
788 pass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 276
diff changeset
789
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
790 l = DoGet(ORTHANC, '/dicom-web/servers')
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
791 self.assertEqual(1, len(l))
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
792 self.assertTrue('sample' in l)
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
793
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
794 url = 'http://localhost:8042/dicom-web/'
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
795 DoPut(ORTHANC, '/dicom-web/servers/hello', {
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
796 'Url': url,
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
797 'HttpHeaders' : {
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
798 'Hello' : 'World'
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
799 },
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
800 'Username' : 'bob',
242
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 241
diff changeset
801 'Password' : 'password',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 241
diff changeset
802 'UserProperty' : 'Test',
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
803 'HasDelete' : True,
381
fd6d805eae37 new option "Timeout" in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 367
diff changeset
804 'Timeout' : 66 # New in 1.6
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
805 })
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
806
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
807 l = DoGet(ORTHANC, '/dicom-web/servers')
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
808 self.assertEqual(2, len(l))
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
809 self.assertTrue('sample' in l)
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
810 self.assertTrue('hello' in l)
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
811
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
812 o = DoGet(ORTHANC, '/dicom-web/servers/sample')
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
813 self.assertEqual(5, len(o))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
814 self.assertTrue('stow' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
815 self.assertTrue('retrieve' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
816 self.assertTrue('get' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
817 self.assertTrue('wado' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
818 self.assertTrue('qido' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
819
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
820 o = DoGet(ORTHANC, '/dicom-web/servers/hello')
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
821 self.assertEqual(6, len(o))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
822 self.assertTrue('stow' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
823 self.assertTrue('retrieve' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
824 self.assertTrue('get' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
825 self.assertTrue('wado' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
826 self.assertTrue('qido' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
827 self.assertTrue('delete' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
828
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
829 s = DoGet(ORTHANC, '/dicom-web/servers?expand')
381
fd6d805eae37 new option "Timeout" in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 367
diff changeset
830 self.assertEqual(8, len(s['hello']))
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
831 self.assertEqual(url, s['hello']['Url'])
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
832 self.assertEqual('bob', s['hello']['Username'])
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
833 self.assertEqual(None, s['hello']['Password'])
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
834 self.assertFalse(s['hello']['Pkcs11'])
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
835 self.assertEqual(1, len(s['hello']['HttpHeaders']))
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
836 self.assertTrue('Hello' in s['hello']['HttpHeaders'])
242
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 241
diff changeset
837 self.assertEqual('Test', s['hello']['UserProperty'])
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
838 self.assertEqual('1', s['hello']['HasDelete'])
388
3ef44d201875 revert incorrect changeset 386
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 386
diff changeset
839 self.assertEqual(66, s['hello']['Timeout']) # New in 1.6 (interpreted as a string in <= 1.5)
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
840
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
841 DoDelete(ORTHANC, '/dicom-web/servers/hello')
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
842
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
843
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
844 def test_bitbucket_issue_143(self):
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
845 # WADO-RS metadata request returns "500 Internal Server Error"
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
846 # instead of "404 Not Found" for missing instance
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
847 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=143
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
848 UploadInstance(ORTHANC, 'Issue143.dcm')
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
849
549
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
850 e = DoGetRaw(ORTHANC, '/dicom-web/studies/1.2.840.113619.2.55.3.671756986.106.1316467036.460/series/1.2.840.113619.2.55.3.671756986.106.1316467036.465/instances/0.0.0.0.0/metadata')
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
851 self.assertEqual(404, int(e[0]['status']))
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
852
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
853 DoGet(ORTHANC, '/dicom-web/studies/1.3.6.1.4.1.34261.90254037371867.41912.1553085024.2/series/1.3.6.1.4.1.34261.90254037371867.41912.1553085024.3/instances/1.2.276.0.7230010.3.1.4.253549293.36648.1555586123.754/metadata')
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
854
549
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
855 e = DoGetRaw(ORTHANC, '/dicom-web/studies/0.0.0.0.0/series/1.3.6.1.4.1.34261.90254037371867.41912.1553085024.3/instances/1.2.276.0.7230010.3.1.4.253549293.36648.1555586123.754/metadata')
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
856 self.assertEqual(404, int(e[0]['status']))
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
857
549
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
858 e = DoGetRaw(ORTHANC, '/dicom-web/studies/1.3.6.1.4.1.34261.90254037371867.41912.1553085024.2/series/0.0.0.0.0/instances/1.2.276.0.7230010.3.1.4.253549293.36648.1555586123.754/metadata')
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
859 self.assertEqual(404, int(e[0]['status']))
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
860
549
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
861 e = DoGetRaw(ORTHANC, '/dicom-web/studies/0.0.0.0.0/series/0.0.0.0.0/instances/0.0.0.0.0/metadata')
bcd87bf59630 fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
862 self.assertEqual(404, int(e[0]['status']))
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
863
248
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
864
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
865 def test_encodings_qido(self):
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
866 # The "DefaultEncoding" condifuration option is set to "UTF8"
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
867 # in the integration tests, so all the QIDO-RS requests must
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
868 # lead to a "ISO_IR 192" specific character set
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
869 def GetPatientName(dicom, onlyAlphabetic):
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
870 i = UploadInstance(ORTHANC, dicom) ['ID']
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
871 j = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['StudyInstanceUID']
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
872 qido = DoGet(ORTHANC, '/dicom-web/studies?0020000D=%s' % j)
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
873 self.assertEqual(1, len(qido))
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
874 self.assertEqual('CS', qido[0]['00080005']['vr'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
875 self.assertEqual('ISO_IR 192', qido[0]['00080005']['Value'][0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
876 if onlyAlphabetic:
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
877 self.assertEqual(1, len(qido[0]['00100010']['Value'][0]))
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
878 else:
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
879 self.assertEqual(3, len(qido[0]['00100010']['Value'][0]))
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
880 return qido[0]['00100010']['Value'][0]
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
881
314
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
882 # Make sure UTF-8 encoding is used
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
883 self.assertEqual('Utf8', DoPut(ORTHANC, '/tools/default-encoding', 'Utf8'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
884
248
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
885 # Check out "test_issue_95_encodings" in "../../Tests/Tests.py"
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
886
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
887 self.assertEqual(u'Buc^Jérôme', GetPatientName('Encodings/DavidClunie/SCSFREN', True) ['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
888 self.assertEqual(u'Äneas^Rüdiger', GetPatientName('Encodings/DavidClunie/SCSGERM', True)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
889 self.assertEqual(u'Διονυσιος', GetPatientName('Encodings/DavidClunie/SCSGREEK', True)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
890 self.assertEqual(u'Люкceмбypг', GetPatientName('Encodings/DavidClunie/SCSRUSS', True)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
891 self.assertEqual(u'שרון^דבורה', GetPatientName('Encodings/DavidClunie/SCSHBRW', True)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
892 self.assertEqual(u'قباني^لنزار', GetPatientName('Encodings/DavidClunie/SCSARAB', True)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
893
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
894 self.assertEqual(u'Hong^Gildong', GetPatientName('Encodings/DavidClunie/SCSI2', False)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
895 self.assertEqual(u'洪^吉洞', GetPatientName('Encodings/DavidClunie/SCSI2', False)['Ideographic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
896 self.assertEqual(u'홍^길동', GetPatientName('Encodings/DavidClunie/SCSI2', False)['Phonetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
897 self.assertEqual(u'Wang^XiaoDong', GetPatientName('Encodings/DavidClunie/SCSX2', False)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
898 self.assertEqual(u'王^小东', GetPatientName('Encodings/DavidClunie/SCSX2', False)['Ideographic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
899 self.assertEqual(u'', GetPatientName('Encodings/DavidClunie/SCSX2', False)['Phonetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
900 self.assertEqual(u'Wang^XiaoDong', GetPatientName('Encodings/DavidClunie/SCSX1', False)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
901 self.assertEqual(u'王^小東', GetPatientName('Encodings/DavidClunie/SCSX1', False)['Ideographic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
902 self.assertEqual(u'', GetPatientName('Encodings/DavidClunie/SCSX1', False)['Phonetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
903 self.assertEqual(u'Yamada^Tarou', GetPatientName('Encodings/DavidClunie/SCSH31', False)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
904 self.assertEqual(u'山田^太郎', GetPatientName('Encodings/DavidClunie/SCSH31', False)['Ideographic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
905 self.assertEqual(u'やまだ^たろう', GetPatientName('Encodings/DavidClunie/SCSH31', False)['Phonetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
906 self.assertEqual(u'ヤマダ^タロウ', GetPatientName('Encodings/DavidClunie/SCSH32', False)['Alphabetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
907
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
908 # TODO - Not supported yet by the Orthanc core as of 1.5.7
248
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
909 #self.assertEqual(u'山田^太郎', GetPatientName('Encodings/DavidClunie/SCSH32')['Ideographic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
910 #self.assertEqual(u'やまだ^たろう', GetPatientName('Encodings/DavidClunie/SCSH32')['Phonetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
911
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
912
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
913 def test_encodings_wado_metadata(self):
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
914 # If querying the instance metadata, the "DefaultEncoding"
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
915 # configuration is not used, but the actual encoding
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
916 def GetEncoding(dicom, length):
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
917 qido = DoGet(ORTHANC, '/dicom-web/%s/metadata' % UploadAndGetWadoPath(dicom))
248
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
918 self.assertEqual(1, len(qido))
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
919 self.assertEqual(length, len(qido[0]['00080005']['Value']))
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
920 self.assertEqual('CS', qido[0]['00080005']['vr'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
921 return qido[0]['00080005']['Value']
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
922
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
923 self.assertEqual('ISO_IR 100', GetEncoding('Encodings/DavidClunie/SCSFREN', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
924 self.assertEqual('ISO_IR 100', GetEncoding('Encodings/DavidClunie/SCSGERM', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
925 self.assertEqual('ISO_IR 126', GetEncoding('Encodings/DavidClunie/SCSGREEK', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
926 self.assertEqual('ISO_IR 144', GetEncoding('Encodings/DavidClunie/SCSRUSS', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
927 self.assertEqual('ISO_IR 138', GetEncoding('Encodings/DavidClunie/SCSHBRW', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
928 self.assertEqual('ISO_IR 127', GetEncoding('Encodings/DavidClunie/SCSARAB', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
929 self.assertEqual('ISO 2022 IR 149', GetEncoding('Encodings/DavidClunie/SCSI2', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
930 self.assertEqual('GB18030', GetEncoding('Encodings/DavidClunie/SCSX2', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
931 self.assertEqual('ISO_IR 192', GetEncoding('Encodings/DavidClunie/SCSX1', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
932 self.assertEqual('ISO 2022 IR 87', GetEncoding('Encodings/DavidClunie/SCSH31', 1)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
933 self.assertEqual('ISO 2022 IR 13', GetEncoding('Encodings/DavidClunie/SCSH32', 2)[0])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
934 self.assertEqual('ISO 2022 IR 87', GetEncoding('Encodings/DavidClunie/SCSH32', 2)[1])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
935
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
936
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
937 def test_rendered(self):
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
938 def RenderFrame(path, i):
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
939 return DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
940 'Uri' : '%s/frames/%d/rendered' % (path, i)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
941 })
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
942
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
943 # This image has 76 frames
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
944 path = UploadAndGetWadoPath('Multiframe.dcm')
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
945
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
946 self.assertRaises(Exception, lambda: RenderFrame(path, 0))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
947
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
948 frame1 = RenderFrame(path, 1)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
949 im = UncompressImage(frame1)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
950 self.assertEqual("L", im.mode)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
951 self.assertEqual(512, im.size[0])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
952 self.assertEqual(512, im.size[1])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
953
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
954 im = UncompressImage(RenderFrame(path, 76))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
955 self.assertEqual("L", im.mode)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
956 self.assertEqual(512, im.size[0])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
957 self.assertEqual(512, im.size[1])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
958
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
959 self.assertRaises(Exception, lambda: RenderFrame(path, 77))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
960
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
961 defaultFrame = DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
962 'Uri' : '%s/rendered' % path
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
963 })
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
964
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
965 self.assertEqual(len(frame1), len(defaultFrame))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
966 self.assertEqual(frame1, defaultFrame)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
967
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
968
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
969 # This image has 1 frame
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
970 path = UploadAndGetWadoPath('Phenix/IM-0001-0001.dcm')
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
971
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
972 self.assertRaises(Exception, lambda: RenderFrame(path, 0))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
973 self.assertRaises(Exception, lambda: RenderFrame(path, 2))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
974
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
975 frame1 = RenderFrame(path, 1)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
976 im = UncompressImage(frame1)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
977 self.assertEqual("L", im.mode)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
978 self.assertEqual(512, im.size[0])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
979 self.assertEqual(358, im.size[1])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
980
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
981 defaultFrame = DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
982 'Uri' : '%s/rendered' % path
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
983 })
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
984
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
985 self.assertEqual(len(frame1), len(defaultFrame))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
986 self.assertEqual(frame1, defaultFrame)
259
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
987
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
988
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
989 def test_qido_parent_attributes(self):
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
990 UploadInstance(ORTHANC, 'Brainix/Flair/IM-0001-0001.dcm')
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
991 study = '2.16.840.1.113669.632.20.1211.10000357775'
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
992 series = '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497'
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
993 instance = '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549'
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
994
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
995 a = DoGet(ORTHANC, '/dicom-web/studies')
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
996 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
997 self.assertFalse('00080018' in a[0]) # SOPInstanceUID
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
998 self.assertFalse('0020000E' in a[0]) # SeriesInstanceUID
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
999 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1000 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic'])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1001
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1002 a = DoGet(ORTHANC, '/dicom-web/studies?0020000D=%s' % study)
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1003 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1004 self.assertFalse('00080018' in a[0]) # SOPInstanceUID
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1005 self.assertFalse('0020000E' in a[0]) # SeriesInstanceUID
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1006 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1007 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic'])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1008
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1009 a = DoGet(ORTHANC, '/dicom-web/series')
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1010 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1011 self.assertFalse('00080018' in a[0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1012 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1013 self.assertEqual(series, a[0]['0020000E']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1014 self.assertEqual('MR', a[0]['00080060']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1015 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic'])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1016
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1017 a = DoGet(ORTHANC, '/dicom-web/instances')
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1018 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1019 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1020 self.assertEqual(series, a[0]['0020000E']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1021 self.assertEqual(instance, a[0]['00080018']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1022 self.assertEqual('MR', a[0]['00080060']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1023 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic'])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1024
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1025 a = DoGet(ORTHANC, '/dicom-web/studies/%s/series' % study)
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1026 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1027 self.assertFalse('00080018' in a[0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1028 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1029 self.assertEqual(series, a[0]['0020000E']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1030 self.assertEqual('MR', a[0]['00080060']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1031 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic'])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1032
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1033 a = DoGet(ORTHANC, '/dicom-web/studies/%s/series/%s/instances' % (study, series))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1034 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1035 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1036 self.assertEqual(series, a[0]['0020000E']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1037 self.assertEqual(instance, a[0]['00080018']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1038 self.assertEqual('MR', a[0]['00080060']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1039 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic'])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1040
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1041 # "If {StudyInstanceUID} is not specified, all Study-level
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1042 # attributes specified in Table 6.7.1-2" => Here,
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1043 # {StudyInstanceUID} *is* specified, so we must *not* get the
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1044 # PatientName.
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1045 # http://dicom.nema.org/medical/dicom/2019a/output/html/part18.html#table_6.7.1-2a
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1046 a = DoGet(ORTHANC, '/dicom-web/series?0020000D=%s' % study)
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1047 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1048 self.assertFalse('00100010' in a[0]) # PatientName
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1049 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1050 self.assertEqual(series, a[0]['0020000E']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1051 self.assertEqual('MR', a[0]['00080060']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1052
487
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1053 # if we ask explicitely for the Patient and Study tags, we must get it
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1054 a = DoGet(ORTHANC, '/dicom-web/series?0020000D=%s&includefield=00100010&includefield=00080020' % study)
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1055 self.assertEqual(1, len(a))
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1056 self.assertTrue('00100010' in a[0]) # PatientName
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1057 self.assertTrue('00080020' in a[0]) # StudyDate
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1058
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1059 # if {StudyInstanceUID} *is not* specified, we must get the PatientName
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1060 a = DoGet(ORTHANC, '/dicom-web/series')
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1061 self.assertTrue('00100010' in a[0]) # PatientName
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1062
259
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1063 # http://dicom.nema.org/medical/dicom/2019a/output/html/part18.html#table_6.7.1-2b
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1064 a = DoGet(ORTHANC, '/dicom-web/instances?0020000D=%s' % study)
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1065 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1066 self.assertFalse('00100010' in a[0]) # PatientName
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1067 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1068 self.assertEqual(series, a[0]['0020000E']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1069 self.assertEqual('MR', a[0]['00080060']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1070
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1071 a = DoGet(ORTHANC, '/dicom-web/instances?0020000E=%s' % series)
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1072 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1073 self.assertFalse('00080060' in a[0]) # Modality
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1074 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1075 self.assertEqual(series, a[0]['0020000E']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1076 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic'])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1077
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1078 a = DoGet(ORTHANC, '/dicom-web/instances?0020000D=%s&0020000E=%s' % (study, series))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1079 self.assertEqual(1, len(a))
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1080 self.assertFalse('00100010' in a[0]) # PatientName
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1081 self.assertFalse('00080060' in a[0]) # Modality
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1082 self.assertEqual(study, a[0]['0020000D']['Value'][0])
298f80c6ccc4 test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 249
diff changeset
1083 self.assertEqual(series, a[0]['0020000E']['Value'][0])
261
b8cdb0aef4b9 test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
1084
487
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1085 # if we ask explicitely for the Patient and Study tags, we must get it
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1086 a = DoGet(ORTHANC, '/dicom-web/instances?0020000D=%s&includefield=00100010&includefield=00080020' % study)
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1087 self.assertEqual(1, len(a))
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1088 self.assertTrue('00100010' in a[0]) # PatientName
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1089 self.assertTrue('00080020' in a[0]) # StudyDate
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1090
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1091 # if {StudyInstanceUID} *is not* specified, we must get all Study, Series and Patient tags
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1092 a = DoGet(ORTHANC, '/dicom-web/instances')
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1093 self.assertTrue('00100010' in a[0]) # PatientName
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1094 self.assertTrue('00080020' in a[0]) # StudyDate
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1095 self.assertTrue('00080060' in a[0]) # Modality
18f2d55182fd more dicom-web tests
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1096
261
b8cdb0aef4b9 test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
1097
270
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1098 #@unittest.skip("Skip this test on GDCM 2.8.4")
261
b8cdb0aef4b9 test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
1099 def test_bitbucket_issue_164(self):
270
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1100 # WARNING - This makes GDCM 2.8.4 crash
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
1101 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=164
261
b8cdb0aef4b9 test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
1102 UploadInstance(ORTHANC, 'Issue164.dcm')
b8cdb0aef4b9 test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
1103
b8cdb0aef4b9 test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
1104 p = DoGetMultipart(ORTHANC, 'dicom-web/studies/1.2.276.0.26.1.1.1.2.2020.45.52293.1506048/series/1.2.276.0.26.1.1.1.2.2020.45.52293.6384450/instances/1.2.276.0.26.1.1.1.2.2020.45.52366.2551599.179568640/frames/5')
b8cdb0aef4b9 test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
1105 self.assertEqual(1, len(p))
b8cdb0aef4b9 test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
1106 self.assertEqual(743 * 975 * 3, len(p[0]))
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1107
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1108 metadata = DoGet(ORTHANC, 'dicom-web/studies/1.2.276.0.26.1.1.1.2.2020.45.52293.1506048/series/1.2.276.0.26.1.1.1.2.2020.45.52293.6384450/instances/1.2.276.0.26.1.1.1.2.2020.45.52366.2551599.179568640/metadata')
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1109 self.assertEqual("YBR_FULL_422", metadata[0]['00280004']['Value'][0])
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1110
543
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1111 # TODO
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1112 # # starting from X.XX.X, Orthanc won't convert YBR to RGB anymore -> new checksum (https://discourse.orthanc-server.org/t/orthanc-convert-ybr-to-rgb-but-does-not-change-metadata/3533)
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1113 # if IsOrthancVersionAbove(ORTHANC, 1, XX, 1):
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1114 # expectedDcmtkChecksum = '7535a11e7da0fa590c467ac9d323c5c1'
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1115 # else:
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1116 expectedDcmtkChecksum = 'b3662c4bfa24a0c73abb08548c63319b'
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1117
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1118 if HasGdcmPlugin(ORTHANC):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1119 self.assertTrue(ComputeMD5(p[0]) in [
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1120 'b952d67da9ff004b0adae3982e89d620', # GDCM >= 3.0
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1121 expectedDcmtkChecksum # Fallback to DCMTK
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1122 ])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1123 else:
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1124 self.assertEqual(expectedDcmtkChecksum, ComputeMD5(p[0])) # DCMTK
270
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1125
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1126
271
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 270
diff changeset
1127 def test_bitbucket_issue_168(self):
276
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 275
diff changeset
1128 # "Plugins can't read private tags from the configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 275
diff changeset
1129 # file" This test will fail if DCMTK <= 3.6.1 (e.g. on Ubuntu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 275
diff changeset
1130 # 16.04), or if Orthanc <= 1.5.8
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
1131 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=168
270
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1132
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1133 UploadInstance(ORTHANC, 'Issue168.dcm')
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1134
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1135 a = DoGet(ORTHANC, '/dicom-web/studies')
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1136 self.assertEqual(1, len(a))
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1137 self.assertFalse('00090010' in a[0])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1138 self.assertFalse('00091001' in a[0])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1139 self.assertEqual('20170404', a[0]['00080020']['Value'][0])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1140
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1141 a = DoGet(ORTHANC, '/dicom-web/studies?includefield=00091001')
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1142 self.assertEqual(1, len(a))
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1143 self.assertFalse('00090010' in a[0])
325
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1144 self.assertTrue('00091001' in a[0]) # This fails if DCMTK <= 3.6.1
270
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1145 self.assertEqual('DS', a[0]['00091001']['vr'])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1146 self.assertEqual(1, len(a[0]['00091001']['Value']))
698
7282c2df963d tests for new DICOMWeb JSON DS handling
Alain Mazy <am@orthanc.team>
parents: 683
diff changeset
1147 if IsOrthancVersionAbove(ORTHANC, 1, 12, 5) and DoGet(ORTHANC, '/system')['ApiVersion'] >= 26:
7282c2df963d tests for new DICOMWeb JSON DS handling
Alain Mazy <am@orthanc.team>
parents: 683
diff changeset
1148 self.assertEqual("98.41", a[0]['00091001']['Value'][0])
7282c2df963d tests for new DICOMWeb JSON DS handling
Alain Mazy <am@orthanc.team>
parents: 683
diff changeset
1149 else:
7282c2df963d tests for new DICOMWeb JSON DS handling
Alain Mazy <am@orthanc.team>
parents: 683
diff changeset
1150 self.assertAlmostEqual(98.41, a[0]['00091001']['Value'][0])
270
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1151
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1152 a = DoGet(ORTHANC, '/dicom-web/studies?00090010=Lunit&includefield=00091001')
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1153 self.assertEqual(1, len(a))
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1154 self.assertTrue('00090010' in a[0])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1155 self.assertEqual('LO', a[0]['00090010']['vr'])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1156 self.assertEqual(1, len(a[0]['00090010']['Value']))
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1157 self.assertEqual('Lunit', a[0]['00090010']['Value'][0])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1158 self.assertTrue('00091001' in a[0])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1159 self.assertEqual('DS', a[0]['00091001']['vr'])
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1160 self.assertEqual(1, len(a[0]['00091001']['Value']))
698
7282c2df963d tests for new DICOMWeb JSON DS handling
Alain Mazy <am@orthanc.team>
parents: 683
diff changeset
1161 if IsOrthancVersionAbove(ORTHANC, 1, 12, 5) and DoGet(ORTHANC, '/system')['ApiVersion'] >= 26:
7282c2df963d tests for new DICOMWeb JSON DS handling
Alain Mazy <am@orthanc.team>
parents: 683
diff changeset
1162 self.assertEqual("98.41", a[0]['00091001']['Value'][0])
7282c2df963d tests for new DICOMWeb JSON DS handling
Alain Mazy <am@orthanc.team>
parents: 683
diff changeset
1163 else:
7282c2df963d tests for new DICOMWeb JSON DS handling
Alain Mazy <am@orthanc.team>
parents: 683
diff changeset
1164 self.assertAlmostEqual(98.41, a[0]['00091001']['Value'][0])
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
1165
270
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1166 a = DoGet(ORTHANC, '/dicom-web/studies?00090010=Lunit2&includefield=00091001')
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1167 self.assertEqual(0, len(a))
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1168
082f35cb4459 test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 261
diff changeset
1169
272
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1170 def test_rendered_studies_series(self):
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1171 i = UploadInstance(ORTHANC, 'Phenix/IM-0001-0001.dcm') ['ID']
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1172 study = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['StudyInstanceUID']
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1173 series = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['SeriesInstanceUID']
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1174 instance = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['SOPInstanceUID']
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1175
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1176 a = DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1177 'Uri' : '/studies/%s/series/%s/instances/%s/rendered' % (study, series, instance)
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1178 })
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1179
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1180 im = UncompressImage(a)
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1181 self.assertEqual("L", im.mode)
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1182 self.assertEqual(512, im.size[0])
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1183 self.assertEqual(358, im.size[1])
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1184
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1185 b = DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1186 'Uri' : '/studies/%s/series/%s/rendered' % (study, series)
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1187 })
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1188
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1189 self.assertEqual(len(a), len(b))
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1190 self.assertEqual(a, b)
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1191
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1192 c = DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1193 'Uri' : '/studies/%s/rendered' % study
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1194 })
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1195
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1196 self.assertEqual(len(a), len(c))
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1197 self.assertEqual(a, c)
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1198
a94b0409fdac test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 271
diff changeset
1199
273
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1200 def test_multiple_mime_accept_wado_rs(self):
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1201 # "Multiple MIME type Accept Headers for Wado-RS"
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1202 # https://groups.google.com/forum/#!msg/orthanc-users/P3B6J9abZpE/syn5dnW2AwAJ
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1203
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1204 UploadInstance(ORTHANC, 'DummyCT.dcm')
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1205 study = '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1206
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1207 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study)))
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1208
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1209 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1210 headers = { 'Accept' : 'application/json, application/dicom+json' })))
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1211
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1212 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
274
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1213 headers = { 'Accept' : 'application/json' })))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1214
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1215 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1216 headers = { 'Accept' : 'application/dicom+json' })))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1217
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1218 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
273
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1219 headers = { 'Accept' : 'toto, application/dicom+json' })))
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1220
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1221 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1222 headers = { 'Accept' : 'application/json, tata' })))
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1223
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1224 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
274
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1225 headers = { 'Accept' : 'toto' }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1226
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 273
diff changeset
1227 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
273
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1228 headers = { 'Accept' : 'toto, tata' }))
275
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1229
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1230 # https://groups.google.com/d/msg/orthanc-users/9o5kItsMQI0/Og6B27YyBgAJ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1231 self.assertEqual(1, len(DoGetMultipart(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1232 headers = { 'Accept' : 'multipart/related;type=application/dicom+xml' })))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1233
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1234 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1235 headers = { 'Accept' : 'application/json, application/dicom+xml' })))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1236
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1237 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 274
diff changeset
1238 headers = { 'Accept' : 'application/dicom+xml, application/json' })))
284
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1239
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1240
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1241
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1242 def test_bitbucket_issue_56(self):
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1243 # "Case-insensitive matching over accents" => DICOMweb part
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1244 # from AlexanderM on 2020-03-20
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
1245 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=56
284
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1246 UploadInstance(ORTHANC, 'Issue56-NoPixelData.dcm')
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1247
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1248 self.assertEqual(1, len(DoPost(ORTHANC, '/tools/find', {
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1249 'Level' : 'Patient',
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1250 'Query' : {
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1251 'PatientName' : 'Гусева*',
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1252 },
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1253 })))
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1254
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1255 self.assertEqual(1, len(DoPost(ORTHANC, '/tools/find', {
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1256 'Level' : 'Patient',
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1257 'Query' : {
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1258 'PatientName' : 'гусева*',
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1259 },
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1260 })))
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1261
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1262 self.assertEqual(1, len(DoGet(ORTHANC, u'/dicom-web/studies?PatientName=Гусева*',
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1263 headers = { 'accept' : 'application/json' })))
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1264
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1265 # This line is the issue
284
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1266 self.assertEqual(1, len(DoGet(ORTHANC, u'/dicom-web/studies?PatientName=гусева*',
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1267 headers = { 'accept' : 'application/json' })))
7fa5c7a03137 added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 278
diff changeset
1268
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1269
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1270 def test_frames_transcoding(self):
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1271 ACCEPT = {
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1272 '1.2.840.10008.1.2' : 'multipart/related; type=application/octet-stream; transfer-syntax=1.2.840.10008.1.2',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1273 '1.2.840.10008.1.2.1' : 'multipart/related; type=application/octet-stream; transfer-syntax=1.2.840.10008.1.2.1',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1274 '1.2.840.10008.1.2.4.50' : 'multipart/related; type=image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.50',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1275 '1.2.840.10008.1.2.4.51' : 'multipart/related; type=image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.51',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1276 '1.2.840.10008.1.2.4.57' : 'multipart/related; type=image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.57',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1277 '1.2.840.10008.1.2.4.70' : 'multipart/related; type=image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.70',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1278 }
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1279
321
3c8c6b41eec4 dealing with Content-Location in test_frames_transcoding of DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 319
diff changeset
1280 uri = 'dicom-web%s' % UploadAndGetWadoPath('TransferSyntaxes/1.2.840.10008.1.2.4.50.dcm')
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1281 truthRGB = Image.open(GetDatabasePath('TransferSyntaxes/1.2.840.10008.1.2.4.50.png'))
543
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1282
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1283 # TODO
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1284 # # starting from X.XX.X, Orthanc won't convert YBR to RGB anymore -> new checksum (https://discourse.orthanc-server.org/t/orthanc-convert-ybr-to-rgb-but-does-not-change-metadata/3533)
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1285 # with open(GetDatabasePath('TransferSyntaxes/1.2.840.10008.1.2.4.50.YBR.raw'), 'rb') as f:
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1286 # truthRawYbr = f.read()
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1287
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1288 # first test: no transcoding since we accept the JPEG transfer syntax
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1289 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri,
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1290 headers = { 'Accept' : ACCEPT['1.2.840.10008.1.2.4.50'] },
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1291 returnHeaders = True)
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1292 self.assertEqual(1, len(a))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1293 self.assertEqual(2, len(a[0]))
321
3c8c6b41eec4 dealing with Content-Location in test_frames_transcoding of DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 319
diff changeset
1294 self.assertEqual('%s%s/frames/1' % (ORTHANC['Url'], uri),
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1295 a[0][1]['Content-Location'])
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1296 self.assertEqual(ACCEPT['1.2.840.10008.1.2.4.50'],
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1297 'multipart/related; type=%s' % a[0][1]['Content-Type'])
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1298 self.assertEqual(53476, len(a[0][0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1299 self.assertEqual('142fdb8a1dc2aa7e6b8952aa294a6e22', ComputeMD5(a[0][0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1300
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1301 # second test: no accept header -> defaults to raw explicit
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1302 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri)
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1303 self.assertEqual(1, len(a))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1304 self.assertEqual(480 * 640 * 3, len(a[0]))
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1305
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1306 # Orthanc is now returning the YBR image instead of the RGB
543
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1307 # TODO
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1308 # # starting from X.XX.X, Orthanc won't convert YBR to RGB anymore -> new checksum (https://discourse.orthanc-server.org/t/orthanc-convert-ybr-to-rgb-but-does-not-change-metadata/3533)
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1309 # if IsOrthancVersionAbove(ORTHANC, 1, XX, 1) and not HasGdcmPlugin(ORTHANC):
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1310 # # GetMaxImageDifference does not work with YBR images -> strict comparison with the output of dcmdjpeg
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1311 # self.assertEqual('d4aacc6c7758c7c968a4fc8d59b041d5', ComputeMD5(a[0]))
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1312 # else:
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1313 # http://effbot.org/zone/pil-comparing-images.htm
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1314 img = Image.frombytes('RGB', [ 640, 480 ], a[0])
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1315 self.assertLessEqual(GetMaxImageDifference(img, truthRGB), 2)
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1316
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1317 ACCEPT2 = copy.deepcopy(ACCEPT)
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1318 if HasGdcmPlugin(ORTHANC):
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1319 IS_GDCM = True
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1320 ACCEPT2['1.2.840.10008.1.2.1'] = 'multipart/related; type=application/octet-stream'
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1321 del ACCEPT2['1.2.840.10008.1.2']
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1322 else:
539
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1323 if not IsOrthancVersionAbove(ORTHANC, 1, 12, 1):
ef41b62b456e updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents: 537
diff changeset
1324 self.assertEqual('dfdc79f5070926bbb8ac079ee91f5b91', ComputeMD5(a[0]))
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1325 IS_GDCM = False
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1326
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1327 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri,
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1328 headers = { 'Accept' : ACCEPT2['1.2.840.10008.1.2.1'] })
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1329 self.assertEqual(1, len(a))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1330 self.assertEqual(480 * 640 * 3, len(a[0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1331
543
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1332 # TODO
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1333 # # starting from X.XX.X, Orthanc won't convert YBR to RGB anymore -> new checksum (https://discourse.orthanc-server.org/t/orthanc-convert-ybr-to-rgb-but-does-not-change-metadata/3533)
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1334 # if IsOrthancVersionAbove(ORTHANC, 1, XX, X) and not HasGdcmPlugin(ORTHANC):
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1335 # # GetMaxImageDifference does not work with YBR images -> strict comparison with the output of dcmdjpeg
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1336 # self.assertEqual('d4aacc6c7758c7c968a4fc8d59b041d5', ComputeMD5(a[0]))
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1337 # else:
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1338 # http://effbot.org/zone/pil-comparing-images.htm
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1339 img = Image.frombytes('RGB', [ 640, 480 ], a[0])
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1340 self.assertLessEqual(GetMaxImageDifference(img, truthRGB), 2)
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1341
543
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1342 # TODO: if not IS_GDCM and not IsOrthancVersionAbove(ORTHANC, 1, XX, X):
Alain Mazy <am@osimis.io>
parents: 539
diff changeset
1343 if not IS_GDCM:
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1344 self.assertEqual('dfdc79f5070926bbb8ac079ee91f5b91', ComputeMD5(a[0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1345
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1346
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1347 # Test download using the same transfer syntax
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1348 RESULTS = {
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1349 '1.2.840.10008.1.2' : 'f54c7ea520ab3ec32b6303581ecd262f',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1350 '1.2.840.10008.1.2.1' : '4b350b9353a93c747917c7c3bf9b8f44',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1351 '1.2.840.10008.1.2.4.50' : '142fdb8a1dc2aa7e6b8952aa294a6e22',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1352 '1.2.840.10008.1.2.4.51' : '8b37945d75f9d2899ed868bdba429a0d',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1353 '1.2.840.10008.1.2.4.57' : '75c84823eddb560d127b1d24c9406f30',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1354 '1.2.840.10008.1.2.4.70' : '2c35726328f0200396e583a0038b0269',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1355 }
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1356
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1357 if IS_GDCM:
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1358 # This file was failing with GDCM, as it has 2 fragments,
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1359 # and only the first one was returned => the MD5 below is BAD
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1360 #RESULTS['1.2.840.10008.1.2.4.51'] = '901963a322a817946b074f9ed0afa060'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1361 pass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 303
diff changeset
1362
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1363 for syntax in ACCEPT2:
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1364 uri = '/dicom-web%s' % UploadAndGetWadoPath('TransferSyntaxes/%s.dcm' % syntax)
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1365 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri,
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1366 headers = { 'Accept' : ACCEPT2[syntax] })
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1367 self.assertEqual(1, len(a))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1368 self.assertEqual(RESULTS[syntax], ComputeMD5(a[0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1369
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1370 # Test transcoding to all the possible transfer syntaxes
321
3c8c6b41eec4 dealing with Content-Location in test_frames_transcoding of DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 319
diff changeset
1371 uri = 'dicom-web%s' % UploadAndGetWadoPath('KarstenHilbertRF.dcm')
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1372 for syntax in ACCEPT2:
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1373 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri,
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1374 headers = { 'Accept' : ACCEPT2[syntax] },
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1375 returnHeaders = True)
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1376 self.assertEqual(1, len(a))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1377 self.assertEqual(2, len(a[0]))
321
3c8c6b41eec4 dealing with Content-Location in test_frames_transcoding of DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 319
diff changeset
1378 self.assertEqual('%s%s/frames/1' % (ORTHANC['Url'], uri),
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1379 a[0][1]['Content-Location'])
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1380 self.assertEqual(ACCEPT[syntax],
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1381 'multipart/related; type=%s' % a[0][1]['Content-Type'])
683
Alain Mazy <am@orthanc.team>
parents: 676
diff changeset
1382 if IS_GDCM: # !!! NOTE: these tests might fail if GDCM is not used to transcode ALL transfer syntaxes. And, from v1.8, the default configuration handles only JP2K
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1383 self.assertEqual({
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1384 '1.2.840.10008.1.2' : '1c8cebde0c74450ce4dfb75dd52ddad7',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1385 '1.2.840.10008.1.2.1' : '1c8cebde0c74450ce4dfb75dd52ddad7',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1386 '1.2.840.10008.1.2.4.50' : 'f4d145e5f33fbd39375ce0f91453d6cc',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1387 '1.2.840.10008.1.2.4.51' : 'f4d145e5f33fbd39375ce0f91453d6cc',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1388 '1.2.840.10008.1.2.4.57' : 'dc55800ce1a8ac556c266cdb26d75757',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1389 '1.2.840.10008.1.2.4.70' : 'dc55800ce1a8ac556c266cdb26d75757',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1390 } [syntax], ComputeMD5(a[0][0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1391 else:
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1392 self.assertEqual({
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1393 '1.2.840.10008.1.2' : '1c8cebde0c74450ce4dfb75dd52ddad7',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1394 '1.2.840.10008.1.2.1' : '1c8cebde0c74450ce4dfb75dd52ddad7',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1395 '1.2.840.10008.1.2.4.50' : '0a0ab74fe7c68529bdd416fc9e5e742a',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1396 '1.2.840.10008.1.2.4.51' : '33d1ab2fe169c5b5ba932a9bbc3c6306',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1397 '1.2.840.10008.1.2.4.57' : '3d21c969da846ca41e0498a0dcfad061',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1398 '1.2.840.10008.1.2.4.70' : '49d5353c8673208629847ad45a855557',
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1399 } [syntax], ComputeMD5(a[0][0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1400
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1401
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1402 # JPEG image with many fragments for 2 frames
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1403 uri = '/dicom-web%s' % UploadAndGetWadoPath('LenaTwiceWithFragments.dcm')
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1404
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1405 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri,
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1406 headers = { 'Accept' : ACCEPT['1.2.840.10008.1.2.4.50'] })
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1407 self.assertEqual(1, len(a))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1408 self.assertEqual(69214, len(a[0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1409 self.assertEqual('0eaf36d4881c513ca70b6684bfaa5b08', ComputeMD5(a[0]))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1410
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1411 b = DoGetMultipart(ORTHANC, '%s/frames/2' % uri,
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1412 headers = { 'Accept' : ACCEPT['1.2.840.10008.1.2.4.50'] })
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1413 self.assertEqual(1, len(b))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1414 self.assertEqual(a[0], b[0])
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1415
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1416 b = DoGetMultipart(ORTHANC, '%s/frames/1,2' % uri,
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1417 headers = { 'Accept' : ACCEPT['1.2.840.10008.1.2.4.50'] })
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1418 self.assertEqual(2, len(b))
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1419 self.assertEqual(a[0], b[0])
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1420 self.assertEqual(a[0], b[1])
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1421
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1422
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1423 def test_wado_transcoding(self):
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1424 uri = '/dicom-web%s' % UploadAndGetWadoPath('TransferSyntaxes/1.2.840.10008.1.2.4.50.dcm')
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1425
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1426 compressedSize = os.path.getsize(GetDatabasePath('TransferSyntaxes/1.2.840.10008.1.2.4.50.dcm'))
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1427
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1428 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s' % uri,
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1429 headers = { 'Accept' : 'nope' }))
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1430
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1431 # Up to release 1.5 of the DICOMweb plugin, if no
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1432 # transfer-syntax was specified, no transcoding occured. This
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1433 # was because of an undefined behavior up to DICOM
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1434 # 2016b. Starting with DICOM 2016c, the standard explicitly
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1435 # states that the image should be transcoded to Little Endian
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1436 # Explicit.
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1437 a = DoGetMultipart(ORTHANC, '%s' % uri,
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1438 headers = { })
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1439 self.assertEqual(1, len(a))
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1440 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(a[0]))
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1441 self.assertTrue(10 * compressedSize < len(a[0]))
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1442 uncompressedSize = len(a[0])
297
f95cd3af1c7a DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 284
diff changeset
1443
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1444 a = DoGetMultipart(ORTHANC, '%s' % uri,
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1445 headers = { 'Accept' : 'multipart/related' })
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1446 self.assertEqual(1, len(a))
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1447 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(a[0]))
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1448 self.assertEqual(uncompressedSize, len(a[0]))
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1449
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1450 a = DoGetMultipart(ORTHANC, '%s' % uri,
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1451 headers = { 'Accept' : 'multipart/related; type=application/dicom' })
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1452 self.assertEqual(1, len(a))
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1453 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(a[0]))
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1454 self.assertEqual(uncompressedSize, len(a[0]))
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1455
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1456 a = DoGetMultipart(ORTHANC, '%s' % uri,
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1457 headers = { 'Accept' : 'multipart/related; type=application/dicom; transfer-syntax=*' })
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1458 self.assertEqual(1, len(a))
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1459 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax(a[0]))
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1460 self.assertEqual(compressedSize, len(a[0]))
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1461
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1462 # Use source transfer syntax
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1463 a = DoGetMultipart(ORTHANC, '%s' % uri,
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1464 headers = { 'Accept' : 'multipart/related; type=application/dicom; transfer-syntax=1.2.840.10008.1.2.4.50' })
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1465 self.assertEqual(1, len(a))
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1466 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax(a[0]))
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1467 self.assertEqual(compressedSize, len(a[0]))
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1468
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1469 a = DoGetMultipart(ORTHANC, '%s' % uri,
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1470 headers = { 'Accept' : 'multipart/related; type=application/dicom; transfer-syntax=1.2.840.10008.1.2.1' })
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1471 self.assertEqual(1, len(a))
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
1472 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(a[0]))
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1473 self.assertEqual(uncompressedSize, len(a[0]))
325
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1474
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1475 # Transcoding
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1476 a = DoGetMultipart(ORTHANC, '%s' % uri,
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1477 headers = { 'Accept' : 'multipart/related; type=application/dicom; transfer-syntax=1.2.840.10008.1.2.4.57' })
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1478 self.assertEqual(1, len(a))
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1479 self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(a[0]))
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1480 self.assertNotEqual(compressedSize, len(a[0]))
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1481 self.assertNotEqual(uncompressedSize, len(a[0]))
325
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1482
367
9d2a63afdb73 Test compliance with DICOM >= 2016c: WADO-RS Retrieve transcodes to Little Endian Explicit by default
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
1483
325
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1484 def test_compare_wado_uri_and_rs(self):
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1485 # https://groups.google.com/d/msg/orthanc-users/mKgr2QAKTCU/R7u4I1LvBAAJ
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1486
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1487 # Image "2020-08-12-Christopher.dcm" corresponds to the result of:
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1488 # $ gdcmconv --raw 1.2.840.113704.9.1000.16.2.20190613104005642000100010001.dcm 2020-08-12-Christopher.dcm
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1489 # Image "2020-08-12-Christopher.png" corresponds to "2.png"
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1490
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1491 i = UploadInstance(ORTHANC, '2020-08-12-Christopher.dcm') ['ID']
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1492 STUDY = '1.2.840.113704.9.1000.16.0.20190613103939444'
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1493 SERIES = '1.2.840.113704.9.1000.16.1.2019061310394289000010001'
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1494 INSTANCE = '1.2.840.113704.9.1000.16.2.20190613104005642000100010001'
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1495
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1496 with open(GetDatabasePath('2020-08-12-Christopher.png'), 'rb') as f:
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1497 truth = UncompressImage(f.read())
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1498
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1499 im1 = GetImage(ORTHANC, args.wado + '?requestType=WADO&objectUID=%s&contentType=image/jpg' % INSTANCE)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1500 self.assertEqual('JPEG', im1.format)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1501
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1502 im2 = GetImage(ORTHANC, args.wado + '?requestType=WADO&objectUID=%s&contentType=image/png' % INSTANCE)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1503 self.assertEqual('PNG', im2.format)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1504
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1505 im3 = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/frames/1/rendered?window=200,800,linear' % (STUDY, SERIES, INSTANCE))
325
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1506 self.assertEqual('JPEG', im3.format)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1507
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1508 im4 = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/rendered?window=200,800,linear' % (STUDY, SERIES, INSTANCE),
325
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1509 headers = { 'Accept' : 'image/png' })
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1510 self.assertEqual('PNG', im4.format)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1511
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1512 im5 = GetImage(ORTHANC, '/instances/%s/rendered' % i, { 'Accept' : 'image/jpeg' })
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1513 self.assertEqual('JPEG', im5.format)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1514
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1515 im6 = GetImage(ORTHANC, '/instances/%s/rendered' % i)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1516 self.assertEqual('PNG', im6.format)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1517
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1518 for im in [ truth, im1, im2, im3, im4, im5, im6 ]:
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1519 self.assertEqual('L', im.mode)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1520 self.assertEqual(512, im.size[0])
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1521 self.assertEqual(512, im.size[1])
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1522
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1523 # The following fails in DICOMweb plugin <= 1.2, as "/rendered"
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1524 # was redirecting to the "/preview" route of Orthanc
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1525 # http://effbot.org/zone/pil-comparing-images.htm
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1526 self.assertLess(ImageChops.difference(im1, im3).getextrema() [1], 10)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1527 self.assertLess(ImageChops.difference(im2, im4).getextrema() [1], 2)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1528 self.assertLess(ImageChops.difference(im3, im5).getextrema() [1], 10)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1529 self.assertLess(ImageChops.difference(im4, im6).getextrema() [1], 2)
325
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1530 self.assertTrue(ImageChops.difference(im1, im5).getbbox() is None)
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1531 self.assertTrue(ImageChops.difference(im2, im6).getbbox() is None)
345
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 325
diff changeset
1532
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 325
diff changeset
1533 bbox = ImageChops.difference(im2, truth).getbbox()
346
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 345
diff changeset
1534 if bbox != None:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 345
diff changeset
1535 # Tolerance of just 1 pixel of difference (needed on Windows)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 345
diff changeset
1536 #print(im2.getpixel((238,275))) # => 255
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 345
diff changeset
1537 #print(truth.getpixel((238,275))) # => 254
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 345
diff changeset
1538 self.assertLessEqual(abs(bbox[2] - bbox[0]), 1)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 345
diff changeset
1539 self.assertLessEqual(abs(bbox[3] - bbox[1]), 1)
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1540
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1541
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1542 def test_issue_195(self):
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1543 # This fails on Orthanc <= 1.9.2
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
1544 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=195
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1545 a = UploadInstance(ORTHANC, 'Issue195.dcm') ['ID']
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1546 b = DoGet(ORTHANC, 'dicom-web/studies/1.2.276.0.7230010.3.1.2.8323329.13188.1620309604.848733/series/1.2.276.0.7230010.3.1.3.8323329.13188.1620309604.848734/instances/1.2.276.0.7230010.3.1.4.8323329.13188.1620309604.848735/metadata',
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1547 headers = { 'Accept' : 'application/dicom+json' })
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1548
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1549 self.assertEqual(1, len(b))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1550 self.assertEqual(5, len(b[0]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1551
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1552 # The expected result can be found by typing "dcm2json Database/Issue195.dcm"
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1553 self.assertEqual(2, len(b[0]["00080018"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1554 self.assertEqual("UI", b[0]["00080018"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1555 self.assertEqual("1.2.276.0.7230010.3.1.4.8323329.13188.1620309604.848735",
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1556 b[0]["00080018"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1557
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1558 self.assertEqual(2, len(b[0]["0020000D"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1559 self.assertEqual("UI", b[0]["0020000D"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1560 self.assertEqual("1.2.276.0.7230010.3.1.2.8323329.13188.1620309604.848733",
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1561 b[0]["0020000D"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1562
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1563 self.assertEqual(2, len(b[0]["0020000E"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1564 self.assertEqual("UI", b[0]["0020000E"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1565 self.assertEqual("1.2.276.0.7230010.3.1.3.8323329.13188.1620309604.848734",
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1566 b[0]["0020000E"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1567
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1568 self.assertEqual(1, len(b[0]["00081030"])) # Case of an empty value
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1569 self.assertEqual("LO", b[0]["00081030"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1570
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1571 self.assertEqual(2, len(b[0]["0008103E"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1572 self.assertEqual("LO", b[0]["0008103E"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1573 self.assertEqual("Hello1", b[0]["0008103E"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1574
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1575
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1576 DoDelete(ORTHANC, 'instances/%s' % a)
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1577 a = UploadInstance(ORTHANC, 'Issue195-bis.dcm') ['ID']
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1578 URI = 'dicom-web/studies/1.2.276.0.7230010.3.1.2.8323329.6792.1625504071.652468/series/1.2.276.0.7230010.3.1.3.8323329.6792.1625504071.652469/instances/1.2.276.0.7230010.3.1.4.8323329.6792.1625504071.652470'
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1579 b = DoGet(ORTHANC, '%s/metadata' % URI,
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1580 headers = { 'Accept' : 'application/dicom+json' })
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1581
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1582 self.assertEqual(1, len(b))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1583 self.assertEqual(5, len(b[0]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1584
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1585 # The expected result can be found by typing "dcm2json ../../Database/Issue195-bis.dcm"
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1586 self.assertEqual(2, len(b[0]["00080018"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1587 self.assertEqual("UI", b[0]["00080018"]["vr"])
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1588 self.assertEqual("1.2.276.0.7230010.3.1.4.8323329.6792.1625504071.652470",
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1589 b[0]["00080018"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1590
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1591 self.assertEqual(2, len(b[0]["0020000D"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1592 self.assertEqual("UI", b[0]["0020000D"]["vr"])
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1593 self.assertEqual("1.2.276.0.7230010.3.1.2.8323329.6792.1625504071.652468",
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1594 b[0]["0020000D"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1595
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1596 self.assertEqual(2, len(b[0]["0020000E"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1597 self.assertEqual("UI", b[0]["0020000E"]["vr"])
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1598 self.assertEqual("1.2.276.0.7230010.3.1.3.8323329.6792.1625504071.652469",
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1599 b[0]["0020000E"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1600
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1601 self.assertEqual(2, len(b[0]["00084567"]))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1602 self.assertEqual("UN", b[0]["00084567"]["vr"])
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1603 self.assertEqual('http://%s:%s%s' % (args.server, args.rest, '/%s/bulk/00084567' % URI),
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1604 b[0]["00084567"]["BulkDataURI"])
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1605
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1606 c = DoGet(ORTHANC, '%s/bulk/00084567' % URI)
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1607 self.assertTrue('Content-Length: 2\r\n' in c)
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1608 index = c.find('\r\n\r\n')
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1609 self.assertEqual(0x42, ord(c[index + 4]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1610 self.assertEqual(0x00, ord(c[index + 5]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1611
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 398
diff changeset
1612 # Case of an empty value, fails in Orthanc <= 1.9.2 because of issue #195
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1613 self.assertEqual(1, len(b[0]["00084565"]))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1614 self.assertEqual("UN", b[0]["00084565"]["vr"])
325
b7c2fb8e1b57 DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 321
diff changeset
1615
273
afcd550a9216 test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 272
diff changeset
1616
434
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1617
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1618
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1619 def test_multiframe_windowing(self):
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1620 # Fixed in DICOMweb 1.7
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1621 def GetLinear(x, c, w):
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1622 # http://dicom.nema.org/MEDICAL/dicom/2019a/output/chtml/part03/sect_C.11.2.html#sect_C.11.2.1.2.1
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1623 ymin = 0.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1624 ymax = 255.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1625 if float(x) <= float(c) - 0.5 - (float(w) - 1.0) / 2.0:
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1626 return ymin
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1627 elif float(x) > float(c) - 0.5 + (float(w) - 1.0) / 2.0 :
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1628 return ymax
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1629 else:
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1630 return ((float(x) - (float(c) - 0.5)) / (float(w) - 1.0) + 0.5) * (ymax - ymin) + ymin
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1631
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1632 def GetLinearExact(x, c, w):
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1633 # http://dicom.nema.org/MEDICAL/dicom/2019a/output/chtml/part03/sect_C.11.2.html#sect_C.11.2.1.3.2
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1634 ymin = 0.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1635 ymax = 255.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1636 if float(x) <= float(c) - float(w) / 2.0:
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1637 return ymin
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1638 elif float(x) > float(c) + float(w) / 2.0:
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1639 return ymax
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1640 else:
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1641 return (float(x) - float(c)) / float(w) * (ymax- ymin) + ymin
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1642
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1643 def GetSigmoid(x, c, w):
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1644 # http://dicom.nema.org/MEDICAL/dicom/2019a/output/chtml/part03/sect_C.11.2.html#sect_C.11.2.1.3.1
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1645 ymin = 0.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1646 ymax = 255.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1647 return (ymax - ymin) / (1.0 + math.exp(-4 * (float(x) - float(c)) / float(w)))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1648
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1649 self.assertAlmostEqual(GetLinear(10, 0, 100), 154.54545454545456)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1650 self.assertAlmostEqual(GetLinear(-1000, 2048, 4096), 0)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1651 self.assertAlmostEqual(GetLinear(5096, 2048, 4096), 255)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1652 self.assertAlmostEqual(GetLinear(333, 2048, 4096), 20.7362637362637)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1653 self.assertAlmostEqual(GetLinear(16, 127, 256), 17)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1654
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1655 self.assertAlmostEqual(GetLinearExact(-1000, 2048, 4096), 0)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1656 self.assertAlmostEqual(GetLinearExact(5096, 2048, 4096), 255)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1657 self.assertAlmostEqual(GetLinearExact(150, 127, 256), 22.91015625)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1658
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1659 self.assertAlmostEqual(GetSigmoid(150, 127, 256), 150.166728345797)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1660
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1661 UploadInstance(ORTHANC, 'MultiframeWindowing.dcm')
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1662 STUDY = '1.2.840.113619.2.176.2025.1499492.7391.1175285944.390'
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1663 SERIES = '1.2.840.113619.2.176.2025.1499492.7391.1175285944.394'
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1664 INSTANCE = '1.2.840.113619.2.176.2025.1499492.7040.1175286242.109'
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1665
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1666 im = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/frames/1/rendered?window=127,256,linear' % (STUDY, SERIES, INSTANCE))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1667 self.assertLessEqual(abs(GetLinear(0x00, 127, 256) - im.getpixel((0, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1668 self.assertLessEqual(abs(GetLinear(0x10, 127, 256) - im.getpixel((1, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1669 self.assertLessEqual(abs(GetLinear(0x20, 127, 256) - im.getpixel((0, 1))), 1.1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1670 self.assertLessEqual(abs(GetLinear(0x30, 127, 256) - im.getpixel((1, 1))), 1.1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1671
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1672 im = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/frames/1/rendered?window=0,256,linear-exact' % (STUDY, SERIES, INSTANCE))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1673 self.assertLessEqual(abs(GetLinearExact(0x00, 0, 256) - im.getpixel((0, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1674 self.assertLessEqual(abs(GetLinearExact(0x10, 0, 256) - im.getpixel((1, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1675 self.assertLessEqual(abs(GetLinearExact(0x20, 0, 256) - im.getpixel((0, 1))), 1.2)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1676 self.assertLessEqual(abs(GetLinearExact(0x30, 0, 256) - im.getpixel((1, 1))), 1.2)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1677
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1678 im = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/frames/1/rendered?window=127,256,sigmoid' % (STUDY, SERIES, INSTANCE))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1679 self.assertLessEqual(abs(GetSigmoid(0x00, 127, 256) - im.getpixel((0, 0))), 3)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1680 self.assertLessEqual(abs(GetSigmoid(0x10, 127, 256) - im.getpixel((1, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1681 self.assertLessEqual(abs(GetSigmoid(0x20, 127, 256) - im.getpixel((0, 1))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1682 self.assertLessEqual(abs(GetSigmoid(0x30, 127, 256) - im.getpixel((1, 1))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1683
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1684 im = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/frames/1/rendered?window=16,128,linear' % (STUDY, SERIES, INSTANCE))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1685 self.assertLessEqual(abs(GetLinear(0x00, 16, 128) - im.getpixel((0, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1686 self.assertLessEqual(abs(GetLinear(0x10, 16, 128) - im.getpixel((1, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1687 self.assertLessEqual(abs(GetLinear(0x20, 16, 128) - im.getpixel((0, 1))), 2)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1688 self.assertLessEqual(abs(GetLinear(0x30, 16, 128) - im.getpixel((1, 1))), 2)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1689
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1690 im = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/frames/2/rendered?window=127,256,linear' % (STUDY, SERIES, INSTANCE))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1691 ri = 100.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1692 rs = 1.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1693 self.assertLessEqual(abs(GetLinear(0x00 * rs + ri, 127, 256) - im.getpixel((0, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1694 self.assertLessEqual(abs(GetLinear(0x10 * rs + ri, 127, 256) - im.getpixel((1, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1695 self.assertLessEqual(abs(GetLinear(0x20 * rs + ri, 127, 256) - im.getpixel((0, 1))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1696 self.assertLessEqual(abs(GetLinear(0x30 * rs + ri, 127, 256) - im.getpixel((1, 1))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1697
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1698 im = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/frames/3/rendered?window=127,256,linear' % (STUDY, SERIES, INSTANCE))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1699 ri = 0.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1700 rs = 2.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1701 self.assertLessEqual(abs(GetLinear(0x00 * rs + ri, 127, 256) - im.getpixel((0, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1702 self.assertLessEqual(abs(GetLinear(0x10 * rs + ri, 127, 256) - im.getpixel((1, 0))), 1.1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1703 self.assertLessEqual(abs(GetLinear(0x20 * rs + ri, 127, 256) - im.getpixel((0, 1))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1704 self.assertLessEqual(abs(GetLinear(0x30 * rs + ri, 127, 256) - im.getpixel((1, 1))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1705
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1706 im = GetImage(ORTHANC, '/dicom-web/studies/%s/series/%s/instances/%s/frames/4/rendered?window=127,256,linear' % (STUDY, SERIES, INSTANCE))
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1707 ri = 100.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1708 rs = 2.0
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1709 self.assertLessEqual(abs(GetLinear(0x00 * rs + ri, 127, 256) - im.getpixel((0, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1710 self.assertLessEqual(abs(GetLinear(0x10 * rs + ri, 127, 256) - im.getpixel((1, 0))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1711 self.assertLessEqual(abs(GetLinear(0x20 * rs + ri, 127, 256) - im.getpixel((0, 1))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1712 self.assertLessEqual(abs(GetLinear(0x30 * rs + ri, 127, 256) - im.getpixel((1, 1))), 1)
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1713
2c142e070f19 dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
1714
532
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1715 def test_forwarded_headers(self):
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1716 study = UploadInstance(ORTHANC, 'ColorTestImageJ.dcm')['ParentStudy']
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1717 studyId = DoGet(ORTHANC, '/studies/%s' % study)['MainDicomTags']['StudyInstanceUID']
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1718
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1719 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId)
533
Alain Mazy <am@osimis.io>
parents: 532
diff changeset
1720 self.assertIn(ORTHANC['Url'], m[0][u'7FE00010']['BulkDataURI'])
532
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1721
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1722 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId, headers= {
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1723 'host': 'my-domain'
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1724 })
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1725 self.assertIn("http://my-domain/dicom-web", m[0][u'7FE00010']['BulkDataURI'])
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1726
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1727 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId, headers= {
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1728 'forwarded': 'host=my-domain;proto=https'
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1729 })
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1730 self.assertIn("https://my-domain/dicom-web", m[0][u'7FE00010']['BulkDataURI'])
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1731
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1732 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 13, 1):
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1733 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId, headers= {
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1734 'X-Forwarded-Host': 'my-domain',
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1735 'X-Forwarded-Proto': 'https'
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1736 })
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1737 self.assertIn("https://my-domain/dicom-web", m[0][u'7FE00010']['BulkDataURI'])
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1738
f96c023ce523 dicom-web X-Forwarded headers
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
1739
575
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1740 def test_full_mode_cache(self):
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1741 study = UploadInstance(ORTHANC, 'ColorTestImageJ.dcm')['ParentStudy']
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1742 studyId = DoGet(ORTHANC, '/studies/%s' % study)['MainDicomTags']['StudyInstanceUID']
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1743
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1744 # wait for the StableSeries to happen to pre-compute the series/metadata
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1745 time.sleep(4)
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1746
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1747 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId)
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1748 self.assertIn(ORTHANC['Url'], m[0][u'7FE00010']['BulkDataURI'])
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1749
28fef24147fa test for new DicomWeb cache
Alain Mazy <am@osimis.io>
parents: 563
diff changeset
1750
551
c8d2775f0d02 added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 549
diff changeset
1751 def test_issue_216(self):
558
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1752 study = UploadInstance(ORTHANC, 'ColorTestImageJ.dcm')['ParentStudy']
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1753 studyUid = DoGet(ORTHANC, '/studies/%s' % study)['MainDicomTags']['StudyInstanceUID']
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1754
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1755 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyUid, headers = {
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1756 'accept': 'image/webp, */*;q=0.8, text/html, application/xhtml+xml, application/xml;q=0.9'
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1757 })
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1758 self.assertEqual(1, len(m))
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1759 self.assertEqual(studyUid, m[0]['0020000D']['Value'][0])
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1760
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1761 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyUid, headers = {
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1762 'accept': 'text/html, application/xhtml+xml, application/xml, image/webp, */*;q=0.8'
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1763 })
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1764 self.assertEqual(1, len(m))
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1765 self.assertEqual(studyUid, m[0]['0020000D']['Value'][0])
551
c8d2775f0d02 added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 549
diff changeset
1766
561
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1767 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 13, 1) and IsOrthancVersionAbove(ORTHANC, 1, 12, 1):
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1768 # This fails on DICOMweb <= 1.13 because of the "; q=.2",
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1769 # since multiple accepts were not supported
588
8aa101e126d0 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 586
diff changeset
1770 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=216
561
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1771 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyUid, headers = {
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1772 'accept': 'text/html, image/gif, image/jpeg, */*; q=.2, */*; q=.2'
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1773 })
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1774 self.assertEqual(1, len(m))
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1775 self.assertEqual(studyUid, m[0]['0020000D']['Value'][0])
551
c8d2775f0d02 added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 549
diff changeset
1776
561
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1777 # This fails on Orthanc <= 1.12.0 because of the ";q=0.9"
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1778 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyUid, headers = {
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1779 'accept': 'text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8'
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1780 })
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1781 self.assertEqual(1, len(m))
2c809c605592 conditional tests
Alain Mazy <am@osimis.io>
parents: 558
diff changeset
1782 self.assertEqual(studyUid, m[0]['0020000D']['Value'][0])
558
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1783
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1784
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1785 def test_accept_negotiation(self):
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1786 def CheckBadRequest(uri, accept):
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1787 response = DoGetRaw(ORTHANC, uri, headers = {
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1788 'accept': accept
552
71096a3e3006 test orthanc version
Alain Mazy <am@osimis.io>
parents: 551
diff changeset
1789 })
558
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1790 self.assertEqual(int(response[0]['status']), 400)
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1791
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1792 def CheckIsJson(uri, accept):
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1793 if accept != None:
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1794 response = DoGetRaw(ORTHANC, uri, headers = {
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1795 'accept': accept
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1796 })
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1797 else:
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1798 response = DoGetRaw(ORTHANC, uri)
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1799 self.assertEqual(int(response[0]['status']), 200)
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1800 self.assertEqual(response[0]['content-type'], 'application/dicom+json')
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1801 json.loads(response[1])
551
c8d2775f0d02 added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 549
diff changeset
1802
558
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1803 def CheckIsXml(uri, accept):
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1804 response = DoGetMultipart(ORTHANC, uri, headers = {
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1805 'accept': accept
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1806 }, returnHeaders = True)
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1807 self.assertEqual(1, len(response))
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1808 self.assertEqual(2, len(response[0]))
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1809 self.assertEqual('application/dicom+xml', response[0][1]['Content-Type'])
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1810 xml.dom.minidom.parseString(response[0][0])
552
71096a3e3006 test orthanc version
Alain Mazy <am@osimis.io>
parents: 551
diff changeset
1811
559
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1812 def CheckIsDicom(uri, accept):
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1813 if accept != None:
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1814 response = DoGetMultipart(ORTHANC, uri, headers = {
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1815 'accept': accept
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1816 }, returnHeaders = True)
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1817 else:
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1818 response = DoGetMultipart(ORTHANC, uri, returnHeaders = True)
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1819 self.assertEqual(1, len(response))
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1820 self.assertEqual(2, len(response[0]))
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1821 self.assertEqual('application/dicom', response[0][1]['Content-Type'])
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1822 pydicom.dcmread(BytesIO(response[0][0]), force=True)
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1823
560
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1824 def CheckIsBulk(uri, accept):
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1825 if accept != None:
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1826 response = DoGetMultipart(ORTHANC, uri, headers = {
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1827 'accept': accept
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1828 }, returnHeaders = True)
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1829 else:
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1830 response = DoGetMultipart(ORTHANC, uri, returnHeaders = True)
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1831 self.assertEqual(1, len(response))
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1832 self.assertEqual(2, len(response[0]))
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1833 self.assertEqual('application/octet-stream', response[0][1]['Content-Type'])
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1834 self.assertTrue(len(response[0][0]) > 1)
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1835
558
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1836 study = UploadInstance(ORTHANC, 'ColorTestImageJ.dcm')['ParentStudy']
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1837 studyUid = DoGet(ORTHANC, '/studies/%s' % study)['MainDicomTags']['StudyInstanceUID']
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1838
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1839 CheckIsJson('/dicom-web/studies/%s/metadata' % studyUid, None)
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1840 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'application/nope')
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1841 CheckIsJson('/dicom-web/studies/%s/metadata' % studyUid, 'application/json')
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1842 CheckIsJson('/dicom-web/studies/%s/metadata' % studyUid, 'application/dicom+json')
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1843 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related')
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1844 CheckIsXml('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type=application/dicom+xml')
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1845 CheckIsXml('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type="application/dicom+xml"')
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1846 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type="application/nope"')
0ad170c7b6c8 reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 555
diff changeset
1847 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type=application/dicom+xml; transfer-syntax=nope')
551
c8d2775f0d02 added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 549
diff changeset
1848
559
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1849 CheckBadRequest('/dicom-web/studies/%s' % studyUid, 'multipart/nope')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1850 CheckIsDicom('/dicom-web/studies/%s' % studyUid, None)
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1851 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1852 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; type=application/dicom')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1853 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; type="application/dicom"')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1854 CheckBadRequest('/dicom-web/studies/%s' % studyUid, 'multipart/related; type=application/nope')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1855 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; transfer-syntax=*')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1856 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; type=application/dicom; transfer-syntax=*')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1857 CheckBadRequest('/dicom-web/studies/%s' % studyUid, 'multipart/related; transfer-syntax=nope')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1858 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; type=application/dicom; transfer-syntax=1.2.840.10008.1.2.1')
87fc87897e7e test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 558
diff changeset
1859
560
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1860 uri = '/dicom-web/studies/%s/series/%s/instances/%s/bulk/0010,0010' % (
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1861 studyUid, '1.3.12.2.1107.5.99.2.1255.30000007020811545343700000012',
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1862 '1.2.276.0.7230010.3.1.4.2455711835.6056.1170936079.1')
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1863 CheckIsBulk(uri, None)
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1864 CheckBadRequest(uri, 'multipart/nope')
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1865 CheckIsBulk(uri, 'multipart/related')
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1866 CheckIsBulk(uri, 'multipart/related;type=application/octet-stream')
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1867 CheckIsBulk(uri, 'multipart/related; type = "application/octet-stream" ')
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1868 CheckBadRequest(uri, 'multipart/related; type = " application/octet-stream" ')
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1869 CheckBadRequest(uri, 'multipart/related;type=application/nope')
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1870 CheckBadRequest(uri, 'multipart/related;range=')
2db7a9041507 test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 559
diff changeset
1871
551
c8d2775f0d02 added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 549
diff changeset
1872
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1873 try:
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1874 print('\nStarting the tests...')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1875 unittest.main(argv = [ sys.argv[0] ] + args.options)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1876
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1877 finally:
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1878 print('\nDone')