Mercurial > hg > orthanc-tests
annotate Plugins/DicomWeb/Run.py @ 655:b4fed8dca955
moving to python3 in DICOMweb tests
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 05 Jun 2024 11:41:00 +0200 |
parents | 3117e3f73b9a |
children | c26163577c91 |
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 | 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 | 26 |
27 # You must add the following to the configuration file: | |
28 # | |
29 # "DicomWeb" : { | |
30 # "Servers" : { | |
31 # "sample" : [ "http://localhost:8042/dicom-web/", "alice", "orthanctest" ] | |
32 # } | |
33 # } | |
34 | |
35 | |
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 | 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 | 46 import time |
304 | 47 from PIL import ImageChops |
563 | 48 from io import BytesIO |
33 | 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 | 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 | 126 if (sys.version_info >= (3, 0)): |
127 # Remove annoying warnings about unclosed socket in Python 3 | |
128 import warnings | |
129 warnings.simplefilter("ignore", ResourceWarning) | |
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 | 185 def test_stow(self): |
186 self.assertEqual(0, len(DoGet(ORTHANC, '/instances'))) | |
187 SendStow(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Phenix/IM-0001-0001.dcm')) | |
188 self.assertEqual(1, len(DoGet(ORTHANC, '/instances'))) | |
189 a = SendStow(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Phenix/IM-0001-0001.dcm')) | |
190 self.assertEqual(1, len(DoGet(ORTHANC, '/instances'))) | |
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 | 197 |
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 | 223 endswith('series/1.2.840.113704.1.111.5692.1127828999.2/instances/1.2.840.113704.7.1.1.6632.1127829031.2')) |
224 | |
83 | 225 # Remove the "http://localhost:8042" prefix |
226 url = a['00081190']['Value'][0] | |
227 url = re.sub(r'(http|https)://[^/]+(/.*)', r'\2', url) | |
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 | 235 parts = re.findall(r'^Content-Length:\s*(\d+)\s*', b, re.IGNORECASE | re.MULTILINE) |
236 self.assertEqual(1, len(parts)) | |
237 self.assertEqual(os.path.getsize(GetDatabasePath('Phenix/IM-0001-0001.dcm')), int(parts[0])) | |
33 | 238 |
227
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
239 |
84 | 240 def test_server_get(self): |
277 | 241 try: |
242 DoDelete(ORTHANC, '/dicom-web/servers/google') # If "AllWindowsStart.sh" is used | |
243 except: | |
244 pass | |
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 | 251 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm') |
252 | |
253 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/servers'))) | |
254 self.assertTrue('sample' in DoGet(ORTHANC, '/dicom-web/servers')) | |
255 | |
129 | 256 serversReadback = DoGet(ORTHANC, '/dicom-web/servers?expand') |
257 self.assertEqual('http://localhost:8042/dicom-web/', serversReadback['sample']['Url']) | |
258 self.assertEqual('alice', serversReadback['sample']['Username']) | |
259 | |
84 | 260 sample = DoGet(ORTHANC, '/dicom-web/servers/sample') |
244 | 261 self.assertEqual(5, len(sample)) |
84 | 262 self.assertTrue('stow' in sample) |
263 self.assertTrue('retrieve' in sample) | |
264 self.assertTrue('get' in sample) | |
244 | 265 self.assertTrue('wado' in sample) # New in 0.7 |
266 self.assertTrue('qido' in sample) # New in 0.7 | |
84 | 267 |
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 | 277 |
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 | 288 self.assertEqual(1, len(DoPost(ORTHANC, '/dicom-web/servers/sample/get', |
289 { 'Uri' : '/studies', | |
290 'HttpHeaders' : { 'Accept' : 'application/json' }}))) | |
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 | 297 |
298 def test_server_stow(self): | |
299 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm') | |
300 | |
301 self.assertRaises(Exception, lambda: | |
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 | 305 |
499 | 306 l = 3 # For >= 1.10.1 |
307 | |
308 # study | |
309 r = DoPost(ORTHANC, '/dicom-web/servers/sample/stow', | |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
310 { 'Resources' : [ '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' ], |
499 | 311 'Synchronous' : True }) |
312 | |
313 self.assertEqual(l, len(r)) | |
314 self.assertEqual("0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918", r['Resources']['Studies'][0]) | |
84 | 315 |
499 | 316 # series |
317 r = DoPost(ORTHANC, '/dicom-web/servers/sample/stow', | |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
318 { 'Resources' : [ '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' ], |
499 | 319 'Synchronous' : True }) |
320 self.assertEqual(l, len(r)) | |
321 self.assertEqual("6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285", r['Resources']['Series'][0]) | |
84 | 322 |
499 | 323 # instances |
324 r = DoPost(ORTHANC, '/dicom-web/servers/sample/stow', | |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
325 { 'Resources' : [ 'c8df6478-d7794217-0f11c293-a41237c9-31d98357' ], |
499 | 326 'Synchronous' : True }) |
327 self.assertEqual(l, len(r)) | |
328 self.assertEqual("c8df6478-d7794217-0f11c293-a41237c9-31d98357", r['Resources']['Instances'][0]) | |
84 | 329 |
499 | 330 # altogether |
331 r = DoPost(ORTHANC, '/dicom-web/servers/sample/stow', | |
84 | 332 { 'Resources' : [ |
333 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17', | |
334 '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918', | |
335 '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285', | |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
336 'c8df6478-d7794217-0f11c293-a41237c9-31d98357' ], |
499 | 337 'Synchronous' : True }) |
510 | 338 # pprint.pprint(r) |
499 | 339 self.assertEqual(l, len(r)) |
340 self.assertEqual("ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17", r['Resources']['Patients'][0]) | |
341 self.assertEqual("0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918", r['Resources']['Studies'][0]) | |
342 self.assertEqual("6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285", r['Resources']['Series'][0]) | |
343 self.assertEqual("c8df6478-d7794217-0f11c293-a41237c9-31d98357", r['Resources']['Instances'][0]) | |
344 | |
84 | 345 |
346 | |
347 def test_server_retrieve(self): | |
244 | 348 COUNT = 'ReceivedInstancesCount' |
349 #COUNT = 'Instances' # In version <= 0.6 | |
350 | |
84 | 351 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm') |
352 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0002.dcm') | |
353 UploadInstance(ORTHANC, 'Knee/T2/IM-0001-0001.dcm') | |
354 | |
355 self.assertRaises(Exception, lambda: | |
356 DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve', | |
357 { 'Resources' : [ { 'Study' : 'nope' } ]})) # inexisting resource | |
358 | |
359 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve', | |
360 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881' } ] }) | |
244 | 361 self.assertEqual(3, int(t[COUNT])) |
84 | 362 |
363 # Missing "Study" field | |
364 self.assertRaises(Exception, lambda: | |
365 DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve', | |
366 { 'Resources' : [ { 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ]})) | |
367 | |
368 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve', | |
369 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881', | |
370 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ] }) | |
244 | 371 self.assertEqual(2, int(t[COUNT])) |
84 | 372 |
373 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve', | |
374 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881', | |
375 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' } ] }) | |
244 | 376 self.assertEqual(1, int(t[COUNT])) |
84 | 377 |
378 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve', | |
379 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881', | |
380 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' }, | |
381 { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881', | |
382 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ] }) | |
244 | 383 self.assertEqual(3, int(t[COUNT])) |
84 | 384 |
385 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve', | |
386 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881', | |
387 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350', | |
388 'Instance' : '1.3.46.670589.11.17521.5.0.3124.2008081909113806560' } ] }) | |
244 | 389 self.assertEqual(1, int(t[COUNT])) |
84 | 390 |
391 | |
114
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
392 def test_bitbucket_issue_53(self): |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
393 # 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
|
394 # 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
|
395 |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
396 UploadInstance(ORTHANC, 'Brainix/Flair/IM-0001-0001.dcm') |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
397 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm') |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
398 |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
399 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
|
400 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
|
401 |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
402 a = DoGet(ORTHANC, '/dicom-web/studies', |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
403 headers = { 'accept' : 'application/json' }) |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
404 self.assertEqual(2, len(a)) |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
405 |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
406 b = [] |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
407 a = DoGet(ORTHANC, '/dicom-web/studies?limit=1', |
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(1, len(a)) |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
410 b.append(a[0]['0020000D']['Value'][0]) |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
411 |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
412 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
|
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 self.assertTrue(brainix in b) |
a6019560272f
test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
100
diff
changeset
|
418 self.assertTrue(knee in b) |
32
682c4e2a1162
integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
419 |
682c4e2a1162
integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
420 |
184
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
421 def test_bitbucket_issue_111(self): |
223
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
422 # Wrong serialization of empty values |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
423 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=111 |
319 | 424 # 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
|
425 |
184
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
426 # According to the standard, section F.2.5 |
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
427 # (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
|
428 # 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
|
429 # 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
|
430 # preserved in the DICOM JSON attribute object containing no |
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
431 # "Value", "BulkDataURI" or "InlineBinary". |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
432 # 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
|
433 |
223
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
434 UploadInstance(ORTHANC, 'Issue111.dcm') |
184
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
435 |
223
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
436 # Test WADO-RS |
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
437 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
|
438 self.assertEqual(1, len(a)) |
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
439 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
|
440 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
|
441 self.assertEqual('SH', a[0]['00080050']['vr']) |
184
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
442 |
223
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
443 # Test QIDO-RS |
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
444 a = DoGet(ORTHANC, '/dicom-web/studies') |
184
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
445 self.assertEqual(1, len(a)) |
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
446 self.assertTrue('00080050' in a[0]) # AccessionNumber is null |
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
447 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
|
448 self.assertEqual('SH', a[0]['00080050']['vr']) |
e244312964d6
test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
131
diff
changeset
|
449 |
222
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
450 |
537 | 451 # 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
|
452 def test_wado_hierarchy(self): |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
453 def CheckJson(uri, headers = {}): |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
454 with open(GetDatabasePath('DummyCT.json'), 'r') as f: |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
455 expected = json.loads(f.read()) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
456 actual = DoGet(ORTHANC, uri, headers) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
457 self.assertEqual(1, len(actual)) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
458 AssertAlmostEqualRecursive(self, expected, actual[0]) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
459 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
460 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
|
461 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
|
462 series = '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
463 instance = '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
464 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
465 URI = '/dicom-web/studies/%s/series/%s/instances/%s/metadata' |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
466 self.assertRaises(Exception, lambda: DoGet(ORTHANC, URI % (study, series, instance), |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
467 headers = { 'accept' : 'application/nope' })) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
468 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
469 CheckJson(URI % (study, series, instance), headers = { 'accept' : 'application/dicom+json' }) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
470 CheckJson('/dicom-web/studies/%s/series/%s/metadata' % (study, series)) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
471 CheckJson('/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
|
472 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
473 self.assertRaises(Exception, lambda: DoGet(ORTHANC, URI % ('nope', series, instance))) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
474 self.assertRaises(Exception, lambda: DoGet(ORTHANC, URI % (study, 'nope', instance))) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
475 self.assertRaises(Exception, lambda: DoGet(ORTHANC, URI % (study, series, 'nope'))) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
476 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/series/%s/metadata' % ('nope', series))) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
477 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/series/%s/metadata' % (study, 'nope'))) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
478 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % 'nope')) |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
479 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
480 |
228 | 481 def test_wado_pixel_data(self): |
482 orthanc = UploadInstance(ORTHANC, 'Issue29.dcm') ['ID'] | |
483 a = DoGet(ORTHANC, '/dicom-web/instances') | |
484 self.assertEqual(1, len(a)) | |
485 url = a[0]['00081190']['Value'][0] | |
486 | |
278
514785dacd6d
fix dicomweb tests with debian
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
277
diff
changeset
|
487 prefix = 'http://%s:%s' % (args.server, args.rest) |
228 | 488 self.assertTrue(url.startswith(prefix)) |
489 | |
490 b = DoGet(ORTHANC, url[len(prefix):] + '/metadata') | |
491 self.assertEqual('OB', b[0]['7FE00010']['vr']) | |
492 self.assertEqual(2, len(b[0]['7FE00010'])) | |
493 self.assertTrue('BulkDataURI' in b[0]['7FE00010']) | |
494 | |
495 url = b[0]['7FE00010']['BulkDataURI'] | |
496 self.assertTrue(url.startswith(prefix)) | |
497 | |
498 p = DoGetMultipart(ORTHANC, url[len(prefix):]) | |
499 | |
500 self.assertEqual(2, len(p)) # There are 2 fragments in this image | |
501 self.assertEqual(4, len(p[0])) | |
502 self.assertEqual(114486, len(p[1])) | |
503 | |
504 | |
505 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
|
506 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
|
507 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
|
508 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
|
509 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
|
510 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
|
511 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
512 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
|
513 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
|
514 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
|
515 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
|
516 |
228 | 517 # WARNING: This test will fail on Orthanc <= 1.5.5, because |
319 | 518 # the following fix was not included yet: |
586 | 519 # https://orthanc.uclouvain.be/hg/orthanc/rev/b88937ef597b |
228 | 520 |
222
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
521 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
|
522 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
|
523 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
524 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
|
525 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
|
526 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
527 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
|
528 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
|
529 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
|
530 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
|
531 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
532 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
|
533 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
|
534 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
535 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
|
536 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
|
537 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
|
538 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
539 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
540 def test_bitbucket_issue_112(self): |
223
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
541 # Wrong serialization of number values |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
542 # 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
|
543 # 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
|
544 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
545 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
|
546 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
|
547 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
548 # 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
|
549 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
|
550 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
|
551 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
|
552 |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
553 if (sys.version_info >= (3, 0)): |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
554 types = (int) |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
555 else: |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
556 types = (int, long) |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
557 |
222
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
558 b = a[0]['00180091']['Value'][0] |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
559 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
|
560 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
|
561 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
562 # 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
|
563 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
|
564 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
|
565 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
|
566 |
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
567 b = a[0]['00201208']['Value'][0] |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
568 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
|
569 self.assertEqual(1, b) |
223
f5aca0917d60
DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
222
diff
changeset
|
570 |
222
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
571 |
224
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
572 def test_bitbucket_issue_113(self): |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
573 # Wrong serialization of PN VR |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
574 # 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
|
575 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/2/ |
314 | 576 |
577 # Make sure UTF-8 encoding is used | |
578 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
|
579 |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
580 UploadInstance(ORTHANC, 'Encodings/DavidClunie/SCSX1') |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
581 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
|
582 |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
583 # This is the WADO-RS testing |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
584 a = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
585 self.assertEqual(1, len(a)) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
586 |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
587 pn = a[0]['00100010'] # Patient name |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
588 self.assertEqual('PN', pn['vr']) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
589 self.assertEqual(1, len(pn['Value'])) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
590 self.assertEqual('Wang^XiaoDong', pn['Value'][0]['Alphabetic']) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
591 self.assertEqual(u'王^小東', pn['Value'][0]['Ideographic']) |
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 # This is the QIDO-RS testing |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
594 a = DoGet(ORTHANC, '/dicom-web/studies') |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
595 self.assertEqual(1, len(a)) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
596 |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
597 pn = a[0]['00100010'] # Patient name |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
598 self.assertEqual('PN', pn['vr']) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
599 self.assertEqual(1, len(pn['Value'])) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
600 self.assertEqual('Wang^XiaoDong', pn['Value'][0]['Alphabetic']) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
601 self.assertEqual(u'王^小東', pn['Value'][0]['Ideographic']) |
f5414254ccaa
test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
602 |
222
0f03ee6ffa80
DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
603 |
225 | 604 def test_bitbucket_issue_96(self): |
605 # WADO-RS RetrieveFrames rejects valid accept headers | |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
606 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=96 |
225 | 607 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/5/ |
608 | |
228 | 609 UploadInstance(ORTHANC, 'Brainix/Epi/IM-0001-0001.dcm') |
225 | 610 |
611 a = DoGet(ORTHANC, '/dicom-web/instances') | |
612 self.assertEqual(1, len(a)) | |
228 | 613 self.assertEqual(256, a[0]['00280010']['Value'][0]) # Rows |
614 self.assertEqual(256, a[0]['00280011']['Value'][0]) # Columns | |
615 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
|
616 |
225 | 617 url = a[0]['00081190']['Value'][0] |
618 | |
278
514785dacd6d
fix dicomweb tests with debian
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
277
diff
changeset
|
619 prefix = 'http://%s:%s' % (args.server, args.rest) |
225 | 620 self.assertTrue(url.startswith(prefix)) |
621 uri = url[len(prefix):] | |
622 | |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
623 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 0))) |
228 | 624 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 2))) |
625 | |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
626 b = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1)) |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
627 self.assertEqual(1, len(b)) |
228 | 628 self.assertEqual(256 * 256 * 2, len(b[0])) |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
629 self.assertEqual('ce394eb4d4de4eeef348436108101f3b', ComputeMD5(b[0])) |
225 | 630 |
228 | 631 c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1), |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
632 headers = { 'Accept' : 'multipart/related; type=application/octet-stream' }) |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
633 self.assertEqual(1, len(c)) |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
634 self.assertEqual(b[0], c[0]) |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
635 self.assertEqual('ce394eb4d4de4eeef348436108101f3b', ComputeMD5(c[0])) |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
636 |
228 | 637 c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1), |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
638 headers = { 'Accept' : 'multipart/related; type="application/octet-stream"' }) |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
639 self.assertEqual(1, len(c)) |
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
640 self.assertEqual(b[0], c[0]) |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
641 self.assertEqual('ce394eb4d4de4eeef348436108101f3b', ComputeMD5(c[0])) |
227
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
642 |
228 | 643 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1), |
644 headers = { 'Accept' : 'multipart/related; type="nope"' })) | |
645 | |
646 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1), | |
647 headers = { 'Accept' : 'multipart/related; type=nope' })) | |
648 | |
649 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1), | |
650 headers = { 'Accept' : 'nope' })) | |
651 | |
227
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
652 |
608 | 653 def test_bugzilla_219(self): |
654 # WADO-RS RetrieveFrames shall transcode ExplicitBigEndian to ExplicitLittleEndian | |
655 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=219 | |
656 | |
657 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 17, 0): | |
658 | |
659 UploadInstance(ORTHANC, 'TransferSyntaxes/1.2.840.10008.1.2.2.dcm') | |
660 | |
661 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 ) | |
662 self.assertIn('transfer-syntax=1.2.840.10008.1.2.1', r[0][1]['Content-Type']) | |
663 | |
664 | |
227
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
665 def test_qido_fields(self): |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
666 UploadInstance(ORTHANC, 'DummyCT.dcm') |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
667 |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
668 a = DoGet(ORTHANC, '/dicom-web/studies') |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
669 self.assertEqual(1, len(a)) |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
670 self.assertFalse('00280010' in a[0]) # Rows |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
671 |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
672 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
|
673 self.assertEqual(1, len(a)) |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
674 self.assertTrue('00280010' in a[0]) |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
675 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
|
676 |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
677 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
|
678 self.assertEqual(0, len(a)) |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
679 |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
680 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
|
681 self.assertEqual(1, len(a)) |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
682 self.assertTrue('00280010' in a[0]) |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
683 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
|
684 |
654 | 685 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 17, 0): |
686 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') | |
687 self.assertEqual(1, len(a)) | |
688 self.assertTrue('00081140' in a[0]) | |
689 self.assertEqual(2, len(a[0]['00081140']['Value'])) | |
690 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286241.719', a[0]['00081140']['Value'][0]['00081155']['Value'][0]) | |
691 | |
692 | |
226
230aede7f8d5
test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
225
diff
changeset
|
693 |
227
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
694 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
|
695 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
|
696 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
|
697 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
|
698 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
|
699 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
|
700 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
|
701 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
|
702 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
|
703 |
227
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
704 # 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
|
705 (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
|
706 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
|
707 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
|
708 |
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
|
709 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
|
710 |
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 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
|
712 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
|
713 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
|
714 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
|
715 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
|
716 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
|
717 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
|
718 |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
719 # 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
|
720 (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
|
721 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
|
722 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
|
723 |
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 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
|
725 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
|
726 |
875ff7460ae8
test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
226
diff
changeset
|
727 # 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
|
728 (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
|
729 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
|
730 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
|
731 |
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.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
|
733 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
|
734 |
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
|
735 # 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
|
736 (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
|
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['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
|
741 |
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
|
742 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
|
743 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
|
744 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
|
745 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
|
746 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
|
747 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
|
748 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
|
749 |
239
8980bd19e31d
dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
229
diff
changeset
|
750 |
8980bd19e31d
dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
229
diff
changeset
|
751 def test_allowed_methods(self): |
8980bd19e31d
dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
229
diff
changeset
|
752 self.assertEqual(0, len(DoGet(ORTHANC, '/dicom-web/studies'))) |
8980bd19e31d
dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
229
diff
changeset
|
753 |
549
bcd87bf59630
fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
754 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
|
755 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
|
756 self.assertEqual('GET,POST', e[0]['allow']) |
239
8980bd19e31d
dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
229
diff
changeset
|
757 |
549
bcd87bf59630
fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
758 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
|
759 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
|
760 self.assertEqual('GET,POST', e[0]['allow']) |
241
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
761 |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
762 |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
763 def test_add_server(self): |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
764 try: |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
765 DoDelete(ORTHANC, '/dicom-web/servers/hello') |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
766 except: |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
767 pass |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
768 |
277 | 769 try: |
770 DoDelete(ORTHANC, '/dicom-web/servers/google') # If "AllWindowsStart.sh" is used | |
771 except: | |
772 pass | |
773 | |
241
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
774 l = DoGet(ORTHANC, '/dicom-web/servers') |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
775 self.assertEqual(1, len(l)) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
776 self.assertTrue('sample' in l) |
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 url = 'http://localhost:8042/dicom-web/' |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
779 DoPut(ORTHANC, '/dicom-web/servers/hello', { |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
780 'Url': url, |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
781 'HttpHeaders' : { |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
782 'Hello' : 'World' |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
783 }, |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
784 'Username' : 'bob', |
242 | 785 'Password' : 'password', |
786 'UserProperty' : 'Test', | |
249
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
787 'HasDelete' : True, |
381
fd6d805eae37
new option "Timeout" in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
367
diff
changeset
|
788 'Timeout' : 66 # New in 1.6 |
241
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
789 }) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
790 |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
791 l = DoGet(ORTHANC, '/dicom-web/servers') |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
792 self.assertEqual(2, len(l)) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
793 self.assertTrue('sample' in l) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
794 self.assertTrue('hello' in l) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
795 |
249
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
796 o = DoGet(ORTHANC, '/dicom-web/servers/sample') |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
797 self.assertEqual(5, len(o)) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
798 self.assertTrue('stow' in o) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
799 self.assertTrue('retrieve' in o) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
800 self.assertTrue('get' in o) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
801 self.assertTrue('wado' in o) # New in 0.7 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
802 self.assertTrue('qido' in o) # New in 0.7 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
803 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
804 o = DoGet(ORTHANC, '/dicom-web/servers/hello') |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
805 self.assertEqual(6, len(o)) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
806 self.assertTrue('stow' in o) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
807 self.assertTrue('retrieve' in o) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
808 self.assertTrue('get' in o) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
809 self.assertTrue('wado' in o) # New in 0.7 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
810 self.assertTrue('qido' in o) # New in 0.7 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
811 self.assertTrue('delete' in o) # New in 0.7 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
812 |
241
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
813 s = DoGet(ORTHANC, '/dicom-web/servers?expand') |
381
fd6d805eae37
new option "Timeout" in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
367
diff
changeset
|
814 self.assertEqual(8, len(s['hello'])) |
241
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
815 self.assertEqual(url, s['hello']['Url']) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
816 self.assertEqual('bob', s['hello']['Username']) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
817 self.assertEqual(None, s['hello']['Password']) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
818 self.assertFalse(s['hello']['Pkcs11']) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
819 self.assertEqual(1, len(s['hello']['HttpHeaders'])) |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
820 self.assertTrue('Hello' in s['hello']['HttpHeaders']) |
242 | 821 self.assertEqual('Test', s['hello']['UserProperty']) |
249
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
822 self.assertEqual('1', s['hello']['HasDelete']) |
388
3ef44d201875
revert incorrect changeset 386
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
386
diff
changeset
|
823 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
|
824 |
adc6372b8820
dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
239
diff
changeset
|
825 DoDelete(ORTHANC, '/dicom-web/servers/hello') |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
826 |
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
827 |
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
828 def test_bitbucket_issue_143(self): |
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
829 # WADO-RS metadata request returns "500 Internal Server Error" |
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
830 # instead of "404 Not Found" for missing instance |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
831 # 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
|
832 UploadInstance(ORTHANC, 'Issue143.dcm') |
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
833 |
549
bcd87bf59630
fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
834 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
|
835 self.assertEqual(404, int(e[0]['status'])) |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
836 |
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
837 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
|
838 |
549
bcd87bf59630
fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
839 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
|
840 self.assertEqual(404, int(e[0]['status'])) |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
841 |
549
bcd87bf59630
fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
842 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
|
843 self.assertEqual(404, int(e[0]['status'])) |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
844 |
549
bcd87bf59630
fix DICOMweb tests: test_allowed_methods and test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
845 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
|
846 self.assertEqual(404, int(e[0]['status'])) |
246
e4e0e2ff91ae
test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
244
diff
changeset
|
847 |
248
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
848 |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
849 def test_encodings_qido(self): |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
850 # The "DefaultEncoding" condifuration option is set to "UTF8" |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
851 # 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
|
852 # 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
|
853 def GetPatientName(dicom, onlyAlphabetic): |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
854 i = UploadInstance(ORTHANC, dicom) ['ID'] |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
855 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
|
856 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
|
857 self.assertEqual(1, len(qido)) |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
858 self.assertEqual('CS', qido[0]['00080005']['vr']) |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
859 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
|
860 if onlyAlphabetic: |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
861 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
|
862 else: |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
863 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
|
864 return qido[0]['00100010']['Value'][0] |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
865 |
314 | 866 # Make sure UTF-8 encoding is used |
867 self.assertEqual('Utf8', DoPut(ORTHANC, '/tools/default-encoding', 'Utf8')) | |
868 | |
248
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
869 # 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
|
870 |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
871 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
|
872 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
|
873 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
|
874 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
|
875 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
|
876 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
|
877 |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
878 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
|
879 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
|
880 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
|
881 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
|
882 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
|
883 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
|
884 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
|
885 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
|
886 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
|
887 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
|
888 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
|
889 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
|
890 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
|
891 |
249
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
892 # 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
|
893 #self.assertEqual(u'山田^太郎', GetPatientName('Encodings/DavidClunie/SCSH32')['Ideographic']) |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
894 #self.assertEqual(u'やまだ^たろう', GetPatientName('Encodings/DavidClunie/SCSH32')['Phonetic']) |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
895 |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
896 |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
897 def test_encodings_wado_metadata(self): |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
898 # If querying the instance metadata, the "DefaultEncoding" |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
899 # configuration is not used, but the actual encoding |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
900 def GetEncoding(dicom, length): |
249
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
901 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
|
902 self.assertEqual(1, len(qido)) |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
903 self.assertEqual(length, len(qido[0]['00080005']['Value'])) |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
904 self.assertEqual('CS', qido[0]['00080005']['vr']) |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
905 return qido[0]['00080005']['Value'] |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
906 |
26c3a1ed935a
testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
246
diff
changeset
|
907 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
|
908 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
|
909 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
|
910 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
|
911 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
|
912 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
|
913 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
|
914 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
|
915 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
|
916 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
|
917 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
|
918 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
|
919 |
249
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
920 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
921 def test_rendered(self): |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
922 def RenderFrame(path, i): |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
923 return DoPost(ORTHANC, '/dicom-web/servers/sample/get', { |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
924 'Uri' : '%s/frames/%d/rendered' % (path, i) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
925 }) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
926 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
927 # This image has 76 frames |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
928 path = UploadAndGetWadoPath('Multiframe.dcm') |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
929 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
930 self.assertRaises(Exception, lambda: RenderFrame(path, 0)) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
931 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
932 frame1 = RenderFrame(path, 1) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
933 im = UncompressImage(frame1) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
934 self.assertEqual("L", im.mode) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
935 self.assertEqual(512, im.size[0]) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
936 self.assertEqual(512, im.size[1]) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
937 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
938 im = UncompressImage(RenderFrame(path, 76)) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
939 self.assertEqual("L", im.mode) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
940 self.assertEqual(512, im.size[0]) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
941 self.assertEqual(512, im.size[1]) |
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 self.assertRaises(Exception, lambda: RenderFrame(path, 77)) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
944 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
945 defaultFrame = DoPost(ORTHANC, '/dicom-web/servers/sample/get', { |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
946 'Uri' : '%s/rendered' % path |
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 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
949 self.assertEqual(len(frame1), len(defaultFrame)) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
950 self.assertEqual(frame1, defaultFrame) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
951 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
952 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
953 # This image has 1 frame |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
954 path = UploadAndGetWadoPath('Phenix/IM-0001-0001.dcm') |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
955 |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
956 self.assertRaises(Exception, lambda: RenderFrame(path, 0)) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
957 self.assertRaises(Exception, lambda: RenderFrame(path, 2)) |
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 frame1 = RenderFrame(path, 1) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
960 im = UncompressImage(frame1) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
961 self.assertEqual("L", im.mode) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
962 self.assertEqual(512, im.size[0]) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
963 self.assertEqual(358, im.size[1]) |
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 defaultFrame = DoPost(ORTHANC, '/dicom-web/servers/sample/get', { |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
966 'Uri' : '%s/rendered' % path |
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 self.assertEqual(len(frame1), len(defaultFrame)) |
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
970 self.assertEqual(frame1, defaultFrame) |
259
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
971 |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
972 |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
973 def test_qido_parent_attributes(self): |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
974 UploadInstance(ORTHANC, 'Brainix/Flair/IM-0001-0001.dcm') |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
975 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
|
976 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
|
977 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
|
978 |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
979 a = DoGet(ORTHANC, '/dicom-web/studies') |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
980 self.assertEqual(1, len(a)) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
981 self.assertFalse('00080018' in a[0]) # SOPInstanceUID |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
982 self.assertFalse('0020000E' in a[0]) # SeriesInstanceUID |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
983 self.assertEqual(study, a[0]['0020000D']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
984 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic']) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
985 |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
986 a = DoGet(ORTHANC, '/dicom-web/studies?0020000D=%s' % study) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
987 self.assertEqual(1, len(a)) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
988 self.assertFalse('00080018' in a[0]) # SOPInstanceUID |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
989 self.assertFalse('0020000E' in a[0]) # SeriesInstanceUID |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
990 self.assertEqual(study, a[0]['0020000D']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
991 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic']) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
992 |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
993 a = DoGet(ORTHANC, '/dicom-web/series') |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
994 self.assertEqual(1, len(a)) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
995 self.assertFalse('00080018' in a[0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
996 self.assertEqual(study, a[0]['0020000D']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
997 self.assertEqual(series, a[0]['0020000E']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
998 self.assertEqual('MR', a[0]['00080060']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
999 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic']) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1000 |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1001 a = DoGet(ORTHANC, '/dicom-web/instances') |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1002 self.assertEqual(1, len(a)) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1003 self.assertEqual(study, a[0]['0020000D']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1004 self.assertEqual(series, a[0]['0020000E']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1005 self.assertEqual(instance, a[0]['00080018']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1006 self.assertEqual('MR', a[0]['00080060']['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/studies/%s/series' % study) |
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/studies/%s/series/%s/instances' % (study, series)) |
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 # "If {StudyInstanceUID} is not specified, all Study-level |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1026 # attributes specified in Table 6.7.1-2" => Here, |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1027 # {StudyInstanceUID} *is* specified, so we must *not* get the |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1028 # PatientName. |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1029 # 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
|
1030 a = DoGet(ORTHANC, '/dicom-web/series?0020000D=%s' % study) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1031 self.assertEqual(1, len(a)) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1032 self.assertFalse('00100010' in a[0]) # PatientName |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1033 self.assertEqual(study, a[0]['0020000D']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1034 self.assertEqual(series, a[0]['0020000E']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1035 self.assertEqual('MR', a[0]['00080060']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1036 |
487 | 1037 # if we ask explicitely for the Patient and Study tags, we must get it |
1038 a = DoGet(ORTHANC, '/dicom-web/series?0020000D=%s&includefield=00100010&includefield=00080020' % study) | |
1039 self.assertEqual(1, len(a)) | |
1040 self.assertTrue('00100010' in a[0]) # PatientName | |
1041 self.assertTrue('00080020' in a[0]) # StudyDate | |
1042 | |
1043 # if {StudyInstanceUID} *is not* specified, we must get the PatientName | |
1044 a = DoGet(ORTHANC, '/dicom-web/series') | |
1045 self.assertTrue('00100010' in a[0]) # PatientName | |
1046 | |
259
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1047 # 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
|
1048 a = DoGet(ORTHANC, '/dicom-web/instances?0020000D=%s' % study) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1049 self.assertEqual(1, len(a)) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1050 self.assertFalse('00100010' in a[0]) # PatientName |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1051 self.assertEqual(study, a[0]['0020000D']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1052 self.assertEqual(series, a[0]['0020000E']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1053 self.assertEqual('MR', a[0]['00080060']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1054 |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1055 a = DoGet(ORTHANC, '/dicom-web/instances?0020000E=%s' % series) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1056 self.assertEqual(1, len(a)) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1057 self.assertFalse('00080060' in a[0]) # Modality |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1058 self.assertEqual(study, a[0]['0020000D']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1059 self.assertEqual(series, a[0]['0020000E']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1060 self.assertEqual('BRAINIX', a[0]['00100010']['Value'][0]['Alphabetic']) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1061 |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1062 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
|
1063 self.assertEqual(1, len(a)) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1064 self.assertFalse('00100010' in a[0]) # PatientName |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1065 self.assertFalse('00080060' in a[0]) # Modality |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1066 self.assertEqual(study, a[0]['0020000D']['Value'][0]) |
298f80c6ccc4
test_qido_parent_attributes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
249
diff
changeset
|
1067 self.assertEqual(series, a[0]['0020000E']['Value'][0]) |
261
b8cdb0aef4b9
test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
260
diff
changeset
|
1068 |
487 | 1069 # if we ask explicitely for the Patient and Study tags, we must get it |
1070 a = DoGet(ORTHANC, '/dicom-web/instances?0020000D=%s&includefield=00100010&includefield=00080020' % study) | |
1071 self.assertEqual(1, len(a)) | |
1072 self.assertTrue('00100010' in a[0]) # PatientName | |
1073 self.assertTrue('00080020' in a[0]) # StudyDate | |
1074 | |
1075 # if {StudyInstanceUID} *is not* specified, we must get all Study, Series and Patient tags | |
1076 a = DoGet(ORTHANC, '/dicom-web/instances') | |
1077 self.assertTrue('00100010' in a[0]) # PatientName | |
1078 self.assertTrue('00080020' in a[0]) # StudyDate | |
1079 self.assertTrue('00080060' in a[0]) # Modality | |
1080 | |
261
b8cdb0aef4b9
test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
260
diff
changeset
|
1081 |
270
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1082 #@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
|
1083 def test_bitbucket_issue_164(self): |
270
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1084 # WARNING - This makes GDCM 2.8.4 crash |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
1085 # 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
|
1086 UploadInstance(ORTHANC, 'Issue164.dcm') |
b8cdb0aef4b9
test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
260
diff
changeset
|
1087 |
b8cdb0aef4b9
test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
260
diff
changeset
|
1088 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
|
1089 self.assertEqual(1, len(p)) |
b8cdb0aef4b9
test_bitbucket_issue_164
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
260
diff
changeset
|
1090 self.assertEqual(743 * 975 * 3, len(p[0])) |
304 | 1091 |
539
ef41b62b456e
updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents:
537
diff
changeset
|
1092 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
|
1093 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
|
1094 |
543 | 1095 # TODO |
1096 # # 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) | |
1097 # if IsOrthancVersionAbove(ORTHANC, 1, XX, 1): | |
1098 # expectedDcmtkChecksum = '7535a11e7da0fa590c467ac9d323c5c1' | |
1099 # else: | |
1100 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
|
1101 |
304 | 1102 if HasGdcmPlugin(ORTHANC): |
1103 self.assertTrue(ComputeMD5(p[0]) in [ | |
1104 '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
|
1105 expectedDcmtkChecksum # Fallback to DCMTK |
304 | 1106 ]) |
1107 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
|
1108 self.assertEqual(expectedDcmtkChecksum, ComputeMD5(p[0])) # DCMTK |
270
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1109 |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1110 |
271 | 1111 def test_bitbucket_issue_168(self): |
276 | 1112 # "Plugins can't read private tags from the configuration |
1113 # file" This test will fail if DCMTK <= 3.6.1 (e.g. on Ubuntu | |
1114 # 16.04), or if Orthanc <= 1.5.8 | |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
1115 # 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
|
1116 |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1117 UploadInstance(ORTHANC, 'Issue168.dcm') |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1118 |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1119 a = DoGet(ORTHANC, '/dicom-web/studies') |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1120 self.assertEqual(1, len(a)) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1121 self.assertFalse('00090010' in a[0]) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1122 self.assertFalse('00091001' in a[0]) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1123 self.assertEqual('20170404', a[0]['00080020']['Value'][0]) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1124 |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1125 a = DoGet(ORTHANC, '/dicom-web/studies?includefield=00091001') |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1126 self.assertEqual(1, len(a)) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1127 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
|
1128 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
|
1129 self.assertEqual('DS', a[0]['00091001']['vr']) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1130 self.assertEqual(1, len(a[0]['00091001']['Value'])) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1131 self.assertAlmostEqual(98.41, a[0]['00091001']['Value'][0]) |
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 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
|
1134 self.assertEqual(1, len(a)) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1135 self.assertTrue('00090010' in a[0]) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1136 self.assertEqual('LO', a[0]['00090010']['vr']) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1137 self.assertEqual(1, len(a[0]['00090010']['Value'])) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1138 self.assertEqual('Lunit', a[0]['00090010']['Value'][0]) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1139 self.assertTrue('00091001' in a[0]) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1140 self.assertEqual('DS', a[0]['00091001']['vr']) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1141 self.assertEqual(1, len(a[0]['00091001']['Value'])) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1142 self.assertAlmostEqual(98.41, a[0]['00091001']['Value'][0]) |
249
24e5c8ca9440
DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
248
diff
changeset
|
1143 |
270
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1144 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
|
1145 self.assertEqual(0, len(a)) |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1146 |
082f35cb4459
test_bitbuck_issue_168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
261
diff
changeset
|
1147 |
272
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1148 def test_rendered_studies_series(self): |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1149 i = UploadInstance(ORTHANC, 'Phenix/IM-0001-0001.dcm') ['ID'] |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1150 study = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['StudyInstanceUID'] |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1151 series = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['SeriesInstanceUID'] |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1152 instance = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['SOPInstanceUID'] |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1153 |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1154 a = DoPost(ORTHANC, '/dicom-web/servers/sample/get', { |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1155 '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
|
1156 }) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1157 |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1158 im = UncompressImage(a) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1159 self.assertEqual("L", im.mode) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1160 self.assertEqual(512, im.size[0]) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1161 self.assertEqual(358, im.size[1]) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1162 |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1163 b = DoPost(ORTHANC, '/dicom-web/servers/sample/get', { |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1164 'Uri' : '/studies/%s/series/%s/rendered' % (study, series) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1165 }) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1166 |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1167 self.assertEqual(len(a), len(b)) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1168 self.assertEqual(a, b) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1169 |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1170 c = DoPost(ORTHANC, '/dicom-web/servers/sample/get', { |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1171 'Uri' : '/studies/%s/rendered' % study |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1172 }) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1173 |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1174 self.assertEqual(len(a), len(c)) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1175 self.assertEqual(a, c) |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1176 |
a94b0409fdac
test_rendered_studies_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
271
diff
changeset
|
1177 |
273
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1178 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
|
1179 # "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
|
1180 # 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
|
1181 |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1182 UploadInstance(ORTHANC, 'DummyCT.dcm') |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1183 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
|
1184 |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1185 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
|
1186 |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1187 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
|
1188 headers = { 'Accept' : 'application/json, application/dicom+json' }))) |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1189 |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1190 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study, |
274 | 1191 headers = { 'Accept' : 'application/json' }))) |
1192 | |
1193 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study, | |
1194 headers = { 'Accept' : 'application/dicom+json' }))) | |
1195 | |
1196 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
|
1197 headers = { 'Accept' : 'toto, application/dicom+json' }))) |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1198 |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1199 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
|
1200 headers = { 'Accept' : 'application/json, tata' }))) |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1201 |
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1202 self.assertRaises(Exception, lambda: DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study, |
274 | 1203 headers = { 'Accept' : 'toto' })) |
1204 | |
1205 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
|
1206 headers = { 'Accept' : 'toto, tata' })) |
275 | 1207 |
1208 # https://groups.google.com/d/msg/orthanc-users/9o5kItsMQI0/Og6B27YyBgAJ | |
1209 self.assertEqual(1, len(DoGetMultipart(ORTHANC, '/dicom-web/studies/%s/metadata' % study, | |
1210 headers = { 'Accept' : 'multipart/related;type=application/dicom+xml' }))) | |
1211 | |
1212 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study, | |
1213 headers = { 'Accept' : 'application/json, application/dicom+xml' }))) | |
1214 | |
1215 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study, | |
1216 headers = { 'Accept' : 'application/dicom+xml, application/json' }))) | |
284
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1217 |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1218 |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1219 |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1220 def test_bitbucket_issue_56(self): |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1221 # "Case-insensitive matching over accents" => DICOMweb part |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1222 # from AlexanderM on 2020-03-20 |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
1223 # 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
|
1224 UploadInstance(ORTHANC, 'Issue56-NoPixelData.dcm') |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1225 |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1226 self.assertEqual(1, len(DoPost(ORTHANC, '/tools/find', { |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1227 'Level' : 'Patient', |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1228 'Query' : { |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1229 'PatientName' : 'Гусева*', |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1230 }, |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1231 }))) |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1232 |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1233 self.assertEqual(1, len(DoPost(ORTHANC, '/tools/find', { |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1234 'Level' : 'Patient', |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1235 'Query' : { |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1236 'PatientName' : 'гусева*', |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1237 }, |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1238 }))) |
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 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
|
1241 headers = { 'accept' : 'application/json' }))) |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1242 |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1243 # This line is the issue |
284
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1244 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
|
1245 headers = { 'accept' : 'application/json' }))) |
7fa5c7a03137
added test for issue 56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
278
diff
changeset
|
1246 |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1247 |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1248 def test_frames_transcoding(self): |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1249 ACCEPT = { |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1250 '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
|
1251 '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
|
1252 '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
|
1253 '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
|
1254 '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
|
1255 '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
|
1256 } |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1257 |
321
3c8c6b41eec4
dealing with Content-Location in test_frames_transcoding of DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
319
diff
changeset
|
1258 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
|
1259 truthRGB = Image.open(GetDatabasePath('TransferSyntaxes/1.2.840.10008.1.2.4.50.png')) |
543 | 1260 |
1261 # TODO | |
1262 # # 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) | |
1263 # with open(GetDatabasePath('TransferSyntaxes/1.2.840.10008.1.2.4.50.YBR.raw'), 'rb') as f: | |
1264 # 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
|
1265 |
ef41b62b456e
updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents:
537
diff
changeset
|
1266 # 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
|
1267 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri, |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1268 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
|
1269 returnHeaders = True) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1270 self.assertEqual(1, len(a)) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1271 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
|
1272 self.assertEqual('%s%s/frames/1' % (ORTHANC['Url'], uri), |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1273 a[0][1]['Content-Location']) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1274 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
|
1275 'multipart/related; type=%s' % a[0][1]['Content-Type']) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1276 self.assertEqual(53476, len(a[0][0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1277 self.assertEqual('142fdb8a1dc2aa7e6b8952aa294a6e22', ComputeMD5(a[0][0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1278 |
539
ef41b62b456e
updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents:
537
diff
changeset
|
1279 # second test: no accept header -> defaults to raw explicit |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1280 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1281 self.assertEqual(1, len(a)) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1282 self.assertEqual(480 * 640 * 3, len(a[0])) |
304 | 1283 |
539
ef41b62b456e
updated DicomWEB tests for YBR images that are not transformed into RGB anymore
Alain Mazy <am@osimis.io>
parents:
537
diff
changeset
|
1284 # Orthanc is now returning the YBR image instead of the RGB |
543 | 1285 # TODO |
1286 # # 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) | |
1287 # if IsOrthancVersionAbove(ORTHANC, 1, XX, 1) and not HasGdcmPlugin(ORTHANC): | |
1288 # # GetMaxImageDifference does not work with YBR images -> strict comparison with the output of dcmdjpeg | |
1289 # self.assertEqual('d4aacc6c7758c7c968a4fc8d59b041d5', ComputeMD5(a[0])) | |
1290 # else: | |
1291 # http://effbot.org/zone/pil-comparing-images.htm | |
1292 img = Image.frombytes('RGB', [ 640, 480 ], a[0]) | |
1293 self.assertLessEqual(GetMaxImageDifference(img, truthRGB), 2) | |
304 | 1294 |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1295 ACCEPT2 = copy.deepcopy(ACCEPT) |
304 | 1296 if HasGdcmPlugin(ORTHANC): |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1297 IS_GDCM = True |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1298 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
|
1299 del ACCEPT2['1.2.840.10008.1.2'] |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1300 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
|
1301 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
|
1302 self.assertEqual('dfdc79f5070926bbb8ac079ee91f5b91', ComputeMD5(a[0])) |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1303 IS_GDCM = False |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1304 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1305 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri, |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1306 headers = { 'Accept' : ACCEPT2['1.2.840.10008.1.2.1'] }) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1307 self.assertEqual(1, len(a)) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1308 self.assertEqual(480 * 640 * 3, len(a[0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1309 |
543 | 1310 # TODO |
1311 # # 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) | |
1312 # if IsOrthancVersionAbove(ORTHANC, 1, XX, X) and not HasGdcmPlugin(ORTHANC): | |
1313 # # GetMaxImageDifference does not work with YBR images -> strict comparison with the output of dcmdjpeg | |
1314 # self.assertEqual('d4aacc6c7758c7c968a4fc8d59b041d5', ComputeMD5(a[0])) | |
1315 # else: | |
1316 # http://effbot.org/zone/pil-comparing-images.htm | |
1317 img = Image.frombytes('RGB', [ 640, 480 ], a[0]) | |
1318 self.assertLessEqual(GetMaxImageDifference(img, truthRGB), 2) | |
304 | 1319 |
543 | 1320 # TODO: if not IS_GDCM and not IsOrthancVersionAbove(ORTHANC, 1, XX, X): |
1321 if not IS_GDCM: | |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1322 self.assertEqual('dfdc79f5070926bbb8ac079ee91f5b91', ComputeMD5(a[0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1323 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1324 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1325 # Test download using the same transfer syntax |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1326 RESULTS = { |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1327 '1.2.840.10008.1.2' : 'f54c7ea520ab3ec32b6303581ecd262f', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1328 '1.2.840.10008.1.2.1' : '4b350b9353a93c747917c7c3bf9b8f44', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1329 '1.2.840.10008.1.2.4.50' : '142fdb8a1dc2aa7e6b8952aa294a6e22', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1330 '1.2.840.10008.1.2.4.51' : '8b37945d75f9d2899ed868bdba429a0d', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1331 '1.2.840.10008.1.2.4.57' : '75c84823eddb560d127b1d24c9406f30', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1332 '1.2.840.10008.1.2.4.70' : '2c35726328f0200396e583a0038b0269', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1333 } |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1334 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1335 if IS_GDCM: |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1336 # 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
|
1337 # and only the first one was returned => the MD5 below is BAD |
304 | 1338 #RESULTS['1.2.840.10008.1.2.4.51'] = '901963a322a817946b074f9ed0afa060' |
1339 pass | |
1340 | |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1341 for syntax in ACCEPT2: |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1342 uri = '/dicom-web%s' % UploadAndGetWadoPath('TransferSyntaxes/%s.dcm' % syntax) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1343 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri, |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1344 headers = { 'Accept' : ACCEPT2[syntax] }) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1345 self.assertEqual(1, len(a)) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1346 self.assertEqual(RESULTS[syntax], ComputeMD5(a[0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1347 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1348 # 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
|
1349 uri = 'dicom-web%s' % UploadAndGetWadoPath('KarstenHilbertRF.dcm') |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1350 for syntax in ACCEPT2: |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1351 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri, |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1352 headers = { 'Accept' : ACCEPT2[syntax] }, |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1353 returnHeaders = True) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1354 self.assertEqual(1, len(a)) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1355 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
|
1356 self.assertEqual('%s%s/frames/1' % (ORTHANC['Url'], uri), |
297
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1357 a[0][1]['Content-Location']) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1358 self.assertEqual(ACCEPT[syntax], |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1359 'multipart/related; type=%s' % a[0][1]['Content-Type']) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1360 if IS_GDCM: |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1361 self.assertEqual({ |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1362 '1.2.840.10008.1.2' : '1c8cebde0c74450ce4dfb75dd52ddad7', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1363 '1.2.840.10008.1.2.1' : '1c8cebde0c74450ce4dfb75dd52ddad7', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1364 '1.2.840.10008.1.2.4.50' : 'f4d145e5f33fbd39375ce0f91453d6cc', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1365 '1.2.840.10008.1.2.4.51' : 'f4d145e5f33fbd39375ce0f91453d6cc', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1366 '1.2.840.10008.1.2.4.57' : 'dc55800ce1a8ac556c266cdb26d75757', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1367 '1.2.840.10008.1.2.4.70' : 'dc55800ce1a8ac556c266cdb26d75757', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1368 } [syntax], ComputeMD5(a[0][0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1369 else: |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1370 self.assertEqual({ |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1371 '1.2.840.10008.1.2' : '1c8cebde0c74450ce4dfb75dd52ddad7', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1372 '1.2.840.10008.1.2.1' : '1c8cebde0c74450ce4dfb75dd52ddad7', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1373 '1.2.840.10008.1.2.4.50' : '0a0ab74fe7c68529bdd416fc9e5e742a', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1374 '1.2.840.10008.1.2.4.51' : '33d1ab2fe169c5b5ba932a9bbc3c6306', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1375 '1.2.840.10008.1.2.4.57' : '3d21c969da846ca41e0498a0dcfad061', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1376 '1.2.840.10008.1.2.4.70' : '49d5353c8673208629847ad45a855557', |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1377 } [syntax], ComputeMD5(a[0][0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1378 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1379 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1380 # JPEG image with many fragments for 2 frames |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1381 uri = '/dicom-web%s' % UploadAndGetWadoPath('LenaTwiceWithFragments.dcm') |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1382 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1383 a = DoGetMultipart(ORTHANC, '%s/frames/1' % uri, |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1384 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
|
1385 self.assertEqual(1, len(a)) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1386 self.assertEqual(69214, len(a[0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1387 self.assertEqual('0eaf36d4881c513ca70b6684bfaa5b08', ComputeMD5(a[0])) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1388 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1389 b = DoGetMultipart(ORTHANC, '%s/frames/2' % uri, |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1390 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
|
1391 self.assertEqual(1, len(b)) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1392 self.assertEqual(a[0], b[0]) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1393 |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1394 b = DoGetMultipart(ORTHANC, '%s/frames/1,2' % uri, |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1395 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
|
1396 self.assertEqual(2, len(b)) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1397 self.assertEqual(a[0], b[0]) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1398 self.assertEqual(a[0], b[1]) |
f95cd3af1c7a
DICOMweb: test_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
284
diff
changeset
|
1399 |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1400 |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1401 def test_wado_transcoding(self): |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1402 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
|
1403 |
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
|
1404 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
|
1405 |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1406 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s' % uri, |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1407 headers = { 'Accept' : 'nope' })) |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1408 |
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
|
1409 # 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
|
1410 # 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
|
1411 # 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
|
1412 # 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
|
1413 # 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
|
1414 # Explicit. |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1415 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
|
1416 headers = { }) |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1417 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
|
1418 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
|
1419 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
|
1420 uncompressedSize = len(a[0]) |
297
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 a = DoGetMultipart(ORTHANC, '%s' % uri, |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1423 headers = { 'Accept' : 'multipart/related' }) |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1424 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
|
1425 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
|
1426 self.assertEqual(uncompressedSize, len(a[0])) |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1427 |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1428 a = DoGetMultipart(ORTHANC, '%s' % uri, |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1429 headers = { 'Accept' : 'multipart/related; type=application/dicom' }) |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1430 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
|
1431 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
|
1432 self.assertEqual(uncompressedSize, len(a[0])) |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1433 |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1434 a = DoGetMultipart(ORTHANC, '%s' % uri, |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1435 headers = { 'Accept' : 'multipart/related; type=application/dicom; transfer-syntax=*' }) |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1436 self.assertEqual(1, len(a)) |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1437 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
|
1438 self.assertEqual(compressedSize, len(a[0])) |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1439 |
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 # Use source transfer syntax |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1441 a = DoGetMultipart(ORTHANC, '%s' % uri, |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1442 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
|
1443 self.assertEqual(1, len(a)) |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1444 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
|
1445 self.assertEqual(compressedSize, len(a[0])) |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1446 |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1447 a = DoGetMultipart(ORTHANC, '%s' % uri, |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1448 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
|
1449 self.assertEqual(1, len(a)) |
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
1450 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
|
1451 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
|
1452 |
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 # 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
|
1454 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
|
1455 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
|
1456 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
|
1457 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
|
1458 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
|
1459 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
|
1460 |
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
|
1461 |
325
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1462 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
|
1463 # 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
|
1464 |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1465 # 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
|
1466 # $ 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
|
1467 # 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
|
1468 |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1469 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
|
1470 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
|
1471 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
|
1472 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
|
1473 |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1474 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
|
1475 truth = UncompressImage(f.read()) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1476 |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1477 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
|
1478 self.assertEqual('JPEG', im1.format) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1479 |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1480 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
|
1481 self.assertEqual('PNG', im2.format) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1482 |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1483 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
|
1484 self.assertEqual('JPEG', im3.format) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1485 |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1486 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
|
1487 headers = { 'Accept' : 'image/png' }) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1488 self.assertEqual('PNG', im4.format) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1489 |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1490 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
|
1491 self.assertEqual('JPEG', im5.format) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1492 |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1493 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
|
1494 self.assertEqual('PNG', im6.format) |
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 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
|
1497 self.assertEqual('L', im.mode) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1498 self.assertEqual(512, im.size[0]) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1499 self.assertEqual(512, im.size[1]) |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1500 |
b7c2fb8e1b57
DICOMweb: test_compare_wado_uri_and_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
321
diff
changeset
|
1501 # 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
|
1502 # 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
|
1503 # 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
|
1504 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
|
1505 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
|
1506 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
|
1507 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
|
1508 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
|
1509 self.assertTrue(ImageChops.difference(im2, im6).getbbox() is None) |
345 | 1510 |
1511 bbox = ImageChops.difference(im2, truth).getbbox() | |
346 | 1512 if bbox != None: |
1513 # Tolerance of just 1 pixel of difference (needed on Windows) | |
1514 #print(im2.getpixel((238,275))) # => 255 | |
1515 #print(truth.getpixel((238,275))) # => 254 | |
1516 self.assertLessEqual(abs(bbox[2] - bbox[0]), 1) | |
1517 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
|
1518 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1519 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1520 def test_issue_195(self): |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1521 # This fails on Orthanc <= 1.9.2 |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
1522 # 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
|
1523 a = UploadInstance(ORTHANC, 'Issue195.dcm') ['ID'] |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1524 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
|
1525 headers = { 'Accept' : 'application/dicom+json' }) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1526 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1527 self.assertEqual(1, len(b)) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1528 self.assertEqual(5, len(b[0])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1529 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1530 # 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
|
1531 self.assertEqual(2, len(b[0]["00080018"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1532 self.assertEqual("UI", b[0]["00080018"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1533 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
|
1534 b[0]["00080018"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1535 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1536 self.assertEqual(2, len(b[0]["0020000D"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1537 self.assertEqual("UI", b[0]["0020000D"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1538 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
|
1539 b[0]["0020000D"]["Value"][0]) |
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 self.assertEqual(2, len(b[0]["0020000E"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1542 self.assertEqual("UI", b[0]["0020000E"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1543 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
|
1544 b[0]["0020000E"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1545 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1546 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
|
1547 self.assertEqual("LO", b[0]["00081030"]["vr"]) |
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(2, len(b[0]["0008103E"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1550 self.assertEqual("LO", b[0]["0008103E"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1551 self.assertEqual("Hello1", b[0]["0008103E"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1552 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1553 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1554 DoDelete(ORTHANC, 'instances/%s' % a) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1555 a = UploadInstance(ORTHANC, 'Issue195-bis.dcm') ['ID'] |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1556 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
|
1557 b = DoGet(ORTHANC, '%s/metadata' % URI, |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1558 headers = { 'Accept' : 'application/dicom+json' }) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1559 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1560 self.assertEqual(1, len(b)) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1561 self.assertEqual(5, len(b[0])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1562 |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1563 # 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
|
1564 self.assertEqual(2, len(b[0]["00080018"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1565 self.assertEqual("UI", b[0]["00080018"]["vr"]) |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1566 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
|
1567 b[0]["00080018"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1568 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1569 self.assertEqual(2, len(b[0]["0020000D"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1570 self.assertEqual("UI", b[0]["0020000D"]["vr"]) |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1571 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
|
1572 b[0]["0020000D"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1573 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1574 self.assertEqual(2, len(b[0]["0020000E"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1575 self.assertEqual("UI", b[0]["0020000E"]["vr"]) |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1576 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
|
1577 b[0]["0020000E"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1578 |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1579 self.assertEqual(2, len(b[0]["00084567"])) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1580 self.assertEqual("UN", b[0]["00084567"]["vr"]) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1581 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
|
1582 b[0]["00084567"]["BulkDataURI"]) |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1583 |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1584 c = DoGet(ORTHANC, '%s/bulk/00084567' % URI) |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1585 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
|
1586 index = c.find('\r\n\r\n') |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1587 self.assertEqual(0x42, ord(c[index + 4])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1588 self.assertEqual(0x00, ord(c[index + 5])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1589 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
398
diff
changeset
|
1590 # 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
|
1591 self.assertEqual(1, len(b[0]["00084565"])) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1592 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
|
1593 |
273
afcd550a9216
test_multiple_mime_accept_wado_rs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
272
diff
changeset
|
1594 |
434
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1595 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1596 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1597 def test_multiframe_windowing(self): |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1598 # Fixed in DICOMweb 1.7 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1599 def GetLinear(x, c, w): |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1600 # 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
|
1601 ymin = 0.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1602 ymax = 255.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1603 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
|
1604 return ymin |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1605 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
|
1606 return ymax |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1607 else: |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1608 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
|
1609 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1610 def GetLinearExact(x, c, w): |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1611 # 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
|
1612 ymin = 0.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1613 ymax = 255.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1614 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
|
1615 return ymin |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1616 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
|
1617 return ymax |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1618 else: |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1619 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
|
1620 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1621 def GetSigmoid(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.3.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 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
|
1626 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1627 self.assertAlmostEqual(GetLinear(10, 0, 100), 154.54545454545456) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1628 self.assertAlmostEqual(GetLinear(-1000, 2048, 4096), 0) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1629 self.assertAlmostEqual(GetLinear(5096, 2048, 4096), 255) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1630 self.assertAlmostEqual(GetLinear(333, 2048, 4096), 20.7362637362637) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1631 self.assertAlmostEqual(GetLinear(16, 127, 256), 17) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1632 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1633 self.assertAlmostEqual(GetLinearExact(-1000, 2048, 4096), 0) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1634 self.assertAlmostEqual(GetLinearExact(5096, 2048, 4096), 255) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1635 self.assertAlmostEqual(GetLinearExact(150, 127, 256), 22.91015625) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1636 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1637 self.assertAlmostEqual(GetSigmoid(150, 127, 256), 150.166728345797) |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1638 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1639 UploadInstance(ORTHANC, 'MultiframeWindowing.dcm') |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1640 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
|
1641 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
|
1642 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
|
1643 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1644 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
|
1645 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
|
1646 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
|
1647 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
|
1648 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
|
1649 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1650 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
|
1651 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
|
1652 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
|
1653 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
|
1654 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
|
1655 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1656 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
|
1657 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
|
1658 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
|
1659 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
|
1660 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
|
1661 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1662 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
|
1663 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
|
1664 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
|
1665 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
|
1666 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
|
1667 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1668 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
|
1669 ri = 100.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1670 rs = 1.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1671 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
|
1672 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
|
1673 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
|
1674 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
|
1675 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1676 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
|
1677 ri = 0.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1678 rs = 2.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1679 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
|
1680 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
|
1681 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
|
1682 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
|
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/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
|
1685 ri = 100.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1686 rs = 2.0 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1687 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
|
1688 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
|
1689 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
|
1690 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
|
1691 |
2c142e070f19
dicomweb: added test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
1692 |
532 | 1693 def test_forwarded_headers(self): |
1694 study = UploadInstance(ORTHANC, 'ColorTestImageJ.dcm')['ParentStudy'] | |
1695 studyId = DoGet(ORTHANC, '/studies/%s' % study)['MainDicomTags']['StudyInstanceUID'] | |
1696 | |
1697 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId) | |
533 | 1698 self.assertIn(ORTHANC['Url'], m[0][u'7FE00010']['BulkDataURI']) |
532 | 1699 |
1700 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId, headers= { | |
1701 'host': 'my-domain' | |
1702 }) | |
1703 self.assertIn("http://my-domain/dicom-web", m[0][u'7FE00010']['BulkDataURI']) | |
1704 | |
1705 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId, headers= { | |
1706 'forwarded': 'host=my-domain;proto=https' | |
1707 }) | |
1708 self.assertIn("https://my-domain/dicom-web", m[0][u'7FE00010']['BulkDataURI']) | |
1709 | |
1710 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 13, 1): | |
1711 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId, headers= { | |
1712 'X-Forwarded-Host': 'my-domain', | |
1713 'X-Forwarded-Proto': 'https' | |
1714 }) | |
1715 self.assertIn("https://my-domain/dicom-web", m[0][u'7FE00010']['BulkDataURI']) | |
1716 | |
1717 | |
575 | 1718 def test_full_mode_cache(self): |
1719 study = UploadInstance(ORTHANC, 'ColorTestImageJ.dcm')['ParentStudy'] | |
1720 studyId = DoGet(ORTHANC, '/studies/%s' % study)['MainDicomTags']['StudyInstanceUID'] | |
1721 | |
1722 # wait for the StableSeries to happen to pre-compute the series/metadata | |
1723 time.sleep(4) | |
1724 | |
1725 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyId) | |
1726 self.assertIn(ORTHANC['Url'], m[0][u'7FE00010']['BulkDataURI']) | |
1727 | |
1728 | |
551
c8d2775f0d02
added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
549
diff
changeset
|
1729 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
|
1730 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
|
1731 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
|
1732 |
0ad170c7b6c8
reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
555
diff
changeset
|
1733 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
|
1734 '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
|
1735 }) |
0ad170c7b6c8
reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
555
diff
changeset
|
1736 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
|
1737 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
|
1738 |
0ad170c7b6c8
reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
555
diff
changeset
|
1739 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
|
1740 '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
|
1741 }) |
0ad170c7b6c8
reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
555
diff
changeset
|
1742 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
|
1743 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
|
1744 |
561 | 1745 if IsPluginVersionAbove(ORTHANC, "dicom-web", 1, 13, 1) and IsOrthancVersionAbove(ORTHANC, 1, 12, 1): |
1746 # This fails on DICOMweb <= 1.13 because of the "; q=.2", | |
1747 # since multiple accepts were not supported | |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
586
diff
changeset
|
1748 # https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=216 |
561 | 1749 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyUid, headers = { |
1750 'accept': 'text/html, image/gif, image/jpeg, */*; q=.2, */*; q=.2' | |
1751 }) | |
1752 self.assertEqual(1, len(m)) | |
1753 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
|
1754 |
561 | 1755 # This fails on Orthanc <= 1.12.0 because of the ";q=0.9" |
1756 m = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % studyUid, headers = { | |
1757 'accept': 'text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8' | |
1758 }) | |
1759 self.assertEqual(1, len(m)) | |
1760 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
|
1761 |
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 |
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 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
|
1764 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
|
1765 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
|
1766 'accept': accept |
552 | 1767 }) |
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
|
1768 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
|
1769 |
0ad170c7b6c8
reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
555
diff
changeset
|
1770 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
|
1771 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
|
1772 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
|
1773 '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
|
1774 }) |
0ad170c7b6c8
reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
555
diff
changeset
|
1775 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
|
1776 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
|
1777 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
|
1778 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
|
1779 json.loads(response[1]) |
551
c8d2775f0d02
added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
549
diff
changeset
|
1780 |
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
|
1781 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
|
1782 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
|
1783 '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
|
1784 }, 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
|
1785 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
|
1786 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
|
1787 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
|
1788 xml.dom.minidom.parseString(response[0][0]) |
552 | 1789 |
559
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1790 def CheckIsDicom(uri, accept): |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1791 if accept != None: |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1792 response = DoGetMultipart(ORTHANC, uri, headers = { |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1793 'accept': accept |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1794 }, returnHeaders = True) |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1795 else: |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1796 response = DoGetMultipart(ORTHANC, uri, returnHeaders = True) |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1797 self.assertEqual(1, len(response)) |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1798 self.assertEqual(2, len(response[0])) |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1799 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
|
1800 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
|
1801 |
560
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1802 def CheckIsBulk(uri, accept): |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1803 if accept != None: |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1804 response = DoGetMultipart(ORTHANC, uri, headers = { |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1805 'accept': accept |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1806 }, returnHeaders = True) |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1807 else: |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1808 response = DoGetMultipart(ORTHANC, uri, returnHeaders = True) |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1809 self.assertEqual(1, len(response)) |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1810 self.assertEqual(2, len(response[0])) |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1811 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
|
1812 self.assertTrue(len(response[0][0]) > 1) |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1813 |
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
|
1814 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
|
1815 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
|
1816 |
0ad170c7b6c8
reactivation of test_issue_216, as the fix is now in the mainline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
555
diff
changeset
|
1817 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
|
1818 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
|
1819 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
|
1820 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
|
1821 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
|
1822 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
|
1823 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
|
1824 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
|
1825 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
|
1826 |
559
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1827 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
|
1828 CheckIsDicom('/dicom-web/studies/%s' % studyUid, None) |
87fc87897e7e
test_accept_negotiation for multipart DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
558
diff
changeset
|
1829 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
|
1830 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
|
1831 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
|
1832 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
|
1833 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
|
1834 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
|
1835 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
|
1836 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
|
1837 |
560
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1838 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
|
1839 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
|
1840 '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
|
1841 CheckIsBulk(uri, None) |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1842 CheckBadRequest(uri, 'multipart/nope') |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1843 CheckIsBulk(uri, 'multipart/related') |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1844 CheckIsBulk(uri, 'multipart/related;type=application/octet-stream') |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1845 CheckIsBulk(uri, 'multipart/related; type = "application/octet-stream" ') |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1846 CheckBadRequest(uri, 'multipart/related; type = " application/octet-stream" ') |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1847 CheckBadRequest(uri, 'multipart/related;type=application/nope') |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1848 CheckBadRequest(uri, 'multipart/related;range=') |
2db7a9041507
test bulk data negotiation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
559
diff
changeset
|
1849 |
551
c8d2775f0d02
added test_issue_216 for DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
549
diff
changeset
|
1850 |
32
682c4e2a1162
integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1851 try: |
682c4e2a1162
integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1852 print('\nStarting the tests...') |
682c4e2a1162
integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1853 unittest.main(argv = [ sys.argv[0] ] + args.options) |
682c4e2a1162
integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1854 |
682c4e2a1162
integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1855 finally: |
682c4e2a1162
integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1856 print('\nDone') |