annotate Plugins/DicomWeb/Run.py @ 249:24e5c8ca9440 Orthanc-1.5.7

DICOMweb: test_rendered
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 25 Jun 2019 15:35:41 +0200
parents 26c3a1ed935a
children 298f80c6ccc4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 #!/usr/bin/python
224
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
2 # -*- coding: utf-8 -*-
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
3
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 # Orthanc - A Lightweight, RESTful DICOM Store
73
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 33
diff changeset
6 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 # Department, University Hospital of Liege, Belgium
195
af8e034f4262 preparing for 2019
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 184
diff changeset
8 # Copyright (C) 2017-2019 Osimis S.A., Belgium
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 #
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 # 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
11 # 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
12 # 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
13 # License, or (at your option) any later version.
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 #
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 # 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
16 # WITHOUT ANY WARRANTY; without even the implied warranty of
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 # General Public License for more details.
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 #
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 # 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
21 # 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
22
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23
85
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
24
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
25 # You must add the following to the configuration file:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
26 #
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
27 # "DicomWeb" : {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
28 # "Servers" : {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
29 # "sample" : [ "http://localhost:8042/dicom-web/", "alice", "orthanctest" ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
30 # }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
31 # }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
32
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
33
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
34
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 84
diff changeset
35
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36 import os
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
37 import pprint
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 import sys
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 import argparse
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40 import unittest
83
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
41 import re
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
42 from DicomWeb import *
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 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
45 from Toolbox import *
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
46
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
47
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
49 ## Parse the command-line arguments
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
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 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
53
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54 parser.add_argument('--server',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 default = 'localhost',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 help = 'Address of the Orthanc server to test')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57 parser.add_argument('--rest',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58 type = int,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59 default = 8042,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60 help = 'Port to the REST API')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61 parser.add_argument('--username',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62 default = 'alice',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63 help = 'Username to the REST API')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 parser.add_argument('--password',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65 default = 'orthanctest',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 help = 'Password to the REST API')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67 parser.add_argument('--wado',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68 default = '/wado',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
69 help = 'Path to the WADO API')
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
70 parser.add_argument('--dicomweb',
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71 default = '/dicom-web/',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
72 help = 'Path to the DICOMweb API')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
73 parser.add_argument('--force', help = 'Do not warn the user',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
74 action = 'store_true')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
75 parser.add_argument('options', metavar = 'N', nargs = '*',
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
76 help='Arguments to Python unittest')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
77
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
78 args = parser.parse_args()
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82 ## Configure the testing context
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83 ##
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 if not args.force:
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
86 print("""
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
87 WARNING: This test will remove all the content of your
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
88 Orthanc instance running on %s!
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90 Are you sure ["yes" to go on]?""" % args.server)
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 sys.stdin.readline().strip() != 'yes':
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93 print('Aborting...')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
94 exit(0)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
95
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 ORTHANC = DefineOrthanc(server = args.server,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
98 username = args.username,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
99 password = args.password,
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
100 restPort = args.rest)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
101
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 ## The tests
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105 ##
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
106
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
107
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
108 def UploadAndGetWadoPath(dicom):
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
109 i = UploadInstance(ORTHANC, dicom) ['ID']
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
110 study = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['StudyInstanceUID']
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
111 series = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['SeriesInstanceUID']
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
112 instance = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) ['SOPInstanceUID']
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
113 return '/studies/%s/series/%s/instances/%s' % (study, series, instance)
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
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
116
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
117 class Orthanc(unittest.TestCase):
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
118 def setUp(self):
83
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
119 if (sys.version_info >= (3, 0)):
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
120 # Remove annoying warnings about unclosed socket in Python 3
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
121 import warnings
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
122 warnings.simplefilter("ignore", ResourceWarning)
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
123
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
124 DropOrthanc(ORTHANC)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
125
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
126 def test_wado_dicom(self):
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
127 UploadInstance(ORTHANC, 'Brainix/Flair/IM-0001-0001.dcm')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
128
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
129 SIZE = 169478
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
130 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
131 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
132 STUDY = '2.16.840.1.113669.632.20.1211.10000357775'
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134 self.assertRaises(Exception, lambda: DoGet(ORTHANC, args.wado))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135 self.assertRaises(Exception, lambda: DoGet(ORTHANC, args.wado + '?requestType=WADO'))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136 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
137
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
138 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
139 self.assertEqual(SIZE, len(dicom))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
140
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
141 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
142 self.assertEqual(SIZE, len(dicom))
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
143
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
144 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
145 self.assertEqual(SIZE, len(dicom))
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&seriesUID=%s' % (INSTANCE, SERIES))
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&studyUID=%s' % (INSTANCE, STUDY))
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 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
154 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
155 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
156
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157 def test_wado_image(self):
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158 UploadInstance(ORTHANC, 'Phenix/IM-0001-0001.dcm')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159 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
160
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
161 im = GetImage(ORTHANC, args.wado + '?requestType=WADO&objectUID=%s' % INSTANCE)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162 self.assertEqual('JPEG', im.format)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163 self.assertEqual('L', im.mode)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
164 self.assertEqual(512, im.size[0])
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165 self.assertEqual(358, im.size[1])
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 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
168 self.assertEqual('JPEG', im.format)
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 + '?contentType=image/png&requestType=WADO&objectUID=%s' % INSTANCE)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171 self.assertEqual('PNG', 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
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
176 def test_stow(self):
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
177 self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
178 SendStow(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Phenix/IM-0001-0001.dcm'))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
179 self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
180 a = SendStow(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Phenix/IM-0001-0001.dcm'))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
181 self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
182
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
183 self.assertEqual(4, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
184
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
185 # Specific character set
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
186 self.assertTrue('00080005' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
187 self.assertEqual('CS', a['00080005']['vr'])
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
188
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
189 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
190 self.assertEqual('UR', a['00081190']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
191
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
192 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
193 self.assertEqual('SQ', a['00081198']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
194
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
195 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
196 self.assertEqual('SQ', a['00081199']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
197
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
198 b = a['00081199']['Value'][0]
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
199
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
200 # Referenced SOP class UID
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
201 self.assertEqual('UI', b['00081150']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
202 self.assertEqual(1, len(b['00081150']['Value']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
203 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
204
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
205 # Referenced SOP instance UID
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
206 self.assertEqual('UI', b['00081155']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
207 self.assertEqual(1, len(b['00081155']['Value']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
208 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
209
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
210 # Retrieve URL
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
211 self.assertEqual('UR', b['00081190']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
212 self.assertEqual(1, len(b['00081190']['Value']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
213 self.assertTrue(b['00081190']['Value'][0].
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
214 endswith('series/1.2.840.113704.1.111.5692.1127828999.2/instances/1.2.840.113704.7.1.1.6632.1127829031.2'))
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
215
83
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
216 # Remove the "http://localhost:8042" prefix
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
217 url = a['00081190']['Value'][0]
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
218 url = re.sub(r'(http|https)://[^/]+(/.*)', r'\2', url)
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
219
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
220 # Get the content-length of all the multiparts of this WADO-RS request
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
221 b = DoGet(ORTHANC, url).decode('utf-8', 'ignore')
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
222 parts = re.findall(r'^Content-Length:\s*(\d+)\s*', b, re.IGNORECASE | re.MULTILINE)
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
223 self.assertEqual(1, len(parts))
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 73
diff changeset
224 self.assertEqual(os.path.getsize(GetDatabasePath('Phenix/IM-0001-0001.dcm')), int(parts[0]))
33
eb6d219af210 test stow
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 32
diff changeset
225
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
226
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
227 def test_server_get(self):
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
228 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
229
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
230 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/servers')))
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
231 self.assertTrue('sample' in DoGet(ORTHANC, '/dicom-web/servers'))
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
232
129
53d522dd4a38 added tests for ?expand in /dicom-web/servers route
amazy
parents: 114
diff changeset
233 serversReadback = DoGet(ORTHANC, '/dicom-web/servers?expand')
53d522dd4a38 added tests for ?expand in /dicom-web/servers route
amazy
parents: 114
diff changeset
234 self.assertEqual('http://localhost:8042/dicom-web/', serversReadback['sample']['Url'])
53d522dd4a38 added tests for ?expand in /dicom-web/servers route
amazy
parents: 114
diff changeset
235 self.assertEqual('alice', serversReadback['sample']['Username'])
53d522dd4a38 added tests for ?expand in /dicom-web/servers route
amazy
parents: 114
diff changeset
236
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
237 sample = DoGet(ORTHANC, '/dicom-web/servers/sample')
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
238 self.assertEqual(5, len(sample))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
239 self.assertTrue('stow' in sample)
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
240 self.assertTrue('retrieve' in sample)
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
241 self.assertTrue('get' in sample)
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
242 self.assertTrue('wado' in sample) # New in 0.7
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
243 self.assertTrue('qido' in sample) # New in 0.7
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
244
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
245 # application/dicom+xml
131
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
246 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
247 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
248 re.MULTILINE)))
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
249 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
250 (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
251 { 'Uri' : '/studies',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
252 '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
253 }), re.MULTILINE)))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
254
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
255 # application/dicom+json
131
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
256 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
257 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
258 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
259 { 'Uri' : '/studies',
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
260 '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
261
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
262 # application/json
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
263 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
264 headers = { 'Accept' : 'application/json' })))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
265 self.assertEqual(1, len(DoPost(ORTHANC, '/dicom-web/servers/sample/get',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
266 { 'Uri' : '/studies',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
267 'HttpHeaders' : { 'Accept' : 'application/json' }})))
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
268
131
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
269 # 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
270 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
271 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
272 { 'Uri' : '/studies' })))
90e5331ddee9 application/dicom+json is now the default in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
273
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
274
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
275 def test_server_stow(self):
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
276 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
277
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
278 self.assertRaises(Exception, lambda:
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
279 DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
280 { 'Resources' : [ 'nope' ],
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
281 'Synchronous' : True })) # inexisting resource
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
282
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
283 l = 2 # For >= 0.7
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
284 #l = 0 # For <= 0.6
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
285
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
286 self.assertEqual(l, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
287 { 'Resources' : [ '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' ],
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
288 'Synchronous' : True }))) # study
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
289
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
290 self.assertEqual(l, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
291 { 'Resources' : [ '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' ],
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
292 'Synchronous' : True }))) # series
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
293
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
294 self.assertEqual(l, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
295 { 'Resources' : [ 'c8df6478-d7794217-0f11c293-a41237c9-31d98357' ],
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
296 'Synchronous' : True }))) # instance
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
297
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
298 self.assertEqual(l, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
299 { 'Resources' : [
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
300 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
301 '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
302 '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285',
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
303 'c8df6478-d7794217-0f11c293-a41237c9-31d98357' ],
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
304 'Synchronous' : True }))) # altogether
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
305
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
306
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
307 def test_server_retrieve(self):
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
308 COUNT = 'ReceivedInstancesCount'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
309 #COUNT = 'Instances' # In version <= 0.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
310
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
311 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
312 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0002.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
313 UploadInstance(ORTHANC, 'Knee/T2/IM-0001-0001.dcm')
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
314
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
315 self.assertRaises(Exception, lambda:
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
316 DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
317 { 'Resources' : [ { 'Study' : 'nope' } ]})) # inexisting resource
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
318
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
319 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
320 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
321 self.assertEqual(3, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
322
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
323 # Missing "Study" field
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
324 self.assertRaises(Exception, lambda:
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
325 DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
326 { 'Resources' : [ { 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ]}))
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
327
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
328 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
329 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
330 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
331 self.assertEqual(2, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
332
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
333 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
334 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
335 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
336 self.assertEqual(1, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
337
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
338 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
339 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
340 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' },
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
341 { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
342 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
343 self.assertEqual(3, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
344
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
345 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
346 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
347 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350',
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
348 'Instance' : '1.3.46.670589.11.17521.5.0.3124.2008081909113806560' } ] })
244
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 242
diff changeset
349 self.assertEqual(1, int(t[COUNT]))
84
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
350
dc90b87471a8 tests for dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
351
114
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
352 def test_bitbucket_issue_53(self):
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
353 # DICOMWeb plugin support for "limit" and "offset" parameters in QIDO-RS
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
354 # https://bitbucket.org/sjodogne/orthanc/issues/53
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
355
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
356 UploadInstance(ORTHANC, 'Brainix/Flair/IM-0001-0001.dcm')
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
357 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
358
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
359 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
360 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
361
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
362 a = DoGet(ORTHANC, '/dicom-web/studies',
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
363 headers = { 'accept' : 'application/json' })
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
364 self.assertEqual(2, len(a))
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
365
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
366 b = []
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
367 a = DoGet(ORTHANC, '/dicom-web/studies?limit=1',
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
368 headers = { 'accept' : 'application/json' })
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
369 self.assertEqual(1, len(a))
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
370 b.append(a[0]['0020000D']['Value'][0])
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
371
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
372 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
373 headers = { 'accept' : 'application/json' })
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
374 self.assertEqual(1, len(a))
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
375 b.append(a[0]['0020000D']['Value'][0])
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
376
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
377 self.assertTrue(brainix in b)
a6019560272f test_bitbucket_issue_53
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 100
diff changeset
378 self.assertTrue(knee in b)
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
379
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
380
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
381 def test_bitbucket_issue_111(self):
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
382 # Wrong serialization of empty values
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
383 # https://bitbucket.org/sjodogne/orthanc/issues/111
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
384 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/3/
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
385
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
386 # According to the standard, section F.2.5
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
387 # (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
388 # 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
389 # 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
390 # preserved in the DICOM JSON attribute object containing no
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
391 # "Value", "BulkDataURI" or "InlineBinary".
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
392 # https://bitbucket.org/sjodogne/orthanc/issues/111/qido-rs-wrong-serialization-of-empty
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
393
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
394 UploadInstance(ORTHANC, 'Issue111.dcm')
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
395
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
396 # Test WADO-RS
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
397 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
398 self.assertEqual(1, len(a))
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
399 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
400 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
401 self.assertEqual('SH', a[0]['00080050']['vr'])
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
402
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
403 # Test QIDO-RS
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
404 a = DoGet(ORTHANC, '/dicom-web/studies')
184
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
405 self.assertEqual(1, len(a))
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
406 self.assertTrue('00080050' in a[0]) # AccessionNumber is null
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
407 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
408 self.assertEqual('SH', a[0]['00080050']['vr'])
e244312964d6 test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 131
diff changeset
409
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
410
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
411 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
412 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
413 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
414 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
415 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
416 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
417 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
418
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
419 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
420 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
421 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
422 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
423
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
424 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
425 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
426 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
427
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
428 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
429 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
430 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
431
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
432 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
433 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
434 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
435 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
436 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
437 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
438
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
439
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
440 def test_wado_pixel_data(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
441 orthanc = UploadInstance(ORTHANC, 'Issue29.dcm') ['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
442 a = DoGet(ORTHANC, '/dicom-web/instances')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
443 self.assertEqual(1, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
444 url = a[0]['00081190']['Value'][0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
445
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
446 prefix = 'http://localhost:8042'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
447 self.assertTrue(url.startswith(prefix))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
448
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
449 b = DoGet(ORTHANC, url[len(prefix):] + '/metadata')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
450 self.assertEqual('OB', b[0]['7FE00010']['vr'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
451 self.assertEqual(2, len(b[0]['7FE00010']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
452 self.assertTrue('BulkDataURI' in b[0]['7FE00010'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
453
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
454 url = b[0]['7FE00010']['BulkDataURI']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
455 self.assertTrue(url.startswith(prefix))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
456
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
457 p = DoGetMultipart(ORTHANC, url[len(prefix):])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
458
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
459 self.assertEqual(2, len(p)) # There are 2 fragments in this image
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
460 self.assertEqual(4, len(p[0]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
461 self.assertEqual(114486, len(p[1]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
462
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
463
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
464 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
465 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
466 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
467 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
468 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
469 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
470
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
471 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
472 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
473 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
474 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
475
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
476 # WARNING: This test will fail on Orthanc <= 1.5.5, because
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
477 # the following fix is not included yet:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
478 # https://bitbucket.org/sjodogne/orthanc/commits/b88937ef597b33c4387a546c751827019bcdc205
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
479
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
480 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
481 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
482
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
483 BASE_URI = '/dicom-web/studies/%s/series/%s/instances/%s/bulk' % (study, series, sop)
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
484 BASE_URL = 'http://localhost:8042%s' % BASE_URI
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
485
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
486 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
487 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
488 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
489 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
490
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
491 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
492 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
493
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
494 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
495 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
496 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
497
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
498
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
499 def test_bitbucket_issue_112(self):
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
500 # Wrong serialization of number values
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
501 # https://bitbucket.org/sjodogne/orthanc/issues/112
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
502 # 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
503
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
504 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
505 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
506
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
507 # 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
508 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
509 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
510 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
511
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
512 if (sys.version_info >= (3, 0)):
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
513 types = (int)
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
514 else:
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
515 types = (int, long)
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
516
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
517 b = a[0]['00180091']['Value'][0]
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
518 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
519 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
520
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
521 # 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
522 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
523 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
524 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
525
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
526 b = a[0]['00201208']['Value'][0]
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
527 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
528 self.assertEqual(1, b)
223
f5aca0917d60 DICOMweb: test_bitbucket_issue_111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 222
diff changeset
529
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
530
224
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
531 def test_bitbucket_issue_113(self):
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
532 # Wrong serialization of PN VR
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
533 # https://bitbucket.org/sjodogne/orthanc/issues/113
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
534 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/2/
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
535
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
536 UploadInstance(ORTHANC, 'Encodings/DavidClunie/SCSX1')
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
537 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
538
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
539 # This is the WADO-RS testing
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
540 a = DoGet(ORTHANC, '/dicom-web/studies/%s/metadata' % study)
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
541 self.assertEqual(1, len(a))
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
542
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
543 pn = a[0]['00100010'] # Patient name
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
544 self.assertEqual('PN', pn['vr'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
545 self.assertEqual(1, len(pn['Value']))
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
546 self.assertEqual('Wang^XiaoDong', pn['Value'][0]['Alphabetic'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
547 self.assertEqual(u'王^小東', pn['Value'][0]['Ideographic'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
548
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
549 # This is the QIDO-RS testing
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
550 a = DoGet(ORTHANC, '/dicom-web/studies')
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
551 self.assertEqual(1, len(a))
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
552
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
553 pn = a[0]['00100010'] # Patient name
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
554 self.assertEqual('PN', pn['vr'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
555 self.assertEqual(1, len(pn['Value']))
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
556 self.assertEqual('Wang^XiaoDong', pn['Value'][0]['Alphabetic'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
557 self.assertEqual(u'王^小東', pn['Value'][0]['Ideographic'])
f5414254ccaa test_bitbucket_issue_113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 223
diff changeset
558
222
0f03ee6ffa80 DICOMweb: test_wado_hierarchy, test_wado_bulk, test_bitbucket_issue_112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
559
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
560 def test_bitbucket_issue_96(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
561 # WADO-RS RetrieveFrames rejects valid accept headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
562 # https://bitbucket.org/sjodogne/orthanc/issues/96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
563 # https://bitbucket.org/sjodogne/orthanc-dicomweb/issues/5/
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
564
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
565 UploadInstance(ORTHANC, 'Brainix/Epi/IM-0001-0001.dcm')
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
566
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
567 a = DoGet(ORTHANC, '/dicom-web/instances')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
568 self.assertEqual(1, len(a))
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
569 self.assertEqual(256, a[0]['00280010']['Value'][0]) # Rows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
570 self.assertEqual(256, a[0]['00280011']['Value'][0]) # Columns
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
571 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
572
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
573 url = a[0]['00081190']['Value'][0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
574
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
575 prefix = 'http://localhost:8042'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
576 self.assertTrue(url.startswith(prefix))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
577 uri = url[len(prefix):]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
578
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
579 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 0)))
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
580 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 2)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
581
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
582 b = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1))
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
583 self.assertEqual(1, len(b))
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
584 self.assertEqual(256 * 256 * 2, len(b[0]))
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 224
diff changeset
585
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
586 c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
587 headers = { 'Accept' : 'multipart/related; type=application/octet-stream' })
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
588 self.assertEqual(1, len(c))
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
589 self.assertEqual(b[0], c[0])
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
590
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
591 c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
592 headers = { 'Accept' : 'multipart/related; type="application/octet-stream"' })
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
593 self.assertEqual(1, len(c))
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
594 self.assertEqual(b[0], c[0])
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
595
228
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
596 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
597 headers = { 'Accept' : 'multipart/related; type="nope"' }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
598
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
599 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
600 headers = { 'Accept' : 'multipart/related; type=nope' }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
601
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
602 self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
603 headers = { 'Accept' : 'nope' }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 227
diff changeset
604
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
605
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
606 def test_qido_fields(self):
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
607 UploadInstance(ORTHANC, 'DummyCT.dcm')
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
608
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
609 a = DoGet(ORTHANC, '/dicom-web/studies')
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
610 self.assertEqual(1, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
611 self.assertFalse('00280010' in a[0]) # Rows
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
612
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
613 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
614 self.assertEqual(1, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
615 self.assertTrue('00280010' in a[0])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
616 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
617
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
618 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
619 self.assertEqual(0, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
620
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
621 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
622 self.assertEqual(1, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
623 self.assertTrue('00280010' in a[0])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
624 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
625
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
626
227
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
627 def test_stow_errors(self):
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
628 # Pushing an instance to a study that is not its parent
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
629 a = SendStow(ORTHANC, args.dicomweb + '/studies/nope', GetDatabasePath('Phenix/IM-0001-0001.dcm'))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
630 self.assertEqual(3, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
631 self.assertTrue('00080005' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
632 self.assertEqual('CS', a['00080005']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
633 self.assertTrue('00081198' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
634 self.assertEqual('SQ', a['00081198']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
635 self.assertEqual(1, len(['00081198']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
636 self.assertTrue('00081199' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
637 self.assertEqual('SQ', a['00081199']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
638 self.assertEqual(1, len(['00081199']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
639
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
640 # Pushing an instance with missing tags
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
641 a = SendStow(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Issue111.dcm'))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
642 self.assertEqual(3, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
643 self.assertTrue('00080005' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
644 self.assertEqual('CS', a['00080005']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
645 self.assertTrue('00081198' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
646 self.assertEqual('SQ', a['00081198']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
647 self.assertEqual(1, len(['00081198']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
648 self.assertTrue('00081199' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
649 self.assertEqual('SQ', a['00081199']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
650 self.assertEqual(1, len(['00081199']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
651
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
652 # Pushing a file that is not in the DICOM format
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
653 a = SendStow(ORTHANC, args.dicomweb + '/studies', GetDatabasePath('Issue111.dump'))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
654 self.assertEqual(3, len(a))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
655 self.assertTrue('00080005' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
656 self.assertEqual('CS', a['00080005']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
657 self.assertTrue('00081198' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
658 self.assertEqual('SQ', a['00081198']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
659 self.assertEqual(1, len(['00081198']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
660 self.assertTrue('00081199' in a)
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
661 self.assertEqual('SQ', a['00081199']['vr'])
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
662 self.assertEqual(1, len(['00081199']))
875ff7460ae8 test_qido_fields, test_stow_errors
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 226
diff changeset
663
239
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
664
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
665 def test_allowed_methods(self):
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
666 self.assertEqual(0, len(DoGet(ORTHANC, '/dicom-web/studies')))
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
667
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
668 with self.assertRaises(Exception) as e:
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
669 DoPut(ORTHANC, '/dicom-web/studies')
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
670
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
671 self.assertEqual(405, e.exception[0])
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
672 self.assertEqual("GET,POST", e.exception[1]['allow'])
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
673
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
674 with self.assertRaises(Exception) as e:
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
675 DoDelete(ORTHANC, '/dicom-web/studies')
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
676
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
677 self.assertEqual(405, e.exception[0])
8980bd19e31d dicomweb: test_allowed_methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 229
diff changeset
678 self.assertEqual("GET,POST", e.exception[1]['allow'])
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
679
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
680
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
681 def test_add_server(self):
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
682 try:
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
683 DoDelete(ORTHANC, '/dicom-web/servers/hello')
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
684 except:
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
685 pass
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
686
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
687 l = DoGet(ORTHANC, '/dicom-web/servers')
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
688 self.assertEqual(1, len(l))
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
689 self.assertTrue('sample' in l)
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
690
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
691 url = 'http://localhost:8042/dicom-web/'
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
692 DoPut(ORTHANC, '/dicom-web/servers/hello', {
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
693 'Url': url,
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
694 'HttpHeaders' : {
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
695 'Hello' : 'World'
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
696 },
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
697 'Username' : 'bob',
242
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 241
diff changeset
698 'Password' : 'password',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 241
diff changeset
699 'UserProperty' : 'Test',
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
700 'HasDelete' : True,
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
701 })
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
702
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
703 l = DoGet(ORTHANC, '/dicom-web/servers')
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
704 self.assertEqual(2, len(l))
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
705 self.assertTrue('sample' in l)
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
706 self.assertTrue('hello' in l)
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
707
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
708 o = DoGet(ORTHANC, '/dicom-web/servers/sample')
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
709 self.assertEqual(5, len(o))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
710 self.assertTrue('stow' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
711 self.assertTrue('retrieve' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
712 self.assertTrue('get' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
713 self.assertTrue('wado' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
714 self.assertTrue('qido' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
715
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
716 o = DoGet(ORTHANC, '/dicom-web/servers/hello')
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
717 self.assertEqual(6, len(o))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
718 self.assertTrue('stow' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
719 self.assertTrue('retrieve' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
720 self.assertTrue('get' in o)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
721 self.assertTrue('wado' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
722 self.assertTrue('qido' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
723 self.assertTrue('delete' in o) # New in 0.7
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
724
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
725 s = DoGet(ORTHANC, '/dicom-web/servers?expand')
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
726 self.assertEqual(7, len(s['hello']))
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
727 self.assertEqual(url, s['hello']['Url'])
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
728 self.assertEqual('bob', s['hello']['Username'])
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
729 self.assertEqual(None, s['hello']['Password'])
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
730 self.assertFalse(s['hello']['Pkcs11'])
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
731 self.assertEqual(1, len(s['hello']['HttpHeaders']))
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
732 self.assertTrue('Hello' in s['hello']['HttpHeaders'])
242
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 241
diff changeset
733 self.assertEqual('Test', s['hello']['UserProperty'])
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
734 self.assertEqual('1', s['hello']['HasDelete'])
241
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
735
adc6372b8820 dicomweb: test_add_server
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 239
diff changeset
736 DoDelete(ORTHANC, '/dicom-web/servers/hello')
246
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
737
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
738
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
739 def test_bitbucket_issue_143(self):
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
740 # WADO-RS metadata request returns "500 Internal Server Error"
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
741 # instead of "404 Not Found" for missing instance
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
742 # https://bitbucket.org/sjodogne/orthanc/issues/143
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
743 UploadInstance(ORTHANC, 'Issue143.dcm')
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
744
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
745 try:
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
746 DoGet(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')
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
747 self.assertFail()
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
748 except Exception as e:
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
749 self.assertEqual(404, e[0])
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
750
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
751 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
752
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
753 try:
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
754 DoGet(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')
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
755 self.fail()
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
756 except Exception as e:
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
757 self.assertEqual(404, e[0])
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
758
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
759 try:
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
760 DoGet(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')
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
761 self.assertFail()
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
762 except Exception as e:
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
763 self.assertEqual(404, e[0])
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
764
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
765 try:
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
766 DoGet(ORTHANC, '/dicom-web/studies/0.0.0.0.0/series/0.0.0.0.0/instances/0.0.0.0.0/metadata')
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
767 self.assertFail()
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
768 except Exception as e:
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
769 self.assertEqual(404, e[0])
e4e0e2ff91ae test_bitbucket_issue_143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 244
diff changeset
770
248
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
771
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
772 def test_encodings_qido(self):
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
773 # The "DefaultEncoding" condifuration option is set to "UTF8"
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
774 # 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
775 # 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
776 def GetPatientName(dicom, onlyAlphabetic):
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
777 i = UploadInstance(ORTHANC, dicom) ['ID']
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
778 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
779 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
780 self.assertEqual(1, len(qido))
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
781 self.assertEqual('CS', qido[0]['00080005']['vr'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
782 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
783 if onlyAlphabetic:
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
784 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
785 else:
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
786 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
787 return qido[0]['00100010']['Value'][0]
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
788
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
789 # 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
790
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
791 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
792 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
793 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
794 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
795 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
796 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
797
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
798 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
799 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
800 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
801 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
802 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
803 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
804 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
805 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
806 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
807 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
808 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
809 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
810 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
811
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
812 # 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
813 #self.assertEqual(u'山田^太郎', GetPatientName('Encodings/DavidClunie/SCSH32')['Ideographic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
814 #self.assertEqual(u'やまだ^たろう', GetPatientName('Encodings/DavidClunie/SCSH32')['Phonetic'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
815
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
816
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
817 def test_encodings_wado_metadata(self):
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
818 # If querying the instance metadata, the "DefaultEncoding"
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
819 # configuration is not used, but the actual encoding
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
820 def GetEncoding(dicom, length):
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
821 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
822 self.assertEqual(1, len(qido))
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
823 self.assertEqual(length, len(qido[0]['00080005']['Value']))
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
824 self.assertEqual('CS', qido[0]['00080005']['vr'])
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
825 return qido[0]['00080005']['Value']
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
826
26c3a1ed935a testing of encodings in DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 246
diff changeset
827 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
828 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
829 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
830 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
831 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
832 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
833 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
834 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
835 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
836 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
837 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
838 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
839
249
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
840
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
841 def test_rendered(self):
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
842 def RenderFrame(path, i):
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
843 return DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
844 'Uri' : '%s/frames/%d/rendered' % (path, i)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
845 })
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
846
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
847 # This image has 76 frames
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
848 path = UploadAndGetWadoPath('Multiframe.dcm')
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
849
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
850 self.assertRaises(Exception, lambda: RenderFrame(path, 0))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
851
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
852 frame1 = RenderFrame(path, 1)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
853 im = UncompressImage(frame1)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
854 self.assertEqual("L", im.mode)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
855 self.assertEqual(512, im.size[0])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
856 self.assertEqual(512, im.size[1])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
857
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
858 im = UncompressImage(RenderFrame(path, 76))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
859 self.assertEqual("L", im.mode)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
860 self.assertEqual(512, im.size[0])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
861 self.assertEqual(512, im.size[1])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
862
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
863 self.assertRaises(Exception, lambda: RenderFrame(path, 77))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
864
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
865 defaultFrame = DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
866 'Uri' : '%s/rendered' % path
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
867 })
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
868
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
869 self.assertEqual(len(frame1), len(defaultFrame))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
870 self.assertEqual(frame1, defaultFrame)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
871
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
872
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
873 # This image has 1 frame
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
874 path = UploadAndGetWadoPath('Phenix/IM-0001-0001.dcm')
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
875
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
876 self.assertRaises(Exception, lambda: RenderFrame(path, 0))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
877 self.assertRaises(Exception, lambda: RenderFrame(path, 2))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
878
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
879 frame1 = RenderFrame(path, 1)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
880 im = UncompressImage(frame1)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
881 self.assertEqual("L", im.mode)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
882 self.assertEqual(512, im.size[0])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
883 self.assertEqual(358, im.size[1])
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
884
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
885 defaultFrame = DoPost(ORTHANC, '/dicom-web/servers/sample/get', {
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
886 'Uri' : '%s/rendered' % path
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
887 })
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
888
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
889 self.assertEqual(len(frame1), len(defaultFrame))
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
890 self.assertEqual(frame1, defaultFrame)
24e5c8ca9440 DICOMweb: test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 248
diff changeset
891
226
230aede7f8d5 test_bitbucket_issue_96
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 225
diff changeset
892
32
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
893 try:
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
894 print('\nStarting the tests...')
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
895 unittest.main(argv = [ sys.argv[0] ] + args.options)
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
896
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
897 finally:
682c4e2a1162 integration tests for wado
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
898 print('\nDone')