Mercurial > hg > orthanc-tests
annotate Tests/Tests.py @ 605:76e5f75249ca
fix
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 23 Jan 2024 10:21:30 +0100 |
parents | 8fb9b5cd0f4f |
children | 0700fe8e2b78 |
rev | line source |
---|---|
22 | 1 #!/usr/bin/env python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 | |
3 | 5 # Orthanc - A Lightweight, RESTful DICOM Store |
73 | 6 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
3 | 7 # Department, University Hospital of Liege, Belgium |
511
933fe1bbce4f
upgrade to year 2023
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
510
diff
changeset
|
8 # Copyright (C) 2017-2023 Osimis S.A., Belgium |
933fe1bbce4f
upgrade to year 2023
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
510
diff
changeset
|
9 # Copyright (C) 2021-2023 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
3 | 10 # |
11 # This program is free software: you can redistribute it and/or | |
12 # modify it under the terms of the GNU General Public License as | |
13 # published by the Free Software Foundation, either version 3 of the | |
14 # License, or (at your option) any later version. | |
15 # | |
16 # This program is distributed in the hope that it will be useful, but | |
17 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
19 # General Public License for more details. | |
20 # | |
21 # You should have received a copy of the GNU General Public License | |
22 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
23 | |
24 | |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
25 import base64 |
290
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
26 import bz2 |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
27 import copy |
440 | 28 import io |
439
2ca9e31d582f
numpy and getscu are now included in jodogne/orthanc-tests Docker image
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
437
diff
changeset
|
29 import numpy |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
30 import pprint |
439
2ca9e31d582f
numpy and getscu are now included in jodogne/orthanc-tests Docker image
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
437
diff
changeset
|
31 import shutil |
14 | 32 import tempfile |
3 | 33 import unittest |
515
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
34 import time |
529 | 35 import os |
3 | 36 |
11 | 37 from PIL import ImageChops |
3 | 38 from Toolbox import * |
13 | 39 from xml.dom import minidom |
312 | 40 from datetime import datetime |
3 | 41 |
42 _LOCAL = None | |
43 _REMOTE = None | |
306
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
44 _DOCKER = False |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
45 |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
46 |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
47 def SetOrthancParameters(local, remote, withinDocker): |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
48 global _LOCAL, _REMOTE, _DOCKER |
3 | 49 _LOCAL = local |
50 _REMOTE = remote | |
306
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
51 _DOCKER = withinDocker |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
52 |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
53 |
14 | 54 def ExtractDicomTags(rawDicom, tags): |
55 with tempfile.NamedTemporaryFile(delete = True) as f: | |
56 f.write(rawDicom) | |
57 f.flush() | |
45 | 58 data = subprocess.check_output([ FindExecutable('dcm2xml'), f.name ]) |
14 | 59 |
60 result = [] | |
61 for tag in tags: | |
62 match = re.search('<element[^>]+name="%s">([^>]*)</element>' % tag, data) | |
63 if match == None: | |
64 result.append('') | |
65 else: | |
66 result.append(match.group(1)) | |
67 | |
68 return result | |
69 | |
70 | |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
71 def CompareLists(a, b): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
72 if len(a) != len(b): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
73 return False |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
74 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
75 for i in range(len(a)): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
76 d = a[i] - b[i] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
77 if abs(d) >= 0.51: # Add some tolerance for rounding errors |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
78 return False |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
79 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
80 return True |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
81 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
82 |
80
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
83 def CompareTags(a, b, tagsToIgnore): |
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
84 for i in tagsToIgnore: |
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
85 if i in a: |
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
86 del a[i] |
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
87 if i in b: |
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
88 del b[i] |
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
89 |
123 | 90 if a.keys() == b.keys(): |
91 return True | |
92 else: | |
93 print('Mismatch in tags: %s' % str(set(a.keys()) ^ set(b.keys()))) | |
94 return False | |
80
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
95 |
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
96 |
71
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
97 def CallFindScu(args): |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
98 p = subprocess.Popen([ FindExecutable('findscu'), |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
99 '-P', '-aec', _REMOTE['DicomAet'], '-aet', _LOCAL['DicomAet'], |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
100 _REMOTE['Server'], str(_REMOTE['DicomPort']) ] + args, |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
101 stderr=subprocess.PIPE) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
102 return p.communicate()[1] |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
103 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
104 |
142 | 105 def GetMoveScuCommand(): |
106 return [ | |
107 FindExecutable('movescu'), | |
108 '--move', _LOCAL['DicomAet'], # Target AET (i.e. storescp) | |
109 '--call', _REMOTE['DicomAet'], # Called AET (i.e. Orthanc) | |
110 '--aetitle', _LOCAL['DicomAet'], # Calling AET (i.e. storescp) | |
111 _REMOTE['Server'], | |
112 str(_REMOTE['DicomPort']) | |
113 ] | |
114 | |
231
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
115 |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
116 def IsDicomUntilPixelDataStored(orthanc): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
117 # This function detects whether the "StorageCompression" option is |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
118 # "true", OR the storage area does not support read-range |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
119 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
120 if IsOrthancVersionAbove(orthanc, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
121 i = UploadInstance(orthanc, 'ColorTestMalaterre.dcm') ['ID'] |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
122 a = DoGet(orthanc, '/instances/%s/metadata/PixelDataOffset' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
123 if a != 0x03a0: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
124 raise Exception('Internal error') |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
125 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
126 a = DoGet(orthanc, '/instances/%s/attachments' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
127 if len(a) != 1 and len(a) != 2 or not 'dicom' in a: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
128 raise Exception('Internal error') |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
129 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
130 DoDelete(orthanc, '/instances/%s' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
131 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
132 if len(a) == 1: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
133 return False |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
134 elif 'dicom-until-pixel-data' in a: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
135 return True |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
136 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
137 raise Exception('Internal error') |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
138 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
139 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
140 return False |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
141 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
142 |
54
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
143 def CallMoveScu(args): |
231
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
144 try: |
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
145 subprocess.check_call(GetMoveScuCommand() + args, |
318
bac7cc80f240
dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
315
diff
changeset
|
146 stderr = subprocess.PIPE) |
231
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
147 except subprocess.CalledProcessError as e: |
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
148 # The error code "69" corresponds to "EXITCODE_CMOVE_ERROR", |
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
149 # that has been introduced in DCMTK 3.6.2. This error code is |
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
150 # expected by some tests that try and C-MOVE non-existing |
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
151 # DICOM instances. |
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
152 # https://groups.google.com/d/msg/orthanc-users/DCRc5NeSCbM/DG-pSWj-BwAJ |
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
153 if e.returncode != 69: |
4087505ddfe3
catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
220
diff
changeset
|
154 raise e |
54
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
155 |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
156 |
51
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
157 def GenerateTestSequence(): |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
158 return [ |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
159 { |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
160 'StudyDescription': 'Hello^', |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
161 'ReferencedStudySequence' : [ |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
162 { |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
163 'StudyDescription': 'Toto', |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
164 }, |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
165 { |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
166 'StudyDescription': 'Tata', |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
167 }, |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
168 ] |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
169 }, |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
170 { |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
171 'StudyDescription': 'Sébastien^', |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
172 'StudyDate' : '19700202', |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
173 } |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
174 ] |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
175 |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
176 |
3 | 177 class Orthanc(unittest.TestCase): |
178 def setUp(self): | |
83 | 179 if (sys.version_info >= (3, 0)): |
180 # Remove annoying warnings about unclosed socket in Python 3 | |
181 import warnings | |
182 warnings.simplefilter("ignore", ResourceWarning) | |
183 | |
508 | 184 print('running : %s' % self.id()) |
185 | |
3 | 186 DropOrthanc(_LOCAL) |
187 DropOrthanc(_REMOTE) | |
174 | 188 UninstallLuaCallbacks(_REMOTE) |
423
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
189 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
190 # Reset stuff possibly set by some integration tests |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
191 DoPut(_REMOTE, '/tools/default-encoding', 'Latin1') |
515
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
192 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
193 DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', [ '1.2.840.10008.1.*' ]) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
194 DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', '0') |
423
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
195 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
196 for i in [ 'toto', 'tata' ]: |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
197 if i in DoGet(_REMOTE, '/modalities'): |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
198 DoDelete(_REMOTE, '/modalities/%s' % i) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
199 if i in DoGet(_REMOTE, '/peers'): |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
200 DoDelete(_REMOTE, '/peers/%s' % i) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
201 |
312 | 202 #print("%s: In test %s" % (datetime.now(), self._testMethodName)) |
44
ffa542cce638
Toolbox.FindExecutable()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
43
diff
changeset
|
203 |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
204 def AssertSameImages(self, truth, url): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
205 im = GetImage(_REMOTE, url) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
206 self.assertTrue(CompareLists(truth, im.getdata())) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
207 |
3 | 208 |
209 def test_system(self): | |
177 | 210 self.assertTrue('Version' in DoGet(_REMOTE, '/system')) |
211 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalDiskSize']) | |
212 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) | |
213 | |
512 | 214 systemInfo = DoGet(_REMOTE, '/system') |
215 | |
471 | 216 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
512 | 217 self.assertIn("MainDicomTags", systemInfo) |
218 self.assertIn("Patient", systemInfo["MainDicomTags"]) | |
219 self.assertIn("Study", systemInfo["MainDicomTags"]) | |
220 self.assertIn("Series", systemInfo["MainDicomTags"]) | |
221 self.assertIn("Instance", systemInfo["MainDicomTags"]) | |
222 | |
223 if IsOrthancVersionAbove(_REMOTE, 1, 12, 0): | |
224 self.assertIn("UserMetadata", systemInfo) | |
225 self.assertEqual(1098, systemInfo['UserMetadata']['my-metadata'] ) | |
226 | |
177 | 227 if systemInfo["Version"] == "mainline": |
463
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
228 print("Skipping version checks since you're currently in mainline") |
177 | 229 return |
230 | |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
231 if not IsOrthancVersionAbove(_LOCAL, 0, 8, 7): |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
232 self.assertTrue(IsOrthancVersionAbove(_LOCAL, 0, 8, 6)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
233 self.assertFalse(IsOrthancVersionAbove(_LOCAL, 0, 8, 7)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
234 self.assertTrue(IsOrthancVersionAbove(_LOCAL, 0, 7, 6)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
235 self.assertFalse(IsOrthancVersionAbove(_LOCAL, 0, 9, 6)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
236 self.assertFalse(IsOrthancVersionAbove(_LOCAL, 1, 8, 6)) |
3 | 237 |
456 | 238 |
512 | 239 |
3 | 240 def test_upload(self): |
173 | 241 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalDiskSize']) |
242 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) | |
243 | |
244 sizeDummyCT = 2472 | |
245 sizeOverwrite = 2476 | |
246 instance = '66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d' | |
247 | |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
248 # This file has *no* pixel data => "dicom-until-pixel-data" is not created |
3 | 249 u = UploadInstance(_REMOTE, 'DummyCT.dcm') |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
250 isCompressed = (DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % u['ID']) != 0) |
183 | 251 self.assertEqual(instance, u['ID']) |
3 | 252 self.assertEqual('Success', u['Status']) |
173 | 253 |
183 | 254 if True: |
255 # New test for Orthanc 1.4.3 | |
256 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', u['ParentSeries']) | |
257 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', u['ParentStudy']) | |
258 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', u['ParentPatient']) | |
259 | |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
260 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
261 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json' % instance)) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
262 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/attachments/dicom-until-pixel-data' % instance)) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
263 j = 0 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
264 else: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
265 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/attachments/dicom-until-pixel-data' % instance)) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
266 j = int(DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json/size' % instance)) |
445
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
443
diff
changeset
|
267 |
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
443
diff
changeset
|
268 if IsOrthancVersionAbove(_REMOTE, 1, 10, 0): |
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
443
diff
changeset
|
269 attachmentInfo = DoGet(_REMOTE, '/instances/%s/attachments/dicom/info' % instance) |
447 | 270 |
271 if isCompressed: | |
272 self.assertGreater(sizeDummyCT, attachmentInfo['CompressedSize']) | |
273 else: | |
274 self.assertEqual(sizeDummyCT, attachmentInfo['CompressedSize']) | |
275 | |
445
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
443
diff
changeset
|
276 self.assertEqual(sizeDummyCT, attachmentInfo['UncompressedSize']) |
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
443
diff
changeset
|
277 self.assertIn('Uuid', attachmentInfo) |
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
443
diff
changeset
|
278 self.assertEqual(1, attachmentInfo['ContentType']) |
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
443
diff
changeset
|
279 |
173 | 280 s = sizeDummyCT + j |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
281 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
282 if isCompressed: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
283 self.assertGreater(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
284 else: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
285 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
286 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
287 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) |
173 | 288 |
3 | 289 u = UploadInstance(_REMOTE, 'DummyCT.dcm') |
290 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
291 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | |
292 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) | |
293 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
294 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
295 if isCompressed: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
296 self.assertGreater(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
297 else: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
298 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
299 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
300 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) |
173 | 301 |
302 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % instance) | |
3 | 303 self.assertEqual('20070101', i['StudyDate']) |
173 | 304 self.assertEqual('KNIX', i['PatientName']) |
305 | |
306 if IsOrthancVersionAbove(_REMOTE, 1, 4, 2): | |
307 # Overwriting | |
308 self.assertEqual('Success', u['Status']) | |
309 else: | |
310 self.assertEqual('AlreadyStored', u['Status']) | |
311 | |
312 u = UploadInstance(_REMOTE, 'DummyCT-overwrite.dcm') | |
313 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
314 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | |
315 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) | |
316 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
317 | |
318 if IsOrthancVersionAbove(_REMOTE, 1, 4, 2): | |
319 # Overwriting | |
320 self.assertEqual('Success', u['Status']) | |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
321 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
322 j2 = 0 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
323 else: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
324 j2 = int(DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json/size' % instance)) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
325 self.assertNotEqual(j, j2) |
173 | 326 s2 = sizeOverwrite + j2 |
327 self.assertNotEqual(s, s2) | |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
328 if isCompressed: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
329 self.assertGreater(s2, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
330 else: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
331 self.assertEqual(s2, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
332 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
333 self.assertEqual(s2, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) |
173 | 334 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % instance) |
335 self.assertEqual('ANOTHER', i['PatientName']) | |
336 else: | |
337 self.assertEqual('AlreadyStored', u['Status']) | |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
338 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
339 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) |
3 | 340 |
5 | 341 def test_upload_2(self): |
3 | 342 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
343 instance = DoGet(_REMOTE, '/instances/%s' % i) | |
344 self.assertEqual(i, instance['ID']) | |
345 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', | |
346 instance['MainDicomTags']['SOPInstanceUID']) | |
347 | |
348 series = DoGet(_REMOTE, '/series/%s' % instance['ParentSeries']) | |
349 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', | |
350 series['MainDicomTags']['SeriesInstanceUID']) | |
351 | |
352 study = DoGet(_REMOTE, '/studies/%s' % series['ParentStudy']) | |
353 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', | |
354 study['MainDicomTags']['StudyInstanceUID']) | |
355 | |
356 patient = DoGet(_REMOTE, '/patients/%s' % study['ParentPatient']) | |
357 self.assertEqual('ozp00SjY2xG', | |
358 patient['MainDicomTags']['PatientID']) | |
359 | |
360 dicom = DoGet(_REMOTE, '/instances/%s/file' % instance['ID']) | |
361 self.assertEqual(2472, len(dicom)) | |
362 self.assertEqual('3e29b869978b6db4886355a2b1132124', ComputeMD5(dicom)) | |
363 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/frames' % i))) | |
364 self.assertEqual('TWINOW', DoGet(_REMOTE, '/instances/%s/simplified-tags' % i)['StationName']) | |
365 self.assertEqual('TWINOW', DoGet(_REMOTE, '/instances/%s/tags' % i)['0008,1010']['Value']) | |
136
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
366 self.assertEqual('TWINOW', DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)['StationName']) |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
367 self.assertEqual('TWINOW', DoGet(_REMOTE, '/instances/%s/tags?short' % i)['0008,1010']) |
3 | 368 |
369 | |
5 | 370 def test_images(self): |
371 i = UploadInstance(_REMOTE, 'Phenix/IM-0001-0001.dcm')['ID'] | |
372 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/frames' % i))) | |
3 | 373 |
5 | 374 im = GetImage(_REMOTE, '/instances/%s/preview' % i) |
375 self.assertEqual("L", im.mode) | |
376 self.assertEqual(512, im.size[0]) | |
377 self.assertEqual(358, im.size[1]) | |
378 | |
379 im = GetImage(_REMOTE, '/instances/%s/image-uint8' % i) | |
380 self.assertEqual("L", im.mode) | |
381 self.assertEqual(512, im.size[0]) | |
382 self.assertEqual(358, im.size[1]) | |
383 | |
384 im = GetImage(_REMOTE, '/instances/%s/image-uint16' % i) | |
385 self.assertEqual(512, im.size[0]) | |
386 self.assertEqual(358, im.size[1]) | |
387 | |
388 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % i) | |
389 self.assertEqual("L", im.mode) | |
390 self.assertEqual(512, im.size[0]) | |
391 self.assertEqual(358, im.size[1]) | |
392 | |
393 im = GetImage(_REMOTE, '/instances/%s/frames/0/image-uint8' % i) | |
394 self.assertEqual("L", im.mode) | |
395 self.assertEqual(512, im.size[0]) | |
396 self.assertEqual(358, im.size[1]) | |
397 | |
398 im = GetImage(_REMOTE, '/instances/%s/frames/0/image-uint16' % i) | |
399 self.assertEqual(512, im.size[0]) | |
400 self.assertEqual(358, im.size[1]) | |
64 | 401 |
402 # This is Little Endian Explicit | |
403 self.assertEqual('1.2.840.10008.1.2.1', DoGet(_REMOTE, '/instances/%s/header?simplify' % i)['TransferSyntaxUID']) | |
404 | |
464
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
405 def test_images_implicit_vr(self): |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
406 if IsOrthancVersionAbove(_REMOTE, 1, 10, 2): |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
407 i = UploadInstance(_REMOTE, 'Implicit-vr-us-palette.dcm')['ID'] |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
408 |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
409 im = GetImage(_REMOTE, '/instances/%s/preview' % i) |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
410 self.assertEqual("RGB", im.mode) |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
411 self.assertEqual(800, im.size[0]) |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
412 self.assertEqual(600, im.size[1]) |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
413 |
216231c18c2e
added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents:
463
diff
changeset
|
414 |
6 | 415 def test_hierarchy(self): |
416 UploadFolder(_REMOTE, 'Brainix/Epi') | |
417 UploadFolder(_REMOTE, 'Brainix/Flair') | |
418 UploadFolder(_REMOTE, 'Knee/T1') | |
419 UploadFolder(_REMOTE, 'Knee/T2') | |
420 | |
421 p = DoGet(_REMOTE, '/patients') | |
422 s = DoGet(_REMOTE, '/studies') | |
423 t = DoGet(_REMOTE, '/series') | |
424 self.assertEqual(2, len(p)) | |
425 self.assertEqual(2, len(s)) | |
426 self.assertEqual(4, len(t)) | |
427 self.assertEqual(94, len(DoGet(_REMOTE, '/instances'))) | |
428 | |
429 brainixPatient = '16738bc3-e47ed42a-43ce044c-a3414a45-cb069bd0' | |
430 brainixStudy = '27f7126f-4f66fb14-03f4081b-f9341db2-53925988' | |
431 brainixEpi = '2ac1316d-3e432022-62eabff2-c59f5475-9b1ac3f8' | |
432 brainixFlair = '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0' | |
433 | |
434 kneePatient = 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' | |
435 kneeStudy = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' | |
436 kneeT1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' | |
437 kneeT2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59' | |
438 | |
439 self.assertTrue(brainixPatient in p) | |
440 self.assertTrue(kneePatient in p) | |
441 self.assertTrue(brainixStudy in s) | |
442 self.assertTrue(kneeStudy in s) | |
443 self.assertTrue(brainixEpi in t) | |
444 self.assertTrue(brainixFlair in t) | |
445 self.assertTrue(kneeT1 in t) | |
446 self.assertTrue(kneeT2 in t) | |
447 | |
448 self.assertEqual(44, len(DoGet(_REMOTE, '/patients/%s/instances' % brainixPatient))) | |
449 self.assertEqual(2, len(DoGet(_REMOTE, '/patients/%s/series' % brainixPatient))) | |
450 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/%s/studies' % brainixPatient))) | |
451 | |
452 self.assertEqual(50, len(DoGet(_REMOTE, '/patients/%s/instances' % kneePatient))) | |
453 self.assertEqual(2, len(DoGet(_REMOTE, '/patients/%s/series' % kneePatient))) | |
454 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/%s/studies' % kneePatient))) | |
455 | |
456 self.assertEqual(2, len(DoGet(_REMOTE, '/studies/%s/series' % brainixStudy))) | |
457 self.assertEqual(44, len(DoGet(_REMOTE, '/studies/%s/instances' % brainixStudy))) | |
458 | |
459 self.assertEqual(2, len(DoGet(_REMOTE, '/studies/%s/series' % kneeStudy))) | |
460 self.assertEqual(50, len(DoGet(_REMOTE, '/studies/%s/instances' % kneeStudy))) | |
461 | |
462 self.assertEqual(22, len(DoGet(_REMOTE, '/series/%s/instances' % brainixEpi))) | |
463 self.assertEqual(22, len(DoGet(_REMOTE, '/series/%s/instances' % brainixFlair))) | |
464 self.assertEqual(24, len(DoGet(_REMOTE, '/series/%s/instances' % kneeT1))) | |
465 self.assertEqual(26, len(DoGet(_REMOTE, '/series/%s/instances' % kneeT2))) | |
466 | |
467 for patient in p: | |
468 for study in DoGet(_REMOTE, '/patients/%s/studies' % patient): | |
469 self.assertEqual(patient, study['ParentPatient']) | |
470 for series in DoGet(_REMOTE, '/studies/%s/series' % study['ID']): | |
471 self.assertEqual(study['ID'], series['ParentStudy']) | |
211 | 472 self.assertEqual('Unknown', series['Status']) |
6 | 473 for instance in DoGet(_REMOTE, '/series/%s/instances' % series['ID']): |
474 self.assertEqual(series['ID'], instance['ParentSeries']) | |
475 | |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
476 if not IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
477 # The "dicom-as-json" attachment was removed in Orthanc 1.9.1 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
478 self.assertEqual(json.dumps(DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json/data' % instance['ID'])), |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
479 json.dumps(DoGet(_REMOTE, '/instances/%s/tags' % instance['ID']))) |
6 | 480 |
481 | |
482 r = DoDelete(_REMOTE, "/studies/%s" % brainixStudy)['RemainingAncestor'] | |
483 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
484 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | |
485 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) | |
486 self.assertEqual(50, len(DoGet(_REMOTE, '/instances'))) | |
487 self.assertEqual(None, r) | |
488 | |
489 r = DoDelete(_REMOTE, "/series/%s" % kneeT2)['RemainingAncestor'] | |
490 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
491 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | |
492 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) | |
493 self.assertEqual(24, len(DoGet(_REMOTE, '/instances'))) | |
494 self.assertEqual('Study', r['Type']) | |
495 self.assertEqual(kneeStudy, r['ID']) | |
496 | |
497 r = DoDelete(_REMOTE, "/instances/%s" % DoGet(_REMOTE, '/instances')[0])['RemainingAncestor'] | |
498 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
499 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | |
500 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) | |
501 self.assertEqual(23, len(DoGet(_REMOTE, '/instances'))) | |
502 self.assertEqual('Series', r['Type']) | |
503 self.assertEqual(kneeT1, r['ID']) | |
504 | |
505 r = DoDelete(_REMOTE, "/patients/%s" % kneePatient)['RemainingAncestor'] | |
506 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
507 self.assertEqual(0, len(DoGet(_REMOTE, '/studies'))) | |
508 self.assertEqual(0, len(DoGet(_REMOTE, '/series'))) | |
509 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) | |
510 self.assertEqual(None, r) | |
511 | |
512 DropOrthanc(_REMOTE) | |
513 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalDiskSize']) | |
514 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) | |
7 | 515 |
213
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
516 def test_delete_cascade(self): |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
517 # make sure deleting the last instance of a study deletes the series, study and patient |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
518 |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
519 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) # make sure orthanc is empty when starting the test |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
520 a = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
521 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
522 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
523 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
524 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
525 |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
526 DoDelete(_REMOTE, '/instances/%s' % a) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
527 |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
528 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
529 self.assertEqual(0, len(DoGet(_REMOTE, '/series'))) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
530 self.assertEqual(0, len(DoGet(_REMOTE, '/studies'))) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
531 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
eba6b8c38eee
added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents:
211
diff
changeset
|
532 |
7 | 533 |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
534 def test_multiframe(self): |
7 | 535 i = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID'] |
536 self.assertEqual(76, len(DoGet(_REMOTE, '/instances/%s/frames' % i))) | |
537 | |
538 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % i) | |
539 self.assertEqual("L", im.mode) | |
540 self.assertEqual(512, im.size[0]) | |
541 self.assertEqual(512, im.size[1]) | |
542 | |
543 DoGet(_REMOTE, '/instances/%s/frames/0/image-uint8' % i) | |
544 DoGet(_REMOTE, '/instances/%s/frames/0/image-uint16' % i) | |
545 DoGet(_REMOTE, '/instances/%s/frames/75/preview' % i) | |
546 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/aaa/preview' % i)) | |
547 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/76/preview' % i)) | |
548 | |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
549 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
550 def test_changes(self): |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
551 # Check emptiness |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
552 c = DoGet(_REMOTE, '/changes') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
553 self.assertEqual(0, len(c['Changes'])) |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
554 #self.assertEqual(0, c['Last']) # Not true anymore for Orthanc >= 1.5.2 |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
555 self.assertTrue(c['Done']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
556 c = DoGet(_REMOTE, '/changes?last') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
557 self.assertEqual(0, len(c['Changes'])) |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
558 #self.assertEqual(0, c['Last']) # Not true anymore for Orthanc >= 1.5.2 |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
559 self.assertTrue(c['Done']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
560 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
561 # Add 1 instance |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
562 i = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
563 c = DoGet(_REMOTE, '/changes') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
564 begin = c['Last'] |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
565 self.assertEqual(4, len(c['Changes'])) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
566 self.assertTrue(c['Done']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
567 self.assertEqual(c['Changes'][-1]['Seq'], c['Last']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
568 |
390
5c2472f008eb
Check the order in which the creation events are reported
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
389
diff
changeset
|
569 # Check the order in which the creation events are reported |
5c2472f008eb
Check the order in which the creation events are reported
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
389
diff
changeset
|
570 self.assertEqual(c['Changes'][0]['ChangeType'], 'NewInstance') |
5c2472f008eb
Check the order in which the creation events are reported
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
389
diff
changeset
|
571 self.assertEqual(c['Changes'][1]['ChangeType'], 'NewSeries') |
5c2472f008eb
Check the order in which the creation events are reported
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
389
diff
changeset
|
572 self.assertEqual(c['Changes'][2]['ChangeType'], 'NewStudy') |
5c2472f008eb
Check the order in which the creation events are reported
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
389
diff
changeset
|
573 self.assertEqual(c['Changes'][3]['ChangeType'], 'NewPatient') |
5c2472f008eb
Check the order in which the creation events are reported
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
389
diff
changeset
|
574 |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
575 c = DoGet(_REMOTE, '/changes?last') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
576 self.assertEqual(1, len(c['Changes'])) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
577 self.assertEqual(begin, c['Last']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
578 self.assertTrue(c['Done']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
579 c = DoGet(_REMOTE, '/changes?limit=1&since=' + str(begin - 1)) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
580 self.assertEqual(1, len(c['Changes'])) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
581 self.assertEqual(begin, c['Last']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
582 self.assertTrue(c['Done']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
583 c = DoGet(_REMOTE, '/changes?limit=1&since=' + str(begin - 2)) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
584 self.assertEqual(1, len(c['Changes'])) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
585 self.assertEqual(begin - 1, c['Last']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
586 self.assertFalse(c['Done']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
587 c = DoGet(_REMOTE, '/changes?limit=1&since=' + str(begin - 3)) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
588 self.assertEqual(1, len(c['Changes'])) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
589 self.assertEqual(begin - 2, c['Last']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
590 self.assertFalse(c['Done']) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
591 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
592 UploadFolder(_REMOTE, 'Knee/T1') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
593 UploadFolder(_REMOTE, 'Knee/T2') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
594 since = begin |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
595 countPatients = 0 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
596 countStudies = 0 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
597 countSeries = 0 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
598 countInstances = 0 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
599 completed = 0 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
600 while True: |
530 | 601 c = DoGet(_REMOTE, '/changes', { 'since' : since, 'limit' : 1000 }) |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
602 since = c['Last'] |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
603 for i in c['Changes']: |
530 | 604 # We have set StableAge to 1 -> we might have StabeStudy but this is not sure -> detect only the 'New' events |
605 | |
606 if i['ResourceType'] == 'Instance' and i['ChangeType'] == 'NewInstance': | |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
607 countInstances += 1 |
530 | 608 if i['ResourceType'] == 'Patient' and i['ChangeType'] == 'NewPatient': |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
609 countPatients += 1 |
530 | 610 if i['ResourceType'] == 'Study' and i['ChangeType'] == 'NewStudy': |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
611 countStudies += 1 |
530 | 612 if i['ResourceType'] == 'Series' and i['ChangeType'] == 'NewSeries': |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
613 countSeries += 1 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
614 if i['ChangeType'] == 'CompletedSeries': |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
615 completed += 1 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
616 self.assertTrue('ID' in i) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
617 self.assertTrue('Path' in i) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
618 self.assertTrue('Seq' in i) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
619 if c['Done']: |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
620 break |
530 | 621 # we count only the events since before the upload of 2 Knee series ! |
622 self.assertEqual(50, countInstances) | |
623 self.assertEqual(1, countPatients) | |
624 self.assertEqual(1, countStudies) | |
625 self.assertEqual(2, countSeries) | |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
626 self.assertEqual(0, completed) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
627 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
628 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
629 def test_archive(self): |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
630 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
631 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') |
582
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
632 kneePatient = 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
633 kneeStudy = DoGet(_REMOTE, '/studies')[0] |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
634 kneeSeries = DoGet(_REMOTE, '/series')[0] |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
635 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
636 z = GetArchive(_REMOTE, '/patients/%s/archive' % kneePatient) |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
637 self.assertEqual(2, len(z.namelist())) |
582
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
638 self.assertIn('887 KNEE/A10003245599 IRM DU GENOU/MR T1W_aTSE/MR000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
639 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
640 z = GetArchive(_REMOTE, '/studies/%s/archive' % kneeStudy) |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
641 self.assertEqual(2, len(z.namelist())) |
582
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
642 self.assertIn('887 KNEE/A10003245599 IRM DU GENOU/MR T1W_aTSE/MR000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
643 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
644 z = GetArchive(_REMOTE, '/series/%s/archive' % kneeSeries) |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
645 self.assertEqual(1, len(z.namelist())) |
583
b9dffa48f74a
fix to keep backward behaviour when exporting a series archive
Alain Mazy <am@osimis.io>
parents:
582
diff
changeset
|
646 self.assertIn('887 KNEE/A10003245599 IRM DU GENOU/MR T1W_aTSE/MR000000.dcm', z.namelist()) |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
647 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
648 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') |
582
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
649 brainixPatient = '16738bc3-e47ed42a-43ce044c-a3414a45-cb069bd0' |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
650 brainixStudy = '27f7126f-4f66fb14-03f4081b-f9341db2-53925988' |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
651 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
652 z = GetArchive(_REMOTE, '/patients/%s/archive' % kneePatient) |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
653 self.assertEqual(2, len(z.namelist())) |
192 | 654 |
582
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
655 # archive with 2 patients |
192 | 656 z = PostArchive(_REMOTE, '/tools/create-archive', { |
582
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
657 'Resources' : [ brainixPatient, kneePatient ] |
192 | 658 }) |
659 self.assertEqual(3, len(z.namelist())) | |
582
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
660 self.assertIn('5Yp0E BRAINIX/0 IRM crbrale neurocrne/MR sT2WFLAIR/MR000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
661 self.assertIn('887 KNEE/A10003245599 IRM DU GENOU/MR T1W_aTSE/MR000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
662 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
663 z = PostArchive(_REMOTE, '/patients/%s/archive' % kneePatient, { |
403
e08e15befa0c
test sync POST to /archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
402
diff
changeset
|
664 'Synchronous' : True |
e08e15befa0c
test sync POST to /archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
402
diff
changeset
|
665 }) |
e08e15befa0c
test sync POST to /archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
402
diff
changeset
|
666 self.assertEqual(2, len(z.namelist())) |
582
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
667 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
668 # archive with 2 studies |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
669 z = PostArchive(_REMOTE, '/tools/create-archive', { |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
670 'Resources' : [ brainixStudy, kneeStudy ] |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
671 }) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
672 self.assertEqual(3, len(z.namelist())) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
673 self.assertIn('5Yp0E BRAINIX/0 IRM crbrale neurocrne/MR sT2WFLAIR/MR000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
674 self.assertIn('887 KNEE/A10003245599 IRM DU GENOU/MR T1W_aTSE/MR000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
675 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
676 # archive with 1 patient & 1 study |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
677 z = PostArchive(_REMOTE, '/tools/create-archive', { |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
678 'Resources' : [ brainixPatient, kneeStudy ] |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
679 }) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
680 self.assertEqual(3, len(z.namelist())) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
681 self.assertIn('5Yp0E BRAINIX/0 IRM crbrale neurocrne/MR sT2WFLAIR/MR000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
682 self.assertIn('887 KNEE/A10003245599 IRM DU GENOU/MR T1W_aTSE/MR000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
683 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
684 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
685 def test_archive_with_patient_ids_collision(self): |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
686 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
687 # one PatientID: COMMON |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
688 # 2 PatientName: HELLO & WORLD |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
689 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
690 hello = UploadInstance(_REMOTE, 'PatientIdsCollision/Image1.dcm') |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
691 world = UploadInstance(_REMOTE, 'PatientIdsCollision/Image2.dcm') |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
692 helloStudy = hello['ParentStudy'] |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
693 worldStudy = world['ParentStudy'] |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
694 helloPatient = hello['ParentPatient'] |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
695 worldPatient = world['ParentPatient'] |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
696 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
697 self.assertEqual(helloPatient, worldPatient) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
698 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
699 # when downloading the Patient, we do not really know what PatientName we will get in the zip |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
700 z = GetArchive(_REMOTE, '/patients/%s/archive' % helloPatient) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
701 self.assertEqual(2, len(z.namelist())) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
702 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
703 # when downloading studies individually, we want to have the PatientName that appears in the study |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
704 z = GetArchive(_REMOTE, '/studies/%s/archive' % helloStudy) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
705 self.assertEqual(1, len(z.namelist())) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
706 self.assertIn('COMMON HELLO/HELLO SERIES/Unknown Series/00000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
707 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
708 z = GetArchive(_REMOTE, '/studies/%s/archive' % worldStudy) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
709 self.assertEqual(1, len(z.namelist())) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
710 self.assertIn('COMMON WORLD/WORLD SERIES/Unknown Series/00000000.dcm', z.namelist()) |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
711 |
615201c822d8
new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents:
573
diff
changeset
|
712 |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
713 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
714 def test_media_archive(self): |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
715 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
716 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
717 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
718 z = GetArchive(_REMOTE, '/patients/%s/media' % DoGet(_REMOTE, '/patients')[0]) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
719 self.assertEqual(3, len(z.namelist())) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
720 self.assertTrue('IMAGES/IM0' in z.namelist()) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
721 self.assertTrue('IMAGES/IM1' in z.namelist()) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
722 self.assertTrue('DICOMDIR' in z.namelist()) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
723 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
724 try: |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
725 os.remove('/tmp/DICOMDIR') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
726 except: |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
727 # The file does not exist |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
728 pass |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
729 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
730 z.extract('DICOMDIR', '/tmp') |
45 | 731 a = subprocess.check_output([ FindExecutable('dciodvfy'), '/tmp/DICOMDIR' ], |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
732 stderr = subprocess.STDOUT).split('\n') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
733 self.assertEqual(3, len(a)) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
734 self.assertTrue(a[0].startswith('Warning')) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
735 self.assertEqual('BasicDirectory', a[1]) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
736 self.assertEqual('', a[2]) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
737 |
45 | 738 a = subprocess.check_output([ FindExecutable('dcentvfy'), '/tmp/DICOMDIR' ], |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
739 stderr = subprocess.STDOUT).split('\n') |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
740 self.assertEqual(1, len(a)) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
741 self.assertEqual('', a[0]) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
742 |
45 | 743 a = subprocess.check_output([ FindExecutable('dcm2xml'), '/tmp/DICOMDIR' ]) |
8
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
744 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081908590448738', a) != None) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
745 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081909113806560', a) != None) |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
746 |
f8d781d1d267
test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
7
diff
changeset
|
747 os.remove('/tmp/DICOMDIR') |
10 | 748 |
749 | |
750 def test_protection(self): | |
751 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
752 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
753 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
754 a = DoGet(_REMOTE, '/patients')[0] | |
755 b = DoGet(_REMOTE, '/patients')[1] | |
756 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
757 DoPut(_REMOTE, '/patients/%s/protected' % a, '0', 'text/plain') | |
758 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
759 DoPut(_REMOTE, '/patients/%s/protected' % a, '1', 'text/plain') | |
760 self.assertEqual(1, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
761 DoPut(_REMOTE, '/patients/%s/protected' % a, '0', 'text/plain') | |
762 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
763 | |
764 | |
12 | 765 def test_raw_tags(self): |
10 | 766 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID'] |
767 | |
768 dicom = DoGet(_REMOTE, '/instances/%s/file' % i) | |
769 self.assertEqual('1a7c56cb02d6e742cc9c856a8ac182e3', ComputeMD5(dicom)) | |
770 | |
771 s = '/instances/%s/content/' % i | |
772 | |
773 self.assertEqual('LOGIQBOOK', DoGet(_REMOTE, s + '0008-1010').strip()) | |
774 self.assertRaises(Exception, lambda: DoGet(_REMOTE, s + '0008-1011')) | |
775 | |
776 self.assertEqual('Abdomen', DoGet(_REMOTE, s + '7fe1-1001/0/7fe1-1008/0/7fe1-1057').strip()) | |
777 self.assertEqual('cla_3c', DoGet(_REMOTE, s + '7fe1-1001/0/7fe1-1008/8/7fe1-1057').strip()) | |
778 | |
779 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm') | |
780 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
781 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
782 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
783 | |
784 for i in DoGet(_REMOTE, '/instances'): | |
785 aid = DoGet(_REMOTE, '/instances/%s' % i)['MainDicomTags']['SOPInstanceUID'] | |
786 self.assertEqual(aid, DoGet(_REMOTE, '/instances/%s/content/0008-0018' % i).replace(chr(0), '')) | |
787 | |
788 | |
789 def test_raw_tags_mdn(self): | |
790 # Bug reported by Cyril Paulus | |
791 i = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID'] | |
792 self.assertAlmostEqual(0.000027, DoGet(_REMOTE, '/instances/%s/content/7053-1000' % i)) | |
793 | |
794 | |
795 def test_modify_instance(self): | |
796 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID'] | |
797 modified = DoPost(_REMOTE, '/instances/%s/modify' % i, | |
798 json.dumps({ | |
799 "Replace" : { | |
800 "PatientName" : "hello", | |
801 #"PatientID" : "world" | |
802 }, | |
803 "Remove" : [ "StationName" ], | |
118
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
804 "RemovePrivateTags" : True |
10 | 805 }), |
806 'application/json') | |
807 j = DoPost(_REMOTE, '/instances', modified, 'application/dicom')['ID'] | |
808 | |
809 self.assertNotEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) | |
810 #self.assertNotEqual('world', DoGet(_REMOTE, '/instances/%s/content/0010-0020' % i).strip()) | |
83 | 811 self.assertEqual('LOGIQBOOK', DoGet(_REMOTE, '/instances/%s/content/0008-1010' % i).strip()) |
10 | 812 DoGet(_REMOTE, '/instances/%s/content/6003-1010' % i) # Some private tag |
813 | |
814 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip()) | |
815 #self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/0010-0020' % j).strip()) | |
816 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/0008-1010' % j)) | |
817 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/6003-1010' % j)) | |
818 | |
819 | |
820 def test_modify_series(self): | |
821 # Upload 4 images from the same series | |
822 for i in range(4): | |
823 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
824 | |
825 origSeries = DoGet(_REMOTE, '/series')[0] | |
826 newSeries = DoPost(_REMOTE, '/series/%s/modify' % origSeries, | |
827 '{"Replace":{"PatientName":"Jodogne"}}', | |
828 'application/json')['ID'] | |
829 | |
830 self.assertEqual(origSeries, DoGet(_REMOTE, '/series/%s' % newSeries)['ModifiedFrom']) | |
831 instances = DoGet(_REMOTE, '/series/%s' % newSeries)['Instances'] | |
832 self.assertEqual(4, len(instances)) | |
833 for i in instances: | |
834 j = DoGet(_REMOTE, '/instances/%s' % i)['ModifiedFrom'] | |
835 self.assertEqual(newSeries, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']) | |
836 self.assertEqual(origSeries, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries']) | |
837 | |
838 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) | |
839 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip()) | |
840 | |
841 | |
842 def test_modify_study(self): | |
843 # Upload 4 images from the 2 series of the same study | |
844 for i in range(4): | |
845 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) | |
846 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
847 | |
848 origStudy = DoGet(_REMOTE, '/studies')[0] | |
849 newStudy = DoPost(_REMOTE, '/studies/%s/modify' % origStudy, | |
850 '{"Replace":{"PatientName":"Jodogne"}}', | |
851 'application/json')['ID'] | |
852 | |
853 self.assertEqual(origStudy, DoGet(_REMOTE, '/studies/%s' % newStudy)['ModifiedFrom']) | |
854 series = DoGet(_REMOTE, '/studies/%s' % newStudy)['Series'] | |
855 self.assertEqual(2, len(series)) | |
856 for s in series: | |
857 ss = DoGet(_REMOTE, '/series/%s' % s)['ModifiedFrom'] | |
858 self.assertEqual(newStudy, DoGet(_REMOTE, '/series/%s' % s)['ParentStudy']) | |
859 self.assertEqual(origStudy, DoGet(_REMOTE, '/series/%s' % ss)['ParentStudy']) | |
860 | |
861 instances = DoGet(_REMOTE, '/series/%s' % s)['Instances'] | |
862 for i in instances: | |
863 j = DoGet(_REMOTE, '/instances/%s' % i)['ModifiedFrom'] | |
864 self.assertEqual(s, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']) | |
865 self.assertEqual(ss, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries']) | |
866 | |
867 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) | |
868 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip()) | |
869 | |
870 | |
871 def test_anonymize_series(self): | |
872 # Upload 4 images from the same series | |
873 for i in range(4): | |
874 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
875 | |
876 origSeries = DoGet(_REMOTE, '/series')[0] | |
877 newSeries = DoPost(_REMOTE, '/series/%s/anonymize' % origSeries, | |
878 '{}', | |
879 'application/json')['ID'] | |
880 | |
881 self.assertEqual(origSeries, DoGet(_REMOTE, '/series/%s' % newSeries)['AnonymizedFrom']) | |
882 instances = DoGet(_REMOTE, '/series/%s' % newSeries)['Instances'] | |
883 self.assertEqual(4, len(instances)) | |
884 for i in instances: | |
885 j = DoGet(_REMOTE, '/instances/%s' % i)['AnonymizedFrom'] | |
886 self.assertEqual(newSeries, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']) | |
887 self.assertEqual(origSeries, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries']) | |
888 | |
889 DoGet(_REMOTE, '/instances/%s/content/0008-1010' % j) | |
890 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/0008-1010' % i)) | |
891 | |
892 | |
893 def test_anonymize_study(self): | |
894 # Upload 4 images from the 2 series of the same study | |
895 for i in range(4): | |
896 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) | |
897 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
898 | |
899 origStudy = DoGet(_REMOTE, '/studies')[0] | |
900 newStudy = DoPost(_REMOTE,'/studies/%s/anonymize' % origStudy, | |
901 '{"Replace":{"PatientName":"Jodogne"}}', | |
902 'application/json')['ID'] | |
903 | |
904 self.assertEqual(origStudy, DoGet(_REMOTE, '/studies/%s' % newStudy)['AnonymizedFrom']) | |
905 series = DoGet(_REMOTE, '/studies/%s' % newStudy)['Series'] | |
906 self.assertEqual(2, len(series)) | |
907 for s in series: | |
908 ss = DoGet(_REMOTE, '/series/%s' % s)['AnonymizedFrom'] | |
909 self.assertEqual(newStudy, DoGet(_REMOTE, '/series/%s' % s)['ParentStudy']) | |
910 self.assertEqual(origStudy, DoGet(_REMOTE, '/series/%s' % ss)['ParentStudy']) | |
911 | |
912 instances = DoGet(_REMOTE, '/series/%s' % s)['Instances'] | |
913 for i in instances: | |
914 j = DoGet(_REMOTE, '/instances/%s' % i)['AnonymizedFrom'] | |
915 self.assertEqual(s, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']) | |
916 self.assertEqual(ss, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries']) | |
917 | |
918 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) | |
919 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip()) | |
11 | 920 |
921 | |
922 | |
923 def test_storescu(self): | |
924 # Check emptiness | |
925 e = DoGet(_REMOTE, '/exports') | |
926 self.assertEqual(0, len(e['Exports'])) | |
927 self.assertEqual(0, e['Last']) | |
928 self.assertTrue(e['Done']) | |
929 e = DoGet(_REMOTE, '/exports?last') | |
930 self.assertEqual(0, len(e['Exports'])) | |
931 self.assertEqual(0, e['Last']) | |
932 self.assertTrue(e['Done']) | |
933 | |
934 # Add 1 instance | |
935 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] | |
936 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) | |
937 | |
938 # Export the instance | |
939 j = DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain') # instance | |
940 self.assertEqual(1, len(DoGet(_LOCAL, '/patients'))) | |
941 self.assertEqual(1, len(DoGet(_LOCAL, '/studies'))) | |
942 self.assertEqual(1, len(DoGet(_LOCAL, '/series'))) | |
943 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
944 | |
945 e = DoGet(_REMOTE, '/exports') | |
946 self.assertEqual(1, len(e['Exports'])) | |
947 self.assertTrue(e['Done']) | |
948 self.assertEqual(e['Exports'][-1]['Seq'], e['Last']) | |
949 e = DoGet(_REMOTE, '/exports?limit=1') | |
950 self.assertEqual(1, len(e['Exports'])) | |
951 self.assertTrue(e['Done']) | |
952 self.assertEqual(e['Exports'][-1]['Seq'], e['Last']) | |
953 e = DoGet(_REMOTE, '/exports?last') | |
954 self.assertEqual(1, len(e['Exports'])) | |
955 self.assertTrue(e['Done']) | |
956 self.assertEqual(e['Exports'][-1]['Seq'], e['Last']) | |
957 seqInstance = e['Last'] | |
958 | |
959 # Export the series | |
960 j = DoPost(_REMOTE, '/modalities/orthanctest/store', 'f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', 'text/plain') | |
961 | |
962 e = DoGet(_REMOTE, '/exports') | |
963 self.assertEqual(2, len(e['Exports'])) | |
964 self.assertTrue(e['Done']) | |
965 self.assertEqual(e['Exports'][-1]['Seq'], e['Last']) | |
966 seqSeries = e['Last'] | |
967 self.assertNotEqual(seqInstance, seqSeries) | |
968 e = DoGet(_REMOTE, '/exports?limit=1&since=0') | |
969 self.assertEqual(1, len(e['Exports'])) | |
970 self.assertFalse(e['Done']) | |
971 self.assertEqual(e['Exports'][-1]['Seq'], seqInstance) | |
972 e = DoGet(_REMOTE, '/exports?limit=1&since=' + str(seqInstance)) | |
973 self.assertEqual(1, len(e['Exports'])) | |
974 self.assertTrue(e['Done']) | |
975 self.assertEqual(e['Exports'][-1]['Seq'], seqSeries) | |
976 e = DoGet(_REMOTE, '/exports?last') | |
977 self.assertEqual(1, len(e['Exports'])) | |
978 self.assertTrue(e['Done']) | |
979 self.assertEqual(e['Exports'][-1]['Seq'], seqSeries) | |
980 | |
981 # Export the study | |
982 j = DoPost(_REMOTE, '/modalities/orthanctest/store', 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', 'text/plain') | |
983 seqStudy = DoGet(_REMOTE, '/exports')['Last'] | |
984 | |
985 # Export the patient | |
986 j = DoPost(_REMOTE, '/modalities/orthanctest/store', '6816cb19-844d5aee-85245eba-28e841e6-2414fae2', 'text/plain') | |
987 self.assertEqual(1, len(DoGet(_LOCAL, '/patients'))) | |
988 self.assertEqual(1, len(DoGet(_LOCAL, '/studies'))) | |
989 self.assertEqual(1, len(DoGet(_LOCAL, '/series'))) | |
990 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
991 | |
992 e = DoGet(_REMOTE, '/exports') | |
993 self.assertEqual(4, len(e['Exports'])) | |
994 self.assertTrue(e['Done']) | |
995 self.assertEqual(e['Exports'][-1]['Seq'], e['Last']) | |
996 seqPatient = e['Last'] | |
997 self.assertNotEqual(seqInstance, seqSeries) | |
998 self.assertNotEqual(seqSeries, seqStudy) | |
999 self.assertNotEqual(seqStudy, seqPatient) | |
1000 self.assertTrue(seqInstance < seqSeries) | |
1001 self.assertTrue(seqSeries < seqStudy) | |
1002 self.assertTrue(seqStudy < seqPatient) | |
1003 e = DoGet(_REMOTE, '/exports?limit=1&since=0') | |
1004 self.assertEqual(1, len(e['Exports'])) | |
1005 self.assertFalse(e['Done']) | |
1006 self.assertEqual(e['Exports'][-1]['Seq'], seqInstance) | |
1007 e = DoGet(_REMOTE, '/exports?limit=1&since=' + str(seqInstance)) | |
1008 self.assertEqual(1, len(e['Exports'])) | |
1009 self.assertFalse(e['Done']) | |
1010 self.assertEqual(e['Exports'][-1]['Seq'], seqSeries) | |
1011 e = DoGet(_REMOTE, '/exports?limit=1&since=' + str(seqSeries)) | |
1012 self.assertEqual(1, len(e['Exports'])) | |
1013 self.assertFalse(e['Done']) | |
1014 self.assertEqual(e['Exports'][-1]['Seq'], seqStudy) | |
1015 e = DoGet(_REMOTE, '/exports?limit=1&since=' + str(seqStudy)) | |
1016 self.assertEqual(1, len(e['Exports'])) | |
1017 self.assertTrue(e['Done']) | |
1018 self.assertEqual(e['Exports'][-1]['Seq'], seqPatient) | |
1019 e = DoGet(_REMOTE, '/exports?last') | |
1020 self.assertEqual(1, len(e['Exports'])) | |
1021 self.assertTrue(e['Done']) | |
1022 self.assertEqual(e['Exports'][-1]['Seq'], seqPatient) | |
1023 | |
1024 | |
1025 # Check the content of the logged information | |
1026 e = DoGet(_REMOTE, '/exports')['Exports'] | |
1027 | |
1028 if 'PatientID' in e[0]: | |
1029 # Since Orthanc 0.8.6 | |
1030 patient = 'PatientID' | |
1031 study = 'StudyInstanceUID' | |
1032 series = 'SeriesInstanceUID' | |
1033 instance = 'SOPInstanceUID' | |
1034 else: | |
1035 # Up to Orthanc 0.8.5 | |
1036 patient = 'PatientId' | |
1037 study = 'StudyInstanceUid' | |
1038 series = 'SeriesInstanceUid' | |
1039 instance = 'SopInstanceUid' | |
1040 | |
1041 for k in range(4): | |
1042 self.assertTrue('Date' in e[k]) | |
1043 self.assertTrue('Seq' in e[k]) | |
1044 self.assertEqual('orthanctest', e[k]['RemoteModality']) | |
1045 | |
1046 self.assertEqual(10, len(e[0])) | |
1047 self.assertEqual('Instance', e[0]['ResourceType']) | |
1048 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', e[0]['ID']) | |
1049 self.assertEqual('/instances/66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', e[0]['Path']) | |
1050 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', e[0][instance]) | |
1051 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', e[0][series]) | |
1052 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', e[0][study]) | |
1053 self.assertEqual('ozp00SjY2xG', e[0][patient]) | |
1054 | |
1055 self.assertEqual(9, len(e[1])) | |
1056 self.assertEqual('Series', e[1]['ResourceType']) | |
1057 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', e[1]['ID']) | |
1058 self.assertEqual('/series/f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', e[1]['Path']) | |
1059 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', e[1][series]) | |
1060 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', e[1][study]) | |
1061 self.assertEqual('ozp00SjY2xG', e[1][patient]) | |
1062 | |
1063 self.assertEqual(8, len(e[2])) | |
1064 self.assertEqual('Study', e[2]['ResourceType']) | |
1065 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', e[2]['ID']) | |
1066 self.assertEqual('/studies/b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', e[2]['Path']) | |
1067 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', e[2][study]) | |
1068 self.assertEqual('ozp00SjY2xG', e[2][patient]) | |
1069 | |
1070 self.assertEqual(7, len(e[3])) | |
1071 self.assertEqual('Patient', e[3]['ResourceType']) | |
1072 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', e[3]['ID']) | |
1073 self.assertEqual('/patients/6816cb19-844d5aee-85245eba-28e841e6-2414fae2', e[3]['Path']) | |
1074 self.assertEqual('ozp00SjY2xG', e[3][patient]) | |
1075 | |
1076 DropOrthanc(_REMOTE) | |
1077 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports'])) | |
1078 | |
1079 | |
1080 def test_store_peer(self): | |
1081 self.assertEqual(0, len(DoGet(_LOCAL, '/exports')['Exports'])) | |
1082 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports'])) | |
1083 | |
1084 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] | |
1085 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) | |
1086 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
1087 | |
1088 j = DoPost(_REMOTE, '/peers/peer/store', str(i), 'text/plain') | |
1089 self.assertEqual(1, len(DoGet(_LOCAL, '/patients'))) | |
1090 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
1091 | |
1092 self.assertEqual(1, len(DoGet(_REMOTE, '/exports')['Exports'])) | |
1093 | |
1094 DropOrthanc(_REMOTE) | |
1095 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports'])) | |
1096 | |
1097 | |
1098 def test_bulk_storescu(self): | |
1099 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) | |
1100 | |
1101 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
1102 b = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
1103 | |
1104 j = DoPost(_REMOTE, '/modalities/orthanctest/store', [ a['ID'], b['ID'] ], 'application/json') | |
1105 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) | |
1106 | |
1107 DropOrthanc(_LOCAL) | |
1108 | |
1109 # Send using patient's UUID | |
1110 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
1111 j = DoPost(_REMOTE, '/modalities/orthanctest/store', | |
1112 [ 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' ], 'application/json') | |
1113 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) | |
1114 | |
1115 | |
1116 def test_color(self): | |
1117 i = UploadInstance(_REMOTE, 'ColorTestMalaterre.dcm')['ID'] | |
1118 im = GetImage(_REMOTE, '/instances/%s/preview' % i) | |
1119 self.assertEqual("RGB", im.mode) | |
1120 self.assertEqual(41, im.size[0]) | |
1121 self.assertEqual(41, im.size[1]) | |
1122 | |
1123 # http://effbot.org/zone/pil-comparing-images.htm | |
13 | 1124 truth = Image.open(GetDatabasePath('ColorTestMalaterre.png')) |
11 | 1125 self.assertTrue(ImageChops.difference(im, truth).getbbox() is None) |
1126 | |
1127 | |
12 | 1128 def test_faking_ruby_put(self): |
1129 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
1130 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
1131 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
1132 a = DoGet(_REMOTE, '/patients')[0] | |
1133 b = DoGet(_REMOTE, '/patients')[1] | |
1134 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
1135 DoGet(_REMOTE, '/patients/%s/protected' % a, data = { '_method' : 'PUT' }, body = '0') | |
1136 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
1137 DoGet(_REMOTE, '/patients/%s/protected' % a, data = { '_method' : 'PUT' }, body = '1') | |
1138 self.assertEqual(1, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
1139 DoGet(_REMOTE, '/patients/%s/protected' % a, data = { '_method' : 'PUT' }, body = '0') | |
1140 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
1141 | |
1142 | |
1143 def test_faking_ruby_delete(self): | |
1144 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
1145 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
1146 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
1147 a = DoGet(_REMOTE, '/patients')[0] | |
1148 b = DoGet(_REMOTE, '/patients')[1] | |
1149 DoGet(_REMOTE, '/patients/%s' % a, data = { '_method' : 'DELETE' }) | |
1150 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
1151 DoGet(_REMOTE, '/patients/%s' % b, data = { '_method' : 'DELETE' }) | |
1152 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
1153 | |
1154 | |
1155 def test_faking_google_put(self): | |
1156 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
1157 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
1158 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
1159 a = DoGet(_REMOTE, '/patients')[0] | |
1160 b = DoGet(_REMOTE, '/patients')[1] | |
1161 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
1162 DoPost(_REMOTE, '/patients/%s/protected' % a, headers = { 'X-HTTP-Method-Override' : 'PUT' }, data = '0') | |
1163 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
1164 DoPost(_REMOTE, '/patients/%s/protected' % a, headers = { 'X-HTTP-Method-Override' : 'PUT' }, data = '1') | |
1165 self.assertEqual(1, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
1166 DoPost(_REMOTE, '/patients/%s/protected' % a, headers = { 'X-HTTP-Method-Override' : 'PUT' }, data = '0') | |
1167 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
1168 | |
1169 | |
1170 def test_faking_google_delete(self): | |
1171 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
1172 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
1173 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
1174 a = DoGet(_REMOTE, '/patients')[0] | |
1175 b = DoGet(_REMOTE, '/patients')[1] | |
1176 DoPost(_REMOTE, '/patients/%s' % a, headers = { 'X-HTTP-Method-Override' : 'DELETE' }) | |
1177 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
1178 DoPost(_REMOTE, '/patients/%s' % b, headers = { 'X-HTTP-Method-Override' : 'DELETE' }) | |
1179 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
1180 | |
1181 | |
1182 def test_lua(self): | |
1183 self.assertEqual(42, DoPost(_REMOTE, '/tools/execute-script', 'print(42)')) | |
1184 self.assertTrue(IsDefinedInLua(_REMOTE, 'PrintRecursive')) | |
1185 self.assertFalse(IsDefinedInLua(_REMOTE, 'HelloWorld')) | |
1186 | |
1187 | |
1188 def test_metadata(self): | |
1189 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
1190 p = DoGet(_REMOTE, '/patients')[0] | |
1191 i = DoGet(_REMOTE, '/instances')[0] | |
369
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1192 series = DoGet(_REMOTE, '/series')[0] |
12 | 1193 |
1194 m = DoGet(_REMOTE, '/patients/%s/metadata' % p) | |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1195 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1196 self.assertEqual(2, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1197 self.assertTrue('MainDicomTagsSignature' in m) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1198 else: |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1199 self.assertEqual(1, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1200 self.assertTrue('LastUpdate' in m) |
12 | 1201 |
369
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1202 # The lines below failed on Orthanc <= 1.8.2 |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1203 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/studies/%s/metadata' % p)) |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1204 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/series/%s/metadata' % p)) |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1205 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/metadata' % p)) |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1206 |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1207 m = DoGet(_REMOTE, '/studies/%s/metadata' % DoGet(_REMOTE, '/studies')[0]) |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1208 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1209 self.assertEqual(2, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1210 self.assertTrue('MainDicomTagsSignature' in m) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1211 else: |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1212 self.assertEqual(1, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1213 self.assertTrue('LastUpdate' in m) |
369
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1214 |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1215 m = DoGet(_REMOTE, '/series/%s/metadata' % series) |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1216 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1217 self.assertEqual(3, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1218 self.assertTrue('MainDicomTagsSignature' in m) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1219 else: |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1220 self.assertEqual(2, len(m)) |
369
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1221 self.assertTrue('LastUpdate' in m) |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1222 |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1223 # New in Orthanc 1.9.0 |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1224 self.assertTrue('RemoteAET' in m) |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1225 self.assertEqual(DoGet(_REMOTE, '/series/%s/metadata/RemoteAET' % series), '') # None, received by REST API |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1226 |
12 | 1227 m = DoGet(_REMOTE, '/instances/%s/metadata' % i) |
554
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
1228 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1229 self.assertEqual(10, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1230 elif IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
1231 self.assertEqual(9, len(m)) |
547
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1232 else: |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1233 self.assertEqual(8, len(m)) |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1234 |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1235 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1236 self.assertTrue('MainDicomTagsSignature' in m) |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1237 |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1238 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
1239 self.assertTrue('PixelDataOffset' in m) # New in Orthanc 1.9.1 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
1240 self.assertEqual(int(DoGet(_REMOTE, '/instances/%s/metadata/PixelDataOffset' % i)), 0x0c78) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
1241 |
12 | 1242 self.assertTrue('IndexInSeries' in m) |
1243 self.assertTrue('ReceptionDate' in m) | |
1244 self.assertTrue('RemoteAET' in m) | |
63
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1245 self.assertTrue('Origin' in m) |
89
74b7b9aed5f8
test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
1246 self.assertTrue('TransferSyntax' in m) |
95
a807a4699eb4
testing of metadata SopClassUid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
92
diff
changeset
|
1247 self.assertTrue('SopClassUid' in m) |
145 | 1248 self.assertTrue('RemoteIP' in m) |
1249 self.assertTrue('HttpUsername' in m) | |
63
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1250 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/IndexInSeries' % i), 1) |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1251 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i), 'RestApi') |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1252 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i), '') # None, received by REST API |
89
74b7b9aed5f8
test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
1253 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i), '1.2.840.10008.1.2.4.91') # JPEG2k |
95
a807a4699eb4
testing of metadata SopClassUid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
92
diff
changeset
|
1254 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % i), '1.2.840.10008.5.1.4.1.1.4') |
12 | 1255 |
1256 # Play with custom metadata | |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
1257 (headers, body) = DoPutRaw(_REMOTE, '/patients/%s/metadata/5555' % p, 'coucou') |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
1258 self.assertEqual('200', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
1259 self.assertEqual('', body) |
394
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1260 |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1261 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2): |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
1262 self.assertEqual('"0-%s"' % ComputeMD5('coucou'), headers['etag']) |
394
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1263 else: |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1264 self.assertFalse('ETag' in headers) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1265 self.assertFalse('etag' in headers) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1266 |
12 | 1267 m = DoGet(_REMOTE, '/patients/%s/metadata' % p) |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1268 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1269 self.assertEqual(3, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1270 self.assertTrue('MainDicomTagsSignature' in m) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1271 else: |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1272 self.assertEqual(2, len(m)) |
12 | 1273 self.assertTrue('LastUpdate' in m) |
1274 self.assertTrue('5555' in m) | |
1275 self.assertEqual('coucou', DoGet(_REMOTE, '/patients/%s/metadata/5555' % p)) | |
394
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1276 |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1277 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2): |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1278 DoPut(_REMOTE, '/patients/%s/metadata/5555' % p, 'hello', headers = { |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1279 'If-Match' : headers['etag'] |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1280 }) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1281 else: |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1282 DoPut(_REMOTE, '/patients/%s/metadata/5555' % p, 'hello') |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
1283 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
1284 (headers, body) = DoGetRaw(_REMOTE, '/patients/%s/metadata/5555' % p) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
1285 self.assertEqual('200', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
1286 self.assertEqual('hello', body) |
394
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1287 |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1288 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2): |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1289 DoDelete(_REMOTE, '/patients/%s/metadata/5555' % p, headers = { |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1290 'If-Match' : headers['etag'] |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1291 }) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1292 else: |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1293 DoDelete(_REMOTE, '/patients/%s/metadata/5555' % p) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1294 |
12 | 1295 m = DoGet(_REMOTE, '/patients/%s/metadata' % p) |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1296 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1297 self.assertEqual(2, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1298 self.assertTrue('MainDicomTagsSignature' in m) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1299 else: |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1300 self.assertEqual(1, len(m)) |
12 | 1301 self.assertTrue('LastUpdate' in m) |
13 | 1302 |
1303 | |
1304 def test_statistics(self): | |
1305 # Upload 16 instances | |
1306 for i in range(4): | |
1307 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) | |
1308 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
1309 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1)) | |
1310 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1)) | |
1311 | |
1312 s = DoGet(_REMOTE, '/statistics') | |
1313 self.assertEqual(16, s['CountInstances']) | |
1314 self.assertEqual(2, s['CountPatients']) | |
1315 self.assertEqual(2, s['CountStudies']) | |
1316 self.assertEqual(4, s['CountSeries']) | |
1317 d = int(s['TotalUncompressedSize']) | |
1318 | |
1319 e = 0 | |
1320 for patient in DoGet(_REMOTE, '/patients'): | |
1321 s = DoGet(_REMOTE, '/patients/%s/statistics' % patient) | |
1322 self.assertEqual(8, s['CountInstances']) | |
1323 self.assertEqual(1, s['CountStudies']) | |
1324 self.assertEqual(2, s['CountSeries']) | |
1325 e += int(s['UncompressedSize']) | |
1326 | |
1327 for study in DoGet(_REMOTE, '/studies'): | |
1328 s = DoGet(_REMOTE, '/studies/%s/statistics' % study) | |
1329 self.assertEqual(8, s['CountInstances']) | |
1330 self.assertEqual(2, s['CountSeries']) | |
1331 e += int(s['UncompressedSize']) | |
1332 | |
1333 for series in DoGet(_REMOTE, '/series'): | |
1334 s = DoGet(_REMOTE, '/series/%s/statistics' % series) | |
1335 self.assertEqual(4, s['CountInstances']) | |
1336 e += int(s['UncompressedSize']) | |
1337 | |
1338 self.assertEqual(3 * d, e) | |
1339 | |
1340 | |
1341 def test_custom_attachment(self): | |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1342 u = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID'] |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1343 |
13 | 1344 patient = DoGet(_REMOTE, '/patients')[0] |
1345 instance = DoGet(_REMOTE, '/instances')[0] | |
1346 size = int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']) | |
1347 self.assertEqual(size, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
1348 | |
1349 self.assertEqual(0, len(DoGet(_REMOTE, '/patients/%s/attachments' % patient))) | |
1350 self.assertTrue('dicom' in DoGet(_REMOTE, '/instances/%s/attachments' % instance)) | |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1351 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1352 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1353 if IsDicomUntilPixelDataStored(_REMOTE): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1354 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1355 self.assertTrue('dicom-until-pixel-data' in DoGet(_REMOTE, '/instances/%s/attachments' % instance)) |
443
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1356 |
448
63f475995400
Orthanc 1.9.8 is now known as Orthanc 1.10.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
447
diff
changeset
|
1357 # New in Orthanc 1.10.0 |
443
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1358 a = DoGet(_REMOTE, '/instances/%s/attachments?full' % instance) |
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1359 self.assertEqual(2, len(a)) |
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1360 self.assertEqual(1, a['dicom']) |
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1361 self.assertEqual(3, a['dicom-until-pixel-data']) |
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1362 |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1363 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1364 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance))) |
443
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1365 |
448
63f475995400
Orthanc 1.9.8 is now known as Orthanc 1.10.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
447
diff
changeset
|
1366 # New in Orthanc 1.10.0 |
443
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1367 a = DoGet(_REMOTE, '/instances/%s/attachments?full' % instance) |
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1368 self.assertEqual(1, len(a)) |
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1369 self.assertEqual(1, a['dicom']) |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1370 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1371 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
1372 self.assertTrue('dicom-as-json' in DoGet(_REMOTE, '/instances/%s/attachments' % instance)) |
13 | 1373 |
448
63f475995400
Orthanc 1.9.8 is now known as Orthanc 1.10.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
447
diff
changeset
|
1374 # New in Orthanc 1.10.0 |
443
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1375 self.assertRaises(Exception, lambda: DoGet( |
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1376 _REMOTE, '/instances/%s/attachments?full' % instance)) |
97fca09bf849
test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
442
diff
changeset
|
1377 |
13 | 1378 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/patients/%s/attachments/22' % patient, 'hello')) |
1379 hello = 'hellohellohellohellohellohellohellohellohello' | |
1380 DoPut(_REMOTE, '/patients/%s/attachments/1025' % patient, hello) | |
1381 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']), | |
1382 int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
1383 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']), | |
1384 size + int(DoGet(_REMOTE, '/patients/%s/attachments/1025/compressed-size' % patient))) | |
1385 | |
1386 DoPut(_REMOTE, '/patients/%s/attachments/1026' % patient, 'world') | |
1387 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']), | |
1388 int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
1389 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']), | |
1390 size + | |
1391 int(DoGet(_REMOTE, '/patients/%s/attachments/1025/compressed-size' % patient)) + | |
1392 int(DoGet(_REMOTE, '/patients/%s/attachments/1026/compressed-size' % patient))) | |
1393 | |
1394 self.assertEqual(2, len(DoGet(_REMOTE, '/patients/%s/attachments' % patient))) | |
1395 self.assertEqual(hello, DoGet(_REMOTE, '/patients/%s/attachments/1025/data' % patient)) | |
1396 self.assertEqual('world', DoGet(_REMOTE, '/patients/%s/attachments/1026/data' % patient)) | |
1397 DoPost(_REMOTE, '/patients/%s/attachments/1025/verify-md5' % patient) | |
1398 DoPost(_REMOTE, '/patients/%s/attachments/1026/verify-md5' % patient) | |
392
5cbcb4a83b41
fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
391
diff
changeset
|
1399 DoPut(_REMOTE, '/patients/%s/attachments/1026' % patient, 'world2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
1400 'If-Match' : '0-%s' % ComputeMD5('world'), |
392
5cbcb4a83b41
fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
391
diff
changeset
|
1401 }) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
1402 |
394
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1403 (headers, body) = DoGetRaw(_REMOTE, '/patients/%s/attachments/1026/data' % patient) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1404 self.assertEqual('200', headers['status']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
1405 self.assertEqual('world2', body) |
13 | 1406 |
1407 self.assertRaises(Exception, lambda: DoDelete(_REMOTE, '/instances/%s/attachments/dicom' % instance)) | |
392
5cbcb4a83b41
fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
391
diff
changeset
|
1408 DoDelete(_REMOTE, '/patients/%s/attachments/1025' % patient, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
1409 'If-Match' : '0-%s' % ComputeMD5(hello), |
392
5cbcb4a83b41
fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
391
diff
changeset
|
1410 }) |
13 | 1411 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']), |
1412 int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
1413 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']), | |
1414 size + int(DoGet(_REMOTE, '/patients/%s/attachments/1026/compressed-size' % patient))) | |
1415 | |
1416 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/%s/attachments' % patient))) | |
394
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1417 |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1418 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2): |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1419 DoDelete(_REMOTE, '/patients/%s/attachments/1026' % patient, headers = { |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1420 'If-Match' : headers['etag'] |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1421 }) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1422 else: |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1423 self.assertFalse('etag' in headers) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1424 DoDelete(_REMOTE, '/patients/%s/attachments/1026' % patient) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
1425 |
13 | 1426 self.assertEqual(0, len(DoGet(_REMOTE, '/patients/%s/attachments' % patient))) |
1427 | |
1428 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']), size) | |
1429 self.assertEqual(size, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
1430 | |
1431 | |
1432 def test_incoming_storescu(self): | |
1433 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
45 | 1434 subprocess.check_call([ FindExecutable('storescu'), |
44
ffa542cce638
Toolbox.FindExecutable()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
43
diff
changeset
|
1435 _REMOTE['Server'], str(_REMOTE['DicomPort']), |
13 | 1436 GetDatabasePath('ColorTestImageJ.dcm') ]) |
1437 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
1438 | |
63
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1439 i = DoGet(_REMOTE, '/instances') |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1440 self.assertEqual(1, len(i)) |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1441 m = DoGet(_REMOTE, '/instances/%s/metadata' % i[0]) |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
1442 |
554
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
1443 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1444 self.assertEqual(10, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1445 elif IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
1446 self.assertEqual(9, len(m)) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
1447 else: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
1448 self.assertEqual(8, len(m)) |
547
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1449 |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1450 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1451 self.assertTrue('MainDicomTagsSignature' in m) # New in Orthanc 1.11.0 |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1452 |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1453 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1454 self.assertTrue('PixelDataOffset' in m) # New in Orthanc 1.9.1 |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1455 self.assertEqual(2242, DoGet(_REMOTE, '/instances/%s/metadata/PixelDataOffset' % i[0])) |
7de5fd295025
testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
543
diff
changeset
|
1456 |
63
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1457 self.assertTrue('IndexInSeries' in m) |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1458 self.assertTrue('ReceptionDate' in m) |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1459 self.assertTrue('RemoteAET' in m) |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1460 self.assertTrue('Origin' in m) |
89
74b7b9aed5f8
test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
1461 self.assertTrue('TransferSyntax' in m) |
95
a807a4699eb4
testing of metadata SopClassUid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
92
diff
changeset
|
1462 self.assertTrue('SopClassUid' in m) |
145 | 1463 self.assertTrue('RemoteIP' in m) |
1464 self.assertTrue('CalledAET' in m) | |
63
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1465 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/IndexInSeries' % i[0]), 1) |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1466 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i[0]), 'DicomProtocol') |
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1467 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i[0]), 'STORESCU') |
89
74b7b9aed5f8
test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
1468 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i[0]), '1.2.840.10008.1.2.1') |
95
a807a4699eb4
testing of metadata SopClassUid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
92
diff
changeset
|
1469 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % i[0]), '1.2.840.10008.5.1.4.1.1.7') |
63
2652d562267a
test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
62
diff
changeset
|
1470 |
369
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1471 series = DoGet(_REMOTE, '/series')[0] |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1472 m = DoGet(_REMOTE, '/series/%s/metadata' % series) |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1473 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1474 self.assertEqual(3, len(m)) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1475 self.assertTrue('MainDicomTagsSignature' in m) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1476 else: |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
1477 self.assertEqual(2, len(m)) |
369
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1478 self.assertTrue('LastUpdate' in m) |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1479 self.assertTrue('RemoteAET' in m) |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1480 self.assertEqual(DoGet(_REMOTE, '/series/%s/metadata/RemoteAET' % series), 'STORESCU') |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1481 self.assertEqual(DoGet(_REMOTE, '/series/%s/metadata/LastUpdate' % series), |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1482 DoGet(_REMOTE, '/instances/%s/metadata/ReceptionDate' % i[0])) |
24d93b42873a
test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
368
diff
changeset
|
1483 |
13 | 1484 |
1485 def test_incoming_findscu(self): | |
1486 UploadInstance(_REMOTE, 'Multiframe.dcm') | |
1487 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm') | |
1488 | |
1489 i = CallFindScu([ '-k', '0008,0052=PATIENT', '-k', '0010,0010' ]) | |
1490 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', i) | |
1491 self.assertEqual(2, len(patientNames)) | |
1492 self.assertTrue('Test Patient BG ' in patientNames) | |
1493 self.assertTrue('Anonymized' in patientNames) | |
1494 | |
1495 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', '0008,0021' ]) | |
1496 series = re.findall('\(0008,0021\).*?\[\s*(.*?)\s*\]', i) | |
1497 self.assertEqual(2, len(series)) | |
1498 self.assertTrue('20070208' in series) | |
1499 self.assertTrue('19980312' in series) | |
1500 | |
335
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
1501 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', '0008,0021', '-k', 'Modality=MR\\XA' ]) |
56
1059b8de42de
ModalitiesInStudy subtest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
55
diff
changeset
|
1502 series = re.findall('\(0008,0021\).*?\[\s*(.*?)\s*\]', i) |
1059b8de42de
ModalitiesInStudy subtest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
55
diff
changeset
|
1503 self.assertEqual(1, len(series)) |
1059b8de42de
ModalitiesInStudy subtest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
55
diff
changeset
|
1504 self.assertTrue('19980312' in series) |
1059b8de42de
ModalitiesInStudy subtest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
55
diff
changeset
|
1505 |
13 | 1506 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', 'PatientName=Anonymized' ]) |
1507 series = re.findall('\(0010,0010\).*?\[\s*(.*?)\s*\]', i) | |
1508 self.assertEqual(1, len(series)) | |
1509 | |
1510 # Test the "CaseSentitivePN" flag (false by default) | |
1511 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', 'PatientName=anonymized' ]) | |
1512 series = re.findall('\(0010,0010\).*?\[\s*(.*?)\s*\]', i) | |
1513 self.assertEqual(1, len(series)) | |
66
821d9eb73c45
Test returning sequence values
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
64
diff
changeset
|
1514 |
70 | 1515 # Test range search (buggy if Orthanc <= 0.9.6) |
1516 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'StudyDate=19980312-' ]) | |
1517 studies = re.findall('\(0008,0020\).*?\[\s*(.*?)\s*\]', i) | |
1518 self.assertEqual(2, len(studies)) | |
1519 self.assertTrue('20070208' in studies) | |
1520 self.assertTrue('19980312' in studies) | |
1521 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'StudyDate=19980312-19980312' ]) | |
1522 studies = re.findall('\(0008,0020\).*?\[\s*(.*?)\s*\]', i) | |
1523 self.assertEqual(1, len(studies)) | |
1524 self.assertTrue('19980312' in studies) | |
1525 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'StudyDate=-19980312' ]) | |
1526 studies = re.findall('\(0008,0020\).*?\[\s*(.*?)\s*\]', i) | |
1527 self.assertEqual(1, len(studies)) | |
1528 self.assertTrue('19980312' in studies) | |
326
05f48c19c60d
Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
324
diff
changeset
|
1529 |
05f48c19c60d
Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
324
diff
changeset
|
1530 # Test that "Retrieve AE Title (0008,0054)" is present, which |
05f48c19c60d
Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
324
diff
changeset
|
1531 # was *not* the case in Orthanc <= 1.7.2 |
05f48c19c60d
Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
324
diff
changeset
|
1532 i = CallFindScu([ '-k', '0008,0052=INSTANCE' ]) |
05f48c19c60d
Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
324
diff
changeset
|
1533 instances = re.findall('\(0008,0054\).*?\[\s*(.*?)\s*\]', i) |
05f48c19c60d
Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
324
diff
changeset
|
1534 self.assertEqual(2, len(instances)) |
05f48c19c60d
Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
324
diff
changeset
|
1535 self.assertEqual('ORTHANC', instances[0].strip()) |
05f48c19c60d
Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
324
diff
changeset
|
1536 self.assertEqual('ORTHANC', instances[1].strip()) |
13 | 1537 |
1538 | |
191
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1539 def test_incoming_findscu_2(self): |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1540 # This test fails if "LookupMode_DatabaseOnly" is used |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1541 # (sequences are not available in this mode, and only main |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1542 # DICOM tags are returned) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1543 UploadInstance(_REMOTE, 'Multiframe.dcm') |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1544 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm') |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1545 |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1546 # Test returning sequence values (only since Orthanc 0.9.5) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1547 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', '0008,2112' ]) # "ColorTestImageJ" has this sequence tag |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1548 sequences = re.findall('\(0008,2112\)', i) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1549 self.assertEqual(1, len(sequences)) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1550 |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1551 # Test returning a non-main DICOM tag, |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1552 # "SecondaryCaptureDeviceID" (0018,1010), whose value is |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1553 # "MEDPC" in "ColorTestImageJ.dcm" |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1554 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', '0018,1010' ]) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1555 tags = re.findall('\(0018,1010\).*MEDPC', i) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1556 self.assertEqual(1, len(tags)) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1557 |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1558 |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1559 def test_incoming_findscu_3(self): |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1560 # This test fails if "LookupMode_DatabaseOnly" or |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1561 # "LookupMode_DiskOnAnswer" is used, as |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1562 # "SecondaryCaptureDeviceID" (0018,1010) is not a main DICOM |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1563 # tag, as thus a constraint cannot be applied to it |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1564 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm') |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1565 |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1566 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', '0018,1010=MEDPC' ]) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1567 sequences = re.findall('\(0018,1010\)', i) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1568 self.assertEqual(1, len(sequences)) |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1569 |
bc8bc83465dc
testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
189
diff
changeset
|
1570 |
13 | 1571 def test_incoming_movescu(self): |
1572 UploadInstance(_REMOTE, 'Multiframe.dcm') | |
137
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1573 |
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1574 # No matching patient, so no job is created |
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1575 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) |
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1576 CallMoveScu([ '--patient', '-k', '0008,0052=PATIENT', '-k', 'PatientID=none' ]) |
13 | 1577 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) |
137
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1578 |
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
1579 # 1 Matching patient, track the job |
138 | 1580 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([ |
1581 '--patient', | |
1582 '-k', '0008,0052=PATIENT', | |
1583 '-k', 'PatientID=12345678' | |
1584 ]))) | |
13 | 1585 self.assertEqual(1, len(DoGet(_LOCAL, '/patients'))) |
1586 | |
1587 | |
1588 def test_findscu(self): | |
1589 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] | |
1590 j = UploadInstance(_REMOTE, 'Issue22.dcm')['ID'] | |
1591 k = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID'] | |
1592 DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain') | |
1593 | |
1594 # Test the "find-patient" level | |
1595 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { }) | |
1596 self.assertEqual(1, len(p)) | |
1597 self.assertEqual('ozp00SjY2xG', p[0]['PatientID']) | |
1598 | |
1599 # Test wildcards constraints. The "LO" value representation | |
1600 # for PatientID is always case-sensitive, but the "PN" for | |
1601 # PatientName might depend on the implementation: | |
1602 # "GenerateConfigurationForTests.py" will force it to be case | |
1603 # insensitive (which was the default until Orthanc 0.8.6). | |
1604 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'K*' }) | |
1605 self.assertEqual(1, len(p)) | |
1606 | |
1607 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'k*' }) | |
1608 self.assertEqual(1, len(p)) | |
1609 | |
1610 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientID' : 'ozp*' }) | |
1611 self.assertEqual(1, len(p)) | |
1612 | |
1613 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientID' : 'o?p*' }) | |
1614 self.assertEqual(1, len(p)) | |
1615 | |
1616 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientID' : '0?q*' }) | |
1617 self.assertEqual(0, len(p)) | |
1618 | |
1619 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'B*' }) | |
1620 self.assertEqual(0, len(p)) | |
1621 | |
1622 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'b*' }) | |
1623 self.assertEqual(0, len(p)) | |
1624 | |
1625 DoPost(_REMOTE, '/modalities/orthanctest/store', str(j), 'text/plain') | |
1626 DoPost(_REMOTE, '/modalities/orthanctest/store', str(k), 'text/plain') | |
1627 DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { }) | |
1628 self.assertEqual(3, len(DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { }))) | |
1629 | |
1630 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'A*' }) | |
1631 self.assertEqual(2, len(p)) | |
1632 | |
1633 # Test the "find-study" level. This is the instance "ColorTestImageJ.dcm" | |
1634 s = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ' }) | |
1635 self.assertEqual(1, len(s)) | |
1636 self.assertEqual('20070208', s[0]['StudyDate']) | |
1637 | |
1638 # Test range searches | |
1639 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ', | |
1640 'StudyDate' : '-20070101' }) | |
1641 self.assertEqual(0, len(t)) | |
1642 | |
1643 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ', | |
1644 'StudyDate' : '20090101-' }) | |
1645 self.assertEqual(0, len(t)) | |
1646 | |
1647 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ', | |
1648 'StudyDate' : '20070101-' }) | |
1649 self.assertEqual(1, len(t)) | |
1650 | |
1651 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ', | |
1652 'StudyDate' : '-20090101' }) | |
1653 self.assertEqual(1, len(t)) | |
1654 | |
1655 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ', | |
1656 'StudyDate' : '20070207-20070207' }) | |
1657 self.assertEqual(0, len(t)) | |
1658 | |
1659 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ', | |
1660 'StudyDate' : '20070208-20070208' }) | |
1661 self.assertEqual(1, len(t)) | |
1662 | |
1663 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ', | |
1664 'StudyDate' : '20070209-20070209' }) | |
1665 self.assertEqual(0, len(t)) | |
1666 | |
1667 # Test the ModalitiesInStudy tag | |
1668 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { | |
1669 'PatientID' : 'B9uTHKOZ', | |
1670 'ModalitiesInStudy' : 'US' }) | |
1671 self.assertEqual(0, len(t)) | |
1672 | |
1673 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { | |
1674 'PatientID' : 'B9uTHKOZ', | |
1675 'ModalitiesInStudy' : 'CT' }) | |
1676 self.assertEqual(1, len(t)) | |
1677 | |
1678 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { | |
1679 'PatientID' : 'B9uTHKOZ', | |
1680 'ModalitiesInStudy' : 'US\\CT' }) | |
1681 self.assertEqual(1, len(t)) | |
1682 | |
466
28a2c9452ec9
extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents:
462
diff
changeset
|
1683 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { |
28a2c9452ec9
extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents:
462
diff
changeset
|
1684 'PatientID' : 'B9uTHKOZ', |
28a2c9452ec9
extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents:
462
diff
changeset
|
1685 'ModalitiesInStudy' : '' }) |
28a2c9452ec9
extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents:
462
diff
changeset
|
1686 self.assertEqual(1, len(t)) |
28a2c9452ec9
extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents:
462
diff
changeset
|
1687 |
13 | 1688 # Test the "find-series" level |
1689 t = DoPost(_REMOTE, '/modalities/orthanctest/find-series', { | |
1690 'PatientID' : 'B9uTHKOZ', | |
1691 'StudyInstanceUID' : s[0]['StudyInstanceUID'] }) | |
1692 self.assertEqual(1, len(t)) | |
1693 | |
1694 # Test "\" separator | |
1695 t = DoPost(_REMOTE, '/modalities/orthanctest/find-series', { | |
1696 'PatientID' : 'B9uTHKOZ', | |
1697 'StudyInstanceUID' : s[0]['StudyInstanceUID'], | |
1698 'Modality' : 'MR\\CT\\US' }) | |
1699 self.assertEqual(1, len(t)) | |
1700 | |
1701 t = DoPost(_REMOTE, '/modalities/orthanctest/find-series', { | |
1702 'PatientID' : 'B9uTHKOZ', | |
1703 'StudyInstanceUID' : s[0]['StudyInstanceUID'], | |
1704 'Modality' : 'MR\\US' }) | |
1705 self.assertEqual(0, len(t)) | |
1706 | |
1707 | |
1708 def test_update_modalities(self): | |
1709 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/modalities/toto')) | |
348
bed0ab3a1391
test deleting inexistent modality/peer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
342
diff
changeset
|
1710 self.assertRaises(Exception, lambda: DoDelete(_REMOTE, '/modalities/toto')) |
13 | 1711 DoPut(_REMOTE, '/modalities/toto', [ "STORESCP", "localhost", 2000 ]) |
116 | 1712 DoPut(_REMOTE, '/modalities/tata', [ "STORESCP", "localhost", 2000, 'MedInria' ]) # check backward compatiblity with obsolete manufacturer |
1713 DoDelete(_REMOTE, '/modalities/tata') | |
124 | 1714 DoPut(_REMOTE, '/modalities/tata', [ "STORESCP", "localhost", 2000, 'GenericNoUniversalWildcard' ]) |
121
1a19f953f53c
also test GenericNoWildcardInDates
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
120
diff
changeset
|
1715 DoDelete(_REMOTE, '/modalities/tata') |
1a19f953f53c
also test GenericNoWildcardInDates
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
120
diff
changeset
|
1716 DoPut(_REMOTE, '/modalities/tata', [ "STORESCP", "localhost", 2000, 'GenericNoWildcardInDates' ]) |
128 | 1717 modalitiesReadback = DoGet(_REMOTE, '/modalities?expand') |
182
7a6b532853ab
modalities are now described as JSON objects
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
181
diff
changeset
|
1718 self.assertEqual('STORESCP', modalitiesReadback['tata']['AET']) |
7a6b532853ab
modalities are now described as JSON objects
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
181
diff
changeset
|
1719 self.assertEqual('localhost', modalitiesReadback['tata']['Host']) |
7a6b532853ab
modalities are now described as JSON objects
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
181
diff
changeset
|
1720 self.assertEqual(2000, modalitiesReadback['tata']['Port']) |
7a6b532853ab
modalities are now described as JSON objects
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
181
diff
changeset
|
1721 self.assertEqual('GenericNoWildcardInDates', modalitiesReadback['tata']['Manufacturer']) |
116 | 1722 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/modalities/toto', [ "STORESCP", "localhost", 2000, 'InvalidManufacturerName' ])) |
13 | 1723 self.assertTrue('store' in DoGet(_REMOTE, '/modalities/toto')) |
1724 self.assertTrue('store' in DoGet(_REMOTE, '/modalities/tata')) | |
351
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1725 |
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1726 # New in Orthanc 1.8.1 |
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1727 self.assertTrue('configuration' in DoGet(_REMOTE, '/modalities/tata')) |
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1728 self.assertEqual(modalitiesReadback['tata'], DoGet(_REMOTE, '/modalities/tata/configuration')) |
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1729 |
13 | 1730 DoDelete(_REMOTE, '/modalities/toto') |
1731 DoDelete(_REMOTE, '/modalities/tata') | |
1732 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/modalities/toto')) | |
1733 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/modalities/tata')) | |
1734 | |
584
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1735 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1736 self.assertEqual(DoGet(_REMOTE, '/modalities?expand'), DoGet(_REMOTE, '/modalities?expand=true')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1737 self.assertEqual(DoGet(_REMOTE, '/modalities'), DoGet(_REMOTE, '/modalities?expand=false')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1738 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1739 |
13 | 1740 |
1741 def test_update_peers(self): | |
1742 # curl -X PUT http://localhost:8042/peers/toto -d '["http://localhost:8042/"]' -v | |
1743 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/peers/toto')) | |
348
bed0ab3a1391
test deleting inexistent modality/peer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
342
diff
changeset
|
1744 self.assertRaises(Exception, lambda: DoDelete(_REMOTE, '/peers/toto')) |
13 | 1745 DoPut(_REMOTE, '/peers/toto', [ 'http://localhost:8042/' ]) |
214 | 1746 DoPut(_REMOTE, '/peers/tata', { 'Url': 'http://localhost:8042/', |
1747 'Username': 'user', | |
1748 'Password' : 'pass', | |
1749 'RemoteSelf' : 'self' }) | |
128 | 1750 self.assertTrue('tata' in DoGet(_REMOTE, '/peers')) |
1751 peersReadback = DoGet(_REMOTE, '/peers?expand') | |
1752 self.assertEqual('http://localhost:8042/', peersReadback['tata']['Url']) | |
1753 self.assertEqual('user', peersReadback['tata']['Username']) | |
214 | 1754 |
1755 if IsOrthancVersionAbove(_REMOTE, 1, 5, 4): | |
1756 self.assertEqual(None, peersReadback['tata']['Password']) # make sure no sensitive data is included | |
1757 self.assertFalse(peersReadback['tata']['Pkcs11']) # make sure no sensitive data is included | |
1758 self.assertEqual('self', peersReadback['tata']['RemoteSelf']) | |
1759 else: | |
1760 self.assertFalse('Password' in peersReadback['tata']) # make sure no sensitive data is included | |
1761 self.assertFalse('Pkcs11' in peersReadback['tata']) # make sure no sensitive data is included | |
1762 self.assertFalse('RemoteSelf' in peersReadback['tata']) | |
1763 | |
128 | 1764 self.assertFalse('CertificateFile' in peersReadback['tata']) # make sure no sensitive data is included |
1765 self.assertFalse('CertificateKeyFile' in peersReadback['tata']) # make sure no sensitive data is included | |
1766 self.assertFalse('CertificateKeyPassword' in peersReadback['tata']) # make sure no sensitive data is included | |
214 | 1767 |
13 | 1768 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/peers/toto', [ 'http://localhost:8042/', 'a' ])) |
1769 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/peers/toto', [ 'http://localhost:8042/', 'a', 'b', 'c' ])) | |
1770 self.assertTrue('store' in DoGet(_REMOTE, '/peers/toto')) | |
1771 self.assertTrue('store' in DoGet(_REMOTE, '/peers/tata')) | |
351
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1772 |
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1773 # New in Orthanc 1.8.1 |
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1774 self.assertTrue('configuration' in DoGet(_REMOTE, '/peers/tata')) |
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1775 self.assertEqual(peersReadback['tata'], DoGet(_REMOTE, '/peers/tata/configuration')) |
429cc9d03610
test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
350
diff
changeset
|
1776 |
13 | 1777 DoDelete(_REMOTE, '/peers/toto') |
1778 DoDelete(_REMOTE, '/peers/tata') | |
1779 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/peers/toto')) | |
1780 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/peers/tata')) | |
1781 | |
584
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1782 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1783 self.assertEqual(DoGet(_REMOTE, '/peers?expand'), DoGet(_REMOTE, '/peers?expand=true')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1784 self.assertEqual(DoGet(_REMOTE, '/peers'), DoGet(_REMOTE, '/peers?expand=false')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1785 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
1786 |
13 | 1787 |
1788 def test_mesterhazy_modification(self): | |
1789 # When I modify a series ( eg. curl | |
1790 # http://localhost:8042/series/uidhere/modify -X POST -d | |
1791 # '{"Replace":{"SeriesDate":"19990101"}}' ) the modified | |
1792 # series is added to a new Study, instead of the existing | |
1793 # Study. Fixed in Orthanc 0.7.5 | |
1794 | |
1795 u = UploadInstance(_REMOTE, 'DummyCT.dcm') | |
1796 study = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0' | |
1797 series = 'f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe' | |
1798 | |
1799 modified = DoPost(_REMOTE, '/series/%s/modify' % series, | |
1800 json.dumps({ "Replace" : { "SeriesDate" : "19990101" }})) | |
1801 | |
1802 self.assertEqual(study, DoGet(_REMOTE, '/series/%s' % modified['ID']) ['ParentStudy']) | |
1803 | |
1804 | |
1805 def test_create(self): | |
1806 i = DoPost(_REMOTE, '/tools/create-dicom', | |
1807 json.dumps({ | |
1808 'PatientName' : 'Jodogne', | |
1809 'Modality' : 'CT', | |
58 | 1810 'SOPClassUID' : '1.2.840.10008.5.1.4.1.1.1', |
13 | 1811 'PixelData' : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' # red dot in RGBA |
1812 })) | |
1813 | |
1814 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip()) | |
1815 self.assertEqual('CT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i['ID']).strip()) | |
1816 | |
1817 png = GetImage(_REMOTE, '/instances/%s/preview' % i['ID']) | |
1818 self.assertEqual((5, 5), png.size) | |
1819 | |
38 | 1820 j = DoGet(_REMOTE, i['Path']) |
1821 self.assertEqual('Instance', j['Type']) | |
1822 self.assertEqual(j['ID'], i['ID']) | |
1823 | |
13 | 1824 |
1825 def test_pilates(self): | |
1826 # "SCU failed error when accessing orthanc with osirix" by | |
1827 # Pilates Agentur (Mar 10, 2014 at 9:33 PM) | |
1828 i = UploadInstance(_REMOTE, 'PilatesArgenturGEUltrasoundOsiriX.dcm')['ID'] | |
1829 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) | |
1830 j = DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain') | |
1831 self.assertEqual(1, len(DoGet(_LOCAL, '/patients'))) | |
1832 | |
1833 | |
1834 def test_shared_tags(self): | |
1835 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID'] | |
1836 b = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm')['ID'] | |
1837 p = DoGet(_REMOTE, '/patients')[0] | |
1838 | |
1839 self.assertTrue('0010,0010' in DoGet(_REMOTE, '/patients/%s/shared-tags' % p)) | |
1840 self.assertTrue('PatientName' in DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % p)) | |
136
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
1841 self.assertTrue('0010,0010' in DoGet(_REMOTE, '/patients/%s/shared-tags?short' % p)) |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
1842 |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
1843 self.assertEqual('KNEE', DoGet(_REMOTE, '/patients/%s/shared-tags' % p)['0010,0010']['Value']) |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
1844 self.assertEqual('KNEE', DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % p)['PatientName']) |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
1845 self.assertEqual('KNEE', DoGet(_REMOTE, '/patients/%s/shared-tags?short' % p)['0010,0010']) |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
1846 |
13 | 1847 self.assertTrue('0008,1030' in DoGet(_REMOTE, '/patients/%s/shared-tags' % p)) |
1848 self.assertTrue('StudyDescription' in DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % p)) | |
1849 self.assertTrue('0008,103e' in DoGet(_REMOTE, '/patients/%s/shared-tags' % p)) | |
1850 self.assertTrue('SeriesDescription' in DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % p)) | |
1851 self.assertFalse('0008,0018' in DoGet(_REMOTE, '/patients/%s/shared-tags' % p)) | |
1852 self.assertFalse('SOPInstanceUID' in DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % p)) | |
1853 | |
1854 self.assertTrue('0008,0018' in DoGet(_REMOTE, '/instances/%s/tags' % a)) | |
1855 self.assertTrue('SOPInstanceUID' in DoGet(_REMOTE, '/instances/%s/tags?simplify' % a)) | |
1856 | |
1857 | |
1858 def test_modules(self): | |
1859 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID'] | |
1860 p = DoGet(_REMOTE, '/patients')[0] | |
1861 s = DoGet(_REMOTE, '/studies')[0] | |
1862 t = DoGet(_REMOTE, '/series')[0] | |
1863 | |
1864 self.assertTrue('0010,0010' in DoGet(_REMOTE, '/patients/%s/module' % p)) | |
1865 self.assertTrue('PatientName' in DoGet(_REMOTE, '/patients/%s/module?simplify' % p)) | |
1866 self.assertTrue('0010,0010' in DoGet(_REMOTE, '/studies/%s/module-patient' % p)) | |
1867 self.assertTrue('PatientName' in DoGet(_REMOTE, '/studies/%s/module-patient?simplify' % p)) | |
1868 self.assertTrue('0008,1030' in DoGet(_REMOTE, '/studies/%s/module' % s)) | |
1869 self.assertTrue('StudyDescription' in DoGet(_REMOTE, '/studies/%s/module?simplify' % s)) | |
1870 self.assertTrue('0008,103e' in DoGet(_REMOTE, '/series/%s/module' % p)) | |
1871 self.assertTrue('SeriesDescription' in DoGet(_REMOTE, '/series/%s/module?simplify' % p)) | |
1872 self.assertTrue('0008,0018' in DoGet(_REMOTE, '/instances/%s/module' % a)) | |
1873 self.assertTrue('SOPInstanceUID' in DoGet(_REMOTE, '/instances/%s/module?simplify' % a)) | |
1874 | |
1875 | |
1876 def test_auto_directory(self): | |
1877 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID'] | |
1878 self.assertTrue('now' in DoGet(_REMOTE, '/tools')) | |
1879 self.assertTrue('dicom-conformance' in DoGet(_REMOTE, '/tools')) | |
87
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
1880 self.assertTrue('invalidate-tags' in DoGet(_REMOTE, '/tools')) |
13 | 1881 self.assertTrue(len(DoGet(_REMOTE, '/tools/dicom-conformance')) > 1000) |
1882 self.assertTrue('orthanctest' in DoGet(_REMOTE, '/modalities')) | |
1883 self.assertTrue('echo' in DoGet(_REMOTE, '/modalities/orthanctest')) | |
1884 self.assertTrue('find' in DoGet(_REMOTE, '/modalities/orthanctest')) | |
1885 self.assertTrue('find-instance' in DoGet(_REMOTE, '/modalities/orthanctest')) | |
1886 self.assertTrue('find-patient' in DoGet(_REMOTE, '/modalities/orthanctest')) | |
1887 self.assertTrue('find-series' in DoGet(_REMOTE, '/modalities/orthanctest')) | |
1888 self.assertTrue('find-study' in DoGet(_REMOTE, '/modalities/orthanctest')) | |
1889 self.assertTrue('store' in DoGet(_REMOTE, '/modalities/orthanctest')) | |
1890 self.assertTrue('store' in DoGet(_REMOTE, '/peers/peer')) | |
1891 self.assertTrue('matlab' in DoGet(_REMOTE, '/instances/%s/frames/0' % a)) | |
79 | 1892 self.assertTrue('raw' in DoGet(_REMOTE, '/instances/%s/frames/0' % a)) |
13 | 1893 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/tools/nope')) |
28 | 1894 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/nope')) |
1895 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/nope/nope.html')) | |
1896 self.assertEqual(404, DoGetRaw(_REMOTE, '/nope')[0].status) | |
1897 self.assertEqual(404, DoGetRaw(_REMOTE, '/nope/nope.html')[0].status) | |
13 | 1898 |
1899 | |
1900 def test_echo(self): | |
1901 DoPost(_REMOTE, '/modalities/orthanctest/echo') | |
359
8b476a383999
test empty body in /modalities/.../echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
357
diff
changeset
|
1902 DoPost(_REMOTE, '/modalities/orthanctest/echo', '{}') |
8b476a383999
test empty body in /modalities/.../echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
357
diff
changeset
|
1903 |
8b476a383999
test empty body in /modalities/.../echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
357
diff
changeset
|
1904 # The following was not working in Orthanc 1.7.0 -> 1.8.1 |
8b476a383999
test empty body in /modalities/.../echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
357
diff
changeset
|
1905 DoPost(_REMOTE, '/modalities/orthanctest/echo', '') |
352
3d406c0261fc
test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
351
diff
changeset
|
1906 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/modalities/nope/echo')) |
3d406c0261fc
test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
351
diff
changeset
|
1907 |
3d406c0261fc
test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
351
diff
changeset
|
1908 # New in Orthanc 1.8.1 |
3d406c0261fc
test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
351
diff
changeset
|
1909 DoPost(_REMOTE, '/tools/dicom-echo', [ |
355 | 1910 _REMOTE['DicomAet'], _REMOTE['Server'], _REMOTE['DicomPort'] ]) |
352
3d406c0261fc
test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
351
diff
changeset
|
1911 DoPost(_REMOTE, '/tools/dicom-echo', DoGet(_REMOTE, '/modalities/orthanctest/configuration')) |
13 | 1912 |
353 | 1913 # Use the 'CheckFind' new option in Orthanc 1.8.1 |
1914 DoPost(_REMOTE, '/modalities/self/echo', { 'CheckFind' : True }) | |
1915 DoPost(_REMOTE, '/tools/dicom-echo', { | |
1916 'AET' : _REMOTE['DicomAet'], | |
1917 'Host' : _REMOTE['Server'], | |
1918 'Port' : _REMOTE['DicomPort'], | |
1919 'CheckFind' : True | |
1920 }) | |
1921 | |
13 | 1922 |
1923 def test_xml(self): | |
1924 json = DoGet(_REMOTE, '/tools', headers = { 'accept' : 'application/json' }) | |
1925 xml = minidom.parseString(DoGet(_REMOTE, '/tools', headers = { 'accept' : 'application/xml' })) | |
1926 items = xml.getElementsByTagName('root')[0].getElementsByTagName('item') | |
1927 self.assertEqual(len(items), len(json)) | |
1928 | |
1929 self.assertTrue('dicom-conformance' in json) | |
1930 | |
1931 ok = False | |
1932 for i in items: | |
1933 if i.childNodes[0].data == 'dicom-conformance': | |
1934 ok = True | |
1935 self.assertTrue(ok) | |
1936 | |
1937 | |
46
85b2e36ed392
explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
45
diff
changeset
|
1938 def test_googlecode_issue_16(self): |
13 | 1939 i = UploadInstance(_REMOTE, 'Issue16.dcm')['ID'] |
1940 t = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)['FrameIncrementPointer'] | |
1941 self.assertEqual('0018,1063', t) | |
1942 | |
1943 | |
46
85b2e36ed392
explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
45
diff
changeset
|
1944 def test_googlecode_issue_22(self): |
13 | 1945 s = UploadInstance(_REMOTE, 'Issue22.dcm')['ID'] |
1946 a = [ | |
1947 "f804691f62197040438f4627c6b994f1", # Frame 0 | |
1948 "c69eee9a51eea3e8611e82e578897254", | |
1949 "315666be83e2d0111c77bc0996d84901", | |
1950 "3e27aa959d911172c48a1436443c72b1", | |
1951 "958642c9e7e9d232d3869faff546058c", | |
1952 "5e7ea8e3e4230cae707d143481355c59", | |
1953 "eda37f83558d858a596175aed8b2ad47", | |
1954 "486713bd2895c4ecbe0e97715ac7f80a", | |
1955 "091ef729eb169e67da8a0faa9631f9a8", | |
1956 "5aa2b8c7ffe0a483efaa8e12417686ca", | |
1957 "e2f39e85896fe58876654b94cd0b5013", | |
1958 "6fd2129e4950abbe1be053bc814d5da8", | |
1959 "c3331a8ba7a757f3d423735ab7fa81f9", | |
1960 "746f808582156734dd6b6fdfd3a0b72c", | |
1961 "8075ea2b227a70c60ea6b7b75a6bb190", | |
1962 "806b8b3e300c615099c11a5ec23465aa", | |
1963 "7c836aa298ba6eef96434579af631a11", | |
1964 "a0357dc9f4f72d73a885c33d7c287446", | |
1965 "f25ba3be1cc7d7fad95706adc199ea7d", | |
1966 "8b114c526b8cbed6cad8a3248b7b480c", | |
1967 "44e6670f127e612a2b4aa60a0d207698", | |
1968 "b8945f90fe02facf2ace24ca1ecbe0a5", | |
1969 "95c796c2fa8f59018b15cf2987b1f79b", | |
1970 "ce0a51ab30224205b44920221dc27351", # Frame 23 | |
1971 ] | |
1972 | |
1973 self.assertEqual(24, len(DoGet(_REMOTE, '/instances/%s/frames' % s))) | |
1974 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/24/preview' % s)) | |
1975 | |
1976 for i in range(len(a)): | |
1977 self.assertEqual(a[i], ComputeMD5(DoGet(_REMOTE, '/instances/%s/frames/%d/preview' % (s, i)))) | |
1978 | |
1979 | |
46
85b2e36ed392
explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
45
diff
changeset
|
1980 def test_googlecode_issue_19(self): |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
1981 # This is an image with "YBR_FULL" photometric interpretation, it is not supported by Orthanc |
13 | 1982 # gdcmconv -i /home/jodogne/DICOM/GdcmDatabase/US_DataSet/HDI5000_US/3EAF5E01 -w -o Issue19.dcm |
1983 | |
1984 a = UploadInstance(_REMOTE, 'Issue19.dcm')['ID'] | |
304 | 1985 if not HasGdcmPlugin(_REMOTE): |
299
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
1986 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/941ad3c8-05d05b88-560459f9-0eae0e20-6cddd533/preview')) |
13 | 1987 |
1988 | |
46
85b2e36ed392
explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
45
diff
changeset
|
1989 def test_googlecode_issue_37(self): |
13 | 1990 # Same test for issues 35 and 37. Fixed in Orthanc 0.9.1 |
1991 u = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')['ID'] | |
1992 | |
1993 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', | |
1994 'CaseSensitive' : True, | |
1995 'Query' : { 'StationName' : 'SMR4-MP3' }}) | |
1996 self.assertEqual(1, len(a)) | |
14 | 1997 |
1998 | |
1999 def test_rest_find(self): | |
548 | 2000 # Upload 12 instances |
2001 for i in range(3): | |
14 | 2002 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) |
2003 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
2004 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1)) | |
2005 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1)) | |
2006 | |
548 | 2007 |
2008 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', | |
2009 'CaseSensitive' : True, | |
2010 'Query' : { | |
2011 'PatientName' : '*NE*', | |
2012 'StudyDate': '20080819' | |
2013 }}) | |
2014 self.assertEqual(1, len(a)) | |
2015 | |
2016 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', | |
2017 'CaseSensitive' : True, | |
2018 'Query' : { | |
2019 'PatientName' : '*NE*', | |
555
739cad709a8c
skipping DicomWeb test not implemented yet
Alain Mazy <am@osimis.io>
parents:
548
diff
changeset
|
2020 'PatientBirthDate': '20080101-20081231', |
548 | 2021 'PatientSex': '0000' |
2022 }}) | |
2023 self.assertEqual(1, len(a)) | |
2024 | |
2025 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', | |
2026 'CaseSensitive' : True, | |
2027 'Query' : { | |
2028 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881' | |
2029 }}) | |
2030 self.assertEqual(2, len(a)) | |
2031 | |
2032 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', | |
2033 'CaseSensitive' : True, | |
2034 'Query' : { | |
2035 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881', | |
2036 'SeriesInstanceUID': '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' | |
2037 }}) | |
2038 self.assertEqual(3, len(a)) | |
2039 | |
2040 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', | |
2041 'CaseSensitive' : True, | |
2042 'Query' : { | |
2043 'StudyDate' : '20080818-20080820', | |
2044 'Modality': 'MR' | |
2045 }}) | |
2046 self.assertEqual(2, len(a)) | |
2047 | |
2048 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', | |
2049 'CaseSensitive' : True, | |
2050 'Query' : { | |
2051 'StudyDate' : '20080818-', | |
2052 'ModalitiesInStudy': 'MR' | |
2053 }}) | |
2054 self.assertEqual(1, len(a)) | |
2055 | |
2056 | |
14 | 2057 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
2058 'CaseSensitive' : False, | |
194
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2059 'Query' : { 'PatientName' : 'BRAINIX' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2060 self.assertEqual(1, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2061 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2062 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2063 'CaseSensitive' : False, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2064 'Query' : { 'PatientName' : 'BRAINIX\\KNEE\\NOPE' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2065 self.assertEqual(2, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2066 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2067 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2068 'CaseSensitive' : False, |
14 | 2069 'Query' : { 'PatientName' : '*n*' }}) |
2070 self.assertEqual(2, len(a)) | |
2071 | |
2072 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', | |
2073 'CaseSensitive' : True, | |
2074 'Query' : { 'PatientName' : '*n*' }}) | |
2075 self.assertEqual(0, len(a)) | |
2076 | |
2077 a = DoPost(_REMOTE, '/tools/find', { 'Expand' : True, | |
2078 'Level' : 'Patient', | |
2079 'CaseSensitive' : False, | |
2080 'Query' : { 'PatientName' : '*ne*' }}) | |
2081 self.assertEqual(1, len(a)) | |
2082 self.assertEqual('20080822', a[0]['MainDicomTags']['PatientBirthDate']) | |
2083 | |
2084 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', | |
2085 'CaseSensitive' : True, | |
2086 'Query' : { 'PatientName' : '*ne*' }}) | |
2087 self.assertEqual(0, len(a)) | |
2088 | |
2089 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', | |
2090 'CaseSensitive' : True, | |
2091 'Query' : { 'PatientName' : '*NE*' }}) | |
2092 self.assertEqual(1, len(a)) | |
2093 | |
2094 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', | |
2095 'CaseSensitive' : True, | |
2096 'Query' : { 'PatientName' : '*NE*' }}) | |
2097 self.assertEqual(2, len(a)) | |
2098 | |
2099 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', | |
2100 'CaseSensitive' : True, | |
2101 'Query' : { 'PatientName' : '*NE*' }}) | |
548 | 2102 self.assertEqual(6, len(a)) |
14 | 2103 |
2104 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', 'Query' : { }}) | |
2105 self.assertEqual(2, len(a)) | |
2106 | |
2107 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', 'Query' : { }}) | |
2108 self.assertEqual(2, len(a)) | |
2109 | |
2110 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', 'Query' : { }}) | |
2111 self.assertEqual(4, len(a)) | |
2112 | |
2113 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', 'Query' : { }}) | |
548 | 2114 self.assertEqual(12, len(a)) |
14 | 2115 |
194
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2116 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2117 'Expand' : True, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2118 'Query' : { 'StudyDate' : '20061201-20061201' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2119 self.assertEqual(1, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2120 self.assertEqual('BRAINIX', a[0]['PatientMainDicomTags']['PatientName']) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2121 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2122 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2123 'Expand' : True, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2124 'Query' : { 'StudyDate' : '20061201-20091201' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2125 self.assertEqual(2, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2126 for i in range(2): |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2127 self.assertTrue(a[i]['PatientMainDicomTags']['PatientName'] in ['BRAINIX', 'KNEE']) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2128 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2129 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2130 'Query' : { 'StudyDate' : '20061202-20061202' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2131 self.assertEqual(0, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2132 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2133 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2134 'Expand' : True, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2135 'Query' : { 'StudyDate' : '-20061201' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2136 self.assertEqual(1, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2137 self.assertEqual('BRAINIX', a[0]['PatientMainDicomTags']['PatientName']) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2138 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2139 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2140 'Expand' : True, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2141 'Query' : { 'StudyDate' : '-20051201' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2142 self.assertEqual(0, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2143 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2144 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2145 'Expand' : True, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2146 'Query' : { 'StudyDate' : '20061201-' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2147 self.assertEqual(2, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2148 for i in range(2): |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2149 self.assertTrue(a[i]['PatientMainDicomTags']['PatientName'] in ['BRAINIX', 'KNEE']) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2150 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2151 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2152 'Expand' : True, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2153 'Query' : { 'StudyDate' : '20061202-' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2154 self.assertEqual(1, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2155 self.assertEqual('KNEE', a[0]['PatientMainDicomTags']['PatientName']) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2156 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2157 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2158 'Expand' : True, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2159 'Query' : { 'StudyDate' : '20080819-' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2160 self.assertEqual(1, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2161 self.assertEqual('KNEE', a[0]['PatientMainDicomTags']['PatientName']) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2162 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2163 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2164 'Expand' : True, |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2165 'Query' : { 'StudyDate' : '20080820-' }}) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2166 self.assertEqual(0, len(a)) |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2167 |
9f7ae64c0fda
more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
2168 |
14 | 2169 |
2170 def test_rest_query_retrieve(self): | |
2171 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
2172 | |
2173 # Upload 8 instances | |
2174 for i in range(2): | |
2175 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) | |
2176 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
2177 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1)) | |
2178 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1)) | |
2179 | |
2180 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
2181 for p in DoGet(_REMOTE, '/patients'): | |
2182 DoPost(_REMOTE, '/modalities/orthanctest/store', p) | |
2183 DoDelete(_REMOTE, '/patients/%s' % p) | |
2184 | |
2185 for q in DoGet(_REMOTE, '/queries'): | |
2186 DoDelete(_REMOTE, '/queries/%s' % q) | |
2187 | |
2188 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
2189 self.assertEqual(0, len(DoGet(_REMOTE, '/queries'))) | |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2190 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2191 if not IsOrthancVersionAbove(_LOCAL, 1, 11, 2): # TODO: check why this works with 0.8.6 and not with more recent versions |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2192 a = DoPost(_REMOTE, '/modalities/orthanctest/query', { 'Level' : 'Series', |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2193 'Query' : { |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2194 'PatientName' : '*NE*', |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2195 'StudyDate' : '*', |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2196 }})['ID'] |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2197 self.assertEqual(1, len(DoGet(_REMOTE, '/queries'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2198 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2199 b = DoGet(_REMOTE, '/queries/%s' % a) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2200 self.assertTrue('answers' in b) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2201 self.assertTrue('level' in b) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2202 self.assertTrue('modality' in b) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2203 self.assertTrue('query' in b) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2204 self.assertTrue('retrieve' in b) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2205 self.assertEqual('Series', DoGet(_REMOTE, '/queries/%s/level' % a)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2206 self.assertEqual('orthanctest', DoGet(_REMOTE, '/queries/%s/modality' % a)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2207 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2208 q = DoGet(_REMOTE, '/queries/%s/query?simplify' % a) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2209 self.assertEqual(2, len(q)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2210 self.assertTrue('PatientName' in q) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2211 self.assertTrue('StudyDate' in q) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2212 self.assertEqual('*NE*', q['PatientName']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2213 self.assertEqual('*', q['StudyDate']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2214 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2215 self.assertEqual(2, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2216 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2217 s = DoGet(_REMOTE, '/queries/%s/answers/0' % a) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2218 self.assertTrue('content' in s) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2219 self.assertTrue('retrieve' in s) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2220 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2221 s = DoGet(_REMOTE, '/queries/%s/answers/0/content?simplify' % a) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2222 self.assertEqual('887', s['PatientID']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2223 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', s['StudyInstanceUID']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2224 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2225 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2226 DoPost(_REMOTE, '/queries/%s/answers/0/retrieve' % a, 'ORTHANC') |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2227 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2228 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2229 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2230 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2231 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2232 DoPost(_REMOTE, '/queries/%s/answers/1/retrieve' % a, 'ORTHANC', 'application/json') # make sure the issue #36 is fixed (query/retrieve Rest API: /retrieve route shall accept application/json content type) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2233 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2234 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2235 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2236 self.assertEqual(4, len(DoGet(_REMOTE, '/instances'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2237 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2238 # New in Orthanc 1.4.3 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2239 s = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2240 self.assertEqual(2, len(s)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2241 for i in range(2): |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2242 self.assertEqual('SERIES', s[i]['QueryRetrieveLevel']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2243 self.assertEqual('887', s[i]['PatientID']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2244 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', s[i]['StudyInstanceUID']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2245 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2246 DoDelete(_REMOTE, '/queries/%s' % a) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
2247 self.assertEqual(0, len(DoGet(_REMOTE, '/queries'))) |
14 | 2248 |
2249 | |
2250 def test_parent(self): | |
2251 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] | |
2252 patient = '6816cb19-844d5aee-85245eba-28e841e6-2414fae2' | |
2253 study = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0' | |
2254 series = 'f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe' | |
2255 instance = '66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d' | |
107
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
2256 self.assertEqual(instance, u) |
14 | 2257 |
2258 a = DoGet(_REMOTE, '/studies/%s/patient' % study) | |
2259 self.assertEqual('Patient', a['Type']) | |
2260 self.assertEqual(patient, a['ID']) | |
2261 | |
2262 a = DoGet(_REMOTE, '/series/%s/patient' % series) | |
2263 self.assertEqual('Patient', a['Type']) | |
2264 self.assertEqual(patient, a['ID']) | |
2265 | |
2266 a = DoGet(_REMOTE, '/series/%s/study' % series) | |
2267 self.assertEqual('Study', a['Type']) | |
2268 self.assertEqual(study, a['ID']) | |
2269 | |
2270 a = DoGet(_REMOTE, '/instances/%s/patient' % instance) | |
2271 self.assertEqual('Patient', a['Type']) | |
2272 self.assertEqual(patient, a['ID']) | |
2273 | |
2274 a = DoGet(_REMOTE, '/instances/%s/study' % instance) | |
2275 self.assertEqual('Study', a['Type']) | |
2276 self.assertEqual(study, a['ID']) | |
2277 | |
2278 a = DoGet(_REMOTE, '/instances/%s/series' % instance) | |
2279 self.assertEqual('Series', a['Type']) | |
2280 self.assertEqual(series, a['ID']) | |
2281 | |
2282 | |
2283 def test_shanon(self): | |
2284 def Anonymize(instance, replacements = {}): | |
119 | 2285 return DoPost(_REMOTE, '/instances/%s/anonymize' % instance, { |
2286 'Replace' : replacements, | |
2287 'Force' : True, | |
2288 }, 'application/json') | |
14 | 2289 |
2290 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) | |
2291 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] | |
2292 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
2293 | |
2294 tags = [ 'PatientID', 'StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID', 'DeidentificationMethod' ] | |
2295 ids = [ 'ozp00SjY2xG', | |
2296 '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', | |
2297 '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', | |
2298 '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' ] | |
2299 | |
2300 a = ExtractDicomTags(Anonymize(u), tags) | |
2301 for i in range(4): | |
2302 self.assertNotEqual(ids[i], a[i]) | |
2303 self.assertTrue(a[4].startswith('Orthanc')) | |
2304 | |
2305 a = ExtractDicomTags(Anonymize(u, { 'PatientName' : 'toto' }), tags) | |
2306 for i in range(4): | |
2307 self.assertNotEqual(ids[i], a[i]) | |
2308 self.assertFalse(a[4].startswith('Orthanc')) | |
2309 | |
2310 a = ExtractDicomTags(Anonymize(u, { 'SOPInstanceUID' : 'instance' }), tags) | |
2311 self.assertEqual('instance', a[3]) | |
2312 self.assertFalse(a[4].startswith('Orthanc')) | |
2313 | |
2314 a = ExtractDicomTags(Anonymize(u, { 'SeriesInstanceUID' : 'series' }), tags) | |
2315 self.assertEqual('series', a[2]) | |
2316 self.assertFalse(a[4].startswith('Orthanc')) | |
2317 | |
2318 a = ExtractDicomTags(Anonymize(u, { 'StudyInstanceUID' : 'study' }), tags) | |
2319 self.assertEqual('study', a[1]) | |
2320 self.assertFalse(a[4].startswith('Orthanc')) | |
2321 | |
2322 a = ExtractDicomTags(Anonymize(u, { 'PatientID' : 'patient' }), tags) | |
2323 self.assertEqual('patient', a[0]) | |
2324 self.assertFalse(a[4].startswith('Orthanc')) | |
2325 | |
2326 a = ExtractDicomTags(Anonymize(u, { 'PatientID' : 'patient', | |
2327 'StudyInstanceUID' : 'study', | |
2328 'SeriesInstanceUID' : 'series', | |
2329 'SOPInstanceUID' : 'instance' }), tags) | |
2330 self.assertEqual('patient', a[0]) | |
2331 self.assertFalse(a[4].startswith('Orthanc')) | |
2332 | |
2333 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
2334 | |
2335 | |
2336 def test_shanon_2(self): | |
2337 def Modify(instance, replacements = {}): | |
119 | 2338 return DoPost(_REMOTE, '/instances/%s/modify' % instance, { |
2339 'Replace' : replacements, | |
2340 'Force': True, | |
2341 }, 'application/json') | |
14 | 2342 |
2343 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) | |
2344 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] | |
2345 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
2346 | |
2347 tags = [ 'PatientID', 'StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID', 'DeidentificationMethod' ] | |
2348 ids = [ 'ozp00SjY2xG', | |
2349 '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', | |
2350 '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', | |
2351 '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' ] | |
2352 | |
2353 a = ExtractDicomTags(Modify(u), tags) | |
2354 self.assertEqual(ids[0], a[0]) | |
2355 self.assertEqual(ids[1], a[1]) | |
2356 self.assertEqual(ids[2], a[2]) | |
2357 self.assertNotEqual(ids[3], a[3]) | |
2358 self.assertEqual(0, len(a[4])) | |
2359 | |
2360 a = ExtractDicomTags(Modify(u, { 'SOPInstanceUID' : 'instance' }), tags) | |
2361 self.assertEqual(ids[0], a[0]) | |
2362 self.assertEqual(ids[1], a[1]) | |
2363 self.assertEqual(ids[2], a[2]) | |
2364 self.assertEqual('instance', a[3]) | |
2365 | |
2366 a = ExtractDicomTags(Modify(u, { 'SeriesInstanceUID' : 'series' }), tags) | |
2367 self.assertEqual(ids[0], a[0]) | |
2368 self.assertEqual(ids[1], a[1]) | |
2369 self.assertEqual('series', a[2]) | |
2370 self.assertNotEqual(ids[3], a[3]) | |
2371 | |
2372 a = ExtractDicomTags(Modify(u, { 'StudyInstanceUID' : 'study' }), tags) | |
2373 self.assertEqual(ids[0], a[0]) | |
2374 self.assertEqual('study', a[1]) | |
2375 self.assertNotEqual(ids[2], a[2]) | |
2376 self.assertNotEqual(ids[3], a[3]) | |
2377 | |
2378 a = ExtractDicomTags(Modify(u, { 'PatientID' : 'patient' }), tags) | |
2379 self.assertEqual('patient', a[0]) | |
2380 self.assertNotEqual(ids[1], a[1]) | |
2381 self.assertNotEqual(ids[2], a[2]) | |
2382 self.assertNotEqual(ids[3], a[3]) | |
2383 | |
2384 a = ExtractDicomTags(Modify(u, { 'PatientID' : 'patient', | |
2385 'StudyInstanceUID' : 'study', | |
2386 'SeriesInstanceUID' : 'series', | |
2387 'SOPInstanceUID' : 'instance' }), tags) | |
2388 self.assertEqual('patient', a[0]) | |
2389 self.assertEqual('study', a[1]) | |
2390 self.assertEqual('series', a[2]) | |
2391 self.assertEqual('instance', a[3]) | |
2392 | |
2393 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
2394 | |
2395 | |
2396 def test_instances_tags(self): | |
2397 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID'] | |
2398 b = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')['ID'] | |
2399 #a = UploadInstance(_REMOTE, 'Cardiac/MR.X.1.2.276.0.7230010.3.1.4.2831157719.2256.1336386937.676343')['ID'] | |
2400 #b = UploadInstance(_REMOTE, 'Cardiac/MR.X.1.2.276.0.7230010.3.1.4.2831157719.2256.1336386925.676329')['ID'] | |
2401 | |
2402 i = DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % DoGet(_REMOTE, '/patients')[0]) | |
2403 self.assertEqual(2, len(i)) | |
2404 self.assertEqual('887', i[i.keys()[0]]['PatientID']) | |
2405 self.assertEqual('887', i[i.keys()[1]]['PatientID']) | |
2406 | |
2407 i = DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % DoGet(_REMOTE, '/studies')[0]) | |
2408 self.assertEqual(2, len(i)) | |
2409 self.assertEqual('887', i[i.keys()[0]]['PatientID']) | |
2410 self.assertEqual('887', i[i.keys()[1]]['PatientID']) | |
2411 | |
2412 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) | |
2413 i = DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % DoGet(_REMOTE, '/series')[0]) | |
2414 self.assertEqual(1, len(i)) | |
2415 self.assertEqual('887', i[i.keys()[0]]['PatientID']) | |
2416 | |
2417 i = DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % DoGet(_REMOTE, '/series')[1]) | |
2418 self.assertEqual(1, len(i)) | |
2419 self.assertEqual('887', i[i.keys()[0]]['PatientID']) | |
2420 | |
136
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
2421 i = DoGet(_REMOTE, '/patients/%s/instances-tags?short' % DoGet(_REMOTE, '/series')[1]) |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
2422 self.assertEqual(1, len(i)) |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
2423 self.assertEqual('887', i[i.keys()[0]]['0010,0020']) |
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
2424 |
14 | 2425 |
2426 def test_lookup(self): | |
2427 a = DoPost(_REMOTE, '/tools/lookup', 'ozp00SjY2xG') | |
2428 self.assertEqual(0, len(a)) | |
2429 | |
2430 UploadInstance(_REMOTE, 'DummyCT.dcm') | |
2431 | |
2432 a = DoPost(_REMOTE, '/tools/lookup', 'ozp00SjY2xG') | |
2433 self.assertEqual(1, len(a)) | |
2434 self.assertEqual('Patient', a[0]['Type']) | |
2435 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', a[0]['ID']) | |
2436 self.assertEqual('/patients/%s' % a[0]['ID'], a[0]['Path']) | |
2437 | |
2438 a = DoPost(_REMOTE, '/tools/lookup', '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390') | |
2439 self.assertEqual(1, len(a)) | |
2440 self.assertEqual('Study', a[0]['Type']) | |
2441 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', a[0]['ID']) | |
2442 self.assertEqual('/studies/%s' % a[0]['ID'], a[0]['Path']) | |
2443 | |
2444 a = DoPost(_REMOTE, '/tools/lookup', '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394') | |
2445 self.assertEqual(1, len(a)) | |
2446 self.assertEqual('Series', a[0]['Type']) | |
2447 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', a[0]['ID']) | |
2448 self.assertEqual('/series/%s' % a[0]['ID'], a[0]['Path']) | |
2449 | |
2450 a = DoPost(_REMOTE, '/tools/lookup', '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109') | |
2451 self.assertEqual(1, len(a)) | |
2452 self.assertEqual('Instance', a[0]['Type']) | |
2453 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', a[0]['ID']) | |
2454 self.assertEqual('/instances/%s' % a[0]['ID'], a[0]['Path']) | |
2455 | |
2456 DropOrthanc(_REMOTE) | |
2457 a = DoPost(_REMOTE, '/tools/lookup', '3113719P') | |
2458 self.assertEqual(0, len(a)) | |
2459 | |
15 | 2460 |
2461 def test_autorouting(self): | |
2462 knee1 = 'Knee/T1/IM-0001-0001.dcm' | |
2463 knee2 = 'Knee/T2/IM-0001-0002.dcm' | |
2464 other = 'Brainix/Flair/IM-0001-0001.dcm' | |
2465 | |
2466 # Check that this version is >= 0.8.0 | |
2467 self.assertTrue(IsDefinedInLua(_REMOTE, '_InitializeJob')) | |
2468 self.assertTrue('orthanctest' in DoGet(_REMOTE, '/modalities')) | |
2469 | |
2470 UploadInstance(_REMOTE, knee1) | |
2471 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
2472 | |
2473 DropOrthanc(_REMOTE) | |
2474 DropOrthanc(_LOCAL) | |
174 | 2475 InstallLuaScriptFromPath(_REMOTE, 'Lua/Autorouting.lua') |
15 | 2476 UploadInstance(_REMOTE, knee1) |
2477 UploadInstance(_REMOTE, knee2) | |
2478 UploadInstance(_REMOTE, other) | |
2479 WaitEmpty(_REMOTE) | |
174 | 2480 UninstallLuaCallbacks(_REMOTE) |
15 | 2481 self.assertEqual(3, len(DoGet(_LOCAL, '/instances'))) |
2482 | |
2483 DropOrthanc(_REMOTE) | |
2484 DropOrthanc(_LOCAL) | |
174 | 2485 InstallLuaScriptFromPath(_REMOTE, 'Lua/AutoroutingConditional.lua') |
15 | 2486 UploadInstance(_REMOTE, knee1) |
2487 UploadInstance(_REMOTE, knee2) | |
2488 UploadInstance(_REMOTE, other) | |
2489 WaitEmpty(_REMOTE) | |
174 | 2490 UninstallLuaCallbacks(_REMOTE) |
15 | 2491 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) |
2492 | |
2493 DropOrthanc(_REMOTE) | |
2494 DropOrthanc(_LOCAL) | |
174 | 2495 InstallLuaScriptFromPath(_REMOTE, 'Lua/AutoroutingModification.lua') |
15 | 2496 UploadInstance(_REMOTE, knee1) |
2497 WaitEmpty(_REMOTE) | |
174 | 2498 UninstallLuaCallbacks(_REMOTE) |
15 | 2499 i = DoGet(_LOCAL, '/instances') |
2500 self.assertEqual(1, len(i)) | |
2501 | |
2502 with tempfile.NamedTemporaryFile(delete = True) as f: | |
2503 f.write(DoGet(_LOCAL, '/instances/%s/file' % i[0])) | |
2504 f.flush() | |
45 | 2505 routed = subprocess.check_output([ FindExecutable('dcm2xml'), f.name ]) |
15 | 2506 self.assertEqual('My Medical Device', re.search('"StationName">(.*?)<', routed).group(1).strip()) |
2507 self.assertEqual(None, re.search('"MilitaryRank"', routed)) | |
2508 self.assertEqual(None, re.search('"0051,0010"', routed)) # A private tag | |
17 | 2509 |
2510 | |
2511 def test_storescu_rf(self): | |
2512 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID'] | |
2513 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
2514 j = DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain') | |
2515 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
18 | 2516 |
2517 | |
2518 def test_anonymize_instance(self): | |
2519 def AnonymizeAndUpload(instanceId, parameters): | |
2520 return DoPost(_REMOTE, '/instances', DoPost(_REMOTE, '/instances/%s/anonymize' % instanceId, parameters, | |
2521 'application/json'), 'application/dicom')['ID'] | |
2522 | |
2523 def ModifyAndUpload(instanceId, parameters): | |
2524 return DoPost(_REMOTE, '/instances', DoPost(_REMOTE, '/instances/%s/modify' % instanceId, parameters, | |
2525 'application/json'), 'application/dicom')['ID'] | |
2526 | |
2527 a = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID'] | |
2528 s1 = DoGet(_REMOTE, '/instances/%s/content/PatientName' % a) | |
2529 s2 = DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % a) # Some private tag | |
2530 s3 = DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % a) | |
2531 s4 = DoGet(_REMOTE, '/instances/%s/content/SeriesDescription' % a) | |
2532 s5 = DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % a) | |
2533 | |
2534 b = AnonymizeAndUpload(a, '{}') | |
2535 self.assertNotEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b)) | |
2536 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b)) | |
2537 | |
2538 # Keep private tag (only OK since Orthanc 0.8.0) | |
2539 b = AnonymizeAndUpload(a, '{"Keep":["00e1-10c2"]}') | |
2540 self.assertNotEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b)) | |
2541 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b)) | |
2542 | |
2543 b = AnonymizeAndUpload(a, '{"Keep":["00e1,10c2","PatientName"]}') | |
2544 self.assertEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b)) | |
2545 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b)) | |
2546 | |
2547 b = AnonymizeAndUpload(a, '{"Keep":["PatientName"],"Replace":{"00e1,10c2":"Hello"}}') | |
2548 self.assertEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b)) | |
2549 self.assertTrue(DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b).startswith('Hello')) | |
2550 | |
2551 # Examples from the Wiki | |
118
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
2552 b = AnonymizeAndUpload(a, '{"Replace":{"PatientName":"hello","0010-0020":"world"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": true,"Force":true}') |
18 | 2553 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip()) |
2554 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip()) | |
2555 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b)) | |
2556 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b)) | |
2557 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b)) | |
2558 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b)) | |
2559 DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % a) | |
2560 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b)) | |
2561 | |
118
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
2562 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"},"Remove":["InstitutionName"],"RemovePrivateTags": true,"Force":true}') |
18 | 2563 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip()) |
2564 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip()) | |
2565 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b)) | |
2566 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b)) | |
2567 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b)) | |
2568 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b)) | |
2569 | |
118
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
2570 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"},"Force":true}') |
18 | 2571 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip()) |
2572 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip()) | |
2573 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1,10c2' % b)) | |
2574 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b)) | |
2575 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b)) | |
2576 self.assertEqual(s5, DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b)) | |
2577 | |
2578 | |
2579 # Test modify non-existing | |
2580 i = DoPost(_REMOTE, '/tools/create-dicom', | |
2581 json.dumps({ | |
2582 'PatientName' : 'Jodogne', | |
2583 'Modality' : 'CT', | |
2584 }))['ID'] | |
2585 | |
2586 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i).strip()) | |
2587 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % i)) | |
2588 self.assertEqual('CT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i).strip()) | |
2589 | |
2590 b = ModifyAndUpload(i, '{"Replace":{"StudyDescription":"hello","Modality":"world"}}') | |
2591 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % b).strip()) | |
2592 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % b).strip()) | |
2593 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/Modality' % b).strip()) | |
2594 | |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2595 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2596 def test_incoming_jpeg(self): |
463
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
2597 # since this test fails regularly on CI, enable verbosity |
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
2598 DoPut(_REMOTE, '/tools/log-level', 'verbose') |
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
2599 |
468
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2600 def storescu(image, acceptUnknownSopClassUid, expectSuccess = True, retries = 1): |
61
967d44407308
test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
2601 if acceptUnknownSopClassUid: |
967d44407308
test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
2602 tmp = [ '-xf', GetDatabasePath('UnknownSopClassUid.cfg'), 'Default' ] |
967d44407308
test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
2603 else: |
967d44407308
test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
2604 tmp = [ '-xs' ] |
967d44407308
test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
2605 |
468
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2606 while retries > 0: |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2607 retries -= 1 |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2608 with open(os.devnull, 'w') as FNULL: |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2609 try: |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2610 subprocess.check_call([ FindExecutable('storescu') ] + tmp + |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2611 [ _REMOTE['Server'], str(_REMOTE['DicomPort']), |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2612 GetDatabasePath(image) ], |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2613 stderr = FNULL) |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2614 |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2615 if expectSuccess: |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2616 return |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2617 except subprocess.CalledProcessError as e: |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2618 print('storescu failed with error code: %s' % str(e.returncode)) |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2619 if not expectSuccess: |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2620 raise e |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2621 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2622 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
373
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2623 |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2624 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2625 a = DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', [ |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2626 '1.2.840.10008.1.2', '1.2.840.10008.1.2.1', '1.2.840.10008.1.2.2' |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2627 ]) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2628 self.assertTrue('1.2.840.10008.1.2' in a) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2629 self.assertTrue('1.2.840.10008.1.2.1' in a) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2630 self.assertTrue('1.2.840.10008.1.2.2' in a) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2631 self.assertEqual(3, len(a)) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2632 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', 'nope')) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2633 DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', '0') |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2634 self.assertEqual(0, DoGet(_REMOTE, '/tools/unknown-sop-class-accepted')) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2635 else: |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2636 InstallLuaScriptFromPath(_REMOTE, 'Lua/TransferSyntaxDisable.lua') |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2637 |
490 | 2638 # the following line regularly fails on CI because storescu still returns 0 although the C-Store fails -> that's why we have implemented retries |
468
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2639 self.assertRaises(Exception, lambda: storescu('Knix/Loc/IM-0001-0001.dcm', False, False, 3)) |
e1867aeb57e2
retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents:
465
diff
changeset
|
2640 self.assertRaises(Exception, lambda: storescu('UnknownSopClassUid.dcm', True, False, 3)) |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2641 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
373
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2642 |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2643 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): |
374 | 2644 a = DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', '*', 'text/plain') |
373
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2645 self.assertGreaterEqual(42, len(a)) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2646 DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', 'true') |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2647 self.assertEqual(1, DoGet(_REMOTE, '/tools/unknown-sop-class-accepted')) |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2648 else: |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2649 InstallLuaScriptFromPath(_REMOTE, 'Lua/TransferSyntaxEnable.lua') |
f673153f27a4
use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
372
diff
changeset
|
2650 |
62
f9c4ce95756f
removal of useless information
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
61
diff
changeset
|
2651 DoPost(_REMOTE, '/tools/execute-script', "print('All special transfer syntaxes are now accepted')") |
61
967d44407308
test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
2652 storescu('Knix/Loc/IM-0001-0001.dcm', False) |
967d44407308
test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
2653 storescu('UnknownSopClassUid.dcm', True) |
967d44407308
test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
2654 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2655 |
463
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
2656 # set back normal verbosity |
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
2657 DoPut(_REMOTE, '/tools/log-level', 'default') |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2658 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2659 def test_storescu_jpeg(self): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2660 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports'])) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2661 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2662 knixStudy = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0' |
64 | 2663 i = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0001.dcm')['ID'] |
2664 | |
2665 # This is JPEG lossless | |
136
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
2666 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header' % i)['0002,0010']['Value']) |
64 | 2667 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header?simplify' % i)['TransferSyntaxUID']) |
136
5634ef96fcc5
testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
133
diff
changeset
|
2668 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header?short' % i)['0002,0010']) |
64 | 2669 |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2670 UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0002.dcm') |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2671 UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0003.dcm') |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2672 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2673 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2674 b = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2675 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2676 DoPost(_REMOTE, '/modalities/orthanctest/store', [ knixStudy, a, b ]) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2677 self.assertEqual(5, len(DoGet(_LOCAL, '/instances'))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2678 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2679 self.assertEqual(3, len(DoGet(_REMOTE, '/exports')['Exports'])) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2680 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2681 DropOrthanc(_REMOTE) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2682 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports'])) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2683 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2684 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2685 def test_pixel_data(self): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2686 jpeg = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0001.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2687 color = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2688 phenix = UploadInstance(_REMOTE, 'Phenix/IM-0001-0001.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2689 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2690 phenixSize = 358 * 512 * 2 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2691 colorSize = 1000 * 1000 * 3 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2692 jpegSize = 51918 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2693 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2694 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/content/7fe0-0010' % phenix))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2695 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/content/7fe0-0010' % color))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2696 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/content/7fe0-0010' % jpeg))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2697 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2698 self.assertEqual(0, len(DoGet(_REMOTE, '/instances/%s/content/7fe0-0010/0' % jpeg))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2699 self.assertEqual(jpegSize, len(DoGet(_REMOTE, '/instances/%s/content/7fe0-0010/1' % jpeg))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2700 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2701 self.assertEqual(phenixSize, len(DoGet(_REMOTE, '/instances/%s/content/7fe0-0010/0' % phenix))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2702 self.assertEqual(colorSize, len(DoGet(_REMOTE, '/instances/%s/content/7fe0-0010/0' % color))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2703 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2704 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2705 def test_decode_brainix(self): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2706 brainix = [ |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2707 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID'], # (*) |
384 | 2708 UploadInstance(_REMOTE, 'Formats/JpegLossless.dcm')['ID'], # JPEG-LS, same as (*) (since Orthanc 0.7.6) => doesn't work on big-endian |
21
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2709 UploadInstance(_REMOTE, 'Formats/Jpeg.dcm')['ID'], # JPEG, same as (*) (since Orthanc 0.7.6) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2710 ] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2711 h = '6fb11b932d535c2be04beabd99793ff8' |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2712 maxValue = 426.0 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2713 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2714 truth = Image.open(GetDatabasePath('Formats/Brainix.png')) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2715 for i in brainix: |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2716 self.AssertSameImages(truth.getdata(), '/instances/%s/image-int16' % i) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2717 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint16' % i) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2718 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2719 truth2 = map(lambda x: min(255, x), truth.getdata()) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2720 for i in brainix: |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2721 self.AssertSameImages(truth2, '/instances/%s/image-uint8' % i) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2722 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2723 truth2 = map(lambda x: x * 255.0 / maxValue, truth.getdata()) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2724 for i in brainix: |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2725 self.AssertSameImages(truth2, '/instances/%s/preview' % i) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2726 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2727 for i in brainix: |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2728 self.assertEqual(h, ComputeMD5(DoGet(_REMOTE, '/instances/%s/matlab' % i))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2729 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2730 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2731 def test_decode_color(self): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2732 imagej = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2733 color = UploadInstance(_REMOTE, 'ColorTestMalaterre.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2734 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2735 for i in [ imagej, color ]: |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2736 for j in [ 'image-uint8', 'image-uint16', 'image-int16' ]: |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2737 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/%s' % (i, j))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2738 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2739 self.assertEqual('c14c687f7a1ea9fe022479fc87c67274', ComputeMD5(DoGet(_REMOTE, '/instances/%s/preview' % imagej))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2740 self.assertEqual('a87d122918a56f803bcfe9d2586b9125', ComputeMD5(DoGet(_REMOTE, '/instances/%s/preview' % color))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2741 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2742 self.assertEqual('30cc46bfa7aba77a40e4178f6184c25a', ComputeMD5(DoGet(_REMOTE, '/instances/%s/matlab' % imagej))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2743 self.assertEqual('ff195005cef06b59666fd220a9b4cd9a', ComputeMD5(DoGet(_REMOTE, '/instances/%s/matlab' % color))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2744 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2745 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2746 def test_decode_rf(self): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2747 rf = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2748 truth = Image.open(GetDatabasePath('Formats/KarstenHilbertRF.png')) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2749 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2750 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint8' % rf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2751 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint16' % rf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2752 self.AssertSameImages(truth.getdata(), '/instances/%s/image-int16' % rf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2753 self.AssertSameImages(truth.getdata(), '/instances/%s/preview' % rf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2754 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2755 self.assertEqual('42254d70efd2f4a1b8f3455909689f0e', ComputeMD5(DoGet(_REMOTE, '/instances/%s/matlab' % rf))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2756 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2757 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2758 def test_decode_multiframe(self): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2759 mf = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2760 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2761 # Test the first frame |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2762 truth = Image.open(GetDatabasePath('Formats/Multiframe0.png')) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2763 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint8' % mf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2764 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint16' % mf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2765 self.AssertSameImages(truth.getdata(), '/instances/%s/image-int16' % mf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2766 self.AssertSameImages(truth.getdata(), '/instances/%s/preview' % mf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2767 self.assertEqual('9812b99d93bbcd4e7684ded089b5dfb3', ComputeMD5(DoGet(_REMOTE, '/instances/%s/matlab' % mf))) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2768 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2769 self.AssertSameImages(truth.getdata(), '/instances/%s/frames/0/image-uint16' % mf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2770 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2771 # Test the last frame |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2772 truth = Image.open(GetDatabasePath('Formats/Multiframe75.png')) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2773 self.AssertSameImages(truth.getdata(), '/instances/%s/frames/75/image-uint16' % mf) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2774 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2775 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2776 def test_decode_signed(self): |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2777 signed = UploadInstance(_REMOTE, 'SignedCT.dcm')['ID'] |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2778 minValue = -2000 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2779 maxValue = 4042 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2780 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2781 truth = Image.open(GetDatabasePath('Formats/SignedCT.png')) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2782 self.AssertSameImages(truth.getdata(), '/instances/%s/image-int16' % signed) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2783 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2784 truth2 = map(lambda x: 0 if x >= 32768 else x, truth.getdata()) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2785 self.AssertSameImages(truth2, '/instances/%s/image-uint16' % signed) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2786 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2787 truth3 = map(lambda x: 255 if x >= 256 else x, truth2) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2788 self.AssertSameImages(truth3, '/instances/%s/image-uint8' % signed) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2789 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2790 tmp = map(lambda x: x - 65536 if x >= 32768 else x, truth.getdata()) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2791 tmp = map(lambda x: (255.0 * (x - minValue)) / (maxValue - minValue), tmp) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2792 self.AssertSameImages(tmp, '/instances/%s/preview' % signed) |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2793 |
2a29bcff60a7
tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
18
diff
changeset
|
2794 self.assertEqual('b57e6c872a3da50877c7da689b03a444', ComputeMD5(DoGet(_REMOTE, '/instances/%s/matlab' % signed))) |
22 | 2795 |
2796 | |
46
85b2e36ed392
explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
45
diff
changeset
|
2797 def test_googlecode_issue_32(self): |
92
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2798 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/tools/default-encoding', 'nope')) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2799 self.assertEqual('Windows1251', DoPut(_REMOTE, '/tools/default-encoding', 'Windows1251')) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2800 self.assertEqual('Windows1251', DoGet(_REMOTE, '/tools/default-encoding')) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2801 |
22 | 2802 f = UploadInstance(_REMOTE, 'Issue32.dcm')['ID'] |
2803 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % f) | |
2804 self.assertEqual(u'Рентгенография', tags['SeriesDescription']) | |
2805 self.assertEqual(u'Таз', tags['BodyPartExamined']) | |
2806 self.assertEqual(u'Прямая', tags['ViewPosition']) | |
2807 | |
92
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2808 # Replay the same test using Latin1 as default encoding: This must fail |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2809 self.assertEqual('Latin1', DoPut(_REMOTE, '/tools/default-encoding', 'Latin1')) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2810 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2811 DoDelete(_REMOTE, '/instances/%s' % f) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2812 f = UploadInstance(_REMOTE, 'Issue32.dcm')['ID'] |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2813 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % f) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2814 self.assertNotEqual(u'Рентгенография', tags['SeriesDescription']) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2815 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
2816 |
22 | 2817 def test_encodings(self): |
23 | 2818 # Latin-1 (ISO_IR 100) |
22 | 2819 brainix = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID'] |
2820 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % brainix) | |
2821 self.assertEqual(u'IRM cérébrale, neuro-crâne', tags['StudyDescription']) | |
23 | 2822 |
2823 # Latin-2 (ISO_IR 101) | |
2824 a = UploadInstance(_REMOTE, 'MarekLatin2.dcm')['ID'] | |
2825 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % a) | |
2826 # dcm2xml MarekLatin2.dcm | iconv -f latin2 -t utf-8 | xmllint --format - | |
2827 self.assertEqual('Imię i Nazwisko osoby opisującej', | |
2828 i['ContentSequence'][4]['ConceptNameCodeSequence'][0]['CodeMeaning'].encode('utf-8')) | |
2829 | |
26
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2830 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2831 def test_storescu_custom_aet(self): |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2832 # This tests a feature introduced in Orthanc 0.9.1: "Custom |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2833 # setting of the local AET during C-Store SCU (both in Lua and |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2834 # in the REST API)." |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2835 # https://groups.google.com/forum/#!msg/orthanc-users/o5qMULformU/wZjW2iSaMcAJ |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2836 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2837 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2838 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2839 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2840 b = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm') |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2841 c = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0003.dcm') |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2842 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2843 j = DoPost(_REMOTE, '/modalities/orthanctest/store', { |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2844 'LocalAet' : 'YOP', |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2845 'Resources' : [ a['ID'], b['ID'] ] |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2846 }) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2847 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2848 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2849 self.assertEqual('YOP', DoGet(_LOCAL, '/instances/%s/metadata/RemoteAET' % a['ID'])) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2850 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2851 DropOrthanc(_LOCAL) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2852 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2853 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2854 j = DoPost(_REMOTE, '/modalities/orthanctest/store', { |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2855 'Resources' : [ c['ID'] ] |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2856 }) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2857 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2858 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2859 self.assertEqual('ORTHANC', DoGet(_LOCAL, '/instances/%s/metadata/RemoteAET' % c['ID'])) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2860 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2861 DropOrthanc(_REMOTE) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2862 DropOrthanc(_LOCAL) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2863 |
174 | 2864 InstallLuaScriptFromPath(_REMOTE, 'Lua/AutoroutingChangeAet.lua') |
26
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2865 DoPost(_REMOTE, '/tools/execute-script', 'aet = "HELLO"', 'application/lua') |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2866 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2867 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2868 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2869 WaitEmpty(_REMOTE) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2870 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2871 self.assertEqual('HELLO', DoGet(_LOCAL, '/instances/%s/metadata/RemoteAET' % a['ID'])) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2872 |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2873 DoPost(_REMOTE, '/tools/execute-script', 'aet = nill', 'application/lua') |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2874 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm') |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2875 WaitEmpty(_REMOTE) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2876 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) |
040f6ef1394a
test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
23
diff
changeset
|
2877 self.assertEqual('ORTHANC', DoGet(_LOCAL, '/instances/%s/metadata/RemoteAET' % b['ID'])) |
34
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2878 |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2879 def test_resources_since_limit(self): |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2880 # Upload 16 instances |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2881 for i in range(4): |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2882 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2883 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2884 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1)) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2885 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1)) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2886 |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2887 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2888 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2889 self.assertEqual(4, len(DoGet(_REMOTE, '/series'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2890 self.assertEqual(16, len(DoGet(_REMOTE, '/instances'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2891 |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2892 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/patients&since=10' % i)) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2893 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/patients&limit=10' % i)) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2894 |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2895 self.assertEqual(0, len(DoGet(_REMOTE, '/patients?since=0&limit=0'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2896 self.assertEqual(2, len(DoGet(_REMOTE, '/patients?since=0&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2897 self.assertEqual(2, len(DoGet(_REMOTE, '/studies?since=0&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2898 self.assertEqual(4, len(DoGet(_REMOTE, '/series?since=0&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2899 self.assertEqual(16, len(DoGet(_REMOTE, '/instances?since=0&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2900 self.assertEqual(1, len(DoGet(_REMOTE, '/patients?since=1&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2901 self.assertEqual(0, len(DoGet(_REMOTE, '/patients?since=2&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2902 self.assertEqual(0, len(DoGet(_REMOTE, '/patients?since=3&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2903 self.assertEqual(1, len(DoGet(_REMOTE, '/studies?since=1&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2904 self.assertEqual(3, len(DoGet(_REMOTE, '/series?since=1&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2905 self.assertEqual(2, len(DoGet(_REMOTE, '/series?since=2&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2906 self.assertEqual(1, len(DoGet(_REMOTE, '/series?since=3&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2907 self.assertEqual(0, len(DoGet(_REMOTE, '/series?since=4&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2908 self.assertEqual(0, len(DoGet(_REMOTE, '/series?since=100&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2909 self.assertEqual(15, len(DoGet(_REMOTE, '/instances?since=1&limit=100'))) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2910 |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2911 for limit in [ 1, 2, 3, 7, 16, 17 ]: |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2912 s = {} |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2913 since = 0 |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2914 while True: |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2915 t = DoGet(_REMOTE, '/instances?since=%d&limit=%d' % (since, limit)) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2916 if len(t) == 0: |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2917 break |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2918 |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2919 since += len(t) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2920 for i in t: |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2921 s[i] = None |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2922 |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2923 self.assertEqual(16, len(s)) |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2924 for instance in DoGet(_REMOTE, '/instances'): |
1047d7bc5210
test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
28
diff
changeset
|
2925 self.assertTrue(instance in s) |
36 | 2926 |
2927 | |
2928 def test_create_pdf(self): | |
2929 # Upload 4 instances | |
2930 brainixInstance = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] | |
2931 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm') | |
2932 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
2933 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
2934 | |
2935 brainixPatient = '16738bc3-e47ed42a-43ce044c-a3414a45-cb069bd0' | |
2936 brainixStudy = '27f7126f-4f66fb14-03f4081b-f9341db2-53925988' | |
2937 brainixEpi = '2ac1316d-3e432022-62eabff2-c59f5475-9b1ac3f8' | |
2938 | |
2939 with open(GetDatabasePath('HelloWorld.pdf'), 'rb') as f: | |
2940 pdf = f.read() | |
2941 | |
2942 i = DoPost(_REMOTE, '/tools/create-dicom', | |
2943 json.dumps({ | |
2944 'Tags' : { | |
2945 'PatientName' : 'Jodogne', | |
2946 'Modality' : 'CT', | |
2947 }, | |
2948 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf) | |
2949 })) | |
2950 | |
2951 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip()) | |
565
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
2952 self.assertEqual('1.2.840.10008.5.1.4.1.1.104.1', DoGet(_REMOTE, '/instances/%s/content/SOPClassUID' % i['ID']).strip('\x00')) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
2953 self.assertEqual('WSD', DoGet(_REMOTE, '/instances/%s/content/ConversionType' % i['ID']).strip()) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
2954 self.assertEqual('application/pdf', DoGet(_REMOTE, '/instances/%s/content/MIMETypeOfEncapsulatedDocument' % i['ID']).strip()) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
2955 |
446
9184e6cb215a
allow custom value for "Modality" in /tools/create-dicom for PDF
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
445
diff
changeset
|
2956 # In Orthanc <= 1.9.7, the "CT" would have been replaced by "OT" |
9184e6cb215a
allow custom value for "Modality" in /tools/create-dicom for PDF
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
445
diff
changeset
|
2957 # https://groups.google.com/g/orthanc-users/c/eNSddNrQDtM/m/wc1HahimAAAJ |
9184e6cb215a
allow custom value for "Modality" in /tools/create-dicom for PDF
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
445
diff
changeset
|
2958 self.assertEqual('CT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i['ID']).strip()) |
36 | 2959 |
2960 b = DoGet(_REMOTE, '/instances/%s/content/0042-0011' % i['ID']) | |
2961 self.assertEqual(len(b), len(pdf) + 1) | |
2962 self.assertEqual(ComputeMD5(b), ComputeMD5(pdf + '\0')) | |
2963 | |
2964 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/tools/create-dicom', | |
2965 json.dumps({ | |
2966 'Parent' : brainixPatient, | |
2967 'Tags' : { | |
2968 'PatientName' : 'Jodogne', | |
2969 } | |
2970 }))) | |
2971 | |
2972 i = DoPost(_REMOTE, '/tools/create-dicom', | |
2973 json.dumps({ | |
2974 'Parent' : brainixPatient, | |
2975 'Tags' : { 'StudyDescription' : 'PDF^Patient' }, | |
2976 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf) | |
2977 })) | |
2978 | |
2979 self.assertEqual(brainixPatient, DoGet(_REMOTE, '/instances/%s/patient' % i['ID'])['ID']) | |
565
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
2980 self.assertEqual('1.2.840.10008.5.1.4.1.1.104.1', DoGet(_REMOTE, '/instances/%s/content/SOPClassUID' % i['ID']).strip('\x00')) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
2981 self.assertEqual('OT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i['ID']).strip('\x00')) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
2982 self.assertEqual('WSD', DoGet(_REMOTE, '/instances/%s/content/ConversionType' % i['ID']).strip()) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
2983 self.assertEqual('application/pdf', DoGet(_REMOTE, '/instances/%s/content/MIMETypeOfEncapsulatedDocument' % i['ID']).strip()) |
36 | 2984 |
2985 i = DoPost(_REMOTE, '/tools/create-dicom', | |
2986 json.dumps({ | |
2987 'Parent' : brainixStudy, | |
2988 'Tags' : { 'SeriesDescription' : 'PDF^Study' }, | |
2989 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf) | |
2990 })) | |
2991 | |
2992 self.assertEqual(brainixStudy, DoGet(_REMOTE, '/instances/%s/study' % i['ID'])['ID']) | |
2993 | |
2994 i = DoPost(_REMOTE, '/tools/create-dicom', | |
2995 json.dumps({ | |
2996 'Parent' : brainixEpi, | |
37 | 2997 'Tags' : { 'SpecificCharacterSet' : 'ISO_IR 13' }, |
36 | 2998 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf) |
2999 })) | |
3000 | |
3001 self.assertEqual(brainixEpi, DoGet(_REMOTE, '/instances/%s/series' % i['ID'])['ID']) | |
3002 | |
3003 b = DoGet(_REMOTE, '/instances/%s/pdf' % i['ID']) | |
3004 self.assertEqual(len(b), len(pdf)) | |
3005 self.assertEqual(ComputeMD5(b), ComputeMD5(pdf)) | |
3006 | |
3007 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/pdf' % brainixInstance)) | |
38 | 3008 |
3009 | |
3010 def test_create_series(self): | |
3011 i = DoPost(_REMOTE, '/tools/create-dicom', | |
3012 json.dumps({ | |
3013 'Tags' : { | |
40 | 3014 'SpecificCharacterSet' : 'ISO_IR 100', |
3015 'PatientName' : 'Sébastien Jodogne', | |
38 | 3016 'Modality' : 'CT', |
3017 }, | |
3018 'Content' : [ | |
40 | 3019 { |
3020 'Content': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==', # red dot in RGBA | |
3021 'Tags' : { 'ImageComments' : 'Tutu' } | |
3022 }, | |
38 | 3023 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVQ4jZ2SWw3EIBREjwUsYAELa2EtoAULFUCyXAtroRZqoRbox254BdLC/DZnZjoXWJFgCDg8egW2CBEhEnDzyRk+Ecxz2KP/0AL8S99T+jQccAVs22qKwAuPuq0uyNg9cPLh3am+pe/dkHLZtqJHj6vXJrZ7nvzvxxgemXgUwnGfXqpee09mUwp8m022OYP6bLF7mVuVe0y/umxinsAXRd9z0k1ubWsAAAAASUVORK5CYII=', |
3024 ] | |
3025 })) | |
3026 | |
3027 s = DoGet(_REMOTE, i['Path']) | |
3028 self.assertEqual('Series', s['Type']) | |
3029 self.assertEqual(s['ID'], i['ID']) | |
3030 self.assertEqual(2, len(s['Instances'])) | |
39 | 3031 self.assertEqual(2, s['ExpectedNumberOfInstances']) |
3032 self.assertEqual('Complete', s['Status']) | |
40 | 3033 |
3034 a = DoGet(_REMOTE, '/instances/%s/tags?simplify' % s['Instances'][0]) | |
3035 b = DoGet(_REMOTE, '/instances/%s/tags?simplify' % s['Instances'][1]) | |
3036 self.assertTrue('ImageComments' in a or 'ImageComments' in b) | |
3037 if 'ImageComments' in a: | |
3038 self.assertEqual('Tutu', a['ImageComments']) | |
3039 else: | |
3040 self.assertEqual('Tutu', b['ImageComments']) | |
3041 | |
3042 patient = DoGet(_REMOTE, '/instances/%s/patient' % s['Instances'][0]) | |
3043 self.assertEqual(patient['MainDicomTags']['PatientName'].encode('utf-8'), | |
3044 'Sébastien Jodogne') | |
47 | 3045 |
3046 | |
3047 def test_create_binary(self): | |
3048 binary = ''.join(map(chr, range(256))) | |
3049 encoded = 'data:application/octet-stream;base64,' + base64.b64encode(binary) | |
3050 tags = { | |
3051 'PatientName' : 'Jodogne', | |
3052 '8899-8899' : encoded | |
3053 } | |
3054 | |
3055 i = DoPost(_REMOTE, '/tools/create-dicom', | |
3056 json.dumps({ | |
266 | 3057 'Tags' : tags, |
3058 'PrivateCreator' : 'TestBinary', | |
47 | 3059 })) |
3060 | |
3061 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip()) | |
3062 self.assertEqual(binary, DoGet(_REMOTE, '/instances/%s/content/8899-8899' % i['ID']).strip()) | |
3063 | |
3064 i = DoPost(_REMOTE, '/tools/create-dicom', | |
3065 json.dumps({ | |
3066 'InterpretBinaryTags' : False, | |
266 | 3067 'Tags' : tags, |
3068 'PrivateCreator' : 'TestBinary', | |
47 | 3069 })) |
3070 | |
3071 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip()) | |
3072 self.assertEqual(encoded, DoGet(_REMOTE, '/instances/%s/content/8899-8899' % i['ID'])[0:-1]) | |
48
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3073 |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3074 |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3075 def test_patient_ids_collision(self): |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3076 # Upload 3 instances from 3 different studies, but with the |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3077 # same PatientID |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3078 for i in range(3): |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3079 UploadInstance(_REMOTE, 'PatientIdsCollision/Image%d.dcm' % (i + 1)) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3080 |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3081 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3082 'Query' : { 'PatientName' : '*' }}) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3083 self.assertEqual(1, len(a)) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3084 self.assertEqual('COMMON', DoGet(_REMOTE, '/patients/%s' % a[0]) ['MainDicomTags']['PatientID']) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3085 |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3086 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3087 'CaseSensitive' : True, |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3088 'Query' : { 'PatientName' : 'FOO\\HELLO' }}) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3089 self.assertEqual(2, len(a)) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3090 |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3091 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3092 'CaseSensitive' : False, |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3093 'Query' : { 'PatientName' : 'Foo' }}) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3094 self.assertEqual(1, len(a)) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3095 self.assertEqual('FOO^SERIES', DoGet(_REMOTE, '/series/%s/study' % a[0]) ['MainDicomTags']['StudyDescription']) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3096 self.assertEqual('FOO', DoGet(_REMOTE, '/series/%s/study' % a[0]) ['PatientMainDicomTags']['PatientName']) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3097 self.assertEqual('COMMON', DoGet(_REMOTE, '/series/%s/study' % a[0]) ['PatientMainDicomTags']['PatientID']) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3098 |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3099 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3100 'Query' : { 'PatientName' : '*' }}) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3101 self.assertEqual(3, len(a)) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3102 d = map(lambda x: DoGet(_REMOTE, '/studies/%s' % x) ['MainDicomTags']['StudyDescription'], a) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3103 self.assertTrue('FOO^SERIES' in d) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3104 self.assertTrue('HELLO^SERIES' in d) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3105 self.assertTrue('WORLD^SERIES' in d) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3106 |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3107 d = map(lambda x: DoGet(_REMOTE, '/studies/%s' % x) ['PatientMainDicomTags']['PatientID'], a) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3108 self.assertEqual(1, len(set(d))) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3109 self.assertEqual('COMMON', d[0]) |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3110 |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3111 for i in a: |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3112 d = DoGet(_REMOTE, '/studies/%s' % i) ['MainDicomTags']['StudyDescription'] |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3113 p = DoGet(_REMOTE, '/studies/%s' % i) ['PatientMainDicomTags']['PatientName'] |
e4352463ff74
test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
47
diff
changeset
|
3114 self.assertEqual('%s^SERIES' % p, d) |
49
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3115 |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3116 |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3117 def test_bitbucket_issue_4(self): |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3118 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm') |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3119 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0002.dcm') |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3120 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0003.dcm') |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3121 UploadInstance(_REMOTE, 'Formats/Jpeg.dcm') |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3122 UploadInstance(_REMOTE, 'Formats/JpegLossless.dcm') |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3123 UploadInstance(_REMOTE, 'Formats/Rle.dcm') |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3124 |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3125 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3126 self.assertEqual(6, len(DoGet(_REMOTE, '/instances'))) |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3127 |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3128 p = DoGet(_REMOTE, '/patients') |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3129 self.assertEqual(2, len(p)) |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3130 i1 = map(lambda x: x['ID'], DoGet(_REMOTE, '/patients/%s/instances' % p[0])) |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3131 i2 = map(lambda x: x['ID'], DoGet(_REMOTE, '/patients/%s/instances' % p[1])) |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3132 self.assertEqual(3, len(i1)) |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3133 self.assertEqual(3, len(i2)) |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3134 |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3135 j = DoPost(_REMOTE, '/modalities/orthanctest/store', i2[0:1] + i1 + i2[1:3]) |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3136 |
e7f9b8199545
test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
3137 self.assertEqual(6, len(DoGet(_LOCAL, '/instances'))) |
50
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3138 |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3139 |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3140 def test_create_sequence(self): |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3141 i = DoPost(_REMOTE, '/tools/create-dicom', |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3142 json.dumps({ |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3143 'Tags' : { |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3144 'SpecificCharacterSet': 'ISO_IR 100', # Encode using Latin1 |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3145 'PatientName': 'Jodogne^', |
51
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3146 'ReferencedStudySequence': GenerateTestSequence(), |
50
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3147 } |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3148 }))['ID'] |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3149 |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3150 self.assertEqual('Jodogne^', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i)) |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3151 self.assertEqual('Hello^', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/StudyDescription' % i)) |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3152 self.assertEqual('Toto', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/ReferencedStudySequence/0/StudyDescription' % i)) |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3153 self.assertEqual('Tata', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/ReferencedStudySequence/1/StudyDescription' % i)) |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3154 self.assertEqual(u'Sébastien^'.encode('latin-1'), |
8de63d56cf11
test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
49
diff
changeset
|
3155 DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/1/StudyDescription' % i)) |
51
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3156 |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3157 |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3158 def test_modify_sequence(self): |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3159 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID'] |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3160 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence' % i)) |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3161 |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3162 j = DoPost(_REMOTE, '/instances/%s/modify' % i, |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3163 json.dumps({ |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3164 "Replace" : { |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3165 "PatientName" : "hello", |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3166 'ReferencedStudySequence': GenerateTestSequence(), |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3167 }, |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3168 }), |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3169 'application/json') |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3170 j = DoPost(_REMOTE, '/instances', j, 'application/dicom')['ID'] |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3171 DoDelete(_REMOTE, '/instances/%s' % i) |
264a20a0276d
test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
50
diff
changeset
|
3172 |
52 | 3173 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence' % j))) |
3174 | |
3175 | |
3176 def test_compression(self): | |
3177 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] | |
3178 | |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3179 aa = DoGet(_REMOTE, '/instances/%s/attachments/' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3180 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3181 # This file has *no* pixel data, so "dicom-until-pixel-data" is not stored |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3182 self.assertEqual(1, len(aa)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3183 self.assertTrue('dicom' in aa) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3184 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3185 self.assertEqual(2, len(aa)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3186 self.assertTrue('dicom' in aa) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3187 self.assertTrue('dicom-as-json' in aa) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3188 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3189 data = DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/data' % i)[1] |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3190 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3191 # If "StorageCompression" is enabled in the Orthanc to be |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3192 # tested, uncompress the attachment before running the test |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3193 if DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % i) != 0: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3194 DoPost(_REMOTE, '/instances/%s/attachments/dicom/uncompress' % i) |
52 | 3195 |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3196 cs = int(DoGet(_REMOTE, '/statistics')['TotalDiskSize']) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3197 us = int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3198 size = int(DoGet(_REMOTE, '/instances/%s/attachments/dicom/size' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3199 md5 = DoGet(_REMOTE, '/instances/%s/attachments/dicom/md5' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3200 self.assertEqual(data, DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/compressed-data' % i)[1]) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3201 self.assertEqual(md5, DoGet(_REMOTE, '/instances/%s/attachments/dicom/compressed-md5' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3202 self.assertEqual(size, int(DoGet(_REMOTE, '/instances/%s/attachments/dicom/compressed-size' % i))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3203 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3204 ops = DoGet(_REMOTE, '/instances/%s/attachments/dicom' % i) |
52 | 3205 self.assertTrue('compress' in ops) |
3206 self.assertTrue('uncompress' in ops) | |
3207 self.assertTrue('is-compressed' in ops) | |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3208 self.assertEqual(0, DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3209 DoPost(_REMOTE, '/instances/%s/attachments/dicom/verify-md5' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3210 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3211 # Re-compress the attachment |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3212 DoPost(_REMOTE, '/instances/%s/attachments/dicom/compress' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3213 DoPost(_REMOTE, '/instances/%s/attachments/dicom/verify-md5' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3214 self.assertEqual(1, DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3215 self.assertGreater(cs, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3216 self.assertEqual(us, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3217 self.assertGreater(len(data), len(DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/compressed-data' % i)[1])) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3218 self.assertGreater(size, int(DoGet(_REMOTE, '/instances/%s/attachments/dicom/compressed-size' % i))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3219 self.assertEqual(size, int(DoGet(_REMOTE, '/instances/%s/attachments/dicom/size' % i))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3220 self.assertEqual(md5, DoGet(_REMOTE, '/instances/%s/attachments/dicom/md5' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3221 self.assertNotEqual(md5, DoGet(_REMOTE, '/instances/%s/attachments/dicom/compressed-md5' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3222 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3223 DoPost(_REMOTE, '/instances/%s/attachments/dicom/uncompress' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3224 DoPost(_REMOTE, '/instances/%s/attachments/dicom/verify-md5' % i) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3225 self.assertEqual(0, DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3226 self.assertEqual(data, DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/compressed-data' % i)[1]) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3227 self.assertEqual(size, int(DoGet(_REMOTE, '/instances/%s/attachments/dicom/compressed-size' % i))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3228 self.assertEqual(size, int(DoGet(_REMOTE, '/instances/%s/attachments/dicom/size' % i))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3229 self.assertEqual(md5, DoGet(_REMOTE, '/instances/%s/attachments/dicom/md5' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3230 self.assertEqual(md5, DoGet(_REMOTE, '/instances/%s/attachments/dicom/compressed-md5' % i)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3231 self.assertEqual(cs, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3232 self.assertEqual(us, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) |
53 | 3233 |
3234 | |
3235 def test_ordered_slices(self): | |
3236 i = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID'] | |
3237 s = DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries'] | |
3238 o = DoGet(_REMOTE, '/series/%s/ordered-slices' % s) | |
3239 self.assertEqual('Sequence', o['Type']) | |
3240 self.assertEqual(1, len(o['Dicom'])) | |
3241 self.assertEqual('/instances/9e05eb0a-18b6268c-e0d36085-8ddab517-3b5aec02/file', o['Dicom'][0]) | |
3242 self.assertEqual(76, len(o['Slices'])) | |
3243 for j in range(76): | |
3244 self.assertEqual('/instances/9e05eb0a-18b6268c-e0d36085-8ddab517-3b5aec02/frames/%d' % j, o['Slices'][j]) | |
3245 | |
68 | 3246 self.assertEqual(1, len(o['SlicesShort'])) |
3247 self.assertEqual('9e05eb0a-18b6268c-e0d36085-8ddab517-3b5aec02', o['SlicesShort'][0][0]) | |
3248 self.assertEqual(0, o['SlicesShort'][0][1]) | |
3249 self.assertEqual(76, o['SlicesShort'][0][2]) | |
3250 | |
53 | 3251 i = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID'] |
3252 j = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0002.dcm')['ID'] | |
3253 k = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0003.dcm')['ID'] | |
3254 s = DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries'] | |
3255 o = DoGet(_REMOTE, '/series/%s/ordered-slices' % s) | |
3256 | |
3257 self.assertEqual('Volume', o['Type']) | |
3258 self.assertEqual(3, len(o['Dicom'])) | |
3259 self.assertEqual(3, len(o['Slices'])) | |
3260 self.assertEqual('/instances/%s/file' % i, o['Dicom'][2]) | |
3261 self.assertEqual('/instances/%s/file' % j, o['Dicom'][1]) | |
3262 self.assertEqual('/instances/%s/file' % k, o['Dicom'][0]) | |
3263 self.assertEqual('/instances/%s/frames/0' % i, o['Slices'][2]) | |
3264 self.assertEqual('/instances/%s/frames/0' % j, o['Slices'][1]) | |
3265 self.assertEqual('/instances/%s/frames/0' % k, o['Slices'][0]) | |
3266 | |
68 | 3267 self.assertEqual(3, len(o['SlicesShort'])) |
3268 self.assertEqual(k, o['SlicesShort'][0][0]) | |
3269 self.assertEqual(0, o['SlicesShort'][0][1]) | |
3270 self.assertEqual(1, o['SlicesShort'][0][2]) | |
3271 self.assertEqual(j, o['SlicesShort'][1][0]) | |
3272 self.assertEqual(0, o['SlicesShort'][1][1]) | |
3273 self.assertEqual(1, o['SlicesShort'][1][2]) | |
3274 self.assertEqual(i, o['SlicesShort'][2][0]) | |
3275 self.assertEqual(0, o['SlicesShort'][2][1]) | |
3276 self.assertEqual(1, o['SlicesShort'][2][2]) | |
3277 | |
53 | 3278 i = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')['ID'] |
3279 j = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0002.dcm')['ID'] | |
3280 s = DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries'] | |
3281 o = DoGet(_REMOTE, '/series/%s/ordered-slices' % s) | |
3282 | |
3283 self.assertEqual('Sequence', o['Type']) | |
3284 self.assertEqual(2, len(o['Dicom'])) | |
3285 self.assertEqual(2, len(o['Slices'])) | |
3286 self.assertEqual('/instances/%s/file' % i, o['Dicom'][0]) | |
3287 self.assertEqual('/instances/%s/file' % j, o['Dicom'][1]) | |
3288 self.assertEqual('/instances/%s/frames/0' % i, o['Slices'][0]) | |
3289 self.assertEqual('/instances/%s/frames/0' % j, o['Slices'][1]) | |
54
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3290 |
68 | 3291 self.assertEqual(2, len(o['SlicesShort'])) |
3292 self.assertEqual(i, o['SlicesShort'][0][0]) | |
3293 self.assertEqual(0, o['SlicesShort'][0][1]) | |
3294 self.assertEqual(1, o['SlicesShort'][0][2]) | |
3295 self.assertEqual(j, o['SlicesShort'][1][0]) | |
3296 self.assertEqual(0, o['SlicesShort'][1][1]) | |
3297 self.assertEqual(1, o['SlicesShort'][1][2]) | |
3298 | |
3299 | |
54
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3300 |
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3301 def test_incoming_movescu_accession(self): |
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3302 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3303 |
137
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
3304 # No matching patient, so no job is created |
54
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3305 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) |
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3306 CallMoveScu([ '--study', '-k', '0008,0052=STUDY', '-k', 'AccessionNumber=nope' ]) |
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3307 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) |
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3308 CallMoveScu([ '--study', '-k', '0008,0052=PATIENT', '-k', 'AccessionNumber=A10003245599' ]) |
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3309 self.assertEqual(0, len(DoGet(_LOCAL, '/patients'))) |
137
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
3310 |
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
3311 # 1 Matching patient, track the job |
138 | 3312 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([ |
3313 '--study', | |
3314 '-k', '0008,0052=STUDY', | |
3315 '-k', 'AccessionNumber=A10003245599' | |
3316 ]))) | |
137
412d5f70447e
testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
136
diff
changeset
|
3317 |
54
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3318 self.assertEqual(1, len(DoGet(_LOCAL, '/patients'))) |
c5f8a6b0d85e
test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
3319 |
55 | 3320 |
3321 def test_dicom_to_json(self): | |
3322 i = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID'] | |
60
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3323 j = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID'] |
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3324 |
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3325 t = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i) |
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3326 with open(GetDatabasePath('PrivateMDNTagsSimplify.json'), 'r') as f: |
80
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
3327 self.assertTrue(CompareTags(t, json.loads(f.read()), [ |
123 | 3328 # Tags for compatibility with DCMTK 3.6.0 |
3329 'RETIRED_OtherPatientIDs', | |
3330 'OtherPatientIDs', | |
3331 'ACR_NEMA_2C_VariablePixelDataGroupLength', | |
80
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
3332 ])) |
55 | 3333 |
3334 t = DoGet(_REMOTE, '/instances/%s/tags' % i) | |
3335 with open(GetDatabasePath('PrivateMDNTagsFull.json'), 'r') as f: | |
87
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3336 self.assertTrue(CompareTags(t, json.loads(f.read()), [ |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3337 ])) |
55 | 3338 |
60
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3339 t = DoGet(_REMOTE, '/instances/%s/tags?simplify' % j) |
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3340 with open(GetDatabasePath('PrivateTagsSimplify.json'), 'r') as f: |
80
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
3341 self.assertTrue(CompareTags(t, json.loads(f.read()), [ |
8466dbfcb22b
fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
79
diff
changeset
|
3342 ])) |
60
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3343 |
372
e9b03d8f3b78
fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
369
diff
changeset
|
3344 |
e9b03d8f3b78
fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
369
diff
changeset
|
3345 # NB: To get the actual value of the "tags" JSON file, use the |
e9b03d8f3b78
fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
369
diff
changeset
|
3346 # following command: |
e9b03d8f3b78
fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
369
diff
changeset
|
3347 # $ curl http://alice:orthanctest@localhost:8042/instances/d29ead49-43e8601d-72f1e922-7de676ee-ea77c2b4/tags |
60
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3348 t = DoGet(_REMOTE, '/instances/%s/tags' % j) |
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3349 with open(GetDatabasePath('PrivateTagsFull.json'), 'r') as f: |
cd3c7f70f139
test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
3350 a = json.loads(f.read()) |
378
a4b8450a1158
fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
377
diff
changeset
|
3351 |
a4b8450a1158
fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
377
diff
changeset
|
3352 # Starting with Orthanc 1.9.1, the DICOM-as-JSON |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3353 # reports are truncated starting with PixelData |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3354 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3355 self.assertFalse('7fe1,0010' in t) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3356 self.assertFalse('7fe1,1001' in t) |
378
a4b8450a1158
fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
377
diff
changeset
|
3357 del a['7fe1,0010'] |
a4b8450a1158
fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
377
diff
changeset
|
3358 del a['7fe1,1001'] |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3359 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3360 self.assertTrue('7fe1,0010' in t) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3361 self.assertTrue('7fe1,1001' in t) |
378
a4b8450a1158
fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
377
diff
changeset
|
3362 |
65
09fc27e0899a
patch for testing windows builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
64
diff
changeset
|
3363 aa = json.dumps(a).replace('2e+022', '2e+22') |
372
e9b03d8f3b78
fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
369
diff
changeset
|
3364 tt = (json.dumps(t) |
e9b03d8f3b78
fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
369
diff
changeset
|
3365 .replace('2e+022', '2e+22') |
e9b03d8f3b78
fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
369
diff
changeset
|
3366 # The "IllegalPrivatePixelSequence" tag was introduced in DCMTK 3.6.6 dictionary |
e9b03d8f3b78
fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
369
diff
changeset
|
3367 .replace('IllegalPrivatePixelSequence', 'Unknown Tag & Data')) |
65
09fc27e0899a
patch for testing windows builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
64
diff
changeset
|
3368 self.assertEqual(aa, tt) |
57 | 3369 |
3370 | |
3371 def test_batch_archive(self): | |
3372 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
3373 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm') | |
3374 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
3375 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0002.dcm') | |
3376 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm') | |
3377 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0002.dcm') | |
3378 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
3379 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm') | |
3380 | |
3381 s = DoPost(_REMOTE, '/tools/create-archive', [ ]) | |
3382 z = zipfile.ZipFile(StringIO(s), "r") | |
3383 self.assertEqual(0, len(z.namelist())) | |
3384 | |
3385 # One patient | |
3386 s = DoPost(_REMOTE, '/tools/create-archive', [ 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' ]) | |
3387 z = zipfile.ZipFile(StringIO(s), "r") | |
3388 self.assertEqual(4, len(z.namelist())) | |
3389 | |
3390 # One patient + twice its study + one series from other patient | |
3391 s = DoPost(_REMOTE, '/tools/create-archive', [ | |
3392 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17', | |
3393 '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918', | |
3394 '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0' | |
3395 ]) | |
3396 z = zipfile.ZipFile(StringIO(s), "r") | |
3397 self.assertEqual(6, len(z.namelist())) | |
3398 | |
3399 # One patient + one series + one instance | |
3400 s = DoPost(_REMOTE, '/tools/create-archive', [ | |
3401 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17', | |
3402 '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0', | |
3403 '1d429ccb-bdcc78a1-7d129d6a-ba4966ed-fe4dbd87' | |
3404 ]) | |
3405 z = zipfile.ZipFile(StringIO(s), "r") | |
3406 self.assertEqual(7, len(z.namelist())) | |
59
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3407 |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
3408 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
3409 s = DoGet(_REMOTE, '/tools/create-archive?resources=ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17,1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0,1d429ccb-bdcc78a1-7d129d6a-ba4966ed-fe4dbd87') |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
3410 z = zipfile.ZipFile(StringIO(s), "r") |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
3411 self.assertEqual(7, len(z.namelist())) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
3412 |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
3413 |
59
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3414 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3415 def test_decode_brainix_as_jpeg(self): |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3416 i = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID'] |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3417 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3418 j = GetImage(_REMOTE, '/instances/%s/preview' % i) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3419 self.assertEqual('PNG', j.format) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3420 self.assertEqual(j.size[0], 256) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3421 self.assertEqual(j.size[1], 256) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3422 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3423 j = GetImage(_REMOTE, '/instances/%s/preview' % i, headers = { 'Accept' : '*/*' }) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3424 self.assertEqual('PNG', j.format) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3425 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3426 j = GetImage(_REMOTE, '/instances/%s/preview' % i, headers = { 'Accept' : 'image/*' }) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3427 self.assertEqual('PNG', j.format) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3428 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3429 j = GetImage(_REMOTE, '/instances/%s/preview' % i, headers = { 'Accept' : 'image/png' }) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3430 self.assertEqual('PNG', j.format) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3431 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3432 j = GetImage(_REMOTE, '/instances/%s/preview' % i, headers = { 'Accept' : 'image/jpeg' }) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3433 self.assertEqual('JPEG', j.format) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3434 self.assertEqual(j.size[0], 256) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3435 self.assertEqual(j.size[1], 256) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3436 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3437 a = len(DoGet(_REMOTE, '/instances/%s/preview?quality=50' % i, headers = { 'Accept' : 'image/jpeg' })) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3438 b = len(DoGet(_REMOTE, '/instances/%s/preview' % i, headers = { 'Accept' : 'image/jpeg' })) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3439 self.assertLess(a, b) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3440 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3441 j = GetImage(_REMOTE, '/instances/%s/image-uint8' % i, headers = { 'Accept' : 'image/jpeg' }) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3442 self.assertEqual('JPEG', j.format) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3443 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3444 # 16bit encoding is not supported with JPEG |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3445 self.assertRaises(Exception, lambda: GetImage(_REMOTE, '/instances/%s/image-uint16' % i, headers = { 'Accept' : 'image/jpeg' })) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3446 self.assertRaises(Exception, lambda: GetImage(_REMOTE, '/instances/%s/image-int16' % i, headers = { 'Accept' : 'image/jpeg' })) |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3447 |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3448 # No matching content type |
84378ada15ab
test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
58
diff
changeset
|
3449 self.assertRaises(Exception, lambda: GetImage(_REMOTE, '/instances/%s/preview' % i, headers = { 'Accept' : 'application/pdf' })) |
69
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3450 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3451 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3452 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3453 def test_media_encodings(self): |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3454 ascii = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID'] |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3455 latin1 = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID'] |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3456 latin2 = UploadInstance(_REMOTE, 'MarekLatin2.dcm')['ID'] |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3457 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3458 tmp = DoPost(_REMOTE, '/tools/create-media', [ascii,latin1,latin2]) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3459 z = zipfile.ZipFile(StringIO(tmp), "r") |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3460 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3461 self.assertEqual(4, len(z.namelist())) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3462 self.assertTrue('IMAGES/IM0' in z.namelist()) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3463 self.assertTrue('IMAGES/IM1' in z.namelist()) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3464 self.assertTrue('IMAGES/IM2' in z.namelist()) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3465 self.assertTrue('DICOMDIR' in z.namelist()) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3466 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3467 try: |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3468 os.remove('/tmp/DICOMDIR') |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3469 except: |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3470 # The file does not exist |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3471 pass |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3472 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3473 z.extract('DICOMDIR', '/tmp') |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3474 a = subprocess.check_output([ FindExecutable('dciodvfy'), '/tmp/DICOMDIR' ], |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3475 stderr = subprocess.STDOUT).split('\n') |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3476 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3477 a = subprocess.check_output([ FindExecutable('dcentvfy'), '/tmp/DICOMDIR' ], |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3478 stderr = subprocess.STDOUT).split('\n') |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3479 self.assertEqual(1, len(a)) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3480 self.assertEqual('', a[0]) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3481 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3482 a = subprocess.check_output([ FindExecutable('dcm2xml'), '/tmp/DICOMDIR' ]) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3483 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081908590448738', a) != None) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3484 self.assertTrue(re.search('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114333648576', a) != None) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3485 self.assertTrue(re.search('1.2.826.0.1.3680043.2.1569.1.4.323026757.1700.1399452091.57', a) != None) |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3486 |
83fd88230097
test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
68
diff
changeset
|
3487 os.remove('/tmp/DICOMDIR') |
71
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3488 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3489 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3490 def test_findscu_counters(self): |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3491 UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0001.dcm') |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3492 UploadInstance(_REMOTE, 'Comunix/Pet/IM-0001-0001.dcm') |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3493 UploadInstance(_REMOTE, 'Comunix/Pet/IM-0001-0002.dcm') |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3494 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3495 i = CallFindScu([ '-k', '0008,0052=PATIENT', '-k', 'NumberOfPatientRelatedStudies' ]) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3496 s = re.findall('\(0020,1200\).*?\[(.*?)\]', i) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3497 self.assertEqual(1, len(s)) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3498 self.assertTrue('1 ' in s) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3499 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3500 i = CallFindScu([ '-k', '0008,0052=PATIENT', '-k', 'NumberOfPatientRelatedSeries' ]) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3501 s = re.findall('\(0020,1202\).*?\[(.*?)\]', i) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3502 self.assertEqual(1, len(s)) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3503 self.assertTrue('2 ' in s) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3504 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3505 i = CallFindScu([ '-k', '0008,0052=PATIENT', '-k', 'NumberOfPatientRelatedInstances' ]) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3506 s = re.findall('\(0020,1204\).*?\[(.*?)\]', i) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3507 self.assertEqual(1, len(s)) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3508 self.assertTrue('3 ' in s) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3509 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3510 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'NumberOfStudyRelatedSeries' ]) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3511 s = re.findall('\(0020,1206\).*?\[(.*?)\]', i) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3512 self.assertEqual(1, len(s)) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3513 self.assertTrue('2 ' in s) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3514 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3515 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'NumberOfStudyRelatedInstances' ]) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3516 s = re.findall('\(0020,1208\).*?\[(.*?)\]', i) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3517 self.assertEqual(1, len(s)) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3518 self.assertTrue('3 ' in s) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3519 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3520 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', 'NumberOfSeriesRelatedInstances' ]) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3521 s = re.findall('\(0020,1209\).*?\[(.*?)\]', i) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3522 self.assertEqual(2, len(s)) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3523 self.assertTrue('1 ' in s) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3524 self.assertTrue('2 ' in s) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3525 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3526 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'ModalitiesInStudy' ]) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3527 s = re.findall('\(0008,0061\).*?\[(.*?)\]', i) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3528 self.assertEqual(1, len(s)) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3529 t = map(lambda x: x.strip(), s[0].split('\\')) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3530 self.assertTrue('PT' in t) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3531 self.assertTrue('CT' in t) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3532 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3533 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'SOPClassesInStudy' ]) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3534 s = re.findall('\(0008,0062\).*?\[(.*?)\]', i) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3535 self.assertEqual(1, len(s)) |
176
48cc188ffb09
strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents:
175
diff
changeset
|
3536 t = map(lambda x: x.strip('\x00'), s[0].split('\\')) |
71
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3537 self.assertTrue('1.2.840.10008.5.1.4.1.1.2' in t) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3538 self.assertTrue('1.2.840.10008.5.1.4.1.1.128' in t) |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3539 |
48740070cbf1
TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
3540 |
78
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3541 def test_decode_transfer_syntax(self): |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3542 def Check(t, md5): |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3543 i = UploadInstance(_REMOTE, 'TransferSyntaxes/%s.dcm' % t)['ID'] |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3544 |
89
74b7b9aed5f8
test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
3545 if t != '1.2.840.10008.1.2': # This file has no meta header |
74b7b9aed5f8
test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
3546 transferSyntax = DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i) |
74b7b9aed5f8
test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
3547 self.assertEqual(t, transferSyntax) |
74b7b9aed5f8
test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
3548 |
78
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3549 if md5 == None: |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3550 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/preview' % i)) |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3551 else: |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3552 m = ComputeMD5(DoGet(_REMOTE, '/instances/%s/preview' % i)) |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3553 self.assertEqual(m, md5) |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3554 |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3555 Check('1.2.840.10008.1.2.1', 'fae08d5415c4c0cd2cdbae4522408631') |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3556 Check('1.2.840.10008.1.2.2', 'f3d9784768b8feb54d6a50b6d5c37682') |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3557 Check('1.2.840.10008.1.2.4.51', 'ccbe75909fe5c9f7361b48416a53fc41') |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3558 Check('1.2.840.10008.1.2.4.57', '7bbefe11d976b1be4e568915c6a82fc3') |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3559 Check('1.2.840.10008.1.2.4.70', '7132cfbc457305b04b59787030c785d2') |
384 | 3560 Check('1.2.840.10008.1.2.5', '6ff51ae525d362e0d04f550a64075a0e') # RLE, supported since Orthanc 1.0.1 |
3561 Check('1.2.840.10008.1.2', 'd54aed9f67a100984b42942cc2e9939b') | |
3562 | |
3563 # The 3 checks below don't work on big-endian | |
3564 Check('1.2.840.10008.1.2.4.50', '496326046974eea718dbc16b997c646b') # TODO - Doesn't work with GDCM 3.0.7 alone | |
78
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3565 Check('1.2.840.10008.1.2.4.80', '6ff51ae525d362e0d04f550a64075a0e') |
b89af51797ff
test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
3566 Check('1.2.840.10008.1.2.4.81', '801579ae7cbf28e604ea74f2c99fa2ca') |
299
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
3567 |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
3568 # JPEG2k image, not supported without GDCM plugin |
304 | 3569 if not HasGdcmPlugin(_REMOTE): |
299
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
3570 Check('1.2.840.10008.1.2.4.90', None) |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
3571 Check('1.2.840.10008.1.2.4.91', None) |
79 | 3572 |
3573 | |
3574 def test_raw_frame(self): | |
3575 s = UploadInstance(_REMOTE, 'Issue22.dcm')['ID'] | |
3576 self.assertEqual(24, len(DoGet(_REMOTE, '/instances/%s/frames' % s))) | |
3577 a = DoGet(_REMOTE, '/instances/%s/frames/0/raw' % s) | |
3578 self.assertEqual(512 * 512 * 2, len(a)) | |
3579 self.assertEqual(512 * 512 * 2, len(DoGet(_REMOTE, '/instances/%s/frames/23/raw' % s))) | |
3580 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/24/raw' % s)) | |
3581 self.assertEqual('1914287dc4d958eca21fdaacfb3482fa', ComputeMD5(a)) | |
3582 | |
3583 s = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID'] | |
3584 self.assertEqual(76, len(DoGet(_REMOTE, '/instances/%s/frames' % s))) | |
3585 self.assertEqual(186274, len(DoGet(_REMOTE, '/instances/%s/frames/0/raw' % s))) | |
3586 self.assertEqual(189424, len(DoGet(_REMOTE, '/instances/%s/frames/75/raw' % s))) | |
3587 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/76/raw' % s)) | |
3588 im = GetImage(_REMOTE, '/instances/%s/frames/0/raw' % s) | |
3589 self.assertEqual("L", im.mode) | |
3590 self.assertEqual(512, im.size[0]) | |
3591 self.assertEqual(512, im.size[1]) | |
3592 | |
3593 # Test an image with 2 JPEG frames spread over multiple fragments | |
3594 s = UploadInstance(_REMOTE, 'LenaTwiceWithFragments.dcm')['ID'] | |
3595 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/frames' % s))) | |
3596 a = DoGet(_REMOTE, '/instances/%s/frames/0/raw' % s) | |
3597 b = DoGet(_REMOTE, '/instances/%s/frames/1/raw' % s) | |
3598 self.assertEqual(69214, len(a)) | |
3599 self.assertEqual(ComputeMD5(a), ComputeMD5(b)) | |
3600 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/2/raw' % s)) | |
3601 im = GetImage(_REMOTE, '/instances/%s/frames/0/raw' % s) | |
3602 self.assertEqual("RGB", im.mode) | |
3603 self.assertEqual(512, im.size[0]) | |
3604 self.assertEqual(512, im.size[1]) | |
323 | 3605 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % s) # TODO - Doesn't work with GDCM 3.0.7 alone |
79 | 3606 self.assertEqual("RGB", im.mode) |
3607 self.assertEqual(512, im.size[0]) | |
3608 self.assertEqual(512, im.size[1]) | |
81 | 3609 |
3610 | |
3611 | |
3612 def test_rest_movescu(self): | |
3613 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
3614 | |
3615 # Upload 4 instances | |
3616 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
3617 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm') | |
3618 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm') | |
3619 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
3620 | |
3621 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
3622 for p in DoGet(_REMOTE, '/patients'): | |
3623 DoPost(_REMOTE, '/modalities/orthanctest/store', p) | |
3624 DoDelete(_REMOTE, '/patients/%s' % p) | |
3625 | |
3626 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
3627 | |
482
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3628 # Move instance Brainix/Flair/IM-0001-0001.dcm |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3629 DoPost(_REMOTE, '/modalities/orthanctest/move', { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3630 'Level' : 'Instance', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3631 'Resources' : [ |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3632 { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3633 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3634 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3635 'SOPInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3636 } |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3637 ]}) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3638 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3639 # Move series Brainix/Flair/* |
81 | 3640 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
3641 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | |
3642 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) | |
3643 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
3644 | |
482
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3645 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1): |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3646 # Reset and test asynchronous C-Move at instance level |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3647 for p in DoGet(_REMOTE, '/patients'): |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3648 DoDelete(_REMOTE, '/patients/%s' % p) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3649 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3650 DoPost(_REMOTE, '/modalities/orthanctest/move', { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3651 'Level' : 'Instance', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3652 'Resources' : [ |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3653 { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3654 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3655 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3656 'SOPInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3657 } |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3658 ], |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3659 'Asynchronous': True |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3660 }) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3661 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3662 job = MonitorJob2(_REMOTE, lambda: DoPost |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3663 (_REMOTE, '/modalities/orthanctest/move', { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3664 'Level' : 'Instance', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3665 'Resources' : [ |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3666 { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3667 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3668 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3669 'SOPInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3670 } |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3671 ], |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3672 'Asynchronous': True |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3673 })) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3674 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3675 self.assertNotEqual(None, job) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3676 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3677 # check the job was successfull |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3678 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3679 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3680 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3681 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3682 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3683 # check the job content |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3684 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content'] |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3685 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', jobContent['Query'][0]['0020,000d']) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3686 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', jobContent['Query'][0]['0020,000e']) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3687 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549', jobContent['Query'][0]['0008,0018']) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3688 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3689 # Reset and test synchronous C-Move at series level |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3690 for p in DoGet(_REMOTE, '/patients'): |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3691 DoDelete(_REMOTE, '/patients/%s' % p) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3692 |
81 | 3693 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Series', |
3694 'Resources' : [ | |
3695 { | |
3696 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', | |
3697 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', | |
3698 } | |
3699 ]}) | |
3700 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
3701 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | |
3702 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) | |
3703 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) | |
3704 | |
482
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3705 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1): |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3706 # Reset and test asynchronous C-Move at series level with additional PatientID filter |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3707 for p in DoGet(_REMOTE, '/patients'): |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3708 DoDelete(_REMOTE, '/patients/%s' % p) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3709 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3710 job = MonitorJob2(_REMOTE, lambda: DoPost |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3711 (_REMOTE, '/modalities/orthanctest/move', { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3712 'Level' : 'Series', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3713 'Resources' : [ |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3714 { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3715 'PatientID' : '5Yp0E', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3716 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3717 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3718 } |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3719 ], |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3720 'Asynchronous': True |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3721 })) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3722 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3723 self.assertNotEqual(None, job) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3724 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3725 # check the job was successfull |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3726 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3727 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3728 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3729 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3730 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3731 # check the job content |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3732 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content'] |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3733 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', jobContent['Query'][0]['0020,000d']) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3734 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', jobContent['Query'][0]['0020,000e']) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3735 self.assertEqual('5Yp0E', jobContent['Query'][0]['0010,0020']) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3736 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3737 # Move series Brainix/Epi/* |
81 | 3738 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Series', |
3739 'Resources' : [ | |
3740 { | |
3741 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', | |
3742 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314125550', | |
3743 } | |
3744 ]}) | |
3745 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | |
3746 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | |
3747 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) | |
3748 self.assertEqual(3, len(DoGet(_REMOTE, '/instances'))) | |
3749 | |
482
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3750 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1): |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3751 # Move study Knee asynchronously |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3752 job = MonitorJob2(_REMOTE, lambda: DoPost |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3753 (_REMOTE, '/modalities/orthanctest/move', { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3754 'Level' : 'Study', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3755 'Resources' : [ |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3756 { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3757 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881' |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3758 } |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3759 ], |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3760 'Asynchronous': True |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3761 })) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3762 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3763 self.assertNotEqual(None, job) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3764 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3765 # check the job was successfull |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3766 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3767 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3768 self.assertEqual(3, len(DoGet(_REMOTE, '/series'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3769 self.assertEqual(4, len(DoGet(_REMOTE, '/instances'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3770 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3771 # check the job content |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3772 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content'] |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3773 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', jobContent['Query'][0]['0020,000d']) |
81 | 3774 |
3775 # Reset | |
3776 for p in DoGet(_REMOTE, '/patients'): | |
3777 DoDelete(_REMOTE, '/patients/%s' % p) | |
3778 | |
3779 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | |
3780 | |
3781 | |
482
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3782 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1): |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3783 # Move all at once asynchronously at PatientLevel |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3784 job = MonitorJob2(_REMOTE, lambda: DoPost(_REMOTE, '/modalities/orthanctest/move', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3785 { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3786 'Level' : 'Patient', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3787 'Resources' : [ |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3788 { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3789 'PatientID' : '5Yp0E', |
81 | 3790 }, |
482
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3791 { |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3792 'PatientID': '887', |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3793 'PatientName' : 'KNEE', |
81 | 3794 } |
482
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3795 ], |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3796 'Synchronous': False |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3797 })) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3798 |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3799 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3800 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3801 self.assertEqual(3, len(DoGet(_REMOTE, '/series'))) |
535e651e70a2
added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents:
473
diff
changeset
|
3802 self.assertEqual(4, len(DoGet(_REMOTE, '/instances'))) |
81 | 3803 |
86
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3804 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3805 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3806 def test_reconstruct_json(self): |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3807 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3808 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3809 instance = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3810 first = DoGet(_REMOTE, '/instances/%s/tags' % instance) |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3811 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3812 self.assertEqual('TWINOW', first['0008,1010']['Value']) |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3813 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3814 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3815 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3816 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3817 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance))) |
86
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3818 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3819 # Cannot delete the "DICOM" attachment |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3820 self.assertRaises(Exception, lambda: DoDelete(_REMOTE, '/instances/%s/attachments/dicom' % instance)) |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3821 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3822 # Can delete the "DICOM as JSON" attachment |
392
5cbcb4a83b41
fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
391
diff
changeset
|
3823 if not IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
5cbcb4a83b41
fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
391
diff
changeset
|
3824 r = DoDelete(_REMOTE, '/instances/%s/attachments/dicom-as-json' % instance) |
5cbcb4a83b41
fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
391
diff
changeset
|
3825 self.assertTrue(type(r) is dict and len(r) == 0) |
86
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3826 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3827 # Only the "DICOM" attachment subsists |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3828 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance))) |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3829 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3830 # Cannot manually reconstruct the "DICOM as JSON" attachment |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3831 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/patients/%s/attachments/dicom-as-json' % patient, 'hello')) |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3832 |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3833 # Transparently reconstruct the "DICOM as JSON" attachment |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3834 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json' % instance)) |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3835 second = DoGet(_REMOTE, '/instances/%s/tags' % instance) |
0401ef51f5c1
test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
83
diff
changeset
|
3836 self.assertEqual(str(first), str(second)) |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3837 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3838 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3839 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3840 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3841 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3842 third = DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json/data' % instance) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3843 self.assertEqual(str(first), str(third)) |
87
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3844 |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3845 |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3846 def test_reconstruct_json2(self): |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3847 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3848 |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3849 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3850 b = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')['ID'] |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3851 |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3852 self.assertEqual('BRAINIX', DoGet(_REMOTE, '/instances/%s/tags?simplify' % a)['PatientName']) |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3853 self.assertEqual('KNEE', DoGet(_REMOTE, '/instances/%s/tags?simplify' % b)['PatientName']) |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3854 |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3855 aa = DoGet(_REMOTE, '/instances/%s/attachments' % a) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3856 bb = DoGet(_REMOTE, '/instances/%s/attachments' % b) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3857 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3858 if not IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3859 self.assertEqual(2, len(aa)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3860 self.assertEqual(aa, bb) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3861 self.assertTrue('dicom' in aa) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3862 self.assertTrue('dicom-as-json' in aa) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3863 elif IsDicomUntilPixelDataStored(_REMOTE): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3864 self.assertEqual(2, len(aa)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3865 self.assertEqual(aa, bb) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3866 self.assertTrue('dicom' in aa) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3867 self.assertTrue('dicom-until-pixel-data' in aa) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3868 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3869 self.assertEqual(1, len(aa)) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3870 self.assertEqual(aa, bb) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3871 self.assertTrue('dicom' in aa) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3872 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3873 # In Orthanc <= 1.9.0, this call deletes "dicom-as-json" |
87
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3874 DoPost(_REMOTE, '/tools/invalidate-tags', '', 'text/plain') |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3875 |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3876 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1) and IsDicomUntilPixelDataStored(_REMOTE): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3877 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/attachments' % a))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3878 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/attachments' % b))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3879 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3880 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % a))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3881 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % b))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3882 |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3883 # In Orthanc <= 1.9.0, this call reconstructs "dicom-as-json" |
87
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3884 self.assertEqual('BRAINIX', DoGet(_REMOTE, '/instances/%s/tags?simplify' % a)['PatientName']) |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3885 self.assertEqual('KNEE', DoGet(_REMOTE, '/instances/%s/tags?simplify' % b)['PatientName']) |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3886 |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3887 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1) and not IsDicomUntilPixelDataStored(_REMOTE): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3888 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % a))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3889 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % b))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3890 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3891 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/attachments' % a))) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
3892 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/attachments' % b))) |
87
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3893 |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3894 |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3895 def test_private_tags(self): |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3896 i = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID'] |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3897 t = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i) |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3898 self.assertEqual('1.2.840.113704.1.111.6320.1342451261.21', t['PET-CT Multi Modality Name']) |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3899 self.assertEqual('p37s0_na_ctac.img', t['Original Image Filename']) |
4b24faec842b
test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
86
diff
changeset
|
3900 |
92
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3901 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3902 def test_findscu_encoding(self): |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3903 # Check out ../Database/Encodings/Generate.sh |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3904 TEST = u'Test-éüäöòДΘĝדصķћ๛ネİ' |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3905 ENCODINGS = { |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3906 'Arabic' : [ 'ISO_IR 127' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3907 'Ascii' : [ 'ISO_IR 6' ], # More accurately, ISO 646 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3908 'Cyrillic' : [ 'ISO_IR 144' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3909 'Greek' : [ 'ISO_IR 126' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3910 'Hebrew' : [ 'ISO_IR 138' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3911 'Japanese' : [ 'ISO_IR 13', 'shift-jis' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3912 'Latin1' : [ 'ISO_IR 100' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3913 'Latin2' : [ 'ISO_IR 101' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3914 'Latin3' : [ 'ISO_IR 109' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3915 'Latin4' : [ 'ISO_IR 110' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3916 'Latin5' : [ 'ISO_IR 148' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3917 'Thai' : [ 'ISO_IR 166', 'tis-620' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3918 'Utf8' : [ 'ISO_IR 192' ], |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3919 } |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3920 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3921 for name in ENCODINGS.iterkeys(): |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3922 if len(ENCODINGS[name]) == 1: |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3923 ENCODINGS[name].append(name.lower()) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3924 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3925 UploadInstance(_REMOTE, 'Encodings/Lena-utf8.dcm') |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3926 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3927 for name in ENCODINGS.iterkeys(): |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3928 self.assertEqual(name, DoPut(_REMOTE, '/tools/default-encoding', name)) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3929 self.assertEqual(name, DoGet(_REMOTE, '/tools/default-encoding')) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3930 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3931 i = CallFindScu([ '-k', '0008,0052=STUDY', |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3932 '-k', 'SpecificCharacterSet', |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3933 '-k', 'PatientName' ]) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3934 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3935 characterSet = re.findall('\(0008,0005\).*?\[(.*?)\]', i) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3936 self.assertEqual(1, len(characterSet)) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3937 self.assertEqual(ENCODINGS[name][0], characterSet[0].strip()) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3938 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3939 patientName = re.findall('\(0010,0010\).*?\[(.*?)\]', i) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3940 self.assertEqual(1, len(patientName)) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3941 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3942 expected = TEST.encode(ENCODINGS[name][1], 'ignore') |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3943 self.assertEqual(expected, patientName[0].strip()) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3944 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3945 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3946 #for master in ENCODINGS: |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3947 for master in [ 'Latin1', 'Utf8', 'Cyrillic' ]: # Shortcut to speedup tests |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3948 self.assertEqual(master, DoPut(_REMOTE, '/tools/default-encoding', master)) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3949 self.assertEqual(master, DoGet(_REMOTE, '/tools/default-encoding')) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3950 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3951 for name in ENCODINGS: |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3952 DropOrthanc(_REMOTE) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3953 UploadInstance(_REMOTE, 'Encodings/Lena-%s.dcm' % ENCODINGS[name][1]) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3954 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3955 i = CallFindScu([ '-k', '0008,0052=STUDY', |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3956 '-k', 'PatientID', |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3957 '-k', 'SpecificCharacterSet', |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3958 '-k', 'PatientName' ]) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3959 i = i.decode(ENCODINGS[master][1]) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3960 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3961 characterSet = re.findall('\(0008,0005\).*?\[(.*?)\]', i) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3962 self.assertEqual(1, len(characterSet)) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3963 self.assertEqual(ENCODINGS[master][0], characterSet[0].strip()) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3964 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3965 patientId = re.findall('\(0010,0020\).*?\[(.*?)\]', i) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3966 self.assertEqual(1, len(patientId)) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3967 self.assertEqual(ENCODINGS[name][1], patientId[0].strip()) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3968 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3969 patientName = re.findall('\(0010,0010\).*?\[(.*?)\]', i) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3970 self.assertEqual(1, len(patientName)) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3971 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3972 tmp = ENCODINGS[name][1] |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3973 expected = TEST.encode(tmp, 'ignore').decode(tmp) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3974 tmp = ENCODINGS[master][1] |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3975 expected = expected.encode(tmp, 'ignore').decode(tmp) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3976 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3977 self.assertEqual(expected, patientName[0].strip()) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3978 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3979 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3980 a = DoPost(_REMOTE, '/tools/find', { 'Expand' : True, |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3981 'Level' : 'Study', |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3982 'Query' : { }}) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3983 self.assertEqual(1, len(a)) |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3984 |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3985 tmp = ENCODINGS[name][1] |
dbcbffb889da
test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
89
diff
changeset
|
3986 self.assertEqual(TEST.encode(tmp, 'ignore').decode(tmp), a[0]["PatientMainDicomTags"]["PatientName"]) |
96
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3987 |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3988 |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3989 def test_reconstruct(self): |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3990 def CompareMainDicomTag(expected, instance, level, tag): |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3991 self.assertEqual(expected, DoGet(_REMOTE, '/instances/%s/%s' % (instance, level))['MainDicomTags'][tag].strip()) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3992 |
504
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
3993 originalInstanceId = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
96
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3994 |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3995 studies = DoGet(_REMOTE, '/studies/') |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3996 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/'))) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3997 self.assertEqual(1, len(studies)) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3998 self.assertEqual(1, len(DoGet(_REMOTE, '/series/'))) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
3999 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/'))) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4000 |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4001 modified = DoPost(_REMOTE, '/studies/%s/modify' % studies[0], { |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4002 "Replace" : { |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4003 "StudyDescription" : "hello", |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4004 "SeriesDescription" : "world", |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4005 "SOPClassUID" : "test", |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4006 "SOPInstanceUID" : "myid", |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4007 }, |
119 | 4008 "Keep" : [ "StudyInstanceUID", "SeriesInstanceUID" ], |
4009 "Force" : True | |
96
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4010 }) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4011 |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4012 instances = DoGet(_REMOTE, '/instances/') |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4013 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/'))) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4014 self.assertEqual(1, len(DoGet(_REMOTE, '/studies/'))) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4015 self.assertEqual(1, len(DoGet(_REMOTE, '/series/'))) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4016 self.assertEqual(2, len(instances)) |
272d1229cb49
test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
95
diff
changeset
|
4017 |
504
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4018 modifiedInstanceId = instances[0] if instances[1] == originalInstanceId else instances[1] |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4019 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4020 # in 1.11.3, we have added an automatic reconstruction at the end of the modification |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4021 if not IsOrthancVersionAbove(_REMOTE, 1, 11, 3): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4022 CompareMainDicomTag('Knee (R)', originalInstanceId, 'study', 'StudyDescription') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4023 CompareMainDicomTag('AX. FSE PD', originalInstanceId, 'series', 'SeriesDescription') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4024 CompareMainDicomTag('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', originalInstanceId, '', 'SOPInstanceUID') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4025 CompareMainDicomTag('myid', modifiedInstanceId, '', 'SOPInstanceUID') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4026 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % originalInstanceId).strip()) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4027 self.assertEqual('test', DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % modifiedInstanceId).strip()) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4028 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4029 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4030 # metadata before reconstruct |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4031 mba = DoGet(_REMOTE, '/instances/%s/metadata?expand' % originalInstanceId) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4032 mbb = DoGet(_REMOTE, '/instances/%s/metadata?expand' % originalInstanceId) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4033 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4034 # reconstruct by taking the new instance as the reference -> should repopulate study fields from this instance tags |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4035 DoPost(_REMOTE, '/instances/%s/reconstruct' % modifiedInstanceId, {}) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4036 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4037 CompareMainDicomTag('hello', originalInstanceId, 'study', 'StudyDescription') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4038 CompareMainDicomTag('world', originalInstanceId, 'series', 'SeriesDescription') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4039 CompareMainDicomTag('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', originalInstanceId, '', 'SOPInstanceUID') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4040 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4041 if not IsOrthancVersionAbove(_REMOTE, 1, 11, 3): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4042 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4043 # metadata after reconstruct should have been preserved |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4044 maa = DoGet(_REMOTE, '/instances/%s/metadata?expand' % originalInstanceId) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4045 mab = DoGet(_REMOTE, '/instances/%s/metadata?expand' % originalInstanceId) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4046 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4047 self.assertEqual(mba, maa) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
4048 self.assertEqual(mbb, mab) |
473
4ee85b016a40
added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents:
472
diff
changeset
|
4049 |
4ee85b016a40
added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents:
472
diff
changeset
|
4050 |
503
138d5efd4407
added test_rle_planar_configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
502
diff
changeset
|
4051 @unittest.skip("httpbin.org is down as of 2022-12-22") # TODO |
104 | 4052 def test_httpClient_lua(self): |
496 | 4053 retries = 4 |
463
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
4054 result = '' |
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
4055 |
104 | 4056 with open(GetDatabasePath('Lua/HttpClient.lua'), 'r') as f: |
496 | 4057 scriptContent = f.read() |
463
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
4058 # retry since this test sometimes fails if httpbin.org is unresponsive |
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
4059 while retries > 0 and not ('OK' in result): |
496 | 4060 print("Executing lua script HttpClient.lua") |
4061 result = DoPost(_REMOTE, '/tools/execute-script', scriptContent, 'application/lua') | |
463
29aaa3df718f
added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents:
457
diff
changeset
|
4062 retries -= 1 |
102 | 4063 |
4064 self.assertIn('OK', result) | |
107
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4065 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4066 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4067 def test_bitbucket_issue_44(self): |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
4068 # https://bugs.orthanc-server.com/show_bug.cgi?id=44 |
107
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4069 UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm') |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4070 UploadInstance(_REMOTE, 'Issue44/Monochrome2.dcm') |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4071 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4072 # dcmcjpeg +ua +eb Monochrome1.dcm Monochrome1-Jpeg.dcm |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4073 UploadInstance(_REMOTE, 'Issue44/Monochrome1-Jpeg.dcm') |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4074 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4075 # dcmcjpeg +ua Monochrome1.dcm Monochrome1-JpegLS.dcm |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4076 UploadInstance(_REMOTE, 'Issue44/Monochrome1-JpegLS.dcm') |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4077 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4078 monochrome1 = 'bcdd600a-a6a9c522-5f0a6e84-8657c9f3-b76e59b7' |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4079 monochrome1_jpeg = '9df82121-208a2da8-0038674a-3d7a773b-b7008cd2' |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4080 monochrome1_jpegls = '0486d1a2-9165573f-b1976b20-e927b016-6b8d67ab' |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4081 monochrome2 = 'f00947b7-f61f7164-c93414d1-c6fbda6a-9e92ed20' |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4082 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4083 for i in [ monochrome1, monochrome1_jpeg, monochrome1_jpegls ]: |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4084 im = GetImage(_REMOTE, '/instances/%s/preview' % i) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4085 self.assertEqual("L", im.mode) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4086 self.assertEqual(2010, im.size[0]) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4087 self.assertEqual(2446, im.size[1]) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4088 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4089 # This is the chest image, with MONOCHROME1. Raw background is |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4090 # white (255), should be rendered as black (0) => invert |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4091 if i == monochrome1_jpeg: |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4092 # Add some tolerance because of JPEG destructive compression |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4093 self.assertGreater(10, im.getpixel((0,0))) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4094 else: |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4095 self.assertEqual(0, im.getpixel((0,0))) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4096 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4097 im = GetImage(_REMOTE, '/instances/%s/preview' % monochrome2) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4098 self.assertEqual("L", im.mode) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4099 self.assertEqual(1572, im.size[0]) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4100 self.assertEqual(2010, im.size[1]) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4101 |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4102 # This is the key image, with MONOCHROME2. Raw background is |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4103 # white (255), should be rendered as white (255) |
fddb35f7289d
test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
104
diff
changeset
|
4104 self.assertEqual(255, im.getpixel((0,0))) |
111
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4105 |
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4106 |
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4107 def test_bitbucket_issue_42(self): |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
4108 # https://bugs.orthanc-server.com/show_bug.cgi?id=42 |
123 | 4109 # This test fails on DCMTK 3.6.0, but succeeds in DCMTK 3.6.1 snapshots and DCMTK 3.6.2 |
111
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4110 UploadInstance(_REMOTE, 'Issue42.dcm')['ID'] |
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4111 modified = DoPost(_REMOTE, |
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4112 '/patients/da128605-e040d0c4-310615d2-3475da63-df2d1ef4/modify', |
119 | 4113 '{"Replace":{"PatientID":"Hello","PatientName":"Sample patient name"},"Force":true}', |
111
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4114 'application/json') |
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4115 self.assertTrue('PatientID' in modified) |
113
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4116 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4117 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4118 def test_rest_find_limit(self): |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4119 # Check the "Since" and "Limit" parameters in URI "/tools/find" |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
4120 # Related to issue 53: https://bugs.orthanc-server.com/show_bug.cgi?id=53 |
111
7005cdeeb704
test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
107
diff
changeset
|
4121 |
113
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4122 # Upload 6 instances |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4123 brainix = [] |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4124 knee = [] |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4125 for i in range(2): |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4126 brainix.append(UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) ['ID']) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4127 brainix.append(UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) ['ID']) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4128 knee.append(UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1)) ['ID']) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4129 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4130 # Check using BRAINIX |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4131 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4132 'Query' : { 'PatientName' : 'B*' }, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4133 'Limit' : 10 }) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4134 self.assertEqual(4, len(a)) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4135 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4136 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4137 'Query' : { 'PatientName' : 'B*' }, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4138 'Limit' : 4 }) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4139 self.assertEqual(4, len(a)) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4140 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4141 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4142 'Query' : { 'PatientName' : 'B*' }, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4143 'Since' : 2, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4144 'Limit' : 4 }) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4145 self.assertEqual(2, len(a)) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4146 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4147 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4148 'Query' : { 'PatientName' : 'B*' }, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4149 'Limit' : 3 }) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4150 self.assertEqual(3, len(a)) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4151 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4152 b = [] |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4153 for i in range(4): |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4154 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4155 'Query' : { 'PatientName' : 'B*' }, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4156 'Limit' : 1, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4157 'Since' : i }) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4158 self.assertEqual(1, len(a)) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4159 b.append(a[0]) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4160 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4161 # Check whether the two sets are equal through symmetric difference |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4162 self.assertEqual(0, len(set(b) ^ set(brainix))) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4163 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4164 # Check using KNEE |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4165 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4166 'Query' : { 'PatientName' : 'K*' }, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4167 'Limit' : 10 }) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4168 self.assertEqual(2, len(a)) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4169 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4170 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4171 'Query' : { 'PatientName' : 'K*' }, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4172 'Limit' : 2 }) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4173 self.assertEqual(2, len(a)) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4174 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4175 b = [] |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4176 for i in range(2): |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4177 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4178 'Query' : { 'PatientName' : 'K*' }, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4179 'Limit' : 1, |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4180 'Since' : i }) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4181 self.assertEqual(1, len(a)) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4182 b.append(a[0]) |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4183 |
3e5934363e76
test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
112
diff
changeset
|
4184 self.assertEqual(0, len(set(b) ^ set(knee))) |
115
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4185 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4186 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4187 def test_bitbucket_issue_46(self): |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4188 # "PHI remaining after anonymization" |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
4189 # https://bugs.orthanc-server.com/show_bug.cgi?id=46 |
115
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4190 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4191 def GetAnonymizedTags(study, version): |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4192 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study, |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4193 { 'DicomVersion' : version }, |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4194 'application/json') ['ID'] |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4195 a = DoGet(_REMOTE, '/studies/%s/instances' % anonymized) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4196 self.assertEqual(1, len(a)) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4197 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4198 instance = a[0]['ID'] |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4199 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4200 return (instance, DoGet(_REMOTE, '/instances/%s/tags' % instance)) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4201 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4202 UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm') |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4203 origStudy = '6068a14b-d4df27af-9ec22145-538772d8-74f228ff' |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4204 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4205 # Add the 0032,1033 (Requesting Service) and the 0010,1060 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4206 # (Patient's Mother's Birth Name) tags |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4207 newStudy = DoPost(_REMOTE, '/studies/%s/modify' % origStudy, |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4208 '{"Replace":{"0010,1060":"OSIMIS","0032,1033":"MOTHER"}}', |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4209 'application/json')['ID'] |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4210 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4211 # Use Table E.1-1 from PS 3.15-2008 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4212 # https://raw.githubusercontent.com/jodogne/dicom-specification/master/2008/08_15pu.pdf |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4213 (instance, tags) = GetAnonymizedTags(newStudy, "2008") |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4214 self.assertTrue('0032,1033' in tags) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4215 self.assertTrue('0010,1060' in tags) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4216 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4217 # Use Table E.1-1 from PS 3.15-2011 (only if Orthanc >= 1.2.1) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4218 # https://raw.githubusercontent.com/jodogne/dicom-specification/master/2008/08_15pu.pdf |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4219 (instance, tags) = GetAnonymizedTags(newStudy, "2017c") |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4220 self.assertFalse('0032,1033' in tags) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4221 self.assertFalse('0010,1060' in tags) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4222 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4223 t = {} |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4224 for (key, value) in tags.iteritems(): |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4225 t[value['Name']] = value['Value'] |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4226 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4227 self.assertEqual('', t['StudyDate']) # Type 1 tag => cleared |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4228 self.assertEqual('', t['StudyTime']) # Type 1 tag => cleared |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4229 self.assertEqual('', t['PatientSex']) # Type 1 tag => cleared |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4230 self.assertFalse('SeriesDate' in t) # Type 3 tag => null |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4231 self.assertFalse('SeriesTime' in t) # Type 3 tag => null |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4232 |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4233 with tempfile.NamedTemporaryFile(delete = True) as f: |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4234 # Run "dciodvfy" on the anonymized file to be sure it is still valid |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4235 f.write(DoGet(_REMOTE, '/instances/%s/file' % instance)) |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4236 f.flush() |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4237 subprocess.check_output([ FindExecutable('dciodvfy'), f.name ], |
45ebfab035b7
test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
4238 stderr = subprocess.STDOUT).split('\n') |
118
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4239 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4240 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4241 def test_bitbucket_issue_55(self): |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4242 def Run(modify, query): |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4243 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4244 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4245 operation = 'modify' if modify else 'anonymize' |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4246 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4247 self.assertRaises(Exception, lambda: DoPost( |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4248 _REMOTE, '/studies/%s/%s' % (study, operation), query)) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4249 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4250 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4251 query["Force"] = True |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4252 a = DoPost(_REMOTE, '/studies/%s/%s' % (study, operation), query)['Path'] |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4253 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4254 DoDelete(_REMOTE, a) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4255 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4256 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4257 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4258 UploadInstance(_REMOTE, 'DummyCT.dcm') |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4259 study = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0' |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4260 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4261 Run(True, { "Replace" : { "StudyInstanceUID" : "world" } }) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4262 Run(True, { "Replace" : { "SeriesInstanceUID" : "world" } }) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4263 Run(True, { "Replace" : { "SOPInstanceUID" : "world" } }) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4264 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4265 Run(False, { "Keep" : [ "StudyInstanceUID" ]}) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4266 Run(False, { "Keep" : [ "SeriesInstanceUID" ]}) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4267 Run(False, { "Keep" : [ "SOPInstanceUID" ]}) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4268 |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4269 Run(False, { "Replace" : { "StudyInstanceUID" : "world" } }) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4270 Run(False, { "Replace" : { "SeriesInstanceUID" : "world" } }) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4271 Run(False, { "Replace" : { "SOPInstanceUID" : "world" } }) |
a954c535fef6
test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
117
diff
changeset
|
4272 |
120
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4273 |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4274 def test_bitbucket_issue_56(self): |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4275 # Case-insensitive matching over accents. This test assumes |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4276 # that the "CaseSensitivePN" configuration option of Orthanc |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4277 # is set to "false" (default value). |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
4278 # https://bugs.orthanc-server.com/show_bug.cgi?id=56 |
120
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4279 |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4280 def Check(name, expected, expectedSensitive): |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4281 a = CallFindScu([ '-k', '0008,0005=ISO_IR 192', # Use UTF-8 |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4282 '-k', '0008,0052=PATIENT', |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4283 '-k', 'PatientName=%s' % name ]) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4284 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', a) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4285 self.assertEqual(expected, len(patientNames)) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4286 |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4287 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4288 'CaseSensitive' : False, |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4289 'Query' : { 'PatientName' : name }}) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4290 self.assertEqual(expected, len(a)) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4291 |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4292 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4293 'CaseSensitive' : True, |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4294 'Query' : { 'PatientName' : name }}) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4295 self.assertEqual(expectedSensitive, len(a)) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4296 |
533 | 4297 # SpecificCharacterSet = ISO_IR 100 (Latin1), PatientName=Test-éüäöò |
120
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4298 UploadInstance(_REMOTE, 'Encodings/Lena-latin1.dcm') |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4299 |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4300 # WildcardConstraint |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4301 Check('TeSt*', 1, 0) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4302 Check('TeSt-a*', 0, 0) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4303 Check('TeSt-É*', 1, 0) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4304 Check('TeSt-é*', 1, 0) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4305 Check('Test-é*', 1, 1) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4306 |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4307 # ListConstraint |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4308 Check('Test-éüäöò\\nope', 1, 1) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4309 Check('Test-ÉÜÄÖÒ\\nope', 1, 0) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4310 |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4311 # ValueConstraint |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4312 Check('Test-éüäöò', 1, 1) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4313 Check('Test-ÉÜÄÖÒ', 1, 0) |
fce08afe6b2d
test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
119
diff
changeset
|
4314 |
125 | 4315 |
4316 def test_gbk_alias(self): | |
4317 # https://groups.google.com/d/msg/orthanc-users/WMM8LMbjpUc/02-1f_yFCgAJ | |
4318 # This test fails on Orthanc <= 1.3.0 | |
4319 i = UploadInstance(_REMOTE, '2017-09-19-GBK-Tumashu.dcm')['ID'] | |
4320 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i) | |
4321 self.assertEqual(tags['PatientName'], u'徐浩凯') | |
4322 self.assertEqual(tags['InstitutionName'], u'灌云县疾病预防控制中心') | |
126 | 4323 |
4324 | |
4325 def test_long_tag(self): | |
4326 i = UploadInstance(_REMOTE, 'DummyCTWithLongTag.dcm')['ID'] | |
4327 series = 'f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe' | |
4328 | |
4329 tags = DoGet(_REMOTE, '/instances/%s/tags' % i) | |
4330 self.assertTrue('0018,1020' in tags) | |
4331 self.assertEqual('SoftwareVersions', tags['0018,1020']['Name']) | |
4332 self.assertEqual('TooLong', tags['0018,1020']['Type']) | |
4333 self.assertEqual(None, tags['0018,1020']['Value']) | |
4334 | |
4335 tags = DoGet(_REMOTE, '/instances/%s/tags?ignore-length=0018-1020' % i) | |
4336 self.assertTrue('0018,1020' in tags) | |
4337 self.assertEqual('SoftwareVersions', tags['0018,1020']['Name']) | |
4338 self.assertEqual('String', tags['0018,1020']['Type']) | |
4339 self.assertTrue(tags['0018,1020']['Value'].startswith('Lorem ipsum dolor sit amet')) | |
4340 | |
4341 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i) | |
4342 self.assertTrue('SoftwareVersions' in tags) | |
4343 self.assertEqual(None, tags['SoftwareVersions']) | |
4344 self.assertTrue('HeartRate' in tags) | |
4345 self.assertEqual(474, int(tags['HeartRate'])) | |
4346 | |
4347 tags = DoGet(_REMOTE, '/instances/%s/simplified-tags' % i) | |
4348 self.assertTrue('SoftwareVersions' in tags) | |
4349 self.assertEqual(None, tags['SoftwareVersions']) | |
4350 | |
4351 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify&ignore-length=0018-1020' % i) | |
4352 self.assertTrue('SoftwareVersions' in tags) | |
4353 self.assertTrue(tags['SoftwareVersions'].startswith('Lorem ipsum dolor sit amet')) | |
4354 | |
4355 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify&ignore-length=SoftwareVersions' % i) | |
4356 self.assertTrue('SoftwareVersions' in tags) | |
4357 self.assertTrue(tags['SoftwareVersions'].startswith('Lorem ipsum dolor sit amet')) | |
4358 | |
4359 tags = DoGet(_REMOTE, '/series/%s/instances-tags' % series) | |
4360 self.assertEqual(1, len(tags)) | |
4361 self.assertTrue(i in tags.keys()) | |
4362 self.assertTrue('0018,1020' in tags[i]) | |
4363 self.assertEqual('TooLong', tags[i]['0018,1020']['Type']) | |
4364 | |
4365 tags = DoGet(_REMOTE, '/series/%s/instances-tags?ignore-length=SoftwareVersions' % series) | |
4366 self.assertEqual(1, len(tags)) | |
4367 self.assertTrue(i in tags.keys()) | |
4368 self.assertTrue('0018,1020' in tags[i]) | |
4369 self.assertEqual('String', tags[i]['0018,1020']['Type']) | |
4370 self.assertTrue(tags[i]['0018,1020']['Value'].startswith('Lorem ipsum dolor sit amet')) | |
4371 | |
127
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4372 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4373 def test_extended_media(self): |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4374 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4375 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4376 z = GetArchive(_REMOTE, '/patients/%s/media?extended' % DoGet(_REMOTE, '/patients')[0]) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4377 self.assertEqual(2, len(z.namelist())) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4378 self.assertTrue('IMAGES/IM0' in z.namelist()) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4379 self.assertTrue('DICOMDIR' in z.namelist()) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4380 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4381 try: |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4382 os.remove('/tmp/DICOMDIR') |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4383 except: |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4384 # The file does not exist |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4385 pass |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4386 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4387 z.extract('DICOMDIR', '/tmp') |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4388 a = subprocess.check_output([ FindExecutable('dciodvfy'), '/tmp/DICOMDIR' ], |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4389 stderr = subprocess.STDOUT).split('\n') |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4390 self.assertEqual(5, len(a)) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4391 self.assertTrue(a[0].startswith('Warning')) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4392 self.assertEqual('BasicDirectory', a[1]) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4393 self.assertTrue('not present in standard DICOM IOD' in a[2]) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4394 self.assertTrue('not present in standard DICOM IOD' in a[3]) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4395 self.assertEqual('', a[4]) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4396 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4397 a = subprocess.check_output([ FindExecutable('dcentvfy'), '/tmp/DICOMDIR' ], |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4398 stderr = subprocess.STDOUT).split('\n') |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4399 self.assertEqual(1, len(a)) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4400 self.assertEqual('', a[0]) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4401 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4402 a = subprocess.check_output([ FindExecutable('dcm2xml'), '/tmp/DICOMDIR' ]) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4403 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081908590448738', a) != None) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4404 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4405 # Check the presence of the series description (extended tag) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4406 self.assertTrue(re.search('T1W_aTSE', a) != None) |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4407 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4408 os.remove('/tmp/DICOMDIR') |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4409 |
1eea4d3a1ba9
test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
126
diff
changeset
|
4410 |
132
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4411 def test_anonymize_relationships_1(self): |
133
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4412 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4413 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm') |
132
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4414 study = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4415 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4416 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study, |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4417 '{}', |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4418 'application/json')['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4419 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4420 a = DoGet(_REMOTE, '/studies/%s/instances' % study) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4421 self.assertEqual(2, len(a)) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4422 a1 = a[0]['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4423 a2 = a[1]['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4424 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4425 b = DoGet(_REMOTE, '/studies/%s/instances' % anonymized) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4426 self.assertEqual(2, len(b)) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4427 b1 = b[0]['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4428 b2 = b[1]['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4429 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4430 SEQUENCE = '/instances/%s/content/ReferencedImageSequence' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4431 SOP = '/instances/%s/content/ReferencedImageSequence/%d/ReferencedSOPInstanceUID' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4432 CLASS = '/instances/%s/content/ReferencedImageSequence/%d/ReferencedSOPClassUID' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4433 FRAME = '/instances/%s/content/FrameOfReferenceUID' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4434 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4435 self.assertEqual(DoGet(_REMOTE, FRAME % a1), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4436 DoGet(_REMOTE, FRAME % a2)) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4437 self.assertEqual(DoGet(_REMOTE, FRAME % b1), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4438 DoGet(_REMOTE, FRAME % b2)) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4439 self.assertNotEqual(DoGet(_REMOTE, FRAME % a1), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4440 DoGet(_REMOTE, FRAME % b1)) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4441 self.assertNotEqual(DoGet(_REMOTE, FRAME % a2), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4442 DoGet(_REMOTE, FRAME % b2)) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4443 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4444 self.assertEqual(3, len(DoGet(_REMOTE, SEQUENCE % a1))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4445 self.assertEqual(3, len(DoGet(_REMOTE, SEQUENCE % a2))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4446 self.assertEqual(3, len(DoGet(_REMOTE, SEQUENCE % b1))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4447 self.assertEqual(3, len(DoGet(_REMOTE, SEQUENCE % b2))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4448 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4449 for i in range(3): |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4450 self.assertEqual(DoGet(_REMOTE, SOP % (a1, i)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4451 DoGet(_REMOTE, SOP % (a2, i))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4452 self.assertEqual(DoGet(_REMOTE, SOP % (b1, i)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4453 DoGet(_REMOTE, SOP % (b2, i))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4454 self.assertNotEqual(DoGet(_REMOTE, SOP % (a1, i)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4455 DoGet(_REMOTE, SOP % (b1, i))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4456 self.assertNotEqual(DoGet(_REMOTE, SOP % (a2, i)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4457 DoGet(_REMOTE, SOP % (b2, i))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4458 self.assertEqual(DoGet(_REMOTE, CLASS % (a1, i)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4459 DoGet(_REMOTE, CLASS % (b1, i))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4460 self.assertEqual(DoGet(_REMOTE, CLASS % (a2, i)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4461 DoGet(_REMOTE, CLASS % (b2, i))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4462 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4463 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4464 def test_anonymize_relationships_2(self): |
133
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4465 UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0001.dcm') |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4466 UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0002.dcm') |
132
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4467 study = '6c65289b-db2fcb71-7eaf73f4-8e12470c-a4d6d7cf' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4468 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4469 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study, |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4470 '{}', |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4471 'application/json')['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4472 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4473 a = DoGet(_REMOTE, '/studies/%s/instances' % study) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4474 self.assertEqual(2, len(a)) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4475 a1 = a[0]['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4476 a2 = a[1]['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4477 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4478 b = DoGet(_REMOTE, '/studies/%s/instances' % anonymized) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4479 self.assertEqual(2, len(b)) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4480 b1 = b[0]['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4481 b2 = b[1]['ID'] |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4482 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4483 SEQUENCE = '/instances/%s/content/SourceImageSequence' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4484 SOP = '/instances/%s/content/SourceImageSequence/%d/ReferencedSOPInstanceUID' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4485 CLASS = '/instances/%s/content/SourceImageSequence/%d/ReferencedSOPClassUID' |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4486 |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4487 self.assertEqual(1, len(DoGet(_REMOTE, SEQUENCE % a1))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4488 self.assertEqual(1, len(DoGet(_REMOTE, SEQUENCE % a2))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4489 self.assertEqual(1, len(DoGet(_REMOTE, SEQUENCE % b1))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4490 self.assertEqual(1, len(DoGet(_REMOTE, SEQUENCE % b2))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4491 self.assertEqual(DoGet(_REMOTE, SOP % (a1, 0)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4492 DoGet(_REMOTE, SOP % (a2, 0))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4493 self.assertEqual(DoGet(_REMOTE, SOP % (b1, 0)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4494 DoGet(_REMOTE, SOP % (b2, 0))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4495 self.assertNotEqual(DoGet(_REMOTE, SOP % (a1, 0)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4496 DoGet(_REMOTE, SOP % (b1, 0))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4497 self.assertNotEqual(DoGet(_REMOTE, SOP % (a2, 0)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4498 DoGet(_REMOTE, SOP % (b2, 0))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4499 self.assertEqual(DoGet(_REMOTE, CLASS % (a1, 0)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4500 DoGet(_REMOTE, CLASS % (b1, 0))) |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4501 self.assertEqual(DoGet(_REMOTE, CLASS % (a2, 0)), |
149144d854bb
Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
130
diff
changeset
|
4502 DoGet(_REMOTE, CLASS % (b2, 0))) |
133
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4503 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4504 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4505 def test_anonymize_relationships_3(self): |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4506 sr1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/StructuredReports/IM0')['ID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4507 mr1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/StructuredReports/IM631')['ID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4508 study = 'ef351eb2-c1147229-062736b8-35a151e3-e32d526b' |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4509 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4510 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study, |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4511 { "Keep" : [ "ContentSequence" ] }) ['ID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4512 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4513 a = DoGet(_REMOTE, '/studies/%s/instances' % anonymized) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4514 self.assertEqual(2, len(a)) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4515 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4516 if DoGet(_REMOTE, '/instances/%s/content/Modality' % a[0]['ID']) == 'SR': |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4517 sr2 = a[0]['ID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4518 mr2 = a[1]['ID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4519 else: |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4520 sr2 = a[1]['ID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4521 mr2 = a[0]['ID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4522 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4523 self.assertEqual(DoGet(_REMOTE, '/instances/%s/content/Modality' % sr1), |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4524 DoGet(_REMOTE, '/instances/%s/content/Modality' % sr2)) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4525 self.assertEqual(DoGet(_REMOTE, '/instances/%s/content/Modality' % mr1), |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4526 DoGet(_REMOTE, '/instances/%s/content/Modality' % mr2)) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4527 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4528 mrUid1 = DoGet(_REMOTE, '/instances/%s' % mr1)['MainDicomTags']['SOPInstanceUID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4529 mrUid2 = DoGet(_REMOTE, '/instances/%s' % mr2)['MainDicomTags']['SOPInstanceUID'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4530 mrSeries1 = DoGet(_REMOTE, '/instances/%s/content/SeriesInstanceUID' % mr1).strip('\x00') |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4531 mrSeries2 = DoGet(_REMOTE, '/instances/%s/content/SeriesInstanceUID' % mr2).strip('\x00') |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4532 mrStudy1 = DoGet(_REMOTE, '/instances/%s/content/StudyInstanceUID' % mr1).strip('\x00') |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4533 mrStudy2 = DoGet(_REMOTE, '/instances/%s/content/StudyInstanceUID' % mr2).strip('\x00') |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4534 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4535 PATH1 = '/instances/%s/content/CurrentRequestedProcedureEvidenceSequence' |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4536 PATH2 = PATH1 + '/0/ReferencedSeriesSequence' |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4537 PATH3 = PATH2 + '/0/ReferencedSOPSequence' |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4538 PATH4 = PATH3 + '/0/ReferencedSOPInstanceUID' |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4539 PATH5 = PATH3 + '/0/ReferencedSOPClassUID' |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4540 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4541 self.assertEqual(1, len(DoGet(_REMOTE, PATH1 % sr1))) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4542 self.assertEqual(1, len(DoGet(_REMOTE, PATH2 % sr1))) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4543 self.assertEqual(1, len(DoGet(_REMOTE, PATH3 % sr1))) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4544 self.assertEqual(DoGet(_REMOTE, PATH4 % sr1), mrUid1) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4545 self.assertEqual(mrSeries1, DoGet(_REMOTE, (PATH2 + '/0/SeriesInstanceUID') % sr1).strip('\x00')) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4546 self.assertEqual(mrStudy1, DoGet(_REMOTE, (PATH1 + '/0/StudyInstanceUID') % sr1).strip('\x00')) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4547 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4548 self.assertEqual(1, len(DoGet(_REMOTE, PATH1 % sr2))) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4549 self.assertEqual(1, len(DoGet(_REMOTE, PATH2 % sr2))) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4550 self.assertEqual(1, len(DoGet(_REMOTE, PATH3 % sr2))) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4551 self.assertEqual(DoGet(_REMOTE, PATH5 % sr1), DoGet(_REMOTE, PATH5 % sr2)) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4552 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4553 self.assertEqual(mrUid2, DoGet(_REMOTE, PATH4 % sr2).strip('\x00')) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4554 self.assertEqual(mrSeries2, DoGet(_REMOTE, (PATH2 + '/0/SeriesInstanceUID') % sr2).strip('\x00')) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4555 self.assertEqual(mrStudy2, DoGet(_REMOTE, (PATH1 + '/0/StudyInstanceUID') % sr2).strip('\x00')) |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4556 |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4557 content1 = DoGet(_REMOTE, '/instances/%s/tags?simplify' % sr1) ['ContentSequence'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4558 content2 = DoGet(_REMOTE, '/instances/%s/tags?simplify' % sr2) ['ContentSequence'] |
f0d4c4707e64
test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
132
diff
changeset
|
4559 self.assertEqual(str(content1), str(content2)) |
141
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4560 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4561 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4562 def test_bitbucket_issue_94(self): |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4563 # "a simple instance modification should not modify FrameOfReferenceUID + ..." |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
4564 # https://bugs.orthanc-server.com/show_bug.cgi?id=94 |
141
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4565 i = UploadInstance(_REMOTE, 'Issue94.dcm')['ID'] |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4566 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4567 source = DoGet(_REMOTE, '/instances/%s/attachments/dicom/data' % i) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4568 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4569 modified = DoPost(_REMOTE, '/instances/%s/modify' % i, |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4570 { "Replace" : {"PatientID" : "toto"}, "Force": True}) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4571 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4572 anonymized = DoPost(_REMOTE, '/instances/%s/anonymize' % i) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4573 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4574 a = ExtractDicomTags(source, [ 'FrameOfReferenceUID' ]) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4575 self.assertEqual(1, len(a)) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4576 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4577 b = ExtractDicomTags(modified, [ 'FrameOfReferenceUID' ]) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4578 self.assertEqual(1, len(b)) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4579 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4580 c = ExtractDicomTags(anonymized, [ 'FrameOfReferenceUID' ]) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4581 self.assertEqual(1, len(c)) |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4582 |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4583 self.assertEqual(a, b) # Modified DICOM |
5de178abe4d8
test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
138
diff
changeset
|
4584 self.assertNotEqual(a, c) # Anonymized DICOM |
143
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4585 |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4586 |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4587 def test_metadata_origin(self): |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4588 # Upload using the REST API |
144
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4589 i = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID'] |
143
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4590 self.assertEqual('RestApi', DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i)) |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4591 self.assertEqual('', DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i)) |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4592 self.assertNotEqual('', DoGet(_REMOTE, '/instances/%s/metadata/RemoteIP' % i)) |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4593 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/metadata/CalledAET' % i)) |
315 | 4594 |
4595 # "HttpUsername" is empty iff "AuthenticationEnabled" is "false" | |
4596 self.assertTrue(DoGet(_REMOTE, '/instances/%s/metadata/HttpUsername' % i) in [ '', 'alice' ]) | |
4597 | |
144
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4598 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % i) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4599 self.assertEqual('RestApi', m['Origin']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4600 self.assertEqual('', m['RemoteAET']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4601 self.assertNotEqual('', m['RemoteIP']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4602 self.assertFalse('CalledAET' in m) |
315 | 4603 self.assertTrue('HttpUsername' in m) |
4604 self.assertTrue(m['HttpUsername'] in [ '', 'alice' ]) | |
144
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4605 |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4606 self.assertEqual('1.2.840.10008.1.2.4.91', m['TransferSyntax']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4607 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', m['SopClassUid']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4608 self.assertEqual('1', m['IndexInSeries']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4609 self.assertTrue('ReceptionDate' in m) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4610 |
143
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4611 DoDelete(_REMOTE, '/instances/%s' % i) |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4612 |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4613 # Upload using the DICOM protocol |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4614 subprocess.check_call([ FindExecutable('storescu'), |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4615 _REMOTE['Server'], str(_REMOTE['DicomPort']), |
144
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4616 GetDatabasePath('Knee/T1/IM-0001-0001.dcm'), |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4617 '-xw' ]) # Propose JPEG2000 |
143
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4618 self.assertEqual('DicomProtocol', DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i)) |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4619 self.assertEqual('STORESCU', DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i)) |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4620 self.assertNotEqual('', DoGet(_REMOTE, '/instances/%s/metadata/RemoteIP' % i)) |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4621 self.assertEqual('ANY-SCP', DoGet(_REMOTE, '/instances/%s/metadata/CalledAET' % i)) |
28d50ffac07d
test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
142
diff
changeset
|
4622 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/metadata/HttpUsername' % i)) |
144
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4623 |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4624 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % i) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4625 self.assertEqual('DicomProtocol', m['Origin']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4626 self.assertEqual('STORESCU', m['RemoteAET']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4627 self.assertNotEqual('', m['RemoteIP']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4628 self.assertEqual('ANY-SCP', m['CalledAET']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4629 self.assertFalse('HttpUsername' in m) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4630 |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4631 self.assertEqual('1.2.840.10008.1.2.4.91', m['TransferSyntax']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4632 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', m['SopClassUid']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4633 self.assertEqual('1', m['IndexInSeries']) |
7809fdf8056f
testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
143
diff
changeset
|
4634 self.assertTrue('ReceptionDate' in m) |
147 | 4635 |
4636 | |
4637 def test_lua_deadlock(self): | |
4638 # Rana Asim Wajid (2018-07-14): "It does seem that the issue | |
4639 # is with the lua script I'm using for conversion of images to | |
4640 # JPEG2000. When the script is used with 1.4.0 the first | |
4641 # instance appears to be stored and then everything just | |
4642 # halts, ie Orthanc wont respond to anything after that." | |
4643 # https://groups.google.com/d/msg/orthanc-users/Rc-Beb42xc8/JUgdzrmCAgAJ | |
174 | 4644 InstallLuaScriptFromPath(_REMOTE, 'Lua/Jpeg2000Conversion.lua') |
147 | 4645 |
4646 subprocess.check_call([ FindExecutable('storescu'), | |
4647 _REMOTE['Server'], str(_REMOTE['DicomPort']), | |
4648 GetDatabasePath('Brainix/Flair/IM-0001-0001.dcm'), | |
4649 GetDatabasePath('Brainix/Flair/IM-0001-0002.dcm'), | |
4650 ]) | |
4651 | |
4652 instances = DoGet(_REMOTE, '/instances') | |
4653 self.assertEqual(2, len(instances)) | |
4654 | |
4655 t1 = DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % instances[0]) | |
4656 t2 = DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % instances[1]) | |
175 | 4657 self.assertEqual('1.2.840.10008.1.2.4.90', t1) # this will fail if libgdcm-tools is not installed |
147 | 4658 self.assertEqual(t1, t2); |
154
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4659 |
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4660 |
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4661 def test_find_group_length(self): |
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4662 # Orthanc <= 1.4.1 fails to answer C-FIND queries that contain |
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4663 # one of the Generic Group Length tags (*, 0x0000) |
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4664 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] |
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4665 result = CallFindScu([ '-k', '0008,0052=STUDY', '-k', '0008,0000=80' ]) |
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4666 self.assertFalse('UnableToProcess' in result) |
4a533d003080
test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
147
diff
changeset
|
4667 self.assertFalse('E:' in result) |
179
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4668 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4669 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4670 def test_split(self): |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4671 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4672 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') |
254
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4673 knee1Sop = '1.3.46.670589.11.17521.5.0.3124.2008081908590448738' |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4674 knee2Sop = '1.3.46.670589.11.17521.5.0.3124.2008081909113806560' |
179
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4675 study = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4676 t1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4677 t2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59' |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4678 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4679 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4680 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4681 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4682 info = DoGet(_REMOTE, '/studies/%s' % study) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4683 self.assertTrue('ReferringPhysicianName' in info['MainDicomTags']) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4684 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4685 job = MonitorJob2(_REMOTE, lambda: DoPost |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4686 (_REMOTE, '/studies/%s/split' % study, { |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4687 'Series' : [ t2 ], |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4688 'Replace' : { 'PatientName' : 'Hello' }, |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4689 'Remove' : [ 'ReferringPhysicianName' ], |
181 | 4690 'KeepSource' : False, |
4691 'Asynchronous' : True | |
179
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4692 })) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4693 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4694 self.assertNotEqual(None, job) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4695 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4696 studies = set(DoGet(_REMOTE, '/studies')) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4697 self.assertEqual(2, len(studies)) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4698 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4699 series = set(DoGet(_REMOTE, '/series')) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4700 self.assertEqual(2, len(series)) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4701 self.assertTrue(t1 in series) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4702 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4703 study2 = DoGet(_REMOTE, '/jobs/%s' % job)['Content']['TargetStudy'] |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4704 self.assertTrue(study in studies) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4705 self.assertTrue(study2 in studies) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4706 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4707 info = DoGet(_REMOTE, '/studies/%s' % study2) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4708 self.assertTrue('Hello', info['PatientMainDicomTags']['PatientName']) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4709 self.assertFalse('ReferringPhysicianName' in info['MainDicomTags']) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4710 |
254
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4711 sopInstanceUids = set() |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4712 for i in DoGet(_REMOTE, '/instances?expand'): |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4713 sopInstanceUids.add(i['MainDicomTags']['SOPInstanceUID']) |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4714 |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4715 self.assertTrue(knee1Sop in sopInstanceUids) |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4716 |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4717 # Fails if Orthanc <= 1.5.7 |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4718 self.assertFalse(knee2Sop in sopInstanceUids) # Because "KeepSource" is False |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4719 |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4720 # One original instance is kept, another one is added because of the split |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4721 self.assertEqual(2, len(sopInstanceUids)) |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4722 |
179
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4723 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4724 def test_merge(self): |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4725 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
254
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4726 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4727 kneeSop = '1.3.46.670589.11.17521.5.0.3124.2008081908590448738' |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4728 brainixSop = '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549' |
179
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4729 knee = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4730 t1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4731 brainix = '27f7126f-4f66fb14-03f4081b-f9341db2-53925988' |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4732 flair = '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0' |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4733 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4734 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4735 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4736 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4737 job = MonitorJob2(_REMOTE, lambda: DoPost |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4738 (_REMOTE, '/studies/%s/merge' % knee, { |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4739 'Resources' : [ brainix ], |
181 | 4740 'KeepSource' : True, |
4741 'Synchronous' : False | |
179
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4742 })) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4743 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4744 self.assertNotEqual(None, job) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4745 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4746 studies = set(DoGet(_REMOTE, '/studies')) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4747 self.assertEqual(2, len(studies)) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4748 self.assertTrue(knee in studies) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4749 self.assertTrue(brainix in studies) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4750 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4751 series = set(DoGet(_REMOTE, '/studies/%s' % knee)['Series']) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4752 self.assertTrue(t1 in series) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4753 series.remove(t1) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4754 self.assertEqual(1, len(series)) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4755 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4756 instances = DoGet(_REMOTE, '/series/%s' % list(series)[0])['Instances'] |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4757 self.assertEqual(1, len(instances)) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4758 merged = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0]) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4759 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4760 instances = DoGet(_REMOTE, '/series/%s' % t1)['Instances'] |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4761 self.assertEqual(1, len(instances)) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4762 a = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0]) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4763 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4764 instances = DoGet(_REMOTE, '/series/%s' % flair)['Instances'] |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4765 self.assertEqual(1, len(instances)) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4766 b = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0]) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4767 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4768 tags = DoGet(_REMOTE, '/studies/%s' % knee) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4769 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4770 for key in tags['PatientMainDicomTags']: |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4771 self.assertEqual(a[key], merged[key]) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4772 if (key in b and key != 'PatientSex'): |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4773 self.assertNotEqual(a[key], b[key]) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4774 |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4775 for key in tags['MainDicomTags']: |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4776 # Not in the patient/study module |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4777 if (not key in [ 'InstitutionName', |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4778 'RequestingPhysician', |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4779 'RequestedProcedureDescription', ]): |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4780 self.assertEqual(a[key], merged[key]) |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4781 if (key in b): |
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4782 self.assertNotEqual(a[key], b[key]) |
254
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4783 |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4784 sopInstanceUids = set() |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4785 for i in DoGet(_REMOTE, '/instances?expand'): |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4786 sopInstanceUids.add(i['MainDicomTags']['SOPInstanceUID']) |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4787 |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4788 self.assertTrue(kneeSop in sopInstanceUids) |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4789 self.assertTrue(brainixSop in sopInstanceUids) |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4790 |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4791 # Fails if Orthanc <= 1.5.7 |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4792 # The 2 original instances are kept, another one is added because of the merge |
05b77ade5e1d
test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
4793 self.assertEqual(3, len(sopInstanceUids)) |
179
8a2dd77d4035
testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
4794 |
187 | 4795 |
4796 def test_async_archive(self): | |
4797 # Testing the asynchronous generation of archives/medias (new | |
4798 # in Orthanc 1.4.3) | |
4799 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
4800 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
4801 | |
4802 kneeT1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' | |
4803 kneeT2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59' | |
4804 | |
4805 job = MonitorJob2(_REMOTE, lambda: DoPost | |
508 | 4806 (_REMOTE, '/series/%s/archive' % kneeT1, { |
187 | 4807 'Synchronous' : False |
4808 })) | |
4809 | |
4810 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job) | |
4811 self.assertEqual(1, len(z.namelist())) | |
4812 self.assertFalse('DICOMDIR' in z.namelist()) | |
4813 | |
354
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4814 info = DoGet(_REMOTE, '/jobs/%s' % job) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4815 self.assertEqual(0, info['Content']['ArchiveSizeMB']) # New in Orthanc 1.8.1 |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4816 self.assertEqual(1, info['Content']['InstancesCount']) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4817 self.assertEqual(0, info['Content']['UncompressedSizeMB']) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4818 |
187 | 4819 job2 = MonitorJob2(_REMOTE, lambda: DoPost |
508 | 4820 (_REMOTE, '/series/%s/media' % kneeT1, { |
187 | 4821 'Synchronous' : False |
4822 })) | |
4823 | |
4824 # The archive from the first job has been replaced by the | |
4825 # archive from second job (as MediaArchiveSize == 1) | |
4826 self.assertRaises(Exception, lambda: GetArchive(_REMOTE, '/jobs/%s/archive' % job)) | |
4827 | |
4828 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job2) | |
4829 self.assertEqual(2, len(z.namelist())) | |
4830 self.assertTrue('DICOMDIR' in z.namelist()) | |
4831 | |
354
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4832 info = DoGet(_REMOTE, '/jobs/%s' % job2) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4833 self.assertEqual(0, info['Content']['ArchiveSizeMB']) # New in Orthanc 1.8.1 |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4834 self.assertEqual(1, info['Content']['InstancesCount']) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4835 self.assertEqual(0, info['Content']['UncompressedSizeMB']) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4836 |
187 | 4837 job = MonitorJob2(_REMOTE, lambda: DoPost |
4838 (_REMOTE, '/tools/create-archive', { | |
4839 'Synchronous' : False, | |
4840 'Resources' : [ kneeT1, kneeT2 ], | |
4841 })) | |
4842 | |
4843 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job) | |
4844 self.assertEqual(2, len(z.namelist())) | |
4845 self.assertFalse('DICOMDIR' in z.namelist()) | |
4846 | |
354
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4847 info = DoGet(_REMOTE, '/jobs/%s' % job) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4848 self.assertEqual(0, info['Content']['ArchiveSizeMB']) # New in Orthanc 1.8.1 |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4849 self.assertEqual(2, info['Content']['InstancesCount']) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4850 self.assertEqual(0, info['Content']['UncompressedSizeMB']) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4851 |
187 | 4852 job = MonitorJob2(_REMOTE, lambda: DoPost |
4853 (_REMOTE, '/tools/create-media', { | |
4854 'Synchronous' : False, | |
4855 'Resources' : [ kneeT1, kneeT2 ], | |
4856 })) | |
4857 | |
4858 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job) | |
4859 self.assertEqual(3, len(z.namelist())) | |
4860 self.assertTrue('DICOMDIR' in z.namelist()) | |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4861 |
354
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4862 self.assertEqual(0, info['Content']['ArchiveSizeMB']) # New in Orthanc 1.8.1 |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4863 self.assertEqual(2, info['Content']['InstancesCount']) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4864 self.assertEqual(0, info['Content']['UncompressedSizeMB']) |
88f076b906ca
test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
353
diff
changeset
|
4865 |
187 | 4866 |
540
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4867 def test_archive_job_delete_output(self): |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4868 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1): |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4869 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4870 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4871 |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4872 kneeT1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4873 kneeT2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59' |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4874 |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4875 job = MonitorJob2(_REMOTE, lambda: DoPost |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4876 (_REMOTE, '/series/%s/archive' % kneeT1, { |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4877 'Synchronous' : False |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4878 })) |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4879 |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4880 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job) |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4881 # delete the output |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4882 DoDelete(_REMOTE, '/jobs/%s/archive' % job) |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4883 # make sure it is not available anymore afterwards |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4884 self.assertRaises(Exception, lambda: GetArchive(_REMOTE, '/jobs/%s/archive' % job)) |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4885 |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4886 # repeat with another resource/job |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4887 job = MonitorJob2(_REMOTE, lambda: DoPost |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4888 (_REMOTE, '/series/%s/archive' % kneeT2, { |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4889 'Synchronous' : False |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4890 })) |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4891 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job) |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4892 # delete the output |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4893 DoDelete(_REMOTE, '/jobs/%s/archive' % job) |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4894 # make sure it is not available anymore afterwards |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4895 self.assertRaises(Exception, lambda: GetArchive(_REMOTE, '/jobs/%s/archive' % job)) |
572 | 4896 # job is still available |
4897 DoGet(_REMOTE, '/jobs/%s' % job) | |
4898 | |
4899 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): | |
4900 # delete the job itself | |
4901 DoDelete(_REMOTE, '/jobs/%s' % job) | |
4902 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/jobs/%s' % job)) | |
4903 | |
4904 # test deletion of jobs in history | |
4905 job = MonitorJob2(_REMOTE, lambda: DoPost | |
4906 (_REMOTE, '/series/%s/archive' % kneeT2, { | |
4907 'Synchronous' : False | |
4908 })) | |
4909 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job) | |
4910 # delete the job itself | |
4911 DoDelete(_REMOTE, '/jobs/%s' % job) | |
4912 # make sure it is not available anymore afterwards (and its output is not available either) | |
4913 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/jobs/%s' % job)) | |
4914 self.assertRaises(Exception, lambda: GetArchive(_REMOTE, '/jobs/%s/archive' % job)) | |
540
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4915 |
ea1003982c27
added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents:
538
diff
changeset
|
4916 |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4917 def test_queries_hierarchy(self): |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4918 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4919 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4920 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4921 tags = { |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4922 'NumberOfPatientRelatedInstances' : '', |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4923 'NumberOfPatientRelatedSeries' : '', |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4924 'NumberOfPatientRelatedStudies' : '', |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4925 'NumberOfStudyRelatedInstances' : '', |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4926 'NumberOfStudyRelatedSeries' : '', |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4927 'NumberOfSeriesRelatedInstances' : '', |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4928 } |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4929 |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4930 tags2 = copy.copy(tags) |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4931 tags2['PatientID'] = '887' # Only consider the "Knee" patient |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4932 |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4933 patient = DoPost(_REMOTE, '/modalities/self/query', { |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4934 'Level' : 'Patient', |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4935 'Query' : tags2 |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4936 }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4937 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4938 study = DoPost(_REMOTE, '/modalities/self/query', { |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4939 'Level' : 'Study', |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4940 'Query' : tags2 |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4941 }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4942 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4943 series = DoPost(_REMOTE, '/modalities/self/query', { |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4944 'Level' : 'Series', |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4945 'Query' : tags2 |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4946 }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4947 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4948 instance = DoPost(_REMOTE, '/modalities/self/query', { |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4949 'Level' : 'Instance', |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4950 'Query' : tags2 |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4951 }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4952 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4953 p = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % patient) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4954 self.assertEqual(1, len(p)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4955 self.assertEqual('887', p[0]['PatientID']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4956 self.assertEqual('1', p[0]['NumberOfPatientRelatedInstances']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4957 self.assertEqual('1', p[0]['NumberOfPatientRelatedSeries']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4958 self.assertEqual('1', p[0]['NumberOfPatientRelatedStudies']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4959 self.assertFalse('NumberOfStudyRelatedInstances' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4960 self.assertFalse('NumberOfStudyRelatedSeries' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4961 self.assertFalse('NumberOfSeriesRelatedInstances' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4962 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4963 p = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % study) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4964 self.assertEqual(1, len(p)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4965 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', p[0]['StudyInstanceUID']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4966 self.assertEqual('1', p[0]['NumberOfStudyRelatedInstances']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4967 self.assertEqual('1', p[0]['NumberOfStudyRelatedSeries']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4968 self.assertFalse('NumberOfPatientRelatedInstances' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4969 self.assertFalse('NumberOfPatientRelatedSeries' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4970 self.assertFalse('NumberOfPatientRelatedInstances' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4971 self.assertFalse('NumberOfSeriesRelatedInstances' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4972 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4973 p = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % series) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4974 self.assertEqual(1, len(p)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4975 self.assertEqual('1.3.46.670589.11.17521.5.0.3124.2008081908564160709', p[0]['SeriesInstanceUID']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4976 self.assertEqual('1', p[0]['NumberOfSeriesRelatedInstances']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4977 self.assertFalse('NumberOfPatientRelatedInstances' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4978 self.assertFalse('NumberOfPatientRelatedSeries' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4979 self.assertFalse('NumberOfPatientRelatedInstances' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4980 self.assertFalse('NumberOfStudyRelatedInstances' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4981 self.assertFalse('NumberOfStudyRelatedSeries' in p[0]) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4982 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4983 p = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % instance) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4984 self.assertEqual(1, len(p)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4985 self.assertEqual('1.3.46.670589.11.17521.5.0.3124.2008081908590448738', p[0]['SOPInstanceUID']) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4986 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4987 j = DoPost(_REMOTE, '/queries/%s/answers/0/query-studies' % patient, |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4988 { 'Query' : tags }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4989 self.assertEqual(DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % j), |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4990 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % study)) |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
4991 |
188
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4992 j = DoPost(_REMOTE, '/queries/%s/answers/0/query-series' % patient, |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4993 { 'Query' : tags }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4994 self.assertEqual(DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % j), |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4995 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % series)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4996 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4997 j = DoPost(_REMOTE, '/queries/%s/answers/0/query-instances' % patient, |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4998 { 'Query' : tags }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
4999 self.assertEqual(DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % j), |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5000 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % instance)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5001 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5002 j = DoPost(_REMOTE, '/queries/%s/answers/0/query-series' % study, |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5003 { 'Query' : tags }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5004 self.assertEqual(DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % j), |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5005 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % series)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5006 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5007 j = DoPost(_REMOTE, '/queries/%s/answers/0/query-instances' % study, |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5008 { 'Query' : tags }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5009 self.assertEqual(DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % j), |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5010 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % instance)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5011 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5012 j = DoPost(_REMOTE, '/queries/%s/answers/0/query-instances' % series, |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5013 { 'Query' : tags }) ['ID'] |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5014 self.assertEqual(DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % j), |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5015 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % instance)) |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5016 |
7d585263808b
new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
5017 |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5018 def test_dicom_disk_size(self): |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5019 dicomSize = 0 |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5020 |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5021 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID'] |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5022 isCompressed = (DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % a) != 0) |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5023 |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5024 for i in range(2): |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5025 p = 'Knee/T%d/IM-0001-0001.dcm' % (i + 1) |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5026 UploadInstance(_REMOTE, p) |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5027 dicomSize += os.path.getsize(GetDatabasePath(p)) |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5028 |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5029 s = DoGet(_REMOTE, '/patients/ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17/statistics') # Consider Knee patient |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5030 self.assertEqual(2, s['CountInstances']) |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5031 self.assertEqual(2, s['CountSeries']) |
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5032 self.assertEqual(1, s['CountStudies']) |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5033 |
189
11719f19bd62
test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
188
diff
changeset
|
5034 self.assertEqual(dicomSize, int(s['DicomUncompressedSize'])) |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5035 |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5036 if isCompressed: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5037 self.assertGreater(dicomSize, int(s['DicomDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5038 self.assertGreater(s['UncompressedSize'], s['DiskSize']) |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5039 self.assertLess(dicomSize, int(s['UncompressedSize'])) |
379
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5040 else: |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5041 self.assertEqual(dicomSize, int(s['DicomDiskSize'])) |
097329b67509
fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
378
diff
changeset
|
5042 self.assertEqual(s['UncompressedSize'], s['DiskSize']) |
380
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5043 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5044 if IsDicomUntilPixelDataStored(_REMOTE): |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5045 self.assertLess(dicomSize, int(s['UncompressedSize'])) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5046 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5047 self.assertEqual(dicomSize, int(s['UncompressedSize'])) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5048 else: |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5049 # In Orthanc <= 1.9.0, there is the "dicom-as-json" |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5050 # attachment in addition to the DICOM file |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5051 self.assertLess(dicomSize, int(s['UncompressedSize'])) |
b9adc7d06347
update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
379
diff
changeset
|
5052 |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5053 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5054 def test_changes_2(self): |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5055 # More consistent behavior since Orthanc 1.5.2 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5056 # https://groups.google.com/d/msg/orthanc-users/QhzB6vxYeZ0/YxabgqpfBAAJ |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5057 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5058 # Make sure that this is not the first change |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5059 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5060 a = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5061 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5062 DoDelete(_REMOTE, '/instances/%s' % a) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5063 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5064 # No more instance, but there were previous changes |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5065 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5066 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5067 c = DoGet(_REMOTE, '/changes') |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5068 self.assertEqual(0, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5069 self.assertTrue(c['Done']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5070 seq = c['Last'] |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5071 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5072 c = DoGet(_REMOTE, '/changes?last') |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5073 self.assertEqual(0, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5074 self.assertTrue(c['Done']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5075 self.assertEqual(seq, c['Last']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5076 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5077 c = DoGet(_REMOTE, '/changes?since=%d' % (seq + 1000)) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5078 self.assertEqual(0, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5079 self.assertTrue(c['Done']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5080 self.assertEqual(seq, c['Last']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5081 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5082 # Add one instance |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5083 UploadInstance(_REMOTE, 'DummyCT.dcm') |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5084 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5085 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5086 c = DoGet(_REMOTE, '/changes') |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5087 self.assertEqual(4, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5088 self.assertTrue(c['Done']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5089 self.assertEqual(seq + 4, c['Last']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5090 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5091 c = DoGet(_REMOTE, '/changes?last') |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5092 self.assertEqual(1, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5093 self.assertTrue(c['Done']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5094 self.assertEqual(seq + 4, c['Last']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5095 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5096 c = DoGet(_REMOTE, '/changes?since=%d' % (seq + 1000)) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5097 self.assertEqual(0, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5098 self.assertTrue(c['Done']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5099 self.assertEqual(seq + 4, c['Last']) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5100 |
389
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5101 # Add, then delete, one user-defined metadata: This triggers 2 |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5102 # changes of type "UpdatedMetadata" |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5103 i = DoGet(_REMOTE, '/instances') [0] |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5104 DoPut(_REMOTE, '/instances/%s/metadata/4000' % i, 'hello', 'text/plain') |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
5105 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
5106 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/4000' % i) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
5107 self.assertEqual('200', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
5108 self.assertEqual('hello', body) |
389
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5109 |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5110 c = DoGet(_REMOTE, '/changes?last') |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5111 self.assertEqual(1, len(c['Changes'])) |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5112 self.assertTrue(c['Done']) |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5113 self.assertEqual(seq + 5, c['Last']) |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5114 self.assertEqual('UpdatedMetadata', c['Changes'][0]['ChangeType']) |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5115 |
394
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
5116 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2): |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
5117 DoDelete(_REMOTE, '/instances/%s/metadata/4000' % i, headers = { |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
5118 'If-Match' : headers['etag'] |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
5119 }) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
5120 else: |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
5121 self.assertFalse('etag' in headers) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
5122 DoDelete(_REMOTE, '/instances/%s/metadata/4000' % i) |
e87d54a8a204
compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
393
diff
changeset
|
5123 |
389
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5124 c = DoGet(_REMOTE, '/changes?last') |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5125 self.assertEqual(1, len(c['Changes'])) |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5126 self.assertTrue(c['Done']) |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5127 self.assertEqual(seq + 6, c['Last']) |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5128 self.assertEqual('UpdatedMetadata', c['Changes'][0]['ChangeType']) |
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5129 |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5130 # Remove the uploaded instance |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5131 DoDelete(_REMOTE, '/instances/%s' % a) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5132 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5133 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5134 c = DoGet(_REMOTE, '/changes') |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5135 self.assertEqual(0, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5136 self.assertTrue(c['Done']) |
389
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5137 self.assertEqual(seq + 6, c['Last']) |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5138 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5139 c = DoGet(_REMOTE, '/changes?last') |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5140 self.assertEqual(0, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5141 self.assertTrue(c['Done']) |
389
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5142 self.assertEqual(seq + 6, c['Last']) |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5143 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5144 c = DoGet(_REMOTE, '/changes?since=%d' % (seq + 1000)) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5145 self.assertEqual(0, len(c['Changes'])) |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5146 self.assertTrue(c['Done']) |
389
27e0a2fcdc85
test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
384
diff
changeset
|
5147 self.assertEqual(seq + 6, c['Last']) |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5148 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5149 |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5150 def test_bitbucket_issue_124(self): |
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5151 a = UploadInstance(_REMOTE, 'Issue124.dcm')['ID'] |
508 | 5152 s = DoGet(_REMOTE, '/instances/%s/series' % a)['ID'] |
5153 | |
5154 z = GetArchive(_REMOTE, '/series/%s/media' % s) | |
202
f26f9ae9c599
test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
195
diff
changeset
|
5155 self.assertEqual(2, len(z.namelist())) |
207
a515eec74078
test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
202
diff
changeset
|
5156 |
a515eec74078
test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
202
diff
changeset
|
5157 |
a515eec74078
test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
202
diff
changeset
|
5158 def test_invalid_findscp(self): |
a515eec74078
test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
202
diff
changeset
|
5159 UploadInstance(_REMOTE, 'DummyCT.dcm') |
a515eec74078
test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
202
diff
changeset
|
5160 findscu = CallFindScu([ '-S', '-k', '8,52=IMAGE', '-k', '8,16', '-k', '2,2' ]) |
a515eec74078
test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
202
diff
changeset
|
5161 self.assertEqual(0, len(re.findall('\(0002,0002\)', findscu))) |
208
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5162 |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5163 |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5164 def test_bitbucket_issue_90(self): |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5165 def CountDicomResults(sex): |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5166 a = CallFindScu([ '-S', '-k', '8,52=STUDY', '-k', sex ]) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5167 return len(re.findall('\(0010,0040\)', a)) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5168 |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5169 def CountRestResults(sex): |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5170 a = DoPost(_REMOTE, '/tools/find', |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5171 { 'Level' : 'Study', 'Query' : { 'PatientSex' : sex } }) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5172 return len(a) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5173 |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5174 # Just like the "CR000000.dcm" of the issue, the test image |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5175 # "DummyCT.dcm" has the tag PatientSex (0010,0040) unset |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5176 UploadInstance(_REMOTE, 'DummyCT.dcm') |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5177 |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5178 # Test that the behavior of DICOM vs. REST API is consistent on missing tags |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5179 |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5180 # In wildcard constraints, the patient sex must be set for a match to occur |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5181 self.assertEqual(0, CountDicomResults('PatientSex=*')) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5182 self.assertEqual(0, CountRestResults('*')) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5183 |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5184 # In single-valued constraints, the patient sex must be set |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5185 self.assertEqual(0, CountDicomResults('PatientSex=F')) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5186 self.assertEqual(0, CountDicomResults('PatientSex=M')) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5187 self.assertEqual(0, CountRestResults('F')) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5188 self.assertEqual(0, CountRestResults('M')) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5189 |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5190 # Empty constraints are only used to ask the actual value of |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5191 # the tag to be added to the *answer*. The tag should not used |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5192 # as a filter in such a situation. |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5193 self.assertEqual(1, CountDicomResults('PatientSex')) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5194 self.assertEqual(1, CountDicomResults('PatientSex=')) |
2444c9a7c422
test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
207
diff
changeset
|
5195 self.assertEqual(1, CountRestResults('')) # This check fails on Orthanc <= 1.5.2 (issue 90) |
210
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5196 |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5197 |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5198 def test_rest_modalities_in_study(self): |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5199 # Tests a regression that is present in Orthanc 1.5.2 and 1.5.3 |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5200 # https://groups.google.com/d/msg/orthanc-users/7lZyG3wpx-M/uOXzAzVCFwAJ |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5201 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm') |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5202 |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5203 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5204 'Query' : { 'ModalitiesInStudy' : 'US' }}) |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5205 self.assertEqual(0, len(a)) |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5206 |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5207 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5208 'Query' : { 'ModalitiesInStudy' : 'US\\CT' }}) |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5209 self.assertEqual(1, len(a)) |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5210 |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5211 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5212 'Query' : { 'ModalitiesInStudy' : 'CT' }}) |
2c50c8f340c2
test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
208
diff
changeset
|
5213 self.assertEqual(1, len(a)) |
211 | 5214 |
5215 | |
5216 def test_series_status(self): | |
5217 def HasCompletedInChanges(): | |
5218 for c in DoGet(_REMOTE, '/changes?limit=1000&since=0')['Changes']: | |
5219 if c['ChangeType'] == 'CompletedSeries': | |
5220 return True; | |
5221 | |
5222 return False | |
5223 | |
5224 UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0001.dcm') | |
5225 series = '8ea120d7-5057d919-837dfbcc-ccd04e0f-7f3a94aa' | |
5226 self.assertEqual('Unknown', DoGet(_REMOTE, '/series/%s' % series)['Status']) | |
5227 self.assertFalse(HasCompletedInChanges()) | |
5228 | |
5229 series = 'ce25ecb6-ed79d004-5ae43ca7-3fc89bc5-67511614' | |
5230 | |
5231 for i in range(3): | |
5232 UploadInstance(_REMOTE, 'Series/Lena-%d.dcm' % (i + 1)) | |
5233 self.assertEqual('Missing', DoGet(_REMOTE, '/series/%s' % series)['Status']) | |
5234 self.assertFalse(HasCompletedInChanges()) | |
5235 | |
5236 UploadInstance(_REMOTE, 'Series/Lena-4.dcm') | |
5237 self.assertEqual('Complete', DoGet(_REMOTE, '/series/%s' % series)['Status']) | |
5238 self.assertTrue(HasCompletedInChanges()) | |
5239 | |
5240 DoDelete(_REMOTE, '/changes') | |
5241 self.assertFalse(HasCompletedInChanges()) | |
5242 | |
5243 UploadInstance(_REMOTE, 'Series/Lena-5.dcm') | |
5244 self.assertEqual('Inconsistent', DoGet(_REMOTE, '/series/%s' % series)['Status']) | |
5245 self.assertFalse(HasCompletedInChanges()) | |
5246 | |
215 | 5247 |
5248 def test_dicomweb(self): | |
5249 def Compare(dicom, reference): | |
5250 a = UploadInstance(_REMOTE, dicom) ['ID'] | |
5251 b = DoGet(_REMOTE, '/instances/%s/file' % a, | |
5252 headers = { 'Accept' : 'application/dicom+json' }) | |
5253 with open(GetDatabasePath(reference), 'rb') as c: | |
5254 d = json.load(c) | |
220 | 5255 AssertAlmostEqualRecursive(self, d, b) |
215 | 5256 |
5257 Compare('DummyCT.dcm', 'DummyCT.json') | |
5258 Compare('MarekLatin2.dcm', 'MarekLatin2.json') | |
5259 Compare('HierarchicalAnonymization/StructuredReports/IM0', | |
5260 'HierarchicalAnonymization/StructuredReports/IM0.json') | |
217 | 5261 |
5262 | |
5263 def test_issue_95_encodings(self): | |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
5264 # https://bugs.orthanc-server.com/show_bug.cgi?id=95 |
217 | 5265 # Check out image: "../Database/Encodings/DavidClunie/charsettests.screenshot.png" |
5266 | |
5267 # Very useful tool: "file2" from package "file-kanji" | |
5268 | |
5269 def GetPatientName(dicom): | |
5270 i = UploadInstance(_REMOTE, dicom) ['ID'] | |
5271 j = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i) | |
5272 return j['PatientName'] | |
5273 | |
5274 def ComparePatientName(name, dicom): | |
5275 self.assertEqual(name, GetPatientName(dicom)) | |
5276 | |
5277 # gdcmraw -t 10,10 -i SCSFREN -o /tmp/tag && uconv -f ISO-IR-100 -t UTF-8 /tmp/tag && echo | |
5278 ComparePatientName(u'Buc^Jérôme', 'Encodings/DavidClunie/SCSFREN') | |
5279 | |
5280 # gdcmraw -t 10,10 -i SCSI2 -o /tmp/tag && uconv -f KOREAN -t UTF-8 /tmp/tag && echo | |
5281 ComparePatientName(u'Hong^Gildong=洪^吉洞=홍^길동', 'Encodings/DavidClunie/SCSI2') # Since Orthanc 1.5.5 | |
5282 | |
5283 # gdcmraw -t 10,10 -i SCSX2 -o /tmp/tag && uconv -f GB18030 -t UTF-8 /tmp/tag && echo | |
5284 ComparePatientName(u'Wang^XiaoDong=王^小东=', 'Encodings/DavidClunie/SCSX2') | |
5285 | |
5286 # gdcmraw -t 10,10 -i SCSX1 -o /tmp/tag && cat /tmp/tag && echo | |
5287 ComparePatientName(u'Wang^XiaoDong=王^小東=', 'Encodings/DavidClunie/SCSX1') | |
5288 | |
5289 # gdcmraw -t 10,10 -i SCSH31 -o /tmp/tag && uconv -f JIS -t UTF-8 /tmp/tag && echo | |
5290 ComparePatientName(u'Yamada^Tarou=山田^太郎=やまだ^たろう', 'Encodings/DavidClunie/SCSH31') | |
5291 | |
5292 # gdcmraw -t 10,10 -i SCSGERM -o /tmp/tag && uconv -f ISO-IR-100 -t UTF-8 /tmp/tag && echo | |
5293 ComparePatientName(u'Äneas^Rüdiger', 'Encodings/DavidClunie/SCSGERM') | |
5294 | |
5295 # gdcmraw -t 10,10 -i SCSGREEK -o /tmp/tag && uconv -f ISO-IR-126 -t UTF-8 /tmp/tag && echo | |
5296 ComparePatientName(u'Διονυσιος', 'Encodings/DavidClunie/SCSGREEK') | |
5297 | |
5298 # gdcmraw -t 10,10 -i SCSRUSS -o /tmp/tag && uconv -f ISO-IR-144 -t UTF-8 /tmp/tag && echo | |
5299 ComparePatientName(u'Люкceмбypг', 'Encodings/DavidClunie/SCSRUSS') | |
5300 | |
5301 # gdcmraw -t 10,10 -i SCSHBRW -o /tmp/tag && uconv -f ISO-IR-138 -t UTF-8 /tmp/tag && echo | |
5302 # NB: Hebrew is a right-to-left encoding, copying/pasting from | |
5303 # Linux console into Emacs automatically reverse the string | |
5304 ComparePatientName(u'שרון^דבורה', 'Encodings/DavidClunie/SCSHBRW') | |
5305 | |
5306 # gdcmraw -t 10,10 -i SCSARAB -o /tmp/tag && uconv -f ISO-IR-127 -t UTF-8 /tmp/tag && echo | |
5307 # NB: Right-to-left as for Hebrew (SCSHBRW), and the Ubuntu console can't display such | |
5308 # characters by default, but copy/paste works with Emacs | |
5309 ComparePatientName(u'قباني^لنزار', 'Encodings/DavidClunie/SCSARAB') | |
5310 | |
5311 # SCSH32: This SpecificCharacterSet is composed of 2 | |
5312 # codepages: "ISO 2022 IR 13" (i.e. "SHIFT_JIS") until the | |
5313 # first equal, then "ISO 2022 IR 87" (i.e. "JIS") for the | |
5314 # remainer. Orthanc only takes into consideration the first | |
5315 # codepage: This is a limitation. | |
5316 # gdcmraw -t 10,10 -i SCSH32 -o /tmp/tag && cut -d '=' -f 1 /tmp/tag | uconv -f SHIFT_JIS -t UTF-8 | |
5317 self.assertTrue(GetPatientName('Encodings/DavidClunie/SCSH32').startswith(u'ヤマダ^タロウ=')) | |
218
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5318 |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5319 |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5320 def test_findscu_missing_tags(self): |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5321 # dcmodify -e Rows DummyCTInvalidRows.dcm -gst -gse -gin |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5322 UploadInstance(_REMOTE, 'DummyCT.dcm') |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5323 UploadInstance(_REMOTE, 'DummyCTInvalidRows.dcm') |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5324 |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5325 i = CallFindScu([ '-k', '0008,0052=IMAGES', '-k', 'Rows', '-k', 'PatientName' ]) |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5326 |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5327 # We have 2 instances... |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5328 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', i) |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5329 self.assertEqual(2, len(patientNames)) |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5330 self.assertEqual('KNIX', patientNames[0]) |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5331 self.assertEqual('KNIX', patientNames[1]) |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5332 |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5333 # ...but only 1 value for the "Rows" tag |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5334 rows = re.findall('\(0028,0010\) US ([0-9]+)', i) |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5335 self.assertEqual(1, len(rows)) |
70fba41776be
test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
217
diff
changeset
|
5336 self.assertEqual('512', rows[0]) |
219
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5337 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5338 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5339 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5340 def test_bitbucket_issue_131(self): |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5341 # "Orthanc PACS silently fails to C-MOVE due to duplicate |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5342 # StudyInstanceUID in it's database." |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
5343 # https://bugs.orthanc-server.com/show_bug.cgi?id=131 |
219
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5344 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5345 # Insert 2 instances, with the same StudyInstanceUID, but with |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5346 # different patient IDs. Orthanc will create 2 distincts |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5347 # patients, and the hierarchy of resources above the two |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5348 # instances will be fully disjoint. |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5349 UploadInstance(_REMOTE, 'PatientIdsCollision/Issue131-a.dcm') |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5350 UploadInstance(_REMOTE, 'PatientIdsCollision/Issue131-b.dcm') |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5351 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5352 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5353 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5354 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5355 a = DoPost(_REMOTE, '/modalities/self/query', { |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5356 'Level' : 'Study', |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5357 'Query' : {"PatientID": "A" }})['ID'] |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5358 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5359 # 1 study is matched |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5360 self.assertEqual(1, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5361 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5362 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
220 | 5363 WaitAllNewJobsDone(_REMOTE, lambda: DoPost |
5364 (_REMOTE, '/queries/%s/retrieve' % a, | |
5365 '{"TargetAet":"ORTHANCTEST","Synchronous":false}')) | |
219
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5366 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5367 # The two studies are matched, as we made the request at the |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5368 # Study level, thus the shared StudyInstanceUID is used as the key |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5369 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5370 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5371 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5372 # Match the 2 studies |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5373 a = DoPost(_REMOTE, '/modalities/self/query', { |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5374 'Level' : 'Study', |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5375 'Query' : {"StudyInstanceUID": "2.25.123" }})['ID'] |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5376 self.assertEqual(2, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5377 DropOrthanc(_LOCAL) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5378 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
220 | 5379 WaitAllNewJobsDone(_REMOTE, lambda: DoPost |
5380 (_REMOTE, '/queries/%s/retrieve' % a, | |
5381 '{"TargetAet":"ORTHANCTEST","Synchronous":false}')) | |
219
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5382 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5383 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5384 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5385 # Same test, at the patient level => only 1 instance is transfered |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5386 a = DoPost(_REMOTE, '/modalities/self/query', { |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5387 'Level' : 'Patient', |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5388 'Query' : {"PatientID": "A" }})['ID'] |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5389 self.assertEqual(1, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5390 DropOrthanc(_LOCAL) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5391 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
220 | 5392 WaitAllNewJobsDone(_REMOTE, lambda: DoPost |
5393 (_REMOTE, '/queries/%s/retrieve' % a, | |
5394 '{"TargetAet":"ORTHANCTEST","Synchronous":false}')) | |
219
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5395 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5396 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5397 |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5398 # Same test, at the series level => only 1 instance is transfered |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5399 a = DoPost(_REMOTE, '/modalities/self/query', { |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5400 'Level' : 'Series', |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5401 'Query' : {"PatientID": "A" }})['ID'] |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5402 self.assertEqual(1, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5403 DropOrthanc(_LOCAL) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5404 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
220 | 5405 WaitAllNewJobsDone(_REMOTE, lambda: DoPost |
5406 (_REMOTE, '/queries/%s/retrieve' % a, | |
5407 '{"TargetAet":"ORTHANCTEST","Synchronous":false}')) | |
219
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5408 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) |
00e5aeea33dd
test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
218
diff
changeset
|
5409 |
233
ce0b19a2c807
test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
231
diff
changeset
|
5410 |
ce0b19a2c807
test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
231
diff
changeset
|
5411 def test_bitbucket_issue_136(self): |
ce0b19a2c807
test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
231
diff
changeset
|
5412 UploadInstance(_REMOTE, 'Issue137.dcm') |
ce0b19a2c807
test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
231
diff
changeset
|
5413 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', '0010,0010', '-k', '0028,0010', '-k', '0040,0275' ]) |
ce0b19a2c807
test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
231
diff
changeset
|
5414 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', i) |
ce0b19a2c807
test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
231
diff
changeset
|
5415 self.assertEqual(1, len(patientNames)) |
ce0b19a2c807
test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
231
diff
changeset
|
5416 self.assertEqual('John Doe', patientNames[0]) |
234
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5417 |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5418 |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5419 def test_anonymize_relationships_4(self): |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5420 # https://groups.google.com/d/msg/orthanc-users/UkcsqyTpszE/bXUpzU0vAAAJ |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5421 sr1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/2019-03-28/CR000000.dcm')['ID'] |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5422 mr1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/2019-03-28/PR000000.dcm')['ID'] |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5423 study = '0c923249-d52121a9-2b7167f7-6b85534f-0943697e' |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5424 |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5425 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study, '{}', |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5426 'application/json')['ID'] |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5427 series = DoGet(_REMOTE, '/studies/%s/series' % anonymized) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5428 self.assertEqual(2, len(series)) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5429 |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5430 cr = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CR', series)) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5431 pr = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'PR', series)) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5432 self.assertEqual(1, len(cr)) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5433 self.assertEqual(1, len(pr)) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5434 self.assertEqual(1, len(cr[0]['Instances'])) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5435 self.assertEqual(1, len(pr[0]['Instances'])) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5436 |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5437 crinstance = DoGet(_REMOTE, '/instances/%s' % cr[0]['Instances'][0]) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5438 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % pr[0]['Instances'][0]) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5439 |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5440 self.assertEqual(tags['0008,1115'][0]['0008,1140'][0]['0008,1155'], |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5441 crinstance['MainDicomTags']['SOPInstanceUID']) |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5442 self.assertEqual(tags['0008,1115'][0]['0008,1140'][0]['0008,1150'], |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5443 '1.2.840.10008.5.1.4.1.1.1') # SOP class for CR Image Storage |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5444 |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5445 # This fails on Orthanc <= 1.5.6 |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5446 self.assertEqual(tags['0008,1115'][0]['0020,000e'], |
93cd4fdd4a67
test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
233
diff
changeset
|
5447 cr[0]['MainDicomTags']['SeriesInstanceUID']) |
235
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5448 |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5449 |
255
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5450 def test_anonymize_relationships_5(self): |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5451 ct1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/CT01.dcm') |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5452 rt1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/RT.dcm') |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5453 oStudyId = ct1['ParentStudy'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5454 oCtInstanceId = ct1['ID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5455 oRtInstanceId = rt1['ID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5456 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5457 oCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oCtInstanceId) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5458 oRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oRtInstanceId) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5459 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5460 # first validate the relationships in the source data |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5461 oStudyUID = oCtTags['StudyInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5462 oRtSeriesUID = oRtTags['SeriesInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5463 oRtInstanceUID = oRtTags['SOPInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5464 oRtFrameOfReferenceUID = oRtTags['ReferencedFrameOfReferenceSequence'][0]['FrameOfReferenceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5465 oCtSeriesUID = oCtTags['SeriesInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5466 oCtInstanceUID = oCtTags['SOPInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5467 oCtFrameOfReferenceUID = oCtTags['FrameOfReferenceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5468 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5469 oContourSequenceCount = len(oRtTags['ROIContourSequence'][0]['ContourSequence']) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5470 self.assertEqual(oCtFrameOfReferenceUID, oRtFrameOfReferenceUID) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5471 self.assertEqual(oStudyUID, oRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID']) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5472 self.assertEqual(oCtSeriesUID, oRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['SeriesInstanceUID']) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5473 self.assertEqual(oCtInstanceUID, oRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5474 self.assertEqual(oCtInstanceUID, oRtTags['ROIContourSequence'][0]['ContourSequence'][oContourSequenceCount-1]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5475 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5476 ### anonymize |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5477 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5478 aStudyId = DoPost(_REMOTE, '/studies/%s/anonymize' % oStudyId, '{}', |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5479 'application/json')['ID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5480 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5481 ### validate |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5482 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5483 aSeries = DoGet(_REMOTE, '/studies/%s/series' % aStudyId) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5484 self.assertEqual(2, len(aSeries)) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5485 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5486 aCt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CT', aSeries)) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5487 aRt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'RTSTRUCT', aSeries)) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5488 aCtInstanceId = aCt[0]['Instances'][0] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5489 aRtInstanceId = aRt[0]['Instances'][0] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5490 aCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aCtInstanceId) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5491 aRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aRtInstanceId) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5492 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5493 # now validate the relationships in the anonymized data |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5494 aStudyUID = aCtTags['StudyInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5495 aRtSeriesUID = aRtTags['SeriesInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5496 aRtInstanceUID = aRtTags['SOPInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5497 aRtFrameOfReferenceUID = aRtTags['ReferencedFrameOfReferenceSequence'][0]['FrameOfReferenceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5498 aCtSeriesUID = aCtTags['SeriesInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5499 aCtInstanceUID = aCtTags['SOPInstanceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5500 aCtFrameOfReferenceUID = aCtTags['FrameOfReferenceUID'] |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5501 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5502 aContourSequenceCount = len(aRtTags['ROIContourSequence'][0]['ContourSequence']) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5503 # make sure all UIDs have been updated |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5504 self.assertNotEqual(oStudyUID, aStudyUID) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5505 self.assertNotEqual(oRtSeriesUID, aRtSeriesUID) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5506 self.assertNotEqual(oRtInstanceUID, aRtInstanceUID) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5507 self.assertNotEqual(oRtFrameOfReferenceUID, aRtFrameOfReferenceUID) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5508 self.assertNotEqual(oCtSeriesUID, aCtSeriesUID) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5509 self.assertNotEqual(oCtInstanceUID, aCtInstanceUID) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5510 self.assertNotEqual(oCtFrameOfReferenceUID, aCtFrameOfReferenceUID) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5511 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5512 # validate the relationships |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5513 self.assertEqual(oContourSequenceCount, aContourSequenceCount) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5514 self.assertEqual(aCtFrameOfReferenceUID, aRtFrameOfReferenceUID) |
256 | 5515 self.assertEqual(aStudyUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID']) |
5516 self.assertEqual(aCtSeriesUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['SeriesInstanceUID']) | |
255
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5517 self.assertEqual(aCtInstanceUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5518 self.assertEqual(aCtInstanceUID, aRtTags['ROIContourSequence'][0]['ContourSequence'][aContourSequenceCount-1]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5519 |
256 | 5520 def test_anonymize_relationships_5b(self): |
5521 # same test as previous one but, this time, we force the StudyInstanceUID | |
5522 ct1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/CT01.dcm') | |
5523 rt1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/RT.dcm') | |
5524 oStudyId = ct1['ParentStudy'] | |
5525 oCtInstanceId = ct1['ID'] | |
5526 oRtInstanceId = rt1['ID'] | |
5527 | |
5528 oCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oCtInstanceId) | |
5529 oRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oRtInstanceId) | |
5530 | |
5531 ### anonymize while forcing the StudyInstanceUID | |
5532 | |
5533 aStudyId = DoPost(_REMOTE, '/studies/%s/anonymize' % oStudyId, '{ "Replace" : { "StudyInstanceUID" : "1.2.3.4"}, "Force": true}', | |
5534 'application/json')['ID'] | |
5535 | |
5536 ### validate | |
5537 | |
5538 aSeries = DoGet(_REMOTE, '/studies/%s/series' % aStudyId) | |
5539 self.assertEqual(2, len(aSeries)) | |
5540 | |
5541 aCt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CT', aSeries)) | |
5542 aRt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'RTSTRUCT', aSeries)) | |
5543 aCtInstanceId = aCt[0]['Instances'][0] | |
5544 aRtInstanceId = aRt[0]['Instances'][0] | |
5545 aCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aCtInstanceId) | |
5546 aRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aRtInstanceId) | |
5547 | |
5548 self.assertEqual("1.2.3.4", aCtTags['StudyInstanceUID']) | |
5549 self.assertEqual("1.2.3.4", aRtTags['StudyInstanceUID']) | |
5550 self.assertEqual("1.2.3.4", aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID']) | |
255
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5551 |
02c3d91b155c
added anonymization test for RTH data (currently failing)
amazy
parents:
254
diff
changeset
|
5552 |
235
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5553 def test_bitbucket_issue_140(self): |
266 | 5554 # "Modifying private tags with REST API changes VR from LO to |
267 | 5555 # UN." This test fails if DCMTK <= 3.6.1 (e.g. fails on Ubuntu 16.04). |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
5556 # https://bugs.orthanc-server.com/show_bug.cgi?id=140 |
235
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5557 source = UploadInstance(_REMOTE, 'Issue140.dcm') ['ID'] |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5558 series = DoGet(_REMOTE, '/instances/%s' % source) ['ParentSeries'] |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5559 |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5560 target = DoPost(_REMOTE, '/series/%s/modify' % series, { |
266 | 5561 'Replace' : { 'RadioButton3' : 'aaabbbccc' }, |
5562 'PrivateCreator' : 'RadioLogic', # <= the trick is here | |
235
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5563 }, 'application/json') ['ID'] |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5564 |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5565 instances = DoGet(_REMOTE, '/series/%s/instances' % target) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5566 self.assertEqual(1, len(instances)) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5567 |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5568 tags = DoGet(_REMOTE, '/instances/%s/tags' % source) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5569 t = tags['4321,1012'] |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5570 self.assertEqual('String', t['Type']) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5571 self.assertEqual('RadioButton3', t['Name']) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5572 self.assertEqual('RadioLogic', t['PrivateCreator']) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5573 self.assertEqual('jklmopq', t['Value']) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5574 |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5575 tags = DoGet(_REMOTE, '/instances/%s/tags' % instances[0]['ID']) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5576 t = tags['4321,1012'] |
327 | 5577 self.assertEqual('String', t['Type']) # This fails if DCMTK <= 3.6.1 |
235
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5578 self.assertEqual('RadioButton3', t['Name']) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5579 self.assertEqual('RadioLogic', t['PrivateCreator']) |
9929e4af2b7a
test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
234
diff
changeset
|
5580 self.assertEqual('aaabbbccc', t['Value']) |
236
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5581 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5582 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5583 def test_find_normalize(self): |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5584 # https://groups.google.com/d/msg/orthanc-users/AIwooGjsh94/YL28MNY4AgAJ |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5585 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5586 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5587 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5588 a = DoPost(_REMOTE, '/modalities/self/query', { |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5589 'Level' : 'Instance', |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5590 'Query' : { 'Rows' : '42' } |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5591 }) ['ID'] |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5592 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5593 b = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a) |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5594 self.assertEqual(1, len(b)) |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5595 self.assertFalse('Rows' in b[0]) |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5596 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5597 a = DoPost(_REMOTE, '/modalities/self/query', { |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5598 'Level' : 'Instance', |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5599 'Query' : { 'Rows' : '42' }, |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5600 'Normalize' : False |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5601 }) ['ID'] |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5602 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5603 b = DoGet(_REMOTE, '/queries/%s/answers' % a) |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5604 self.assertEqual(0, len(b)) |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5605 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5606 a = DoPost(_REMOTE, '/modalities/self/query', { |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5607 'Level' : 'Instance', |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5608 'Query' : { 'Rows' : '512' }, |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5609 'Normalize' : False |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5610 }) ['ID'] |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5611 |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5612 b = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a) |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5613 self.assertEqual(1, len(b)) |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5614 self.assertTrue('Rows' in b[0]) |
2de1aec255ae
test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
235
diff
changeset
|
5615 self.assertEqual('512', b[0]['Rows']) |
237 | 5616 |
5617 a = DoPost(_REMOTE, '/modalities/self/query', { | |
5618 'Level' : 'Instance', | |
5619 'Query' : { 'Rows' : '' }, | |
5620 'Normalize' : False | |
5621 }) ['ID'] | |
5622 | |
5623 b = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a) | |
5624 self.assertEqual(1, len(b)) | |
5625 self.assertTrue('Rows' in b[0]) | |
5626 self.assertEqual('512', b[0]['Rows']) | |
5627 | |
5628 self.assertRaises(Exception, lambda: DoPost( | |
5629 _REMOTE, '/modalities/self/query', { | |
5630 'Level' : 'Instance', | |
5631 'Query' : { 'Rows' : '*' }, # Out-of-range value | |
5632 'Normalize' : False | |
5633 })) | |
243
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5634 |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5635 |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5636 def test_bitbucket_issue_141(self): |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
5637 # https://bugs.orthanc-server.com/show_bug.cgi?id=141 |
243
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5638 a = UploadInstance(_REMOTE, 'Issue141.dcm') ['ID'] |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5639 study = '494c8037-b237f263-d8f15075-c8cb2280-daf39bd1' |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5640 |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5641 with open(GetDatabasePath('HelloWorld.pdf'), 'rb') as f: |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5642 pdf = f.read() |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5643 |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5644 b = DoPost(_REMOTE, '/tools/create-dicom', { |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5645 'Parent' : study, |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5646 'Tags' : {}, |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5647 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf) |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5648 }) ['ID'] |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5649 |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5650 tagsA = DoGet(_REMOTE, '/instances/%s/tags?short' % a) |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5651 tagsB = DoGet(_REMOTE, '/instances/%s/tags?short' % b) |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5652 self.assertEqual(tagsA['0008,0005'], tagsB['0008,0005']) |
cccf697a4e13
test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
237
diff
changeset
|
5653 self.assertEqual(tagsA['0008,1030'], tagsB['0008,1030']) |
247
1abdab0ba0e6
test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
243
diff
changeset
|
5654 |
1abdab0ba0e6
test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
243
diff
changeset
|
5655 |
1abdab0ba0e6
test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
243
diff
changeset
|
5656 def test_modifying_missing_patientid(self): |
1abdab0ba0e6
test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
243
diff
changeset
|
5657 # https://groups.google.com/d/msg/orthanc-users/aphG_h1AHVg/rfOTtTPTAgAJ |
1abdab0ba0e6
test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
243
diff
changeset
|
5658 UploadInstance(_REMOTE, '2019-06-17-VedranZdesic.dcm') |
1abdab0ba0e6
test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
243
diff
changeset
|
5659 DoPost(_REMOTE, '/studies/0c4aca1d-c107a241-6659d6aa-594c674a-a468b94a/modify', {}) |
262 | 5660 |
5661 | |
5662 def test_log_level(self): | |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
5663 # https://bugs.orthanc-server.com/show_bug.cgi?id=65 |
262 | 5664 original = DoGet(_REMOTE, '/tools/log-level') |
5665 | |
5666 DoPut(_REMOTE, '/tools/log-level', 'default') | |
5667 self.assertEqual('default', DoGet(_REMOTE, '/tools/log-level')) | |
5668 DoGet(_REMOTE, '/system') | |
5669 | |
5670 DoPut(_REMOTE, '/tools/log-level', 'verbose') | |
5671 self.assertEqual('verbose', DoGet(_REMOTE, '/tools/log-level')) | |
5672 DoGet(_REMOTE, '/system') | |
5673 | |
5674 DoPut(_REMOTE, '/tools/log-level', 'trace') | |
5675 self.assertEqual('trace', DoGet(_REMOTE, '/tools/log-level')) | |
5676 DoGet(_REMOTE, '/system') | |
5677 | |
5678 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/tools/log-level', 'nope')) | |
5679 | |
5680 # Switch back to the original log level | |
5681 DoPut(_REMOTE, '/tools/log-level', original) | |
264
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5682 |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5683 |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5684 def test_upload_compressed(self): |
265 | 5685 # New in Orthanc 1.6.0 |
264
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5686 with open(GetDatabasePath('DummyCT.dcm.gz'), 'rb') as f: |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5687 d = f.read() |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5688 |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5689 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/instances', d, 'application/dicom')) |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5690 |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5691 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/instances', d, 'application/dicom', |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5692 headers = { 'Content-Encoding' : 'nope' })) |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5693 |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5694 a = DoPost(_REMOTE, '/instances', d, 'application/dicom', |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5695 headers = { 'Content-Encoding' : 'gzip' }) |
445f498bc1d4
test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
5696 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', a['ID']) |
262 | 5697 |
5698 | |
263
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5699 def test_study_series_find_inconsistency(self): |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5700 # https://groups.google.com/forum/#!topic/orthanc-users/bLv6Z11COy0 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5701 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5702 def CountAnswers(query): |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5703 a = DoPost(_REMOTE, 'modalities/self/query', query) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5704 return len(DoGet(_REMOTE, '%s/answers' % a['Path'])) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5705 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5706 # This instance has "SeriesDescription" (0008,103e) tag, but no |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5707 # "ProtocolName" (0018,1030). Both of those tags are part of |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5708 # the "main DICOM tags" of Orthanc. |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5709 UploadInstance(_REMOTE, 'Issue137.dcm') |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5710 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5711 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5712 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5713 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5714 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5715 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5716 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5717 'Level' : 'Series', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5718 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5719 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5720 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5721 ## |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5722 ## "SeriesDescription" is present, and has VR "CS" => wildcard is allowed |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5723 ## http://dicom.nema.org/medical/dicom/2019e/output/chtml/part04/sect_C.2.2.2.4.html |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5724 ## |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5725 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5726 # At the study level, the "SeriesDescription" tag is not allowed, but |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5727 # is wiped out by the normalization |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5728 self.assertEqual(0, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5729 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5730 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5731 'SeriesDescription' : 'NOPE' |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5732 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5733 'Normalize' : False |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5734 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5735 self.assertEqual(0, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5736 # This test fails on Orthanc <= 1.5.8 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5737 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5738 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5739 'SeriesDescription' : '*' # Wildcard matching => no match, as the tag is absent |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5740 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5741 'Normalize' : False |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5742 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5743 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5744 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5745 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5746 'SeriesDescription' : 'THIS^VALUE^IS^WIPED^OUT' |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5747 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5748 'Normalize' : True |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5749 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5750 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5751 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5752 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5753 'SeriesDescription' : '*' # Matches, as wiped out by the normalization |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5754 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5755 'Normalize' : True |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5756 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5757 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5758 for normalize in [ True, False ]: |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5759 # At the series level, the "SeriesDescription" tag is allowed, and |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5760 # normalization has no effect |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5761 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5762 # "Universal matching" will match all entities, including |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5763 # those with the missing tag |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5764 # http://dicom.nema.org/medical/dicom/2019e/output/chtml/part04/sect_C.2.2.2.3.html |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5765 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5766 'Level' : 'Series', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5767 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5768 'SeriesDescription' : '' # Universal matching |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5769 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5770 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5771 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5772 # "Universal matching" will match all entities, including |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5773 # those with the missing tag |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5774 # http://dicom.nema.org/medical/dicom/2019e/output/chtml/part04/sect_C.2.2.2.3.html |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5775 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5776 'Level' : 'Series', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5777 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5778 'SeriesDescription' : '*' # Wildcard matching |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5779 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5780 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5781 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5782 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5783 'Level' : 'Series', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5784 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5785 'SeriesDescription' : '*model*' # The actual value is "STL model: intraop Report" |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5786 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5787 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5788 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5789 self.assertEqual(0, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5790 'Level' : 'Series', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5791 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5792 'SeriesDescription' : '*MISMATCHED^VALUE*' |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5793 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5794 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5795 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5796 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5797 # Universal matching matches any instance, even if the |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5798 # query is at the study-level, and thus if "SeriesDescription" |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5799 # makes no sense |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5800 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5801 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5802 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5803 'SeriesDescription' : '' # Universal matching |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5804 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5805 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5806 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5807 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5808 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5809 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5810 ## |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5811 ## "ProtocolName" is absent, and has VR "CS" => wildcard is allowed |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5812 ## |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5813 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5814 # At the study level, the "ProtocolName" tag is not allowed, but |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5815 # is wiped out by the normalization |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5816 self.assertEqual(0, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5817 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5818 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5819 'ProtocolName' : 'NOPE' |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5820 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5821 'Normalize' : False |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5822 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5823 self.assertEqual(0, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5824 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5825 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5826 'ProtocolName' : '*' # Wildcard matching => no match, as the tag is absent |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5827 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5828 'Normalize' : False |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5829 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5830 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5831 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5832 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5833 'ProtocolName' : 'THIS^VALUE^IS^WIPED^OUT' |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5834 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5835 'Normalize' : True |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5836 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5837 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5838 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5839 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5840 'ProtocolName' : '*' # Matches, as wiped out by the normalization |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5841 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5842 'Normalize' : True |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5843 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5844 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5845 for normalize in [ True, False ]: |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5846 # At the series level, the "ProtocolName" tag is allowed, and |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5847 # normalization has no effect |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5848 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5849 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5850 'Level' : 'Series', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5851 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5852 'ProtocolName' : '' # Universal matching |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5853 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5854 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5855 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5856 self.assertEqual(0, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5857 'Level' : 'Series', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5858 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5859 'ProtocolName' : '*' # Wildcard matching => no match, as the tag is absent |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5860 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5861 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5862 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5863 self.assertEqual(0, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5864 'Level' : 'Series', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5865 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5866 'ProtocolName' : '*MISMATCHED^VALUE*' |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5867 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5868 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5869 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5870 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5871 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5872 'Level' : 'Study', |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5873 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5874 'ProtocolName' : '' # Universal matching |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5875 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5876 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5877 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5878 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5879 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5880 ## |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5881 ## "StudyInstanceUID" is present, and has VR "UI" => wildcard is not allowed |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5882 ## |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5883 |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5884 for level in [ 'Study', 'Series' ] : |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5885 for normalize in [ True, False ]: |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5886 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5887 'Level' : level, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5888 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5889 'StudyInstanceUID' : '' # Universal matching |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5890 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5891 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5892 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5893 self.assertEqual(0, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5894 'Level' : level, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5895 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5896 'StudyInstanceUID' : 'MISMATCHED^VALUE' |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5897 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5898 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5899 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5900 self.assertEqual(1, CountAnswers({ |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5901 'Level' : level, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5902 'Query' : { |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5903 'StudyInstanceUID' : '4.5.6' # This is the actual value |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5904 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5905 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5906 })) |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5907 |
269 | 5908 # Wildcard matching is not allowed for this VR |
263
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5909 # This test fails on Orthanc <= 1.5.8 |
269 | 5910 self.assertRaises(Exception, lambda: CountAnswers({ |
263
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5911 'Level' : level, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5912 'Query' : { |
269 | 5913 'StudyInstanceUID' : '*' |
263
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5914 }, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5915 'Normalize' : normalize, |
a2719263fd04
test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
262
diff
changeset
|
5916 })) |
265 | 5917 |
5918 | |
5919 def test_rendered(self): | |
5920 # New in Orthanc 1.6.0 | |
5921 i = UploadInstance(_REMOTE, 'ColorTestMalaterre.dcm')['ID'] | |
5922 im = GetImage(_REMOTE, '/instances/%s/rendered' % i) | |
5923 self.assertEqual("RGB", im.mode) | |
5924 self.assertEqual(41, im.size[0]) | |
5925 self.assertEqual(41, im.size[1]) | |
5926 | |
5927 # http://effbot.org/zone/pil-comparing-images.htm | |
5928 truth = Image.open(GetDatabasePath('ColorTestMalaterre.png')) | |
5929 self.assertTrue(ImageChops.difference(im, truth).getbbox() is None) | |
5930 | |
5931 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10' % i) | |
5932 self.assertEqual("RGB", im.mode) | |
5933 self.assertEqual(10, im.size[0]) | |
5934 self.assertEqual(10, im.size[1]) | |
5935 | |
5936 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10' % i) | |
5937 self.assertEqual("RGB", im.mode) | |
5938 self.assertEqual(10, im.size[0]) | |
5939 self.assertEqual(10, im.size[1]) | |
5940 | |
5941 im = GetImage(_REMOTE, '/instances/%s/rendered?height=128' % i) | |
5942 self.assertEqual("RGB", im.mode) | |
5943 self.assertEqual(128, im.size[0]) | |
5944 self.assertEqual(128, im.size[1]) | |
5945 | |
5946 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10&smooth=0' % i) | |
5947 self.assertEqual("RGB", im.mode) | |
5948 self.assertEqual(10, im.size[0]) | |
5949 self.assertEqual(10, im.size[1]) | |
5950 | |
5951 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10&smooth=1' % i) | |
5952 self.assertEqual("RGB", im.mode) | |
5953 self.assertEqual(10, im.size[0]) | |
5954 self.assertEqual(10, im.size[1]) | |
5955 | |
5956 im = GetImage(_REMOTE, '/instances/%s/rendered?height=5&width=10' % i) | |
5957 self.assertEqual("RGB", im.mode) | |
5958 self.assertEqual(5, im.size[0]) | |
5959 self.assertEqual(5, im.size[1]) | |
5960 | |
5961 | |
5962 # Grayscale image | |
5963 i = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] | |
5964 im = GetImage(_REMOTE, '/instances/%s/rendered' % i) | |
5965 self.assertEqual("L", im.mode) | |
5966 self.assertEqual(288, im.size[0]) | |
5967 self.assertEqual(288, im.size[1]) | |
5968 self.assertEqual(0, im.getpixel((0, 0))) | |
5969 | |
5970 # Those are the original windowing parameters that are written | |
5971 # inside the DICOM file | |
5972 im2 = GetImage(_REMOTE, '/instances/%s/rendered?window-center=248.009544468547&window-width=431.351843817788' % i) | |
5973 self.assertEqual("L", im2.mode) | |
5974 self.assertEqual(288, im2.size[0]) | |
5975 self.assertEqual(288, im2.size[1]) | |
5976 self.assertTrue(ImageChops.difference(im, im2).getbbox() is None) | |
5977 | |
5978 im = GetImage(_REMOTE, '/instances/%s/rendered?width=512&smooth=0' % i) | |
5979 self.assertEqual("L", im.mode) | |
5980 self.assertEqual(512, im.size[0]) | |
5981 self.assertEqual(512, im.size[1]) | |
5982 | |
5983 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&smooth=0' % i) | |
5984 self.assertEqual("L", im.mode) | |
5985 self.assertEqual(10, im.size[0]) | |
5986 self.assertEqual(10, im.size[1]) | |
5987 | |
5988 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&smooth=1' % i) | |
5989 self.assertEqual("L", im.mode) | |
5990 self.assertEqual(10, im.size[0]) | |
5991 self.assertEqual(10, im.size[1]) | |
5992 | |
5993 im = GetImage(_REMOTE, '/instances/%s/rendered?width=1&window-center=-1000' % i) | |
5994 self.assertEqual("L", im.mode) | |
5995 self.assertEqual(1, im.size[0]) | |
5996 self.assertEqual(1, im.size[1]) | |
5997 self.assertEqual(255, im.getpixel((0, 0))) | |
5998 | |
5999 im = GetImage(_REMOTE, '/instances/%s/rendered?width=1&window-center=1000' % i) | |
6000 self.assertEqual("L", im.mode) | |
6001 self.assertEqual(1, im.size[0]) | |
6002 self.assertEqual(1, im.size[1]) | |
6003 self.assertEqual(0, im.getpixel((0, 0))) | |
6004 | |
6005 | |
6006 # Test monochrome 1 | |
6007 i = UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm')['ID'] | |
6008 im = GetImage(_REMOTE, '/instances/%s/rendered' % i) | |
6009 self.assertEqual("L", im.mode) | |
6010 self.assertEqual(2010, im.size[0]) | |
6011 self.assertEqual(2446, im.size[1]) | |
6012 self.assertEqual(0, im.getpixel((0, 0))) | |
6013 im = GetImage(_REMOTE, '/instances/%s/rendered?width=20' % i) | |
6014 self.assertEqual("L", im.mode) | |
6015 self.assertEqual(20, im.size[0]) | |
6016 self.assertEqual(24, im.size[1]) | |
6017 im = GetImage(_REMOTE, '/instances/%s/rendered?height=24' % i) | |
6018 self.assertEqual("L", im.mode) | |
6019 self.assertEqual(20, im.size[0]) | |
6020 self.assertEqual(24, im.size[1]) | |
6021 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&height=24' % i) | |
6022 self.assertEqual("L", im.mode) | |
6023 self.assertEqual(10, im.size[0]) | |
6024 self.assertEqual(12, im.size[1]) | |
6025 im = GetImage(_REMOTE, '/instances/%s/rendered?width=40&height=24' % i) | |
6026 self.assertEqual("L", im.mode) | |
6027 self.assertEqual(20, im.size[0]) | |
6028 self.assertEqual(24, im.size[1]) | |
268
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6029 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6030 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6031 def test_bitbucket_issue_154(self): |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6032 # "Matching against list of UID-s by C-MOVE" |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6033 # https://bugs.orthanc-server.com/show_bug.cgi?id=154 |
268
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6034 a = UploadInstance(_REMOTE, 'Issue154-d1.dcm') ['ID'] |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6035 b = UploadInstance(_REMOTE, 'Issue154-d2.dcm') ['ID'] |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6036 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6037 study = '1.2.826.0.1.3680043.8.498.35214236271657363033644818354280454731' |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6038 series1 = '1.2.826.0.1.3680043.8.498.12243321927795467590791662266352305113' |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6039 series2 = '1.2.826.0.1.3680043.8.498.43769499931624584079690260699536473555' |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6040 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6041 # C-FIND is working on list of UIDs |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6042 i = CallFindScu([ '-k', 'QueryRetrieveLevel=SERIES', |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6043 '-k', 'StudyInstanceUID=%s' % study, |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6044 '-k', 'SeriesInstanceUID=%s\\%s' % (series1, series2) ]) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6045 series = re.findall('\(0020,000e\).*?\[(.*?)\]', i) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6046 self.assertEqual(2, len(series)) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6047 self.assertTrue(series1 in series) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6048 self.assertTrue(series2 in series) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6049 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6050 # Individual retrieval is working in Orthanc < 1.6.0 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6051 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6052 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([ |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6053 '--study', '-k', 'QueryRetrieveLevel=SERIES', |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6054 '-k', 'StudyInstanceUID=%s' % study, |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6055 '-k', 'SeriesInstanceUID=%s' % series1, |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6056 ]))) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6057 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([ |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6058 '--study', '-k', 'QueryRetrieveLevel=SERIES', |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6059 '-k', 'StudyInstanceUID=%s' % study, |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6060 '-k', 'SeriesInstanceUID=%s' % series2, |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6061 ]))) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6062 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6063 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6064 DropOrthanc(_LOCAL) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6065 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6066 # But list matching is working only in Orthanc >= 1.6.0 |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6067 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6068 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([ |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6069 '--study', '-k', 'QueryRetrieveLevel=SERIES', |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6070 '-k', 'StudyInstanceUID=%s' % study, |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6071 '-k', 'SeriesInstanceUID=%s\\%s' % (series1, series2), |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6072 ]))) |
c8d79d8258cd
test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
267
diff
changeset
|
6073 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) |
279
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6074 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6075 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6076 def test_storage_commitment_api(self): |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6077 # Storage commitment is available since Orthanc 1.6.0 |
280
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6078 |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6079 def WaitTransaction(uid): |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6080 while True: |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6081 s = DoGet(_REMOTE, '/storage-commitment/%s' % uid) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6082 if s['Status'] != 'Pending': |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6083 return s |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6084 else: |
342
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
6085 time.sleep(0.01) |
280
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6086 |
281 | 6087 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') |
279
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6088 sopClassUid = '1.2.840.10008.5.1.4.1.1.4' |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6089 sopInstanceUid = '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6090 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6091 # Against self |
281 | 6092 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', { |
6093 "DicomInstances" : [ [ sopClassUid, sopInstanceUid ] ], | |
6094 }) ['ID'] | |
279
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6095 self.assertTrue(transaction.startswith('2.25.')) |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6096 |
280
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6097 result = WaitTransaction(transaction) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6098 self.assertEqual('ORTHANC', result['RemoteAET']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6099 self.assertEqual('Success', result['Status']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6100 self.assertEqual(1, len(result['Success'])) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6101 self.assertEqual(0, len(result['Failures'])) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6102 self.assertEqual(sopClassUid, result['Success'][0]['SOPClassUID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6103 self.assertEqual(sopInstanceUid, result['Success'][0]['SOPInstanceUID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6104 |
281 | 6105 tmp = DoPost(_REMOTE, '/modalities/self/storage-commitment', { |
6106 "DicomInstances" : [ | |
6107 { 'SOPClassUID' : sopClassUid, | |
6108 'SOPInstanceUID' : sopInstanceUid }, | |
6109 ], | |
6110 }) | |
6111 self.assertEqual(tmp['Path'], '/storage-commitment/%s' % tmp['ID']) | |
6112 self.assertEqual(result, WaitTransaction(transaction)) | |
6113 | |
6114 tmp = DoPost(_REMOTE, '/modalities/self/storage-commitment', { | |
6115 "Resources" : [ | |
6116 instance['ID'], | |
6117 instance['ParentSeries'], | |
6118 instance['ParentStudy'], | |
6119 instance['ParentPatient'], | |
6120 ] | |
6121 }) | |
280
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6122 self.assertEqual(tmp['Path'], '/storage-commitment/%s' % tmp['ID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6123 self.assertEqual(result, WaitTransaction(transaction)) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6124 |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6125 |
281 | 6126 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', { |
6127 "DicomInstances" : [ | |
6128 [ 'nope', 'nope2' ], | |
6129 [ sopClassUid, sopInstanceUid ], | |
6130 ], | |
6131 }) ['ID'] | |
279
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6132 self.assertTrue(transaction.startswith('2.25.')) |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6133 |
280
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6134 result = WaitTransaction(transaction) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6135 self.assertEqual('ORTHANC', result['RemoteAET']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6136 self.assertEqual('Failure', result['Status']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6137 self.assertEqual(1, len(result['Success'])) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6138 self.assertEqual(1, len(result['Failures'])) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6139 self.assertEqual(sopClassUid, result['Success'][0]['SOPClassUID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6140 self.assertEqual(sopInstanceUid, result['Success'][0]['SOPInstanceUID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6141 self.assertEqual('nope', result['Failures'][0]['SOPClassUID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6142 self.assertEqual('nope2', result['Failures'][0]['SOPInstanceUID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6143 self.assertEqual(274, result['Failures'][0]['FailureReason']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6144 |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6145 # Cannot remove items from a failed storage commitment transaction |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6146 self.assertRaises(Exception, lambda: |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6147 DoPost(_REMOTE, '/storage-commitment/%s/remove' % transaction)) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6148 |
279
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6149 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6150 # Against Orthanc 0.8.6, that does not support storage commitment |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6151 if not IsOrthancVersionAbove(_LOCAL, 1, 11, 2): # don't know which specific version the behaviour changed but this fails with 0.8.6 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6152 self.assertRaises(Exception, lambda: |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6153 DoPost(_REMOTE, '/modalities/orthanctest/storage-commitment', { |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6154 "DicomInstances" : [ |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6155 [ sopClassUid, sopInstanceUid ], |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6156 ] |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6157 })) |
279
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6158 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6159 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6160 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6161 def test_storage_commitment_store(self): |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6162 # Storage commitment is available since Orthanc 1.6.0 |
280
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6163 |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6164 def WaitTransaction(uid): |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6165 while True: |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6166 s = DoGet(_REMOTE, '/storage-commitment/%s' % uid) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6167 if s['Status'] != 'Pending': |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6168 return s |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6169 else: |
342
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
6170 time.sleep(0.01) |
280
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6171 |
279
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6172 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6173 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6174 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6175 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6176 # The Orthanc 0.8.6 from "_LOCAL" does not support storage commitment |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6177 if not IsOrthancVersionAbove(_LOCAL, 1, 11, 2): # don't know which specific version the behaviour changed but this fails with 0.8.6 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6178 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/modalities/orthanctest/store', { |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6179 'Resources' : [ i ], |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6180 'StorageCommitment' : True, |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6181 })) |
279
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6182 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6183 j = DoPost(_REMOTE, '/modalities/orthanctest/store', { |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6184 'Resources' : [ i ], |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6185 'StorageCommitment' : False, |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6186 }) |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6187 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6188 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6189 j = DoPost(_REMOTE, '/modalities/self/store', { |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6190 'Resources' : [ i ], |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6191 'StorageCommitment' : True, |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6192 }) |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6193 |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6194 transaction = j['StorageCommitmentTransactionUID'] |
31e1e49df380
starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
269
diff
changeset
|
6195 self.assertTrue(transaction.startswith('2.25.')) |
280
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6196 |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6197 result = WaitTransaction(transaction) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6198 self.assertEqual('ORTHANC', result['RemoteAET']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6199 self.assertEqual('Success', result['Status']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6200 self.assertEqual(1, len(result['Success'])) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6201 self.assertEqual(0, len(result['Failures'])) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6202 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', result['Success'][0]['SOPClassUID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6203 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6204 result['Success'][0]['SOPInstanceUID']) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6205 |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6206 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6207 DoPost(_REMOTE, '/storage-commitment/%s/remove' % transaction) |
5daa3896981c
testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
279
diff
changeset
|
6208 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
285
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6209 |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6210 |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6211 def test_store_straight(self): # New in Orthanc 1.6.1 |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6212 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6213 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6214 |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6215 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6216 dicom = f.read() |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6217 |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6218 self.assertRaises(Exception, lambda: DoPost( |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6219 _REMOTE, '/modalities/orthanctest/store-straight', 'nope', 'nope')) |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6220 |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6221 answer = DoPost(_REMOTE, '/modalities/orthanctest/store-straight', dicom, 'nope') |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6222 |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6223 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6224 answer['SOPClassUID']) |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6225 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6226 answer['SOPInstanceUID']) |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6227 |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6228 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) |
281a32ecc5c1
test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
281
diff
changeset
|
6229 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
289
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6230 |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6231 |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6232 def test_storescu_transcoding(self): # New in Orthanc 1.7.0 |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6233 # Add a RLE-encoded DICOM file |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6234 i = UploadInstance(_REMOTE, 'TransferSyntaxes/1.2.840.10008.1.2.5.dcm')['ID'] |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6235 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6236 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6237 rleSize = len(DoGet(_REMOTE, '/instances/%s/file' % i)) |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6238 |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6239 # Export the instance, with transcoding: "_REMOTE" is the |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6240 # Orthanc server being tested |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6241 try: |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6242 DoDelete(_REMOTE, '/modalities/toto') |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6243 except: |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6244 pass |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6245 |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6246 params = DoGet(_REMOTE, '/modalities?expand') ['orthanctest'] |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6247 DoPut(_REMOTE, '/modalities/toto', params) |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6248 DoPost(_REMOTE, '/modalities/toto/store', str(i), 'text/plain') |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6249 j = DoGet(_LOCAL, '/instances') |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6250 self.assertEqual(1, len(j)) |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6251 uncompressedSize = len(DoGet(_LOCAL, '/instances/%s/file' % j[0])) |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6252 self.assertTrue(uncompressedSize > rleSize / 2) |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6253 |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6254 # Export, with transcoding disabled => this fails with 0.8.6 but not with more recent versions |
289
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6255 params['AllowTranscoding'] = False |
4a70411ac9ad
test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
285
diff
changeset
|
6256 DoPut(_REMOTE, '/modalities/toto', params) |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6257 if not IsOrthancVersionAbove(_LOCAL, 1, 11, 2): # don't know which specific version the behaviour changed but this fails with 0.8.6 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6258 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/modalities/toto/store', str(i), 'text/plain')) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6259 else: |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
6260 DoPost(_REMOTE, '/modalities/toto/store', str(i), 'text/plain') |
378
a4b8450a1158
fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
377
diff
changeset
|
6261 DoDelete(_REMOTE, '/modalities/toto') |
290
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6262 |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6263 |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6264 def test_bitbucket_issue_169(self): |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6265 with open(GetDatabasePath('Issue169.dcm.bz2'), 'rb') as f: |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6266 dicom = bz2.decompress(f.read()) |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6267 |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6268 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(dicom)) |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6269 |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6270 self.assertEqual(44350560, len(dicom)) |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6271 i = DoPost(_REMOTE, '/instances', dicom, 'application/dicom') ['ID'] |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6272 |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6273 tags = DoGet(_REMOTE, '/instances/%s/tags' % i) |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6274 self.assertEqual('NORMAL', tags['1337,1001']['Value']) |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6275 |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6276 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6277 DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain') |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6278 j = DoGet(_LOCAL, '/instances') |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6279 self.assertEqual(1, len(j)) |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6280 |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6281 # In Orthanc <= 1.6.1, transfer syntax changed from "Explicit |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6282 # VR Little Endian" (1.2.840.10008.1.2.1) to "Implicit VR |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6283 # Little Endian" (1.2.840.10008.1.2) |
291
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6284 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax( |
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6285 DoGet(_LOCAL, '/instances/%s/file' % j[0]))) |
290
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6286 |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6287 # In Orthanc <= 1.6.1, the value of the private tags was lost |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6288 # because of this transcoding |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6289 tags = DoGet(_LOCAL, '/instances/%s/tags' % j[0]) |
b5333f87065b
test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
289
diff
changeset
|
6290 self.assertEqual('NORMAL', tags['1337,1001']['Value']) |
291
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6291 |
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6292 |
302
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6293 def test_modify_transcode_instance(self): |
291
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6294 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID'] |
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6295 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax( |
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6296 DoGet(_REMOTE, '/instances/%s/file' % i))) |
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6297 |
299
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6298 a = ExtractDicomTags(DoGet(_REMOTE, '/instances/%s/file' % i), [ 'SOPInstanceUID' ]) [0] |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6299 self.assertTrue(len(a) > 20) |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6300 |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6301 SYNTAXES = [ |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6302 '1.2.840.10008.1.2', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6303 '1.2.840.10008.1.2.1', |
300
d6c2eb5a2603
disabling test on Deflated Explicit VR Little Endian
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
299
diff
changeset
|
6304 #'1.2.840.10008.1.2.1.99', # Deflated Explicit VR Little Endian (cannot be decoded in debug mode if Orthanc is statically linked against DCMTK 3.6.5) |
299
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6305 '1.2.840.10008.1.2.2', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6306 '1.2.840.10008.1.2.4.50', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6307 '1.2.840.10008.1.2.4.51', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6308 '1.2.840.10008.1.2.4.57', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6309 '1.2.840.10008.1.2.4.70', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6310 ] |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6311 |
304 | 6312 if HasGdcmPlugin(_REMOTE): |
299
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6313 SYNTAXES = SYNTAXES + [ |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6314 '1.2.840.10008.1.2.4.80', # This makes DCMTK 3.6.2 crash |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6315 '1.2.840.10008.1.2.4.81', # This makes DCMTK 3.6.2 crash |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6316 '1.2.840.10008.1.2.4.90', # JPEG2k, unavailable without GDCM |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6317 '1.2.840.10008.1.2.4.91', # JPEG2k, unavailable without GDCM |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6318 ] |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6319 |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6320 for syntax in SYNTAXES: |
291
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6321 transcoded = DoPost(_REMOTE, '/instances/%s/modify' % i, { |
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6322 'Transcode' : syntax, |
299
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6323 'Keep' : [ 'SOPInstanceUID' ], |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6324 'Force' : True, |
291
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6325 }) |
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6326 |
cfa785074c64
test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
290
diff
changeset
|
6327 self.assertEqual(syntax, GetTransferSyntax(transcoded)) |
292
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6328 |
299
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6329 b = ExtractDicomTags(transcoded, [ 'SOPInstanceUID' ]) [0] |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6330 self.assertTrue(len(b) > 20) |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6331 if syntax in [ '1.2.840.10008.1.2.4.50', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6332 '1.2.840.10008.1.2.4.51', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6333 '1.2.840.10008.1.2.4.81', |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6334 '1.2.840.10008.1.2.4.91' ]: |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6335 # Lossy transcoding: The SOP instance UID must have changed |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6336 self.assertNotEqual(a, b) |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6337 else: |
c2144cf4bd83
HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
293
diff
changeset
|
6338 self.assertEqual(a, b) |
292
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6339 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6340 def test_archive_transcode(self): |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6341 info = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm') |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6342 |
293
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6343 # GET on "/media" |
292
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6344 z = GetArchive(_REMOTE, '/patients/%s/media' % info['ParentPatient']) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6345 self.assertEqual(2, len(z.namelist())) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6346 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(z.read('IMAGES/IM0'))) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6347 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6348 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/patients/%s/media?transcode=nope' % info['ParentPatient'])) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6349 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6350 z = GetArchive(_REMOTE, '/patients/%s/media?transcode=1.2.840.10008.1.2.4.50' % info['ParentPatient']) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6351 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax(z.read('IMAGES/IM0'))) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6352 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6353 z = GetArchive(_REMOTE, '/studies/%s/media?transcode=1.2.840.10008.1.2.4.51' % info['ParentStudy']) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6354 self.assertEqual('1.2.840.10008.1.2.4.51', GetTransferSyntax(z.read('IMAGES/IM0'))) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6355 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6356 z = GetArchive(_REMOTE, '/series/%s/media?transcode=1.2.840.10008.1.2.4.57' % info['ParentSeries']) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6357 self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(z.read('IMAGES/IM0'))) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6358 |
293
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6359 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6360 # POST on "/media" |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6361 self.assertRaises(Exception, lambda: PostArchive( |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6362 _REMOTE, '/patients/%s/media' % info['ParentPatient'], { 'Transcode' : 'nope' })) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6363 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6364 z = PostArchive(_REMOTE, '/patients/%s/media' % info['ParentPatient'], { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6365 'Transcode' : '1.2.840.10008.1.2.4.50', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6366 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6367 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax(z.read('IMAGES/IM0'))) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6368 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6369 z = PostArchive(_REMOTE, '/studies/%s/media' % info['ParentStudy'], { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6370 'Transcode' : '1.2.840.10008.1.2.4.51', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6371 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6372 self.assertEqual('1.2.840.10008.1.2.4.51', GetTransferSyntax(z.read('IMAGES/IM0'))) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6373 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6374 z = PostArchive(_REMOTE, '/series/%s/media' % info['ParentSeries'], { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6375 'Transcode' : '1.2.840.10008.1.2.4.57', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6376 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6377 self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(z.read('IMAGES/IM0'))) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6378 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6379 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6380 # GET on "/archive" |
292
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6381 z = GetArchive(_REMOTE, '/patients/%s/archive' % info['ParentPatient']) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6382 self.assertEqual(1, len(z.namelist())) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6383 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(z.read(z.namelist()[0]))) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6384 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6385 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/patients/%s/archive?transcode=nope' % info['ParentPatient'])) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6386 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6387 z = GetArchive(_REMOTE, '/patients/%s/archive?transcode=1.2.840.10008.1.2' % info['ParentPatient']) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6388 self.assertEqual('1.2.840.10008.1.2', GetTransferSyntax(z.read(z.namelist()[0]))) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6389 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6390 z = GetArchive(_REMOTE, '/studies/%s/archive?transcode=1.2.840.10008.1.2.2' % info['ParentStudy']) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6391 self.assertEqual('1.2.840.10008.1.2.2', GetTransferSyntax(z.read(z.namelist()[0]))) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6392 |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6393 z = GetArchive(_REMOTE, '/series/%s/archive?transcode=1.2.840.10008.1.2.4.70' % info['ParentSeries']) |
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6394 self.assertEqual('1.2.840.10008.1.2.4.70', GetTransferSyntax(z.read(z.namelist()[0]))) |
293
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6395 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6396 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6397 # POST on "/archive" |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6398 self.assertRaises(Exception, lambda: PostArchive( |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6399 _REMOTE, '/patients/%s/archive' % info['ParentPatient'], { 'Transcode' : 'nope' })) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6400 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6401 z = PostArchive(_REMOTE, '/patients/%s/archive' % info['ParentPatient'], { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6402 'Transcode' : '1.2.840.10008.1.2.4.50', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6403 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6404 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax(z.read(z.namelist()[0]))) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6405 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6406 z = PostArchive(_REMOTE, '/studies/%s/archive' % info['ParentStudy'], { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6407 'Transcode' : '1.2.840.10008.1.2.4.51', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6408 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6409 self.assertEqual('1.2.840.10008.1.2.4.51', GetTransferSyntax(z.read(z.namelist()[0]))) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6410 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6411 z = PostArchive(_REMOTE, '/series/%s/archive' % info['ParentSeries'], { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6412 'Transcode' : '1.2.840.10008.1.2.4.57', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6413 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6414 self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(z.read(z.namelist()[0]))) |
292
e1827a4f5d3b
test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
291
diff
changeset
|
6415 |
293
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6416 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6417 # "/tools/create-*" |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6418 z = PostArchive(_REMOTE, '/tools/create-archive', { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6419 'Resources' : [ info['ParentStudy'] ], |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6420 'Transcode' : '1.2.840.10008.1.2.4.50', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6421 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6422 self.assertEqual(1, len(z.namelist())) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6423 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax(z.read(z.namelist()[0]))) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6424 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6425 z = PostArchive(_REMOTE, '/tools/create-media', { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6426 'Resources' : [ info['ParentStudy'] ], |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6427 'Transcode' : '1.2.840.10008.1.2.4.51', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6428 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6429 self.assertEqual(2, len(z.namelist())) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6430 self.assertEqual('1.2.840.10008.1.2.4.51', GetTransferSyntax(z.read('IMAGES/IM0'))) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6431 |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6432 z = PostArchive(_REMOTE, '/tools/create-media-extended', { |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6433 'Resources' : [ info['ParentStudy'] ], |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6434 'Transcode' : '1.2.840.10008.1.2.4.57', |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6435 }) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6436 self.assertEqual(2, len(z.namelist())) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6437 self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(z.read('IMAGES/IM0'))) |
032722c3e919
extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
6438 |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6439 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6440 z = GetArchive(_REMOTE, '/tools/create-archive?resources=%s&transcode=1.2.840.10008.1.2.4.50' % info['ParentStudy']) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6441 self.assertEqual(1, len(z.namelist())) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6442 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax(z.read(z.namelist()[0]))) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6443 |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6444 z = GetArchive(_REMOTE, '/tools/create-media?resources=%s&transcode=1.2.840.10008.1.2.4.51' % info['ParentStudy']) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6445 self.assertEqual(2, len(z.namelist())) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6446 self.assertEqual('1.2.840.10008.1.2.4.51', GetTransferSyntax(z.read('IMAGES/IM0'))) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6447 |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6448 z = GetArchive(_REMOTE, '/tools/create-media-extended?resources=%s&transcode=1.2.840.10008.1.2.4.57' % info['ParentStudy']) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6449 self.assertEqual(2, len(z.namelist())) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6450 self.assertEqual('1.2.840.10008.1.2.4.57', GetTransferSyntax(z.read('IMAGES/IM0'))) |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6451 |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6452 |
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
6453 |
308 | 6454 |
587 | 6455 def test_download_file_transcode(self): |
6456 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): | |
6457 | |
6458 info = UploadInstance(_REMOTE, 'TransferSyntaxes/1.2.840.10008.1.2.1.dcm') | |
6459 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax( | |
6460 DoGet(_REMOTE, '/instances/%s/file' % info['ID']))) | |
6461 | |
6462 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax( | |
6463 DoGet(_REMOTE, '/instances/%s/file?transcode=1.2.840.10008.1.2.4.50' % info['ID']))) | |
6464 | |
6465 | |
301
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6466 def test_modify_keep_source(self): |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6467 # https://groups.google.com/d/msg/orthanc-users/CgU-Wg8vDio/BY5ZWcDEAgAJ |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6468 i = UploadInstance(_REMOTE, 'DummyCT.dcm') |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6469 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6470 |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6471 j = DoPost(_REMOTE, '/studies/%s/modify' % i['ParentStudy'], { |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6472 'Replace' : { |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6473 'StationName' : 'TEST', |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6474 }, |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6475 'KeepSource' : True, |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6476 }) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6477 |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6478 s = DoGet(_REMOTE, '/studies') |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6479 self.assertEqual(2, len(s)) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6480 self.assertTrue(i['ParentStudy'] in s) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6481 self.assertTrue(j['ID'] in s) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6482 |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6483 DoDelete(_REMOTE, '/studies/%s' % j['ID']) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6484 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6485 |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6486 j = DoPost(_REMOTE, '/studies/%s/modify' % i['ParentStudy'], { |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6487 'Replace' : { |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6488 'StationName' : 'TEST', |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6489 }, |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6490 'KeepSource' : False, |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6491 }) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6492 |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6493 s = DoGet(_REMOTE, '/studies') |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6494 self.assertEqual(1, len(s)) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6495 self.assertFalse(i['ParentStudy'] in s) |
6652d5720a45
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
300
diff
changeset
|
6496 self.assertTrue(j['ID'] in s) |
302
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6497 |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6498 |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6499 def test_modify_transcode_study(self): |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6500 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm') |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6501 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax( |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6502 DoGet(_REMOTE, '/instances/%s/file' % i['ID']))) |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6503 |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6504 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6505 j = DoPost(_REMOTE, '/studies/%s/modify' % i['ParentStudy'], { |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6506 'Transcode' : '1.2.840.10008.1.2.4.50', |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6507 'KeepSource' : False |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6508 }) |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6509 |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6510 k = DoGet(_REMOTE, '/instances') |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6511 self.assertEqual(1, len(k)) |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6512 self.assertEqual(i['ID'], DoGet(_REMOTE, '/instances/%s/metadata?expand' % k[0]) ['ModifiedFrom']) |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6513 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax( |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6514 DoGet(_REMOTE, '/instances/%s/file' % k[0]))) |
22b6dd0f8c84
test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
301
diff
changeset
|
6515 |
305
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6516 |
498
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6517 def test_modify_need_force_to_change_uids(self): |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6518 def Modify(level, resourceId, replaceTags, force, keepSource): |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6519 return DoPost(_REMOTE, '/%s/%s/modify' % (level, resourceId), { |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6520 'Replace' : replaceTags, |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6521 'Force': force, |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6522 'KeepSource' : keepSource |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6523 }) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6524 |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6525 self.assertEqual(0, len(DoGet(_REMOTE, '/studies'))) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6526 |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6527 i = UploadInstance(_REMOTE, 'DummyCT.dcm') |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6528 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6529 |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6530 # can not change the StudyInstanceUID unless you force it |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6531 self.assertRaises(Exception, lambda: Modify('studies', i['ParentStudy'], {'StudyInstanceUID': '1.2'}, force=False, keepSource=True)) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6532 Modify('studies', i['ParentStudy'], {'StudyInstanceUID': '1.2'}, force=True, keepSource=True) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6533 |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6534 # can not change the SeriesInstanceUID unless you force it |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6535 self.assertRaises(Exception, lambda: Modify('series', i['ParentSeries'], {'SeriesInstanceUID': '1.2'}, force=False, keepSource=True)) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6536 Modify('series', i['ParentSeries'], {'SeriesInstanceUID': '1.2'}, force=True, keepSource=True) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6537 |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6538 # can not change the SOPInstanceUID unless you force it |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6539 self.assertRaises(Exception, lambda: Modify('instances', i['ID'], {'SOPInstanceUID': '1.2'}, force=False, keepSource=True)) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6540 Modify('instances', i['ID'], {'SOPInstanceUID': '1.2'}, force=True, keepSource=True) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6541 |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6542 |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6543 # can not change the PatientID of a study unless you force it |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6544 self.assertRaises(Exception, lambda: Modify('studies', i['ParentStudy'], {'PatientID': 'NEW'}, force=False, keepSource=True)) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6545 self.assertRaises(Exception, lambda: Modify('series', i['ParentSeries'], {'StudyInstanceUID': '1.3'}, force=False, keepSource=True)) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6546 self.assertRaises(Exception, lambda: Modify('instances', i['ID'], {'SeriesInstanceUID': '1.2'}, force=False, keepSource=True)) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6547 |
500 | 6548 if IsOrthancVersionAbove(_REMOTE, 1, 11, 3): |
498
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6549 # this was forbidden even with Force=true till 1.11.2 included |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6550 Modify('studies', i['ParentStudy'], {'PatientID': 'NEW'}, force=True, keepSource=True) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6551 Modify('series', i['ParentSeries'], {'StudyInstanceUID': '1.3'}, force=True, keepSource=True) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6552 Modify('instances', i['ID'], {'SeriesInstanceUID': '1.2'}, force=True, keepSource=True) |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6553 |
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6554 |
504
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6555 def test_modify_study_module_reconstruction(self): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6556 if IsOrthancVersionAbove(_REMOTE, 1, 11, 3): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6557 def UploadAndModify(level, resourceId, replaceTags, force, keepSource, dropOrthanc=True): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6558 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6559 if dropOrthanc: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6560 DropOrthanc(_REMOTE) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6561 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6562 UploadFolder(_REMOTE, 'Knee/T1') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6563 UploadFolder(_REMOTE, 'Knee/T2') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6564 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6565 if dropOrthanc: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6566 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6567 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6568 modifyResponse = DoPost(_REMOTE, '/%s/%s/modify' % (level, resourceId), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6569 'Replace' : replaceTags, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6570 'Force': force, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6571 'KeepSource' : keepSource |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6572 }) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6573 modifiedResource = DoGet(_REMOTE, '/%s/%s' % (level, modifyResponse['ID'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6574 return (modifyResponse, modifiedResource) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6575 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6576 kneeSeriesT1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6577 kneeSeriesT2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6578 kneeStudy = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6579 kneePatient = 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6580 kneeStudyInstanceUID = '2.16.840.1.113669.632.20.121711.10000160881' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6581 kneeSeriesInstanceUIDT1 = '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6582 kneeSeriesInstanceUIDT2 = '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6583 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6584 ####### study level tests ####### |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6585 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6586 # modify study description and make sure the MainDicomTags are updated |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6587 modifyResponse, modifiedResource = UploadAndModify('studies', kneeStudy, replaceTags={ |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6588 'StudyInstanceUID': kneeStudyInstanceUID, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6589 'StudyDescription': 'TOTO' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6590 }, force=True, keepSource=True) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6591 self.assertEqual(kneeStudy, modifyResponse['ID']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6592 self.assertEqual('TOTO', modifiedResource['MainDicomTags']['StudyDescription']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6593 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6594 # modify patient name at study level and make sure the PatientMainDicomTags are updated + the patient has been updated |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6595 modifyResponse, modifiedResource = UploadAndModify('studies', kneeStudy, replaceTags={ |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6596 'StudyInstanceUID': kneeStudyInstanceUID, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6597 'PatientName': 'TOTO' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6598 }, force=True, keepSource=True) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6599 self.assertEqual(kneeStudy, modifyResponse['ID']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6600 self.assertEqual('TOTO', modifiedResource['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6601 patient = DoGet(_REMOTE, '/patients/%s' % kneePatient) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6602 self.assertEqual('TOTO', patient['MainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6603 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6604 # modify patient name and patient id at study level and make sure the PatientMainDicomTags are updated + a new patient has been created + the old one does not exist anymore |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6605 modifyResponse, modifiedResource = UploadAndModify('studies', kneeStudy, replaceTags={ |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6606 'StudyInstanceUID': kneeStudyInstanceUID, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6607 'PatientID': 'TOTO_ID', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6608 'PatientName': 'TOTO' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6609 }, force=True, keepSource=True) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6610 self.assertNotEqual(kneeStudy, modifyResponse['ID']) # the study has changed since the PatientID has changed |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6611 self.assertEqual('TOTO', modifiedResource['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6612 self.assertEqual('TOTO_ID', modifiedResource['PatientMainDicomTags']['PatientID']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6613 patient = DoGet(_REMOTE, '/patients/%s' % modifyResponse['PatientID']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6614 self.assertEqual('TOTO', patient['MainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6615 self.assertEqual('TOTO_ID', patient['MainDicomTags']['PatientID']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6616 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6617 ####### series level tests ####### |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6618 # modify series description and make sure the MainDicomTags are updated |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6619 modifyResponse, modifiedResource = UploadAndModify('series', kneeStudy, replaceTags={ |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6620 'SeriesInstanceUID': kneeSeriesInstanceUIDT1, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6621 'StudyInstanceUID': kneeStudyInstanceUID, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6622 'SeriesDescription': 'TOTO' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6623 }, force=True, keepSource=True) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6624 self.assertEqual(kneeSeriesT1, modifyResponse['ID']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6625 self.assertEqual('TOTO', modifiedResource['MainDicomTags']['SeriesDescription']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6626 self.assertEqual(kneeStudy, modifyResponse['ParentResources'][0]) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6627 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6628 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6629 def test_rename_patient_with_multiple_studies(self): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6630 if IsOrthancVersionAbove(_REMOTE, 1, 11, 3): |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6631 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6632 patientOrthancId = '5436938e-7ae68340-5ea6ad3c-4e6e09bd-1bd335de' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6633 patientDicomId = 'TEST_1' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6634 patientName = 'Test' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6635 study1234 = '72de3b86-da4b2556-bb33f32f-d1d84f80-fb017059' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6636 study2345 = '3594f32b-dcf60e81-58252b67-66222714-c09fca81' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6637 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6638 DropOrthanc(_REMOTE) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6639 UploadFolder(_REMOTE, 'PatientWith2studies') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6640 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6641 # each sub-test is in a dedicated 'if' for clarity |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6642 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6643 if True: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6644 # it shall be impossible to rename a patient when modifying a study if that patient already has other studies |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6645 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/%s/%s/modify' % ('studies', study1234), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6646 'Replace' : {'PatientName': "TOTO"}, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6647 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6648 'KeepSource' : True |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6649 })) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6650 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6651 if True: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6652 # rename the patient (at patient level) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6653 modifyResponse = DoPost(_REMOTE, '/%s/%s/modify' % ('patients', patientOrthancId), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6654 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6655 'PatientName': 'TOTO' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6656 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6657 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6658 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6659 }) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6660 modifiedPatient = DoGet(_REMOTE, '/%s/%s' % ('patients', modifyResponse['ID'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6661 # make sure the patient name has been edited at patient level |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6662 self.assertEqual('TOTO', modifiedPatient['MainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6663 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6664 # there should only be 2 studies since we have set KeepSource=False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6665 self.assertEqual(2, len(modifiedPatient['Studies'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6666 modifiedStudy1 = DoGet(_REMOTE, '/%s/%s' % ('studies', modifiedPatient['Studies'][0])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6667 modifiedStudy2 = DoGet(_REMOTE, '/%s/%s' % ('studies', modifiedPatient['Studies'][1])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6668 self.assertEqual('TOTO', modifiedStudy1['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6669 self.assertEqual('TOTO', modifiedStudy2['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6670 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6671 if True: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6672 # rename the patient (at patient level) and don't keep sources and preserve StudyInstanceUID |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6673 DropOrthanc(_REMOTE) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6674 UploadFolder(_REMOTE, 'PatientWith2studies') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6675 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6676 # rename the patient (at patient level) and don't keep sources and preserve StudyInstanceUID, SeriesInstanceUID |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6677 modifyResponse = DoPost(_REMOTE, '/%s/%s/modify' % ('patients', patientOrthancId), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6678 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6679 'PatientName': 'TOTO' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6680 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6681 'Keep': ['StudyInstanceUID', 'SeriesInstanceUID'], |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6682 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6683 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6684 }) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6685 modifiedPatient = DoGet(_REMOTE, '/%s/%s' % ('patients', modifyResponse['ID'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6686 # make sure tha patient name has been edited at patient level |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6687 self.assertEqual('TOTO', modifiedPatient['MainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6688 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6689 # there should only be 2 studies since we have set KeepSource=False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6690 self.assertEqual(2, len(modifiedPatient['Studies'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6691 modifiedStudy1 = DoGet(_REMOTE, '/%s/%s' % ('studies', modifiedPatient['Studies'][0])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6692 modifiedStudy2 = DoGet(_REMOTE, '/%s/%s' % ('studies', modifiedPatient['Studies'][1])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6693 # the StudyInstanceUID shall not have changed |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6694 self.assertIn(modifiedStudy1['MainDicomTags']['StudyInstanceUID'], ['1.2.3', '2.3.4']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6695 self.assertIn(modifiedStudy2['MainDicomTags']['StudyInstanceUID'], ['1.2.3', '2.3.4']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6696 # the DB model of parent shall have been reconstructed |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6697 self.assertEqual('TOTO', modifiedStudy1['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6698 self.assertEqual('TOTO', modifiedStudy2['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6699 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6700 if True: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6701 # it shall not be possible to keep all dicom UID and have KeepSource at False since the modified instances |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6702 # would have the same orthanc ids as the source ids -> they would be deleted |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6703 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/%s/%s/modify' % ('patients', study1234), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6704 'Replace' : {'PatientName': "TOTO"}, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6705 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6706 'Keep': ['StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID'], |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6707 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6708 })) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6709 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6710 if True: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6711 # rename the patient (at patient level) and don't keep sources and preserve all DicomID |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6712 DropOrthanc(_REMOTE) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6713 UploadFolder(_REMOTE, 'PatientWith2studies') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6714 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6715 # rename the patient (at patient level) and don't keep sources and preserve StudyInstanceUID |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6716 modifyResponse = DoPost(_REMOTE, '/%s/%s/modify' % ('patients', patientOrthancId), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6717 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6718 'PatientName': 'TOTO' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6719 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6720 'Keep': ['StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID'], |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6721 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6722 'KeepSource' : True |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6723 }) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6724 modifiedPatient = DoGet(_REMOTE, '/%s/%s' % ('patients', modifyResponse['ID'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6725 # make sure tha patient name has been edited at patient level |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6726 self.assertEqual('TOTO', modifiedPatient['MainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6727 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6728 # there should only be 2 studies since we have set KeepSource=False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6729 self.assertEqual(2, len(modifiedPatient['Studies'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6730 modifiedStudy1 = DoGet(_REMOTE, '/%s/%s' % ('studies', modifiedPatient['Studies'][0])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6731 modifiedStudy2 = DoGet(_REMOTE, '/%s/%s' % ('studies', modifiedPatient['Studies'][1])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6732 # the StudyInstanceUID shall not have changed |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6733 self.assertIn(modifiedStudy1['MainDicomTags']['StudyInstanceUID'], ['1.2.3', '2.3.4']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6734 self.assertIn(modifiedStudy2['MainDicomTags']['StudyInstanceUID'], ['1.2.3', '2.3.4']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6735 # the DB model of parent shall have been reconstructed |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6736 self.assertEqual('TOTO', modifiedStudy1['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6737 self.assertEqual('TOTO', modifiedStudy2['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6738 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6739 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6740 if True: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6741 # try to attach the knee study to an existing patient |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6742 DropOrthanc(_REMOTE) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6743 UploadFolder(_REMOTE, 'PatientWith2studies') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6744 UploadFolder(_REMOTE, 'Knee/T1') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6745 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6746 kneeStudy = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6747 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6748 # try to change the PatientID at study level. This only works if we specify all Patient Tags and if they are identical to the existing Patient in DB |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6749 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6750 # this should fail if only specifying the PatientID |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6751 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/%s/%s/modify' % ('studies', kneeStudy), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6752 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6753 'PatientID': 'TEST_1' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6754 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6755 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6756 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6757 })) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6758 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6759 # this should fail if specifying all tags but one of them is not correct |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6760 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/%s/%s/modify' % ('studies', kneeStudy), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6761 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6762 'PatientID': 'TEST_1', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6763 'PatientName': 'Test', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6764 'PatientBirthDate': '19000101', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6765 'PatientSex': 'F' # this is wrong ! |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6766 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6767 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6768 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6769 })) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6770 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6771 # this should fail if specifying a tag that is not defined in DB for that patient |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6772 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/%s/%s/modify' % ('studies', kneeStudy), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6773 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6774 'PatientID': 'TEST_1', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6775 'PatientName': 'Test', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6776 'PatientBirthDate': '19000101', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6777 'PatientSex': 'M', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6778 '0010,1000': 'TUTU' # this does not exist in DB |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6779 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6780 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6781 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6782 })) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6783 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6784 # this should now work with all correct tags |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6785 modifyResponse = DoPost(_REMOTE, '/%s/%s/modify' % ('studies', kneeStudy), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6786 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6787 'PatientID': 'TEST_1', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6788 'PatientName': 'Test', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6789 'PatientBirthDate': '19000101', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6790 'PatientSex': 'M' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6791 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6792 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6793 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6794 }) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6795 modifiedStudy = DoGet(_REMOTE, '/%s/%s' % ('studies', modifyResponse['ID'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6796 self.assertEqual('Test', modifiedStudy['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6797 patient = DoGet(_REMOTE, '/%s/%s' % ('patients', patientOrthancId)) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6798 # make sure tha patient name remains the same at patient level |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6799 self.assertEqual('Test', patient['MainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6800 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6801 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6802 if True: |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6803 # try to edit patient in Knee (only study from this patient) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6804 DropOrthanc(_REMOTE) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6805 UploadFolder(_REMOTE, 'PatientWith2studies') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6806 UploadFolder(_REMOTE, 'Knee/T1') |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6807 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6808 kneeStudy = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6809 originalKneePatientId = 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6810 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6811 originalKneePatient = DoGet(_REMOTE, '/%s/%s' % ('patients', originalKneePatientId)) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6812 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6813 # try to change the PatientName and StudyDescription at study level. |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6814 modifyResponse = DoPost(_REMOTE, '/%s/%s/modify' % ('studies', kneeStudy), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6815 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6816 'PatientName': 'Test Knee', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6817 'StudyDescription': 'Knee study' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6818 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6819 'Keep': ['StudyInstanceUID'], |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6820 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6821 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6822 }) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6823 modifiedStudy = DoGet(_REMOTE, '/%s/%s' % ('studies', modifyResponse['ID'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6824 self.assertEqual('Test Knee', modifiedStudy['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6825 # reload the patient, it shall have been updated as well (and kept the same ID since we did not change the PatientID) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6826 modifiedPatient = DoGet(_REMOTE, '/%s/%s' % ('patients', originalKneePatientId)) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6827 self.assertEqual('Test Knee', modifiedPatient['MainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6828 |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6829 # try to change the PatientID and PatientName and StudyDescription at study level. Since we use a new PatientID, we can modify its name too |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6830 modifyResponse = DoPost(_REMOTE, '/%s/%s/modify' % ('studies', kneeStudy), { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6831 'Replace' : { |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6832 'PatientName': 'Test Knee 2', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6833 'PatientID': 'TEST_KNEE_2', |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6834 'StudyDescription': 'Knee study 2' |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6835 }, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6836 'Force': True, |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6837 'KeepSource' : False |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6838 }) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6839 modifiedStudy = DoGet(_REMOTE, '/%s/%s' % ('studies', modifyResponse['ID'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6840 self.assertEqual('Test Knee 2', modifiedStudy['PatientMainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6841 self.assertEqual('Knee study 2', modifiedStudy['MainDicomTags']['StudyDescription']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6842 # reload the patient, now, its orthanc id has changed |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6843 modifiedPatient = DoGet(_REMOTE, '/%s/%s' % ('patients', modifiedStudy['ParentPatient'])) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6844 self.assertEqual('Test Knee 2', modifiedPatient['MainDicomTags']['PatientName']) |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6845 # the previous patient shall not exist anymore |
16ff0375835d
new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents:
501
diff
changeset
|
6846 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/%s/%s' % ('patients', originalKneePatientId))) |
498
62f37c13d4d0
new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents:
497
diff
changeset
|
6847 |
305
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6848 def test_store_peer_transcoding(self): |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6849 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID'] |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6850 |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6851 SYNTAXES = [ |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6852 '1.2.840.10008.1.2', |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6853 '1.2.840.10008.1.2.1', |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6854 #'1.2.840.10008.1.2.1.99', # Deflated Explicit VR Little Endian (cannot be decoded in debug mode if Orthanc is statically linked against DCMTK 3.6.5) |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6855 '1.2.840.10008.1.2.2', |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6856 '1.2.840.10008.1.2.4.50', |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6857 '1.2.840.10008.1.2.4.51', |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6858 '1.2.840.10008.1.2.4.57', |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6859 '1.2.840.10008.1.2.4.70', |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6860 ] |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6861 |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6862 if HasGdcmPlugin(_REMOTE): |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6863 SYNTAXES = SYNTAXES + [ |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6864 '1.2.840.10008.1.2.4.80', # This makes DCMTK 3.6.2 crash |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6865 '1.2.840.10008.1.2.4.81', # This makes DCMTK 3.6.2 crash |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6866 '1.2.840.10008.1.2.4.90', # JPEG2k, unavailable without GDCM |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6867 '1.2.840.10008.1.2.4.91', # JPEG2k, unavailable without GDCM |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6868 ] |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6869 |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6870 for syntax in SYNTAXES: |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6871 body = { |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6872 'Resources' : [ i ], |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6873 } |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6874 |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6875 if syntax != '1.2.840.10008.1.2.1': |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6876 body['Transcode'] = syntax |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6877 |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6878 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6879 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6880 DoPost(_REMOTE, '/peers/peer/store', body, 'text/plain') |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6881 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6882 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6883 self.assertEqual(syntax, GetTransferSyntax( |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6884 DoGet(_LOCAL, '/instances/%s/file' % DoGet(_LOCAL, '/instances') [0]))) |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6885 |
ed20ead1a8b6
test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
304
diff
changeset
|
6886 DropOrthanc(_LOCAL) |
308 | 6887 |
6888 | |
295 | 6889 def test_getscu(self): |
307 | 6890 def CleanTarget(): |
6891 if os.path.isdir('/tmp/GETSCU'): | |
6892 shutil.rmtree('/tmp/GETSCU') | |
6893 os.makedirs('/tmp/GETSCU') | |
6894 | |
306
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6895 env = {} |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6896 if _DOCKER: |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6897 # This is "getscu" from DCMTK 3.6.5 compiled using LSB, |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6898 # and running in a GNU/Linux distribution running DCMTK |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6899 # 3.6.0. Tell "getscu" where it can find the DICOM dictionary. |
529 | 6900 env['DCMDICTPATH'] = os.environ.get('DCMDICTPATH', '/usr/share/libdcmtk2/dicom.dic') |
306
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6901 |
295 | 6902 # no transcoding required |
307 | 6903 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] |
6904 | |
6905 CleanTarget() | |
295 | 6906 |
306
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6907 subprocess.check_call([ |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6908 FindExecutable('getscu'), |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6909 _REMOTE['Server'], |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6910 str(_REMOTE['DicomPort']), |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6911 '-aec', 'ORTHANC', |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6912 '-aet', 'ORTHANCTEST', # pretend to be the other orthanc |
307 | 6913 '-k', '0020,000d=2.16.840.1.113669.632.20.1211.10000357775', |
306
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6914 '-k', '0008,0052=STUDY', |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6915 '--output-directory', '/tmp/GETSCU/' |
da2be3ff2db5
fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
296
diff
changeset
|
6916 ], env = env) |
295 | 6917 |
311 | 6918 f1 = '/tmp/GETSCU/MR.1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549' |
6919 self.assertTrue(os.path.isfile(f1)) | |
6920 with open(f1, 'rb') as f: | |
543 | 6921 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(f.read(), encoding='ISO-8859-1')) |
311 | 6922 |
307 | 6923 CleanTarget() |
295 | 6924 |
6925 # transcoding required | |
311 | 6926 UploadInstance(_REMOTE, 'TransferSyntaxes/1.2.840.10008.1.2.4.50.dcm') |
307 | 6927 |
6928 subprocess.check_call([ | |
6929 FindExecutable('getscu'), | |
6930 _REMOTE['Server'], | |
6931 str(_REMOTE['DicomPort']), | |
6932 '-aec', 'ORTHANC', | |
6933 '-aet', 'ORTHANCTEST', # pretend to be the other orthanc | |
311 | 6934 '-k', '0020,000d=2.16.840.1.113669.632.20.1211.10000357775\\1.2.840.113663.1298.6234813.1.298.20000329.1115122', |
307 | 6935 '-k', '0008,0052=STUDY', |
6936 '--output-directory', '/tmp/GETSCU/' | |
6937 ], env = env) | |
6938 | |
311 | 6939 self.assertTrue(os.path.isfile(f1)) |
6940 with open(f1, 'rb') as f: | |
543 | 6941 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(f.read(), encoding='ISO-8859-1')) |
311 | 6942 |
6943 # This file is transcoded from "1.2.840.10008.1.2.4.50" to "1.2.840.10008.1.2.1" | |
6944 # (LittleEndianExplicit is proposed by default by "getscu") | |
6945 f2 = '/tmp/GETSCU/US.1.2.840.113663.1298.1.3.715.20000329.1115326' | |
6946 self.assertTrue(os.path.isfile(f2)) | |
6947 with open(f2, 'rb') as f: | |
6948 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(f.read())) | |
324
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6949 |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6950 |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6951 def test_findscu_truncation(self): |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6952 # https://groups.google.com/forum/#!msg/orthanc-users/FkckWAHvso8/UbRBAhQ5CwAJ |
585 | 6953 # Fixed by: https://orthanc.uclouvain.be/hg/orthanc/rev/2724977419fb |
324
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6954 UploadInstance(_REMOTE, 'Multiframe.dcm') |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6955 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm') |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6956 |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6957 study = '1.3.46.670589.7.5.8.80001255161.20000323.151537.1' |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6958 |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6959 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'StudyInstanceUID' ]) |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6960 result = re.findall('\(0020,000d\).*?\[(.*?)\]', i) |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6961 self.assertEqual(2, len(result)) |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6962 |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6963 # The "StudyInstanceUID" is set as a list of 5 times the same |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6964 # study, leading to a string of 249 characters |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6965 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6966 'StudyInstanceUID=%s\\%s\\%s\\%s\\%s' % (( study, ) * 5) ]) |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6967 result = re.findall('\(0020,000d\).*?\[(.*?)\]', i) |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6968 self.assertEqual(1, len(result)) |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6969 |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6970 # The "StudyInstanceUID" is set as a list of 6 times the same |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6971 # study, leading to a string of 299 characters. In Orthanc <= |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6972 # 1.7.2, this is above the value of ORTHANC_MAXIMUM_TAG_LENGTH |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6973 # == 256, and is thus wiped out by C-FIND SCP. As a |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6974 # consequence, Orthanc <= 1.7.2 doesn't apply the filter on |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6975 # "StudyInstanceUID" and returns all the available |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6976 # studies (i.e. 2). This issue was fixed in Orthanc 1.7.3. |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6977 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6978 'StudyInstanceUID=%s\\%s\\%s\\%s\\%s\\%s' % (( study, ) * 6) ]) |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6979 result = re.findall('\(0020,000d\).*?\[(.*?)\]', i) |
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6980 self.assertEqual(1, len(result)) |
328
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6981 |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6982 |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6983 def test_store_compressed(self): |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6984 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6985 dicom = f.read() |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6986 i = DoPost(_REMOTE, '/instances', dicom) ['ID'] |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6987 sourceSize = len(dicom) |
324
6164d39399ad
test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
323
diff
changeset
|
6988 |
328
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6989 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6990 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6991 |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6992 # Sending to the local Orthanc 0.8.6 server, without compression: OK |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6993 jobId = MonitorJob2(_REMOTE, lambda: DoPost( |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6994 _REMOTE, '/peers/peer/store', { |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6995 'Resources' : [ i ], |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6996 'Synchronous' : False, |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6997 })) |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6998 |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
6999 job = DoGet(_REMOTE, '/jobs/%s' % jobId) |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7000 self.assertFalse(job['Content']['Compress']) |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7001 self.assertEqual('', job['Content']['Peer'][2]) # Password must not be reported |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7002 self.assertEqual(str(sourceSize), job['Content']['Size']) |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7003 |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7004 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7005 DropOrthanc(_LOCAL) |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7006 |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7007 if not IsOrthancVersionAbove(_LOCAL, 1, 11, 2): # don't know which specific version the behaviour changed but this fails with 0.8.6 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7008 # Sending to the local Orthanc 0.8.6 server, with compression: |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7009 # Not supported by Orthanc 0.8.6 => failure |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7010 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/peers/peer/store', { |
328
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7011 'Resources' : [ i ], |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7012 'Compress' : True, |
8a462f9c5a97
test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
327
diff
changeset
|
7013 })) |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7014 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7015 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7016 # Sending to the tested remote server, with compression: OK |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7017 jobId = MonitorJob2(_REMOTE, lambda: DoPost( |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7018 _REMOTE, '/peers/self/store', { |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7019 'Resources' : [ i ], |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7020 'Compress' : True, |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7021 'Synchronous' : False, |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7022 })) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7023 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7024 job = DoGet(_REMOTE, '/jobs/%s' % jobId) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7025 self.assertTrue(job['Content']['Compress']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7026 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7027 # Compression must have divided the size of the sent data at least twice |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7028 self.assertLess(int(job['Content']['Size']), sourceSize / 2) |
332 | 7029 |
7030 | |
7031 def test_move_ambra(self): | |
7032 # "Orthanc + Ambra: Query/Retrieve" (2020-08-25) | |
7033 # https://groups.google.com/g/orthanc-users/c/yIUnZ9v9-Zs/m/GQPXiAOiCQAJ | |
7034 | |
7035 UploadInstance(_REMOTE, '2019-06-17-VedranZdesic.dcm') | |
7036 | |
7037 self.assertFalse(MonitorJob(_REMOTE, lambda: CallMoveScu([ | |
7038 '--study', | |
7039 '-k', 'StudyInstanceUID=' | |
7040 ]))) | |
7041 | |
7042 self.assertFalse(MonitorJob(_REMOTE, lambda: CallMoveScu([ | |
7043 '--study', | |
7044 '-k', 'AccessionNumber=', | |
7045 ]))) | |
7046 | |
7047 self.assertFalse(MonitorJob(_REMOTE, lambda: CallMoveScu([ | |
7048 '--study', | |
7049 '-k', 'AccessionNumber=', | |
7050 '-k', 'StudyInstanceUID=' | |
7051 ]))) | |
7052 | |
7053 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
7054 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([ | |
7055 '--study', | |
7056 '-k', 'AccessionNumber=CT16000988', | |
7057 '-k', 'StudyInstanceUID=', | |
7058 ]))) | |
7059 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
7060 DropOrthanc(_LOCAL) | |
7061 | |
7062 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
7063 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([ | |
7064 '--study', | |
7065 '-k', 'AccessionNumber=CT16000988', | |
7066 '-k', 'StudyInstanceUID=1.2.840.113619.2.278.3.4194965761.659.1468842739.39', | |
7067 ]))) | |
7068 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
7069 DropOrthanc(_LOCAL) | |
7070 | |
7071 # This fails on Orthanc <= 1.7.3 | |
7072 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
7073 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([ | |
7074 '--study', | |
7075 '-k', 'AccessionNumber=', | |
7076 '-k', 'StudyInstanceUID=1.2.840.113619.2.278.3.4194965761.659.1468842739.39' | |
7077 ]))) | |
7078 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
7079 DropOrthanc(_LOCAL) | |
333
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7080 |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7081 |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7082 def test_decode_elscint(self): |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7083 # https://groups.google.com/g/orthanc-users/c/d9anAx6lSis/m/qEzm1x3PAAAJ |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7084 a = UploadInstance(_REMOTE, '2020-09-12-ELSCINT1-PMSCT_RLE1.dcm')['ID'] |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7085 b = UploadInstance(_REMOTE, '2020-09-11-Christopher-ELSCINT1-Raw.dcm')['ID'] |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7086 |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7087 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % a) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7088 self.assertEqual("L", im.mode) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7089 self.assertEqual(512, im.size[0]) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7090 self.assertEqual(512, im.size[1]) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7091 |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7092 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % b) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7093 self.assertEqual("L", im.mode) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7094 self.assertEqual(512, im.size[0]) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7095 self.assertEqual(512, im.size[1]) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7096 |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7097 # The two tests below fail on Orthanc <= 1.7.3 |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7098 raw = DoGet(_REMOTE, '/instances/%s/frames/0/raw' % a) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7099 self.assertEqual(512 * 512 * 2, len(raw)) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7100 |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7101 raw = DoGet(_REMOTE, '/instances/%s/frames/0/raw' % b) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7102 self.assertEqual(512 * 512 * 2, len(raw)) |
695be643b0f4
test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
332
diff
changeset
|
7103 |
334
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7104 |
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7105 def test_rest_modalities_in_study_2(self): |
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7106 # Problem reported by Alain Mazy on 2020-09-15 |
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7107 UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0001.dcm') |
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7108 UploadInstance(_REMOTE, 'Comunix/Pet/IM-0001-0001.dcm') |
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7109 |
335
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7110 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', '0020,000d=', '-k', '0008,0061=' ]) |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7111 modalitiesInStudy = re.findall('\(0008,0061\).*?\[(.*?)\]', i) |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7112 self.assertEqual(1, len(modalitiesInStudy)) |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7113 self.assertEqual('CT\\PT ', modalitiesInStudy[0]) |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7114 |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7115 for i in [ '', 'CT', 'PT', 'UX', 'UX\\MR', 'CT\\PT', 'UX\\PT', 'CT\\PT', 'UX\\CT\\PT' ]: |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7116 # The empty string '' corresponds to universal matching. |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7117 # The case where "i == 'CT'" failed in Orthanc <= 1.7.3. |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7118 |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7119 if i in [ 'UX', 'UX\\MR' ]: |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7120 expected = 0 |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7121 else: |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7122 expected = 1 |
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7123 |
334
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7124 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7125 'Query' : { 'ModalitiesInStudy' : i }}) |
335
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7126 self.assertEqual(expected, len(a)) |
334
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7127 |
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7128 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', '0020,000d=', '-k', '0008,0061=%s' % i ]) |
971ff285302b
test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
333
diff
changeset
|
7129 studyInstanceUid = re.findall('\(0020,000d\).*?\[(.*?)\]', i) |
335
96718de2f29c
simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
334
diff
changeset
|
7130 self.assertEqual(expected, len(studyInstanceUid)) |
337
ec13ace43bde
trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
335
diff
changeset
|
7131 |
ec13ace43bde
trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
335
diff
changeset
|
7132 |
ec13ace43bde
trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
335
diff
changeset
|
7133 def test_webdav(self): |
ec13ace43bde
trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
335
diff
changeset
|
7134 self.assertRaises(Exception, lambda: DoPropFind(_REMOTE, '/webdav/', 2)) |
ec13ace43bde
trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
335
diff
changeset
|
7135 |
342
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7136 for suffix in [ '', '/' ]: |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7137 f = DoPropFind(_REMOTE, '/webdav' + suffix, 0) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7138 self.assertEqual(1, len(f)) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7139 self.assertTrue('/webdav/' in f.keys()) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7140 self.assertTrue(f['/webdav/']['folder']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7141 self.assertEqual('webdav', f['/webdav/']['displayname']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7142 |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7143 f = DoPropFind(_REMOTE, '/webdav' + suffix, 1) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7144 self.assertEqual(6, len(f)) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7145 self.assertTrue(f['/webdav/']['folder']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7146 self.assertEqual('webdav', f['/webdav/']['displayname']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7147 |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7148 for i in [ 'by-dates', 'by-patients', 'by-studies', 'by-uids', 'uploads' ]: |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7149 self.assertTrue(f['/webdav/%s' % i]['folder']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7150 self.assertEqual(i, f['/webdav/%s' % i]['displayname']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7151 |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7152 for depth in [ 0, 1 ]: |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7153 for suffix2 in [ '', '/' ]: |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7154 g = DoPropFind(_REMOTE, '/webdav/%s%s' % (i, suffix2), depth) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7155 |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7156 if i == 'uploads': |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7157 # Empty folders might still exist in "/uploads/" |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7158 self.assertTrue('/webdav/uploads/' in g) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7159 self.assertEqual('uploads', g['/webdav/uploads/']['displayname']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7160 for j in g.items(): |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7161 self.assertTrue(g.items()[0][1]['folder']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7162 else: |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7163 self.assertEqual(1, len(g)) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7164 self.assertEqual('/webdav/%s/' % i, g.items()[0][0]) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7165 self.assertTrue(g.items()[0][1]['folder']) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7166 self.assertEqual(i, g.items()[0][1]['displayname']) |
341
66a36befb208
extending Toolbox.DoPropFind()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
337
diff
changeset
|
7167 |
342
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7168 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7169 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7170 DoPut(_REMOTE, '/webdav/uploads/dummy', f.read(), 'text/plain') |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7171 |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7172 while len(DoGet(_REMOTE, '/patients')) == 0: |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7173 time.sleep(0.01) |
bf8369ea3ff1
more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
341
diff
changeset
|
7174 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
337
ec13ace43bde
trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
335
diff
changeset
|
7175 |
349
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7176 |
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7177 def test_log_categories(self): |
350 | 7178 original = DoGet(_REMOTE, '/tools/log-level-http') |
349
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7179 |
350 | 7180 DoPut(_REMOTE, '/tools/log-level-http', 'default') |
7181 self.assertEqual('default', DoGet(_REMOTE, '/tools/log-level-http')) | |
349
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7182 DoGet(_REMOTE, '/system') |
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7183 |
350 | 7184 DoPut(_REMOTE, '/tools/log-level-http', 'verbose') |
7185 self.assertEqual('verbose', DoGet(_REMOTE, '/tools/log-level-http')) | |
349
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7186 DoGet(_REMOTE, '/system') |
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7187 |
350 | 7188 DoPut(_REMOTE, '/tools/log-level-http', 'trace') |
7189 self.assertEqual('trace', DoGet(_REMOTE, '/tools/log-level-http')) | |
349
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7190 DoGet(_REMOTE, '/system') |
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7191 |
350 | 7192 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/tools/log-level-http', 'nope')) |
349
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7193 |
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7194 # Switch back to the original log level |
350 | 7195 DoPut(_REMOTE, '/tools/log-level-http', original) |
7196 | |
7197 for c in [ 'generic', 'http', 'dicom', 'plugins', 'sqlite', 'lua', 'jobs' ]: | |
349
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7198 DoPut(_REMOTE, '/tools/log-level-%s' % c, DoGet(_REMOTE, '/tools/log-level-%s' % c)) |
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7199 |
698898a93a10
test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
348
diff
changeset
|
7200 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/tools/log-level-nope', 'default')) |
357 | 7201 |
7202 | |
7203 def test_upload_zip(self): | |
7204 f = StringIO() | |
7205 with zipfile.ZipFile(f, 'w') as z: | |
7206 z.writestr('hello/world/invalid.txt', 'Hello world') | |
7207 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as g: | |
7208 c = g.read() | |
7209 z.writestr('hello/world/dicom1.dcm', c) | |
7210 z.writestr('hello/world/dicom2.dcm', c) | |
7211 | |
7212 f.seek(0) | |
7213 i = DoPost(_REMOTE, '/instances', f.read()) | |
7214 | |
7215 self.assertEqual(2, len(i)) | |
7216 self.assertEqual(i[0], i[1]) | |
7217 self.assertEqual(6, len(i[0])) | |
7218 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', i[0]['ID']) | |
7219 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', i[0]['ParentSeries']) | |
7220 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', i[0]['ParentStudy']) | |
7221 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', i[0]['ParentPatient']) | |
7222 self.assertEqual('/instances/66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', i[0]['Path']) | |
7223 | |
7224 # Both are "Success" (instead of one "AlreadyStored"), because "OverwriteInstance" is true | |
7225 self.assertEqual('Success', i[0]['Status']) | |
361
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7226 |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7227 |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7228 def test_transfer_syntax_no_metaheader(self): |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7229 a = UploadInstance(_REMOTE, 'TransferSyntaxes/1.2.840.10008.1.2.dcm')['ID'] |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7230 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % a) |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7231 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', m['SopClassUid']) |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7232 |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7233 # This fails on Orthanc <= 1.8.1 |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7234 self.assertTrue('TransferSyntax' in m) |
6cf5cc4d0a99
test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
359
diff
changeset
|
7235 self.assertEqual('1.2.840.10008.1.2', m['TransferSyntax']) |
368
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7236 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7237 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7238 def test_upload_multipart_1(self): |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7239 # This tests the "Upload" button in Orthanc Explorer |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7240 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7241 def EncodeChunk(data, boundary, filename): |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7242 return (('--%s\r\n' + |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7243 'Content-Disposition : form-data ; name ="files[]" ; filename = "%s" \r\n' + |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7244 '\r\n%s\r\n') % (boundary, filename, data)) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7245 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7246 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7247 dcm1 = f.read() |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7248 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7249 with open(GetDatabasePath('ColorTestMalaterre.dcm'), 'rb') as f: |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7250 dcm2 = f.read() |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7251 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7252 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7253 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7254 boundary = '----WebKitFormBoundarypJDNQqJPoXiorRmQ' |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7255 m = DoPost(_REMOTE, '/instances', (EncodeChunk(dcm1, boundary, 'DummyCT.dcm') + |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7256 EncodeChunk(dcm2, boundary, 'ColorTestMalaterre.dcm') + |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7257 '--' + boundary + '--'), headers = { |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7258 'Content-Type' : 'multipart/form-data ; boundary = %s ' % boundary, |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7259 'X-Requested-With' : 'XMLHttpRequest', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7260 }) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7261 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7262 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7263 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7264 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7265 def test_upload_multipart_2(self): |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7266 # This tests the "maxChunkSize" option of "jQuery File Upload |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7267 # 5.12", whose source code can be found in: |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7268 # "OrthancServer/OrthancExplorer/libs/jquery-file-upload/" |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7269 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7270 def EncodeBody(data, boundary, filename): |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7271 return (('--%s\r\n' + |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7272 'Content-Disposition: form-data; name="files[]"; filename="%s"\r\n' + |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7273 '\r\n%s\r\n--%s') % (boundary, filename, data, boundary)) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7274 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7275 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7276 dcm = f.read() |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7277 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7278 with open(GetDatabasePath('ColorTestMalaterre.dcm'), 'rb') as f: |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7279 dcm2 = f.read() |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7280 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7281 boundary = '----WebKitFormBoundarypJDNQqJPoXiorRmQ' |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7282 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7283 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7284 m = DoPost(_REMOTE, '/instances', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7285 EncodeBody(dcm[0:1000], boundary, 'DummyCT.dcm'), |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7286 headers = { |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7287 'Content-Type' : 'multipart/form-data; boundary=%s' % boundary, |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7288 'X-Requested-With' : 'XMLHttpRequest', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7289 'X-File-Name' : 'DummyCT.dcm', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7290 'X-File-Size' : str(len(dcm)), |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7291 }) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7292 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7293 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7294 m = DoPost(_REMOTE, '/instances', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7295 EncodeBody(dcm[1000:2000], boundary, 'DummyCT.dcm'), |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7296 headers = { |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7297 'Content-Type' : 'multipart/form-data; boundary=%s' % boundary, |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7298 'X-Requested-With' : 'XMLHttpRequest', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7299 'X-File-Name' : 'DummyCT.dcm', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7300 'X-File-Size' : str(len(dcm)), |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7301 }) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7302 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7303 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7304 m = DoPost(_REMOTE, '/instances', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7305 EncodeBody(dcm2, boundary, 'ColorTestMalaterre.dcm'), |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7306 headers = { |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7307 'Content-Type' : 'multipart/form-data; boundary=%s' % boundary, |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7308 'X-Requested-With' : 'XMLHttpRequest', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7309 'X-File-Name' : 'ColorTestMalaterre.dcm', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7310 'X-File-Size' : str(len(dcm2)), |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7311 }) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7312 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7313 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7314 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7315 # Upload the last chunk => the file is now entirely available |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7316 m = DoPost(_REMOTE, '/instances', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7317 EncodeBody(dcm[2000:len(dcm)], boundary, 'DummyCT.dcm'), |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7318 headers = { |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7319 'Content-Type' : 'multipart/form-data; boundary=%s' % boundary, |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7320 'X-Requested-With' : 'XMLHttpRequest', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7321 'X-File-Name' : 'DummyCT.dcm', |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7322 'X-File-Size' : str(len(dcm)), |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7323 }) |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7324 |
2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
7325 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
377
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7326 |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7327 |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7328 def test_pixel_data_offset(self): |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7329 # New in Orthanc 1.9.1 |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7330 def Check(path, offset): |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7331 i = UploadInstance(_REMOTE, path) ['ID'] |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7332 metadata = DoGetRaw(_REMOTE, '/instances/%s/metadata/PixelDataOffset' % i) [1] |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7333 self.assertEqual(offset, metadata) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7334 |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7335 Check('ColorTestMalaterre.dcm', str(0x03a0)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7336 Check('TransferSyntaxes/1.2.840.10008.1.2.1.dcm', str(0x037c)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7337 Check('TransferSyntaxes/1.2.840.10008.1.2.2.dcm', str(0x03e8)) # Big endian |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7338 Check('TransferSyntaxes/1.2.840.10008.1.2.4.50.dcm', str(0x04ac)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7339 Check('TransferSyntaxes/1.2.840.10008.1.2.4.51.dcm', str(0x072c)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7340 Check('TransferSyntaxes/1.2.840.10008.1.2.4.57.dcm', str(0x0620)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7341 Check('TransferSyntaxes/1.2.840.10008.1.2.4.70.dcm', str(0x065a)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7342 Check('TransferSyntaxes/1.2.840.10008.1.2.4.80.dcm', str(0x0b46)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7343 Check('TransferSyntaxes/1.2.840.10008.1.2.4.81.dcm', str(0x073e)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7344 Check('TransferSyntaxes/1.2.840.10008.1.2.4.90.dcm', str(0x0b66)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7345 Check('TransferSyntaxes/1.2.840.10008.1.2.4.91.dcm', str(0x19b8)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7346 Check('TransferSyntaxes/1.2.840.10008.1.2.5.dcm', str(0x0b0a)) |
cc79fa4945da
test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
374
diff
changeset
|
7347 Check('TransferSyntaxes/1.2.840.10008.1.2.dcm', '') # No valid DICOM preamble |
382
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7348 |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7349 |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7350 def test_peer_store_straight(self): |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7351 self.assertEqual(0, len(DoGet(_LOCAL, '/exports')['Exports'])) |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7352 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports'])) |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7353 |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7354 peer = DoGet(_REMOTE, '/peers/peer/system') |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7355 if not IsOrthancVersionAbove(_LOCAL, 0, 8, 6): |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7356 self.assertEqual(3, len(peer)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7357 self.assertEqual(5, peer['DatabaseVersion']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7358 self.assertEqual('MyOrthanc', peer['Name']) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7359 self.assertEqual('0.8.6', peer['Version']) |
382
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7360 |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7361 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7362 j = DoPost(_REMOTE, '/peers/peer/store-straight', f.read(), 'application/dicom') |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7363 |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7364 # Remote server is Orthanc 0.8.6, thus "ParentPatient", |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7365 # "ParentStudy", "ParentSeries" are not reported |
509
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7366 if not IsOrthancVersionAbove(_LOCAL, 1, 11, 2): # don't know which specific version the behaviour changed but this fails with 0.8.6 |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7367 self.assertEqual(3, len(j)) |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7368 else: |
17a74118d73a
allow the tests to run with more recent LOCAL version of Orthanc (1.11.2 instead of 0.8.6)
Alain Mazy <am@osimis.io>
parents:
508
diff
changeset
|
7369 self.assertEqual(6, len(j)) |
382
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7370 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', j['ID']) |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7371 self.assertEqual('/instances/66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', j['Path']) |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7372 self.assertEqual('Success', j['Status']) |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7373 |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7374 self.assertEqual(1, len(DoGet(_LOCAL, '/patients'))) |
a8dd562943a7
added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
380
diff
changeset
|
7375 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
383 | 7376 |
7377 | |
7378 def test_cp246(self): | |
7379 # This fails on Orthanc <= 1.9.0 | |
7380 a = UploadInstance(_REMOTE, '2021-02-19-MalaterreCP246.dcm')['ID'] | |
7381 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
7382 | |
7383 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % a) | |
7384 self.assertEqual('1.2.840.10008.5.1.4.1.1.128', tags['0008,0016']) | |
7385 self.assertEqual('1.3.12.2.1107.5.1.4.36085.2.0.517715415141633', tags['0008,0018']) | |
7386 self.assertEqual('1.2.840.113745.101000.1008000.38179.6792.6324567', tags['0020,000d']) | |
7387 self.assertEqual('1.3.12.2.1107.5.1.4.36085.2.0.517714246252254', tags['0020,000e']) | |
7388 | |
7389 study = DoGet(_REMOTE, '/instances/%s/study' % a) | |
7390 self.assertEqual(tags['0020,000d'], study['MainDicomTags']['StudyInstanceUID']) | |
7391 | |
7392 series = DoGet(_REMOTE, '/instances/%s/series' % a) | |
7393 self.assertEqual(tags['0020,000e'], series['MainDicomTags']['SeriesInstanceUID']) | |
7394 | |
7395 instance = DoGet(_REMOTE, '/instances/%s' % a) | |
7396 self.assertEqual(tags['0008,0018'], instance['MainDicomTags']['SOPInstanceUID']) | |
7397 | |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7398 |
392
5cbcb4a83b41
fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
391
diff
changeset
|
7399 def test_revisions_metadata(self): |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7400 # This test fails on Orthanc <= 1.9.1 (support for revisions |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7401 # was introduced in 1.9.2), or if configuration option |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7402 # "CheckRevisions" is "False". Conventions for HTTP headers |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7403 # related to revisions mimic CouchDB: |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7404 # https://docs.couchdb.org/en/stable/api/document/common.html |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7405 i = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7406 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7407 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7408 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7409 self.assertEqual('"0-%s"' % ComputeMD5('1.2.840.10008.1.2.4.70'), headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7410 self.assertEqual('1.2.840.10008.1.2.4.70', body) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7411 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7412 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7413 'If-None-Match' : '"aaa"' |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7414 }) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7415 self.assertEqual('400', headers['status']) # Bad header format |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7416 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7417 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i, headers = { |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7418 'If-None-Match' : '"aaa-bbb"' |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7419 }) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7420 self.assertEqual('400', headers['status']) # Bad header format |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7421 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7422 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i, headers = { |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7423 'If-None-Match' : '"0-16de4d7060d0b9d102ef0fca8acc892a"' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7424 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7425 self.assertEqual('304', headers['status']) # Not modified |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7426 self.assertEqual('"0-16de4d7060d0b9d102ef0fca8acc892a"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7427 self.assertEqual('', body) # Body must be empty on 304 status |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7428 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7429 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7430 'If-None-Match' : '"1-16de4d7060d0b9d102ef0fca8acc892a"' # Bad revision, good MD5 |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7431 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7432 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7433 self.assertEqual('"0-16de4d7060d0b9d102ef0fca8acc892a"', headers['etag']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7434 self.assertEqual('1.2.840.10008.1.2.4.70', body) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7435 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7436 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i, headers = { |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7437 'If-None-Match' : '"0-aaa"' # Good revision, bad MD5 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7438 }) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7439 self.assertEqual('200', headers['status']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7440 self.assertEqual('"0-16de4d7060d0b9d102ef0fca8acc892a"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7441 self.assertEqual('1.2.840.10008.1.2.4.70', body) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7442 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7443 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7444 self.assertEqual('403', headers['status']) # Forbidden (system metadata) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7445 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7446 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i, 'hello') |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7447 self.assertEqual('403', headers['status']) # Forbidden (system metadata) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7448 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7449 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/1024' % i, 'hello') |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7450 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7451 self.assertEqual('"0-%s"' % ComputeMD5('hello'), headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7452 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7453 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/1024' % i) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7454 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7455 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7456 self.assertEqual('hello', body) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7457 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7458 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7459 'If-None-Match' : '"0-5d41402abc4b2a76b9719d911017c592"' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7460 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7461 self.assertEqual('304', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7462 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7463 self.assertEqual('', body) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7464 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7465 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7466 'If-None-Match' : '"1-tata"' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7467 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7468 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7469 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7470 self.assertEqual('hello', body) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7471 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/metadata/1024' % i)) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7472 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7473 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/metadata/1024' % i) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7474 self.assertEqual('409', headers['status']) # No revision given, but "CheckRevisions" is True |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7475 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7476 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/metadata/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7477 'If-Match' : '45-5d41402abc4b2a76b9719d911017c592' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7478 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7479 self.assertEqual('409', headers['status']) # Conflict, as bad revision |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7480 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7481 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/metadata/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7482 'If-Match' : '0-tata' |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7483 }) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7484 self.assertEqual('409', headers['status']) # Conflict, as bad MD5 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7485 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7486 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/metadata/1024' % i, headers = { |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7487 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7488 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7489 self.assertEqual('200', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7490 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7491 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/metadata/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7492 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7493 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7494 self.assertEqual('404', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7495 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7496 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/1024' % i) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7497 self.assertEqual('404', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7498 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7499 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/metadata/1024' % i)) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7500 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7501 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/1024' % i, 'hello') |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7502 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7503 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7504 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7505 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/1024' % i, 'hello') |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7506 self.assertEqual('409', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7507 |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7508 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7509 'If-None-Match' : '"0-5d41402abc4b2a76b9719d911017c592"' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7510 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7511 self.assertEqual('304', headers['status']) # Not modified |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7512 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7513 self.assertEqual('', body) # Body must be empty on 304 status |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7514 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7515 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/1024' % i, 'hello', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7516 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7517 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7518 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7519 self.assertEqual('"1-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7520 self.assertEqual('', body) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7521 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7522 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/1024' % i, headers = { |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7523 'If-None-Match' : headers['etag'] |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7524 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7525 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7526 if headers['status'] == '200': |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7527 print("Your database backend doesn't store revisions") |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7528 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/1024' % i, 'hello2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7529 'If-Match' : '1-5d41402abc4b2a76b9719d911017c592' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7530 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7531 self.assertEqual('409', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7532 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7533 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/1024' % i, 'hello2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7534 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7535 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7536 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7537 self.assertEqual('"1-6e809cbda0732ac4845916a59016f954"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7538 self.assertEqual('', body) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7539 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7540 elif headers['status'] == '304': # Revisions are supported |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7541 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/1024' % i, 'hello2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7542 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7543 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7544 self.assertEqual('409', headers['status']) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7545 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7546 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/metadata/1024' % i, 'hello2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7547 'If-Match' : '1-5d41402abc4b2a76b9719d911017c592' |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7548 }) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7549 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7550 self.assertEqual('"2-6e809cbda0732ac4845916a59016f954"', headers['etag']) |
391
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7551 self.assertEqual('', body) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7552 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7553 else: |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7554 raise Exception('Internal error') |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7555 |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7556 self.assertEqual('hello2', DoGet(_REMOTE, '/instances/%s/metadata/1024' % i)) |
227d9a932467
testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
390
diff
changeset
|
7557 |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7558 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7559 def test_revisions_attachments(self): |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7560 # This test fails on Orthanc <= 1.9.1 (support for revisions |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7561 # was introduced in 1.9.2), or if configuration option |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7562 # "CheckRevisions" is "False". Conventions for HTTP headers |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7563 # related to revisions mimic CouchDB: |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7564 # https://docs.couchdb.org/en/stable/api/document/common.html |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7565 i = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7566 |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7567 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7568 md5 = ComputeMD5(f.read()) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7569 |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7570 # "/compress", "/uncompress" and "/verify-md5" are POST |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7571 # methods, and are not affected by revisions |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7572 for suffix in [ '', '/compressed-data', '/compressed-md5', '/compressed-size', |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7573 '/data', '/is-compressed', '/md5', '/size' ]: |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7574 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/%s' % (i, suffix)) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7575 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7576 self.assertEqual('"0-%s"' % md5, headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7577 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7578 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/%s' % (i, suffix), headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7579 'If-None-Match' : '"0-3e29b869978b6db4886355a2b1132124"', |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7580 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7581 self.assertEqual('304', headers['status']) # Not modified |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7582 self.assertEqual('"0-3e29b869978b6db4886355a2b1132124"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7583 self.assertEqual('', body) # Body must be empty on 304 status |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7584 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7585 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/%s' % (i, suffix), headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7586 'If-None-Match' : '"tata"', # Invalid header |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7587 }) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7588 self.assertEqual('400', headers['status']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7589 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7590 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/%s' % (i, suffix), headers = { |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7591 'If-None-Match' : '"1-%s"' % md5, # Bad revision, good MD5 |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7592 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7593 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7594 self.assertEqual('"0-3e29b869978b6db4886355a2b1132124"', headers['etag']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7595 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7596 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/dicom/%s' % (i, suffix), headers = { |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7597 'If-None-Match' : '"0-tata"' # Good revision, bad MD5 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7598 }) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7599 self.assertEqual('200', headers['status']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7600 self.assertEqual('"0-3e29b869978b6db4886355a2b1132124"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7601 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7602 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/attachments/dicom' % i) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7603 self.assertEqual('403', headers['status']) # Forbidden (system metadata) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7604 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7605 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/dicom' % i, 'hello') |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7606 self.assertEqual('403', headers['status']) # Forbidden (system metadata) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7607 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7608 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello') |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7609 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7610 self.assertEqual('"0-%s"' % ComputeMD5('hello'), headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7611 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7612 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7613 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7614 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7615 self.assertEqual('hello', body) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7616 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7617 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7618 'If-None-Match' : '"0-5d41402abc4b2a76b9719d911017c592"' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7619 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7620 self.assertEqual('304', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7621 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7622 self.assertEqual('', body) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7623 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7624 for h in [ '"1-5d41402abc4b2a76b9719d911017c592"', # Bad revision, good MD5 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7625 '"0-tata"']: # Good revision, bad MD5 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7626 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i, headers = { |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7627 'If-None-Match' : h |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7628 }) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7629 self.assertEqual('200', headers['status']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7630 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7631 self.assertEqual('hello', body) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7632 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7633 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7634 'If-None-Match' : 'tata' # Bad header format |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7635 }) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7636 self.assertEqual('400', headers['status']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7637 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7638 |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7639 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/attachments/1024/data' % i)) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7640 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7641 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/attachments/1024' % i) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7642 self.assertEqual('409', headers['status']) # No revision given, but "CheckRevisions" is True |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7643 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7644 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/attachments/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7645 'If-Match' : '45-5d41402abc4b2a76b9719d911017c592' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7646 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7647 self.assertEqual('409', headers['status']) # Conflict, as bad revision |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7648 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7649 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/attachments/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7650 'If-Match' : '0-tata' |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7651 }) |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7652 self.assertEqual('409', headers['status']) # Conflict, as bad MD5 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7653 |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7654 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/attachments/1024' % i, headers = { |
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7655 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7656 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7657 self.assertEqual('200', headers['status']) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7658 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7659 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/attachments/1024' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7660 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7661 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7662 self.assertEqual('404', headers['status']) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7663 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7664 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7665 self.assertEqual('404', headers['status']) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7666 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7667 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/attachments/1024' % i)) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7668 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7669 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello') |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7670 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7671 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7672 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7673 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello') |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7674 self.assertEqual('409', headers['status']) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7675 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7676 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i, headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7677 'If-None-Match' : '"0-5d41402abc4b2a76b9719d911017c592"' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7678 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7679 self.assertEqual('304', headers['status']) # Not modified |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7680 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7681 self.assertEqual('', body) # Body must be empty on 304 status |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7682 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7683 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7684 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7685 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7686 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7687 self.assertEqual('"1-5d41402abc4b2a76b9719d911017c592"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7688 self.assertEqual('{}', body) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7689 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7690 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i, headers = { |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7691 'If-None-Match' : headers['etag'] |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7692 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7693 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7694 if headers['status'] == '200': |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7695 print("Your database backend doesn't store revisions") |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7696 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7697 'If-Match' : '1-5d41402abc4b2a76b9719d911017c592' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7698 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7699 self.assertEqual('409', headers['status']) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7700 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7701 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7702 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7703 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7704 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7705 self.assertEqual('"1-6e809cbda0732ac4845916a59016f954"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7706 self.assertEqual('{}', body) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7707 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7708 elif headers['status'] == '304': # Revisions are supported |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7709 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7710 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7711 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7712 self.assertEqual('409', headers['status']) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7713 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7714 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello2', headers = { |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7715 'If-Match' : '1-5d41402abc4b2a76b9719d911017c592' |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7716 }) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7717 self.assertEqual('200', headers['status']) |
397
eb87ec525b53
"ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
394
diff
changeset
|
7718 self.assertEqual('"2-6e809cbda0732ac4845916a59016f954"', headers['etag']) |
393
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7719 self.assertEqual('{}', body) |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7720 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7721 else: |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7722 raise Exception('Internal error') |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7723 |
3019306499c5
test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
392
diff
changeset
|
7724 self.assertEqual('hello2', DoGet(_REMOTE, '/instances/%s/attachments/1024/data' % i)) |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7725 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7726 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7727 def test_issue_195(self): |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7728 # This fails on Orthanc <= 1.9.2 |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
7729 # https://bugs.orthanc-server.com/show_bug.cgi?id=195 |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7730 a = UploadInstance(_REMOTE, 'Issue195.dcm')['ID'] |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7731 b = DoGet(_REMOTE, '/instances/%s/file' % a, |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7732 headers = { 'Accept' : 'application/dicom+json' }) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7733 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7734 # The expected result can be found by typing "dcm2json Database/Issue195.dcm" |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7735 self.assertEqual(5, len(b)) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7736 self.assertEqual(2, len(b["00080018"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7737 self.assertEqual("UI", b["00080018"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7738 self.assertEqual("1.2.276.0.7230010.3.1.4.8323329.13188.1620309604.848735", |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7739 b["00080018"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7740 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7741 self.assertEqual(2, len(b["0020000D"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7742 self.assertEqual("UI", b["0020000D"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7743 self.assertEqual("1.2.276.0.7230010.3.1.2.8323329.13188.1620309604.848733", |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7744 b["0020000D"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7745 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7746 self.assertEqual(2, len(b["0020000E"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7747 self.assertEqual("UI", b["0020000E"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7748 self.assertEqual("1.2.276.0.7230010.3.1.3.8323329.13188.1620309604.848734", |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7749 b["0020000E"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7750 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7751 self.assertEqual(1, len(b["00081030"])) # Case of an empty value |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7752 self.assertEqual("LO", b["00081030"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7753 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7754 self.assertEqual(2, len(b["0008103E"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7755 self.assertEqual("LO", b["0008103E"]["vr"]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7756 self.assertEqual("Hello1", b["0008103E"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7757 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7758 a = UploadInstance(_REMOTE, 'Issue195-bis.dcm')['ID'] |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7759 b = DoGet(_REMOTE, '/instances/%s/file' % a, |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7760 headers = { 'Accept' : 'application/dicom+json' }) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7761 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7762 # The expected result can be found by typing "dcm2json Database/Issue195-bis.dcm" |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7763 self.assertEqual(5, len(b)) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7764 self.assertEqual(2, len(b["00080018"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7765 self.assertEqual("UI", b["00080018"]["vr"]) |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7766 self.assertEqual("1.2.276.0.7230010.3.1.4.8323329.6792.1625504071.652470", |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7767 b["00080018"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7768 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7769 self.assertEqual(2, len(b["0020000D"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7770 self.assertEqual("UI", b["0020000D"]["vr"]) |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7771 self.assertEqual("1.2.276.0.7230010.3.1.2.8323329.6792.1625504071.652468", |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7772 b["0020000D"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7773 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7774 self.assertEqual(2, len(b["0020000E"])) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7775 self.assertEqual("UI", b["0020000E"]["vr"]) |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7776 self.assertEqual("1.2.276.0.7230010.3.1.3.8323329.6792.1625504071.652469", |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7777 b["0020000E"]["Value"][0]) |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7778 |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7779 self.assertEqual(2, len(b["00084567"])) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7780 self.assertEqual("UN", b["00084567"]["vr"]) |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7781 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7782 # NB: "QgA=" corresponds to the base64 encoding of (uint16_t) 0x42 in little endian: |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7783 # $ echo -n 'QgA=' | base64 -d | hexdump -C |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7784 self.assertEqual("QgA=", b["00084567"]["InlineBinary"]) |
399
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7785 |
dd519677974d
integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
397
diff
changeset
|
7786 # Case of an empty value, fails in Orthanc <= 1.9.2 because of issue #195 |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7787 self.assertEqual(1, len(b["00084565"])) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7788 self.assertEqual("UN", b["00084565"]["vr"]) |
402
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7789 |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7790 |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7791 def test_modify_attribute(self): |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7792 # This fails on Orthanc <= 1.9.3 (not implemented) |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7793 # https://groups.google.com/g/orthanc-users/c/1pzCqT-ByXg/m/VyIGK5i5BgAJ |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7794 i = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7795 |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7796 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % i) |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7797 self.assertFalse('0020,9165' in tags) |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7798 |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7799 i = DoPost(_REMOTE, '/studies/b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0/modify', { |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7800 "Replace": { |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7801 "0020,9165": "0020,9056", |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7802 } |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7803 }) |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7804 instances = DoGet(_REMOTE, '/studies/%s/instances' % i['ID']) |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7805 self.assertEqual(1, len(instances)) |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7806 |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7807 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % instances[0]['ID']) |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7808 self.assertTrue('0020,9165' in tags) |
cc947ddc57c5
test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
399
diff
changeset
|
7809 self.assertEqual('0020,9056', tags['0020,9165']) |
405 | 7810 |
7811 | |
7812 def test_issue_146(self): | |
7813 # "Update Anonyization to 2019c" | |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
7814 # https://bugs.orthanc-server.com/show_bug.cgi?id=146 |
405 | 7815 |
7816 def GetTags(study, params): | |
7817 a = DoPost(_REMOTE, '/studies/%s/anonymize' % study, params) ['ID'] | |
7818 b = DoGet(_REMOTE, '/studies/%s/instances' % a) | |
7819 self.assertEqual(1, len(b)) | |
7820 return DoGet(_REMOTE, '/instances/%s/tags?short' % b[0]['ID']) | |
7821 | |
7822 | |
7823 UploadInstance(_REMOTE, 'Issue146.dcm') | |
7824 study = '7c950970-321e4ab0-28446c5f-f94850f1-5c44634b' | |
7825 | |
7826 self.assertRaises(Exception, lambda: GetTags(study, { 'DicomVersion' : 'nope' })) | |
7827 | |
7828 tags2008 = GetTags(study, { 'DicomVersion' : '2008' }) | |
7829 tags2017c = GetTags(study, { 'DicomVersion' : '2017c' }) | |
7830 tags2021b = GetTags(study, { 'DicomVersion' : '2021b' }) | |
557
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7831 tags2023b = GetTags(study, { 'DicomVersion' : '2023b' }) |
405 | 7832 tagsDefault = GetTags(study, {}) |
7833 | |
420 | 7834 orthancVersion = DoGet(_REMOTE, '/system') ['Version'] |
7835 self.assertEqual('Orthanc %s - PS 3.15-2008 Table E.1-1' % orthancVersion, tags2008['0012,0063']) | |
7836 self.assertEqual('Orthanc %s - PS 3.15-2017c Table E.1-1 Basic Profile' % orthancVersion, tags2017c['0012,0063']) | |
7837 self.assertEqual('Orthanc %s - PS 3.15-2021b Table E.1-1 Basic Profile' % orthancVersion, tags2021b['0012,0063']) | |
557
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7838 self.assertEqual('Orthanc %s - PS 3.15-2023b Table E.1-1 Basic Profile' % orthancVersion, tags2023b['0012,0063']) |
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7839 self.assertEqual(tagsDefault['0012,0063'], tags2023b['0012,0063']) |
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7840 |
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7841 self.assertEqual(len(tags2021b), len(tags2023b)) |
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7842 self.assertNotEqual(tags2021b, tags2023b) |
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7843 |
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7844 for t in [ tags2008, tags2017c, tags2021b, tags2023b, tagsDefault ]: |
405 | 7845 self.assertTrue(t['0010,0010'].startswith('Anonymized')) |
7846 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', t['0008,0016']) | |
7847 self.assertEqual(36, len(t['0010,0020'])) # Length of a UUID | |
7848 self.assertEqual('YES', t['0012,0062']) | |
7849 | |
7850 for t in [ tags2008 ]: | |
7851 self.assertEqual('20200101', t['0008,0020']) | |
7852 | |
557
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7853 for t in [ tags2017c, tags2021b, tags2023b, tagsDefault ]: |
405 | 7854 self.assertEqual('', t['0008,0020']) # Study Date, anonymized between 2008 and 2017c |
7855 | |
7856 for t in [ tags2008, tags2017c ]: | |
7857 self.assertEqual('HELLO^C', t['0050,0020']) | |
7858 self.assertEqual('HELLO^D', t['3006,0002']) | |
7859 | |
557
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7860 for t in [ tags2021b, tags2023b, tagsDefault ]: |
405 | 7861 self.assertFalse('0050,0020' in t) # Device Description, anonymized between 2017c and 2019c |
7862 self.assertEqual('', t['3006,0002']) # StructureSetLabel, anonymized between 2019c and 2021b | |
406
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7863 |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7864 |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7865 def test_anonymize_relationships_6(self): |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7866 # 2020-10-20 (Salim Kanoun): "I think I have hit an |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7867 # anonymization issue for the tag 0008,1250. This tags is a |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7868 # sequence containing StudyUID / Series UID of related series. |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7869 # [After anonymization,] this tag keep a reference of the |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7870 # original Study/Series UID. |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7871 # https://groups.google.com/g/orthanc-users/c/T0IokiActrI/m/L9K0vfscAAAJ |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7872 UploadInstance(_REMOTE, '2020-11-16-SalimKanounAnonymization.dcm') |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7873 |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7874 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % DoGet(_REMOTE, '/instances') [0]) |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7875 self.assertEqual('1.2.840.113619.6.95.31.0.3.4.1.3175.13.6054282', |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7876 tags['0008,1250'][0]['0020,000d']) |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7877 self.assertEqual('1.3.12.2.1107.5.1.4.11047.30000019111306043635400005028', |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7878 tags['0008,1250'][0]['0020,000e']) |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7879 |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7880 a = DoGet(_REMOTE, '/studies') |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7881 self.assertEqual(1, len(a)) |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7882 b = DoPost(_REMOTE, '/studies/%s/anonymize' % a[0], {}) ['ID'] |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7883 |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7884 c = DoGet(_REMOTE, '/studies/%s/instances' % b) |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7885 self.assertEqual(1, len(c)) |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7886 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % c[0]['ID']) |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7887 |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7888 # In Orthanc <= 1.9.3, the two tests below failed |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7889 self.assertNotEqual('1.2.840.113619.6.95.31.0.3.4.1.3175.13.6054282', |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7890 tags['0008,1250'][0]['0020,000d']) |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7891 self.assertNotEqual('1.3.12.2.1107.5.1.4.11047.30000019111306043635400005028', |
62ee5e57ee05
test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
405
diff
changeset
|
7892 tags['0008,1250'][0]['0020,000e']) |
407
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7893 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7894 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7895 def test_modify_subsequences(self): |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7896 # New in Orthanc 1.9.4 (cf. LSD-629) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7897 UploadInstance(_REMOTE, 'Issue22-NoPixelData.dcm') |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7898 studies = DoGet(_REMOTE, '/studies') |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7899 self.assertEqual(1, len(studies)) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7900 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7901 def GetTags(study): |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7902 instances = DoGet(_REMOTE, '/studies/%s/instances' % study) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7903 self.assertEqual(1, len(instances)) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7904 return DoGet(_REMOTE, '/instances/%s/tags?short' % instances[0]['ID']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7905 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7906 tags1 = GetTags(studies[0]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7907 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7908 a = DoPost(_REMOTE, '/studies/%s/modify' % studies[0], { |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7909 'Replace' : { |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7910 'PatientName' : 'Hello1', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7911 'DimensionIndexSequence[1].DimensionDescriptionLabel' : 'Hello2', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7912 'DimensionIndexSequence[*].PatientName' : 'Hello3', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7913 'ReferencedImageEvidenceSequence[2].ReferencedSeriesSequence[0].ReferencedSOPSequence[0].ReferencedSOPInstanceUID' : 'Hello4', |
408
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
7914 'DimensionOrganizationSequence[0].DimensionOrganizationUID' : '1.2.3.4', |
407
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7915 }, |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7916 'Remove' : [ |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7917 'ReferencedPerformedProcedureStepSequence', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7918 'PerformedProtocolCodeSequence[0].CodeValue', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7919 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[*].ReferencedSOPInstanceUID', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7920 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[1].ReferencedSOPClassUID', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7921 'SharedFunctionalGroupsSequence[2].ReferencedImageSequence', # Inexistent tag |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7922 ] |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7923 }) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7924 tags2 = GetTags(a['ID']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7925 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7926 self.assertEqual('Anonymized1', tags1['0010,0010']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7927 self.assertEqual('Hello1', tags2['0010,0010']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7928 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7929 self.assertEqual('Stack ID', tags1['0020,9222'][0]['0020,9421']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7930 self.assertEqual('In-Stack Position Number', tags1['0020,9222'][1]['0020,9421']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7931 self.assertEqual('Stack ID', tags2['0020,9222'][0]['0020,9421']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7932 self.assertEqual('Hello2', tags2['0020,9222'][1]['0020,9421']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7933 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7934 for i in range(3): |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7935 self.assertFalse('0010,0010' in tags1['0020,9222'][i]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7936 self.assertEqual('Hello3', tags2['0020,9222'][i]['0010,0010']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7937 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7938 self.assertEqual('1.3.46.670589.11.22237.5.20.1.1.7512.2014100814064168452', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7939 tags1['0008,9092'][2]['0008,1115'][0]['0008,1199'][0]['0008,1155']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7940 self.assertEqual('Hello4', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7941 tags2['0008,9092'][2]['0008,1115'][0]['0008,1199'][0]['0008,1155']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7942 self.assertEqual(tags1['0008,9092'][1]['0008,1115'][0]['0008,1199'][0]['0008,1155'], |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7943 tags2['0008,9092'][1]['0008,1115'][0]['0008,1199'][0]['0008,1155']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7944 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7945 self.assertTrue('0008,1111' in tags1) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7946 self.assertFalse('0008,1111' in tags2) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7947 self.assertTrue('0008,0100' in tags1['0040,0260'][0]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7948 self.assertFalse('0008,0100' in tags2['0040,0260'][0]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7949 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7950 for i in range(3): |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7951 self.assertTrue('0008,1155' in tags1['5200,9229'][0]['0008,1140'][i]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7952 self.assertFalse('0008,1155' in tags2['5200,9229'][0]['0008,1140'][i]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7953 self.assertTrue('0008,1150' in tags1['5200,9229'][0]['0008,1140'][i]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7954 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7955 self.assertTrue('0008,1150' in tags2['5200,9229'][0]['0008,1140'][0]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7956 self.assertFalse('0008,1150' in tags2['5200,9229'][0]['0008,1140'][1]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7957 self.assertTrue('0008,1150' in tags2['5200,9229'][0]['0008,1140'][2]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7958 |
408
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
7959 self.assertEqual('1.3.46.670589.11.22237.5.0.11272.2014100816243076000', |
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
7960 tags1['0020,9221'][0]['0020,9164']) |
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
7961 self.assertEqual('1.2.3.4', tags2['0020,9221'][0]['0020,9164']) |
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
7962 |
407
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7963 a = DoPost(_REMOTE, '/studies/%s/anonymize' % studies[0], { |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7964 'Replace' : { |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7965 'DimensionIndexSequence[1].DimensionDescriptionLabel' : 'Hello1', |
408
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
7966 'DimensionOrganizationSequence[0].DimensionOrganizationUID' : '1.2.3.4', |
407
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7967 }, |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7968 'Remove' : [ |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7969 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[*].ReferencedSOPInstanceUID', # 5200,9229 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7970 ], |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7971 'Keep' : [ |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7972 'ReferencedImageEvidenceSequence', # 0008,9092 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7973 'DimensionIndexSequence', # 0020,9222 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7974 'PerFrameFunctionalGroupsSequence[*].2005,140f[*].SOPInstanceUID', # 5200,9230 |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7975 '(5200,9230)[*].2005,140f[*].(0008,0023)', # Compatibility with Orthanc 1.9.4 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7976 '(5200,9230)[*].2005,140f[*].(0008,0033)', # Compatibility with Orthanc 1.9.4 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7977 ], |
557
1cdb14a679f2
fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
556
diff
changeset
|
7978 'DicomVersion' : '2021b', |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
7979 'KeepPrivateTags' : True # Compatibility with Orthanc 1.9.4 |
407
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7980 }) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7981 tags3 = GetTags(a['ID']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7982 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7983 # UIDs |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7984 for i in [ '0008,0018', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7985 '0010,0020', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7986 '0008,0018', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7987 '0010,0020' ]: |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7988 self.assertNotEqual(tags1[i], tags3[i]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7989 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7990 self.assertNotEqual(tags1['0020,9221'][0]['0020,9164'], |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7991 tags3['0020,9221'][0]['0020,9164']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7992 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7993 self.assertNotEqual(tags1['5200,9229'][0]['2005,140e'][0]['0008,0014'], |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7994 tags3['5200,9229'][0]['2005,140e'][0]['0008,0014']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7995 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7996 # http://dicom.nema.org/medical/dicom/current/output/chtml/part15/chapter_E.html#table_E.1-1 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7997 # Removals (X) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7998 for i in [ '0008,0021', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
7999 '0008,002a', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8000 '0008,0031', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8001 '0008,1030', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8002 '0008,103e', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8003 '0008,1111', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8004 '0010,21c0', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8005 '0040,0006', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8006 '0040,0241', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8007 '0040,0244', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8008 '0040,0245', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8009 '0040,0250', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8010 '0040,0251', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8011 '0040,0253', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8012 '0040,0254', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8013 '0040,0555', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8014 ]: |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8015 self.assertTrue(i in tags1) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8016 self.assertFalse(i in tags3) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8017 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8018 # Clearings (Z) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8019 for i in [ '0008,0020', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8020 '0008,0023', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8021 '0008,0030', |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8022 '0008,0033' ]: |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8023 self.assertNotEqual('', tags1[i]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8024 self.assertEqual('', tags3[i]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8025 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8026 # Replace |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8027 self.assertEqual('In-Stack Position Number', tags1['0020,9222'][1]['0020,9421']) |
408
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
8028 self.assertEqual('Hello1', tags3['0020,9222'][1]['0020,9421']) |
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
8029 self.assertEqual('1.2.3.4', tags3['0020,9221'][0]['0020,9164']) |
4e0b9fddbc71
test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
407
diff
changeset
|
8030 |
407
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8031 # "Keep" on DimensionIndexSequence |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8032 for i in range(3): |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8033 self.assertEqual(tags1['0020,9222'][i]['0020,9164'], |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8034 tags3['0020,9222'][i]['0020,9164']) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8035 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8036 # "Keep" on ReferencedImageEvidenceSequence |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8037 self.assertEqual(json.dumps(tags1['0008,9092']), |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8038 json.dumps(tags3['0008,9092'])) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8039 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8040 # "Keep" on PerFrameFunctionalGroupsSequence |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8041 self.assertEqual(json.dumps(tags1['5200,9230']), |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8042 json.dumps(tags3['5200,9230'])) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8043 |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8044 # "Remove" on SharedFunctionalGroupsSequence |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8045 for i in range(3): |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8046 self.assertTrue('0008,1155' in tags1['5200,9229'][0]['0008,1140'][i]) |
ad98466353c6
test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
406
diff
changeset
|
8047 self.assertFalse('0008,1155' in tags3['5200,9229'][0]['0008,1140'][i]) |
410 | 8048 |
8049 | |
8050 def test_bulk_modify(self): | |
8051 # New in Orthanc 1.9.4 | |
8052 | |
411
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8053 def GetModified(lst, resourceType, expectedCount = None): |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8054 m = map(lambda x: x['ID'], filter(lambda x: x['Type'] == resourceType, lst['Resources'])) |
410 | 8055 if expectedCount != None: |
8056 self.assertEqual(expectedCount, len(m)) | |
8057 return m | |
8058 | |
8059 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] | |
8060 series = DoGet(_REMOTE, '/series') [0] | |
8061 study = DoGet(_REMOTE, '/studies') [0] | |
8062 patient = DoGet(_REMOTE, '/patients') [0] | |
8063 | |
8064 a = DoPost(_REMOTE, '/tools/bulk-modify', { | |
8065 'Resources' : [ instance ] | |
8066 }) | |
8067 | |
8068 self.assertNotEqual(instance, GetModified(a, 'Instance', 1) [0]) | |
8069 self.assertEqual(series, GetModified(a, 'Series', 1) [0]) | |
8070 self.assertEqual(study, GetModified(a, 'Study', 1) [0]) | |
8071 self.assertEqual(patient, GetModified(a, 'Patient', 1) [0]) | |
8072 | |
411
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8073 b = DoPost(_REMOTE, '/tools/bulk-anonymize', { |
410 | 8074 'Resources' : [ instance ] |
8075 }) | |
8076 | |
411
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8077 self.assertNotEqual(instance, GetModified(b, 'Instance', 1) [0]) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8078 self.assertNotEqual(series, GetModified(b, 'Series', 1) [0]) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8079 self.assertNotEqual(study, GetModified(b, 'Study', 1) [0]) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8080 self.assertNotEqual(patient, GetModified(b, 'Patient', 1) [0]) |
410 | 8081 |
8082 self.assertEqual(3, len(DoGet(_REMOTE, '/instances'))) | |
8083 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) | |
8084 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) | |
8085 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
411
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8086 |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8087 DoPost(_REMOTE, '/tools/bulk-delete', { |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8088 'Resources' : GetModified(b, 'Patient', 1) + GetModified(a, 'Instance', 1) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8089 }) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8090 |
410 | 8091 knee1 = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID'] |
8092 knee2 = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') ['ID'] | |
8093 brainix = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID'] | |
8094 | |
8095 self.assertEqual(4, len(DoGet(_REMOTE, '/instances'))) | |
8096 self.assertEqual(4, len(DoGet(_REMOTE, '/series'))) | |
8097 self.assertEqual(3, len(DoGet(_REMOTE, '/studies'))) | |
8098 self.assertEqual(3, len(DoGet(_REMOTE, '/patients'))) | |
8099 | |
8100 a = DoPost(_REMOTE, '/tools/bulk-modify', { | |
8101 'Resources' : [ knee1, brainix ] | |
8102 }) | |
8103 | |
8104 self.assertEqual(6, len(DoGet(_REMOTE, '/instances'))) | |
8105 self.assertEqual(4, len(DoGet(_REMOTE, '/series'))) | |
8106 self.assertEqual(3, len(DoGet(_REMOTE, '/studies'))) | |
8107 self.assertEqual(3, len(DoGet(_REMOTE, '/patients'))) | |
8108 | |
8109 for i in GetModified(a, 'Instance', 2): | |
8110 self.assertTrue(not i in [ instance, knee1, knee2, brainix ]) | |
8111 self.assertTrue(DoGet(_REMOTE, '/instances/%s/metadata/ModifiedFrom' % i) in [ knee1, brainix ]) | |
8112 | |
8113 b = GetModified(a, 'Series', 2) | |
8114 self.assertTrue(DoGet(_REMOTE, '/instances/%s/series' % knee1) ['ID'] in b) | |
8115 self.assertTrue(DoGet(_REMOTE, '/instances/%s/series' % brainix) ['ID'] in b) | |
8116 self.assertFalse(DoGet(_REMOTE, '/instances/%s/series' % knee2) ['ID'] in b) | |
8117 self.assertFalse(DoGet(_REMOTE, '/instances/%s/series' % instance) ['ID'] in b) | |
8118 | |
8119 b = GetModified(a, 'Study', 2) | |
8120 self.assertTrue(DoGet(_REMOTE, '/instances/%s/study' % knee1) ['ID'] in b) | |
8121 self.assertTrue(DoGet(_REMOTE, '/instances/%s/study' % brainix) ['ID'] in b) | |
8122 self.assertTrue(DoGet(_REMOTE, '/instances/%s/study' % knee2) ['ID'] in b) | |
8123 self.assertFalse(DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID'] in b) | |
8124 | |
8125 b = GetModified(a, 'Patient', 2) | |
8126 self.assertTrue(DoGet(_REMOTE, '/instances/%s/patient' % knee1) ['ID'] in b) | |
8127 self.assertTrue(DoGet(_REMOTE, '/instances/%s/patient' % brainix) ['ID'] in b) | |
8128 self.assertTrue(DoGet(_REMOTE, '/instances/%s/patient' % knee2) ['ID'] in b) | |
8129 self.assertFalse(DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID'] in b) | |
8130 | |
411
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8131 DoPost(_REMOTE, '/tools/bulk-delete', { |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8132 'Resources' : GetModified(a, 'Instance', 2) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8133 }) |
410 | 8134 |
8135 sourceInstances = DoGet(_REMOTE, '/instances') | |
8136 sourceSeries = DoGet(_REMOTE, '/series') | |
8137 sourceStudies = DoGet(_REMOTE, '/studies') | |
8138 sourcePatients = DoGet(_REMOTE, '/patients') | |
8139 self.assertEqual(4, len(sourceInstances)) | |
8140 self.assertEqual(4, len(sourceSeries)) | |
8141 self.assertEqual(3, len(sourceStudies)) | |
8142 self.assertEqual(3, len(sourcePatients)) | |
8143 | |
8144 a = DoPost(_REMOTE, '/tools/bulk-anonymize', { | |
8145 'Resources' : [ knee1, brainix ] | |
8146 }) | |
8147 | |
8148 self.assertEqual(6, len(DoGet(_REMOTE, '/instances'))) | |
8149 self.assertEqual(6, len(DoGet(_REMOTE, '/series'))) | |
8150 self.assertEqual(5, len(DoGet(_REMOTE, '/studies'))) | |
8151 self.assertEqual(5, len(DoGet(_REMOTE, '/patients'))) | |
8152 | |
8153 for i in GetModified(a, 'Instance', 2): | |
8154 self.assertFalse(i in sourceInstances) | |
8155 self.assertTrue(DoGet(_REMOTE, '/instances/%s/metadata/AnonymizedFrom' % i) in [ knee1, brainix ]) | |
8156 | |
8157 for i in GetModified(a, 'Series', 2): | |
8158 self.assertFalse(i in sourceSeries) | |
8159 self.assertTrue(DoGet(_REMOTE, '/series/%s/metadata/AnonymizedFrom' % i) in sourceSeries) | |
8160 | |
8161 for i in GetModified(a, 'Study', 2): | |
8162 self.assertFalse(i in sourceStudies) | |
8163 self.assertTrue(DoGet(_REMOTE, '/studies/%s/metadata/AnonymizedFrom' % i) in sourceStudies) | |
8164 | |
8165 for i in GetModified(a, 'Patient', 2): | |
8166 self.assertFalse(i in sourcePatients) | |
8167 self.assertTrue(DoGet(_REMOTE, '/patients/%s/metadata/AnonymizedFrom' % i) in sourcePatients) | |
411
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8168 |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8169 DoPost(_REMOTE, '/tools/bulk-delete', { |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8170 'Resources' : GetModified(a, 'Patient', 2) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8171 }) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8172 |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8173 self.assertEqual(4, len(DoGet(_REMOTE, '/instances'))) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8174 self.assertEqual(4, len(DoGet(_REMOTE, '/series'))) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8175 self.assertEqual(3, len(DoGet(_REMOTE, '/studies'))) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8176 self.assertEqual(3, len(DoGet(_REMOTE, '/patients'))) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8177 |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8178 DoPost(_REMOTE, '/tools/bulk-delete', { |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8179 'Resources' : [ instance, |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8180 DoGet(_REMOTE, '/instances/%s/patient' % knee1) ['ID'], |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8181 DoGet(_REMOTE, '/instances/%s/series' % brainix) ['ID'] ] |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8182 }) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8183 |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8184 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8185 self.assertEqual(0, len(DoGet(_REMOTE, '/series'))) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8186 self.assertEqual(0, len(DoGet(_REMOTE, '/studies'))) |
8cf866641fa7
testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
410
diff
changeset
|
8187 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
412
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8188 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8189 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8190 def test_dicom_to_json_format(self): |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8191 # Test new output formats for DICOM tags introduced in 1.9.4 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8192 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8193 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID'] |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8194 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID'] |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8195 series = DoGet(_REMOTE, '/instances/%s/series' % instance) ['ID'] |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8196 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8197 self.assertEqual('KNIX', DoGet(_REMOTE, '/instances/%s/tags' % instance) ['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8198 self.assertEqual('KNIX', DoGet(_REMOTE, '/instances/%s/tags?simplify' % instance) ['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8199 self.assertEqual('KNIX', DoGet(_REMOTE, '/instances/%s/tags?short' % instance) ['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8200 self.assertEqual('PatientName', DoGet(_REMOTE, '/instances/%s/tags?full' % instance) ['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8201 self.assertEqual('KNIX', DoGet(_REMOTE, '/instances/%s/tags?full' % instance) ['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8202 self.assertEqual('String', DoGet(_REMOTE, '/instances/%s/tags?full' % instance) ['0010,0010']['Type']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8203 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8204 # Test "GetInstanceHeader()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8205 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header' % instance) ['0002,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8206 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header?simplify' % instance) ['TransferSyntaxUID']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8207 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header?short' % instance) ['0002,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8208 self.assertEqual('TransferSyntaxUID', DoGet(_REMOTE, '/instances/%s/header?full' % instance) ['0002,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8209 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header?full' % instance) ['0002,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8210 self.assertEqual('String', DoGet(_REMOTE, '/instances/%s/header?full' % instance) ['0002,0010']['Type']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8211 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8212 # Test "ListResources()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8213 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients?expand') [0]['MainDicomTags']['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8214 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients?expand&short') [0]['MainDicomTags']['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8215 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients?expand&full') [0]['MainDicomTags']['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8216 self.assertEqual('PatientName', DoGet(_REMOTE, '/patients?expand&full') [0]['MainDicomTags']['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8217 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8218 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies?expand') [0]['PatientMainDicomTags']['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8219 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies?expand&short') [0]['PatientMainDicomTags']['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8220 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies?expand&full') [0]['PatientMainDicomTags']['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8221 self.assertEqual('PatientName', DoGet(_REMOTE, '/studies?expand&full') [0]['PatientMainDicomTags']['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8222 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8223 self.assertEqual('20070101', DoGet(_REMOTE, '/studies?expand') [0]['MainDicomTags']['StudyDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8224 self.assertEqual('20070101', DoGet(_REMOTE, '/studies?expand&short') [0]['MainDicomTags']['0008,0020']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8225 self.assertEqual('20070101', DoGet(_REMOTE, '/studies?expand&full') [0]['MainDicomTags']['0008,0020']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8226 self.assertEqual('StudyDate', DoGet(_REMOTE, '/studies?expand&full') [0]['MainDicomTags']['0008,0020']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8227 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8228 self.assertEqual('20070101', DoGet(_REMOTE, '/series?expand') [0]['MainDicomTags']['SeriesDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8229 self.assertEqual('20070101', DoGet(_REMOTE, '/series?expand&short') [0]['MainDicomTags']['0008,0021']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8230 self.assertEqual('20070101', DoGet(_REMOTE, '/series?expand&full') [0]['MainDicomTags']['0008,0021']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8231 self.assertEqual('SeriesDate', DoGet(_REMOTE, '/series?expand&full') [0]['MainDicomTags']['0008,0021']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8232 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8233 self.assertEqual('20070101', DoGet(_REMOTE, '/instances?expand') [0]['MainDicomTags']['InstanceCreationDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8234 self.assertEqual('20070101', DoGet(_REMOTE, '/instances?expand&short') [0]['MainDicomTags']['0008,0012']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8235 self.assertEqual('20070101', DoGet(_REMOTE, '/instances?expand&full') [0]['MainDicomTags']['0008,0012']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8236 self.assertEqual('InstanceCreationDate', DoGet(_REMOTE, '/instances?expand&full') [0]['MainDicomTags']['0008,0012']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8237 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8238 # Test "GetSingleResource()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8239 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s' % patient) ['MainDicomTags']['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8240 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s?short' % patient) ['MainDicomTags']['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8241 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s?full' % patient) ['MainDicomTags']['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8242 self.assertEqual('PatientName', DoGet(_REMOTE, '/patients/%s?full' % patient) ['MainDicomTags']['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8243 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8244 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s' % study) ['PatientMainDicomTags']['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8245 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s?short' % study) ['PatientMainDicomTags']['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8246 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s?full' % study) ['PatientMainDicomTags']['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8247 self.assertEqual('PatientName', DoGet(_REMOTE, '/studies/%s?full' % study) ['PatientMainDicomTags']['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8248 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8249 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s' % study) ['MainDicomTags']['StudyDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8250 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s?short' % study) ['MainDicomTags']['0008,0020']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8251 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s?full' % study) ['MainDicomTags']['0008,0020']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8252 self.assertEqual('StudyDate', DoGet(_REMOTE, '/studies/%s?full' % study) ['MainDicomTags']['0008,0020']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8253 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8254 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s' % series) ['MainDicomTags']['SeriesDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8255 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s?short' % series) ['MainDicomTags']['0008,0021']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8256 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s?full' % series) ['MainDicomTags']['0008,0021']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8257 self.assertEqual('SeriesDate', DoGet(_REMOTE, '/series/%s?full' % series) ['MainDicomTags']['0008,0021']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8258 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8259 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s' % instance) ['MainDicomTags']['InstanceCreationDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8260 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s?short' % instance) ['MainDicomTags']['0008,0012']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8261 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s?full' % instance) ['MainDicomTags']['0008,0012']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8262 self.assertEqual('InstanceCreationDate', DoGet(_REMOTE, '/instances/%s?full' % instance) ['MainDicomTags']['0008,0012']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8263 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8264 # Test "Find()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8265 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', 'Query' : {}, 'Expand' : True }) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8266 self.assertEqual('20070101', a[0]['MainDicomTags']['StudyDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8267 self.assertEqual('KNIX', a[0]['PatientMainDicomTags']['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8268 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8269 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', 'Query' : {}, 'Expand' : True, 'Short' : True }) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8270 self.assertEqual('20070101', a[0]['MainDicomTags']['0008,0020']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8271 self.assertEqual('KNIX', a[0]['PatientMainDicomTags']['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8272 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8273 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', 'Query' : {}, 'Expand' : True, 'Full' : True }) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8274 self.assertEqual('20070101', a[0]['MainDicomTags']['0008,0020']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8275 self.assertEqual('KNIX', a[0]['PatientMainDicomTags']['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8276 self.assertEqual('StudyDate', a[0]['MainDicomTags']['0008,0020']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8277 self.assertEqual('PatientName', a[0]['PatientMainDicomTags']['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8278 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8279 # Test "GetChildResources()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8280 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/studies' % patient) [0]['MainDicomTags']['StudyDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8281 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/studies?short' % patient) [0]['MainDicomTags']['0008,0020']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8282 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/studies?full' % patient) [0]['MainDicomTags']['0008,0020']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8283 self.assertEqual('StudyDate', DoGet(_REMOTE, '/patients/%s/studies?full' % patient) [0]['MainDicomTags']['0008,0020']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8284 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8285 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/series' % patient) [0]['MainDicomTags']['SeriesDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8286 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/series?short' % patient) [0]['MainDicomTags']['0008,0021']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8287 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/series?full' % patient) [0]['MainDicomTags']['0008,0021']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8288 self.assertEqual('SeriesDate', DoGet(_REMOTE, '/patients/%s/series?full' % patient) [0]['MainDicomTags']['0008,0021']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8289 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8290 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/instances' % patient) [0]['MainDicomTags']['InstanceCreationDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8291 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/instances?short' % patient) [0]['MainDicomTags']['0008,0012']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8292 self.assertEqual('20070101', DoGet(_REMOTE, '/patients/%s/instances?full' % patient) [0]['MainDicomTags']['0008,0012']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8293 self.assertEqual('InstanceCreationDate', DoGet(_REMOTE, '/patients/%s/instances?full' % patient) [0]['MainDicomTags']['0008,0012']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8294 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8295 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s/series' % study) [0]['MainDicomTags']['SeriesDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8296 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s/series?short' % study) [0]['MainDicomTags']['0008,0021']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8297 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s/series?full' % study) [0]['MainDicomTags']['0008,0021']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8298 self.assertEqual('SeriesDate', DoGet(_REMOTE, '/studies/%s/series?full' % study) [0]['MainDicomTags']['0008,0021']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8299 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8300 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s/instances' % study) [0]['MainDicomTags']['InstanceCreationDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8301 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s/instances?short' % study) [0]['MainDicomTags']['0008,0012']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8302 self.assertEqual('20070101', DoGet(_REMOTE, '/studies/%s/instances?full' % study) [0]['MainDicomTags']['0008,0012']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8303 self.assertEqual('InstanceCreationDate', DoGet(_REMOTE, '/studies/%s/instances?full' % study) [0]['MainDicomTags']['0008,0012']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8304 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8305 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s/instances' % series) [0]['MainDicomTags']['InstanceCreationDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8306 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s/instances?short' % series) [0]['MainDicomTags']['0008,0012']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8307 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s/instances?full' % series) [0]['MainDicomTags']['0008,0012']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8308 self.assertEqual('InstanceCreationDate', DoGet(_REMOTE, '/series/%s/instances?full' % series) [0]['MainDicomTags']['0008,0012']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8309 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8310 # Test "GetParentResource()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8311 self.assertEqual('KNIX', DoGet(_REMOTE, '/instances/%s/patient' % instance) ['MainDicomTags']['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8312 self.assertEqual('KNIX', DoGet(_REMOTE, '/instances/%s/patient?short' % instance) ['MainDicomTags']['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8313 self.assertEqual('KNIX', DoGet(_REMOTE, '/instances/%s/patient?full' % instance) ['MainDicomTags']['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8314 self.assertEqual('PatientName', DoGet(_REMOTE, '/instances/%s/patient?full' % instance) ['MainDicomTags']['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8315 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8316 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s/study' % instance) ['MainDicomTags']['StudyDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8317 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s/study?short' % instance) ['MainDicomTags']['0008,0020']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8318 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s/study?full' % instance) ['MainDicomTags']['0008,0020']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8319 self.assertEqual('StudyDate', DoGet(_REMOTE, '/instances/%s/study?full' % instance) ['MainDicomTags']['0008,0020']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8320 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8321 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s/series' % instance) ['MainDicomTags']['SeriesDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8322 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s/series?short' % instance) ['MainDicomTags']['0008,0021']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8323 self.assertEqual('20070101', DoGet(_REMOTE, '/instances/%s/series?full' % instance) ['MainDicomTags']['0008,0021']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8324 self.assertEqual('SeriesDate', DoGet(_REMOTE, '/instances/%s/series?full' % instance) ['MainDicomTags']['0008,0021']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8325 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8326 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/patient' % series) ['MainDicomTags']['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8327 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/patient?short' % series) ['MainDicomTags']['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8328 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/patient?full' % series) ['MainDicomTags']['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8329 self.assertEqual('PatientName', DoGet(_REMOTE, '/series/%s/patient?full' % series) ['MainDicomTags']['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8330 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8331 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s/study' % series) ['MainDicomTags']['StudyDate']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8332 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s/study?short' % series) ['MainDicomTags']['0008,0020']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8333 self.assertEqual('20070101', DoGet(_REMOTE, '/series/%s/study?full' % series) ['MainDicomTags']['0008,0020']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8334 self.assertEqual('StudyDate', DoGet(_REMOTE, '/series/%s/study?full' % series) ['MainDicomTags']['0008,0020']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8335 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8336 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/patient' % study) ['MainDicomTags']['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8337 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/patient?short' % study) ['MainDicomTags']['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8338 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/patient?full' % study) ['MainDicomTags']['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8339 self.assertEqual('PatientName', DoGet(_REMOTE, '/studies/%s/patient?full' % study) ['MainDicomTags']['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8340 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8341 # Test "GetChildInstancesTags()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8342 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % patient) [instance]['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8343 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/instances-tags?short' % patient) [instance]['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8344 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/instances-tags' % patient) [instance]['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8345 self.assertEqual('PatientName', DoGet(_REMOTE, '/patients/%s/instances-tags' % patient) [instance]['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8346 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8347 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/instances-tags?simplify' % study) [instance]['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8348 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/instances-tags?short' % study) [instance]['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8349 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/instances-tags' % study) [instance]['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8350 self.assertEqual('PatientName', DoGet(_REMOTE, '/studies/%s/instances-tags' % study) [instance]['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8351 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8352 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/instances-tags?simplify' % series) [instance]['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8353 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/instances-tags?short' % series) [instance]['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8354 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/instances-tags' % series) [instance]['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8355 self.assertEqual('PatientName', DoGet(_REMOTE, '/series/%s/instances-tags' % series) [instance]['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8356 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8357 # Test "GetSharedTags()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8358 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % patient) ['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8359 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/shared-tags?short' % patient) ['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8360 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/shared-tags' % patient) ['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8361 self.assertEqual('PatientName', DoGet(_REMOTE, '/patients/%s/shared-tags' % patient) ['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8362 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8363 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/shared-tags?simplify' % study) ['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8364 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/shared-tags?short' % study) ['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8365 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/shared-tags' % study) ['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8366 self.assertEqual('PatientName', DoGet(_REMOTE, '/studies/%s/shared-tags' % study) ['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8367 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8368 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/shared-tags?simplify' % series) ['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8369 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/shared-tags?short' % series) ['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8370 self.assertEqual('KNIX', DoGet(_REMOTE, '/series/%s/shared-tags' % series) ['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8371 self.assertEqual('PatientName', DoGet(_REMOTE, '/series/%s/shared-tags' % series) ['0010,0010']['Name']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8372 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8373 # Test "GetModule()" in "OrthancRestResources.cpp" |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8374 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/module' % patient) ['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8375 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/module?simplify' % patient) ['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8376 self.assertEqual('KNIX', DoGet(_REMOTE, '/patients/%s/module?short' % patient) ['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8377 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8378 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/module-patient' % study) ['0010,0010']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8379 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/module-patient?simplify' % study) ['PatientName']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8380 self.assertEqual('KNIX', DoGet(_REMOTE, '/studies/%s/module-patient?short' % study) ['0010,0010']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8381 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8382 self.assertEqual('Knee (R)', DoGet(_REMOTE, '/studies/%s/module' % study) ['0008,1030']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8383 self.assertEqual('Knee (R)', DoGet(_REMOTE, '/studies/%s/module?simplify' % study) ['StudyDescription']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8384 self.assertEqual('Knee (R)', DoGet(_REMOTE, '/studies/%s/module?short' % study) ['0008,1030']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8385 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8386 self.assertEqual('AX. FSE PD', DoGet(_REMOTE, '/series/%s/module' % series) ['0008,103e']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8387 self.assertEqual('AX. FSE PD', DoGet(_REMOTE, '/series/%s/module?simplify' % series) ['SeriesDescription']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8388 self.assertEqual('AX. FSE PD', DoGet(_REMOTE, '/series/%s/module?short' % series) ['0008,103e']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8389 |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8390 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8391 DoGet(_REMOTE, '/instances/%s/module' % instance) ['0008,0018']['Value']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8392 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8393 DoGet(_REMOTE, '/instances/%s/module?simplify' % instance) ['SOPInstanceUID']) |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8394 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
cd9da28451cc
test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
8395 DoGet(_REMOTE, '/instances/%s/module?short' % instance) ['0008,0018']) |
413 | 8396 |
8397 # Test "ListQueryAnswers()" in "OrthancRestModalities.cpp" | |
8398 a = DoPost(_REMOTE, '/modalities/self/query', { 'Level' : 'Study', | |
8399 'Query' : { 'PatientID' : '*' }}) ['ID'] | |
8400 | |
8401 self.assertEqual(1, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) | |
8402 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers?expand' % a) [0]['0010,0020']['Value']) | |
8403 self.assertEqual('PatientID', DoGet(_REMOTE, '/queries/%s/answers?expand' % a) [0]['0010,0020']['Name']) | |
8404 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a) [0]['PatientID']) | |
8405 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers?expand&short' % a) [0]['0010,0020']) | |
8406 | |
8407 # Test "GetQueryOneAnswer()" in "OrthancRestModalities.cpp" | |
8408 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers/0/content' % a) ['0010,0020']['Value']) | |
8409 self.assertEqual('PatientID', DoGet(_REMOTE, '/queries/%s/answers/0/content' % a) ['0010,0020']['Name']) | |
8410 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers/0/content?simplify' % a) ['PatientID']) | |
8411 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers/0/content?short' % a) ['0010,0020']) | |
8412 | |
8413 # Test "GetQueryArguments()" in "OrthancRestModalities.cpp" | |
8414 self.assertEqual('*', DoGet(_REMOTE, '/queries/%s/query' % a) ['0010,0020']['Value']) | |
8415 self.assertEqual('PatientID', DoGet(_REMOTE, '/queries/%s/query' % a) ['0010,0020']['Name']) | |
8416 self.assertEqual('*', DoGet(_REMOTE, '/queries/%s/query?simplify' % a) ['PatientID']) | |
8417 self.assertEqual('*', DoGet(_REMOTE, '/queries/%s/query?short' % a) ['0010,0020']) | |
8418 | |
414
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8419 # Test "BulkContent()" in "OrthancRestResources.cpp" |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8420 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ patient, study, series, instance ] }) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8421 self.assertEqual(4, len(a)) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8422 self.assertEqual('ozp00SjY2xG', a[0]['MainDicomTags']['PatientID']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8423 self.assertEqual('Knee (R)', a[1]['MainDicomTags']['StudyDescription']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8424 self.assertEqual('KNIX', a[1]['PatientMainDicomTags']['PatientName']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8425 self.assertEqual('AX. FSE PD', a[2]['MainDicomTags']['SeriesDescription']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8426 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8427 a[3]['MainDicomTags']['SOPInstanceUID']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8428 |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8429 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ patient, study, series, instance ], |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8430 'Short': True }) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8431 self.assertEqual(4, len(a)) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8432 self.assertEqual('ozp00SjY2xG', a[0]['MainDicomTags']['0010,0020']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8433 self.assertEqual('Knee (R)', a[1]['MainDicomTags']['0008,1030']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8434 self.assertEqual('KNIX', a[1]['PatientMainDicomTags']['0010,0010']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8435 self.assertEqual('AX. FSE PD', a[2]['MainDicomTags']['0008,103e']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8436 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8437 a[3]['MainDicomTags']['0008,0018']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8438 |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8439 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ patient, study, series, instance ], |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8440 'Full': True }) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8441 self.assertEqual(4, len(a)) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8442 self.assertEqual('ozp00SjY2xG', a[0]['MainDicomTags']['0010,0020']['Value']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8443 self.assertEqual('PatientID', a[0]['MainDicomTags']['0010,0020']['Name']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8444 self.assertEqual('Knee (R)', a[1]['MainDicomTags']['0008,1030']['Value']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8445 self.assertEqual('StudyDescription', a[1]['MainDicomTags']['0008,1030']['Name']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8446 self.assertEqual('KNIX', a[1]['PatientMainDicomTags']['0010,0010']['Value']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8447 self.assertEqual('PatientName', a[1]['PatientMainDicomTags']['0010,0010']['Name']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8448 self.assertEqual('AX. FSE PD', a[2]['MainDicomTags']['0008,103e']['Value']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8449 self.assertEqual('SeriesDescription', a[2]['MainDicomTags']['0008,103e']['Name']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8450 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8451 a[3]['MainDicomTags']['0008,0018']['Value']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8452 self.assertEqual('SOPInstanceUID', a[3]['MainDicomTags']['0008,0018']['Name']) |
a2beea45a53d
test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
413
diff
changeset
|
8453 |
415 | 8454 |
8455 def test_bulk_content(self): | |
8456 # New in Orthanc 1.9.4 | |
8457 knee1 = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID'] | |
8458 knee2 = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') ['ID'] | |
8459 brainix = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID'] | |
8460 | |
8461 brainixHierarchy = [ | |
8462 DoGet(_REMOTE, '/instances/%s/patient' % brainix) ['ID'], | |
8463 DoGet(_REMOTE, '/instances/%s/study' % brainix) ['ID'], | |
8464 DoGet(_REMOTE, '/instances/%s/series' % brainix) ['ID'], | |
8465 brainix, | |
8466 ] | |
8467 | |
8468 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : brainixHierarchy }) | |
8469 self.assertEqual(4, len(a)) | |
8470 b = map(lambda x: x['ID'], a) | |
8471 for i in range(4): | |
8472 self.assertEqual(brainixHierarchy[i], b[i]) | |
418
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8473 self.assertTrue('Metadata' in a[i]) |
415 | 8474 |
8475 for (level, index) in [ | |
8476 ('Patient', 0), | |
8477 ('Study', 1), | |
8478 ('Series', 2), | |
8479 ('Instance', 3), | |
8480 ]: | |
8481 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : brainixHierarchy, | |
8482 'Level' : level }) | |
8483 self.assertEqual(1, len(a)) | |
8484 self.assertEqual(level, a[0]['Type']) | |
8485 self.assertEqual(brainixHierarchy[index], a[0]['ID']) | |
418
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8486 self.assertTrue('Metadata' in a[0]) |
415 | 8487 |
8488 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ brainix ], | |
418
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8489 'Level' : level, |
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8490 'Metadata' : False }) |
415 | 8491 self.assertEqual(1, len(a)) |
8492 self.assertEqual(level, a[0]['Type']) | |
8493 self.assertEqual(brainixHierarchy[index], a[0]['ID']) | |
418
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8494 self.assertFalse('Metadata' in a[0]) |
415 | 8495 |
8496 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ knee1, knee2, brainix ] }) | |
8497 self.assertEqual(3, len(a)) | |
8498 for item in a: | |
8499 self.assertEqual('Instance', item['Type']) | |
8500 b = map(lambda x: x['ID'], a) | |
8501 self.assertTrue(knee1 in b) | |
8502 self.assertTrue(knee2 in b) | |
8503 self.assertTrue(brainix in b) | |
8504 | |
8505 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ knee1, knee2 ], | |
8506 'Level' : 'Series' }) | |
8507 self.assertEqual(2, len(a)) | |
8508 for item in a: | |
8509 self.assertEqual('Series', item['Type']) | |
8510 b = map(lambda x: x['ID'], a) | |
8511 self.assertTrue(DoGet(_REMOTE, '/instances/%s' % knee1) ['ParentSeries'] in b) | |
8512 self.assertTrue(DoGet(_REMOTE, '/instances/%s' % knee2) ['ParentSeries'] in b) | |
8513 | |
8514 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ knee1, knee2 ], | |
418
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8515 'Level' : 'Study', |
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8516 'Metadata' : False }) |
415 | 8517 self.assertEqual(1, len(a)) |
8518 self.assertEqual(DoGet(_REMOTE, '/instances/%s/study' % knee1) ['ID'], a[0]['ID']) | |
8519 self.assertEqual('Study', a[0]['Type']) | |
8520 self.assertEqual('KNEE', a[0]['PatientMainDicomTags']['PatientName']) | |
418
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8521 self.assertFalse('Metadata' in a[0]) |
415 | 8522 |
8523 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ knee1, knee2 ], | |
418
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8524 'Level' : 'Patient', |
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8525 'Metadata' : True }) |
415 | 8526 self.assertEqual(1, len(a)) |
8527 self.assertEqual(DoGet(_REMOTE, '/instances/%s/patient' % knee1) ['ID'], a[0]['ID']) | |
8528 self.assertEqual('Patient', a[0]['Type']) | |
8529 self.assertEqual('KNEE', a[0]['MainDicomTags']['PatientName']) | |
418
8a3d67a40083
test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
417
diff
changeset
|
8530 self.assertTrue('Metadata' in a[0]) |
451
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
8531 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
8532 self.assertEqual(2, len(a[0]['Metadata'])) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
8533 self.assertTrue('MainDicomTagsSignature' in a[0]['Metadata']) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
8534 else: |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
8535 self.assertEqual(1, len(a[0]['Metadata'])) |
33051f9ac850
new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents:
449
diff
changeset
|
8536 self.assertTrue('LastUpdate' in a[0]['Metadata']) |
415 | 8537 |
8538 for level in [ 'Instance', 'Series', 'Study', 'Patient' ]: | |
8539 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ knee1, brainix ], | |
8540 'Level' : level }) | |
8541 self.assertEqual(2, len(a)) | |
8542 for item in a: | |
8543 self.assertEqual(level, item['Type']) | |
8544 b = map(lambda x: x['ID'], a) | |
8545 if level == 'Instance': | |
8546 self.assertTrue(knee1 in b) | |
8547 self.assertTrue(brainix in b) | |
8548 else: | |
8549 self.assertTrue(DoGet(_REMOTE, '/instances/%s/%s' % (knee1, level.lower())) ['ID'] in b) | |
8550 self.assertTrue(DoGet(_REMOTE, '/instances/%s/%s' % (brainix, level.lower())) ['ID'] in b) | |
416
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8551 |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8552 |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8553 def test_split_instances(self): |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8554 # New in 1.9.4 |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8555 knee1 = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID'] |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8556 knee2 = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm') ['ID'] |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8557 study = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8558 series = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8559 |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8560 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8561 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8562 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8563 |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8564 instances = DoGet(_REMOTE, '/instances') |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8565 self.assertEqual(2, len(instances)) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8566 self.assertEqual('1', DoGet(_REMOTE, '/instances/%s/tags?simplify' % knee1) ['InstanceNumber']) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8567 self.assertEqual('2', DoGet(_REMOTE, '/instances/%s/tags?simplify' % knee2) ['InstanceNumber']) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8568 for i in [ knee1, knee2 ]: |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8569 self.assertEqual(series, DoGet(_REMOTE, '/instances/%s/series' % i) ['ID']) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8570 self.assertEqual(study, DoGet(_REMOTE, '/instances/%s/study' % i) ['ID']) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8571 |
417 | 8572 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/studies/%s/split' % study, { |
8573 'KeepSource' : False | |
8574 })) # Neither "Instances", nor "Series" | |
8575 | |
8576 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/studies/%s/split' % study, { | |
8577 'KeepSource' : False, | |
8578 'Instances' : [ ], | |
8579 'Series' : [ ] | |
8580 })) # Empty "Instances" and "Series" | |
8581 | |
8582 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/studies/%s/split' % study, { | |
8583 'Instances' : [ 'nope' ], | |
8584 'KeepSource' : False | |
8585 })) | |
8586 | |
8587 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/studies/%s/split' % study, { | |
8588 'Series' : [ 'nope' ], | |
8589 'KeepSource' : False | |
8590 })) | |
8591 | |
416
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8592 result = DoPost(_REMOTE, '/studies/%s/split' % study, { |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8593 'Instances' : [ knee1 ], |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8594 'KeepSource' : False |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8595 }) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8596 |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8597 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8598 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8599 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8600 |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8601 instances = DoGet(_REMOTE, '/instances') |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8602 self.assertEqual(2, len(instances)) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8603 |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8604 self.assertFalse(knee1 in instances) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8605 self.assertTrue(knee2 in instances) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8606 instances.remove(knee2) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8607 self.assertEqual(series, DoGet(_REMOTE, '/instances/%s/series' % knee2) ['ID']) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8608 self.assertEqual(study, DoGet(_REMOTE, '/instances/%s/study' % knee2) ['ID']) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8609 self.assertNotEqual(series, DoGet(_REMOTE, '/instances/%s/series' % instances[0]) ['ID']) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8610 self.assertNotEqual(study, DoGet(_REMOTE, '/instances/%s/study' % instances[0]) ['ID']) |
80164728c038
test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
415
diff
changeset
|
8611 self.assertEqual('1', DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0]) ['InstanceNumber']) |
419
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8612 |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8613 |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8614 def test_merge_instances(self): |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8615 # New in Orthanc 1.9.4 |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8616 knee = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID'] |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8617 brainix = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID'] |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8618 brainixStudy = DoGet(_REMOTE, '/instances/%s/study' % brainix) ['ID'] |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8619 |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8620 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8621 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8622 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8623 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8624 |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8625 instances = DoGet(_REMOTE, '/instances') |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8626 self.assertEqual(2, len(instances)) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8627 self.assertTrue(brainix in instances) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8628 self.assertTrue(knee in instances) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8629 |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8630 result = DoPost(_REMOTE, '/studies/%s/merge' % brainixStudy, { |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8631 'Resources' : [ knee ] |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8632 }) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8633 |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8634 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8635 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8636 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8637 self.assertEqual(brainixStudy, DoGet(_REMOTE, '/studies')[0]) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8638 |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8639 instances = DoGet(_REMOTE, '/instances') |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8640 self.assertEqual(2, len(instances)) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8641 self.assertTrue(brainix in instances) |
6a57c4efe38a
test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
418
diff
changeset
|
8642 self.assertFalse(knee in instances) |
423
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8643 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8644 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8645 def test_query_retrieve_format(self): |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8646 # New in Orthanc 1.9.5 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8647 # https://groups.google.com/g/orthanc-users/c/1KC4d-0K8s0/m/hfYYz1-tAgAJ |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8648 i = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID'] |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8649 study = DoGet(_REMOTE, '/instances/%s/study' % i) ['MainDicomTags']['StudyInstanceUID'] |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8650 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8651 a = DoPost(_REMOTE, '/modalities/self/query', { |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8652 'Level' : 'Study', |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8653 'Query' : {} |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8654 }) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8655 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8656 b = DoGet(_REMOTE, a['Path'] + '/answers') |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8657 self.assertEqual(1, len(b)) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8658 self.assertEqual('0', b[0]) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8659 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8660 b = DoGet(_REMOTE, a['Path'] + '/answers?expand') |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8661 self.assertEqual(1, len(b)) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8662 self.assertEqual(6, len(b[0])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8663 self.assertEqual('ISO_IR 100', b[0]['0008,0005']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8664 self.assertEqual('SpecificCharacterSet', b[0]['0008,0005']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8665 self.assertEqual('A10003245599', b[0]['0008,0050']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8666 self.assertEqual('AccessionNumber', b[0]['0008,0050']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8667 self.assertEqual('STUDY', b[0]['0008,0052']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8668 self.assertEqual('QueryRetrieveLevel', b[0]['0008,0052']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8669 self.assertEqual('ORTHANC', b[0]['0008,0054']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8670 self.assertEqual('RetrieveAETitle', b[0]['0008,0054']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8671 self.assertEqual('887', b[0]['0010,0020']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8672 self.assertEqual('PatientID', b[0]['0010,0020']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8673 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', b[0]['0020,000d']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8674 self.assertEqual('StudyInstanceUID', b[0]['0020,000d']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8675 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8676 for (key, value) in b[0].items(): |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8677 self.assertEqual('String', value['Type']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8678 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8679 self.assertEqual(json.dumps(b[0]), |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8680 json.dumps(DoGet(_REMOTE, a['Path'] + '/answers/0/content'))) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8681 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8682 # What is below this point didn't work on Orthanc <= 1.9.3 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8683 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8684 b = DoGet(_REMOTE, a['Path'] + '/answers?expand&short') |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8685 self.assertEqual(1, len(b)) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8686 self.assertEqual(6, len(b[0])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8687 self.assertEqual('ISO_IR 100', b[0]['0008,0005']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8688 self.assertEqual('A10003245599', b[0]['0008,0050']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8689 self.assertEqual('STUDY', b[0]['0008,0052']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8690 self.assertEqual('ORTHANC', b[0]['0008,0054']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8691 self.assertEqual('887', b[0]['0010,0020']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8692 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', b[0]['0020,000d']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8693 self.assertEqual(json.dumps(b[0]), |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8694 json.dumps(DoGet(_REMOTE, a['Path'] + '/answers/0/content?short'))) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8695 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8696 b = DoGet(_REMOTE, a['Path'] + '/answers?expand&simplify') |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8697 self.assertEqual(1, len(b)) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8698 self.assertEqual(6, len(b[0])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8699 self.assertEqual('ISO_IR 100', b[0]['SpecificCharacterSet']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8700 self.assertEqual('A10003245599', b[0]['AccessionNumber']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8701 self.assertEqual('STUDY', b[0]['QueryRetrieveLevel']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8702 self.assertEqual('ORTHANC', b[0]['RetrieveAETitle']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8703 self.assertEqual('887', b[0]['PatientID']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8704 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', b[0]['StudyInstanceUID']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8705 self.assertEqual(json.dumps(b[0]), |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8706 json.dumps(DoGet(_REMOTE, a['Path'] + '/answers/0/content?simplify'))) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8707 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8708 b = DoPost(_REMOTE, '/queries/%s/retrieve' % a['ID'], {}) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8709 self.assertEqual('REST API', b['Description']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8710 self.assertEqual('ORTHANC', b['LocalAet']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8711 self.assertEqual('ORTHANC', b['RemoteAet']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8712 self.assertEqual(1, len(b['Query'])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8713 self.assertEqual(4, len(b['Query'][0])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8714 self.assertEqual('A10003245599', b['Query'][0]['0008,0050']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8715 self.assertEqual('STUDY', b['Query'][0]['0008,0052']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8716 self.assertEqual('887', b['Query'][0]['0010,0020']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8717 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', b['Query'][0]['0020,000d']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8718 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8719 # What is below this point didn't work on Orthanc <= 1.9.4 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8720 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8721 b = DoPost(_REMOTE, '/queries/%s/retrieve' % a['ID'], { 'Full' : True }) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8722 self.assertEqual('REST API', b['Description']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8723 self.assertEqual('ORTHANC', b['LocalAet']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8724 self.assertEqual('ORTHANC', b['RemoteAet']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8725 self.assertEqual(1, len(b['Query'])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8726 self.assertEqual(4, len(b['Query'][0])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8727 self.assertEqual('A10003245599', b['Query'][0]['0008,0050']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8728 self.assertEqual('STUDY', b['Query'][0]['0008,0052']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8729 self.assertEqual('887', b['Query'][0]['0010,0020']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8730 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', b['Query'][0]['0020,000d']['Value']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8731 self.assertEqual('AccessionNumber', b['Query'][0]['0008,0050']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8732 self.assertEqual('QueryRetrieveLevel', b['Query'][0]['0008,0052']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8733 self.assertEqual('PatientID', b['Query'][0]['0010,0020']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8734 self.assertEqual('StudyInstanceUID', b['Query'][0]['0020,000d']['Name']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8735 |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8736 b = DoPost(_REMOTE, '/queries/%s/retrieve' % a['ID'], { 'Simplify' : True }) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8737 self.assertEqual('REST API', b['Description']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8738 self.assertEqual('ORTHANC', b['LocalAet']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8739 self.assertEqual('ORTHANC', b['RemoteAet']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8740 self.assertEqual(1, len(b['Query'])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8741 self.assertEqual(4, len(b['Query'][0])) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8742 self.assertEqual('A10003245599', b['Query'][0]['AccessionNumber']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8743 self.assertEqual('STUDY', b['Query'][0]['QueryRetrieveLevel']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8744 self.assertEqual('887', b['Query'][0]['PatientID']) |
cef3847dc8af
test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
420
diff
changeset
|
8745 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', b['Query'][0]['StudyInstanceUID']) |
424
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8746 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8747 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8748 def test_anonymize_nested(self): |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8749 # New in Orthanc 1.9.5 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8750 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8751 tags = { |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8752 'MappingResourceIdentificationSequence' : [ |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8753 { |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8754 # Test "DicomModification::RelationshipsVisitor::GetDefaultAction()" |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8755 '0009,1002' : 'ABCD', # Private tag not registered in dictionary |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8756 '0016,0071' : '-12', # "GPS Latitude" whose VR is DS in "removals_" |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8757 '0034,0005' : '13', # VR is OB, and in "clearings_" (only in DCMTK 3.6.2) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8758 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8759 # Test "DicomModification::RelationshipsVisitor::VisitString()" |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8760 'StudyDescription' : 'Hello', # Removed |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8761 'StudyDate' : '20210705', # Cleared |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8762 '0009,1001' : '-1234', # Private tag whose VR is DS |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8763 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8764 # Test anonymization of nested sequences |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8765 'ReferencedStudySequence' : [ |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8766 { |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8767 'PatientID' : 'HELLO' |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8768 } |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8769 ], |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8770 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8771 # Non-anonymized tags |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8772 'CodeMeaning' : 'MEANING1', |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8773 'EquivalentCodeSequence' : [ |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8774 { |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8775 'CodeMeaning' : 'MEANING2', |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8776 } |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8777 ], |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8778 } |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8779 ], |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8780 } |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8781 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8782 a = DoPost(_REMOTE, '/tools/create-dicom', |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8783 json.dumps({ |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8784 'Tags' : tags, |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8785 'PrivateCreator' : 'Lunit', |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8786 })) ['ID'] |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8787 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8788 study = DoGet(_REMOTE, '/instances/%s/study' % a) ['ID'] |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8789 b = DoPost(_REMOTE, '/studies/%s/anonymize' % study, {}) ['ID'] |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8790 c = DoGet(_REMOTE, '/studies/%s/instances' % b) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8791 self.assertEqual(1, len(c)) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8792 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8793 tags1 = DoGet(_REMOTE, '/instances/%s/tags?short' % a) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8794 tags2 = DoGet(_REMOTE, '/instances/%s/tags?short' % c[0]['ID']) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8795 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8796 # Only "StudyDate" must be present in |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8797 # "MappingResourceIdentificationSequence" after anonymization |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8798 self.assertEqual(1, len(tags1['0008,0124'])) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8799 self.assertEqual(1, len(tags2['0008,0124'])) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8800 self.assertEqual(9, len(tags1['0008,0124'][0])) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8801 self.assertEqual(3, len(tags2['0008,0124'][0])) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8802 self.assertEqual('', tags2['0008,0124'][0]['0008,0020']) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8803 self.assertEqual('MEANING1', tags2['0008,0124'][0]['0008,0104']) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8804 self.assertEqual('MEANING2', tags2['0008,0124'][0]['0008,0121'][0]['0008,0104']) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8805 |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8806 self.assertTrue('0008,1110' in tags1['0008,0124'][0]) |
934f505677da
test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
423
diff
changeset
|
8807 self.assertFalse('0008,1110' in tags2['0008,0124'][0]) |
427
77455e156112
integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
424
diff
changeset
|
8808 |
77455e156112
integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
424
diff
changeset
|
8809 |
77455e156112
integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
424
diff
changeset
|
8810 def test_issue_200(self): |
77455e156112
integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
424
diff
changeset
|
8811 # https://groups.google.com/g/orthanc-users/c/9CTLsL-JqDw/m/2I0xgyYHBAAJ |
589
47b87c87213b
new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents:
588
diff
changeset
|
8812 # https://bugs.orthanc-server.com/show_bug.cgi?id=200 |
428 | 8813 self.assertEqual(0, len(DoGet(_REMOTE, '/changes') ['Changes'])) |
8814 self.assertEqual(0, len(DoGet(_REMOTE, '/changes?last') ['Changes'])) | |
429 | 8815 u = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] |
427
77455e156112
integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
424
diff
changeset
|
8816 |
77455e156112
integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
424
diff
changeset
|
8817 for change in DoGet(_REMOTE, '/changes') ['Changes']: |
77455e156112
integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
424
diff
changeset
|
8818 self.assertTrue(re.match('[0-9]{8}T[0-9]{6}', change['Date'])) |
77455e156112
integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
424
diff
changeset
|
8819 self.assertTrue(re.match('[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}', change['ID'])) |
428 | 8820 |
8821 last = DoGet(_REMOTE, '/changes?last') ['Changes'] | |
8822 self.assertEqual(1, len(last)) | |
8823 self.assertTrue(re.match('[0-9]{8}T[0-9]{6}', last[0]['Date'])) | |
8824 self.assertTrue(re.match('[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}', last[0]['ID'])) | |
429 | 8825 |
8826 self.assertEqual(0, len(DoGet(_REMOTE, '/exports') ['Exports'])) | |
8827 self.assertEqual(0, len(DoGet(_REMOTE, '/exports?last') ['Exports'])) | |
8828 DoPost(_REMOTE, '/modalities/self/store', [ u ]) | |
8829 | |
8830 for change in DoGet(_REMOTE, '/exports') ['Exports']: | |
8831 self.assertTrue(re.match('[0-9]{8}T[0-9]{6}', change['Date'])) | |
8832 self.assertTrue(re.match('[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}', change['ID'])) | |
8833 | |
8834 last = DoGet(_REMOTE, '/exports?last') ['Exports'] | |
8835 self.assertEqual(1, len(last)) | |
8836 self.assertEqual('ozp00SjY2xG', last[0]['PatientID']) | |
8837 self.assertEqual('self', last[0]['RemoteModality']) | |
8838 self.assertEqual('Instance', last[0]['ResourceType']) | |
8839 self.assertEqual('/instances/%s' % last[0]['ID'], last[0]['Path']) | |
8840 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', last[0]['StudyInstanceUID']) | |
8841 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', last[0]['SeriesInstanceUID']) | |
8842 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', last[0]['SOPInstanceUID']) | |
8843 self.assertTrue(re.match('[0-9]{8}T[0-9]{6}', last[0]['Date'])) | |
8844 self.assertTrue(re.match('[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}', last[0]['ID'])) | |
431
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8845 |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8846 |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8847 def test_upload_dicomdir_archive(self): |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8848 # This test fails on Orthanc <= 1.9.6 |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8849 # https://groups.google.com/g/orthanc-users/c/sgBU89o4nhU/m/kbRAYiQUAAAJ |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8850 |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8851 # Create a ZIP archive with a DICOMDIR |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8852 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8853 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID'] |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8854 media = DoGet(_REMOTE, '/studies/%s/media' % study) |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8855 DoDelete(_REMOTE, '/instances/%s' % instance) |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8856 |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8857 result = DoPost(_REMOTE, '/instances', media) |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8858 self.assertEqual(1, len(result)) |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8859 self.assertEqual(instance, result[0]['ID']) |
e665c493e23e
test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
429
diff
changeset
|
8860 self.assertEqual('Success', result[0]['Status']) |
432
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8861 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8862 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8863 def test_modify_keep_source(self): |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8864 # https://groups.google.com/g/orthanc-users/c/1lvlBTs2WUY/m/HmYsc2CPBQAJ |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8865 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8866 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8867 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8868 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8869 a = DoPost(_REMOTE, '/studies/%s/anonymize' % study, {}) ['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8870 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8871 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8872 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8873 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8874 a = DoPost(_REMOTE, '/studies/%s/anonymize' % study, { 'KeepSource' : True }) ['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8875 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8876 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8877 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8878 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8879 a = DoPost(_REMOTE, '/studies/%s/anonymize' % study, { 'KeepSource' : False }) ['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8880 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8881 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8882 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8883 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8884 UploadInstance(_REMOTE, 'DummyCT.dcm') |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8885 a = DoPost(_REMOTE, '/studies/%s/modify' % study, { 'Replace' : { } }) ['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8886 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8887 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8888 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8889 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8890 a = DoPost(_REMOTE, '/studies/%s/modify' % study, { 'KeepSource' : True }) ['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8891 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8892 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8893 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8894 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8895 a = DoPost(_REMOTE, '/studies/%s/modify' % study, { 'KeepSource' : False }) ['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8896 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8897 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8898 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8899 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8900 def GetStudy(a): |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8901 b = filter(lambda x: x['Type'] == 'Study', a['Resources']) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8902 if len(b) == 1: |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8903 return b[0]['ID'] |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8904 else: |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8905 raise Exception() |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8906 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8907 UploadInstance(_REMOTE, 'DummyCT.dcm') |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8908 a = GetStudy(DoPost(_REMOTE, '/tools/bulk-anonymize', { 'Resources' : [ study ]})) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8909 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8910 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8911 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8912 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8913 a = GetStudy(DoPost(_REMOTE, '/tools/bulk-anonymize', { 'Resources' : [ study ], 'KeepSource' : True})) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8914 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8915 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8916 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8917 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8918 a = GetStudy(DoPost(_REMOTE, '/tools/bulk-anonymize', { 'Resources' : [ study ], 'KeepSource' : False})) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8919 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8920 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8921 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8922 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8923 UploadInstance(_REMOTE, 'DummyCT.dcm') |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8924 a = GetStudy(DoPost(_REMOTE, '/tools/bulk-modify', { 'Resources' : [ study ], 'Replace' : { }})) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8925 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8926 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8927 # No more studies, because "bulk-modify" was not given a |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8928 # level, so the modified instance belongs to the same study as |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8929 # the original instance |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8930 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8931 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8932 # The following fails on Orthanc <= 1.9.6 because "Level" was |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8933 # introduced in 1.9.7 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8934 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8935 UploadInstance(_REMOTE, 'DummyCT.dcm') |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8936 a = GetStudy(DoPost(_REMOTE, '/tools/bulk-modify', { 'Level' : 'Study', 'Resources' : [ study ], 'Replace' : { }})) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8937 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8938 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8939 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8940 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8941 a = GetStudy(DoPost(_REMOTE, '/tools/bulk-modify', { 'Level' : 'Study', 'Resources' : [ study ], 'KeepSource' : True})) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8942 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8943 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8944 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8945 |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8946 a = GetStudy(DoPost(_REMOTE, '/tools/bulk-modify', { 'Level' : 'Study', 'Resources' : [ study ], 'KeepSource' : False})) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8947 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8948 DoDelete(_REMOTE, '/studies/%s' % a) |
f4609c97e995
test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
431
diff
changeset
|
8949 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) |
433
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8950 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8951 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8952 def test_multiframe_windowing(self): |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8953 # Fixed in Orthanc 1.9.7 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8954 a = UploadInstance(_REMOTE, 'MultiframeWindowing.dcm') ['ID'] |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8955 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8956 im = GetImage(_REMOTE, '/instances/%s/frames/0/rendered?window-center=127&window-width=256' % a) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8957 self.assertEqual(0x00, im.getpixel((0, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8958 self.assertEqual(0x10, im.getpixel((1, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8959 self.assertEqual(0x20, im.getpixel((0, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8960 self.assertEqual(0x30, im.getpixel((1, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8961 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8962 # Center the window on value "16 == 0x10", thus it has the |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8963 # mid-level value (i.e. 127) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8964 im = GetImage(_REMOTE, '/instances/%s/frames/0/rendered?window-center=16&window-width=128' % a) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8965 self.assertEqual(127 - 2 * 16, im.getpixel((0, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8966 self.assertEqual(127, im.getpixel((1, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8967 self.assertEqual(127 + 2 * 16, im.getpixel((0, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8968 self.assertEqual(127 + 2 * 32, im.getpixel((1, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8969 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8970 # Window center and window width are burned in FrameVOILUTSequence for frame 0 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8971 im = GetImage(_REMOTE, '/instances/%s/frames/0/rendered' % a) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8972 self.assertEqual(127 - 2 * 16, im.getpixel((0, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8973 self.assertEqual(127, im.getpixel((1, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8974 self.assertEqual(127 + 2 * 16, im.getpixel((0, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8975 self.assertEqual(127 + 2 * 32, im.getpixel((1, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8976 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8977 im = GetImage(_REMOTE, '/instances/%s/frames/1/rendered?window-center=127&window-width=256' % a) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8978 self.assertEqual(100, im.getpixel((0, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8979 self.assertEqual(116, im.getpixel((1, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8980 self.assertEqual(132, im.getpixel((0, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8981 self.assertEqual(148, im.getpixel((1, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8982 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8983 im = GetImage(_REMOTE, '/instances/%s/frames/2/rendered?window-center=127&window-width=256' % a) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8984 self.assertEqual(0, im.getpixel((0, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8985 self.assertEqual(32, im.getpixel((1, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8986 self.assertEqual(64, im.getpixel((0, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8987 self.assertEqual(96, im.getpixel((1, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8988 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8989 im = GetImage(_REMOTE, '/instances/%s/frames/3/rendered?window-center=127&window-width=256' % a) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8990 self.assertEqual(100, im.getpixel((0, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8991 self.assertEqual(132, im.getpixel((1, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8992 self.assertEqual(164, im.getpixel((0, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8993 self.assertEqual(196, im.getpixel((1, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8994 |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8995 im = GetImage(_REMOTE, '/instances/%s/frames/0/rendered?window-center=16&window-width=128' % a) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8996 self.assertEqual(127 - 2 * 16, im.getpixel((0, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8997 self.assertEqual(127, im.getpixel((1, 0))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8998 self.assertEqual(127 + 2 * 16, im.getpixel((0, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
8999 self.assertEqual(127 + 2 * 32, im.getpixel((1, 1))) |
cb579ad96a6c
test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
432
diff
changeset
|
9000 |
436
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9001 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9002 def test_dicom_seg(self): |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9003 # This test fails in Orthanc <= 1.9.7 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9004 a = UploadInstance(_REMOTE, 'DicomSeg.dcm') ['ID'] |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9005 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9006 self.assertEqual(96, len(DoGet(_REMOTE, '/instances/%s/frames' % a))) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9007 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/96/preview' % a)) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9008 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9009 nonEmptyFrames = [ 11, 12, 13, 14, 15, 16, 39, 40, 42, 43, 44, 45, |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9010 46, 47, 48, 49, 75, 76, 77, 78, 79, 80, 81 ] |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9011 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9012 for i in range(96): |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9013 im = GetImage(_REMOTE, '/instances/%s/frames/%d/preview' % (a, i)) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9014 self.assertEqual('L', im.mode) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9015 self.assertEqual(256, im.size[0]) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9016 self.assertEqual(256, im.size[1]) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9017 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9018 e = im.getextrema() |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9019 self.assertEqual(0, e[0]) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9020 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9021 if e[1] == 0: |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9022 self.assertFalse(i in nonEmptyFrames) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9023 else: |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9024 self.assertTrue(i in nonEmptyFrames) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9025 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9026 im1 = GetImage(_REMOTE, '/instances/%s/frames/44/preview' % a) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9027 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9028 # Generated by "dcm2pnm +F 45 DicomSeg.dcm DicomSeg-Frame45.pgm" |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9029 im2 = Image.open(GetDatabasePath('DicomSeg-Frame45.pgm')) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9030 im2 = im2.point(lambda p: 255 if p == 128 else 0) |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9031 |
9f87d5b2b382
added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
433
diff
changeset
|
9032 self.assertTrue(ImageChops.difference(im1, im2).getbbox() is None) |
440 | 9033 |
9034 | |
9035 def test_numpy(self): | |
448
63f475995400
Orthanc 1.9.8 is now known as Orthanc 1.10.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
447
diff
changeset
|
9036 # New in Orthanc 1.10.0 |
440 | 9037 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] |
9038 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm') | |
9039 b = UploadInstance(_REMOTE, 'DicomSeg.dcm') ['ID'] | |
441
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9040 d = UploadInstance(_REMOTE, 'Issue124.dcm') ['ID'] |
440 | 9041 |
9042 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy' % a))) | |
9043 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9044 self.assertEqual(numpy.float32, c.dtype) | |
9045 self.assertEqual((288, 288, 1), c.shape) | |
441
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9046 self.assertAlmostEqual(0, c.min()) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9047 self.assertAlmostEqual(536, c.max()) |
440 | 9048 |
9049 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy?rescale=0' % a))) | |
9050 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9051 self.assertEqual(numpy.uint16, c.dtype) | |
9052 self.assertEqual((288, 288, 1), c.shape) | |
441
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9053 self.assertEqual(0, c.min()) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9054 self.assertEqual(536, c.max()) |
440 | 9055 |
9056 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy?rescale=1&compress=false' % a))) | |
9057 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9058 self.assertEqual(numpy.float32, c.dtype) | |
9059 self.assertEqual((1, 288, 288, 1), c.shape) | |
9060 | |
9061 series = DoGet(_REMOTE, '/instances/%s/series' % a)['ID'] | |
9062 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy?rescale=true&compress=0' % series))) | |
9063 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9064 self.assertEqual(numpy.float32, c.dtype) | |
9065 self.assertEqual((2, 288, 288, 1), c.shape) | |
9066 | |
9067 series = DoGet(_REMOTE, '/instances/%s/series' % a)['ID'] | |
9068 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy?rescale=1' % series))) | |
9069 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9070 self.assertEqual(numpy.float32, c.dtype) | |
9071 self.assertEqual((2, 288, 288, 1), c.shape) | |
9072 | |
9073 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy?compress' % a))) | |
9074 self.assertTrue(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9075 self.assertEqual(1, len(c.files)) | |
9076 self.assertEqual(numpy.float32, c['arr_0'].dtype) | |
9077 self.assertEqual((1, 288, 288, 1), c['arr_0'].shape) | |
9078 | |
9079 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy' % b))) | |
9080 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9081 self.assertEqual(numpy.float32, c.dtype) | |
9082 self.assertEqual((256, 256, 1), c.shape) | |
441
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9083 self.assertAlmostEqual(0, c.min()) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9084 self.assertAlmostEqual(0, c.max()) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9085 |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9086 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/14/numpy' % b))) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9087 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9088 self.assertEqual(numpy.float32, c.dtype) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9089 self.assertEqual((256, 256, 1), c.shape) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9090 self.assertAlmostEqual(0, c.min()) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9091 self.assertAlmostEqual(255, c.max()) |
440 | 9092 |
9093 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy' % b))) | |
9094 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9095 self.assertEqual(numpy.float32, c.dtype) | |
9096 self.assertEqual((96, 256, 256, 1), c.shape) | |
9097 | |
9098 series = DoGet(_REMOTE, '/instances/%s/series' % b)['ID'] | |
9099 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy' % series))) | |
9100 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) | |
9101 self.assertEqual(numpy.float32, c.dtype) | |
9102 self.assertEqual((96, 256, 256, 1), c.shape) | |
441
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9103 |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9104 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy' % d))) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9105 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9106 self.assertEqual(numpy.float32, c.dtype) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9107 self.assertEqual((512, 512, 1), c.shape) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9108 self.assertAlmostEqual(-3024, c.min()) # RescaleIntercept equals -1024 in this image |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9109 self.assertAlmostEqual(2374, c.max()) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9110 |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9111 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy?rescale=0' % d))) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9112 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile)) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9113 self.assertEqual(numpy.int16, c.dtype) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9114 self.assertEqual((512, 512, 1), c.shape) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9115 self.assertEqual(-2000, c.min()) |
21a45ddc9256
expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
440
diff
changeset
|
9116 self.assertEqual(3398, c.max()) |
442
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9117 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9118 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9119 def test_find_patient_name_with_brackets_and_star(self): |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9120 u = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')['ID'] |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9121 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9122 modified = DoPost(_REMOTE, '/instances/%s/modify' % u, json.dumps({ |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9123 "Replace" : { |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9124 "PatientName" : "MyName[*]", |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9125 "PatientID": "test_brackets" |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9126 }, |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9127 "Force": True |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9128 }), |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9129 'application/json') |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9130 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9131 m = DoPost(_REMOTE, '/instances', modified, 'application/dicom')['ID'] |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9132 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9133 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9134 'Query' : { 'PatientName' : 'MyName[*]' }}) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9135 self.assertEqual(1, len(a)) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9136 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9137 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9138 'Query' : { 'PatientName' : 'MyName[*]' }}) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9139 self.assertEqual(1, len(a)) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9140 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9141 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9142 'Query' : { 'PatientName' : 'MyName*' }}) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9143 self.assertEqual(1, len(a)) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9144 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9145 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9146 'Query' : { 'PatientName' : 'MyName*' }}) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9147 self.assertEqual(1, len(a)) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9148 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9149 def test_find_patient_name_with_brackets_only(self): |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9150 u = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')['ID'] |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9151 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9152 modified = DoPost(_REMOTE, '/instances/%s/modify' % u, json.dumps({ |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9153 "Replace" : { |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9154 "PatientName" : "MyName2[]", |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9155 "PatientID": "test_brackets2" |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9156 }, |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9157 "Force": True |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9158 }), |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9159 'application/json') |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9160 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9161 m = DoPost(_REMOTE, '/instances', modified, 'application/dicom')['ID'] |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9162 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9163 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9164 'Query' : { 'PatientName' : 'MyName2[*]' }}) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9165 self.assertEqual(1, len(a)) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9166 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9167 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9168 'Query' : { 'PatientName' : 'MyName2[*]' }}) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9169 self.assertEqual(1, len(a)) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9170 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9171 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9172 'Query' : { 'PatientName' : 'MyName2*' }}) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9173 self.assertEqual(1, len(a)) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9174 |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9175 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9176 'Query' : { 'PatientName' : 'MyName2*' }}) |
af57603438b3
added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents:
441
diff
changeset
|
9177 self.assertEqual(1, len(a)) |
455
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9178 |
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9179 |
452
45dd181b0f17
added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents:
451
diff
changeset
|
9180 def test_rest_find_requested_tags(self): |
486
6144ef431512
new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents:
482
diff
changeset
|
9181 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1): # RequestedTags introduced in 1.11.0 but Sequences allowed since 1.11.1 |
471 | 9182 |
9183 # Upload instances | |
9184 for i in range(2): | |
9185 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) | |
9186 | |
9187 # Patient level | |
9188 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', | |
9189 'CaseSensitive' : False, | |
9190 'Query' : { 'PatientName' : 'BRAINIX' }, | |
486
6144ef431512
new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents:
482
diff
changeset
|
9191 'RequestedTags' : [ 'PatientName', 'PatientID', 'PatientSex', 'PatientBirthDate'], |
471 | 9192 'Expand': True |
9193 }) | |
9194 self.assertEqual(1, len(a)) | |
9195 self.assertIn('PatientName', a[0]['RequestedTags']) | |
9196 self.assertIn('PatientID', a[0]['RequestedTags']) | |
9197 self.assertIn('PatientSex', a[0]['RequestedTags']) | |
9198 self.assertIn('PatientBirthDate', a[0]['RequestedTags']) | |
9199 | |
9200 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName']) | |
9201 self.assertEqual('5Yp0E', a[0]['RequestedTags']['PatientID']) | |
9202 self.assertEqual('0000', a[0]['RequestedTags']['PatientSex']) | |
9203 self.assertEqual('19490301', a[0]['RequestedTags']['PatientBirthDate']) | |
9204 | |
9205 # Study level, request patient tags too | |
9206 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', | |
9207 'CaseSensitive' : False, | |
9208 'Query' : { 'PatientName' : 'BRAINIX' }, | |
9209 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID'], | |
9210 'Expand': True | |
9211 }) | |
9212 self.assertEqual(1, len(a)) | |
9213 self.assertIn('PatientName', a[0]['RequestedTags']) | |
9214 self.assertIn('StudyInstanceUID', a[0]['RequestedTags']) | |
9215 | |
9216 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName']) | |
9217 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID']) | |
9218 | |
9219 | |
9220 # Series level, request patient and study tags too | |
9221 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', | |
9222 'CaseSensitive' : False, | |
9223 'Query' : { 'PatientName' : 'BRAINIX' }, | |
486
6144ef431512
new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents:
482
diff
changeset
|
9224 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'SeriesInstanceUID', 'RequestAttributesSequence'], |
471 | 9225 'Expand': True |
9226 }) | |
9227 self.assertEqual(1, len(a)) | |
9228 self.assertIn('PatientName', a[0]['RequestedTags']) | |
9229 self.assertIn('StudyInstanceUID', a[0]['RequestedTags']) | |
9230 self.assertIn('SeriesInstanceUID', a[0]['RequestedTags']) | |
486
6144ef431512
new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents:
482
diff
changeset
|
9231 self.assertIn('RequestAttributesSequence', a[0]['RequestedTags']) |
471 | 9232 |
9233 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName']) | |
9234 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID']) | |
9235 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', a[0]['RequestedTags']['SeriesInstanceUID']) | |
486
6144ef431512
new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents:
482
diff
changeset
|
9236 self.assertEqual('A10029316690', a[0]['RequestedTags']['RequestAttributesSequence'][0]['RequestedProcedureID']) |
471 | 9237 |
9238 | |
9239 # Instance level, request patient, study and series tags too, include tags that are not part of the main dicom tags | |
9240 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', | |
9241 'CaseSensitive' : False, | |
9242 'Query' : { 'PatientName' : 'BRAINIX' }, | |
486
6144ef431512
new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents:
482
diff
changeset
|
9243 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID', 'PhotometricInterpretation', 'RequestAttributesSequence'], |
471 | 9244 'Expand': True |
9245 }) | |
9246 self.assertEqual(1, len(a)) | |
9247 self.assertIn('PatientName', a[0]['RequestedTags']) | |
9248 self.assertIn('StudyInstanceUID', a[0]['RequestedTags']) | |
9249 self.assertIn('SeriesInstanceUID', a[0]['RequestedTags']) | |
9250 self.assertIn('PhotometricInterpretation', a[0]['RequestedTags']) | |
486
6144ef431512
new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents:
482
diff
changeset
|
9251 self.assertIn('RequestAttributesSequence', a[0]['RequestedTags']) |
471 | 9252 |
9253 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName']) | |
9254 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID']) | |
9255 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', a[0]['RequestedTags']['SeriesInstanceUID']) | |
9256 self.assertEqual('MONOCHROME2', a[0]['RequestedTags']['PhotometricInterpretation']) | |
486
6144ef431512
new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents:
482
diff
changeset
|
9257 self.assertEqual('A10029316690', a[0]['RequestedTags']['RequestAttributesSequence'][0]['RequestedProcedureID']) |
452
45dd181b0f17
added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents:
451
diff
changeset
|
9258 |
45dd181b0f17
added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents:
451
diff
changeset
|
9259 |
453
46ae8fb09254
test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents:
452
diff
changeset
|
9260 def test_rest_find_requested_tags_computed_tags(self): |
471 | 9261 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
9262 # Upload instances | |
9263 for i in range(2): | |
9264 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) | |
9265 | |
9266 | |
9267 # Patient level | |
9268 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', | |
9269 'CaseSensitive' : False, | |
9270 'Query' : { 'PatientName' : 'BRAINIX' }, | |
9271 'RequestedTags' : [ 'PatientName', 'NumberOfPatientRelatedStudies', 'NumberOfPatientRelatedSeries', 'NumberOfPatientRelatedInstances'], | |
9272 'Expand': True | |
9273 }) | |
9274 self.assertEqual(1, len(a)) | |
9275 | |
9276 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName']) | |
9277 self.assertEqual('1', a[0]['RequestedTags']['NumberOfPatientRelatedStudies']) | |
9278 self.assertEqual('1', a[0]['RequestedTags']['NumberOfPatientRelatedSeries']) | |
9279 self.assertEqual('2', a[0]['RequestedTags']['NumberOfPatientRelatedInstances']) | |
9280 | |
9281 # Study level | |
9282 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', | |
9283 'CaseSensitive' : False, | |
9284 'Query' : { 'PatientName' : 'BRAINIX' }, | |
9285 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'ModalitiesInStudy', 'SOPClassesInStudy', 'NumberOfStudyRelatedInstances', 'NumberOfStudyRelatedSeries'], | |
9286 'Expand': True | |
9287 }) | |
9288 self.assertEqual(1, len(a)) | |
9289 | |
9290 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName']) | |
9291 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID']) | |
9292 self.assertEqual('MR', a[0]['RequestedTags']['ModalitiesInStudy']) | |
9293 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', a[0]['RequestedTags']['SOPClassesInStudy']) | |
9294 self.assertEqual('2', a[0]['RequestedTags']['NumberOfStudyRelatedInstances']) | |
9295 self.assertEqual('1', a[0]['RequestedTags']['NumberOfStudyRelatedSeries']) | |
9296 | |
9297 # Series level | |
9298 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', | |
9299 'CaseSensitive' : False, | |
9300 'Query' : { 'PatientName' : 'BRAINIX' }, | |
9301 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'NumberOfSeriesRelatedInstances'], | |
9302 'Expand': True | |
9303 }) | |
9304 self.assertEqual(1, len(a)) | |
9305 | |
9306 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName']) | |
9307 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID']) | |
9308 self.assertEqual('2', a[0]['RequestedTags']['NumberOfSeriesRelatedInstances']) | |
9309 | |
9310 # Instance level | |
9311 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', | |
9312 'CaseSensitive' : False, | |
9313 'Query' : { 'PatientName' : 'BRAINIX' }, | |
9314 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'SOPInstanceUID', 'InstanceAvailability'], | |
9315 'Expand': True | |
9316 }) | |
9317 self.assertEqual(2, len(a)) | |
9318 | |
9319 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName']) | |
9320 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID']) | |
9321 self.assertEqual('ONLINE', a[0]['RequestedTags']['InstanceAvailability']) | |
456 | 9322 |
452
45dd181b0f17
added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents:
451
diff
changeset
|
9323 def test_list_resources_requested_tags(self): |
45dd181b0f17
added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents:
451
diff
changeset
|
9324 |
471 | 9325 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
9326 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] | |
9327 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID'] | |
9328 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID'] | |
9329 | |
9330 # list series and request tags that are not in the default main dicom tags | |
9331 a = DoGet(_REMOTE, '/studies/%s/series?expand&simplify&requestedTags=PatientName;Modality;SeriesInstanceUID;MRAcquisitionType' % study) | |
9332 | |
9333 self.assertEqual('2D', a[0]['RequestedTags']['MRAcquisitionType']) | |
9334 self.assertEqual('MR', a[0]['RequestedTags']['Modality']) | |
9335 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName']) | |
9336 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', a[0]['RequestedTags']['SeriesInstanceUID']) | |
9337 | |
9338 # list studies and request patient and studies tags | |
9339 a = DoGet(_REMOTE, '/patients/%s/studies?expand&simplify&requestedTags=PatientName;StudyInstanceUID' % patient) | |
9340 | |
9341 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID']) | |
9342 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName']) | |
9343 | |
9344 | |
9345 # list instances and request patient, studies and series tags including tags that are not in main dicom tags | |
9346 a = DoGet(_REMOTE, '/patients/%s/instances?expand&simplify&requestedTags=PatientName;StudyInstanceUID;SeriesInstanceUID;SOPInstanceUID;Rows;Columns;InstanceAvailability' % patient) | |
9347 | |
9348 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID']) | |
9349 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', a[0]['RequestedTags']['SeriesInstanceUID']) | |
9350 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', a[0]['RequestedTags']['SOPInstanceUID']) | |
9351 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName']) | |
9352 self.assertEqual('512', a[0]['RequestedTags']['Rows']) | |
9353 self.assertEqual('512', a[0]['RequestedTags']['Columns']) | |
9354 self.assertEqual('ONLINE', a[0]['RequestedTags']['InstanceAvailability']) | |
452
45dd181b0f17
added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents:
451
diff
changeset
|
9355 |
453
46ae8fb09254
test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents:
452
diff
changeset
|
9356 |
46ae8fb09254
test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents:
452
diff
changeset
|
9357 def test_list_resources_requested_tags_study_computed_tags(self): |
452
45dd181b0f17
added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents:
451
diff
changeset
|
9358 |
471 | 9359 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
9360 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] | |
9361 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID'] | |
9362 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID'] | |
9363 | |
9364 # list studies and request patient and studies tags, including ModalitiesInStudy | |
9365 a = DoGet(_REMOTE, '/patients/%s/studies?expand&simplify&requestedTags=PatientName;StudyInstanceUID;ModalitiesInStudy;SOPClassesInStudy;NumberOfStudyRelatedInstances;NumberOfStudyRelatedSeries' % patient) | |
9366 | |
9367 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID']) | |
9368 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName']) | |
9369 self.assertEqual('MR', a[0]['RequestedTags']['ModalitiesInStudy']) | |
9370 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', a[0]['RequestedTags']['SOPClassesInStudy']) | |
9371 self.assertEqual('1', a[0]['RequestedTags']['NumberOfStudyRelatedInstances']) | |
9372 self.assertEqual('1', a[0]['RequestedTags']['NumberOfStudyRelatedSeries']) | |
453
46ae8fb09254
test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents:
452
diff
changeset
|
9373 |
46ae8fb09254
test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents:
452
diff
changeset
|
9374 |
46ae8fb09254
test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents:
452
diff
changeset
|
9375 def test_list_resources_requested_tags_series_computed_tags(self): |
46ae8fb09254
test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents:
452
diff
changeset
|
9376 |
471 | 9377 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): |
9378 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID'] | |
9379 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID'] | |
9380 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID'] | |
9381 | |
9382 # list studies and request patient and studies tags, including ModalitiesInStudy | |
9383 a = DoGet(_REMOTE, '/studies/%s/series?expand&simplify&requestedTags=PatientName;SeriesInstanceUID;NumberOfSeriesRelatedInstances' % study) | |
9384 | |
9385 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', a[0]['RequestedTags']['SeriesInstanceUID']) | |
9386 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName']) | |
9387 self.assertEqual('1', a[0]['RequestedTags']['NumberOfSeriesRelatedInstances']) | |
453
46ae8fb09254
test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents:
452
diff
changeset
|
9388 |
455
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9389 def test_dicomweb_jpeg2k_implicit(self): |
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9390 # This is a file encoded using 1.2.840.10008.1.2.4.90 transfer |
457 | 9391 # syntax, in which most DICOM tags have the "UN" value |
455
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9392 # representation. Support introduced in Orthanc 1.10.1. |
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9393 # https://groups.google.com/g/orthanc-users/c/86fobx3ZyoM/m/KBG17un6AQAJ |
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9394 a = UploadInstance(_REMOTE, '2022-03-08-RicSmi.dcm') ['ID'] |
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9395 b = DoGet(_REMOTE, '/instances/%s/file' % a, |
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9396 headers = { 'Accept' : 'application/dicom+json' }) |
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9397 self.assertEqual(b['0020000D']['Value'][0], '1.2.276.0.7230010.3.1.2.2358427580.3460.1646695830.793') |
f53cd250becc
test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
449
diff
changeset
|
9398 self.assertEqual(b['0020000E']['Value'][0], '1.2.276.0.7230010.3.1.3.2358427580.3460.1646695830.794') |
488
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9399 |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9400 def test_create_png16RBGA(self): |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9401 with open(GetDatabasePath('Png16RBGATest.png'), 'rb') as f: |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9402 png = f.read() |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9403 |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9404 i = DoPost(_REMOTE, '/tools/create-dicom', |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9405 json.dumps({ |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9406 'PatientName' : 'Jodogne', |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9407 'Modality' : 'CT', |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9408 'SOPClassUID' : '1.2.840.10008.5.1.4.1.1.1', |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9409 'PixelData' : 'data:image/png;base64,' + base64.b64encode(png) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9410 })) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9411 |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9412 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip()) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9413 self.assertEqual('CT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i['ID']).strip()) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9414 |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9415 png = GetImage(_REMOTE, '/instances/%s/preview' % i['ID']) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9416 self.assertEqual((32, 32), png.size) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9417 |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9418 png = GetImage(_REMOTE, '/instances/%s/rendered' % i['ID']) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9419 self.assertEqual((32, 32), png.size) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9420 |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9421 j = DoGet(_REMOTE, i['Path']) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9422 self.assertEqual('Instance', j['Type']) |
e904b2282b0e
Added support for RGBA64 images in tools/create-dicom and /preview (Contribution from James Manners - Pliny)
Alain Mazy <am@osimis.io>
parents:
486
diff
changeset
|
9423 self.assertEqual(j['ID'], i['ID']) |
501
1b1bb8621021
/store: allows overriding CalledAet, Host, Port
Alain Mazy <am@osimis.io>
parents:
500
diff
changeset
|
9424 |
1b1bb8621021
/store: allows overriding CalledAet, Host, Port
Alain Mazy <am@osimis.io>
parents:
500
diff
changeset
|
9425 def test_storescu_custom_host_ip_port(self): |
510 | 9426 if IsOrthancVersionAbove(_REMOTE, 1, 11, 3): |
9427 DropOrthanc(_LOCAL) | |
9428 DropOrthanc(_REMOTE) | |
9429 | |
9430 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
9431 | |
9432 # upload to self -> orthanctest shall not receive any content | |
9433 DoPost(_REMOTE, '/modalities/self/store', { | |
9434 'Resources' : [ a['ID']] | |
9435 }) | |
9436 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
9437 | |
9438 # upload to self by overriding it with config from orthanctest -> orthanctest shall receive the content | |
9439 c = DoGet(_REMOTE, '/modalities/orthanctest/configuration') | |
9440 DoPost(_REMOTE, '/modalities/self/store', { | |
9441 'LocalAet' : 'YOP', | |
9442 'CalledAet' : c['AET'], | |
9443 'Port' : c['Port'], | |
9444 'Host' : c['Host'], | |
9445 'Resources' : [ a['ID']] | |
9446 }) | |
9447 | |
9448 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
9449 | |
9450 DropOrthanc(_REMOTE) | |
9451 DropOrthanc(_LOCAL) | |
503
138d5efd4407
added test_rle_planar_configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
502
diff
changeset
|
9452 |
138d5efd4407
added test_rle_planar_configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
502
diff
changeset
|
9453 def test_rle_planar_configuration(self): |
531 | 9454 if IsOrthancVersionAbove(_REMOTE, 1, 11, 2): |
9455 # https://groups.google.com/g/orthanc-users/c/CSVWfRasSR0/m/y1XDRXVnAgAJ | |
9456 a = UploadInstance(_REMOTE, '2022-11-14-RLEPlanarConfiguration.dcm') ['ID'] | |
9457 uri = '/instances/%s/preview' % a | |
9458 im = GetImage(_REMOTE, uri) | |
9459 self.assertEqual('RGB', im.mode) | |
9460 self.assertEqual(1475, im.size[0]) | |
9461 self.assertEqual(1475, im.size[1]) | |
9462 self.assertEqual('c684b0050dc2523041240bf2d26dc85e', ComputeMD5(DoGet(_REMOTE, uri))) | |
9463 | |
9464 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1): | |
9465 a = UploadInstance(_REMOTE, '2023-04-21-RLEPlanarConfigurationYBR_FULL.dcm') ['ID'] | |
9466 uri = '/instances/%s/preview' % a | |
9467 im = GetImage(_REMOTE, uri) | |
9468 pprint.pprint(im) | |
9469 self.assertEqual('RGB', im.mode) | |
9470 self.assertEqual(1260, im.size[0]) | |
9471 self.assertEqual(910, im.size[1]) | |
9472 self.assertEqual('07a3ea7ea08d54362f744cc5945e8743', ComputeMD5(DoGet(_REMOTE, uri))) | |
9473 | |
512 | 9474 |
9475 def test_rest_api_write_to_file_system(self): | |
9476 if IsOrthancVersionAbove(_REMOTE, 1, 12, 0): | |
9477 a = UploadInstance(_REMOTE, '2022-11-14-RLEPlanarConfiguration.dcm') ['ID'] | |
9478 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/instances/%s/export' % a, '/tmp/test.dcm')) | |
513 | 9479 |
515
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9480 def test_overwrite_generates_stable_study(self): |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9481 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9482 # This test makes sure there are no regression wrt StableStudy when uploading instances in Orthanc |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9483 # The current behaviour (tested from 1.5.7 to 1.12.0) is |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9484 # If you upload 2 instances with a delay > StableAge, you get 2 StableStudy events and they are both listed in /changes |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9485 # If you upload twice the same instance with a delay > StableAge, you get 2 StableStudy events but only the last one is listed in /changes, the first one is deleted |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9486 # If you upload an instance and a modified version of this instance with a delay > StableAge, you get 2 StableStudy events but only the last one is listed in /changes, the first one is deleted |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9487 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9488 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9489 def GetAllStableStudyChangesIds(studyId, timeout): |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9490 # try to be as fast as possible -> stop as soon as we've found a StableStudy event that appeared after we started monitoring |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9491 fromSeq = DoGet(_REMOTE, '/changes')["Last"] |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9492 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9493 endTime = time.time() + timeout |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9494 newStableStudyFound = False |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9495 while not newStableStudyFound and time.time() < endTime: |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9496 time.sleep(0.1) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9497 changes = DoGet(_REMOTE, '/changes') |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9498 stableStudyChangesIds = [] |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9499 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9500 for change in changes["Changes"]: |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9501 if change["ChangeType"] == "StableStudy" and studyId == change["ID"]: |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9502 stableStudyChangesIds.append(change["Seq"]) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9503 if change["Seq"] > fromSeq: |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9504 newStableStudyFound = True |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9505 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9506 return stableStudyChangesIds |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9507 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9508 if True: |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9509 DropOrthanc(_REMOTE) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9510 upload1 = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0002.dcm') |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9511 # StableAge is set to 1, expect a StableStudy within 4 seconds |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9512 changes1 = GetAllStableStudyChangesIds(upload1["ParentStudy"], 4) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9513 self.assertEqual(1, len(changes1)) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9514 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9515 # upload the same instance again and check a new change has been generated with a new id, the first change has been deleted |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9516 upload1b = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0002.dcm') |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9517 changes1b = GetAllStableStudyChangesIds(upload1b["ParentStudy"], 4) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9518 self.assertEqual(1, len(changes1b)) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9519 self.assertNotEqual(changes1[0], changes1b[0]) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9520 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9521 if True: |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9522 DropOrthanc(_REMOTE) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9523 upload1 = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0002.dcm') |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9524 # StableAge is set to 1, expect a StableStudy within 4 seconds |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9525 changes1 = GetAllStableStudyChangesIds(upload1["ParentStudy"], 4) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9526 self.assertEqual(1, len(changes1)) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9527 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9528 # reupload a modified instance in the same study and check a new change has been generated with a new id, the first change has been deleted |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9529 modified = DoPost(_REMOTE, '/instances/%s/modify' % upload1["ID"], |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9530 json.dumps({ |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9531 "Replace" : { |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9532 "InstitutionName" : "hello", |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9533 "SOPInstanceUID": "1.2.840.113619.2.176.2025.1499492.7040.1171286241.705" |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9534 }, |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9535 "Force": True |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9536 }), |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9537 'application/json') |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9538 upload1b = DoPost(_REMOTE, '/instances', modified, 'application/dicom') |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9539 changes1b = GetAllStableStudyChangesIds(upload1b["ParentStudy"], 4) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9540 self.assertEqual(upload1["ParentStudy"], upload1b["ParentStudy"]) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9541 self.assertEqual(1, len(changes1b)) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9542 self.assertNotEqual(changes1[0], changes1b[0]) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9543 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9544 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9545 if True: |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9546 DropOrthanc(_REMOTE) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9547 upload1 = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0002.dcm') |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9548 # StableAge is set to 1, expect a StableStudy within 4 seconds |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9549 changes1 = GetAllStableStudyChangesIds(upload1["ParentStudy"], 4) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9550 self.assertEqual(1, len(changes1)) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9551 |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9552 # upload a new instance in the same study and check a second StableStudy change has been generated with a new id |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9553 upload2 = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0003.dcm') |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9554 changes2 = GetAllStableStudyChangesIds(upload2["ParentStudy"], 4) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9555 self.assertEqual(upload1["ParentStudy"], upload2["ParentStudy"]) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9556 self.assertEqual(2, len(changes2)) |
5dca7ef42156
added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents:
512
diff
changeset
|
9557 self.assertEqual(changes1[0], changes2[0]) |
516 | 9558 |
513 | 9559 def test_labels(self): |
523 | 9560 def CheckAllLabels(expected): |
9561 actual = DoGet(_REMOTE, '/tools/labels') | |
9562 self.assertEqual(len(actual), len(expected)) | |
9563 for i in expected: | |
9564 self.assertTrue(i in actual) | |
9565 for i in actual: | |
9566 self.assertTrue(i in expected) | |
9567 | |
517
692f2956ddab
test HasLabels in /system
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
516
diff
changeset
|
9568 if (IsOrthancVersionAbove(_REMOTE, 1, 12, 0) and |
692f2956ddab
test HasLabels in /system
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
516
diff
changeset
|
9569 DoGet(_REMOTE, '/system') ['HasLabels']): |
513 | 9570 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
9571 patient = DoGet(_REMOTE, '/instances/%s/patient' % u) ['ID'] | |
9572 study = DoGet(_REMOTE, '/instances/%s/study' % u) ['ID'] | |
9573 series = DoGet(_REMOTE, '/instances/%s/series' % u) ['ID'] | |
9574 | |
9575 for base in [ '/instances/%s' % u, | |
9576 '/series/%s' % series, | |
9577 '/studies/%s' % study, | |
519
b1991073e4d1
test alphanumeric labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
518
diff
changeset
|
9578 '/patients/%s' % patient ]: |
521 | 9579 |
9580 # no tags by default | |
513 | 9581 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels'])) |
523 | 9582 CheckAllLabels([]) |
521 | 9583 |
9584 # 404 if requesting a tag that does apply for a resource | |
513 | 9585 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base)) |
521 | 9586 |
9587 # delete a non existing tag does not generate an error | |
513 | 9588 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/hello' % base)) |
9589 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels'])) | |
521 | 9590 |
9591 # Not an alphanumeric label -> 400 | |
9592 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '%s/labels/@' % base)) | |
9593 | |
9594 # add a tag | |
513 | 9595 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base)) |
521 | 9596 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels'])) |
9597 self.assertEqual('hello', DoGet(_REMOTE, base) ['Labels'][0]) | |
523 | 9598 CheckAllLabels([ 'hello' ]) |
521 | 9599 |
9600 # double tagging does not generate any error | |
9601 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base)) | |
9602 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base)) | |
9603 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels'])) | |
9604 self.assertEqual('hello', DoGet(_REMOTE, base) ['Labels'][0]) | |
9605 | |
9606 # add a second tag | |
9607 self.assertEqual('', DoPut(_REMOTE, '%s/labels/world' % base)) | |
9608 self.assertEqual('', DoGet(_REMOTE, '%s/labels/world' % base)) | |
513 | 9609 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base)) |
521 | 9610 self.assertEqual(2, len(DoGet(_REMOTE, base) ['Labels'])) |
9611 self.assertIn(DoGet(_REMOTE, base) ['Labels'][0], ['hello', 'world']) | |
9612 self.assertIn(DoGet(_REMOTE, base) ['Labels'][1], ['hello', 'world']) | |
523 | 9613 CheckAllLabels([ 'hello', 'world' ]) |
521 | 9614 |
9615 # delete the first tag | |
513 | 9616 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/hello' % base)) |
521 | 9617 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels'])) |
9618 self.assertEqual('world', DoGet(_REMOTE, base) ['Labels'][0]) | |
9619 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base)) | |
523 | 9620 CheckAllLabels([ 'world' ]) |
521 | 9621 |
9622 # delete the second tag | |
9623 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/world' % base)) | |
513 | 9624 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels'])) |
521 | 9625 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/world' % base)) |
523 | 9626 CheckAllLabels([ ]) |
521 | 9627 |
9628 # test all valid chars | |
523 | 9629 VALID = r'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-' |
9630 self.assertEqual('', DoPut(_REMOTE, '%s/labels/%s' % (base, VALID))) | |
9631 CheckAllLabels([ VALID ]) | |
9632 DoDelete(_REMOTE, '%s/labels/%s' % (base, VALID)) | |
9633 CheckAllLabels([ ]) | |
9634 | |
517
692f2956ddab
test HasLabels in /system
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
516
diff
changeset
|
9635 else: |
692f2956ddab
test HasLabels in /system
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
516
diff
changeset
|
9636 print("Your database backend doesn't support labels") |
518
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9637 |
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9638 def test_find_labels(self): |
548 | 9639 def Execute(labels, constraint, query = { }, level='Instance'): |
9640 return DoPost(_REMOTE, '/tools/find', { 'Level' : level, | |
525 | 9641 'Query' : query, |
522
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9642 'Labels' : labels, |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9643 'LabelsConstraint' : constraint, }) |
518
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9644 |
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9645 if (IsOrthancVersionAbove(_REMOTE, 1, 12, 0) and |
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9646 DoGet(_REMOTE, '/system') ['HasLabels']): |
548 | 9647 u = UploadInstance(_REMOTE, 'DummyCT.dcm') |
9648 studyId = u["ParentStudy"] | |
9649 seriesId = u["ParentSeries"] | |
9650 patientId = u["ParentPatient"] | |
9651 u = u["ID"] | |
9652 self.assertEqual(1, len(Execute([ 'a' ], 'None'))) | |
518
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9653 |
522
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9654 # The instance has no label |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9655 self.assertEqual(1, len(Execute([], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9656 self.assertEqual(1, len(Execute([], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9657 self.assertEqual(1, len(Execute([], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9658 self.assertEqual(0, len(Execute([ 'a' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9659 self.assertEqual(0, len(Execute([ 'a' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9660 self.assertEqual(1, len(Execute([ 'a' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9661 self.assertEqual(0, len(Execute([ 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9662 self.assertEqual(0, len(Execute([ 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9663 self.assertEqual(1, len(Execute([ 'b' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9664 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9665 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9666 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'None'))) |
518
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9667 |
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9668 DoPut(_REMOTE, '/instances/%s/labels/a' % u) |
522
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9669 # The instance has label "a" |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9670 self.assertEqual(1, len(Execute([], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9671 self.assertEqual(1, len(Execute([], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9672 self.assertEqual(1, len(Execute([], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9673 self.assertEqual(1, len(Execute([ 'a' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9674 self.assertEqual(1, len(Execute([ 'a' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9675 self.assertEqual(0, len(Execute([ 'a' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9676 self.assertEqual(0, len(Execute([ 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9677 self.assertEqual(0, len(Execute([ 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9678 self.assertEqual(1, len(Execute([ 'b' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9679 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9680 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9681 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'None'))) |
518
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9682 |
525 | 9683 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'PatientID' : 'nope' }))) |
9684 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'PatientID' : '' }))) | |
9685 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'StudyInstanceUID' : 'nope' }))) | |
9686 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'StudyInstanceUID' : '' }))) | |
9687 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : 'nope' }))) | |
9688 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : '' }))) | |
9689 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : 'nope' }))) | |
9690 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : '' }))) | |
9691 | |
9692 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'PatientID' : 'ozp00SjY2xG' }))) | |
9693 | |
9694 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' }))) | |
9695 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' }))) | |
9696 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' }))) | |
9697 self.assertEqual(1, len(Execute([ 'a' ], 'All', { | |
9698 'PatientID' : 'ozp00SjY2xG', | |
9699 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', | |
9700 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', | |
9701 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', | |
9702 }))) | |
9703 | |
9704 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'PatientID' : 'nope' }))) | |
9705 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'PatientID' : '' }))) | |
9706 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'StudyInstanceUID' : 'nope' }))) | |
9707 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'StudyInstanceUID' : '' }))) | |
9708 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SeriesInstanceUID' : 'nope' }))) | |
9709 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SeriesInstanceUID' : '' }))) | |
9710 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SOPInstanceUID' : 'nope' }))) | |
9711 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SOPInstanceUID' : '' }))) | |
9712 | |
9713 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'PatientID' : 'ozp00SjY2xG' }))) | |
9714 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' }))) | |
9715 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' }))) | |
9716 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' }))) | |
9717 self.assertEqual(0, len(Execute([ 'b' ], 'All', { | |
9718 'PatientID' : 'ozp00SjY2xG', | |
9719 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', | |
9720 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', | |
9721 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', | |
9722 }))) | |
9723 | |
518
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9724 DoPut(_REMOTE, '/instances/%s/labels/b' % u) |
522
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9725 # The instance has labels "a" and "b" |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9726 self.assertEqual(1, len(Execute([], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9727 self.assertEqual(1, len(Execute([], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9728 self.assertEqual(1, len(Execute([], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9729 self.assertEqual(1, len(Execute([ 'a' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9730 self.assertEqual(1, len(Execute([ 'a' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9731 self.assertEqual(0, len(Execute([ 'a' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9732 self.assertEqual(1, len(Execute([ 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9733 self.assertEqual(1, len(Execute([ 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9734 self.assertEqual(0, len(Execute([ 'b' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9735 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9736 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9737 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'None'))) |
524 | 9738 self.assertEqual(0, len(Execute([ 'b', 'c' ], 'All'))) |
9739 self.assertEqual(1, len(Execute([ 'b', 'c' ], 'Any'))) | |
9740 self.assertEqual(0, len(Execute([ 'b', 'c' ], 'None'))) | |
9741 self.assertEqual(0, len(Execute([ 'c', 'd' ], 'All'))) | |
9742 self.assertEqual(0, len(Execute([ 'c', 'd' ], 'Any'))) | |
9743 self.assertEqual(1, len(Execute([ 'c', 'c' ], 'None'))) | |
518
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9744 |
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9745 DoDelete(_REMOTE, '/instances/%s/labels/a' % u) |
522
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9746 # The instance has label "b" |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9747 self.assertEqual(1, len(Execute([], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9748 self.assertEqual(1, len(Execute([], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9749 self.assertEqual(1, len(Execute([], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9750 self.assertEqual(0, len(Execute([ 'a' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9751 self.assertEqual(0, len(Execute([ 'a' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9752 self.assertEqual(1, len(Execute([ 'a' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9753 self.assertEqual(1, len(Execute([ 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9754 self.assertEqual(1, len(Execute([ 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9755 self.assertEqual(0, len(Execute([ 'b' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9756 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9757 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9758 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9759 |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9760 DoDelete(_REMOTE, '/instances/%s/labels/b' % u) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9761 # The instance has no more label |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9762 self.assertEqual(1, len(Execute([], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9763 self.assertEqual(1, len(Execute([], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9764 self.assertEqual(1, len(Execute([], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9765 self.assertEqual(0, len(Execute([ 'a' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9766 self.assertEqual(0, len(Execute([ 'a' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9767 self.assertEqual(1, len(Execute([ 'a' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9768 self.assertEqual(0, len(Execute([ 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9769 self.assertEqual(0, len(Execute([ 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9770 self.assertEqual(1, len(Execute([ 'b' ], 'None'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9771 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'All'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9772 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'Any'))) |
fce9e90acdc2
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
521
diff
changeset
|
9773 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'None'))) |
548 | 9774 |
9775 | |
9776 # tests at series levels (make sure to test only with series levels and with multiple levels) | |
9777 DoPut(_REMOTE, '/series/%s/labels/b' % seriesId) | |
9778 self.assertEqual(1, len(Execute([ 'a' ], 'None', { | |
9779 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' | |
9780 }, 'Series'))) | |
9781 self.assertEqual(0, len(Execute([ 'a' ], 'Any', { | |
9782 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' | |
9783 }, 'Series'))) | |
9784 self.assertEqual(1, len(Execute([ 'b' ], 'Any', { | |
9785 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' | |
9786 }, 'Series'))) | |
9787 self.assertEqual(1, len(Execute([ 'b' ], 'All', { | |
9788 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' | |
9789 }, 'Series'))) | |
9790 self.assertEqual(1, len(Execute([ 'a' ], 'None', { | |
9791 'PatientID' : 'ozp00SjY2xG', | |
9792 }, 'Series'))) | |
9793 self.assertEqual(0, len(Execute([ 'a' ], 'Any', { | |
9794 'PatientID' : 'ozp00SjY2xG', | |
9795 }, 'Series'))) | |
9796 self.assertEqual(1, len(Execute([ 'b' ], 'Any', { | |
9797 'PatientID' : 'ozp00SjY2xG', | |
9798 }, 'Series'))) | |
9799 self.assertEqual(1, len(Execute([ 'b' ], 'All', { | |
9800 'PatientID' : 'ozp00SjY2xG', | |
9801 }, 'Series'))) | |
9802 | |
9803 # tests at study levels (make sure to test only with study levels and with multiple levels) | |
9804 DoPut(_REMOTE, '/studies/%s/labels/b' % studyId) | |
9805 self.assertEqual(1, len(Execute([ 'a' ], 'None', { | |
9806 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' | |
9807 }, 'Study'))) | |
9808 self.assertEqual(0, len(Execute([ 'a' ], 'Any', { | |
9809 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' | |
9810 }, 'Study'))) | |
9811 self.assertEqual(1, len(Execute([ 'b' ], 'Any', { | |
9812 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' | |
9813 }, 'Study'))) | |
9814 self.assertEqual(1, len(Execute([ 'b' ], 'All', { | |
9815 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' | |
9816 }, 'Study'))) | |
9817 self.assertEqual(1, len(Execute([ 'a' ], 'None', { | |
9818 'PatientID' : 'ozp00SjY2xG', | |
9819 }, 'Study'))) | |
9820 self.assertEqual(0, len(Execute([ 'a' ], 'Any', { | |
9821 'PatientID' : 'ozp00SjY2xG', | |
9822 }, 'Study'))) | |
9823 self.assertEqual(1, len(Execute([ 'b' ], 'Any', { | |
9824 'PatientID' : 'ozp00SjY2xG', | |
9825 }, 'Study'))) | |
9826 self.assertEqual(1, len(Execute([ 'b' ], 'All', { | |
9827 'PatientID' : 'ozp00SjY2xG', | |
9828 }, 'Study'))) | |
9829 | |
9830 # tests at patient levels | |
9831 DoPut(_REMOTE, '/patients/%s/labels/b' % patientId) | |
9832 self.assertEqual(1, len(Execute([ 'a' ], 'None', { | |
9833 'PatientID' : 'ozp00SjY2xG', | |
9834 }, 'Patient'))) | |
9835 self.assertEqual(0, len(Execute([ 'a' ], 'Any', { | |
9836 'PatientID' : 'ozp00SjY2xG', | |
9837 }, 'Patient'))) | |
9838 self.assertEqual(1, len(Execute([ 'b' ], 'Any', { | |
9839 'PatientID' : 'ozp00SjY2xG', | |
9840 }, 'Patient'))) | |
9841 self.assertEqual(1, len(Execute([ 'b' ], 'All', { | |
9842 'PatientID' : 'ozp00SjY2xG', | |
9843 }, 'Patient'))) | |
9844 | |
518
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9845 else: |
43a323de0b02
added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
517
diff
changeset
|
9846 print("Your database backend doesn't support labels") |
527
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9847 |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9848 |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9849 def test_numeric_metadata(self): |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9850 if IsOrthancVersionAbove(_REMOTE, 1, 12, 0): |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9851 instance = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9852 study = DoGet(_REMOTE, '/instances/%s/study' % instance)['ID'] |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9853 |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9854 m = DoGet(_REMOTE, '/studies/%s/metadata' % study) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9855 self.assertEqual(2, len(m)) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9856 self.assertTrue('LastUpdate' in m) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9857 self.assertTrue('MainDicomTagsSignature' in m) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9858 lastUpdate = DoGet(_REMOTE, '/studies/%s/metadata/%s' % (study, 'LastUpdate')) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9859 signature = DoGet(_REMOTE, '/studies/%s/metadata/%s' % (study, 'MainDicomTagsSignature')) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9860 |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9861 m = DoGet(_REMOTE, '/studies/%s/metadata?numeric' % study) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9862 self.assertEqual(2, len(m)) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9863 self.assertTrue(7 in m) # MetadataType_LastUpdate |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9864 self.assertTrue(15 in m) # MetadataType_MainDicomTagsSignature |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9865 self.assertEqual(lastUpdate, DoGet(_REMOTE, '/studies/%s/metadata/%d' % (study, 7))) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9866 self.assertEqual(signature, DoGet(_REMOTE, '/studies/%s/metadata/%d' % (study, 15))) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9867 |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9868 m = DoGet(_REMOTE, '/studies/%s/metadata?expand' % study) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9869 self.assertEqual(2, len(m)) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9870 self.assertTrue('LastUpdate' in m) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9871 self.assertTrue('MainDicomTagsSignature' in m) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9872 self.assertEqual(lastUpdate, m['LastUpdate']) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9873 self.assertEqual(signature, m['MainDicomTagsSignature']) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9874 |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9875 m = DoGet(_REMOTE, '/studies/%s/metadata?expand&numeric' % study) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9876 self.assertEqual(2, len(m)) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9877 self.assertTrue('7' in m) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9878 self.assertTrue('15' in m) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9879 self.assertEqual(lastUpdate, m['7']) |
86456045ac80
added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
526
diff
changeset
|
9880 self.assertEqual(signature, m['15']) |
535
31f70bfd86a7
Fix orphan files remaining in storage when working with MaximumStorageSize
Alain Mazy <am@osimis.io>
parents:
533
diff
changeset
|
9881 |
584
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9882 def test_expand(self): |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9883 # test new expand options introduced in 1.12.2 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9884 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9885 r = UploadInstance(_REMOTE, 'DummyCT.dcm') |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9886 instanceId = r['ID'] |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9887 seriesId = r['ParentSeries'] |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9888 studyId = r['ParentStudy'] |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9889 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9890 self.assertEqual(DoGet(_REMOTE, '/instances?expand'), DoGet(_REMOTE, '/instances?expand=true')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9891 self.assertEqual(DoGet(_REMOTE, '/instances'), DoGet(_REMOTE, '/instances?expand=false')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9892 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9893 self.assertEqual(DoGet(_REMOTE, '/series?expand'), DoGet(_REMOTE, '/series?expand=true')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9894 self.assertEqual(DoGet(_REMOTE, '/series'), DoGet(_REMOTE, '/series?expand=false')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9895 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9896 self.assertEqual(DoGet(_REMOTE, '/studies?expand'), DoGet(_REMOTE, '/studies?expand=true')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9897 self.assertEqual(DoGet(_REMOTE, '/studies'), DoGet(_REMOTE, '/studies?expand=false')) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9898 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9899 r = DoGet(_REMOTE, '/studies/%s/instances?expand=true' % studyId) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9900 self.assertEqual(1, len(r)) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9901 self.assertIn('MainDicomTags', r[0]) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9902 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9903 r = DoGet(_REMOTE, '/studies/%s/instances?expand=false' % studyId) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9904 self.assertEqual(1, len(r)) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9905 self.assertIn('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', r[0]) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9906 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9907 self.assertEqual(DoGet(_REMOTE, '/studies/%s/instances?expand' % studyId), DoGet(_REMOTE, '/studies/%s/instances?expand=true' % studyId)) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9908 self.assertEqual(DoGet(_REMOTE, '/studies/%s/instances' % studyId), DoGet(_REMOTE, '/studies/%s/instances?expand=true' % studyId)) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9909 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9910 r = DoGet(_REMOTE, '/studies/%s/series?expand=true' % studyId) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9911 self.assertEqual(1, len(r)) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9912 self.assertIn('MainDicomTags', r[0]) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9913 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9914 r = DoGet(_REMOTE, '/studies/%s/series?expand=false' % studyId) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9915 self.assertEqual(1, len(r)) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9916 self.assertIn('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', r[0]) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9917 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9918 self.assertEqual(DoGet(_REMOTE, '/studies/%s/series?expand' % studyId), DoGet(_REMOTE, '/studies/%s/series?expand=true' % studyId)) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9919 self.assertEqual(DoGet(_REMOTE, '/studies/%s/series' % studyId), DoGet(_REMOTE, '/studies/%s/series?expand=true' % studyId)) |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9920 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9921 |
c4f4b0bc908b
new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents:
583
diff
changeset
|
9922 |
535
31f70bfd86a7
Fix orphan files remaining in storage when working with MaximumStorageSize
Alain Mazy <am@osimis.io>
parents:
533
diff
changeset
|
9923 def test_add_attachment_to_non_existing_resource(self): |
31f70bfd86a7
Fix orphan files remaining in storage when working with MaximumStorageSize
Alain Mazy <am@osimis.io>
parents:
533
diff
changeset
|
9924 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1): # till 1.12.0, it returned a 200 |
31f70bfd86a7
Fix orphan files remaining in storage when working with MaximumStorageSize
Alain Mazy <am@osimis.io>
parents:
533
diff
changeset
|
9925 (headers, body) = DoPutRaw(_REMOTE, '/instances/11111111-11111111-11111111-11111111-11111111/attachments/1025', 'hello') |
31f70bfd86a7
Fix orphan files remaining in storage when working with MaximumStorageSize
Alain Mazy <am@osimis.io>
parents:
533
diff
changeset
|
9926 self.assertEqual('404', headers['status']) |
538
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9927 |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9928 def test_delete_updates_parents_last_update_metadata(self): |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9929 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1): |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9930 i = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm') |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9931 j = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0002.dcm') |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9932 |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9933 #instanceLastUpdate1 = DoGet(_REMOTE, '/instances/%s/metadata/LastUpdate' % i['ID']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9934 seriesLastUpdate1 = DoGet(_REMOTE, '/series/%s/metadata/LastUpdate' % i['ParentSeries']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9935 studyLastUpdate1 = DoGet(_REMOTE, '/studies/%s/metadata/LastUpdate' % i['ParentStudy']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9936 patientLastUpdate1 = DoGet(_REMOTE, '/patients/%s/metadata/LastUpdate' % i['ParentPatient']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9937 |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9938 time.sleep(1.01) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9939 DoDelete(_REMOTE, '/instances/%s' % j['ID']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9940 |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9941 #instanceLastUpdate2 = DoGet(_REMOTE, '/instances/%s/metadata/LastUpdate' % i['ID']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9942 seriesLastUpdate2 = DoGet(_REMOTE, '/series/%s/metadata/LastUpdate' % i['ParentSeries']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9943 studyLastUpdate2 = DoGet(_REMOTE, '/studies/%s/metadata/LastUpdate' % i['ParentStudy']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9944 patientLastUpdate2 = DoGet(_REMOTE, '/patients/%s/metadata/LastUpdate' % i['ParentPatient']) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9945 |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9946 #self.assertEqual(instanceLastUpdate1, instanceLastUpdate2) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9947 self.assertNotEqual(seriesLastUpdate1, seriesLastUpdate2) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9948 self.assertNotEqual(studyLastUpdate1, studyLastUpdate2) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9949 self.assertNotEqual(patientLastUpdate1, patientLastUpdate2) |
7a83a8f087c7
LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents:
535
diff
changeset
|
9950 |
554
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9951 def test_pixel_data_vr(self): |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9952 def Check(path, hasPixelData, hasMetadata, expectedVR): |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9953 i = UploadInstance(_REMOTE, path) ['ID'] |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9954 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % i) |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9955 if hasMetadata: |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9956 self.assertTrue('PixelDataVR' in m) |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9957 self.assertEqual(expectedVR, m['PixelDataVR']) |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9958 else: |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9959 self.assertFalse('PixelDataVR' in m) |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9960 |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9961 if hasPixelData: |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9962 self.assertTrue('PixelDataOffset' in m) |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9963 j = DoGet(_REMOTE, '/instances/%s/file?expand' % i, headers = { |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9964 'Accept': 'application/dicom+json' |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9965 }) |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9966 self.assertEqual(expectedVR, j['7FE00010']['vr']) |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9967 |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9968 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1): |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9969 # File without pixel data |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9970 Check('MarekLatin2.dcm', False, False, None) |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9971 |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9972 # Those files are badly formatted, and should be 'OB' |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9973 # according to the DICOM standard => medata is present |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9974 Check('Issue143.dcm', True, True, 'OW') # Little Endian Explicit, 8bpp |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9975 Check('KarstenHilbertRF.dcm', True, True, 'OW') # Little Endian Explicit, 8bpp |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9976 Check('PilatesArgenturGEUltrasoundOsiriX.dcm', True, True, 'OW') # Little Endian Explicit, 8bpp |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9977 |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9978 # Those files are formatted as expected |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9979 Check('ColorTestMalaterre.dcm', True, False, 'OW') # Implicit Little Endian, 8bpp |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9980 Check('Issue94.dcm', True, False, 'OW') # Implicit Little Endian, 16bpp |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9981 Check('TransferSyntaxes/1.2.840.10008.1.2.1.dcm', True, False, 'OB') # Explicit Little Endian, 8bpp |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9982 Check('Phenix/IM-0001-0001.dcm', True, False, 'OW') # Explicit Little Endian, 16bpp |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9983 Check('TransferSyntaxes/1.2.840.10008.1.2.2.dcm', True, False, 'OB') # Explicit Big Endian, 8bpp |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9984 Check('TransferSyntaxes/1.2.840.10008.1.2.4.50.dcm', True, False, 'OB') # JPEG |
ede184638961
added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
548
diff
changeset
|
9985 Check('Knee/T1/IM-0001-0001.dcm', True, False, 'OB') # JPEG2k |
565
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9986 |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9987 def test_encapsulate_stl(self): |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9988 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1): |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9989 stl = b'Hello, world' |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9990 |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9991 i = DoPost(_REMOTE, '/tools/create-dicom', json.dumps({ |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9992 'Content' : 'data:model/stl;base64,%s' % base64.b64encode(stl).decode(), |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9993 'Force' : True, |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9994 'Tags' : { |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9995 'PatientName' : 'Jodogne' |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9996 } |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9997 })) ['ID'] |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9998 |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
9999 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10000 self.assertEqual('Jodogne', tags['PatientName']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10001 self.assertEqual('M3D', tags['Modality']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10002 self.assertEqual('model/stl', tags['MIMETypeOfEncapsulatedDocument']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10003 self.assertEqual('1.2.840.10008.5.1.4.1.1.104.3', tags['SOPClassUID']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10004 |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10005 i = DoPost(_REMOTE, '/tools/create-dicom', json.dumps({ |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10006 'Content' : 'data:model/mtl;base64,%s' % base64.b64encode(stl).decode(), |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10007 'Tags' : {} |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10008 })) ['ID'] |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10009 |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10010 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10011 self.assertFalse('PatientName' in tags) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10012 self.assertEqual('M3D', tags['Modality']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10013 self.assertEqual('model/mtl', tags['MIMETypeOfEncapsulatedDocument']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10014 self.assertEqual('1.2.840.10008.5.1.4.1.1.104.5', tags['SOPClassUID']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10015 |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10016 i = DoPost(_REMOTE, '/tools/create-dicom', json.dumps({ |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10017 'Content' : 'data:model/obj;base64,%s' % base64.b64encode(stl).decode(), |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10018 'Tags' : {} |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10019 })) ['ID'] |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10020 |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10021 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10022 self.assertFalse('PatientName' in tags) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10023 self.assertEqual('M3D', tags['Modality']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10024 self.assertEqual('model/obj', tags['MIMETypeOfEncapsulatedDocument']) |
855c3720902a
added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
10025 self.assertEqual('1.2.840.10008.5.1.4.1.1.104.4', tags['SOPClassUID']) |
591 | 10026 |
10027 | |
10028 def test_error_codes_content_type(self): | |
10029 | |
10030 # from 1.12.2, check that a ContentType header is included in errors with an error description (ex: 404) | |
10031 (headers, body) = DoGetRaw(_REMOTE, '/rnm94%3Cscript%3Ealert(1)%3C/script%3Ejdtkc/explorer.html') | |
10032 self.assertEqual('404', headers['status']) | |
10033 | |
10034 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): | |
595
b6c1f0c9ca15
fix test_error_codes_content_type
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
591
diff
changeset
|
10035 self.assertEqual('text/plain', headers['content-type']) |
591 | 10036 |
10037 (headers, body) = DoPutRaw(_REMOTE, '/system', 'hello') | |
10038 self.assertEqual('405', headers['status']) | |
10039 # when there is no body, there is no content-type | |
10040 self.assertNotIn('content-type', headers) | |
10041 | |
10042 # responses with bodies contain x-content-type-options | |
10043 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2): | |
10044 (headers, body) = DoGetRaw(_REMOTE, '/system') | |
10045 self.assertIn('nosniff', headers['x-content-type-options']) | |
603 | 10046 |
10047 def test_modify_with_labels(self): | |
10048 | |
10049 def UploadAndLabel(testId): | |
10050 DropOrthanc(_REMOTE) | |
10051 | |
10052 u = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm') | |
10053 studyId = u["ParentStudy"] | |
10054 seriesId = u["ParentSeries"] | |
10055 patientId = u["ParentPatient"] | |
10056 instanceId = u["ID"] | |
10057 | |
10058 if testId == 2: # multi instance study | |
10059 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0002.dcm') | |
10060 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
10061 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm') | |
10062 | |
10063 # add a label to the study before modification | |
10064 DoPut(_REMOTE, '/patients/%s/labels/label-patient' % patientId) | |
10065 DoPut(_REMOTE, '/studies/%s/labels/label-study' % studyId) | |
10066 DoPut(_REMOTE, '/series/%s/labels/label-series' % seriesId) | |
10067 DoPut(_REMOTE, '/instances/%s/labels/label-instance' % instanceId) | |
10068 | |
10069 originalPatient = DoGet(_REMOTE, '/patients/%s' % patientId) | |
10070 self.assertEqual(1, len(originalPatient["Labels"])) | |
10071 self.assertIn('label-patient', originalPatient["Labels"]) | |
10072 | |
10073 originalStudy = DoGet(_REMOTE, '/studies/%s' % studyId) | |
10074 self.assertEqual(1, len(originalStudy["Labels"])) | |
10075 self.assertIn('label-study', originalStudy["Labels"]) | |
10076 | |
10077 originalSeries = DoGet(_REMOTE, '/series/%s' % seriesId) | |
10078 self.assertEqual(1, len(originalSeries["Labels"])) | |
10079 self.assertIn('label-series', originalSeries["Labels"]) | |
10080 | |
10081 originalInstance = DoGet(_REMOTE, '/instances/%s' % instanceId) | |
10082 self.assertEqual(1, len(originalInstance["Labels"])) | |
10083 self.assertIn('label-instance', originalInstance["Labels"]) | |
10084 | |
10085 return originalPatient, originalStudy, originalSeries, originalInstance | |
10086 | |
10087 | |
10088 for testId in range(1, 2): #test with a single instance study and a multi instance study | |
10089 | |
10090 originalPatient, originalStudy, originalSeries, originalInstance = UploadAndLabel(testId) | |
10091 | |
10092 # modify a study in place with no label field in the payload (default behavior before 1.12.3) | |
10093 DoPost(_REMOTE, '/studies/%s/modify' % originalStudy['ID'], { | |
10094 'Keep' : ['StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID'], | |
10095 'Replace' : { | |
10096 'PatientName': 'modified' | |
10097 }, | |
10098 'Force': True | |
10099 }) | |
10100 | |
10101 # with no options, all resources lose their labels during the modification | |
10102 modifiedStudy = DoGet(_REMOTE, '/studies/%s' % originalStudy['ID']) | |
10103 self.assertEqual(0, len(modifiedStudy["Labels"])) | |
10104 self.assertEqual('modified', modifiedStudy["PatientMainDicomTags"]["PatientName"]) | |
10105 | |
605 | 10106 if IsOrthancVersionAbove(_REMOTE, 1, 12, 3) and DoGet(_REMOTE, '/system')['ApiVersion'] >= 23 and DoGet(_REMOTE, '/system')['HasLabels']: |
603 | 10107 for testId in range(1, 2): #test with a single instance study and a multi instance study |
10108 | |
10109 originalPatient, originalStudy, originalSeries, originalInstance = UploadAndLabel(testId) | |
10110 | |
10111 # modify a study in place with no label field in the payload (default behavior before 1.12.3) | |
10112 DoPost(_REMOTE, '/studies/%s/modify' % originalStudy['ID'], { | |
10113 'Keep' : ['StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID'], | |
10114 'Replace' : { | |
10115 'PatientName': 'modified2' | |
10116 }, | |
10117 'Force': True, | |
10118 'KeepLabels': True | |
10119 }) | |
10120 | |
10121 # now, each resource level shall have kept its labels | |
10122 | |
10123 modifiedInstance = DoGet(_REMOTE, '/instances/%s' % originalInstance['ID']) | |
10124 self.assertEqual(1, len(modifiedInstance["Labels"])) | |
10125 self.assertIn('label-instance', modifiedInstance["Labels"]) | |
10126 | |
10127 modifiedSeries = DoGet(_REMOTE, '/series/%s' % originalSeries['ID']) | |
10128 self.assertEqual(1, len(modifiedSeries["Labels"])) | |
10129 self.assertIn('label-series', modifiedSeries["Labels"]) | |
10130 | |
10131 modifiedStudy = DoGet(_REMOTE, '/studies/%s' % originalStudy['ID']) | |
10132 self.assertEqual(1, len(modifiedStudy["Labels"])) | |
10133 self.assertIn('label-study', modifiedStudy["Labels"]) | |
10134 self.assertEqual('modified2', modifiedStudy["PatientMainDicomTags"]["PatientName"]) | |
10135 | |
10136 modifiedPatient = DoGet(_REMOTE, '/patients/%s' % originalPatient['ID']) | |
10137 self.assertEqual(1, len(modifiedPatient["Labels"])) | |
10138 self.assertIn('label-patient', modifiedPatient["Labels"]) | |
10139 |