annotate Tests/Tests.py @ 674:676dd1f784b9

added jp2K lossy YBR-ICT image (not used yet)
author Alain Mazy <am@orthanc.team>
date Thu, 29 Aug 2024 10:54:20 +0200
parents 36c00333f6ef
children c8c4bebf18b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
1 #!/usr/bin/env python
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2 # -*- coding: utf-8 -*-
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
4
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 # Orthanc - A Lightweight, RESTful DICOM Store
73
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
6 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 # Department, University Hospital of Liege, Belgium
649
5d7b6e43ab7d updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 647
diff changeset
8 # Copyright (C) 2017-2023 Osimis S.A., Belgium
5d7b6e43ab7d updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 647
diff changeset
9 # Copyright (C) 2024-2024 Orthanc Team SRL, Belgium
640
9f8276ac1cdd update year to 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 626
diff changeset
10 # Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 #
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 # This program is free software: you can redistribute it and/or
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 # modify it under the terms of the GNU General Public License as
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 # published by the Free Software Foundation, either version 3 of the
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 # License, or (at your option) any later version.
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 #
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 # This program is distributed in the hope that it will be useful, but
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 # WITHOUT ANY WARRANTY; without even the implied warranty of
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 # General Public License for more details.
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 #
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 # You should have received a copy of the GNU General Public License
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 # along with this program. If not, see <http://www.gnu.org/licenses/>.
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25
202
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
26 import base64
290
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
27 import bz2
202
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
28 import copy
440
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
29 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
30 import numpy
202
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
31 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
32 import shutil
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
33 import tempfile
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34 import unittest
515
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
35 import time
529
53cf0e3ad007 get DCMDICPATH from env
Alain Mazy <am@osimis.io>
parents: 527
diff changeset
36 import os
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37
11
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
38 from PIL import ImageChops
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 from Toolbox import *
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
40 from xml.dom import minidom
312
e12c8434aa1e print date
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 311
diff changeset
41 from datetime import datetime
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43 _LOCAL = None
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 _REMOTE = None
306
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
45 _DOCKER = False
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
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
48 def SetOrthancParameters(local, remote, withinDocker):
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
49 global _LOCAL, _REMOTE, _DOCKER
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50 _LOCAL = local
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 _REMOTE = remote
306
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
52 _DOCKER = withinDocker
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
53
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
54
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
55 def ExtractDicomTags(rawDicom, tags):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
56 with tempfile.NamedTemporaryFile(delete = True) as f:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
57 f.write(rawDicom)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
58 f.flush()
45
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 44
diff changeset
59 data = subprocess.check_output([ FindExecutable('dcm2xml'), f.name ])
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
60
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
61 result = []
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
62 for tag in tags:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
63 match = re.search('<element[^>]+name="%s">([^>]*)</element>' % tag, data)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
64 if match == None:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
65 result.append('')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
66 else:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
67 result.append(match.group(1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
68
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
69 return result
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
70
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
71
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
72 def CompareLists(a, b):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
73 if len(a) != len(b):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
74 return False
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
75
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
76 for i in range(len(a)):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
77 d = a[i] - b[i]
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
78 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
79 return False
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
80
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
81 return True
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
82
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
83
80
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
84 def CompareTags(a, b, tagsToIgnore):
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
85 for i in tagsToIgnore:
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
86 if i in a:
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
87 del a[i]
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
88 if i in b:
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
89 del b[i]
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
90
123
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
91 if a.keys() == b.keys():
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
92 return True
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
93 else:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
94 print('Mismatch in tags: %s' % str(set(a.keys()) ^ set(b.keys())))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
95 return False
80
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
96
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
97
71
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
98 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
99 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
100 '-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
101 _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
102 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
103 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
104
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
105
142
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
106 def GetMoveScuCommand():
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
107 return [
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
108 FindExecutable('movescu'),
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
109 '--move', _LOCAL['DicomAet'], # Target AET (i.e. storescp)
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
110 '--call', _REMOTE['DicomAet'], # Called AET (i.e. Orthanc)
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
111 '--aetitle', _LOCAL['DicomAet'], # Calling AET (i.e. storescp)
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
112 _REMOTE['Server'],
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
113 str(_REMOTE['DicomPort'])
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
114 ]
6d2bfbbd0c2d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 141
diff changeset
115
231
4087505ddfe3 catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 220
diff changeset
116
380
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
117 def IsDicomUntilPixelDataStored(orthanc):
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
118 # 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
119 # "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
120
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
121 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
122 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
123 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
124 if a != 0x03a0:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
125 raise Exception('Internal error')
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
126
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
127 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
128 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
129 raise Exception('Internal error')
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
130
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
131 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
132
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
133 if len(a) == 1:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
134 return False
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
135 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
136 return True
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
137 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
138 raise Exception('Internal error')
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
139
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
140 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
141 return False
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
142
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
143
54
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
144 def CallMoveScu(args):
231
4087505ddfe3 catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 220
diff changeset
145 try:
4087505ddfe3 catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 220
diff changeset
146 subprocess.check_call(GetMoveScuCommand() + args,
318
bac7cc80f240 dicomweb: test_wado_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 315
diff changeset
147 stderr = subprocess.PIPE)
231
4087505ddfe3 catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 220
diff changeset
148 except subprocess.CalledProcessError as e:
4087505ddfe3 catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 220
diff changeset
149 # 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
150 # 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
151 # 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
152 # DICOM instances.
4087505ddfe3 catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 220
diff changeset
153 # 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
154 if e.returncode != 69:
4087505ddfe3 catching error codes of movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 220
diff changeset
155 raise e
54
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
156
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
157
51
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
158 def GenerateTestSequence():
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
159 return [
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
160 {
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
161 'StudyDescription': 'Hello^',
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
162 'ReferencedStudySequence' : [
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
163 {
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
164 'StudyDescription': 'Toto',
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 {
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
167 'StudyDescription': 'Tata',
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 {
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
172 'StudyDescription': 'Sébastien^',
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
173 'StudyDate' : '19700202',
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
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
177
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
178 class Orthanc(unittest.TestCase):
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
179 def setUp(self):
83
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 81
diff changeset
180 if (sys.version_info >= (3, 0)):
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 81
diff changeset
181 # Remove annoying warnings about unclosed socket in Python 3
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 81
diff changeset
182 import warnings
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 81
diff changeset
183 warnings.simplefilter("ignore", ResourceWarning)
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 81
diff changeset
184
508
ae493446336a fix tests for missing archives
Alain Mazy <am@osimis.io>
parents: 507
diff changeset
185 print('running : %s' % self.id())
ae493446336a fix tests for missing archives
Alain Mazy <am@osimis.io>
parents: 507
diff changeset
186
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
187 DropOrthanc(_LOCAL)
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
188 DropOrthanc(_REMOTE)
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
189 UninstallLuaCallbacks(_REMOTE)
423
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
190
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
191 # Reset stuff possibly set by some integration tests
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
192 DoPut(_REMOTE, '/tools/default-encoding', 'Latin1')
515
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
193 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0):
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
194 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
195 DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', '0')
423
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
196
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
197 for i in [ 'toto', 'tata' ]:
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
198 if i in DoGet(_REMOTE, '/modalities'):
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
199 DoDelete(_REMOTE, '/modalities/%s' % i)
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
200 if i in DoGet(_REMOTE, '/peers'):
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
201 DoDelete(_REMOTE, '/peers/%s' % i)
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
202
312
e12c8434aa1e print date
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 311
diff changeset
203 #print("%s: In test %s" % (datetime.now(), self._testMethodName))
44
ffa542cce638 Toolbox.FindExecutable()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 43
diff changeset
204
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
205 def AssertSameImages(self, truth, url):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
206 im = GetImage(_REMOTE, url)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
207 self.assertTrue(CompareLists(truth, im.getdata()))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
208
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
209
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
210 def test_system(self):
177
ef6b791c6d62 fix version checks
am@osimis.io
parents: 176
diff changeset
211 self.assertTrue('Version' in DoGet(_REMOTE, '/system'))
ef6b791c6d62 fix version checks
am@osimis.io
parents: 176
diff changeset
212 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalDiskSize'])
ef6b791c6d62 fix version checks
am@osimis.io
parents: 176
diff changeset
213 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])
ef6b791c6d62 fix version checks
am@osimis.io
parents: 176
diff changeset
214
512
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
215 systemInfo = DoGet(_REMOTE, '/system')
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
216
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
217 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
512
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
218 self.assertIn("MainDicomTags", systemInfo)
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
219 self.assertIn("Patient", systemInfo["MainDicomTags"])
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
220 self.assertIn("Study", systemInfo["MainDicomTags"])
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
221 self.assertIn("Series", systemInfo["MainDicomTags"])
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
222 self.assertIn("Instance", systemInfo["MainDicomTags"])
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
223
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
224 if IsOrthancVersionAbove(_REMOTE, 1, 12, 0):
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
225 self.assertIn("UserMetadata", systemInfo)
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
226 self.assertEqual(1098, systemInfo['UserMetadata']['my-metadata'] )
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
227
177
ef6b791c6d62 fix version checks
am@osimis.io
parents: 176
diff changeset
228 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
229 print("Skipping version checks since you're currently in mainline")
177
ef6b791c6d62 fix version checks
am@osimis.io
parents: 176
diff changeset
230 return
ef6b791c6d62 fix version checks
am@osimis.io
parents: 176
diff changeset
231
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
232 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
233 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
234 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
235 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
236 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
237 self.assertFalse(IsOrthancVersionAbove(_LOCAL, 1, 8, 6))
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
238
456
Alain Mazy <am@osimis.io>
parents: 454
diff changeset
239
512
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
240
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
241 def test_upload(self):
173
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
242 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalDiskSize'])
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
243 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
244
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
245 sizeDummyCT = 2472
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
246 sizeOverwrite = 2476
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
247 instance = '66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d'
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
248
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
249 # This file has *no* pixel data => "dicom-until-pixel-data" is not created
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
250 u = UploadInstance(_REMOTE, 'DummyCT.dcm')
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
251 isCompressed = (DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % u['ID']) != 0)
183
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 182
diff changeset
252 self.assertEqual(instance, u['ID'])
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
253 self.assertEqual('Success', u['Status'])
173
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
254
183
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 182
diff changeset
255 if True:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 182
diff changeset
256 # New test for Orthanc 1.4.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 182
diff changeset
257 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', u['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 182
diff changeset
258 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', u['ParentStudy'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 182
diff changeset
259 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', u['ParentPatient'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 182
diff changeset
260
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
261 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
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-as-json' % instance))
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
263 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
264 j = 0
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
265 else:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
266 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
267 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
268
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 443
diff changeset
269 if IsOrthancVersionAbove(_REMOTE, 1, 10, 0):
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 443
diff changeset
270 attachmentInfo = DoGet(_REMOTE, '/instances/%s/attachments/dicom/info' % instance)
447
72be948dfe5c fix test_upload
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 446
diff changeset
271
72be948dfe5c fix test_upload
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 446
diff changeset
272 if isCompressed:
72be948dfe5c fix test_upload
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 446
diff changeset
273 self.assertGreater(sizeDummyCT, attachmentInfo['CompressedSize'])
72be948dfe5c fix test_upload
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 446
diff changeset
274 else:
72be948dfe5c fix test_upload
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 446
diff changeset
275 self.assertEqual(sizeDummyCT, attachmentInfo['CompressedSize'])
72be948dfe5c fix test_upload
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 446
diff changeset
276
445
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 443
diff changeset
277 self.assertEqual(sizeDummyCT, attachmentInfo['UncompressedSize'])
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 443
diff changeset
278 self.assertIn('Uuid', attachmentInfo)
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 443
diff changeset
279 self.assertEqual(1, attachmentInfo['ContentType'])
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 443
diff changeset
280
173
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
281 s = sizeDummyCT + j
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
282
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
283 if isCompressed:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
284 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
285 else:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
286 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
287
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
288 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']))
173
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
289
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
290 u = UploadInstance(_REMOTE, 'DummyCT.dcm')
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
291 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
292 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
293 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
294 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
295
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
296 if isCompressed:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
297 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
298 else:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
299 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
300
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
301 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']))
173
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
302
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
303 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % instance)
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
304 self.assertEqual('20070101', i['StudyDate'])
173
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
305 self.assertEqual('KNIX', i['PatientName'])
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
306
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
307 if IsOrthancVersionAbove(_REMOTE, 1, 4, 2):
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
308 # Overwriting
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
309 self.assertEqual('Success', u['Status'])
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
310 else:
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
311 self.assertEqual('AlreadyStored', u['Status'])
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
312
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
313 u = UploadInstance(_REMOTE, 'DummyCT-overwrite.dcm')
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
314 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
315 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
316 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
317 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
318
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
319 if IsOrthancVersionAbove(_REMOTE, 1, 4, 2):
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
320 # Overwriting
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
321 self.assertEqual('Success', u['Status'])
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
322 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
323 j2 = 0
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
324 else:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
325 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
326 self.assertNotEqual(j, j2)
173
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
327 s2 = sizeOverwrite + j2
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
328 self.assertNotEqual(s, s2)
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
329 if isCompressed:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
330 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
331 else:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
332 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
333
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
334 self.assertEqual(s2, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']))
173
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
335 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % instance)
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
336 self.assertEqual('ANOTHER', i['PatientName'])
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
337 else:
ed3db6386587 testing overwrite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
338 self.assertEqual('AlreadyStored', u['Status'])
379
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')['TotalDiskSize']))
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
340 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']))
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
341
5
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
342 def test_upload_2(self):
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
343 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
344 instance = DoGet(_REMOTE, '/instances/%s' % i)
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
345 self.assertEqual(i, instance['ID'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
346 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109',
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
347 instance['MainDicomTags']['SOPInstanceUID'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
348
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
349 series = DoGet(_REMOTE, '/series/%s' % instance['ParentSeries'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
350 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394',
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
351 series['MainDicomTags']['SeriesInstanceUID'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
352
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
353 study = DoGet(_REMOTE, '/studies/%s' % series['ParentStudy'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
354 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390',
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
355 study['MainDicomTags']['StudyInstanceUID'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
356
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
357 patient = DoGet(_REMOTE, '/patients/%s' % study['ParentPatient'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
358 self.assertEqual('ozp00SjY2xG',
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
359 patient['MainDicomTags']['PatientID'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
360
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
361 dicom = DoGet(_REMOTE, '/instances/%s/file' % instance['ID'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
362 self.assertEqual(2472, len(dicom))
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
363 self.assertEqual('3e29b869978b6db4886355a2b1132124', ComputeMD5(dicom))
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
364 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/frames' % i)))
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
365 self.assertEqual('TWINOW', DoGet(_REMOTE, '/instances/%s/simplified-tags' % i)['StationName'])
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
366 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
367 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
368 self.assertEqual('TWINOW', DoGet(_REMOTE, '/instances/%s/tags?short' % i)['0008,1010'])
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
369
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
370
5
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
371 def test_images(self):
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
372 i = UploadInstance(_REMOTE, 'Phenix/IM-0001-0001.dcm')['ID']
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
373 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/frames' % i)))
3
2dbba2e6aa4b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
374
5
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
375 im = GetImage(_REMOTE, '/instances/%s/preview' % i)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
376 self.assertEqual("L", im.mode)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
377 self.assertEqual(512, im.size[0])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
378 self.assertEqual(358, im.size[1])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
379
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
380 im = GetImage(_REMOTE, '/instances/%s/image-uint8' % i)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
381 self.assertEqual("L", im.mode)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
382 self.assertEqual(512, im.size[0])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
383 self.assertEqual(358, im.size[1])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
384
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
385 im = GetImage(_REMOTE, '/instances/%s/image-uint16' % i)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
386 self.assertEqual(512, im.size[0])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
387 self.assertEqual(358, im.size[1])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
388
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
389 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % i)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
390 self.assertEqual("L", im.mode)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
391 self.assertEqual(512, im.size[0])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
392 self.assertEqual(358, im.size[1])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
393
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
394 im = GetImage(_REMOTE, '/instances/%s/frames/0/image-uint8' % i)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
395 self.assertEqual("L", im.mode)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
396 self.assertEqual(512, im.size[0])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
397 self.assertEqual(358, im.size[1])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
398
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
399 im = GetImage(_REMOTE, '/instances/%s/frames/0/image-uint16' % i)
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
400 self.assertEqual(512, im.size[0])
19eb87a45685 test_images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3
diff changeset
401 self.assertEqual(358, im.size[1])
64
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
402
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
403 # This is Little Endian Explicit
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
404 self.assertEqual('1.2.840.10008.1.2.1', DoGet(_REMOTE, '/instances/%s/header?simplify' % i)['TransferSyntaxUID'])
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
405
464
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
406 def test_images_implicit_vr(self):
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
407 if IsOrthancVersionAbove(_REMOTE, 1, 10, 2):
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
408 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
409
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
410 im = GetImage(_REMOTE, '/instances/%s/preview' % i)
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
411 self.assertEqual("RGB", im.mode)
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
412 self.assertEqual(800, im.size[0])
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
413 self.assertEqual(600, im.size[1])
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
414
216231c18c2e added tests for implicit vr preview
Alain Mazy <am@osimis.io>
parents: 463
diff changeset
415
6
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
416 def test_hierarchy(self):
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
417 UploadFolder(_REMOTE, 'Brainix/Epi')
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
418 UploadFolder(_REMOTE, 'Brainix/Flair')
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
419 UploadFolder(_REMOTE, 'Knee/T1')
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
420 UploadFolder(_REMOTE, 'Knee/T2')
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
421
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
422 p = DoGet(_REMOTE, '/patients')
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
423 s = DoGet(_REMOTE, '/studies')
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
424 t = DoGet(_REMOTE, '/series')
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
425 self.assertEqual(2, len(p))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
426 self.assertEqual(2, len(s))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
427 self.assertEqual(4, len(t))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
428 self.assertEqual(94, len(DoGet(_REMOTE, '/instances')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
429
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
430 brainixPatient = '16738bc3-e47ed42a-43ce044c-a3414a45-cb069bd0'
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
431 brainixStudy = '27f7126f-4f66fb14-03f4081b-f9341db2-53925988'
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
432 brainixEpi = '2ac1316d-3e432022-62eabff2-c59f5475-9b1ac3f8'
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
433 brainixFlair = '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0'
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
434
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
435 kneePatient = 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17'
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
436 kneeStudy = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918'
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
437 kneeT1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285'
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
438 kneeT2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59'
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
439
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
440 self.assertTrue(brainixPatient in p)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
441 self.assertTrue(kneePatient in p)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
442 self.assertTrue(brainixStudy in s)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
443 self.assertTrue(kneeStudy in s)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
444 self.assertTrue(brainixEpi in t)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
445 self.assertTrue(brainixFlair in t)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
446 self.assertTrue(kneeT1 in t)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
447 self.assertTrue(kneeT2 in t)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
448
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
449 self.assertEqual(44, len(DoGet(_REMOTE, '/patients/%s/instances' % brainixPatient)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
450 self.assertEqual(2, len(DoGet(_REMOTE, '/patients/%s/series' % brainixPatient)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
451 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/%s/studies' % brainixPatient)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
452
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
453 self.assertEqual(50, len(DoGet(_REMOTE, '/patients/%s/instances' % kneePatient)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
454 self.assertEqual(2, len(DoGet(_REMOTE, '/patients/%s/series' % kneePatient)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
455 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/%s/studies' % kneePatient)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
456
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
457 self.assertEqual(2, len(DoGet(_REMOTE, '/studies/%s/series' % brainixStudy)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
458 self.assertEqual(44, len(DoGet(_REMOTE, '/studies/%s/instances' % brainixStudy)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
459
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
460 self.assertEqual(2, len(DoGet(_REMOTE, '/studies/%s/series' % kneeStudy)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
461 self.assertEqual(50, len(DoGet(_REMOTE, '/studies/%s/instances' % kneeStudy)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
462
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
463 self.assertEqual(22, len(DoGet(_REMOTE, '/series/%s/instances' % brainixEpi)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
464 self.assertEqual(22, len(DoGet(_REMOTE, '/series/%s/instances' % brainixFlair)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
465 self.assertEqual(24, len(DoGet(_REMOTE, '/series/%s/instances' % kneeT1)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
466 self.assertEqual(26, len(DoGet(_REMOTE, '/series/%s/instances' % kneeT2)))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
467
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
468 for patient in p:
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
469 for study in DoGet(_REMOTE, '/patients/%s/studies' % patient):
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
470 self.assertEqual(patient, study['ParentPatient'])
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
471 for series in DoGet(_REMOTE, '/studies/%s/series' % study['ID']):
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
472 self.assertEqual(study['ID'], series['ParentStudy'])
211
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
473 self.assertEqual('Unknown', series['Status'])
6
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
474 for instance in DoGet(_REMOTE, '/series/%s/instances' % series['ID']):
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
475 self.assertEqual(series['ID'], instance['ParentSeries'])
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
476
380
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
477 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
478 # 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
479 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
480 json.dumps(DoGet(_REMOTE, '/instances/%s/tags' % instance['ID'])))
6
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
481
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
482
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
483 r = DoDelete(_REMOTE, "/studies/%s" % brainixStudy)['RemainingAncestor']
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
484 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
485 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
486 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
487 self.assertEqual(50, len(DoGet(_REMOTE, '/instances')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
488 self.assertEqual(None, r)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
489
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
490 r = DoDelete(_REMOTE, "/series/%s" % kneeT2)['RemainingAncestor']
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
491 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
492 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
493 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
494 self.assertEqual(24, len(DoGet(_REMOTE, '/instances')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
495 self.assertEqual('Study', r['Type'])
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
496 self.assertEqual(kneeStudy, r['ID'])
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
497
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
498 r = DoDelete(_REMOTE, "/instances/%s" % DoGet(_REMOTE, '/instances')[0])['RemainingAncestor']
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
499 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
500 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
501 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
502 self.assertEqual(23, len(DoGet(_REMOTE, '/instances')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
503 self.assertEqual('Series', r['Type'])
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
504 self.assertEqual(kneeT1, r['ID'])
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
505
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
506 r = DoDelete(_REMOTE, "/patients/%s" % kneePatient)['RemainingAncestor']
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
507 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
508 self.assertEqual(0, len(DoGet(_REMOTE, '/studies')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
509 self.assertEqual(0, len(DoGet(_REMOTE, '/series')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
510 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
511 self.assertEqual(None, r)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
512
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
513 DropOrthanc(_REMOTE)
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
514 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalDiskSize'])
6d645b3011e1 test_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5
diff changeset
515 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])
7
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
516
213
eba6b8c38eee added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents: 211
diff changeset
517 def test_delete_cascade(self):
eba6b8c38eee added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents: 211
diff changeset
518 # 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
519
eba6b8c38eee added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents: 211
diff changeset
520 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
521 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
522 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
523 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
524 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
525 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
526
eba6b8c38eee added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents: 211
diff changeset
527 DoDelete(_REMOTE, '/instances/%s' % a)
eba6b8c38eee added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents: 211
diff changeset
528
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, '/instances')))
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, '/series')))
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, '/studies')))
eba6b8c38eee added a delete_cascade test to reproduce an issue in our MSSQL plugin
amazy
parents: 211
diff changeset
532 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
533
7
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
534
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
535 def test_multiframe(self):
7
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
536 i = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID']
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
537 self.assertEqual(76, len(DoGet(_REMOTE, '/instances/%s/frames' % i)))
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
538
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
539 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % i)
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
540 self.assertEqual("L", im.mode)
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
541 self.assertEqual(512, im.size[0])
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
542 self.assertEqual(512, im.size[1])
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
543
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
544 DoGet(_REMOTE, '/instances/%s/frames/0/image-uint8' % i)
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
545 DoGet(_REMOTE, '/instances/%s/frames/0/image-uint16' % i)
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
546 DoGet(_REMOTE, '/instances/%s/frames/75/preview' % i)
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
547 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/aaa/preview' % i))
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
548 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/76/preview' % i))
302f06f3bba2 test_multi_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 6
diff changeset
549
8
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
550
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
551 def test_changes(self):
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
552 # Check emptiness
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
553 c = DoGet(_REMOTE, '/changes')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
554 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
555 #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
556 self.assertTrue(c['Done'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
557 c = DoGet(_REMOTE, '/changes?last')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
558 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
559 #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
560 self.assertTrue(c['Done'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
561
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
562 # Add 1 instance
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
563 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
564 c = DoGet(_REMOTE, '/changes')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
565 begin = c['Last']
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
566 self.assertEqual(4, len(c['Changes']))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
567 self.assertTrue(c['Done'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
568 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
569
390
5c2472f008eb Check the order in which the creation events are reported
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 389
diff changeset
570 # 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
571 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
572 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
573 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
574 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
575
8
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
576 c = DoGet(_REMOTE, '/changes?last')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
577 self.assertEqual(1, len(c['Changes']))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
578 self.assertEqual(begin, c['Last'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
579 self.assertTrue(c['Done'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
580 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
581 self.assertEqual(1, len(c['Changes']))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
582 self.assertEqual(begin, c['Last'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
583 self.assertTrue(c['Done'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
584 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
585 self.assertEqual(1, len(c['Changes']))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
586 self.assertEqual(begin - 1, c['Last'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
587 self.assertFalse(c['Done'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
588 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
589 self.assertEqual(1, len(c['Changes']))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
590 self.assertEqual(begin - 2, c['Last'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
591 self.assertFalse(c['Done'])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
592
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
593 UploadFolder(_REMOTE, 'Knee/T1')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
594 UploadFolder(_REMOTE, 'Knee/T2')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
595 since = begin
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
596 countPatients = 0
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
597 countStudies = 0
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
598 countSeries = 0
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
599 countInstances = 0
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
600 completed = 0
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
601 while True:
530
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
602 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
603 since = c['Last']
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
604 for i in c['Changes']:
530
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
605 # We have set StableAge to 1 -> we might have StabeStudy but this is not sure -> detect only the 'New' events
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
606
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
607 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
608 countInstances += 1
530
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
609 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
610 countPatients += 1
530
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
611 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
612 countStudies += 1
530
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
613 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
614 countSeries += 1
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
615 if i['ChangeType'] == 'CompletedSeries':
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
616 completed += 1
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
617 self.assertTrue('ID' in i)
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
618 self.assertTrue('Path' in i)
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
619 self.assertTrue('Seq' in i)
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
620 if c['Done']:
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
621 break
530
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
622 # we count only the events since before the upload of 2 Knee series !
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
623 self.assertEqual(50, countInstances)
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
624 self.assertEqual(1, countPatients)
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
625 self.assertEqual(1, countStudies)
Alain Mazy <am@osimis.io>
parents: 529
diff changeset
626 self.assertEqual(2, countSeries)
8
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
627 self.assertEqual(0, completed)
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
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
630 def test_archive(self):
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
631 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
632 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
633 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
634 kneeStudy = DoGet(_REMOTE, '/studies')[0]
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
635 kneeSeries = DoGet(_REMOTE, '/series')[0]
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
636
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
637 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
638 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
639 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
640
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
641 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
642 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
643 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
644
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
645 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
646 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
647 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
648
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
649 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
650 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
651 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
652
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
653 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
654 self.assertEqual(2, len(z.namelist()))
192
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 191
diff changeset
655
582
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
656 # archive with 2 patients
192
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 191
diff changeset
657 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
658 'Resources' : [ brainixPatient, kneePatient ]
192
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 191
diff changeset
659 })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 191
diff changeset
660 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
661 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
662 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
663
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
664 z = PostArchive(_REMOTE, '/patients/%s/archive' % kneePatient, {
403
e08e15befa0c test sync POST to /archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 402
diff changeset
665 'Synchronous' : True
e08e15befa0c test sync POST to /archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 402
diff changeset
666 })
e08e15befa0c test sync POST to /archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 402
diff changeset
667 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
668
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
669 # archive with 2 studies
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
670 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
671 'Resources' : [ brainixStudy, kneeStudy ]
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
672 })
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
673 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
674 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
675 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
676
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
677 # 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
678 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
679 'Resources' : [ brainixPatient, kneeStudy ]
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
680 })
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
681 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
682 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
683 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
684
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
685
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
686 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
687 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
688 # one PatientID: COMMON
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
689 # 2 PatientName: HELLO & WORLD
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
690
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
691 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
692 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
693 helloStudy = hello['ParentStudy']
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
694 worldStudy = world['ParentStudy']
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
695 helloPatient = hello['ParentPatient']
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
696 worldPatient = world['ParentPatient']
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
697
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
698 self.assertEqual(helloPatient, worldPatient)
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
699
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
700 # 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
701 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
702 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
703
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
704 # 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
705 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
706 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
707 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
708
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
709 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
710 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
711 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
712
615201c822d8 new test for PatientName used when exporting an archive
Alain Mazy <am@osimis.io>
parents: 573
diff changeset
713
8
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
714
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
715 def test_media_archive(self):
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
716 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
717 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
718
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
719 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
720 self.assertEqual(3, len(z.namelist()))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
721 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
722 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
723 self.assertTrue('DICOMDIR' in z.namelist())
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
724
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
725 try:
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
726 os.remove('/tmp/DICOMDIR')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
727 except:
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
728 # The file does not exist
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
729 pass
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
730
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
731 z.extract('DICOMDIR', '/tmp')
45
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 44
diff changeset
732 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
733 stderr = subprocess.STDOUT).split('\n')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
734 self.assertEqual(3, len(a))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
735 self.assertTrue(a[0].startswith('Warning'))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
736 self.assertEqual('BasicDirectory', a[1])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
737 self.assertEqual('', a[2])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
738
45
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 44
diff changeset
739 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
740 stderr = subprocess.STDOUT).split('\n')
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
741 self.assertEqual(1, len(a))
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
742 self.assertEqual('', a[0])
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
743
45
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 44
diff changeset
744 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
745 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
746 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
747
f8d781d1d267 test_changes, test_archive, test_media_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
748 os.remove('/tmp/DICOMDIR')
10
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
749
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
750
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
751 def test_protection(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
752 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
753 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
754 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
755 a = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
756 b = DoGet(_REMOTE, '/patients')[1]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
757 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
758 DoPut(_REMOTE, '/patients/%s/protected' % a, '0', 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
759 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
760 DoPut(_REMOTE, '/patients/%s/protected' % a, '1', 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
761 self.assertEqual(1, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
762 DoPut(_REMOTE, '/patients/%s/protected' % a, '0', 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
763 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
764
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
765
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
766 def test_raw_tags(self):
10
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
767 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
768
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
769 dicom = DoGet(_REMOTE, '/instances/%s/file' % i)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
770 self.assertEqual('1a7c56cb02d6e742cc9c856a8ac182e3', ComputeMD5(dicom))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
771
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
772 s = '/instances/%s/content/' % i
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
773
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
774 self.assertEqual('LOGIQBOOK', DoGet(_REMOTE, s + '0008-1010').strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
775 self.assertRaises(Exception, lambda: DoGet(_REMOTE, s + '0008-1011'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
776
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
777 self.assertEqual('Abdomen', DoGet(_REMOTE, s + '7fe1-1001/0/7fe1-1008/0/7fe1-1057').strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
778 self.assertEqual('cla_3c', DoGet(_REMOTE, s + '7fe1-1001/0/7fe1-1008/8/7fe1-1057').strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
779
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
780 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
781 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
782 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
783 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
784
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
785 for i in DoGet(_REMOTE, '/instances'):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
786 aid = DoGet(_REMOTE, '/instances/%s' % i)['MainDicomTags']['SOPInstanceUID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
787 self.assertEqual(aid, DoGet(_REMOTE, '/instances/%s/content/0008-0018' % i).replace(chr(0), ''))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
788
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
789
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
790 def test_raw_tags_mdn(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
791 # Bug reported by Cyril Paulus
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
792 i = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
793 self.assertAlmostEqual(0.000027, DoGet(_REMOTE, '/instances/%s/content/7053-1000' % i))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
794
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
795
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
796 def test_modify_instance(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
797 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
798 modified = DoPost(_REMOTE, '/instances/%s/modify' % i,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
799 json.dumps({
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
800 "Replace" : {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
801 "PatientName" : "hello",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
802 #"PatientID" : "world"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
803 },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
804 "Remove" : [ "StationName" ],
118
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
805 "RemovePrivateTags" : True
10
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
806 }),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
807 'application/json')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
808 j = DoPost(_REMOTE, '/instances', modified, 'application/dicom')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
809
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
810 self.assertNotEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
811 #self.assertNotEqual('world', DoGet(_REMOTE, '/instances/%s/content/0010-0020' % i).strip())
83
3f2170efa8d2 patches for python3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 81
diff changeset
812 self.assertEqual('LOGIQBOOK', DoGet(_REMOTE, '/instances/%s/content/0008-1010' % i).strip())
10
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
813 DoGet(_REMOTE, '/instances/%s/content/6003-1010' % i) # Some private tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
814
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
815 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
816 #self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/0010-0020' % j).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
817 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/0008-1010' % j))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
818 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/6003-1010' % j))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
819
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
820
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
821 def test_modify_series(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
822 # Upload 4 images from the same series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
823 for i in range(4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
824 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
825
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
826 origSeries = DoGet(_REMOTE, '/series')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
827 newSeries = DoPost(_REMOTE, '/series/%s/modify' % origSeries,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
828 '{"Replace":{"PatientName":"Jodogne"}}',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
829 'application/json')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
830
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
831 self.assertEqual(origSeries, DoGet(_REMOTE, '/series/%s' % newSeries)['ModifiedFrom'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
832 instances = DoGet(_REMOTE, '/series/%s' % newSeries)['Instances']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
833 self.assertEqual(4, len(instances))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
834 for i in instances:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
835 j = DoGet(_REMOTE, '/instances/%s' % i)['ModifiedFrom']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
836 self.assertEqual(newSeries, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
837 self.assertEqual(origSeries, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
838
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
839 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
840 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
841
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
842
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
843 def test_modify_study(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
844 # Upload 4 images from the 2 series of the same study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
845 for i in range(4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
846 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
847 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
848
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
849 origStudy = DoGet(_REMOTE, '/studies')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
850 newStudy = DoPost(_REMOTE, '/studies/%s/modify' % origStudy,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
851 '{"Replace":{"PatientName":"Jodogne"}}',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
852 'application/json')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
853
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
854 self.assertEqual(origStudy, DoGet(_REMOTE, '/studies/%s' % newStudy)['ModifiedFrom'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
855 series = DoGet(_REMOTE, '/studies/%s' % newStudy)['Series']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
856 self.assertEqual(2, len(series))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
857 for s in series:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
858 ss = DoGet(_REMOTE, '/series/%s' % s)['ModifiedFrom']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
859 self.assertEqual(newStudy, DoGet(_REMOTE, '/series/%s' % s)['ParentStudy'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
860 self.assertEqual(origStudy, DoGet(_REMOTE, '/series/%s' % ss)['ParentStudy'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
861
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
862 instances = DoGet(_REMOTE, '/series/%s' % s)['Instances']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
863 for i in instances:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
864 j = DoGet(_REMOTE, '/instances/%s' % i)['ModifiedFrom']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
865 self.assertEqual(s, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
866 self.assertEqual(ss, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
867
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
868 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
869 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
870
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
871
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
872 def test_anonymize_series(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
873 # Upload 4 images from the same series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
874 for i in range(4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
875 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
876
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
877 origSeries = DoGet(_REMOTE, '/series')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
878 newSeries = DoPost(_REMOTE, '/series/%s/anonymize' % origSeries,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
879 '{}',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
880 'application/json')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
881
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
882 self.assertEqual(origSeries, DoGet(_REMOTE, '/series/%s' % newSeries)['AnonymizedFrom'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
883 instances = DoGet(_REMOTE, '/series/%s' % newSeries)['Instances']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
884 self.assertEqual(4, len(instances))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
885 for i in instances:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
886 j = DoGet(_REMOTE, '/instances/%s' % i)['AnonymizedFrom']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
887 self.assertEqual(newSeries, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
888 self.assertEqual(origSeries, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
889
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
890 DoGet(_REMOTE, '/instances/%s/content/0008-1010' % j)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
891 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/0008-1010' % i))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
892
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
893
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
894 def test_anonymize_study(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
895 # Upload 4 images from the 2 series of the same study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
896 for i in range(4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
897 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
898 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
899
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
900 origStudy = DoGet(_REMOTE, '/studies')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
901 newStudy = DoPost(_REMOTE,'/studies/%s/anonymize' % origStudy,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
902 '{"Replace":{"PatientName":"Jodogne"}}',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
903 'application/json')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
904
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
905 self.assertEqual(origStudy, DoGet(_REMOTE, '/studies/%s' % newStudy)['AnonymizedFrom'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
906 series = DoGet(_REMOTE, '/studies/%s' % newStudy)['Series']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
907 self.assertEqual(2, len(series))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
908 for s in series:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
909 ss = DoGet(_REMOTE, '/series/%s' % s)['AnonymizedFrom']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
910 self.assertEqual(newStudy, DoGet(_REMOTE, '/series/%s' % s)['ParentStudy'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
911 self.assertEqual(origStudy, DoGet(_REMOTE, '/series/%s' % ss)['ParentStudy'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
912
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
913 instances = DoGet(_REMOTE, '/series/%s' % s)['Instances']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
914 for i in instances:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
915 j = DoGet(_REMOTE, '/instances/%s' % i)['AnonymizedFrom']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
916 self.assertEqual(s, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
917 self.assertEqual(ss, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
918
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
919 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
920 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip())
11
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
921
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
922
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
923
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
924 def test_storescu(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
925 # Check emptiness
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
926 e = DoGet(_REMOTE, '/exports')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
927 self.assertEqual(0, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
928 self.assertEqual(0, e['Last'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
929 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
930 e = DoGet(_REMOTE, '/exports?last')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
931 self.assertEqual(0, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
932 self.assertEqual(0, e['Last'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
933 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
934
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
935 # Add 1 instance
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
936 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
937 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
938
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
939 # Export the instance
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
940 j = DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain') # instance
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
941 self.assertEqual(1, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
942 self.assertEqual(1, len(DoGet(_LOCAL, '/studies')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
943 self.assertEqual(1, len(DoGet(_LOCAL, '/series')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
944 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
945
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
946 e = DoGet(_REMOTE, '/exports')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
947 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
948 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
949 self.assertEqual(e['Exports'][-1]['Seq'], e['Last'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
950 e = DoGet(_REMOTE, '/exports?limit=1')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
951 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
952 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
953 self.assertEqual(e['Exports'][-1]['Seq'], e['Last'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
954 e = DoGet(_REMOTE, '/exports?last')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
955 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
956 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
957 self.assertEqual(e['Exports'][-1]['Seq'], e['Last'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
958 seqInstance = e['Last']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
959
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
960 # Export the series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
961 j = DoPost(_REMOTE, '/modalities/orthanctest/store', 'f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
962
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
963 e = DoGet(_REMOTE, '/exports')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
964 self.assertEqual(2, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
965 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
966 self.assertEqual(e['Exports'][-1]['Seq'], e['Last'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
967 seqSeries = e['Last']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
968 self.assertNotEqual(seqInstance, seqSeries)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
969 e = DoGet(_REMOTE, '/exports?limit=1&since=0')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
970 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
971 self.assertFalse(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
972 self.assertEqual(e['Exports'][-1]['Seq'], seqInstance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
973 e = DoGet(_REMOTE, '/exports?limit=1&since=' + str(seqInstance))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
974 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
975 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
976 self.assertEqual(e['Exports'][-1]['Seq'], seqSeries)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
977 e = DoGet(_REMOTE, '/exports?last')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
978 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
979 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
980 self.assertEqual(e['Exports'][-1]['Seq'], seqSeries)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
981
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
982 # Export the study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
983 j = DoPost(_REMOTE, '/modalities/orthanctest/store', 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
984 seqStudy = DoGet(_REMOTE, '/exports')['Last']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
985
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
986 # Export the patient
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
987 j = DoPost(_REMOTE, '/modalities/orthanctest/store', '6816cb19-844d5aee-85245eba-28e841e6-2414fae2', 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
988 self.assertEqual(1, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
989 self.assertEqual(1, len(DoGet(_LOCAL, '/studies')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
990 self.assertEqual(1, len(DoGet(_LOCAL, '/series')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
991 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
992
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
993 e = DoGet(_REMOTE, '/exports')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
994 self.assertEqual(4, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
995 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
996 self.assertEqual(e['Exports'][-1]['Seq'], e['Last'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
997 seqPatient = e['Last']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
998 self.assertNotEqual(seqInstance, seqSeries)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
999 self.assertNotEqual(seqSeries, seqStudy)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1000 self.assertNotEqual(seqStudy, seqPatient)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1001 self.assertTrue(seqInstance < seqSeries)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1002 self.assertTrue(seqSeries < seqStudy)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1003 self.assertTrue(seqStudy < seqPatient)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1004 e = DoGet(_REMOTE, '/exports?limit=1&since=0')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1005 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1006 self.assertFalse(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1007 self.assertEqual(e['Exports'][-1]['Seq'], seqInstance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1008 e = DoGet(_REMOTE, '/exports?limit=1&since=' + str(seqInstance))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1009 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1010 self.assertFalse(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1011 self.assertEqual(e['Exports'][-1]['Seq'], seqSeries)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1012 e = DoGet(_REMOTE, '/exports?limit=1&since=' + str(seqSeries))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1013 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1014 self.assertFalse(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1015 self.assertEqual(e['Exports'][-1]['Seq'], seqStudy)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1016 e = DoGet(_REMOTE, '/exports?limit=1&since=' + str(seqStudy))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1017 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1018 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1019 self.assertEqual(e['Exports'][-1]['Seq'], seqPatient)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1020 e = DoGet(_REMOTE, '/exports?last')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1021 self.assertEqual(1, len(e['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1022 self.assertTrue(e['Done'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1023 self.assertEqual(e['Exports'][-1]['Seq'], seqPatient)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1024
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1025
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1026 # Check the content of the logged information
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1027 e = DoGet(_REMOTE, '/exports')['Exports']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1028
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1029 if 'PatientID' in e[0]:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1030 # Since Orthanc 0.8.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1031 patient = 'PatientID'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1032 study = 'StudyInstanceUID'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1033 series = 'SeriesInstanceUID'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1034 instance = 'SOPInstanceUID'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1035 else:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1036 # Up to Orthanc 0.8.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1037 patient = 'PatientId'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1038 study = 'StudyInstanceUid'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1039 series = 'SeriesInstanceUid'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1040 instance = 'SopInstanceUid'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1041
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1042 for k in range(4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1043 self.assertTrue('Date' in e[k])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1044 self.assertTrue('Seq' in e[k])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1045 self.assertEqual('orthanctest', e[k]['RemoteModality'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1046
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1047 self.assertEqual(10, len(e[0]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1048 self.assertEqual('Instance', e[0]['ResourceType'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1049 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', e[0]['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1050 self.assertEqual('/instances/66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', e[0]['Path'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1051 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', e[0][instance])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1052 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', e[0][series])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1053 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', e[0][study])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1054 self.assertEqual('ozp00SjY2xG', e[0][patient])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1055
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1056 self.assertEqual(9, len(e[1]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1057 self.assertEqual('Series', e[1]['ResourceType'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1058 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', e[1]['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1059 self.assertEqual('/series/f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', e[1]['Path'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1060 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', e[1][series])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1061 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', e[1][study])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1062 self.assertEqual('ozp00SjY2xG', e[1][patient])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1063
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1064 self.assertEqual(8, len(e[2]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1065 self.assertEqual('Study', e[2]['ResourceType'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1066 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', e[2]['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1067 self.assertEqual('/studies/b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', e[2]['Path'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1068 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', e[2][study])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1069 self.assertEqual('ozp00SjY2xG', e[2][patient])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1070
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1071 self.assertEqual(7, len(e[3]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1072 self.assertEqual('Patient', e[3]['ResourceType'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1073 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', e[3]['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1074 self.assertEqual('/patients/6816cb19-844d5aee-85245eba-28e841e6-2414fae2', e[3]['Path'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1075 self.assertEqual('ozp00SjY2xG', e[3][patient])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1076
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1077 DropOrthanc(_REMOTE)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1078 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1079
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1080
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1081 def test_store_peer(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1082 self.assertEqual(0, len(DoGet(_LOCAL, '/exports')['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1083 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1084
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1085 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1086 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1087 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1088
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1089 j = DoPost(_REMOTE, '/peers/peer/store', str(i), 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1090 self.assertEqual(1, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1091 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1092
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1093 self.assertEqual(1, len(DoGet(_REMOTE, '/exports')['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1094
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1095 DropOrthanc(_REMOTE)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1096 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1097
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1098
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1099 def test_bulk_storescu(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1100 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1101
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1102 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1103 b = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1104
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1105 j = DoPost(_REMOTE, '/modalities/orthanctest/store', [ a['ID'], b['ID'] ], 'application/json')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1106 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1107
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1108 DropOrthanc(_LOCAL)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1109
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1110 # Send using patient's UUID
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1111 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1112 j = DoPost(_REMOTE, '/modalities/orthanctest/store',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1113 [ 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' ], 'application/json')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1114 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1115
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1116
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1117 def test_color(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1118 i = UploadInstance(_REMOTE, 'ColorTestMalaterre.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1119 im = GetImage(_REMOTE, '/instances/%s/preview' % i)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1120 self.assertEqual("RGB", im.mode)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1121 self.assertEqual(41, im.size[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1122 self.assertEqual(41, im.size[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1123
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1124 # http://effbot.org/zone/pil-comparing-images.htm
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1125 truth = Image.open(GetDatabasePath('ColorTestMalaterre.png'))
11
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1126 self.assertTrue(ImageChops.difference(im, truth).getbbox() is None)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1127
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 10
diff changeset
1128
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1129 def test_faking_ruby_put(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1130 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1131 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1132 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1133 a = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1134 b = DoGet(_REMOTE, '/patients')[1]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1135 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1136 DoGet(_REMOTE, '/patients/%s/protected' % a, data = { '_method' : 'PUT' }, body = '0')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1137 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1138 DoGet(_REMOTE, '/patients/%s/protected' % a, data = { '_method' : 'PUT' }, body = '1')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1139 self.assertEqual(1, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1140 DoGet(_REMOTE, '/patients/%s/protected' % a, data = { '_method' : 'PUT' }, body = '0')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1141 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1142
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1143
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1144 def test_faking_ruby_delete(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1145 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1146 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1147 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1148 a = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1149 b = DoGet(_REMOTE, '/patients')[1]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1150 DoGet(_REMOTE, '/patients/%s' % a, data = { '_method' : 'DELETE' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1151 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1152 DoGet(_REMOTE, '/patients/%s' % b, data = { '_method' : 'DELETE' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1153 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1155
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1156 def test_faking_google_put(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1157 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1158 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1159 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1160 a = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1161 b = DoGet(_REMOTE, '/patients')[1]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1162 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1163 DoPost(_REMOTE, '/patients/%s/protected' % a, headers = { 'X-HTTP-Method-Override' : 'PUT' }, data = '0')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1164 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1165 DoPost(_REMOTE, '/patients/%s/protected' % a, headers = { 'X-HTTP-Method-Override' : 'PUT' }, data = '1')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1166 self.assertEqual(1, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1167 DoPost(_REMOTE, '/patients/%s/protected' % a, headers = { 'X-HTTP-Method-Override' : 'PUT' }, data = '0')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1168 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1170
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1171 def test_faking_google_delete(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1172 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1173 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1174 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1175 a = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1176 b = DoGet(_REMOTE, '/patients')[1]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1177 DoPost(_REMOTE, '/patients/%s' % a, headers = { 'X-HTTP-Method-Override' : 'DELETE' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1178 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1179 DoPost(_REMOTE, '/patients/%s' % b, headers = { 'X-HTTP-Method-Override' : 'DELETE' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1180 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1181
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1182
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1183 def test_lua(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1184 self.assertEqual(42, DoPost(_REMOTE, '/tools/execute-script', 'print(42)'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1185 self.assertTrue(IsDefinedInLua(_REMOTE, 'PrintRecursive'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1186 self.assertFalse(IsDefinedInLua(_REMOTE, 'HelloWorld'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1187
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1188
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1189 def test_metadata(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1190 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1191 p = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1192 i = DoGet(_REMOTE, '/instances')[0]
369
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1193 series = DoGet(_REMOTE, '/series')[0]
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1194
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1195 m = DoGet(_REMOTE, '/patients/%s/metadata' % p)
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1196 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1197 self.assertEqual(2, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1198 self.assertTrue('MainDicomTagsSignature' in m)
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1199 else:
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1200 self.assertEqual(1, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1201 self.assertTrue('LastUpdate' in m)
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1202
369
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1203 # 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
1204 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
1205 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
1206 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
1207
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1208 m = DoGet(_REMOTE, '/studies/%s/metadata' % DoGet(_REMOTE, '/studies')[0])
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1209 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1210 self.assertEqual(2, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1211 self.assertTrue('MainDicomTagsSignature' in m)
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1212 else:
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1213 self.assertEqual(1, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1214 self.assertTrue('LastUpdate' in m)
369
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1215
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1216 m = DoGet(_REMOTE, '/series/%s/metadata' % series)
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1217 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1218 self.assertEqual(3, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1219 self.assertTrue('MainDicomTagsSignature' in m)
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1220 else:
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1221 self.assertEqual(2, len(m))
369
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1222 self.assertTrue('LastUpdate' in m)
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1223
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1224 # New in Orthanc 1.9.0
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1225 self.assertTrue('RemoteAET' in m)
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1226 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
1227
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1228 m = DoGet(_REMOTE, '/instances/%s/metadata' % i)
554
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
1229 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1230 self.assertEqual(10, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1231 elif IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
1232 self.assertEqual(9, len(m))
547
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1233 else:
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1234 self.assertEqual(8, len(m))
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1235
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1236 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1237 self.assertTrue('MainDicomTagsSignature' in m)
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1238
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1239 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
1240 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
1241 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
1242
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1243 self.assertTrue('IndexInSeries' in m)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1244 self.assertTrue('ReceptionDate' in m)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1245 self.assertTrue('RemoteAET' in m)
63
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1246 self.assertTrue('Origin' in m)
89
74b7b9aed5f8 test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
1247 self.assertTrue('TransferSyntax' in m)
95
a807a4699eb4 testing of metadata SopClassUid
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 92
diff changeset
1248 self.assertTrue('SopClassUid' in m)
145
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 144
diff changeset
1249 self.assertTrue('RemoteIP' in m)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 144
diff changeset
1250 self.assertTrue('HttpUsername' in m)
63
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1251 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
1252 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
1253 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
1254 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
1255 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % i), '1.2.840.10008.5.1.4.1.1.4')
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1256
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1257 # Play with custom metadata
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
1258 (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
1259 self.assertEqual('200', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
1260 self.assertEqual('', body)
394
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1261
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1262 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
1263 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
1264 else:
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 self.assertFalse('etag' in headers)
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1267
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1268 m = DoGet(_REMOTE, '/patients/%s/metadata' % p)
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1269 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1270 self.assertEqual(3, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1271 self.assertTrue('MainDicomTagsSignature' in m)
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1272 else:
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1273 self.assertEqual(2, len(m))
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1274 self.assertTrue('LastUpdate' in m)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1275 self.assertTrue('5555' in m)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1276 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
1277
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1278 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2):
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1279 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
1280 'If-Match' : headers['etag']
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1281 })
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1282 else:
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1283 DoPut(_REMOTE, '/patients/%s/metadata/5555' % p, 'hello')
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
1284
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
1285 (headers, body) = DoGetRaw(_REMOTE, '/patients/%s/metadata/5555' % p)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
1286 self.assertEqual('200', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
1287 self.assertEqual('hello', body)
394
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1288
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1289 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2):
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1290 DoDelete(_REMOTE, '/patients/%s/metadata/5555' % p, headers = {
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1291 'If-Match' : headers['etag']
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1292 })
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1293 else:
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1294 DoDelete(_REMOTE, '/patients/%s/metadata/5555' % p)
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1295
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1296 m = DoGet(_REMOTE, '/patients/%s/metadata' % p)
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1297 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1298 self.assertEqual(2, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1299 self.assertTrue('MainDicomTagsSignature' in m)
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1300 else:
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1301 self.assertEqual(1, len(m))
12
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 11
diff changeset
1302 self.assertTrue('LastUpdate' in m)
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1303
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1305 def test_statistics(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1306 # Upload 16 instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1307 for i in range(4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1308 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1309 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1310 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1311 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1312
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1313 s = DoGet(_REMOTE, '/statistics')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1314 self.assertEqual(16, s['CountInstances'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1315 self.assertEqual(2, s['CountPatients'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1316 self.assertEqual(2, s['CountStudies'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1317 self.assertEqual(4, s['CountSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1318 d = int(s['TotalUncompressedSize'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1319
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1320 e = 0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1321 for patient in DoGet(_REMOTE, '/patients'):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1322 s = DoGet(_REMOTE, '/patients/%s/statistics' % patient)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1323 self.assertEqual(8, s['CountInstances'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1324 self.assertEqual(1, s['CountStudies'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1325 self.assertEqual(2, s['CountSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1326 e += int(s['UncompressedSize'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1327
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1328 for study in DoGet(_REMOTE, '/studies'):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1329 s = DoGet(_REMOTE, '/studies/%s/statistics' % study)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1330 self.assertEqual(8, s['CountInstances'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1331 self.assertEqual(2, s['CountSeries'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1332 e += int(s['UncompressedSize'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1333
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1334 for series in DoGet(_REMOTE, '/series'):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1335 s = DoGet(_REMOTE, '/series/%s/statistics' % series)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1336 self.assertEqual(4, s['CountInstances'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1337 e += int(s['UncompressedSize'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1338
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1339 self.assertEqual(3 * d, e)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1340
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1341
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1342 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
1343 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
1344
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1345 patient = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1346 instance = DoGet(_REMOTE, '/instances')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1347 size = int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1348 self.assertEqual(size, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1349
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1350 self.assertEqual(0, len(DoGet(_REMOTE, '/patients/%s/attachments' % patient)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1351 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
1352
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
1353 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
1354 if IsDicomUntilPixelDataStored(_REMOTE):
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
1355 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
1356 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
1357
448
63f475995400 Orthanc 1.9.8 is now known as Orthanc 1.10.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 447
diff changeset
1358 # New in Orthanc 1.10.0
443
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1359 a = DoGet(_REMOTE, '/instances/%s/attachments?full' % instance)
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1360 self.assertEqual(2, len(a))
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1361 self.assertEqual(1, a['dicom'])
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1362 self.assertEqual(3, a['dicom-until-pixel-data'])
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1363
380
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
1364 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
1365 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
1366
448
63f475995400 Orthanc 1.9.8 is now known as Orthanc 1.10.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 447
diff changeset
1367 # New in Orthanc 1.10.0
443
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1368 a = DoGet(_REMOTE, '/instances/%s/attachments?full' % instance)
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1369 self.assertEqual(1, len(a))
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1370 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
1371 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
1372 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
1373 self.assertTrue('dicom-as-json' in DoGet(_REMOTE, '/instances/%s/attachments' % instance))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1374
448
63f475995400 Orthanc 1.9.8 is now known as Orthanc 1.10.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 447
diff changeset
1375 # New in Orthanc 1.10.0
443
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1376 self.assertRaises(Exception, lambda: DoGet(
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1377 _REMOTE, '/instances/%s/attachments?full' % instance))
97fca09bf849 test ?full in attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 442
diff changeset
1378
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1379 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/patients/%s/attachments/22' % patient, 'hello'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1380 hello = 'hellohellohellohellohellohellohellohellohello'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1381 DoPut(_REMOTE, '/patients/%s/attachments/1025' % patient, hello)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1382 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1383 int(DoGet(_REMOTE, '/statistics')['TotalDiskSize']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1384 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1385 size + int(DoGet(_REMOTE, '/patients/%s/attachments/1025/compressed-size' % patient)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1386
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1387 DoPut(_REMOTE, '/patients/%s/attachments/1026' % patient, 'world')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1388 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1389 int(DoGet(_REMOTE, '/statistics')['TotalDiskSize']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1390 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1391 size +
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1392 int(DoGet(_REMOTE, '/patients/%s/attachments/1025/compressed-size' % patient)) +
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1393 int(DoGet(_REMOTE, '/patients/%s/attachments/1026/compressed-size' % patient)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1394
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1395 self.assertEqual(2, len(DoGet(_REMOTE, '/patients/%s/attachments' % patient)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1396 self.assertEqual(hello, DoGet(_REMOTE, '/patients/%s/attachments/1025/data' % patient))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1397 self.assertEqual('world', DoGet(_REMOTE, '/patients/%s/attachments/1026/data' % patient))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1398 DoPost(_REMOTE, '/patients/%s/attachments/1025/verify-md5' % patient)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1399 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
1400 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
1401 'If-Match' : '0-%s' % ComputeMD5('world'),
392
5cbcb4a83b41 fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 391
diff changeset
1402 })
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
1403
394
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1404 (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
1405 self.assertEqual('200', headers['status'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
1406 self.assertEqual('world2', body)
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1407
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1408 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
1409 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
1410 'If-Match' : '0-%s' % ComputeMD5(hello),
392
5cbcb4a83b41 fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 391
diff changeset
1411 })
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1412 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1413 int(DoGet(_REMOTE, '/statistics')['TotalDiskSize']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1414 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1415 size + int(DoGet(_REMOTE, '/patients/%s/attachments/1026/compressed-size' % patient)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1416
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1417 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
1418
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1419 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2):
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1420 DoDelete(_REMOTE, '/patients/%s/attachments/1026' % patient, headers = {
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1421 'If-Match' : headers['etag']
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1422 })
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1423 else:
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1424 self.assertFalse('etag' in headers)
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1425 DoDelete(_REMOTE, '/patients/%s/attachments/1026' % patient)
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
1426
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1427 self.assertEqual(0, len(DoGet(_REMOTE, '/patients/%s/attachments' % patient)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1428
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1429 self.assertEqual(int(DoGet(_REMOTE, '/patients/%s/statistics' % patient)['DiskSize']), size)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1430 self.assertEqual(size, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1431
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1432
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1433 def test_incoming_storescu(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1434 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
45
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 44
diff changeset
1435 subprocess.check_call([ FindExecutable('storescu'),
44
ffa542cce638 Toolbox.FindExecutable()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 43
diff changeset
1436 _REMOTE['Server'], str(_REMOTE['DicomPort']),
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1437 GetDatabasePath('ColorTestImageJ.dcm') ])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1438 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1439
63
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1440 i = DoGet(_REMOTE, '/instances')
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1441 self.assertEqual(1, len(i))
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1442 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
1443
554
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
1444 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1445 self.assertEqual(10, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1446 elif IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
1447 self.assertEqual(9, len(m))
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
1448 else:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
1449 self.assertEqual(8, len(m))
547
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1450
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1451 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1452 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
1453
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1454 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
7de5fd295025 testing instance metadata "PixelDataVR"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 543
diff changeset
1455 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
1456 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
1457
63
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1458 self.assertTrue('IndexInSeries' in m)
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1459 self.assertTrue('ReceptionDate' in m)
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1460 self.assertTrue('RemoteAET' in m)
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1461 self.assertTrue('Origin' in m)
89
74b7b9aed5f8 test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
1462 self.assertTrue('TransferSyntax' in m)
95
a807a4699eb4 testing of metadata SopClassUid
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 92
diff changeset
1463 self.assertTrue('SopClassUid' in m)
145
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 144
diff changeset
1464 self.assertTrue('RemoteIP' in m)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 144
diff changeset
1465 self.assertTrue('CalledAET' in m)
63
2652d562267a test Origin metadata of instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 62
diff changeset
1466 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
1467 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
1468 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
1469 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
1470 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
1471
369
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1472 series = DoGet(_REMOTE, '/series')[0]
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1473 m = DoGet(_REMOTE, '/series/%s/metadata' % series)
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1474 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1475 self.assertEqual(3, len(m))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1476 self.assertTrue('MainDicomTagsSignature' in m)
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1477 else:
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
1478 self.assertEqual(2, len(m))
369
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1479 self.assertTrue('LastUpdate' in m)
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1480 self.assertTrue('RemoteAET' in m)
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/RemoteAET' % series), 'STORESCU')
24d93b42873a test "RemoteAET" metadata at series level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 368
diff changeset
1482 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
1483 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
1484
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1485
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1486 def test_incoming_findscu(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1487 UploadInstance(_REMOTE, 'Multiframe.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1488 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1489
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1490 i = CallFindScu([ '-k', '0008,0052=PATIENT', '-k', '0010,0010' ])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1491 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', i)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1492 self.assertEqual(2, len(patientNames))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1493 self.assertTrue('Test Patient BG ' in patientNames)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1494 self.assertTrue('Anonymized' in patientNames)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1495
668
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 667
diff changeset
1496 i = CallFindScu([ '-k', '0008,0052=PATIENT', '-k', '0010,0010=*' ])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 667
diff changeset
1497 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', i)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 667
diff changeset
1498 self.assertEqual(2, len(patientNames))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 667
diff changeset
1499 self.assertTrue('Test Patient BG ' in patientNames)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 667
diff changeset
1500 self.assertTrue('Anonymized' in patientNames)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 667
diff changeset
1501
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1502 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', '0008,0021' ])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1503 series = re.findall('\(0008,0021\).*?\[\s*(.*?)\s*\]', i)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1504 self.assertEqual(2, len(series))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1505 self.assertTrue('20070208' in series)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1506 self.assertTrue('19980312' in series)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1507
335
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
1508 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
1509 series = re.findall('\(0008,0021\).*?\[\s*(.*?)\s*\]', i)
1059b8de42de ModalitiesInStudy subtest
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 55
diff changeset
1510 self.assertEqual(1, len(series))
1059b8de42de ModalitiesInStudy subtest
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 55
diff changeset
1511 self.assertTrue('19980312' in series)
1059b8de42de ModalitiesInStudy subtest
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 55
diff changeset
1512
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1513 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', 'PatientName=Anonymized' ])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1514 series = re.findall('\(0010,0010\).*?\[\s*(.*?)\s*\]', i)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1515 self.assertEqual(1, len(series))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1516
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1517 # Test the "CaseSentitivePN" flag (false by default)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1518 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', 'PatientName=anonymized' ])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1519 series = re.findall('\(0010,0010\).*?\[\s*(.*?)\s*\]', i)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1520 self.assertEqual(1, len(series))
66
821d9eb73c45 Test returning sequence values
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 64
diff changeset
1521
70
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1522 # Test range search (buggy if Orthanc <= 0.9.6)
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1523 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'StudyDate=19980312-' ])
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1524 studies = re.findall('\(0008,0020\).*?\[\s*(.*?)\s*\]', i)
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1525 self.assertEqual(2, len(studies))
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1526 self.assertTrue('20070208' in studies)
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1527 self.assertTrue('19980312' in studies)
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1528 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'StudyDate=19980312-19980312' ])
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1529 studies = re.findall('\(0008,0020\).*?\[\s*(.*?)\s*\]', i)
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1530 self.assertEqual(1, len(studies))
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1531 self.assertTrue('19980312' in studies)
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1532 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'StudyDate=-19980312' ])
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1533 studies = re.findall('\(0008,0020\).*?\[\s*(.*?)\s*\]', i)
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1534 self.assertEqual(1, len(studies))
9e7b5809481f test range search
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 69
diff changeset
1535 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
1536
05f48c19c60d Test "Retrieve AE Title" is returned by C-FIND SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 324
diff changeset
1537 # 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
1538 # 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
1539 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
1540 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
1541 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
1542 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
1543 self.assertEqual('ORTHANC', instances[1].strip())
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1544
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1545
191
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1546 def test_incoming_findscu_2(self):
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1547 # This test fails if "LookupMode_DatabaseOnly" is used
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1548 # (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
1549 # DICOM tags are returned)
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1550 UploadInstance(_REMOTE, 'Multiframe.dcm')
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1551 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1552
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1553 # 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
1554 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
1555 sequences = re.findall('\(0008,2112\)', i)
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1556 self.assertEqual(1, len(sequences))
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 # Test returning a non-main DICOM tag,
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1559 # "SecondaryCaptureDeviceID" (0018,1010), whose value is
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1560 # "MEDPC" in "ColorTestImageJ.dcm"
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1561 i = CallFindScu([ '-k', '0008,0052=SERIES', '-k', '0018,1010' ])
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1562 tags = re.findall('\(0018,1010\).*MEDPC', i)
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1563 self.assertEqual(1, len(tags))
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1564
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 def test_incoming_findscu_3(self):
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1567 # This test fails if "LookupMode_DatabaseOnly" or
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1568 # "LookupMode_DiskOnAnswer" is used, as
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1569 # "SecondaryCaptureDeviceID" (0018,1010) is not a main DICOM
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1570 # 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
1571 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1572
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1573 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
1574 sequences = re.findall('\(0018,1010\)', i)
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1575 self.assertEqual(1, len(sequences))
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1576
bc8bc83465dc testing C-FIND optimization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 189
diff changeset
1577
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1578 def test_incoming_movescu(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1579 UploadInstance(_REMOTE, 'Multiframe.dcm')
137
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
1580
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
1581 # No matching patient, so no job is created
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
1582 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
1583 CallMoveScu([ '--patient', '-k', '0008,0052=PATIENT', '-k', 'PatientID=none' ])
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1584 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
137
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
1585
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
1586 # 1 Matching patient, track the job
138
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
1587 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
1588 '--patient',
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
1589 '-k', '0008,0052=PATIENT',
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
1590 '-k', 'PatientID=12345678'
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
1591 ])))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1592 self.assertEqual(1, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1593
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1594
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1595 def test_findscu(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1596 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1597 j = UploadInstance(_REMOTE, 'Issue22.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1598 k = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1599 DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1600
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1601 # Test the "find-patient" level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1602 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1603 self.assertEqual(1, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1604 self.assertEqual('ozp00SjY2xG', p[0]['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1605
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1606 # Test wildcards constraints. The "LO" value representation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1607 # for PatientID is always case-sensitive, but the "PN" for
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1608 # PatientName might depend on the implementation:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1609 # "GenerateConfigurationForTests.py" will force it to be case
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1610 # insensitive (which was the default until Orthanc 0.8.6).
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1611 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'K*' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1612 self.assertEqual(1, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1613
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1614 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'k*' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1615 self.assertEqual(1, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1616
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1617 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientID' : 'ozp*' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1618 self.assertEqual(1, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1619
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1620 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientID' : 'o?p*' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1621 self.assertEqual(1, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1622
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1623 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientID' : '0?q*' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1624 self.assertEqual(0, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1625
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1626 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'B*' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1627 self.assertEqual(0, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1628
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1629 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'b*' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1630 self.assertEqual(0, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1631
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1632 DoPost(_REMOTE, '/modalities/orthanctest/store', str(j), 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1633 DoPost(_REMOTE, '/modalities/orthanctest/store', str(k), 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1634 DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1635 self.assertEqual(3, len(DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { })))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1636
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1637 p = DoPost(_REMOTE, '/modalities/orthanctest/find-patient', { 'PatientName' : 'A*' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1638 self.assertEqual(2, len(p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1639
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1640 # Test the "find-study" level. This is the instance "ColorTestImageJ.dcm"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1641 s = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1642 self.assertEqual(1, len(s))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1643 self.assertEqual('20070208', s[0]['StudyDate'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1644
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1645 # Test range searches
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1646 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1647 'StudyDate' : '-20070101' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1648 self.assertEqual(0, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1649
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1650 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1651 'StudyDate' : '20090101-' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1652 self.assertEqual(0, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1653
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1654 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1655 'StudyDate' : '20070101-' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1656 self.assertEqual(1, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1657
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1658 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1659 'StudyDate' : '-20090101' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1660 self.assertEqual(1, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1661
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1662 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1663 'StudyDate' : '20070207-20070207' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1664 self.assertEqual(0, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1665
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1666 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1667 'StudyDate' : '20070208-20070208' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1668 self.assertEqual(1, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1669
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1670 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', { 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1671 'StudyDate' : '20070209-20070209' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1672 self.assertEqual(0, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1673
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1674 # Test the ModalitiesInStudy tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1675 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1676 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1677 'ModalitiesInStudy' : 'US' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1678 self.assertEqual(0, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1679
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1680 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1681 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1682 'ModalitiesInStudy' : 'CT' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1683 self.assertEqual(1, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1684
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1685 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1686 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1687 'ModalitiesInStudy' : 'US\\CT' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1688 self.assertEqual(1, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1689
466
28a2c9452ec9 extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents: 462
diff changeset
1690 t = DoPost(_REMOTE, '/modalities/orthanctest/find-study', {
28a2c9452ec9 extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents: 462
diff changeset
1691 'PatientID' : 'B9uTHKOZ',
28a2c9452ec9 extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents: 462
diff changeset
1692 'ModalitiesInStudy' : '' })
28a2c9452ec9 extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents: 462
diff changeset
1693 self.assertEqual(1, len(t))
28a2c9452ec9 extra test with empty filter ModalitiesInStudy
Alain Mazy <am@osimis.io>
parents: 462
diff changeset
1694
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1695 # Test the "find-series" level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1696 t = DoPost(_REMOTE, '/modalities/orthanctest/find-series', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1697 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1698 'StudyInstanceUID' : s[0]['StudyInstanceUID'] })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1699 self.assertEqual(1, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1700
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1701 # Test "\" separator
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1702 t = DoPost(_REMOTE, '/modalities/orthanctest/find-series', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1703 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1704 'StudyInstanceUID' : s[0]['StudyInstanceUID'],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1705 'Modality' : 'MR\\CT\\US' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1706 self.assertEqual(1, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1707
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1708 t = DoPost(_REMOTE, '/modalities/orthanctest/find-series', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1709 'PatientID' : 'B9uTHKOZ',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1710 'StudyInstanceUID' : s[0]['StudyInstanceUID'],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1711 'Modality' : 'MR\\US' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1712 self.assertEqual(0, len(t))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1713
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1714
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1715 def test_update_modalities(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1716 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
1717 self.assertRaises(Exception, lambda: DoDelete(_REMOTE, '/modalities/toto'))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1718 DoPut(_REMOTE, '/modalities/toto', [ "STORESCP", "localhost", 2000 ])
116
4a196ebc7a4f updated tests for issue #31
amazy
parents: 112
diff changeset
1719 DoPut(_REMOTE, '/modalities/tata', [ "STORESCP", "localhost", 2000, 'MedInria' ]) # check backward compatiblity with obsolete manufacturer
4a196ebc7a4f updated tests for issue #31
amazy
parents: 112
diff changeset
1720 DoDelete(_REMOTE, '/modalities/tata')
124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
1721 DoPut(_REMOTE, '/modalities/tata', [ "STORESCP", "localhost", 2000, 'GenericNoUniversalWildcard' ])
121
1a19f953f53c also test GenericNoWildcardInDates
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 120
diff changeset
1722 DoDelete(_REMOTE, '/modalities/tata')
1a19f953f53c also test GenericNoWildcardInDates
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 120
diff changeset
1723 DoPut(_REMOTE, '/modalities/tata', [ "STORESCP", "localhost", 2000, 'GenericNoWildcardInDates' ])
128
a9fdfcb696e6 added tests for ?expand in /peers and /modalities
amazy
parents: 127
diff changeset
1724 modalitiesReadback = DoGet(_REMOTE, '/modalities?expand')
182
7a6b532853ab modalities are now described as JSON objects
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
1725 self.assertEqual('STORESCP', modalitiesReadback['tata']['AET'])
7a6b532853ab modalities are now described as JSON objects
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
1726 self.assertEqual('localhost', modalitiesReadback['tata']['Host'])
7a6b532853ab modalities are now described as JSON objects
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
1727 self.assertEqual(2000, modalitiesReadback['tata']['Port'])
7a6b532853ab modalities are now described as JSON objects
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
1728 self.assertEqual('GenericNoWildcardInDates', modalitiesReadback['tata']['Manufacturer'])
116
4a196ebc7a4f updated tests for issue #31
amazy
parents: 112
diff changeset
1729 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/modalities/toto', [ "STORESCP", "localhost", 2000, 'InvalidManufacturerName' ]))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1730 self.assertTrue('store' in DoGet(_REMOTE, '/modalities/toto'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1731 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
1732
429cc9d03610 test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 350
diff changeset
1733 # 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
1734 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
1735 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
1736
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1737 DoDelete(_REMOTE, '/modalities/toto')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1738 DoDelete(_REMOTE, '/modalities/tata')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1739 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/modalities/toto'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1740 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/modalities/tata'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1741
584
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
1742 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
1743 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
1744 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
1745
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
1746
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1747
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1748 def test_update_peers(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1749 # curl -X PUT http://localhost:8042/peers/toto -d '["http://localhost:8042/"]' -v
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1750 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
1751 self.assertRaises(Exception, lambda: DoDelete(_REMOTE, '/peers/toto'))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1752 DoPut(_REMOTE, '/peers/toto', [ 'http://localhost:8042/' ])
214
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1753 DoPut(_REMOTE, '/peers/tata', { 'Url': 'http://localhost:8042/',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1754 'Username': 'user',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1755 'Password' : 'pass',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1756 'RemoteSelf' : 'self' })
128
a9fdfcb696e6 added tests for ?expand in /peers and /modalities
amazy
parents: 127
diff changeset
1757 self.assertTrue('tata' in DoGet(_REMOTE, '/peers'))
a9fdfcb696e6 added tests for ?expand in /peers and /modalities
amazy
parents: 127
diff changeset
1758 peersReadback = DoGet(_REMOTE, '/peers?expand')
a9fdfcb696e6 added tests for ?expand in /peers and /modalities
amazy
parents: 127
diff changeset
1759 self.assertEqual('http://localhost:8042/', peersReadback['tata']['Url'])
a9fdfcb696e6 added tests for ?expand in /peers and /modalities
amazy
parents: 127
diff changeset
1760 self.assertEqual('user', peersReadback['tata']['Username'])
214
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1761
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1762 if IsOrthancVersionAbove(_REMOTE, 1, 5, 4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1763 self.assertEqual(None, peersReadback['tata']['Password']) # make sure no sensitive data is included
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1764 self.assertFalse(peersReadback['tata']['Pkcs11']) # make sure no sensitive data is included
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1765 self.assertEqual('self', peersReadback['tata']['RemoteSelf'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1766 else:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1767 self.assertFalse('Password' in peersReadback['tata']) # make sure no sensitive data is included
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1768 self.assertFalse('Pkcs11' in peersReadback['tata']) # make sure no sensitive data is included
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1769 self.assertFalse('RemoteSelf' in peersReadback['tata'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1770
128
a9fdfcb696e6 added tests for ?expand in /peers and /modalities
amazy
parents: 127
diff changeset
1771 self.assertFalse('CertificateFile' in peersReadback['tata']) # make sure no sensitive data is included
a9fdfcb696e6 added tests for ?expand in /peers and /modalities
amazy
parents: 127
diff changeset
1772 self.assertFalse('CertificateKeyFile' in peersReadback['tata']) # make sure no sensitive data is included
a9fdfcb696e6 added tests for ?expand in /peers and /modalities
amazy
parents: 127
diff changeset
1773 self.assertFalse('CertificateKeyPassword' in peersReadback['tata']) # make sure no sensitive data is included
214
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 213
diff changeset
1774
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1775 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/peers/toto', [ 'http://localhost:8042/', 'a' ]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1776 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/peers/toto', [ 'http://localhost:8042/', 'a', 'b', 'c' ]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1777 self.assertTrue('store' in DoGet(_REMOTE, '/peers/toto'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1778 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
1779
429cc9d03610 test access to the configuration of one single peer or modality
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 350
diff changeset
1780 # 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
1781 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
1782 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
1783
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1784 DoDelete(_REMOTE, '/peers/toto')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1785 DoDelete(_REMOTE, '/peers/tata')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1786 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/peers/toto'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1787 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/peers/tata'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1788
584
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
1789 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
1790 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
1791 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
1792
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
1793
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1794
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1795 def test_mesterhazy_modification(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1796 # When I modify a series ( eg. curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1797 # http://localhost:8042/series/uidhere/modify -X POST -d
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1798 # '{"Replace":{"SeriesDate":"19990101"}}' ) the modified
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1799 # series is added to a new Study, instead of the existing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1800 # Study. Fixed in Orthanc 0.7.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1801
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1802 u = UploadInstance(_REMOTE, 'DummyCT.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1803 study = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1804 series = 'f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1805
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1806 modified = DoPost(_REMOTE, '/series/%s/modify' % series,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1807 json.dumps({ "Replace" : { "SeriesDate" : "19990101" }}))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1808
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1809 self.assertEqual(study, DoGet(_REMOTE, '/series/%s' % modified['ID']) ['ParentStudy'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1810
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1811
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1812 def test_create(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1813 i = DoPost(_REMOTE, '/tools/create-dicom',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1814 json.dumps({
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1815 'PatientName' : 'Jodogne',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1816 'Modality' : 'CT',
58
b5518378e23b fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 57
diff changeset
1817 'SOPClassUID' : '1.2.840.10008.5.1.4.1.1.1',
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1818 'PixelData' : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' # red dot in RGBA
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1819 }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1820
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1821 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1822 self.assertEqual('CT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i['ID']).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1823
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1824 png = GetImage(_REMOTE, '/instances/%s/preview' % i['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1825 self.assertEqual((5, 5), png.size)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1826
38
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
1827 j = DoGet(_REMOTE, i['Path'])
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
1828 self.assertEqual('Instance', j['Type'])
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
1829 self.assertEqual(j['ID'], i['ID'])
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
1830
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1831
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1832 def test_pilates(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1833 # "SCU failed error when accessing orthanc with osirix" by
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1834 # Pilates Agentur (Mar 10, 2014 at 9:33 PM)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1835 i = UploadInstance(_REMOTE, 'PilatesArgenturGEUltrasoundOsiriX.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1836 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1837 j = DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1838 self.assertEqual(1, len(DoGet(_LOCAL, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1839
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1840
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1841 def test_shared_tags(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1842 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1843 b = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1844 p = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1845
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1846 self.assertTrue('0010,0010' in DoGet(_REMOTE, '/patients/%s/shared-tags' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1847 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
1848 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
1849
5634ef96fcc5 testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 133
diff changeset
1850 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
1851 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
1852 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
1853
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1854 self.assertTrue('0008,1030' in DoGet(_REMOTE, '/patients/%s/shared-tags' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1855 self.assertTrue('StudyDescription' in DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1856 self.assertTrue('0008,103e' in DoGet(_REMOTE, '/patients/%s/shared-tags' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1857 self.assertTrue('SeriesDescription' in DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1858 self.assertFalse('0008,0018' in DoGet(_REMOTE, '/patients/%s/shared-tags' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1859 self.assertFalse('SOPInstanceUID' in DoGet(_REMOTE, '/patients/%s/shared-tags?simplify' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1860
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1861 self.assertTrue('0008,0018' in DoGet(_REMOTE, '/instances/%s/tags' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1862 self.assertTrue('SOPInstanceUID' in DoGet(_REMOTE, '/instances/%s/tags?simplify' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1863
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1864
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1865 def test_modules(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1866 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1867 p = DoGet(_REMOTE, '/patients')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1868 s = DoGet(_REMOTE, '/studies')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1869 t = DoGet(_REMOTE, '/series')[0]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1870
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1871 self.assertTrue('0010,0010' in DoGet(_REMOTE, '/patients/%s/module' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1872 self.assertTrue('PatientName' in DoGet(_REMOTE, '/patients/%s/module?simplify' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1873 self.assertTrue('0010,0010' in DoGet(_REMOTE, '/studies/%s/module-patient' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1874 self.assertTrue('PatientName' in DoGet(_REMOTE, '/studies/%s/module-patient?simplify' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1875 self.assertTrue('0008,1030' in DoGet(_REMOTE, '/studies/%s/module' % s))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1876 self.assertTrue('StudyDescription' in DoGet(_REMOTE, '/studies/%s/module?simplify' % s))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1877 self.assertTrue('0008,103e' in DoGet(_REMOTE, '/series/%s/module' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1878 self.assertTrue('SeriesDescription' in DoGet(_REMOTE, '/series/%s/module?simplify' % p))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1879 self.assertTrue('0008,0018' in DoGet(_REMOTE, '/instances/%s/module' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1880 self.assertTrue('SOPInstanceUID' in DoGet(_REMOTE, '/instances/%s/module?simplify' % a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1881
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1882
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1883 def test_auto_directory(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1884 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1885 self.assertTrue('now' in DoGet(_REMOTE, '/tools'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1886 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
1887 self.assertTrue('invalidate-tags' in DoGet(_REMOTE, '/tools'))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1888 self.assertTrue(len(DoGet(_REMOTE, '/tools/dicom-conformance')) > 1000)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1889 self.assertTrue('orthanctest' in DoGet(_REMOTE, '/modalities'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1890 self.assertTrue('echo' in DoGet(_REMOTE, '/modalities/orthanctest'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1891 self.assertTrue('find' in DoGet(_REMOTE, '/modalities/orthanctest'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1892 self.assertTrue('find-instance' in DoGet(_REMOTE, '/modalities/orthanctest'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1893 self.assertTrue('find-patient' in DoGet(_REMOTE, '/modalities/orthanctest'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1894 self.assertTrue('find-series' in DoGet(_REMOTE, '/modalities/orthanctest'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1895 self.assertTrue('find-study' in DoGet(_REMOTE, '/modalities/orthanctest'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1896 self.assertTrue('store' in DoGet(_REMOTE, '/modalities/orthanctest'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1897 self.assertTrue('store' in DoGet(_REMOTE, '/peers/peer'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1898 self.assertTrue('matlab' in DoGet(_REMOTE, '/instances/%s/frames/0' % a))
79
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
1899 self.assertTrue('raw' in DoGet(_REMOTE, '/instances/%s/frames/0' % a))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1900 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/tools/nope'))
28
156c7ae164b5 new test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 27
diff changeset
1901 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/nope'))
156c7ae164b5 new test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 27
diff changeset
1902 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/nope/nope.html'))
156c7ae164b5 new test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 27
diff changeset
1903 self.assertEqual(404, DoGetRaw(_REMOTE, '/nope')[0].status)
156c7ae164b5 new test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 27
diff changeset
1904 self.assertEqual(404, DoGetRaw(_REMOTE, '/nope/nope.html')[0].status)
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1905
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1906
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1907 def test_echo(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1908 DoPost(_REMOTE, '/modalities/orthanctest/echo')
359
8b476a383999 test empty body in /modalities/.../echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
1909 DoPost(_REMOTE, '/modalities/orthanctest/echo', '{}')
8b476a383999 test empty body in /modalities/.../echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
1910
8b476a383999 test empty body in /modalities/.../echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
1911 # 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
1912 DoPost(_REMOTE, '/modalities/orthanctest/echo', '')
352
3d406c0261fc test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 351
diff changeset
1913 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/modalities/nope/echo'))
3d406c0261fc test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 351
diff changeset
1914
3d406c0261fc test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 351
diff changeset
1915 # New in Orthanc 1.8.1
3d406c0261fc test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 351
diff changeset
1916 DoPost(_REMOTE, '/tools/dicom-echo', [
355
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 354
diff changeset
1917 _REMOTE['DicomAet'], _REMOTE['Server'], _REMOTE['DicomPort'] ])
352
3d406c0261fc test /tools/dicom-echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 351
diff changeset
1918 DoPost(_REMOTE, '/tools/dicom-echo', DoGet(_REMOTE, '/modalities/orthanctest/configuration'))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1919
353
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1920 # Use the 'CheckFind' new option in Orthanc 1.8.1
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1921 DoPost(_REMOTE, '/modalities/self/echo', { 'CheckFind' : True })
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1922 DoPost(_REMOTE, '/tools/dicom-echo', {
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1923 'AET' : _REMOTE['DicomAet'],
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1924 'Host' : _REMOTE['Server'],
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1925 'Port' : _REMOTE['DicomPort'],
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1926 'CheckFind' : True
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1927 })
49f2943544eb CheckFind on echo
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 352
diff changeset
1928
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1929
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1930 def test_xml(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1931 json = DoGet(_REMOTE, '/tools', headers = { 'accept' : 'application/json' })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1932 xml = minidom.parseString(DoGet(_REMOTE, '/tools', headers = { 'accept' : 'application/xml' }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1933 items = xml.getElementsByTagName('root')[0].getElementsByTagName('item')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1934 self.assertEqual(len(items), len(json))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1935
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1936 self.assertTrue('dicom-conformance' in json)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1937
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1938 ok = False
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1939 for i in items:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1940 if i.childNodes[0].data == 'dicom-conformance':
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1941 ok = True
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1942 self.assertTrue(ok)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1943
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1944
46
85b2e36ed392 explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 45
diff changeset
1945 def test_googlecode_issue_16(self):
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1946 i = UploadInstance(_REMOTE, 'Issue16.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1947 t = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)['FrameIncrementPointer']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1948 self.assertEqual('0018,1063', t)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1949
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1950
46
85b2e36ed392 explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 45
diff changeset
1951 def test_googlecode_issue_22(self):
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1952 s = UploadInstance(_REMOTE, 'Issue22.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1953 a = [
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1954 "f804691f62197040438f4627c6b994f1", # Frame 0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1955 "c69eee9a51eea3e8611e82e578897254",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1956 "315666be83e2d0111c77bc0996d84901",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1957 "3e27aa959d911172c48a1436443c72b1",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1958 "958642c9e7e9d232d3869faff546058c",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1959 "5e7ea8e3e4230cae707d143481355c59",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1960 "eda37f83558d858a596175aed8b2ad47",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1961 "486713bd2895c4ecbe0e97715ac7f80a",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1962 "091ef729eb169e67da8a0faa9631f9a8",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1963 "5aa2b8c7ffe0a483efaa8e12417686ca",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1964 "e2f39e85896fe58876654b94cd0b5013",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1965 "6fd2129e4950abbe1be053bc814d5da8",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1966 "c3331a8ba7a757f3d423735ab7fa81f9",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1967 "746f808582156734dd6b6fdfd3a0b72c",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1968 "8075ea2b227a70c60ea6b7b75a6bb190",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1969 "806b8b3e300c615099c11a5ec23465aa",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1970 "7c836aa298ba6eef96434579af631a11",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1971 "a0357dc9f4f72d73a885c33d7c287446",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1972 "f25ba3be1cc7d7fad95706adc199ea7d",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1973 "8b114c526b8cbed6cad8a3248b7b480c",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1974 "44e6670f127e612a2b4aa60a0d207698",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1975 "b8945f90fe02facf2ace24ca1ecbe0a5",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1976 "95c796c2fa8f59018b15cf2987b1f79b",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1977 "ce0a51ab30224205b44920221dc27351", # Frame 23
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1978 ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1979
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1980 self.assertEqual(24, len(DoGet(_REMOTE, '/instances/%s/frames' % s)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1981 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/24/preview' % s))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1982
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1983 for i in range(len(a)):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1984 self.assertEqual(a[i], ComputeMD5(DoGet(_REMOTE, '/instances/%s/frames/%d/preview' % (s, i))))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1985
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1986
46
85b2e36ed392 explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 45
diff changeset
1987 def test_googlecode_issue_19(self):
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
1988 # This is an image with "YBR_FULL" photometric interpretation, it is not supported by Orthanc
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1989 # gdcmconv -i /home/jodogne/DICOM/GdcmDatabase/US_DataSet/HDI5000_US/3EAF5E01 -w -o Issue19.dcm
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1990
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1991 a = UploadInstance(_REMOTE, 'Issue19.dcm')['ID']
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 302
diff changeset
1992 if not HasGdcmPlugin(_REMOTE):
299
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
1993 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/941ad3c8-05d05b88-560459f9-0eae0e20-6cddd533/preview'))
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1994
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1995
46
85b2e36ed392 explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 45
diff changeset
1996 def test_googlecode_issue_37(self):
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1997 # Same test for issues 35 and 37. Fixed in Orthanc 0.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1998 u = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
1999
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
2000 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
2001 'CaseSensitive' : True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
2002 'Query' : { 'StationName' : 'SMR4-MP3' }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 12
diff changeset
2003 self.assertEqual(1, len(a))
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2004
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2005
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2006 def test_rest_find(self):
548
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2007 # Upload 12 instances
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2008 for i in range(3):
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2009 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2010 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2011 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2012 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2013
548
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2014
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2015 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2016 'CaseSensitive' : True,
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2017 'Query' : {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2018 'PatientName' : '*NE*',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2019 'StudyDate': '20080819'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2020 }})
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2021 self.assertEqual(1, len(a))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2022
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2023 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2024 'CaseSensitive' : True,
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2025 'Query' : {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2026 'PatientName' : '*NE*',
555
739cad709a8c skipping DicomWeb test not implemented yet
Alain Mazy <am@osimis.io>
parents: 548
diff changeset
2027 'PatientBirthDate': '20080101-20081231',
548
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2028 'PatientSex': '0000'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2029 }})
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2030 self.assertEqual(1, len(a))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2031
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2032 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2033 'CaseSensitive' : True,
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2034 'Query' : {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2035 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2036 }})
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2037 self.assertEqual(2, len(a))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2038
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2039 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2040 'CaseSensitive' : True,
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2041 'Query' : {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2042 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2043 'SeriesInstanceUID': '1.3.46.670589.11.17521.5.0.3124.2008081908564160709'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2044 }})
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2045 self.assertEqual(3, len(a))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2046
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2047 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2048 'CaseSensitive' : True,
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2049 'Query' : {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2050 'StudyDate' : '20080818-20080820',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2051 'Modality': 'MR'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2052 }})
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2053 self.assertEqual(2, len(a))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2054
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2055 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2056 'CaseSensitive' : True,
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2057 'Query' : {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2058 'StudyDate' : '20080818-',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2059 'ModalitiesInStudy': 'MR'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2060 }})
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2061 self.assertEqual(1, len(a))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2062
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2063
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2064 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2065 'CaseSensitive' : False,
194
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2066 'Query' : { 'PatientName' : 'BRAINIX' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2067 self.assertEqual(1, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2068
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2069 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2070 'CaseSensitive' : False,
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2071 'Query' : { 'PatientName' : 'BRAINIX\\KNEE\\NOPE' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2072 self.assertEqual(2, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2073
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2074 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2075 'CaseSensitive' : False,
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2076 'Query' : { 'PatientName' : '*n*' }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2077 self.assertEqual(2, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2078
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2079 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2080 'CaseSensitive' : True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2081 'Query' : { 'PatientName' : '*n*' }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2082 self.assertEqual(0, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2083
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2084 a = DoPost(_REMOTE, '/tools/find', { 'Expand' : True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2085 'Level' : 'Patient',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2086 'CaseSensitive' : False,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2087 'Query' : { 'PatientName' : '*ne*' }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2088 self.assertEqual(1, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2089 self.assertEqual('20080822', a[0]['MainDicomTags']['PatientBirthDate'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2090
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2091 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2092 'CaseSensitive' : True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2093 'Query' : { 'PatientName' : '*ne*' }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2094 self.assertEqual(0, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2095
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2096 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2097 'CaseSensitive' : True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2098 'Query' : { 'PatientName' : '*NE*' }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2099 self.assertEqual(1, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2100
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2101 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2102 'CaseSensitive' : True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2103 'Query' : { 'PatientName' : '*NE*' }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2104 self.assertEqual(2, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2105
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2106 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2107 'CaseSensitive' : True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2108 'Query' : { 'PatientName' : '*NE*' }})
548
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2109 self.assertEqual(6, len(a))
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2110
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2111 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', 'Query' : { }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2112 self.assertEqual(2, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2114 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', 'Query' : { }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2115 self.assertEqual(2, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2116
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2117 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', 'Query' : { }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2118 self.assertEqual(4, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2119
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2120 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', 'Query' : { }})
548
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
2121 self.assertEqual(12, len(a))
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2122
194
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2123 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2124 'Expand' : True,
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2125 'Query' : { 'StudyDate' : '20061201-20061201' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2126 self.assertEqual(1, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2127 self.assertEqual('BRAINIX', a[0]['PatientMainDicomTags']['PatientName'])
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 'Expand' : True,
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2131 'Query' : { 'StudyDate' : '20061201-20091201' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2132 self.assertEqual(2, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2133 for i in range(2):
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2134 self.assertTrue(a[i]['PatientMainDicomTags']['PatientName'] in ['BRAINIX', 'KNEE'])
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2135
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2136 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2137 'Query' : { 'StudyDate' : '20061202-20061202' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2138 self.assertEqual(0, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2139
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2140 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2141 'Expand' : True,
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2142 'Query' : { 'StudyDate' : '-20061201' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2143 self.assertEqual(1, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2144 self.assertEqual('BRAINIX', a[0]['PatientMainDicomTags']['PatientName'])
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2145
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2146 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2147 'Expand' : True,
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2148 'Query' : { 'StudyDate' : '-20051201' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2149 self.assertEqual(0, len(a))
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' : '20061201-' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2154 self.assertEqual(2, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2155 for i in range(2):
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2156 self.assertTrue(a[i]['PatientMainDicomTags']['PatientName'] in ['BRAINIX', 'KNEE'])
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2157
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2158 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2159 'Expand' : True,
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2160 'Query' : { 'StudyDate' : '20061202-' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2161 self.assertEqual(1, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2162 self.assertEqual('KNEE', a[0]['PatientMainDicomTags']['PatientName'])
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2163
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2164 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2165 'Expand' : True,
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2166 'Query' : { 'StudyDate' : '20080819-' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2167 self.assertEqual(1, len(a))
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2168 self.assertEqual('KNEE', a[0]['PatientMainDicomTags']['PatientName'])
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2169
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2170 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2171 'Expand' : True,
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2172 'Query' : { 'StudyDate' : '20080820-' }})
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2173 self.assertEqual(0, len(a))
666
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2174
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2175 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2176 'Expand' : True,
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2177 'Query' : { 'PatientPosition' : 'HFS' }})
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2178 self.assertEqual(2, len(a))
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2179
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2180 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2181 'Expand' : False,
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2182 'Query' : { 'PatientPosition' : 'HFS' }})
acd22dd27e30 extended test_rest_find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 665
diff changeset
2183 self.assertEqual(2, len(a))
194
9f7ae64c0fda more tests about find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
2184
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2185
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2186 def test_rest_query_retrieve(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2187 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2188
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2189 # Upload 8 instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2190 for i in range(2):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2191 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2192 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2193 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2194 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2196 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2197 for p in DoGet(_REMOTE, '/patients'):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2198 DoPost(_REMOTE, '/modalities/orthanctest/store', p)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2199 DoDelete(_REMOTE, '/patients/%s' % p)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2201 for q in DoGet(_REMOTE, '/queries'):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2202 DoDelete(_REMOTE, '/queries/%s' % q)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2203
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2204 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2205 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
2206
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 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
2208 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
2209 '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
2210 '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
2211 '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
2212 }})['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
2213 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
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 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
2216 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
2217 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
2218 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
2219 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
2220 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
2221 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
2222 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
2223
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 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
2225 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
2226 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
2227 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
2228 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
2229 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
2230
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 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
2232
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 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
2234 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
2235 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
2236
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 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
2238 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
2239 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
2240
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 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
2242 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
2243 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
2244 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
2245 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
2246 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
2247
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
2248 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
2249 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
2250 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
2251 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
2252 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
2253
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
2254 # 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
2255 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
2256 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
2257 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
2258 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
2259 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
2260 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
2261
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
2262 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
2263 self.assertEqual(0, len(DoGet(_REMOTE, '/queries')))
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2264
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2265
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2266 def test_parent(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2267 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2268 patient = '6816cb19-844d5aee-85245eba-28e841e6-2414fae2'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2269 study = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2270 series = 'f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2271 instance = '66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d'
107
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
2272 self.assertEqual(instance, u)
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2273
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2274 a = DoGet(_REMOTE, '/studies/%s/patient' % study)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2275 self.assertEqual('Patient', a['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2276 self.assertEqual(patient, a['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2277
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2278 a = DoGet(_REMOTE, '/series/%s/patient' % series)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2279 self.assertEqual('Patient', a['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2280 self.assertEqual(patient, a['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2281
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2282 a = DoGet(_REMOTE, '/series/%s/study' % series)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2283 self.assertEqual('Study', a['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2284 self.assertEqual(study, a['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2285
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2286 a = DoGet(_REMOTE, '/instances/%s/patient' % instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2287 self.assertEqual('Patient', a['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2288 self.assertEqual(patient, a['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2289
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2290 a = DoGet(_REMOTE, '/instances/%s/study' % instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2291 self.assertEqual('Study', a['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2292 self.assertEqual(study, a['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2293
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2294 a = DoGet(_REMOTE, '/instances/%s/series' % instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2295 self.assertEqual('Series', a['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2296 self.assertEqual(series, a['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2297
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2298
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2299 def test_shanon(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2300 def Anonymize(instance, replacements = {}):
119
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
2301 return DoPost(_REMOTE, '/instances/%s/anonymize' % instance, {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
2302 'Replace' : replacements,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
2303 'Force' : True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
2304 }, 'application/json')
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2305
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2306 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2307 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2308 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2309
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2310 tags = [ 'PatientID', 'StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID', 'DeidentificationMethod' ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2311 ids = [ 'ozp00SjY2xG',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2312 '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2313 '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2314 '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2315
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2316 a = ExtractDicomTags(Anonymize(u), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2317 for i in range(4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2318 self.assertNotEqual(ids[i], a[i])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2319 self.assertTrue(a[4].startswith('Orthanc'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2320
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2321 a = ExtractDicomTags(Anonymize(u, { 'PatientName' : 'toto' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2322 for i in range(4):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2323 self.assertNotEqual(ids[i], a[i])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2324 self.assertFalse(a[4].startswith('Orthanc'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2325
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2326 a = ExtractDicomTags(Anonymize(u, { 'SOPInstanceUID' : 'instance' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2327 self.assertEqual('instance', a[3])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2328 self.assertFalse(a[4].startswith('Orthanc'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2329
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2330 a = ExtractDicomTags(Anonymize(u, { 'SeriesInstanceUID' : 'series' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2331 self.assertEqual('series', a[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2332 self.assertFalse(a[4].startswith('Orthanc'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2333
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2334 a = ExtractDicomTags(Anonymize(u, { 'StudyInstanceUID' : 'study' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2335 self.assertEqual('study', a[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2336 self.assertFalse(a[4].startswith('Orthanc'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2337
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2338 a = ExtractDicomTags(Anonymize(u, { 'PatientID' : 'patient' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2339 self.assertEqual('patient', a[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2340 self.assertFalse(a[4].startswith('Orthanc'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2341
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2342 a = ExtractDicomTags(Anonymize(u, { 'PatientID' : 'patient',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2343 'StudyInstanceUID' : 'study',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2344 'SeriesInstanceUID' : 'series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2345 'SOPInstanceUID' : 'instance' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2346 self.assertEqual('patient', a[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2347 self.assertFalse(a[4].startswith('Orthanc'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2348
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2349 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2350
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2351
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2352 def test_shanon_2(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2353 def Modify(instance, replacements = {}):
119
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
2354 return DoPost(_REMOTE, '/instances/%s/modify' % instance, {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
2355 'Replace' : replacements,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
2356 'Force': True,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
2357 }, 'application/json')
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2358
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2359 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2360 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2361 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2362
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2363 tags = [ 'PatientID', 'StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID', 'DeidentificationMethod' ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2364 ids = [ 'ozp00SjY2xG',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2365 '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2366 '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2367 '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2368
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2369 a = ExtractDicomTags(Modify(u), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2370 self.assertEqual(ids[0], a[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2371 self.assertEqual(ids[1], a[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2372 self.assertEqual(ids[2], a[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2373 self.assertNotEqual(ids[3], a[3])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2374 self.assertEqual(0, len(a[4]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2375
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2376 a = ExtractDicomTags(Modify(u, { 'SOPInstanceUID' : 'instance' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2377 self.assertEqual(ids[0], a[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2378 self.assertEqual(ids[1], a[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2379 self.assertEqual(ids[2], a[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2380 self.assertEqual('instance', a[3])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2381
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2382 a = ExtractDicomTags(Modify(u, { 'SeriesInstanceUID' : 'series' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2383 self.assertEqual(ids[0], a[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2384 self.assertEqual(ids[1], a[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2385 self.assertEqual('series', a[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2386 self.assertNotEqual(ids[3], a[3])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2387
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2388 a = ExtractDicomTags(Modify(u, { 'StudyInstanceUID' : 'study' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2389 self.assertEqual(ids[0], a[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2390 self.assertEqual('study', a[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2391 self.assertNotEqual(ids[2], a[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2392 self.assertNotEqual(ids[3], a[3])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2393
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2394 a = ExtractDicomTags(Modify(u, { 'PatientID' : 'patient' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2395 self.assertEqual('patient', a[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2396 self.assertNotEqual(ids[1], a[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2397 self.assertNotEqual(ids[2], a[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2398 self.assertNotEqual(ids[3], a[3])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2399
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2400 a = ExtractDicomTags(Modify(u, { 'PatientID' : 'patient',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2401 'StudyInstanceUID' : 'study',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2402 'SeriesInstanceUID' : 'series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2403 'SOPInstanceUID' : 'instance' }), tags)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2404 self.assertEqual('patient', a[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2405 self.assertEqual('study', a[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2406 self.assertEqual('series', a[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2407 self.assertEqual('instance', a[3])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2408
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2409 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2410
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2411
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2412 def test_instances_tags(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2413 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2414 b = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2415 #a = UploadInstance(_REMOTE, 'Cardiac/MR.X.1.2.276.0.7230010.3.1.4.2831157719.2256.1336386937.676343')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2416 #b = UploadInstance(_REMOTE, 'Cardiac/MR.X.1.2.276.0.7230010.3.1.4.2831157719.2256.1336386925.676329')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2417
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2418 i = DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % DoGet(_REMOTE, '/patients')[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2419 self.assertEqual(2, len(i))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2420 self.assertEqual('887', i[i.keys()[0]]['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2421 self.assertEqual('887', i[i.keys()[1]]['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2422
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2423 i = DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % DoGet(_REMOTE, '/studies')[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2424 self.assertEqual(2, len(i))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2425 self.assertEqual('887', i[i.keys()[0]]['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2426 self.assertEqual('887', i[i.keys()[1]]['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2427
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2428 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2429 i = DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % DoGet(_REMOTE, '/series')[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2430 self.assertEqual(1, len(i))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2431 self.assertEqual('887', i[i.keys()[0]]['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2432
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2433 i = DoGet(_REMOTE, '/patients/%s/instances-tags?simplify' % DoGet(_REMOTE, '/series')[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2434 self.assertEqual(1, len(i))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2435 self.assertEqual('887', i[i.keys()[0]]['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2436
136
5634ef96fcc5 testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 133
diff changeset
2437 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
2438 self.assertEqual(1, len(i))
5634ef96fcc5 testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 133
diff changeset
2439 self.assertEqual('887', i[i.keys()[0]]['0010,0020'])
5634ef96fcc5 testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 133
diff changeset
2440
14
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2441
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2442 def test_lookup(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2443 a = DoPost(_REMOTE, '/tools/lookup', 'ozp00SjY2xG')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2444 self.assertEqual(0, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2445
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2446 UploadInstance(_REMOTE, 'DummyCT.dcm')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2447
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2448 a = DoPost(_REMOTE, '/tools/lookup', 'ozp00SjY2xG')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2449 self.assertEqual(1, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2450 self.assertEqual('Patient', a[0]['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2451 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', a[0]['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2452 self.assertEqual('/patients/%s' % a[0]['ID'], a[0]['Path'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2453
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2454 a = DoPost(_REMOTE, '/tools/lookup', '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2455 self.assertEqual(1, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2456 self.assertEqual('Study', a[0]['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2457 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', a[0]['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2458 self.assertEqual('/studies/%s' % a[0]['ID'], a[0]['Path'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2459
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2460 a = DoPost(_REMOTE, '/tools/lookup', '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2461 self.assertEqual(1, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2462 self.assertEqual('Series', a[0]['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2463 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', a[0]['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2464 self.assertEqual('/series/%s' % a[0]['ID'], a[0]['Path'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2465
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2466 a = DoPost(_REMOTE, '/tools/lookup', '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2467 self.assertEqual(1, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2468 self.assertEqual('Instance', a[0]['Type'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2469 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', a[0]['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2470 self.assertEqual('/instances/%s' % a[0]['ID'], a[0]['Path'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2471
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2472 DropOrthanc(_REMOTE)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2473 a = DoPost(_REMOTE, '/tools/lookup', '3113719P')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2474 self.assertEqual(0, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 13
diff changeset
2475
15
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2476
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2477 def test_autorouting(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2478 knee1 = 'Knee/T1/IM-0001-0001.dcm'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2479 knee2 = 'Knee/T2/IM-0001-0002.dcm'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2480 other = 'Brainix/Flair/IM-0001-0001.dcm'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2481
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2482 # Check that this version is >= 0.8.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2483 self.assertTrue(IsDefinedInLua(_REMOTE, '_InitializeJob'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2484 self.assertTrue('orthanctest' in DoGet(_REMOTE, '/modalities'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2485
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2486 UploadInstance(_REMOTE, knee1)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2487 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2488
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2489 DropOrthanc(_REMOTE)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2490 DropOrthanc(_LOCAL)
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
2491 InstallLuaScriptFromPath(_REMOTE, 'Lua/Autorouting.lua')
15
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2492 UploadInstance(_REMOTE, knee1)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2493 UploadInstance(_REMOTE, knee2)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2494 UploadInstance(_REMOTE, other)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2495 WaitEmpty(_REMOTE)
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
2496 UninstallLuaCallbacks(_REMOTE)
15
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2497 self.assertEqual(3, len(DoGet(_LOCAL, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2498
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2499 DropOrthanc(_REMOTE)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2500 DropOrthanc(_LOCAL)
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
2501 InstallLuaScriptFromPath(_REMOTE, 'Lua/AutoroutingConditional.lua')
15
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2502 UploadInstance(_REMOTE, knee1)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2503 UploadInstance(_REMOTE, knee2)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2504 UploadInstance(_REMOTE, other)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2505 WaitEmpty(_REMOTE)
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
2506 UninstallLuaCallbacks(_REMOTE)
15
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2507 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2508
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2509 DropOrthanc(_REMOTE)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2510 DropOrthanc(_LOCAL)
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
2511 InstallLuaScriptFromPath(_REMOTE, 'Lua/AutoroutingModification.lua')
15
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2512 UploadInstance(_REMOTE, knee1)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2513 WaitEmpty(_REMOTE)
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
2514 UninstallLuaCallbacks(_REMOTE)
15
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2515 i = DoGet(_LOCAL, '/instances')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2516 self.assertEqual(1, len(i))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2517
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2518 with tempfile.NamedTemporaryFile(delete = True) as f:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2519 f.write(DoGet(_LOCAL, '/instances/%s/file' % i[0]))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2520 f.flush()
45
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 44
diff changeset
2521 routed = subprocess.check_output([ FindExecutable('dcm2xml'), f.name ])
15
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2522 self.assertEqual('My Medical Device', re.search('"StationName">(.*?)<', routed).group(1).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2523 self.assertEqual(None, re.search('"MilitaryRank"', routed))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 14
diff changeset
2524 self.assertEqual(None, re.search('"0051,0010"', routed)) # A private tag
17
7c8500991a12 karsten
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 15
diff changeset
2525
7c8500991a12 karsten
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 15
diff changeset
2526
7c8500991a12 karsten
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 15
diff changeset
2527 def test_storescu_rf(self):
7c8500991a12 karsten
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 15
diff changeset
2528 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID']
7c8500991a12 karsten
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 15
diff changeset
2529 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
7c8500991a12 karsten
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 15
diff changeset
2530 j = DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain')
7c8500991a12 karsten
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 15
diff changeset
2531 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
18
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2532
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2533
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2534 def test_anonymize_instance(self):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2535 def AnonymizeAndUpload(instanceId, parameters):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2536 return DoPost(_REMOTE, '/instances', DoPost(_REMOTE, '/instances/%s/anonymize' % instanceId, parameters,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2537 'application/json'), 'application/dicom')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2538
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2539 def ModifyAndUpload(instanceId, parameters):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2540 return DoPost(_REMOTE, '/instances', DoPost(_REMOTE, '/instances/%s/modify' % instanceId, parameters,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2541 'application/json'), 'application/dicom')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2542
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2543 a = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2544 s1 = DoGet(_REMOTE, '/instances/%s/content/PatientName' % a)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2545 s2 = DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % a) # Some private tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2546 s3 = DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % a)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2547 s4 = DoGet(_REMOTE, '/instances/%s/content/SeriesDescription' % a)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2548 s5 = DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % a)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2549
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2550 b = AnonymizeAndUpload(a, '{}')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2551 self.assertNotEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2552 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2553
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2554 # Keep private tag (only OK since Orthanc 0.8.0)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2555 b = AnonymizeAndUpload(a, '{"Keep":["00e1-10c2"]}')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2556 self.assertNotEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2557 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2558
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2559 b = AnonymizeAndUpload(a, '{"Keep":["00e1,10c2","PatientName"]}')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2560 self.assertEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2561 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2562
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2563 b = AnonymizeAndUpload(a, '{"Keep":["PatientName"],"Replace":{"00e1,10c2":"Hello"}}')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2564 self.assertEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2565 self.assertTrue(DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b).startswith('Hello'))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2566
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2567 # Examples from the Wiki
118
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
2568 b = AnonymizeAndUpload(a, '{"Replace":{"PatientName":"hello","0010-0020":"world"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": true,"Force":true}')
18
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2569 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2570 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2571 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2572 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2573 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2574 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2575 DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % a)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2576 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2577
118
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
2578 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"},"Remove":["InstitutionName"],"RemovePrivateTags": true,"Force":true}')
18
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2579 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2580 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2581 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2582 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2583 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2584 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2585
118
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
2586 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"},"Force":true}')
18
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2587 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2588 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2589 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1,10c2' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2590 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2591 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2592 self.assertEqual(s5, DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2593
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2594
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2595 # Test modify non-existing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2596 i = DoPost(_REMOTE, '/tools/create-dicom',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2597 json.dumps({
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2598 'PatientName' : 'Jodogne',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2599 'Modality' : 'CT',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2600 }))['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2601
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2602 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2603 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % i))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2604 self.assertEqual('CT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2605
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2606 b = ModifyAndUpload(i, '{"Replace":{"StudyDescription":"hello","Modality":"world"}}')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2607 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2608 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2609 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/Modality' % b).strip())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 17
diff changeset
2610
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2611
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2612 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
2613 # 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
2614 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
2615
468
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2616 def storescu(image, acceptUnknownSopClassUid, expectSuccess = True, retries = 1):
61
967d44407308 test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 60
diff changeset
2617 if acceptUnknownSopClassUid:
967d44407308 test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 60
diff changeset
2618 tmp = [ '-xf', GetDatabasePath('UnknownSopClassUid.cfg'), 'Default' ]
967d44407308 test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 60
diff changeset
2619 else:
967d44407308 test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 60
diff changeset
2620 tmp = [ '-xs' ]
967d44407308 test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 60
diff changeset
2621
468
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2622 while retries > 0:
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2623 retries -= 1
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2624 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
2625 try:
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2626 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
2627 [ _REMOTE['Server'], str(_REMOTE['DicomPort']),
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2628 GetDatabasePath(image) ],
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2629 stderr = FNULL)
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2630
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2631 if expectSuccess:
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2632 return
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2633 except subprocess.CalledProcessError as e:
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2634 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
2635 if not expectSuccess:
e1867aeb57e2 retries storescu if it succeeds while it should fail
Alain Mazy <am@osimis.io>
parents: 465
diff changeset
2636 raise e
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2637
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2638 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
2639
f673153f27a4 use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 372
diff changeset
2640 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
2641 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
2642 '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
2643 ])
f673153f27a4 use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 372
diff changeset
2644 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
2645 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
2646 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
2647 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
2648 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
2649 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
2650 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
2651 else:
f673153f27a4 use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 372
diff changeset
2652 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
2653
490
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents: 488
diff changeset
2654 # 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
2655 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
2656 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
2657 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
2658
f673153f27a4 use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 372
diff changeset
2659 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0):
374
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 373
diff changeset
2660 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
2661 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
2662 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
2663 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
2664 else:
f673153f27a4 use of /tools/unknown-sop-class-accepted and /tools/accepted-transfer-syntaxes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 372
diff changeset
2665 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
2666
62
f9c4ce95756f removal of useless information
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 61
diff changeset
2667 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
2668 storescu('Knix/Loc/IM-0001-0001.dcm', False)
967d44407308 test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 60
diff changeset
2669 storescu('UnknownSopClassUid.dcm', True)
967d44407308 test UnknownSopClassAccepted option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 60
diff changeset
2670 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2671
463
29aaa3df718f added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents: 457
diff changeset
2672 # set back normal verbosity
29aaa3df718f added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents: 457
diff changeset
2673 DoPut(_REMOTE, '/tools/log-level', 'default')
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2674
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2675 def test_storescu_jpeg(self):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2676 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports']))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2677
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2678 knixStudy = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0'
64
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
2679 i = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0001.dcm')['ID']
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
2680
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
2681 # This is JPEG lossless
136
5634ef96fcc5 testing "short" option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 133
diff changeset
2682 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header' % i)['0002,0010']['Value'])
64
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
2683 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
2684 self.assertEqual('1.2.840.10008.1.2.4.70', DoGet(_REMOTE, '/instances/%s/header?short' % i)['0002,0010'])
64
369e439cdfd6 test access header
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 63
diff changeset
2685
21
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2686 UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0002.dcm')
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2687 UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0003.dcm')
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2688
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2689 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
2690 b = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID']
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2691 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2692 DoPost(_REMOTE, '/modalities/orthanctest/store', [ knixStudy, a, b ])
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2693 self.assertEqual(5, len(DoGet(_LOCAL, '/instances')))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2694
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2695 self.assertEqual(3, len(DoGet(_REMOTE, '/exports')['Exports']))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2696
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2697 DropOrthanc(_REMOTE)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2698 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports']))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2699
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 def test_pixel_data(self):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2702 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
2703 color = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID']
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2704 phenix = UploadInstance(_REMOTE, 'Phenix/IM-0001-0001.dcm')['ID']
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2705
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2706 phenixSize = 358 * 512 * 2
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2707 colorSize = 1000 * 1000 * 3
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2708 jpegSize = 51918
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2709
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2710 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
2711 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
2712 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
2713
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2714 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
2715 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
2716
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2717 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
2718 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
2719
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2720
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2721 def test_decode_brainix(self):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2722 brainix = [
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2723 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID'], # (*)
384
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 383
diff changeset
2724 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
2725 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
2726 ]
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2727 h = '6fb11b932d535c2be04beabd99793ff8'
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2728 maxValue = 426.0
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 truth = Image.open(GetDatabasePath('Formats/Brainix.png'))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2731 for i in brainix:
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2732 self.AssertSameImages(truth.getdata(), '/instances/%s/image-int16' % i)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2733 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint16' % i)
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 truth2 = map(lambda x: min(255, x), truth.getdata())
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2736 for i in brainix:
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2737 self.AssertSameImages(truth2, '/instances/%s/image-uint8' % i)
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 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
2740 for i in brainix:
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2741 self.AssertSameImages(truth2, '/instances/%s/preview' % i)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2742
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2743 for i in brainix:
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2744 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
2745
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2746
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2747 def test_decode_color(self):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2748 imagej = UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')['ID']
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2749 color = UploadInstance(_REMOTE, 'ColorTestMalaterre.dcm')['ID']
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2750
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2751 for i in [ imagej, color ]:
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2752 for j in [ 'image-uint8', 'image-uint16', 'image-int16' ]:
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2753 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
2754
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2755 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
2756 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
2757
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2758 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
2759 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
2760
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2761
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2762 def test_decode_rf(self):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2763 rf = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID']
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2764 truth = Image.open(GetDatabasePath('Formats/KarstenHilbertRF.png'))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2765
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2766 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint8' % rf)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2767 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint16' % rf)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2768 self.AssertSameImages(truth.getdata(), '/instances/%s/image-int16' % rf)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2769 self.AssertSameImages(truth.getdata(), '/instances/%s/preview' % rf)
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 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
2772
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2773
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2774 def test_decode_multiframe(self):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2775 mf = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID']
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2776
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2777 # Test the first frame
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2778 truth = Image.open(GetDatabasePath('Formats/Multiframe0.png'))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2779 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint8' % mf)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2780 self.AssertSameImages(truth.getdata(), '/instances/%s/image-uint16' % mf)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2781 self.AssertSameImages(truth.getdata(), '/instances/%s/image-int16' % mf)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2782 self.AssertSameImages(truth.getdata(), '/instances/%s/preview' % mf)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2783 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
2784
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2785 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
2786
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2787 # Test the last frame
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2788 truth = Image.open(GetDatabasePath('Formats/Multiframe75.png'))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2789 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
2790
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2791
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2792 def test_decode_signed(self):
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2793 signed = UploadInstance(_REMOTE, 'SignedCT.dcm')['ID']
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2794 minValue = -2000
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2795 maxValue = 4042
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2796
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2797 truth = Image.open(GetDatabasePath('Formats/SignedCT.png'))
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2798 self.AssertSameImages(truth.getdata(), '/instances/%s/image-int16' % signed)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2799
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2800 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
2801 self.AssertSameImages(truth2, '/instances/%s/image-uint16' % signed)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2802
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2803 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
2804 self.AssertSameImages(truth3, '/instances/%s/image-uint8' % signed)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2805
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2806 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
2807 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
2808 self.AssertSameImages(tmp, '/instances/%s/preview' % signed)
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2809
2a29bcff60a7 tests of image decoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 18
diff changeset
2810 self.assertEqual('b57e6c872a3da50877c7da689b03a444', ComputeMD5(DoGet(_REMOTE, '/instances/%s/matlab' % signed)))
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2811
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2812
46
85b2e36ed392 explicit GoogleCode source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 45
diff changeset
2813 def test_googlecode_issue_32(self):
92
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2814 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/tools/default-encoding', 'nope'))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2815 self.assertEqual('Windows1251', DoPut(_REMOTE, '/tools/default-encoding', 'Windows1251'))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2816 self.assertEqual('Windows1251', DoGet(_REMOTE, '/tools/default-encoding'))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2817
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2818 f = UploadInstance(_REMOTE, 'Issue32.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2819 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % f)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2820 self.assertEqual(u'Рентгенография', tags['SeriesDescription'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2821 self.assertEqual(u'Таз', tags['BodyPartExamined'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2822 self.assertEqual(u'Прямая', tags['ViewPosition'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2823
92
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2824 # 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
2825 self.assertEqual('Latin1', DoPut(_REMOTE, '/tools/default-encoding', 'Latin1'))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2826
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2827 DoDelete(_REMOTE, '/instances/%s' % f)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2828 f = UploadInstance(_REMOTE, 'Issue32.dcm')['ID']
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2829 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % f)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2830 self.assertNotEqual(u'Рентгенография', tags['SeriesDescription'])
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2831
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
2832
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2833 def test_encodings(self):
23
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2834 # Latin-1 (ISO_IR 100)
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2835 brainix = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2836 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % brainix)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 21
diff changeset
2837 self.assertEqual(u'IRM cérébrale, neuro-crâne', tags['StudyDescription'])
23
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2838
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2839 # Latin-2 (ISO_IR 101)
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2840 a = UploadInstance(_REMOTE, 'MarekLatin2.dcm')['ID']
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2841 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % a)
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2842 # dcm2xml MarekLatin2.dcm | iconv -f latin2 -t utf-8 | xmllint --format -
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2843 self.assertEqual('Imię i Nazwisko osoby opisującej',
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2844 i['ContentSequence'][4]['ConceptNameCodeSequence'][0]['CodeMeaning'].encode('utf-8'))
30ecc857fa07 test latin-2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
2845
26
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 def test_storescu_custom_aet(self):
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2848 # 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
2849 # 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
2850 # in the REST API)."
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2851 # 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
2852
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2853 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2854
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2855 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2856 b = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm')
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2857 c = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0003.dcm')
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2858
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2859 j = DoPost(_REMOTE, '/modalities/orthanctest/store', {
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2860 'LocalAet' : 'YOP',
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2861 'Resources' : [ a['ID'], b['ID'] ]
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2862 })
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2863
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2864 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2865 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
2866
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2867 DropOrthanc(_LOCAL)
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2868 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2869
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2870 j = DoPost(_REMOTE, '/modalities/orthanctest/store', {
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2871 'Resources' : [ c['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
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2874 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2875 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
2876
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2877 DropOrthanc(_REMOTE)
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2878 DropOrthanc(_LOCAL)
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2879
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
2880 InstallLuaScriptFromPath(_REMOTE, 'Lua/AutoroutingChangeAet.lua')
26
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2881 DoPost(_REMOTE, '/tools/execute-script', 'aet = "HELLO"', 'application/lua')
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2882
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2883 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2884 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2885 WaitEmpty(_REMOTE)
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2886 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2887 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
2888
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2889 DoPost(_REMOTE, '/tools/execute-script', 'aet = nill', 'application/lua')
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2890 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm')
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2891 WaitEmpty(_REMOTE)
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2892 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
040f6ef1394a test_storescu_custom_aet
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 23
diff changeset
2893 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
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 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
2896 # 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
2897 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
2898 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
2899 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
2900 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
2901 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
2902
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(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
2904 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
2905 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
2906 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
2907
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.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
2909 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
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 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
2912 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
2913 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
2914 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
2915 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
2916 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
2917 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
2918 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
2919 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
2920 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
2921 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
2922 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
2923 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
2924 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
2925 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
2926
1047d7bc5210 test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 28
diff changeset
2927 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
2928 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
2929 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
2930 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
2931 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
2932 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
2933 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
2934
1047d7bc5210 test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 28
diff changeset
2935 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
2936 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
2937 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
2938
1047d7bc5210 test limit and since arguments while retrieving DICOM resources in the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 28
diff changeset
2939 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
2940 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
2941 self.assertTrue(instance in s)
36
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2942
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2943
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2944 def test_create_pdf(self):
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2945 # Upload 4 instances
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2946 brainixInstance = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2947 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2948 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2949 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2950
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2951 brainixPatient = '16738bc3-e47ed42a-43ce044c-a3414a45-cb069bd0'
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2952 brainixStudy = '27f7126f-4f66fb14-03f4081b-f9341db2-53925988'
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2953 brainixEpi = '2ac1316d-3e432022-62eabff2-c59f5475-9b1ac3f8'
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2954
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2955 with open(GetDatabasePath('HelloWorld.pdf'), 'rb') as f:
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2956 pdf = f.read()
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2957
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2958 i = DoPost(_REMOTE, '/tools/create-dicom',
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2959 json.dumps({
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2960 'Tags' : {
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2961 'PatientName' : 'Jodogne',
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2962 'Modality' : 'CT',
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2963 },
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2964 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf)
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2965 }))
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2966
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2967 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
2968 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
2969 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
2970 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
2971
446
9184e6cb215a allow custom value for "Modality" in /tools/create-dicom for PDF
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 445
diff changeset
2972 # 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
2973 # 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
2974 self.assertEqual('CT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i['ID']).strip())
36
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2975
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2976 b = DoGet(_REMOTE, '/instances/%s/content/0042-0011' % i['ID'])
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2977 self.assertEqual(len(b), len(pdf) + 1)
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2978 self.assertEqual(ComputeMD5(b), ComputeMD5(pdf + '\0'))
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2979
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2980 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/tools/create-dicom',
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2981 json.dumps({
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2982 'Parent' : brainixPatient,
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2983 'Tags' : {
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2984 'PatientName' : 'Jodogne',
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2985 }
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2986 })))
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2987
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2988 i = DoPost(_REMOTE, '/tools/create-dicom',
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2989 json.dumps({
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2990 'Parent' : brainixPatient,
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2991 'Tags' : { 'StudyDescription' : 'PDF^Patient' },
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2992 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf)
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2993 }))
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2994
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
2995 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
2996 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
2997 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
2998 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
2999 self.assertEqual('application/pdf', DoGet(_REMOTE, '/instances/%s/content/MIMETypeOfEncapsulatedDocument' % i['ID']).strip())
36
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3000
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3001 i = DoPost(_REMOTE, '/tools/create-dicom',
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3002 json.dumps({
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3003 'Parent' : brainixStudy,
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3004 'Tags' : { 'SeriesDescription' : 'PDF^Study' },
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3005 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf)
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3006 }))
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3007
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3008 self.assertEqual(brainixStudy, DoGet(_REMOTE, '/instances/%s/study' % i['ID'])['ID'])
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3009
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3010 i = DoPost(_REMOTE, '/tools/create-dicom',
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3011 json.dumps({
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3012 'Parent' : brainixEpi,
37
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 36
diff changeset
3013 'Tags' : { 'SpecificCharacterSet' : 'ISO_IR 13' },
36
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3014 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf)
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3015 }))
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3016
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3017 self.assertEqual(brainixEpi, DoGet(_REMOTE, '/instances/%s/series' % i['ID'])['ID'])
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3018
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3019 b = DoGet(_REMOTE, '/instances/%s/pdf' % i['ID'])
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3020 self.assertEqual(len(b), len(pdf))
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3021 self.assertEqual(ComputeMD5(b), ComputeMD5(pdf))
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3022
42ad759ef40a test PDF embedding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
3023 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/pdf' % brainixInstance))
38
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3024
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3025
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3026 def test_create_series(self):
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3027 i = DoPost(_REMOTE, '/tools/create-dicom',
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3028 json.dumps({
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3029 'Tags' : {
40
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3030 'SpecificCharacterSet' : 'ISO_IR 100',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3031 'PatientName' : 'Sébastien Jodogne',
38
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3032 'Modality' : 'CT',
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3033 },
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3034 'Content' : [
40
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3035 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3036 'Content': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==', # red dot in RGBA
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3037 'Tags' : { 'ImageComments' : 'Tutu' }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3038 },
38
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3039 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVQ4jZ2SWw3EIBREjwUsYAELa2EtoAULFUCyXAtroRZqoRbox254BdLC/DZnZjoXWJFgCDg8egW2CBEhEnDzyRk+Ecxz2KP/0AL8S99T+jQccAVs22qKwAuPuq0uyNg9cPLh3am+pe/dkHLZtqJHj6vXJrZ7nvzvxxgemXgUwnGfXqpee09mUwp8m022OYP6bLF7mVuVe0y/umxinsAXRd9z0k1ubWsAAAAASUVORK5CYII=',
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3040 ]
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3041 }))
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3042
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3043 s = DoGet(_REMOTE, i['Path'])
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3044 self.assertEqual('Series', s['Type'])
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3045 self.assertEqual(s['ID'], i['ID'])
d147e36c6d18 test_create_series
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 37
diff changeset
3046 self.assertEqual(2, len(s['Instances']))
39
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 38
diff changeset
3047 self.assertEqual(2, s['ExpectedNumberOfInstances'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 38
diff changeset
3048 self.assertEqual('Complete', s['Status'])
40
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3049
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3050 a = DoGet(_REMOTE, '/instances/%s/tags?simplify' % s['Instances'][0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3051 b = DoGet(_REMOTE, '/instances/%s/tags?simplify' % s['Instances'][1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3052 self.assertTrue('ImageComments' in a or 'ImageComments' in b)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3053 if 'ImageComments' in a:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3054 self.assertEqual('Tutu', a['ImageComments'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3055 else:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3056 self.assertEqual('Tutu', b['ImageComments'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3057
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3058 patient = DoGet(_REMOTE, '/instances/%s/patient' % s['Instances'][0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3059 self.assertEqual(patient['MainDicomTags']['PatientName'].encode('utf-8'),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 39
diff changeset
3060 'Sébastien Jodogne')
47
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3061
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3062
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3063 def test_create_binary(self):
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3064 binary = ''.join(map(chr, range(256)))
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3065 encoded = 'data:application/octet-stream;base64,' + base64.b64encode(binary)
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3066 tags = {
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3067 'PatientName' : 'Jodogne',
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3068 '8899-8899' : encoded
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3069 }
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3070
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3071 i = DoPost(_REMOTE, '/tools/create-dicom',
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3072 json.dumps({
266
b105bb2233c6 fix issue 140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 265
diff changeset
3073 'Tags' : tags,
b105bb2233c6 fix issue 140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 265
diff changeset
3074 'PrivateCreator' : 'TestBinary',
47
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3075 }))
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3076
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3077 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip())
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3078 self.assertEqual(binary, DoGet(_REMOTE, '/instances/%s/content/8899-8899' % i['ID']).strip())
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3079
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3080 i = DoPost(_REMOTE, '/tools/create-dicom',
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3081 json.dumps({
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3082 'InterpretBinaryTags' : False,
266
b105bb2233c6 fix issue 140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 265
diff changeset
3083 'Tags' : tags,
b105bb2233c6 fix issue 140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 265
diff changeset
3084 'PrivateCreator' : 'TestBinary',
47
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3085 }))
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3086
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3087 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip())
f610491f74c3 test_create_binary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 46
diff changeset
3088 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
3089
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 def test_patient_ids_collision(self):
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3092 # 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
3093 # same PatientID
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3094 for i in range(3):
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3095 UploadInstance(_REMOTE, 'PatientIdsCollision/Image%d.dcm' % (i + 1))
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3096
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3097 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3098 'Query' : { 'PatientName' : '*' }})
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3099 self.assertEqual(1, len(a))
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3100 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
3101
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3102 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3103 'CaseSensitive' : True,
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3104 'Query' : { 'PatientName' : 'FOO\\HELLO' }})
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3105 self.assertEqual(2, len(a))
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 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3108 'CaseSensitive' : False,
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3109 'Query' : { 'PatientName' : 'Foo' }})
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3110 self.assertEqual(1, len(a))
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3111 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
3112 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
3113 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
3114
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3115 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3116 'Query' : { 'PatientName' : '*' }})
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3117 self.assertEqual(3, len(a))
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3118 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
3119 self.assertTrue('FOO^SERIES' in d)
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3120 self.assertTrue('HELLO^SERIES' in d)
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3121 self.assertTrue('WORLD^SERIES' in d)
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3122
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3123 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
3124 self.assertEqual(1, len(set(d)))
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3125 self.assertEqual('COMMON', d[0])
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3126
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3127 for i in a:
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3128 d = DoGet(_REMOTE, '/studies/%s' % i) ['MainDicomTags']['StudyDescription']
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3129 p = DoGet(_REMOTE, '/studies/%s' % i) ['PatientMainDicomTags']['PatientName']
e4352463ff74 test_patient_ids_collision
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 47
diff changeset
3130 self.assertEqual('%s^SERIES' % p, d)
49
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3131
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3132
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3133 def test_bitbucket_issue_4(self):
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3134 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3135 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0002.dcm')
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3136 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0003.dcm')
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3137 UploadInstance(_REMOTE, 'Formats/Jpeg.dcm')
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3138 UploadInstance(_REMOTE, 'Formats/JpegLossless.dcm')
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3139 UploadInstance(_REMOTE, 'Formats/Rle.dcm')
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3140
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3141 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3142 self.assertEqual(6, len(DoGet(_REMOTE, '/instances')))
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3143
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3144 p = DoGet(_REMOTE, '/patients')
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3145 self.assertEqual(2, len(p))
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3146 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
3147 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
3148 self.assertEqual(3, len(i1))
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3149 self.assertEqual(3, len(i2))
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3150
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3151 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
3152
e7f9b8199545 test_bitbucket_issue_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 48
diff changeset
3153 self.assertEqual(6, len(DoGet(_LOCAL, '/instances')))
50
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3154
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3155
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3156 def test_create_sequence(self):
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3157 i = DoPost(_REMOTE, '/tools/create-dicom',
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3158 json.dumps({
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3159 'Tags' : {
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3160 'SpecificCharacterSet': 'ISO_IR 100', # Encode using Latin1
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3161 'PatientName': 'Jodogne^',
51
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3162 'ReferencedStudySequence': GenerateTestSequence(),
50
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3163 }
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3164 }))['ID']
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3165
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3166 self.assertEqual('Jodogne^', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i))
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3167 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
3168 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
3169 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
3170 self.assertEqual(u'Sébastien^'.encode('latin-1'),
8de63d56cf11 test_create_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
3171 DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/1/StudyDescription' % i))
51
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3172
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3173
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3174 def test_modify_sequence(self):
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3175 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID']
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3176 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
3177
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3178 j = DoPost(_REMOTE, '/instances/%s/modify' % i,
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3179 json.dumps({
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3180 "Replace" : {
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3181 "PatientName" : "hello",
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3182 'ReferencedStudySequence': GenerateTestSequence(),
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3183 },
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3184 }),
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3185 'application/json')
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3186 j = DoPost(_REMOTE, '/instances', j, 'application/dicom')['ID']
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3187 DoDelete(_REMOTE, '/instances/%s' % i)
264a20a0276d test_modify_sequence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 50
diff changeset
3188
52
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3189 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence' % j)))
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3190
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3191
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3192 def test_compression(self):
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3193 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3194
380
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3195 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
3196 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
3197 # 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
3198 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
3199 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
3200 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3201 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
3202 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
3203 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
3204
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3205 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
3206
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3207 # 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
3208 # 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
3209 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
3210 DoPost(_REMOTE, '/instances/%s/attachments/dicom/uncompress' % i)
52
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3211
380
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3212 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
3213 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
3214 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
3215 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
3216 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
3217 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
3218 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
3219
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3220 ops = DoGet(_REMOTE, '/instances/%s/attachments/dicom' % i)
52
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3221 self.assertTrue('compress' in ops)
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3222 self.assertTrue('uncompress' in ops)
7c08e542db23 test_compression
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 51
diff changeset
3223 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
3224 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
3225 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
3226
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3227 # Re-compress the attachment
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3228 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
3229 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
3230 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
3231 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
3232 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
3233 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
3234 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
3235 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
3236 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
3237 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
3238
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3239 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
3240 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
3241 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
3242 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
3243 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
3244 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
3245 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
3246 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
3247 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
3248 self.assertEqual(us, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']))
53
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3249
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3250
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3251 def test_ordered_slices(self):
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3252 i = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3253 s = DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3254 o = DoGet(_REMOTE, '/series/%s/ordered-slices' % s)
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3255 self.assertEqual('Sequence', o['Type'])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3256 self.assertEqual(1, len(o['Dicom']))
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3257 self.assertEqual('/instances/9e05eb0a-18b6268c-e0d36085-8ddab517-3b5aec02/file', o['Dicom'][0])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3258 self.assertEqual(76, len(o['Slices']))
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3259 for j in range(76):
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3260 self.assertEqual('/instances/9e05eb0a-18b6268c-e0d36085-8ddab517-3b5aec02/frames/%d' % j, o['Slices'][j])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3261
68
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3262 self.assertEqual(1, len(o['SlicesShort']))
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3263 self.assertEqual('9e05eb0a-18b6268c-e0d36085-8ddab517-3b5aec02', o['SlicesShort'][0][0])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3264 self.assertEqual(0, o['SlicesShort'][0][1])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3265 self.assertEqual(76, o['SlicesShort'][0][2])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3266
53
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3267 i = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3268 j = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0002.dcm')['ID']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3269 k = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0003.dcm')['ID']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3270 s = DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3271 o = DoGet(_REMOTE, '/series/%s/ordered-slices' % s)
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3272
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3273 self.assertEqual('Volume', o['Type'])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3274 self.assertEqual(3, len(o['Dicom']))
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3275 self.assertEqual(3, len(o['Slices']))
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3276 self.assertEqual('/instances/%s/file' % i, o['Dicom'][2])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3277 self.assertEqual('/instances/%s/file' % j, o['Dicom'][1])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3278 self.assertEqual('/instances/%s/file' % k, o['Dicom'][0])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3279 self.assertEqual('/instances/%s/frames/0' % i, o['Slices'][2])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3280 self.assertEqual('/instances/%s/frames/0' % j, o['Slices'][1])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3281 self.assertEqual('/instances/%s/frames/0' % k, o['Slices'][0])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3282
68
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3283 self.assertEqual(3, len(o['SlicesShort']))
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3284 self.assertEqual(k, o['SlicesShort'][0][0])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3285 self.assertEqual(0, o['SlicesShort'][0][1])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3286 self.assertEqual(1, o['SlicesShort'][0][2])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3287 self.assertEqual(j, o['SlicesShort'][1][0])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3288 self.assertEqual(0, o['SlicesShort'][1][1])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3289 self.assertEqual(1, o['SlicesShort'][1][2])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3290 self.assertEqual(i, o['SlicesShort'][2][0])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3291 self.assertEqual(0, o['SlicesShort'][2][1])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3292 self.assertEqual(1, o['SlicesShort'][2][2])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3293
53
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3294 i = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')['ID']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3295 j = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0002.dcm')['ID']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3296 s = DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3297 o = DoGet(_REMOTE, '/series/%s/ordered-slices' % s)
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3298
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3299 self.assertEqual('Sequence', o['Type'])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3300 self.assertEqual(2, len(o['Dicom']))
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3301 self.assertEqual(2, len(o['Slices']))
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3302 self.assertEqual('/instances/%s/file' % i, o['Dicom'][0])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3303 self.assertEqual('/instances/%s/file' % j, o['Dicom'][1])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3304 self.assertEqual('/instances/%s/frames/0' % i, o['Slices'][0])
e0d1ee04119f test_ordered_slices
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 52
diff changeset
3305 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
3306
68
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3307 self.assertEqual(2, len(o['SlicesShort']))
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3308 self.assertEqual(i, o['SlicesShort'][0][0])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3309 self.assertEqual(0, o['SlicesShort'][0][1])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3310 self.assertEqual(1, o['SlicesShort'][0][2])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3311 self.assertEqual(j, o['SlicesShort'][1][0])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3312 self.assertEqual(0, o['SlicesShort'][1][1])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3313 self.assertEqual(1, o['SlicesShort'][1][2])
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3314
a8d1a347a701 SlicesShort
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 67
diff changeset
3315
54
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3316
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3317 def test_incoming_movescu_accession(self):
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3318 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3319
137
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
3320 # No matching patient, so no job is created
54
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3321 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3322 CallMoveScu([ '--study', '-k', '0008,0052=STUDY', '-k', 'AccessionNumber=nope' ])
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3323 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3324 CallMoveScu([ '--study', '-k', '0008,0052=PATIENT', '-k', 'AccessionNumber=A10003245599' ])
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3325 self.assertEqual(0, len(DoGet(_LOCAL, '/patients')))
137
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
3326
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
3327 # 1 Matching patient, track the job
138
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
3328 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
3329 '--study',
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
3330 '-k', '0008,0052=STUDY',
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
3331 '-k', 'AccessionNumber=A10003245599'
0682740fcfcb cleanup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 137
diff changeset
3332 ])))
137
412d5f70447e testing asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
3333
54
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3334 self.assertEqual(1, len(DoGet(_LOCAL, '/patients')))
c5f8a6b0d85e test_incoming_movescu_accession
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 53
diff changeset
3335
55
a395fd51cc4f test_dicom_to_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 54
diff changeset
3336
a395fd51cc4f test_dicom_to_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 54
diff changeset
3337 def test_dicom_to_json(self):
a395fd51cc4f test_dicom_to_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 54
diff changeset
3338 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
3339 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
3340
cd3c7f70f139 test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
3341 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
3342 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
3343 self.assertTrue(CompareTags(t, json.loads(f.read()), [
123
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
3344 # Tags for compatibility with DCMTK 3.6.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
3345 'RETIRED_OtherPatientIDs',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
3346 'OtherPatientIDs',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
3347 'ACR_NEMA_2C_VariablePixelDataGroupLength',
80
8466dbfcb22b fix test against dcmtk 3.6.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 79
diff changeset
3348 ]))
55
a395fd51cc4f test_dicom_to_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 54
diff changeset
3349
a395fd51cc4f test_dicom_to_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 54
diff changeset
3350 t = DoGet(_REMOTE, '/instances/%s/tags' % i)
a395fd51cc4f test_dicom_to_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 54
diff changeset
3351 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
3352 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
3353 ]))
55
a395fd51cc4f test_dicom_to_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 54
diff changeset
3354
60
cd3c7f70f139 test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
3355 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
3356 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
3357 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
3358 ]))
60
cd3c7f70f139 test backward compatibility with Orthanc 0.9.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
3359
372
e9b03d8f3b78 fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 369
diff changeset
3360
e9b03d8f3b78 fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 369
diff changeset
3361 # 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
3362 # following command:
e9b03d8f3b78 fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 369
diff changeset
3363 # $ 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
3364 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
3365 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
3366 a = json.loads(f.read())
378
a4b8450a1158 fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
3367
a4b8450a1158 fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
3368 # 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
3369 # 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
3370 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
3371 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
3372 self.assertFalse('7fe1,1001' in t)
378
a4b8450a1158 fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
3373 del a['7fe1,0010']
a4b8450a1158 fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
3374 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
3375 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3376 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
3377 self.assertTrue('7fe1,1001' in t)
378
a4b8450a1158 fix test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
3378
65
09fc27e0899a patch for testing windows builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 64
diff changeset
3379 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
3380 tt = (json.dumps(t)
e9b03d8f3b78 fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 369
diff changeset
3381 .replace('2e+022', '2e+22')
e9b03d8f3b78 fix for DCMTK 3.6.6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 369
diff changeset
3382 # 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
3383 .replace('IllegalPrivatePixelSequence', 'Unknown Tag & Data'))
65
09fc27e0899a patch for testing windows builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 64
diff changeset
3384 self.assertEqual(aa, tt)
57
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3385
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3386
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3387 def test_batch_archive(self):
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3388 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3389 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm')
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3390 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3391 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0002.dcm')
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3392 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3393 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0002.dcm')
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3394 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3395 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm')
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3396
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3397 s = DoPost(_REMOTE, '/tools/create-archive', [ ])
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3398 z = zipfile.ZipFile(StringIO(s), "r")
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3399 self.assertEqual(0, len(z.namelist()))
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3400
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3401 # One patient
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3402 s = DoPost(_REMOTE, '/tools/create-archive', [ 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' ])
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3403 z = zipfile.ZipFile(StringIO(s), "r")
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3404 self.assertEqual(4, len(z.namelist()))
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3405
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3406 # One patient + twice its study + one series from other patient
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3407 s = DoPost(_REMOTE, '/tools/create-archive', [
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3408 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17',
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3409 '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918',
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3410 '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0'
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3411 ])
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3412 z = zipfile.ZipFile(StringIO(s), "r")
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3413 self.assertEqual(6, len(z.namelist()))
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3414
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3415 # One patient + one series + one instance
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3416 s = DoPost(_REMOTE, '/tools/create-archive', [
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3417 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17',
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3418 '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0',
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3419 '1d429ccb-bdcc78a1-7d129d6a-ba4966ed-fe4dbd87'
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3420 ])
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3421 z = zipfile.ZipFile(StringIO(s), "r")
784a544706cf test_batch_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 56
diff changeset
3422 self.assertEqual(7, len(z.namelist()))
59
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3423
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
3424 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
3425 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
3426 z = zipfile.ZipFile(StringIO(s), "r")
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
3427 self.assertEqual(7, len(z.namelist()))
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
3428
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
3429
59
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3430
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3431 def test_decode_brainix_as_jpeg(self):
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3432 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
3433
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3434 j = GetImage(_REMOTE, '/instances/%s/preview' % i)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3435 self.assertEqual('PNG', j.format)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3436 self.assertEqual(j.size[0], 256)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3437 self.assertEqual(j.size[1], 256)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3438
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3439 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
3440 self.assertEqual('PNG', j.format)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3441
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3442 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
3443 self.assertEqual('PNG', j.format)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3444
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3445 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
3446 self.assertEqual('PNG', j.format)
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 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
3449 self.assertEqual('JPEG', j.format)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3450 self.assertEqual(j.size[0], 256)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3451 self.assertEqual(j.size[1], 256)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3452
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3453 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
3454 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
3455 self.assertLess(a, b)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3456
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3457 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
3458 self.assertEqual('JPEG', j.format)
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3459
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3460 # 16bit encoding is not supported with JPEG
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3461 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
3462 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
3463
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3464 # No matching content type
84378ada15ab test_decode_brainix_as_jpeg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 58
diff changeset
3465 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
3466
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3467
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3468
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3469 def test_media_encodings(self):
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3470 ascii = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')['ID']
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3471 latin1 = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')['ID']
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3472 latin2 = UploadInstance(_REMOTE, 'MarekLatin2.dcm')['ID']
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3473
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3474 tmp = DoPost(_REMOTE, '/tools/create-media', [ascii,latin1,latin2])
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3475 z = zipfile.ZipFile(StringIO(tmp), "r")
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 self.assertEqual(4, len(z.namelist()))
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3478 self.assertTrue('IMAGES/IM0' in z.namelist())
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3479 self.assertTrue('IMAGES/IM1' in z.namelist())
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3480 self.assertTrue('IMAGES/IM2' in z.namelist())
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3481 self.assertTrue('DICOMDIR' in z.namelist())
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3482
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3483 try:
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3484 os.remove('/tmp/DICOMDIR')
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3485 except:
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3486 # The file does not exist
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3487 pass
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3488
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3489 z.extract('DICOMDIR', '/tmp')
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3490 a = subprocess.check_output([ FindExecutable('dciodvfy'), '/tmp/DICOMDIR' ],
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3491 stderr = subprocess.STDOUT).split('\n')
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3492
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3493 a = subprocess.check_output([ FindExecutable('dcentvfy'), '/tmp/DICOMDIR' ],
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3494 stderr = subprocess.STDOUT).split('\n')
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3495 self.assertEqual(1, len(a))
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3496 self.assertEqual('', a[0])
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3497
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3498 a = subprocess.check_output([ FindExecutable('dcm2xml'), '/tmp/DICOMDIR' ])
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3499 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
3500 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
3501 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
3502
83fd88230097 test_media_encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 68
diff changeset
3503 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
3504
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3505
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3506 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
3507 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
3508 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
3509 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
3510
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3511 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
3512 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
3513 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
3514 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
3515
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3516 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
3517 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
3518 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
3519 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
3520
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3521 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
3522 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
3523 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
3524 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
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', 'NumberOfStudyRelatedSeries' ])
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('\(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
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 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
3530
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3531 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
3532 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
3533 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
3534 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
3535
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3536 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
3537 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
3538 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
3539 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
3540 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
3541
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3542 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
3543 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
3544 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
3545 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
3546 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
3547 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
3548
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3549 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
3550 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
3551 self.assertEqual(1, len(s))
176
48cc188ffb09 strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents: 175
diff changeset
3552 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
3553 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
3554 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
3555
48740070cbf1 TDD: tests for ongoing development of counter tags in C-Find
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 70
diff changeset
3556
78
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3557 def test_decode_transfer_syntax(self):
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3558 def Check(t, md5):
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3559 i = UploadInstance(_REMOTE, 'TransferSyntaxes/%s.dcm' % t)['ID']
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3560
89
74b7b9aed5f8 test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
3561 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
3562 transferSyntax = DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i)
74b7b9aed5f8 test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
3563 self.assertEqual(t, transferSyntax)
74b7b9aed5f8 test TransferSyntax metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
3564
78
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3565 if md5 == None:
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3566 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
3567 else:
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3568 m = ComputeMD5(DoGet(_REMOTE, '/instances/%s/preview' % i))
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3569 self.assertEqual(m, md5)
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3570
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3571 Check('1.2.840.10008.1.2.1', 'fae08d5415c4c0cd2cdbae4522408631')
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3572 Check('1.2.840.10008.1.2.2', 'f3d9784768b8feb54d6a50b6d5c37682')
b89af51797ff test_decode_transfer_syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 74
diff changeset
3573 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
3574 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
3575 Check('1.2.840.10008.1.2.4.70', '7132cfbc457305b04b59787030c785d2')
384
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 383
diff changeset
3576 Check('1.2.840.10008.1.2.5', '6ff51ae525d362e0d04f550a64075a0e') # RLE, supported since Orthanc 1.0.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 383
diff changeset
3577 Check('1.2.840.10008.1.2', 'd54aed9f67a100984b42942cc2e9939b')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 383
diff changeset
3578
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 383
diff changeset
3579 # The 3 checks below don't work on big-endian
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 383
diff changeset
3580 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
3581 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
3582 Check('1.2.840.10008.1.2.4.81', '801579ae7cbf28e604ea74f2c99fa2ca')
299
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
3583
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
3584 # JPEG2k image, not supported without GDCM plugin
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 302
diff changeset
3585 if not HasGdcmPlugin(_REMOTE):
299
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
3586 Check('1.2.840.10008.1.2.4.90', None)
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
3587 Check('1.2.840.10008.1.2.4.91', None)
79
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3588
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3589
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3590 def test_raw_frame(self):
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3591 s = UploadInstance(_REMOTE, 'Issue22.dcm')['ID']
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3592 self.assertEqual(24, len(DoGet(_REMOTE, '/instances/%s/frames' % s)))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3593 a = DoGet(_REMOTE, '/instances/%s/frames/0/raw' % s)
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3594 self.assertEqual(512 * 512 * 2, len(a))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3595 self.assertEqual(512 * 512 * 2, len(DoGet(_REMOTE, '/instances/%s/frames/23/raw' % s)))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3596 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/24/raw' % s))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3597 self.assertEqual('1914287dc4d958eca21fdaacfb3482fa', ComputeMD5(a))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3598
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3599 s = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID']
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3600 self.assertEqual(76, len(DoGet(_REMOTE, '/instances/%s/frames' % s)))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3601 self.assertEqual(186274, len(DoGet(_REMOTE, '/instances/%s/frames/0/raw' % s)))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3602 self.assertEqual(189424, len(DoGet(_REMOTE, '/instances/%s/frames/75/raw' % s)))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3603 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/76/raw' % s))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3604 im = GetImage(_REMOTE, '/instances/%s/frames/0/raw' % s)
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3605 self.assertEqual("L", im.mode)
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3606 self.assertEqual(512, im.size[0])
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3607 self.assertEqual(512, im.size[1])
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3608
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3609 # Test an image with 2 JPEG frames spread over multiple fragments
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3610 s = UploadInstance(_REMOTE, 'LenaTwiceWithFragments.dcm')['ID']
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3611 self.assertEqual(2, len(DoGet(_REMOTE, '/instances/%s/frames' % s)))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3612 a = DoGet(_REMOTE, '/instances/%s/frames/0/raw' % s)
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3613 b = DoGet(_REMOTE, '/instances/%s/frames/1/raw' % s)
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3614 self.assertEqual(69214, len(a))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3615 self.assertEqual(ComputeMD5(a), ComputeMD5(b))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3616 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/2/raw' % s))
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3617 im = GetImage(_REMOTE, '/instances/%s/frames/0/raw' % s)
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3618 self.assertEqual("RGB", im.mode)
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3619 self.assertEqual(512, im.size[0])
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3620 self.assertEqual(512, im.size[1])
323
fbf5bdebbba7 comment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 322
diff changeset
3621 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % s) # TODO - Doesn't work with GDCM 3.0.7 alone
79
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3622 self.assertEqual("RGB", im.mode)
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3623 self.assertEqual(512, im.size[0])
962274ebd797 test_raw_frame
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 78
diff changeset
3624 self.assertEqual(512, im.size[1])
81
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3625
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3626
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3627
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3628 def test_rest_movescu(self):
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3629 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3630
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3631 # Upload 4 instances
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3632 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3633 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm')
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3634 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3635 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3636
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3637 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3638 for p in DoGet(_REMOTE, '/patients'):
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3639 DoPost(_REMOTE, '/modalities/orthanctest/store', p)
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3640 DoDelete(_REMOTE, '/patients/%s' % p)
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3641
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3642 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3643
482
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3644 # Move instance Brainix/Flair/IM-0001-0001.dcm
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3645 DoPost(_REMOTE, '/modalities/orthanctest/move', {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3646 'Level' : 'Instance',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3647 'Resources' : [
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3648 {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3649 '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
3650 '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
3651 '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
3652 }
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
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3655 # Move series Brainix/Flair/*
81
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3656 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3657 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3658 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3659 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3660
482
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3661 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1):
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3662 # Reset and test asynchronous C-Move at instance level
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3663 for p in DoGet(_REMOTE, '/patients'):
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3664 DoDelete(_REMOTE, '/patients/%s' % p)
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3665
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3666 DoPost(_REMOTE, '/modalities/orthanctest/move', {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3667 'Level' : 'Instance',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3668 'Resources' : [
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3669 {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3670 '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
3671 '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
3672 '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
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 'Asynchronous': True
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
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3678 job = MonitorJob2(_REMOTE, lambda: DoPost
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3679 (_REMOTE, '/modalities/orthanctest/move', {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3680 'Level' : 'Instance',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3681 'Resources' : [
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 '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
3684 '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
3685 '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
3686 }
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3687 ],
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3688 'Asynchronous': True
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3689 }))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3690
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3691 self.assertNotEqual(None, job)
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3692
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3693 # check the job was successfull
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3694 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3695 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3696 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3697 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3698
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3699 # check the job content
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3700 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content']
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3701 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
3702 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
3703 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
3704
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3705 # Reset and test synchronous C-Move at series level
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3706 for p in DoGet(_REMOTE, '/patients'):
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3707 DoDelete(_REMOTE, '/patients/%s' % p)
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3708
81
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3709 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Series',
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3710 'Resources' : [
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3711 {
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3712 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775',
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3713 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497',
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3714 }
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3715 ]})
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3716 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3717 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3718 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3719 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3720
482
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3721 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1):
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3722 # 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
3723 for p in DoGet(_REMOTE, '/patients'):
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3724 DoDelete(_REMOTE, '/patients/%s' % p)
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3725
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3726 job = MonitorJob2(_REMOTE, lambda: DoPost
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3727 (_REMOTE, '/modalities/orthanctest/move', {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3728 'Level' : 'Series',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3729 'Resources' : [
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 'PatientID' : '5Yp0E',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3732 '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
3733 '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
3734 }
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3735 ],
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3736 'Asynchronous': True
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3737 }))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3738
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3739 self.assertNotEqual(None, job)
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3740
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3741 # check the job was successfull
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3742 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3743 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3744 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3745 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3746
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3747 # check the job content
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3748 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content']
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3749 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
3750 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
3751 self.assertEqual('5Yp0E', jobContent['Query'][0]['0010,0020'])
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3752
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3753 # Move series Brainix/Epi/*
81
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3754 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Series',
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3755 'Resources' : [
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3756 {
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3757 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775',
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3758 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314125550',
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3759 }
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3760 ]})
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3761 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3762 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3763 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3764 self.assertEqual(3, len(DoGet(_REMOTE, '/instances')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3765
482
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3766 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1):
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3767 # Move study Knee asynchronously
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3768 job = MonitorJob2(_REMOTE, lambda: DoPost
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3769 (_REMOTE, '/modalities/orthanctest/move', {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3770 'Level' : 'Study',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3771 'Resources' : [
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3772 {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3773 '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
3774 }
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3775 ],
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3776 'Asynchronous': True
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3777 }))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3778
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3779 self.assertNotEqual(None, job)
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3780
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3781 # check the job was successfull
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3782 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3783 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3784 self.assertEqual(3, len(DoGet(_REMOTE, '/series')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3785 self.assertEqual(4, len(DoGet(_REMOTE, '/instances')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3786
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3787 # check the job content
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3788 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content']
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3789 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', jobContent['Query'][0]['0020,000d'])
81
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3790
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3791 # Reset
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3792 for p in DoGet(_REMOTE, '/patients'):
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3793 DoDelete(_REMOTE, '/patients/%s' % p)
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3794
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3795 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3796
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3797
482
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3798 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1):
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3799 # Move all at once asynchronously at PatientLevel
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3800 job = MonitorJob2(_REMOTE, lambda: DoPost(_REMOTE, '/modalities/orthanctest/move',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3801 {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3802 'Level' : 'Patient',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3803 'Resources' : [
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3804 {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3805 'PatientID' : '5Yp0E',
81
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3806 },
482
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3807 {
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3808 'PatientID': '887',
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3809 'PatientName' : 'KNEE',
81
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3810 }
482
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3811 ],
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3812 'Synchronous': False
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3813 }))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3814
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3815 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3816 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3817 self.assertEqual(3, len(DoGet(_REMOTE, '/series')))
535e651e70a2 added test for asynchronous cmove
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
3818 self.assertEqual(4, len(DoGet(_REMOTE, '/instances')))
81
5920954287dd test_rest_movescu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 80
diff changeset
3819
86
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3820
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 def test_reconstruct_json(self):
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3823 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3824
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3825 instance = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3826 first = DoGet(_REMOTE, '/instances/%s/tags' % instance)
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3827
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3828 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
3829
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3830 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
3831 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
3832 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3833 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
3834
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3835 # Cannot delete the "DICOM" attachment
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3836 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
3837
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3838 # Can delete the "DICOM as JSON" attachment
392
5cbcb4a83b41 fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 391
diff changeset
3839 if not IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
5cbcb4a83b41 fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 391
diff changeset
3840 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
3841 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
3842
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3843 # Only the "DICOM" attachment subsists
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3844 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/%s/attachments' % instance)))
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3845
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3846 # Cannot manually reconstruct the "DICOM as JSON" attachment
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3847 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
3848
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3849 # Transparently reconstruct the "DICOM as JSON" attachment
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3850 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
3851 second = DoGet(_REMOTE, '/instances/%s/tags' % instance)
0401ef51f5c1 test_reconstruct_json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 83
diff changeset
3852 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
3853
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3854 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
3855 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
3856 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3857 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
3858 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
3859 self.assertEqual(str(first), str(third))
87
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3860
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3861
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3862 def test_reconstruct_json2(self):
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3863 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3864
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3865 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
3866 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
3867
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3868 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
3869 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
3870
380
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3871 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
3872 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
3873
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3874 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
3875 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
3876 self.assertEqual(aa, bb)
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3877 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
3878 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
3879 elif IsDicomUntilPixelDataStored(_REMOTE):
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3880 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
3881 self.assertEqual(aa, bb)
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3882 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
3883 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
3884 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3885 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
3886 self.assertEqual(aa, bb)
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3887 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
3888
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3889 # 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
3890 DoPost(_REMOTE, '/tools/invalidate-tags', '', 'text/plain')
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3891
380
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3892 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
3893 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
3894 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
3895 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3896 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
3897 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
3898
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3899 # 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
3900 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
3901 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
3902
380
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3903 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
3904 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
3905 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
3906 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
3907 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
3908 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
3909
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3910
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3911 def test_private_tags(self):
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3912 i = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID']
4b24faec842b test_reconstruct_json2 + test_private_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 86
diff changeset
3913 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
3914 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
3915 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
3916
92
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3917
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3918 def test_findscu_encoding(self):
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3919 # Check out ../Database/Encodings/Generate.sh
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3920 TEST = u'Test-éüäöòДΘĝדصķћ๛ネİ'
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3921 ENCODINGS = {
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3922 'Arabic' : [ 'ISO_IR 127' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3923 'Ascii' : [ 'ISO_IR 6' ], # More accurately, ISO 646
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3924 'Cyrillic' : [ 'ISO_IR 144' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3925 'Greek' : [ 'ISO_IR 126' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3926 'Hebrew' : [ 'ISO_IR 138' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3927 'Japanese' : [ 'ISO_IR 13', 'shift-jis' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3928 'Latin1' : [ 'ISO_IR 100' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3929 'Latin2' : [ 'ISO_IR 101' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3930 'Latin3' : [ 'ISO_IR 109' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3931 'Latin4' : [ 'ISO_IR 110' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3932 'Latin5' : [ 'ISO_IR 148' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3933 'Thai' : [ 'ISO_IR 166', 'tis-620' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3934 'Utf8' : [ 'ISO_IR 192' ],
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3935 }
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3936
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3937 for name in ENCODINGS.iterkeys():
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3938 if len(ENCODINGS[name]) == 1:
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3939 ENCODINGS[name].append(name.lower())
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3940
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3941 UploadInstance(_REMOTE, 'Encodings/Lena-utf8.dcm')
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3942
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3943 for name in ENCODINGS.iterkeys():
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3944 self.assertEqual(name, DoPut(_REMOTE, '/tools/default-encoding', name))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3945 self.assertEqual(name, DoGet(_REMOTE, '/tools/default-encoding'))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3946
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3947 i = CallFindScu([ '-k', '0008,0052=STUDY',
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3948 '-k', 'SpecificCharacterSet',
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3949 '-k', 'PatientName' ])
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 characterSet = re.findall('\(0008,0005\).*?\[(.*?)\]', i)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3952 self.assertEqual(1, len(characterSet))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3953 self.assertEqual(ENCODINGS[name][0], characterSet[0].strip())
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 patientName = re.findall('\(0010,0010\).*?\[(.*?)\]', i)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3956 self.assertEqual(1, len(patientName))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3957
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3958 expected = TEST.encode(ENCODINGS[name][1], 'ignore')
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3959 self.assertEqual(expected, patientName[0].strip())
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
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3962 #for master in ENCODINGS:
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3963 for master in [ 'Latin1', 'Utf8', 'Cyrillic' ]: # Shortcut to speedup tests
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3964 self.assertEqual(master, DoPut(_REMOTE, '/tools/default-encoding', master))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3965 self.assertEqual(master, DoGet(_REMOTE, '/tools/default-encoding'))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3966
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3967 for name in ENCODINGS:
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3968 DropOrthanc(_REMOTE)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3969 UploadInstance(_REMOTE, 'Encodings/Lena-%s.dcm' % ENCODINGS[name][1])
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3970
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3971 i = CallFindScu([ '-k', '0008,0052=STUDY',
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3972 '-k', 'PatientID',
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3973 '-k', 'SpecificCharacterSet',
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3974 '-k', 'PatientName' ])
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3975 i = i.decode(ENCODINGS[master][1])
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 characterSet = re.findall('\(0008,0005\).*?\[(.*?)\]', i)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3978 self.assertEqual(1, len(characterSet))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3979 self.assertEqual(ENCODINGS[master][0], characterSet[0].strip())
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3980
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3981 patientId = re.findall('\(0010,0020\).*?\[(.*?)\]', i)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3982 self.assertEqual(1, len(patientId))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3983 self.assertEqual(ENCODINGS[name][1], patientId[0].strip())
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 patientName = re.findall('\(0010,0010\).*?\[(.*?)\]', i)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3986 self.assertEqual(1, len(patientName))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3987
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3988 tmp = ENCODINGS[name][1]
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3989 expected = TEST.encode(tmp, 'ignore').decode(tmp)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3990 tmp = ENCODINGS[master][1]
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3991 expected = expected.encode(tmp, 'ignore').decode(tmp)
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3992
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3993 self.assertEqual(expected, patientName[0].strip())
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3994
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3995
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3996 a = DoPost(_REMOTE, '/tools/find', { 'Expand' : True,
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3997 'Level' : 'Study',
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3998 'Query' : { }})
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
3999 self.assertEqual(1, len(a))
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
4000
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
4001 tmp = ENCODINGS[name][1]
dbcbffb889da test_findscu_encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 89
diff changeset
4002 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
4003
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4004
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4005 def test_reconstruct(self):
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4006 def CompareMainDicomTag(expected, instance, level, tag):
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4007 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
4008
504
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4009 originalInstanceId = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
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 studies = DoGet(_REMOTE, '/studies/')
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4012 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/')))
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4013 self.assertEqual(1, len(studies))
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4014 self.assertEqual(1, len(DoGet(_REMOTE, '/series/')))
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4015 self.assertEqual(1, len(DoGet(_REMOTE, '/instances/')))
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4016
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4017 modified = DoPost(_REMOTE, '/studies/%s/modify' % studies[0], {
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4018 "Replace" : {
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4019 "StudyDescription" : "hello",
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4020 "SeriesDescription" : "world",
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4021 "SOPClassUID" : "test",
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4022 "SOPInstanceUID" : "myid",
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4023 },
119
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
4024 "Keep" : [ "StudyInstanceUID", "SeriesInstanceUID" ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
4025 "Force" : True
96
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4026 })
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4027
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4028 instances = DoGet(_REMOTE, '/instances/')
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4029 self.assertEqual(1, len(DoGet(_REMOTE, '/patients/')))
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4030 self.assertEqual(1, len(DoGet(_REMOTE, '/studies/')))
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4031 self.assertEqual(1, len(DoGet(_REMOTE, '/series/')))
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4032 self.assertEqual(2, len(instances))
272d1229cb49 test reconstruction of tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 95
diff changeset
4033
504
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4034 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
4035
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4036 # 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
4037 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
4038 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
4039 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
4040 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
4041 CompareMainDicomTag('myid', modifiedInstanceId, '', 'SOPInstanceUID')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4042 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
4043 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
4044
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4045 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
4046 # metadata before reconstruct
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4047 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
4048 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
4049
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4050 # 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
4051 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
4052
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4053 CompareMainDicomTag('hello', originalInstanceId, 'study', 'StudyDescription')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4054 CompareMainDicomTag('world', originalInstanceId, 'series', 'SeriesDescription')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4055 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
4056
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4057 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
4058 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
4059 # 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
4060 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
4061 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
4062
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4063 self.assertEqual(mba, maa)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
4064 self.assertEqual(mbb, mab)
473
4ee85b016a40 added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents: 472
diff changeset
4065
4ee85b016a40 added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents: 472
diff changeset
4066
503
138d5efd4407 added test_rle_planar_configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 502
diff changeset
4067 @unittest.skip("httpbin.org is down as of 2022-12-22") # TODO
104
7530eb50c3c4 renamed HttpPost.lua into HttpClient.lua + fix tests
amazy
parents: 102
diff changeset
4068 def test_httpClient_lua(self):
496
f78f7ee6b660 fix httpclient
Alain Mazy <am@osimis.io>
parents: 490
diff changeset
4069 retries = 4
463
29aaa3df718f added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents: 457
diff changeset
4070 result = ''
29aaa3df718f added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents: 457
diff changeset
4071
104
7530eb50c3c4 renamed HttpPost.lua into HttpClient.lua + fix tests
amazy
parents: 102
diff changeset
4072 with open(GetDatabasePath('Lua/HttpClient.lua'), 'r') as f:
496
f78f7ee6b660 fix httpclient
Alain Mazy <am@osimis.io>
parents: 490
diff changeset
4073 scriptContent = f.read()
463
29aaa3df718f added verbosity and retries for test sometimes failing on CI
Alain Mazy <am@osimis.io>
parents: 457
diff changeset
4074 # 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
4075 while retries > 0 and not ('OK' in result):
496
f78f7ee6b660 fix httpclient
Alain Mazy <am@osimis.io>
parents: 490
diff changeset
4076 print("Executing lua script HttpClient.lua")
f78f7ee6b660 fix httpclient
Alain Mazy <am@osimis.io>
parents: 490
diff changeset
4077 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
4078 retries -= 1
102
9671578fd4d3 added tests for Lua HttpPost/Put/Get/Delete methods
amazy
parents: 100
diff changeset
4079
9671578fd4d3 added tests for Lua HttpPost/Put/Get/Delete methods
amazy
parents: 100
diff changeset
4080 self.assertIn('OK', result)
107
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4081
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 def test_bitbucket_issue_44(self):
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
4084 # 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
4085 UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm')
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4086 UploadInstance(_REMOTE, 'Issue44/Monochrome2.dcm')
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4087
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4088 # dcmcjpeg +ua +eb Monochrome1.dcm Monochrome1-Jpeg.dcm
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4089 UploadInstance(_REMOTE, 'Issue44/Monochrome1-Jpeg.dcm')
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4090
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4091 # dcmcjpeg +ua Monochrome1.dcm Monochrome1-JpegLS.dcm
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4092 UploadInstance(_REMOTE, 'Issue44/Monochrome1-JpegLS.dcm')
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4093
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4094 monochrome1 = 'bcdd600a-a6a9c522-5f0a6e84-8657c9f3-b76e59b7'
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4095 monochrome1_jpeg = '9df82121-208a2da8-0038674a-3d7a773b-b7008cd2'
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4096 monochrome1_jpegls = '0486d1a2-9165573f-b1976b20-e927b016-6b8d67ab'
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4097 monochrome2 = 'f00947b7-f61f7164-c93414d1-c6fbda6a-9e92ed20'
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4098
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4099 for i in [ monochrome1, monochrome1_jpeg, monochrome1_jpegls ]:
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4100 im = GetImage(_REMOTE, '/instances/%s/preview' % i)
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4101 self.assertEqual("L", im.mode)
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4102 self.assertEqual(2010, im.size[0])
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4103 self.assertEqual(2446, im.size[1])
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4104
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4105 # 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
4106 # white (255), should be rendered as black (0) => invert
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4107 if i == monochrome1_jpeg:
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4108 # Add some tolerance because of JPEG destructive compression
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4109 self.assertGreater(10, im.getpixel((0,0)))
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4110 else:
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4111 self.assertEqual(0, im.getpixel((0,0)))
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4112
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4113 im = GetImage(_REMOTE, '/instances/%s/preview' % monochrome2)
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4114 self.assertEqual("L", im.mode)
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4115 self.assertEqual(1572, im.size[0])
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4116 self.assertEqual(2010, im.size[1])
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4117
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4118 # 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
4119 # white (255), should be rendered as white (255)
fddb35f7289d test_bitbucket_issue_44
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 104
diff changeset
4120 self.assertEqual(255, im.getpixel((0,0)))
111
7005cdeeb704 test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 107
diff changeset
4121
7005cdeeb704 test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 107
diff changeset
4122
7005cdeeb704 test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 107
diff changeset
4123 def test_bitbucket_issue_42(self):
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
4124 # https://bugs.orthanc-server.com/show_bug.cgi?id=42
123
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 122
diff changeset
4125 # 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
4126 UploadInstance(_REMOTE, 'Issue42.dcm')['ID']
7005cdeeb704 test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 107
diff changeset
4127 modified = DoPost(_REMOTE,
7005cdeeb704 test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 107
diff changeset
4128 '/patients/da128605-e040d0c4-310615d2-3475da63-df2d1ef4/modify',
119
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
4129 '{"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
4130 'application/json')
7005cdeeb704 test_bitbucket_issue_42
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 107
diff changeset
4131 self.assertTrue('PatientID' in modified)
113
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4132
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4133
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4134 def test_rest_find_limit(self):
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4135 # 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
4136 # 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
4137
113
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4138 # Upload 6 instances
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4139 brainix = []
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4140 knee = []
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4141 for i in range(2):
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4142 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
4143 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
4144 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
4145
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4146 # Check using BRAINIX
667
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4147 # The tests below correspond to "isSimpleLookup_ == true" in "ResourceFinder"
113
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4148 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4149 'Query' : { 'PatientName' : 'B*' },
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4150 'Limit' : 10 })
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4151 self.assertEqual(4, len(a))
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4152
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4153 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4154 'Query' : { 'PatientName' : 'B*' },
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4155 'Limit' : 4 })
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4156 self.assertEqual(4, len(a))
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4157
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4158 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4159 'Query' : { 'PatientName' : 'B*' },
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4160 'Since' : 2,
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4161 'Limit' : 4 })
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4162 self.assertEqual(2, len(a))
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 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4165 'Query' : { 'PatientName' : 'B*' },
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4166 'Limit' : 3 })
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4167 self.assertEqual(3, len(a))
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4168
665
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4169 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4170 'Query' : { 'PatientName' : 'B*' },
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4171 'Limit' : 0 }) # This is an arbitrary convention
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4172 self.assertEqual(4, len(a))
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4173
113
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4174 b = []
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4175 for i in range(4):
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4176 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4177 'Query' : { 'PatientName' : 'B*' },
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4178 'Limit' : 1,
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4179 'Since' : i })
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4180 self.assertEqual(1, len(a))
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4181 b.append(a[0])
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4182
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4183 # 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
4184 self.assertEqual(0, len(set(b) ^ set(brainix)))
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4185
665
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4186 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4187 'Query' : { 'PatientName' : 'B*' },
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4188 'Limit' : 1,
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4189 'Since' : 4 })
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4190 self.assertEqual(0, len(a))
e024ba9e7768 extended test_rest_find_limit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 664
diff changeset
4191
113
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4192 # Check using KNEE
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4193 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4194 'Query' : { 'PatientName' : 'K*' },
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4195 'Limit' : 10 })
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4196 self.assertEqual(2, len(a))
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4197
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4198 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4199 'Query' : { 'PatientName' : 'K*' },
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4200 'Limit' : 2 })
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4201 self.assertEqual(2, len(a))
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4202
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4203 b = []
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4204 for i in range(2):
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4205 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4206 'Query' : { 'PatientName' : 'K*' },
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4207 'Limit' : 1,
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4208 'Since' : i })
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4209 self.assertEqual(1, len(a))
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4210 b.append(a[0])
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4211
3e5934363e76 test_rest_find_limitµ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
4212 self.assertEqual(0, len(set(b) ^ set(knee)))
115
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4213
667
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4214 # Now test "isSimpleLookup_ == false"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4215 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4216 'Query' : { 'PatientPosition' : '*' }})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4217 self.assertEqual(3, len(a))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4218
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4219 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4220 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4221 'Limit' : 0})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4222 self.assertEqual(3, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4223 self.assertEqual(a[0], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4224 self.assertEqual(a[1], b[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4225 self.assertEqual(a[2], b[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4226
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4227 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4228 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4229 'Limit' : 1})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4230 self.assertEqual(1, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4231 self.assertEqual(a[0], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4232
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4233 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4234 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4235 'Since' : 0,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4236 'Limit' : 1})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4237 self.assertEqual(1, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4238 self.assertEqual(a[0], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4239
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4240 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4241 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4242 'Since' : 0,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4243 'Limit' : 3})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4244 self.assertEqual(3, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4245 self.assertEqual(a[0], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4246 self.assertEqual(a[1], b[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4247 self.assertEqual(a[2], b[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4248
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4249 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4250 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4251 'Since' : 0,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4252 'Limit' : 4})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4253 self.assertEqual(3, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4254 self.assertEqual(a[0], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4255 self.assertEqual(a[1], b[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4256 self.assertEqual(a[2], b[2])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4257
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4258 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4259 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4260 'Since' : 1,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4261 'Limit' : 1})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4262 self.assertEqual(1, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4263 self.assertEqual(a[1], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4264
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4265 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4266 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4267 'Since' : 1,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4268 'Limit' : 2})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4269 self.assertEqual(2, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4270 self.assertEqual(a[1], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4271 self.assertEqual(a[2], b[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4272
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4273 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4274 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4275 'Since' : 1,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4276 'Limit' : 3})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4277 self.assertEqual(2, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4278 self.assertEqual(a[1], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4279 self.assertEqual(a[2], b[1])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4280
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4281 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4282 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4283 'Since' : 2,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4284 'Limit' : 1})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4285 self.assertEqual(1, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4286 self.assertEqual(a[2], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4287
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4288 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4289 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4290 'Since' : 2,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4291 'Limit' : 2})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4292 self.assertEqual(1, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4293 self.assertEqual(a[2], b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4294
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4295 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4296 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4297 'Since' : 3,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4298 'Limit' : 1})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4299 self.assertEqual(0, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4300
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4301 b = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4302 'Query' : { 'PatientPosition' : '*' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4303 'Since' : 3,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4304 'Limit' : 10})
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4305 self.assertEqual(0, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 666
diff changeset
4306
115
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4307
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4308 def test_bitbucket_issue_46(self):
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4309 # "PHI remaining after anonymization"
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
4310 # 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
4311
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4312 def GetAnonymizedTags(study, version):
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4313 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study,
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4314 { 'DicomVersion' : version },
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4315 'application/json') ['ID']
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4316 a = DoGet(_REMOTE, '/studies/%s/instances' % anonymized)
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4317 self.assertEqual(1, len(a))
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4318
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4319 instance = a[0]['ID']
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4320
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4321 return (instance, DoGet(_REMOTE, '/instances/%s/tags' % instance))
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4322
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4323 UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm')
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4324 origStudy = '6068a14b-d4df27af-9ec22145-538772d8-74f228ff'
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4325
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4326 # 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
4327 # (Patient's Mother's Birth Name) tags
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4328 newStudy = DoPost(_REMOTE, '/studies/%s/modify' % origStudy,
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4329 '{"Replace":{"0010,1060":"OSIMIS","0032,1033":"MOTHER"}}',
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4330 'application/json')['ID']
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4331
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4332 # 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
4333 # 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
4334 (instance, tags) = GetAnonymizedTags(newStudy, "2008")
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4335 self.assertTrue('0032,1033' in tags)
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4336 self.assertTrue('0010,1060' in tags)
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4337
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4338 # 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
4339 # 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
4340 (instance, tags) = GetAnonymizedTags(newStudy, "2017c")
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4341 self.assertFalse('0032,1033' in tags)
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4342 self.assertFalse('0010,1060' in tags)
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4343
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4344 t = {}
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4345 for (key, value) in tags.iteritems():
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4346 t[value['Name']] = value['Value']
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4347
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4348 self.assertEqual('', t['StudyDate']) # Type 1 tag => cleared
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4349 self.assertEqual('', t['StudyTime']) # Type 1 tag => cleared
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4350 self.assertEqual('', t['PatientSex']) # Type 1 tag => cleared
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4351 self.assertFalse('SeriesDate' in t) # Type 3 tag => null
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4352 self.assertFalse('SeriesTime' in t) # Type 3 tag => null
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4353
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4354 with tempfile.NamedTemporaryFile(delete = True) as f:
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4355 # 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
4356 f.write(DoGet(_REMOTE, '/instances/%s/file' % instance))
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4357 f.flush()
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4358 subprocess.check_output([ FindExecutable('dciodvfy'), f.name ],
45ebfab035b7 test_bitbucket_issue_46
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
4359 stderr = subprocess.STDOUT).split('\n')
118
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4360
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4361
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4362 def test_bitbucket_issue_55(self):
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4363 def Run(modify, query):
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4364 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4365
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4366 operation = 'modify' if modify else 'anonymize'
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4367
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4368 self.assertRaises(Exception, lambda: DoPost(
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4369 _REMOTE, '/studies/%s/%s' % (study, operation), query))
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4370 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4371
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4372 query["Force"] = True
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4373 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
4374 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4375 DoDelete(_REMOTE, a)
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4376
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4377 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4378
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4379 UploadInstance(_REMOTE, 'DummyCT.dcm')
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4380 study = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0'
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4381
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4382 Run(True, { "Replace" : { "StudyInstanceUID" : "world" } })
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4383 Run(True, { "Replace" : { "SeriesInstanceUID" : "world" } })
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4384 Run(True, { "Replace" : { "SOPInstanceUID" : "world" } })
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4385
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4386 Run(False, { "Keep" : [ "StudyInstanceUID" ]})
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4387 Run(False, { "Keep" : [ "SeriesInstanceUID" ]})
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4388 Run(False, { "Keep" : [ "SOPInstanceUID" ]})
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4389
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4390 Run(False, { "Replace" : { "StudyInstanceUID" : "world" } })
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4391 Run(False, { "Replace" : { "SeriesInstanceUID" : "world" } })
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4392 Run(False, { "Replace" : { "SOPInstanceUID" : "world" } })
a954c535fef6 test_bitbucket_issue_55
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 117
diff changeset
4393
120
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4394
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4395 def test_bitbucket_issue_56(self):
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4396 # Case-insensitive matching over accents. This test assumes
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4397 # that the "CaseSensitivePN" configuration option of Orthanc
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4398 # is set to "false" (default value).
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
4399 # 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
4400
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4401 def Check(name, expected, expectedSensitive):
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4402 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
4403 '-k', '0008,0052=PATIENT',
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4404 '-k', 'PatientName=%s' % name ])
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4405 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', a)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4406 self.assertEqual(expected, len(patientNames))
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4407
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4408 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4409 'CaseSensitive' : False,
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4410 'Query' : { 'PatientName' : name }})
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4411 self.assertEqual(expected, len(a))
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4412
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4413 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4414 'CaseSensitive' : True,
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4415 'Query' : { 'PatientName' : name }})
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4416 self.assertEqual(expectedSensitive, len(a))
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4417
533
Alain Mazy <am@osimis.io>
parents: 531
diff changeset
4418 # SpecificCharacterSet = ISO_IR 100 (Latin1), PatientName=Test-éüäöò
120
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4419 UploadInstance(_REMOTE, 'Encodings/Lena-latin1.dcm')
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4420
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4421 # WildcardConstraint
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4422 Check('TeSt*', 1, 0)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4423 Check('TeSt-a*', 0, 0)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4424 Check('TeSt-É*', 1, 0)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4425 Check('TeSt-é*', 1, 0)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4426 Check('Test-é*', 1, 1)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4427
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4428 # ListConstraint
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4429 Check('Test-éüäöò\\nope', 1, 1)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4430 Check('Test-ÉÜÄÖÒ\\nope', 1, 0)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4431
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4432 # ValueConstraint
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4433 Check('Test-éüäöò', 1, 1)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4434 Check('Test-ÉÜÄÖÒ', 1, 0)
fce08afe6b2d test_bitbucket_issue_56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 119
diff changeset
4435
125
15e4dc0a5810 test_gbk_alias
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 124
diff changeset
4436
15e4dc0a5810 test_gbk_alias
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 124
diff changeset
4437 def test_gbk_alias(self):
15e4dc0a5810 test_gbk_alias
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 124
diff changeset
4438 # https://groups.google.com/d/msg/orthanc-users/WMM8LMbjpUc/02-1f_yFCgAJ
15e4dc0a5810 test_gbk_alias
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 124
diff changeset
4439 # This test fails on Orthanc <= 1.3.0
15e4dc0a5810 test_gbk_alias
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 124
diff changeset
4440 i = UploadInstance(_REMOTE, '2017-09-19-GBK-Tumashu.dcm')['ID']
15e4dc0a5810 test_gbk_alias
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 124
diff changeset
4441 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)
15e4dc0a5810 test_gbk_alias
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 124
diff changeset
4442 self.assertEqual(tags['PatientName'], u'徐浩凯')
15e4dc0a5810 test_gbk_alias
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 124
diff changeset
4443 self.assertEqual(tags['InstitutionName'], u'灌云县疾病预防控制中心')
126
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4444
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4445
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4446 def test_long_tag(self):
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4447 i = UploadInstance(_REMOTE, 'DummyCTWithLongTag.dcm')['ID']
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4448 series = 'f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe'
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4449
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4450 tags = DoGet(_REMOTE, '/instances/%s/tags' % i)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4451 self.assertTrue('0018,1020' in tags)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4452 self.assertEqual('SoftwareVersions', tags['0018,1020']['Name'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4453 self.assertEqual('TooLong', tags['0018,1020']['Type'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4454 self.assertEqual(None, tags['0018,1020']['Value'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4455
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4456 tags = DoGet(_REMOTE, '/instances/%s/tags?ignore-length=0018-1020' % i)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4457 self.assertTrue('0018,1020' in tags)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4458 self.assertEqual('SoftwareVersions', tags['0018,1020']['Name'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4459 self.assertEqual('String', tags['0018,1020']['Type'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4460 self.assertTrue(tags['0018,1020']['Value'].startswith('Lorem ipsum dolor sit amet'))
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4461
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4462 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4463 self.assertTrue('SoftwareVersions' in tags)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4464 self.assertEqual(None, tags['SoftwareVersions'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4465 self.assertTrue('HeartRate' in tags)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4466 self.assertEqual(474, int(tags['HeartRate']))
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4467
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4468 tags = DoGet(_REMOTE, '/instances/%s/simplified-tags' % i)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4469 self.assertTrue('SoftwareVersions' in tags)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4470 self.assertEqual(None, tags['SoftwareVersions'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4471
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4472 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify&ignore-length=0018-1020' % i)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4473 self.assertTrue('SoftwareVersions' in tags)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4474 self.assertTrue(tags['SoftwareVersions'].startswith('Lorem ipsum dolor sit amet'))
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4475
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4476 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify&ignore-length=SoftwareVersions' % i)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4477 self.assertTrue('SoftwareVersions' in tags)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4478 self.assertTrue(tags['SoftwareVersions'].startswith('Lorem ipsum dolor sit amet'))
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4479
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4480 tags = DoGet(_REMOTE, '/series/%s/instances-tags' % series)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4481 self.assertEqual(1, len(tags))
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4482 self.assertTrue(i in tags.keys())
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4483 self.assertTrue('0018,1020' in tags[i])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4484 self.assertEqual('TooLong', tags[i]['0018,1020']['Type'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4485
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4486 tags = DoGet(_REMOTE, '/series/%s/instances-tags?ignore-length=SoftwareVersions' % series)
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4487 self.assertEqual(1, len(tags))
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4488 self.assertTrue(i in tags.keys())
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4489 self.assertTrue('0018,1020' in tags[i])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4490 self.assertEqual('String', tags[i]['0018,1020']['Type'])
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4491 self.assertTrue(tags[i]['0018,1020']['Value'].startswith('Lorem ipsum dolor sit amet'))
6ead76f08d9c test_long_tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
4492
127
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4493
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4494 def test_extended_media(self):
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4495 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4496
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4497 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
4498 self.assertEqual(2, len(z.namelist()))
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4499 self.assertTrue('IMAGES/IM0' in z.namelist())
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4500 self.assertTrue('DICOMDIR' in z.namelist())
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4501
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4502 try:
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4503 os.remove('/tmp/DICOMDIR')
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4504 except:
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4505 # The file does not exist
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4506 pass
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4507
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4508 z.extract('DICOMDIR', '/tmp')
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4509 a = subprocess.check_output([ FindExecutable('dciodvfy'), '/tmp/DICOMDIR' ],
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4510 stderr = subprocess.STDOUT).split('\n')
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4511 self.assertEqual(5, len(a))
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4512 self.assertTrue(a[0].startswith('Warning'))
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4513 self.assertEqual('BasicDirectory', a[1])
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4514 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
4515 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
4516 self.assertEqual('', a[4])
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4517
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4518 a = subprocess.check_output([ FindExecutable('dcentvfy'), '/tmp/DICOMDIR' ],
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4519 stderr = subprocess.STDOUT).split('\n')
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4520 self.assertEqual(1, len(a))
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4521 self.assertEqual('', a[0])
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4522
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4523 a = subprocess.check_output([ FindExecutable('dcm2xml'), '/tmp/DICOMDIR' ])
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4524 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
4525
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4526 # Check the presence of the series description (extended tag)
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4527 self.assertTrue(re.search('T1W_aTSE', a) != None)
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4528
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4529 os.remove('/tmp/DICOMDIR')
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4530
1eea4d3a1ba9 test_extended_media
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 126
diff changeset
4531
132
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4532 def test_anonymize_relationships_1(self):
133
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4533 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4534 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
4535 study = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4536
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4537 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study,
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4538 '{}',
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4539 'application/json')['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4540
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4541 a = DoGet(_REMOTE, '/studies/%s/instances' % study)
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4542 self.assertEqual(2, len(a))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4543 a1 = a[0]['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4544 a2 = a[1]['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4545
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4546 b = DoGet(_REMOTE, '/studies/%s/instances' % anonymized)
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4547 self.assertEqual(2, len(b))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4548 b1 = b[0]['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4549 b2 = b[1]['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4550
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4551 SEQUENCE = '/instances/%s/content/ReferencedImageSequence'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4552 SOP = '/instances/%s/content/ReferencedImageSequence/%d/ReferencedSOPInstanceUID'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4553 CLASS = '/instances/%s/content/ReferencedImageSequence/%d/ReferencedSOPClassUID'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4554 FRAME = '/instances/%s/content/FrameOfReferenceUID'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4555
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4556 self.assertEqual(DoGet(_REMOTE, FRAME % a1),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4557 DoGet(_REMOTE, FRAME % a2))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4558 self.assertEqual(DoGet(_REMOTE, FRAME % b1),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4559 DoGet(_REMOTE, FRAME % b2))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4560 self.assertNotEqual(DoGet(_REMOTE, FRAME % a1),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4561 DoGet(_REMOTE, FRAME % b1))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4562 self.assertNotEqual(DoGet(_REMOTE, FRAME % a2),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4563 DoGet(_REMOTE, FRAME % b2))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4564
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4565 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
4566 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
4567 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
4568 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
4569
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4570 for i in range(3):
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4571 self.assertEqual(DoGet(_REMOTE, SOP % (a1, i)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4572 DoGet(_REMOTE, SOP % (a2, i)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4573 self.assertEqual(DoGet(_REMOTE, SOP % (b1, i)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4574 DoGet(_REMOTE, SOP % (b2, i)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4575 self.assertNotEqual(DoGet(_REMOTE, SOP % (a1, i)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4576 DoGet(_REMOTE, SOP % (b1, i)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4577 self.assertNotEqual(DoGet(_REMOTE, SOP % (a2, i)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4578 DoGet(_REMOTE, SOP % (b2, i)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4579 self.assertEqual(DoGet(_REMOTE, CLASS % (a1, i)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4580 DoGet(_REMOTE, CLASS % (b1, i)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4581 self.assertEqual(DoGet(_REMOTE, CLASS % (a2, i)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4582 DoGet(_REMOTE, CLASS % (b2, i)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4583
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4584
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4585 def test_anonymize_relationships_2(self):
133
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4586 UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0001.dcm')
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4587 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
4588 study = '6c65289b-db2fcb71-7eaf73f4-8e12470c-a4d6d7cf'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4589
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4590 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study,
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4591 '{}',
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4592 'application/json')['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4593
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4594 a = DoGet(_REMOTE, '/studies/%s/instances' % study)
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4595 self.assertEqual(2, len(a))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4596 a1 = a[0]['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4597 a2 = a[1]['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4598
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4599 b = DoGet(_REMOTE, '/studies/%s/instances' % anonymized)
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4600 self.assertEqual(2, len(b))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4601 b1 = b[0]['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4602 b2 = b[1]['ID']
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4603
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4604 SEQUENCE = '/instances/%s/content/SourceImageSequence'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4605 SOP = '/instances/%s/content/SourceImageSequence/%d/ReferencedSOPInstanceUID'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4606 CLASS = '/instances/%s/content/SourceImageSequence/%d/ReferencedSOPClassUID'
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4607
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4608 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
4609 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
4610 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
4611 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
4612 self.assertEqual(DoGet(_REMOTE, SOP % (a1, 0)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4613 DoGet(_REMOTE, SOP % (a2, 0)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4614 self.assertEqual(DoGet(_REMOTE, SOP % (b1, 0)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4615 DoGet(_REMOTE, SOP % (b2, 0)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4616 self.assertNotEqual(DoGet(_REMOTE, SOP % (a1, 0)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4617 DoGet(_REMOTE, SOP % (b1, 0)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4618 self.assertNotEqual(DoGet(_REMOTE, SOP % (a2, 0)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4619 DoGet(_REMOTE, SOP % (b2, 0)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4620 self.assertEqual(DoGet(_REMOTE, CLASS % (a1, 0)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4621 DoGet(_REMOTE, CLASS % (b1, 0)))
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4622 self.assertEqual(DoGet(_REMOTE, CLASS % (a2, 0)),
149144d854bb Orthanc.test_anonymize_relationships_1/2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 130
diff changeset
4623 DoGet(_REMOTE, CLASS % (b2, 0)))
133
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4624
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4625
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4626 def test_anonymize_relationships_3(self):
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4627 sr1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/StructuredReports/IM0')['ID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4628 mr1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/StructuredReports/IM631')['ID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4629 study = 'ef351eb2-c1147229-062736b8-35a151e3-e32d526b'
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4630
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4631 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study,
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4632 { "Keep" : [ "ContentSequence" ] }) ['ID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4633
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4634 a = DoGet(_REMOTE, '/studies/%s/instances' % anonymized)
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4635 self.assertEqual(2, len(a))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4636
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4637 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
4638 sr2 = a[0]['ID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4639 mr2 = a[1]['ID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4640 else:
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4641 sr2 = a[1]['ID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4642 mr2 = a[0]['ID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4643
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4644 self.assertEqual(DoGet(_REMOTE, '/instances/%s/content/Modality' % sr1),
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4645 DoGet(_REMOTE, '/instances/%s/content/Modality' % sr2))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4646 self.assertEqual(DoGet(_REMOTE, '/instances/%s/content/Modality' % mr1),
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4647 DoGet(_REMOTE, '/instances/%s/content/Modality' % mr2))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4648
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4649 mrUid1 = DoGet(_REMOTE, '/instances/%s' % mr1)['MainDicomTags']['SOPInstanceUID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4650 mrUid2 = DoGet(_REMOTE, '/instances/%s' % mr2)['MainDicomTags']['SOPInstanceUID']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4651 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
4652 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
4653 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
4654 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
4655
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4656 PATH1 = '/instances/%s/content/CurrentRequestedProcedureEvidenceSequence'
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4657 PATH2 = PATH1 + '/0/ReferencedSeriesSequence'
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4658 PATH3 = PATH2 + '/0/ReferencedSOPSequence'
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4659 PATH4 = PATH3 + '/0/ReferencedSOPInstanceUID'
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4660 PATH5 = PATH3 + '/0/ReferencedSOPClassUID'
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4661
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4662 self.assertEqual(1, len(DoGet(_REMOTE, PATH1 % sr1)))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4663 self.assertEqual(1, len(DoGet(_REMOTE, PATH2 % sr1)))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4664 self.assertEqual(1, len(DoGet(_REMOTE, PATH3 % sr1)))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4665 self.assertEqual(DoGet(_REMOTE, PATH4 % sr1), mrUid1)
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4666 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
4667 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
4668
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4669 self.assertEqual(1, len(DoGet(_REMOTE, PATH1 % sr2)))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4670 self.assertEqual(1, len(DoGet(_REMOTE, PATH2 % sr2)))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4671 self.assertEqual(1, len(DoGet(_REMOTE, PATH3 % sr2)))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4672 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
4673
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4674 self.assertEqual(mrUid2, DoGet(_REMOTE, PATH4 % sr2).strip('\x00'))
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4675 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
4676 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
4677
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4678 content1 = DoGet(_REMOTE, '/instances/%s/tags?simplify' % sr1) ['ContentSequence']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4679 content2 = DoGet(_REMOTE, '/instances/%s/tags?simplify' % sr2) ['ContentSequence']
f0d4c4707e64 test_anonymize_relationships_3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 132
diff changeset
4680 self.assertEqual(str(content1), str(content2))
141
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4681
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4682
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4683 def test_bitbucket_issue_94(self):
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4684 # "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
4685 # 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
4686 i = UploadInstance(_REMOTE, 'Issue94.dcm')['ID']
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4687
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4688 source = DoGet(_REMOTE, '/instances/%s/attachments/dicom/data' % i)
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4689
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4690 modified = DoPost(_REMOTE, '/instances/%s/modify' % i,
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4691 { "Replace" : {"PatientID" : "toto"}, "Force": True})
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4692
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4693 anonymized = DoPost(_REMOTE, '/instances/%s/anonymize' % i)
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4694
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4695 a = ExtractDicomTags(source, [ 'FrameOfReferenceUID' ])
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4696 self.assertEqual(1, len(a))
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4697
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4698 b = ExtractDicomTags(modified, [ 'FrameOfReferenceUID' ])
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4699 self.assertEqual(1, len(b))
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4700
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4701 c = ExtractDicomTags(anonymized, [ 'FrameOfReferenceUID' ])
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4702 self.assertEqual(1, len(c))
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4703
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4704 self.assertEqual(a, b) # Modified DICOM
5de178abe4d8 test_bitbucket_issue_94
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
4705 self.assertNotEqual(a, c) # Anonymized DICOM
143
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4706
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4707
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4708 def test_metadata_origin(self):
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4709 # Upload using the REST API
144
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4710 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
4711 self.assertEqual('RestApi', DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i))
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4712 self.assertEqual('', DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i))
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4713 self.assertNotEqual('', DoGet(_REMOTE, '/instances/%s/metadata/RemoteIP' % i))
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4714 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/metadata/CalledAET' % i))
315
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
4715
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
4716 # "HttpUsername" is empty iff "AuthenticationEnabled" is "false"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
4717 self.assertTrue(DoGet(_REMOTE, '/instances/%s/metadata/HttpUsername' % i) in [ '', 'alice' ])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
4718
144
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4719 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % i)
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4720 self.assertEqual('RestApi', m['Origin'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4721 self.assertEqual('', m['RemoteAET'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4722 self.assertNotEqual('', m['RemoteIP'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4723 self.assertFalse('CalledAET' in m)
315
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
4724 self.assertTrue('HttpUsername' in m)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 314
diff changeset
4725 self.assertTrue(m['HttpUsername'] in [ '', 'alice' ])
144
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4726
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4727 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
4728 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
4729 self.assertEqual('1', m['IndexInSeries'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4730 self.assertTrue('ReceptionDate' in m)
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4731
143
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4732 DoDelete(_REMOTE, '/instances/%s' % i)
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4733
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4734 # Upload using the DICOM protocol
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4735 subprocess.check_call([ FindExecutable('storescu'),
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4736 _REMOTE['Server'], str(_REMOTE['DicomPort']),
144
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4737 GetDatabasePath('Knee/T1/IM-0001-0001.dcm'),
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4738 '-xw' ]) # Propose JPEG2000
143
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4739 self.assertEqual('DicomProtocol', DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i))
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4740 self.assertEqual('STORESCU', DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i))
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4741 self.assertNotEqual('', DoGet(_REMOTE, '/instances/%s/metadata/RemoteIP' % i))
28d50ffac07d test_metadata_origin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 142
diff changeset
4742 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
4743 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
4744
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4745 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % i)
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4746 self.assertEqual('DicomProtocol', m['Origin'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4747 self.assertEqual('STORESCU', m['RemoteAET'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4748 self.assertNotEqual('', m['RemoteIP'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4749 self.assertEqual('ANY-SCP', m['CalledAET'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4750 self.assertFalse('HttpUsername' in m)
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4751
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4752 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
4753 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
4754 self.assertEqual('1', m['IndexInSeries'])
7809fdf8056f testing metadata?expand
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 143
diff changeset
4755 self.assertTrue('ReceptionDate' in m)
147
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4756
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4757
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4758 def test_lua_deadlock(self):
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4759 # Rana Asim Wajid (2018-07-14): "It does seem that the issue
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4760 # is with the lua script I'm using for conversion of images to
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4761 # JPEG2000. When the script is used with 1.4.0 the first
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4762 # instance appears to be stored and then everything just
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4763 # halts, ie Orthanc wont respond to anything after that."
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4764 # https://groups.google.com/d/msg/orthanc-users/Rc-Beb42xc8/JUgdzrmCAgAJ
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 173
diff changeset
4765 InstallLuaScriptFromPath(_REMOTE, 'Lua/Jpeg2000Conversion.lua')
147
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4766
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4767 subprocess.check_call([ FindExecutable('storescu'),
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4768 _REMOTE['Server'], str(_REMOTE['DicomPort']),
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4769 GetDatabasePath('Brainix/Flair/IM-0001-0001.dcm'),
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4770 GetDatabasePath('Brainix/Flair/IM-0001-0002.dcm'),
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4771 ])
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4772
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4773 instances = DoGet(_REMOTE, '/instances')
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4774 self.assertEqual(2, len(instances))
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4775
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4776 t1 = DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % instances[0])
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4777 t2 = DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % instances[1])
175
am@osimis.io
parents: 174
diff changeset
4778 self.assertEqual('1.2.840.10008.1.2.4.90', t1) # this will fail if libgdcm-tools is not installed
147
ff788c99f1aa test_lua_deadlock
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 145
diff changeset
4779 self.assertEqual(t1, t2);
154
4a533d003080 test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 147
diff changeset
4780
4a533d003080 test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 147
diff changeset
4781
4a533d003080 test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 147
diff changeset
4782 def test_find_group_length(self):
4a533d003080 test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 147
diff changeset
4783 # 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
4784 # one of the Generic Group Length tags (*, 0x0000)
4a533d003080 test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 147
diff changeset
4785 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
4786 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
4787 self.assertFalse('UnableToProcess' in result)
4a533d003080 test_find_group_length
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 147
diff changeset
4788 self.assertFalse('E:' in result)
179
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4789
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4790
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4791 def test_split(self):
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4792 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4793 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
4794 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
4795 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
4796 study = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918'
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4797 t1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285'
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4798 t2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59'
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4799
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4800 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4801 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4802
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4803 info = DoGet(_REMOTE, '/studies/%s' % study)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4804 self.assertTrue('ReferringPhysicianName' in info['MainDicomTags'])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4805
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4806 job = MonitorJob2(_REMOTE, lambda: DoPost
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4807 (_REMOTE, '/studies/%s/split' % study, {
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4808 'Series' : [ t2 ],
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4809 'Replace' : { 'PatientName' : 'Hello' },
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4810 'Remove' : [ 'ReferringPhysicianName' ],
181
911070f790e3 more checks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 179
diff changeset
4811 'KeepSource' : False,
911070f790e3 more checks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 179
diff changeset
4812 'Asynchronous' : True
179
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4813 }))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4814
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4815 self.assertNotEqual(None, job)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4816
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4817 studies = set(DoGet(_REMOTE, '/studies'))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4818 self.assertEqual(2, len(studies))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4819
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4820 series = set(DoGet(_REMOTE, '/series'))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4821 self.assertEqual(2, len(series))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4822 self.assertTrue(t1 in series)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4823
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4824 study2 = DoGet(_REMOTE, '/jobs/%s' % job)['Content']['TargetStudy']
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4825 self.assertTrue(study in studies)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4826 self.assertTrue(study2 in studies)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4827
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4828 info = DoGet(_REMOTE, '/studies/%s' % study2)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4829 self.assertTrue('Hello', info['PatientMainDicomTags']['PatientName'])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4830 self.assertFalse('ReferringPhysicianName' in info['MainDicomTags'])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4831
254
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4832 sopInstanceUids = set()
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4833 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
4834 sopInstanceUids.add(i['MainDicomTags']['SOPInstanceUID'])
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4835
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4836 self.assertTrue(knee1Sop in sopInstanceUids)
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4837
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4838 # Fails if Orthanc <= 1.5.7
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4839 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
4840
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4841 # 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
4842 self.assertEqual(2, len(sopInstanceUids))
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4843
179
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4844
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4845 def test_merge(self):
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4846 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
4847 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
4848 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
4849 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
4850 knee = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918'
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4851 t1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285'
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4852 brainix = '27f7126f-4f66fb14-03f4081b-f9341db2-53925988'
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4853 flair = '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0'
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4854
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4855 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4856 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4857
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4858 job = MonitorJob2(_REMOTE, lambda: DoPost
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4859 (_REMOTE, '/studies/%s/merge' % knee, {
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4860 'Resources' : [ brainix ],
181
911070f790e3 more checks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 179
diff changeset
4861 'KeepSource' : True,
911070f790e3 more checks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 179
diff changeset
4862 'Synchronous' : False
179
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4863 }))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4864
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4865 self.assertNotEqual(None, job)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4866
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4867 studies = set(DoGet(_REMOTE, '/studies'))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4868 self.assertEqual(2, len(studies))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4869 self.assertTrue(knee in studies)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4870 self.assertTrue(brainix in studies)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4871
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4872 series = set(DoGet(_REMOTE, '/studies/%s' % knee)['Series'])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4873 self.assertTrue(t1 in series)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4874 series.remove(t1)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4875 self.assertEqual(1, len(series))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4876
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4877 instances = DoGet(_REMOTE, '/series/%s' % list(series)[0])['Instances']
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4878 self.assertEqual(1, len(instances))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4879 merged = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4880
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4881 instances = DoGet(_REMOTE, '/series/%s' % t1)['Instances']
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4882 self.assertEqual(1, len(instances))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4883 a = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4884
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4885 instances = DoGet(_REMOTE, '/series/%s' % flair)['Instances']
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4886 self.assertEqual(1, len(instances))
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4887 b = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4888
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4889 tags = DoGet(_REMOTE, '/studies/%s' % knee)
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4890
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4891 for key in tags['PatientMainDicomTags']:
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4892 self.assertEqual(a[key], merged[key])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4893 if (key in b and key != 'PatientSex'):
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4894 self.assertNotEqual(a[key], b[key])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4895
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4896 for key in tags['MainDicomTags']:
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4897 # Not in the patient/study module
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4898 if (not key in [ 'InstitutionName',
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4899 'RequestingPhysician',
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4900 'RequestedProcedureDescription', ]):
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4901 self.assertEqual(a[key], merged[key])
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4902 if (key in b):
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4903 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
4904
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4905 sopInstanceUids = set()
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4906 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
4907 sopInstanceUids.add(i['MainDicomTags']['SOPInstanceUID'])
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4908
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4909 self.assertTrue(kneeSop in sopInstanceUids)
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4910 self.assertTrue(brainixSop in sopInstanceUids)
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4911
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4912 # Fails if Orthanc <= 1.5.7
05b77ade5e1d test generation of sopinstanceuid in split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 247
diff changeset
4913 # 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
4914 self.assertEqual(3, len(sopInstanceUids))
179
8a2dd77d4035 testing split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 177
diff changeset
4915
187
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4916
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4917 def test_async_archive(self):
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4918 # Testing the asynchronous generation of archives/medias (new
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4919 # in Orthanc 1.4.3)
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4920 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4921 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4922
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4923 kneeT1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285'
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4924 kneeT2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59'
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4925
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4926 job = MonitorJob2(_REMOTE, lambda: DoPost
508
ae493446336a fix tests for missing archives
Alain Mazy <am@osimis.io>
parents: 507
diff changeset
4927 (_REMOTE, '/series/%s/archive' % kneeT1, {
187
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4928 'Synchronous' : False
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4929 }))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4930
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4931 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job)
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4932 self.assertEqual(1, len(z.namelist()))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4933 self.assertFalse('DICOMDIR' in z.namelist())
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4934
354
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4935 info = DoGet(_REMOTE, '/jobs/%s' % job)
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4936 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
4937 self.assertEqual(1, info['Content']['InstancesCount'])
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4938 self.assertEqual(0, info['Content']['UncompressedSizeMB'])
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4939
187
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4940 job2 = MonitorJob2(_REMOTE, lambda: DoPost
508
ae493446336a fix tests for missing archives
Alain Mazy <am@osimis.io>
parents: 507
diff changeset
4941 (_REMOTE, '/series/%s/media' % kneeT1, {
187
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4942 'Synchronous' : False
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4943 }))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4944
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4945 # The archive from the first job has been replaced by the
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4946 # archive from second job (as MediaArchiveSize == 1)
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4947 self.assertRaises(Exception, lambda: GetArchive(_REMOTE, '/jobs/%s/archive' % job))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4948
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4949 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job2)
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4950 self.assertEqual(2, len(z.namelist()))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4951 self.assertTrue('DICOMDIR' in z.namelist())
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4952
354
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4953 info = DoGet(_REMOTE, '/jobs/%s' % job2)
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4954 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
4955 self.assertEqual(1, info['Content']['InstancesCount'])
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4956 self.assertEqual(0, info['Content']['UncompressedSizeMB'])
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4957
187
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4958 job = MonitorJob2(_REMOTE, lambda: DoPost
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4959 (_REMOTE, '/tools/create-archive', {
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4960 'Synchronous' : False,
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4961 'Resources' : [ kneeT1, kneeT2 ],
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4962 }))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4963
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4964 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job)
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4965 self.assertEqual(2, len(z.namelist()))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4966 self.assertFalse('DICOMDIR' in z.namelist())
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4967
354
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4968 info = DoGet(_REMOTE, '/jobs/%s' % job)
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4969 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
4970 self.assertEqual(2, info['Content']['InstancesCount'])
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4971 self.assertEqual(0, info['Content']['UncompressedSizeMB'])
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4972
187
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4973 job = MonitorJob2(_REMOTE, lambda: DoPost
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4974 (_REMOTE, '/tools/create-media', {
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4975 'Synchronous' : False,
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4976 'Resources' : [ kneeT1, kneeT2 ],
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4977 }))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4978
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4979 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job)
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4980 self.assertEqual(3, len(z.namelist()))
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4981 self.assertTrue('DICOMDIR' in z.namelist())
188
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
4982
354
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4983 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
4984 self.assertEqual(2, info['Content']['InstancesCount'])
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4985 self.assertEqual(0, info['Content']['UncompressedSizeMB'])
88f076b906ca test ArchiveSizeMB in archive jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
4986
187
770f6f5aea16 test_async_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 186
diff changeset
4987
540
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4988 def test_archive_job_delete_output(self):
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4989 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1):
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4990 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
4991 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
4992
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4993 kneeT1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285'
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4994 kneeT2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59'
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4995
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4996 job = MonitorJob2(_REMOTE, lambda: DoPost
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4997 (_REMOTE, '/series/%s/archive' % kneeT1, {
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4998 'Synchronous' : False
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
4999 }))
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5000
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5001 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job)
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5002 # delete the output
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5003 DoDelete(_REMOTE, '/jobs/%s/archive' % job)
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5004 # 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
5005 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
5006
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5007 # repeat with another resource/job
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5008 job = MonitorJob2(_REMOTE, lambda: DoPost
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5009 (_REMOTE, '/series/%s/archive' % kneeT2, {
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5010 'Synchronous' : False
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5011 }))
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5012 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job)
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5013 # delete the output
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5014 DoDelete(_REMOTE, '/jobs/%s/archive' % job)
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5015 # 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
5016 self.assertRaises(Exception, lambda: GetArchive(_REMOTE, '/jobs/%s/archive' % job))
572
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5017 # job is still available
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5018 DoGet(_REMOTE, '/jobs/%s' % job)
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5019
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5020 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5021 # delete the job itself
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5022 DoDelete(_REMOTE, '/jobs/%s' % job)
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5023 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/jobs/%s' % job))
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5024
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5025 # test deletion of jobs in history
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5026 job = MonitorJob2(_REMOTE, lambda: DoPost
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5027 (_REMOTE, '/series/%s/archive' % kneeT2, {
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5028 'Synchronous' : False
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5029 }))
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5030 z = GetArchive(_REMOTE, '/jobs/%s/archive' % job)
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5031 # delete the job itself
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5032 DoDelete(_REMOTE, '/jobs/%s' % job)
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5033 # make sure it is not available anymore afterwards (and its output is not available either)
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5034 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/jobs/%s' % job))
3a5260cc6d55 new tests for DELETE jobs
Alain Mazy <am@osimis.io>
parents: 557
diff changeset
5035 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
5036
ea1003982c27 added a test for DELETE /jobs/../archive
Alain Mazy <am@osimis.io>
parents: 538
diff changeset
5037
188
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5038 def test_queries_hierarchy(self):
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5039 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5040 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
5041
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5042 tags = {
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5043 'NumberOfPatientRelatedInstances' : '',
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5044 'NumberOfPatientRelatedSeries' : '',
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5045 'NumberOfPatientRelatedStudies' : '',
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5046 'NumberOfStudyRelatedInstances' : '',
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5047 'NumberOfStudyRelatedSeries' : '',
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5048 'NumberOfSeriesRelatedInstances' : '',
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5049 }
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5050
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5051 tags2 = copy.copy(tags)
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5052 tags2['PatientID'] = '887' # Only consider the "Knee" patient
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5053
188
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5054 patient = DoPost(_REMOTE, '/modalities/self/query', {
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5055 'Level' : 'Patient',
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5056 'Query' : tags2
188
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5057 }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5058
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5059 study = DoPost(_REMOTE, '/modalities/self/query', {
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5060 'Level' : 'Study',
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5061 'Query' : tags2
188
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5062 }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5063
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5064 series = DoPost(_REMOTE, '/modalities/self/query', {
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5065 'Level' : 'Series',
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5066 'Query' : tags2
188
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5067 }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5068
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5069 instance = DoPost(_REMOTE, '/modalities/self/query', {
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5070 'Level' : 'Instance',
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5071 'Query' : tags2
188
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5072 }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5073
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5074 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
5075 self.assertEqual(1, len(p))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5076 self.assertEqual('887', p[0]['PatientID'])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5077 self.assertEqual('1', p[0]['NumberOfPatientRelatedInstances'])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5078 self.assertEqual('1', p[0]['NumberOfPatientRelatedSeries'])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5079 self.assertEqual('1', p[0]['NumberOfPatientRelatedStudies'])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5080 self.assertFalse('NumberOfStudyRelatedInstances' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5081 self.assertFalse('NumberOfStudyRelatedSeries' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5082 self.assertFalse('NumberOfSeriesRelatedInstances' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5083
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5084 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
5085 self.assertEqual(1, len(p))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5086 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
5087 self.assertEqual('1', p[0]['NumberOfStudyRelatedInstances'])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5088 self.assertEqual('1', p[0]['NumberOfStudyRelatedSeries'])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5089 self.assertFalse('NumberOfPatientRelatedInstances' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5090 self.assertFalse('NumberOfPatientRelatedSeries' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5091 self.assertFalse('NumberOfPatientRelatedInstances' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5092 self.assertFalse('NumberOfSeriesRelatedInstances' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5093
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5094 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
5095 self.assertEqual(1, len(p))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5096 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
5097 self.assertEqual('1', p[0]['NumberOfSeriesRelatedInstances'])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5098 self.assertFalse('NumberOfPatientRelatedInstances' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5099 self.assertFalse('NumberOfPatientRelatedSeries' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5100 self.assertFalse('NumberOfPatientRelatedInstances' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5101 self.assertFalse('NumberOfStudyRelatedInstances' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5102 self.assertFalse('NumberOfStudyRelatedSeries' in p[0])
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5103
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5104 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
5105 self.assertEqual(1, len(p))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5106 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
5107
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5108 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
5109 { 'Query' : tags }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5110 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
5111 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % study))
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5112
188
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5113 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
5114 { 'Query' : tags }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5115 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
5116 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % series))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5117
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5118 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
5119 { 'Query' : tags }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5120 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
5121 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % instance))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5122
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5123 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
5124 { 'Query' : tags }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5125 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
5126 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % series))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5127
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5128 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
5129 { 'Query' : tags }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5130 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
5131 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % instance))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5132
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5133 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
5134 { 'Query' : tags }) ['ID']
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5135 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
5136 DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % instance))
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5137
7d585263808b new test: test_queries_hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 187
diff changeset
5138
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5139 def test_dicom_disk_size(self):
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5140 dicomSize = 0
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5141
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5142 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
5143 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
5144
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5145 for i in range(2):
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5146 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
5147 UploadInstance(_REMOTE, p)
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5148 dicomSize += os.path.getsize(GetDatabasePath(p))
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5149
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5150 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
5151 self.assertEqual(2, s['CountInstances'])
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5152 self.assertEqual(2, s['CountSeries'])
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5153 self.assertEqual(1, s['CountStudies'])
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5154
189
11719f19bd62 test_dicom_disk_size
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 188
diff changeset
5155 self.assertEqual(dicomSize, int(s['DicomUncompressedSize']))
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5156
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5157 if isCompressed:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5158 self.assertGreater(dicomSize, int(s['DicomDiskSize']))
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5159 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
5160 self.assertLess(dicomSize, int(s['UncompressedSize']))
379
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5161 else:
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5162 self.assertEqual(dicomSize, int(s['DicomDiskSize']))
097329b67509 fix tests if StorageCompression is true
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 378
diff changeset
5163 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
5164 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
5165 if IsDicomUntilPixelDataStored(_REMOTE):
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
5166 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
5167 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
5168 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
5169 else:
b9adc7d06347 update tests following removal of dicom-as-json attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 379
diff changeset
5170 # 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
5171 # 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
5172 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
5173
202
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5174
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5175 def test_changes_2(self):
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5176 # 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
5177 # 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
5178
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5179 # 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
5180 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
5181 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
5182 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
5183 DoDelete(_REMOTE, '/instances/%s' % a)
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5184
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5185 # 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
5186 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
5187
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5188 c = DoGet(_REMOTE, '/changes')
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5189 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
5190 self.assertTrue(c['Done'])
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5191 seq = c['Last']
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5192
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5193 c = DoGet(_REMOTE, '/changes?last')
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5194 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
5195 self.assertTrue(c['Done'])
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5196 self.assertEqual(seq, c['Last'])
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5197
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5198 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
5199 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
5200 self.assertTrue(c['Done'])
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5201 self.assertEqual(seq, c['Last'])
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5202
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5203 # Add one instance
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5204 UploadInstance(_REMOTE, 'DummyCT.dcm')
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5205 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
5206
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5207 c = DoGet(_REMOTE, '/changes')
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5208 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
5209 self.assertTrue(c['Done'])
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5210 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
5211
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5212 c = DoGet(_REMOTE, '/changes?last')
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5213 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
5214 self.assertTrue(c['Done'])
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5215 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
5216
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5217 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
5218 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
5219 self.assertTrue(c['Done'])
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5220 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
5221
389
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5222 # 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
5223 # changes of type "UpdatedMetadata"
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5224 i = DoGet(_REMOTE, '/instances') [0]
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5225 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
5226
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
5227 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/4000' % i)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
5228 self.assertEqual('200', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
5229 self.assertEqual('hello', body)
389
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5230
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5231 c = DoGet(_REMOTE, '/changes?last')
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5232 self.assertEqual(1, len(c['Changes']))
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5233 self.assertTrue(c['Done'])
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5234 self.assertEqual(seq + 5, c['Last'])
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5235 self.assertEqual('UpdatedMetadata', c['Changes'][0]['ChangeType'])
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5236
394
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
5237 if IsOrthancVersionAbove(_REMOTE, 1, 9, 2):
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
5238 DoDelete(_REMOTE, '/instances/%s/metadata/4000' % i, headers = {
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
5239 'If-Match' : headers['etag']
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
5240 })
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
5241 else:
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
5242 self.assertFalse('etag' in headers)
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
5243 DoDelete(_REMOTE, '/instances/%s/metadata/4000' % i)
e87d54a8a204 compatibility with 1.9.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
5244
389
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5245 c = DoGet(_REMOTE, '/changes?last')
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5246 self.assertEqual(1, len(c['Changes']))
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5247 self.assertTrue(c['Done'])
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5248 self.assertEqual(seq + 6, c['Last'])
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5249 self.assertEqual('UpdatedMetadata', c['Changes'][0]['ChangeType'])
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5250
202
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5251 # Remove the uploaded instance
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5252 DoDelete(_REMOTE, '/instances/%s' % a)
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5253 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
5254
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5255 c = DoGet(_REMOTE, '/changes')
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5256 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
5257 self.assertTrue(c['Done'])
389
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5258 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
5259
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5260 c = DoGet(_REMOTE, '/changes?last')
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5261 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
5262 self.assertTrue(c['Done'])
389
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5263 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
5264
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5265 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
5266 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
5267 self.assertTrue(c['Done'])
389
27e0a2fcdc85 test /changes of type UpdatedMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 384
diff changeset
5268 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
5269
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5270
f26f9ae9c599 test_changes_2 and test_bitbucket_issue_124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 195
diff changeset
5271 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
5272 a = UploadInstance(_REMOTE, 'Issue124.dcm')['ID']
508
ae493446336a fix tests for missing archives
Alain Mazy <am@osimis.io>
parents: 507
diff changeset
5273 s = DoGet(_REMOTE, '/instances/%s/series' % a)['ID']
ae493446336a fix tests for missing archives
Alain Mazy <am@osimis.io>
parents: 507
diff changeset
5274
ae493446336a fix tests for missing archives
Alain Mazy <am@osimis.io>
parents: 507
diff changeset
5275 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
5276 self.assertEqual(2, len(z.namelist()))
207
a515eec74078 test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
5277
a515eec74078 test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
5278
a515eec74078 test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
5279 def test_invalid_findscp(self):
a515eec74078 test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
5280 UploadInstance(_REMOTE, 'DummyCT.dcm')
a515eec74078 test_invalid_findscp
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
5281 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
5282 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
5283
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5284
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5285 def test_bitbucket_issue_90(self):
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5286 def CountDicomResults(sex):
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5287 a = CallFindScu([ '-S', '-k', '8,52=STUDY', '-k', sex ])
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5288 return len(re.findall('\(0010,0040\)', a))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5289
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5290 def CountRestResults(sex):
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5291 a = DoPost(_REMOTE, '/tools/find',
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5292 { 'Level' : 'Study', 'Query' : { 'PatientSex' : sex } })
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5293 return len(a)
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5294
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5295 # 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
5296 # "DummyCT.dcm" has the tag PatientSex (0010,0040) unset
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5297 UploadInstance(_REMOTE, 'DummyCT.dcm')
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5298
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5299 # 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
5300
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5301 # 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
5302 self.assertEqual(0, CountDicomResults('PatientSex=*'))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5303 self.assertEqual(0, CountRestResults('*'))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5304
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5305 # 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
5306 self.assertEqual(0, CountDicomResults('PatientSex=F'))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5307 self.assertEqual(0, CountDicomResults('PatientSex=M'))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5308 self.assertEqual(0, CountRestResults('F'))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5309 self.assertEqual(0, CountRestResults('M'))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5310
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5311 # 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
5312 # 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
5313 # as a filter in such a situation.
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5314 self.assertEqual(1, CountDicomResults('PatientSex'))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5315 self.assertEqual(1, CountDicomResults('PatientSex='))
2444c9a7c422 test_bitbucket_issue_90
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
5316 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
5317
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5318
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5319 def test_rest_modalities_in_study(self):
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5320 # 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
5321 # 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
5322 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5323
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5324 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5325 'Query' : { 'ModalitiesInStudy' : 'US' }})
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5326 self.assertEqual(0, len(a))
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5327
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5328 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5329 'Query' : { 'ModalitiesInStudy' : 'US\\CT' }})
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5330 self.assertEqual(1, len(a))
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5331
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5332 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5333 'Query' : { 'ModalitiesInStudy' : 'CT' }})
2c50c8f340c2 test_rest_modalities_in_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
5334 self.assertEqual(1, len(a))
211
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5335
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5336
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5337 def test_series_status(self):
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5338 def HasCompletedInChanges():
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5339 for c in DoGet(_REMOTE, '/changes?limit=1000&since=0')['Changes']:
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5340 if c['ChangeType'] == 'CompletedSeries':
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5341 return True;
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5342
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5343 return False
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5344
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5345 UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0001.dcm')
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5346 series = '8ea120d7-5057d919-837dfbcc-ccd04e0f-7f3a94aa'
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5347 self.assertEqual('Unknown', DoGet(_REMOTE, '/series/%s' % series)['Status'])
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5348 self.assertFalse(HasCompletedInChanges())
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5349
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5350 series = 'ce25ecb6-ed79d004-5ae43ca7-3fc89bc5-67511614'
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5351
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5352 for i in range(3):
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5353 UploadInstance(_REMOTE, 'Series/Lena-%d.dcm' % (i + 1))
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5354 self.assertEqual('Missing', DoGet(_REMOTE, '/series/%s' % series)['Status'])
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5355 self.assertFalse(HasCompletedInChanges())
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5356
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5357 UploadInstance(_REMOTE, 'Series/Lena-4.dcm')
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5358 self.assertEqual('Complete', DoGet(_REMOTE, '/series/%s' % series)['Status'])
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5359 self.assertTrue(HasCompletedInChanges())
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5360
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5361 DoDelete(_REMOTE, '/changes')
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5362 self.assertFalse(HasCompletedInChanges())
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5363
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5364 UploadInstance(_REMOTE, 'Series/Lena-5.dcm')
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5365 self.assertEqual('Inconsistent', DoGet(_REMOTE, '/series/%s' % series)['Status'])
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5366 self.assertFalse(HasCompletedInChanges())
a05cc24f84e5 test_series_status
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
5367
215
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5368
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5369 def test_dicomweb(self):
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5370 def Compare(dicom, reference):
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5371 a = UploadInstance(_REMOTE, dicom) ['ID']
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5372 b = DoGet(_REMOTE, '/instances/%s/file' % a,
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5373 headers = { 'Accept' : 'application/dicom+json' })
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5374 with open(GetDatabasePath(reference), 'rb') as c:
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5375 d = json.load(c)
220
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5376 AssertAlmostEqualRecursive(self, d, b)
215
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5377
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5378 Compare('DummyCT.dcm', 'DummyCT.json')
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5379 Compare('MarekLatin2.dcm', 'MarekLatin2.json')
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5380 Compare('HierarchicalAnonymization/StructuredReports/IM0',
d8fc62207ba3 test_dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
5381 'HierarchicalAnonymization/StructuredReports/IM0.json')
217
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5382
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5383
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5384 def test_issue_95_encodings(self):
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
5385 # https://bugs.orthanc-server.com/show_bug.cgi?id=95
217
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5386 # Check out image: "../Database/Encodings/DavidClunie/charsettests.screenshot.png"
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5387
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5388 # Very useful tool: "file2" from package "file-kanji"
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5389
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5390 def GetPatientName(dicom):
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5391 i = UploadInstance(_REMOTE, dicom) ['ID']
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5392 j = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5393 return j['PatientName']
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5394
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5395 def ComparePatientName(name, dicom):
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5396 self.assertEqual(name, GetPatientName(dicom))
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5397
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5398 # gdcmraw -t 10,10 -i SCSFREN -o /tmp/tag && uconv -f ISO-IR-100 -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5399 ComparePatientName(u'Buc^Jérôme', 'Encodings/DavidClunie/SCSFREN')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5400
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5401 # gdcmraw -t 10,10 -i SCSI2 -o /tmp/tag && uconv -f KOREAN -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5402 ComparePatientName(u'Hong^Gildong=洪^吉洞=홍^길동', 'Encodings/DavidClunie/SCSI2') # Since Orthanc 1.5.5
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5403
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5404 # gdcmraw -t 10,10 -i SCSX2 -o /tmp/tag && uconv -f GB18030 -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5405 ComparePatientName(u'Wang^XiaoDong=王^小东=', 'Encodings/DavidClunie/SCSX2')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5406
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5407 # gdcmraw -t 10,10 -i SCSX1 -o /tmp/tag && cat /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5408 ComparePatientName(u'Wang^XiaoDong=王^小東=', 'Encodings/DavidClunie/SCSX1')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5409
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5410 # gdcmraw -t 10,10 -i SCSH31 -o /tmp/tag && uconv -f JIS -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5411 ComparePatientName(u'Yamada^Tarou=山田^太郎=やまだ^たろう', 'Encodings/DavidClunie/SCSH31')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5412
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5413 # gdcmraw -t 10,10 -i SCSGERM -o /tmp/tag && uconv -f ISO-IR-100 -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5414 ComparePatientName(u'Äneas^Rüdiger', 'Encodings/DavidClunie/SCSGERM')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5415
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5416 # gdcmraw -t 10,10 -i SCSGREEK -o /tmp/tag && uconv -f ISO-IR-126 -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5417 ComparePatientName(u'Διονυσιος', 'Encodings/DavidClunie/SCSGREEK')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5418
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5419 # gdcmraw -t 10,10 -i SCSRUSS -o /tmp/tag && uconv -f ISO-IR-144 -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5420 ComparePatientName(u'Люкceмбypг', 'Encodings/DavidClunie/SCSRUSS')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5421
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5422 # gdcmraw -t 10,10 -i SCSHBRW -o /tmp/tag && uconv -f ISO-IR-138 -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5423 # NB: Hebrew is a right-to-left encoding, copying/pasting from
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5424 # Linux console into Emacs automatically reverse the string
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5425 ComparePatientName(u'שרון^דבורה', 'Encodings/DavidClunie/SCSHBRW')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5426
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5427 # gdcmraw -t 10,10 -i SCSARAB -o /tmp/tag && uconv -f ISO-IR-127 -t UTF-8 /tmp/tag && echo
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5428 # NB: Right-to-left as for Hebrew (SCSHBRW), and the Ubuntu console can't display such
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5429 # characters by default, but copy/paste works with Emacs
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5430 ComparePatientName(u'قباني^لنزار', 'Encodings/DavidClunie/SCSARAB')
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5431
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5432 # SCSH32: This SpecificCharacterSet is composed of 2
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5433 # codepages: "ISO 2022 IR 13" (i.e. "SHIFT_JIS") until the
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5434 # first equal, then "ISO 2022 IR 87" (i.e. "JIS") for the
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5435 # remainer. Orthanc only takes into consideration the first
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5436 # codepage: This is a limitation.
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5437 # gdcmraw -t 10,10 -i SCSH32 -o /tmp/tag && cut -d '=' -f 1 /tmp/tag | uconv -f SHIFT_JIS -t UTF-8
a491d5ec370a test encodings
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 215
diff changeset
5438 self.assertTrue(GetPatientName('Encodings/DavidClunie/SCSH32').startswith(u'ヤマダ^タロウ='))
218
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5439
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5440
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5441 def test_findscu_missing_tags(self):
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5442 # dcmodify -e Rows DummyCTInvalidRows.dcm -gst -gse -gin
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5443 UploadInstance(_REMOTE, 'DummyCT.dcm')
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5444 UploadInstance(_REMOTE, 'DummyCTInvalidRows.dcm')
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5445
669
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5446 i = CallFindScu([ '-k', '0008,0052=IMAGES', '-k', 'PatientName', '-k', 'Rows', '-k', 'Columns' ])
218
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5447
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5448 # We have 2 instances...
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5449 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', i)
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5450 self.assertEqual(2, len(patientNames))
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5451 self.assertEqual('KNIX', patientNames[0])
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5452 self.assertEqual('KNIX', patientNames[1])
669
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5453
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5454 columns = re.findall('\(0028,0011\) US ([0-9]+)', i)
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5455 self.assertEqual(2, len(columns))
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5456 self.assertEqual('512', columns[0])
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5457 self.assertEqual('512', columns[1])
218
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5458
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5459 # ...but only 1 value for the "Rows" tag
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5460 rows = re.findall('\(0028,0010\) US ([0-9]+)', i)
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5461 self.assertEqual(1, len(rows))
70fba41776be test_findscu_missing_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 217
diff changeset
5462 self.assertEqual('512', rows[0])
219
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5463
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5464
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5465
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5466 def test_bitbucket_issue_131(self):
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5467 # "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
5468 # StudyInstanceUID in it's database."
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
5469 # 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
5470
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5471 # Insert 2 instances, with the same StudyInstanceUID, but with
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5472 # different patient IDs. Orthanc will create 2 distincts
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5473 # patients, and the hierarchy of resources above the two
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5474 # instances will be fully disjoint.
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5475 UploadInstance(_REMOTE, 'PatientIdsCollision/Issue131-a.dcm')
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5476 UploadInstance(_REMOTE, 'PatientIdsCollision/Issue131-b.dcm')
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5477
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5478 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5479 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5480
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5481 a = DoPost(_REMOTE, '/modalities/self/query', {
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5482 'Level' : 'Study',
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5483 'Query' : {"PatientID": "A" }})['ID']
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5484
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5485 # 1 study is matched
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5486 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
5487
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5488 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
220
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5489 WaitAllNewJobsDone(_REMOTE, lambda: DoPost
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5490 (_REMOTE, '/queries/%s/retrieve' % a,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5491 '{"TargetAet":"ORTHANCTEST","Synchronous":false}'))
219
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5492
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5493 # 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
5494 # 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
5495 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5496
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5497
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5498 # Match the 2 studies
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5499 a = DoPost(_REMOTE, '/modalities/self/query', {
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5500 'Level' : 'Study',
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5501 'Query' : {"StudyInstanceUID": "2.25.123" }})['ID']
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5502 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
5503 DropOrthanc(_LOCAL)
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5504 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
220
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5505 WaitAllNewJobsDone(_REMOTE, lambda: DoPost
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5506 (_REMOTE, '/queries/%s/retrieve' % a,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5507 '{"TargetAet":"ORTHANCTEST","Synchronous":false}'))
219
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5508 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5509
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5510
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5511 # 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
5512 a = DoPost(_REMOTE, '/modalities/self/query', {
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5513 'Level' : 'Patient',
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5514 'Query' : {"PatientID": "A" }})['ID']
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5515 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
5516 DropOrthanc(_LOCAL)
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5517 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
220
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5518 WaitAllNewJobsDone(_REMOTE, lambda: DoPost
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5519 (_REMOTE, '/queries/%s/retrieve' % a,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5520 '{"TargetAet":"ORTHANCTEST","Synchronous":false}'))
219
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5521 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5522
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5523
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5524 # 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
5525 a = DoPost(_REMOTE, '/modalities/self/query', {
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5526 'Level' : 'Series',
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5527 'Query' : {"PatientID": "A" }})['ID']
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5528 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
5529 DropOrthanc(_LOCAL)
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5530 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
220
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5531 WaitAllNewJobsDone(_REMOTE, lambda: DoPost
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5532 (_REMOTE, '/queries/%s/retrieve' % a,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 219
diff changeset
5533 '{"TargetAet":"ORTHANCTEST","Synchronous":false}'))
219
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5534 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
00e5aeea33dd test_bitbucket_issue_131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 218
diff changeset
5535
233
ce0b19a2c807 test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 231
diff changeset
5536
ce0b19a2c807 test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 231
diff changeset
5537 def test_bitbucket_issue_136(self):
ce0b19a2c807 test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 231
diff changeset
5538 UploadInstance(_REMOTE, 'Issue137.dcm')
ce0b19a2c807 test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 231
diff changeset
5539 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
5540 patientNames = re.findall('\(0010,0010\).*?\[(.*?)\]', i)
ce0b19a2c807 test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 231
diff changeset
5541 self.assertEqual(1, len(patientNames))
ce0b19a2c807 test_bitbucket_issue_136
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 231
diff changeset
5542 self.assertEqual('John Doe', patientNames[0])
234
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5543
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5544
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5545 def test_anonymize_relationships_4(self):
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5546 # 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
5547 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
5548 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
5549 study = '0c923249-d52121a9-2b7167f7-6b85534f-0943697e'
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5550
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5551 anonymized = DoPost(_REMOTE, '/studies/%s/anonymize' % study, '{}',
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5552 'application/json')['ID']
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5553 series = DoGet(_REMOTE, '/studies/%s/series' % anonymized)
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5554 self.assertEqual(2, len(series))
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5555
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5556 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
5557 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
5558 self.assertEqual(1, len(cr))
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5559 self.assertEqual(1, len(pr))
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5560 self.assertEqual(1, len(cr[0]['Instances']))
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5561 self.assertEqual(1, len(pr[0]['Instances']))
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5562
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5563 crinstance = DoGet(_REMOTE, '/instances/%s' % cr[0]['Instances'][0])
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5564 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
5565
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5566 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
5567 crinstance['MainDicomTags']['SOPInstanceUID'])
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5568 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
5569 '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
5570
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5571 # This fails on Orthanc <= 1.5.6
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5572 self.assertEqual(tags['0008,1115'][0]['0020,000e'],
93cd4fdd4a67 test_anonymize_relationships_4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 233
diff changeset
5573 cr[0]['MainDicomTags']['SeriesInstanceUID'])
235
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
255
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5576 def test_anonymize_relationships_5(self):
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5577 ct1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/CT01.dcm')
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5578 rt1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/RT.dcm')
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5579 oStudyId = ct1['ParentStudy']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5580 oCtInstanceId = ct1['ID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5581 oRtInstanceId = rt1['ID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5582
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5583 oCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oCtInstanceId)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5584 oRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oRtInstanceId)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5585
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5586 # first validate the relationships in the source data
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5587 oStudyUID = oCtTags['StudyInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5588 oRtSeriesUID = oRtTags['SeriesInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5589 oRtInstanceUID = oRtTags['SOPInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5590 oRtFrameOfReferenceUID = oRtTags['ReferencedFrameOfReferenceSequence'][0]['FrameOfReferenceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5591 oCtSeriesUID = oCtTags['SeriesInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5592 oCtInstanceUID = oCtTags['SOPInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5593 oCtFrameOfReferenceUID = oCtTags['FrameOfReferenceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5594
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5595 oContourSequenceCount = len(oRtTags['ROIContourSequence'][0]['ContourSequence'])
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5596 self.assertEqual(oCtFrameOfReferenceUID, oRtFrameOfReferenceUID)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5597 self.assertEqual(oStudyUID, oRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID'])
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5598 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
5599 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
5600 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
5601
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5602 ### anonymize
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5603
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5604 aStudyId = DoPost(_REMOTE, '/studies/%s/anonymize' % oStudyId, '{}',
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5605 'application/json')['ID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5606
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5607 ### validate
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5608
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5609 aSeries = DoGet(_REMOTE, '/studies/%s/series' % aStudyId)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5610 self.assertEqual(2, len(aSeries))
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5611
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5612 aCt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CT', aSeries))
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5613 aRt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'RTSTRUCT', aSeries))
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5614 aCtInstanceId = aCt[0]['Instances'][0]
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5615 aRtInstanceId = aRt[0]['Instances'][0]
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5616 aCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aCtInstanceId)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5617 aRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aRtInstanceId)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5618
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5619 # now validate the relationships in the anonymized data
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5620 aStudyUID = aCtTags['StudyInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5621 aRtSeriesUID = aRtTags['SeriesInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5622 aRtInstanceUID = aRtTags['SOPInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5623 aRtFrameOfReferenceUID = aRtTags['ReferencedFrameOfReferenceSequence'][0]['FrameOfReferenceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5624 aCtSeriesUID = aCtTags['SeriesInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5625 aCtInstanceUID = aCtTags['SOPInstanceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5626 aCtFrameOfReferenceUID = aCtTags['FrameOfReferenceUID']
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5627
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5628 aContourSequenceCount = len(aRtTags['ROIContourSequence'][0]['ContourSequence'])
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5629 # make sure all UIDs have been updated
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5630 self.assertNotEqual(oStudyUID, aStudyUID)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5631 self.assertNotEqual(oRtSeriesUID, aRtSeriesUID)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5632 self.assertNotEqual(oRtInstanceUID, aRtInstanceUID)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5633 self.assertNotEqual(oRtFrameOfReferenceUID, aRtFrameOfReferenceUID)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5634 self.assertNotEqual(oCtSeriesUID, aCtSeriesUID)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5635 self.assertNotEqual(oCtInstanceUID, aCtInstanceUID)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5636 self.assertNotEqual(oCtFrameOfReferenceUID, aCtFrameOfReferenceUID)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5637
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5638 # validate the relationships
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5639 self.assertEqual(oContourSequenceCount, aContourSequenceCount)
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5640 self.assertEqual(aCtFrameOfReferenceUID, aRtFrameOfReferenceUID)
256
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5641 self.assertEqual(aStudyUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID'])
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5642 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
5643 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
5644 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
5645
256
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5646 def test_anonymize_relationships_5b(self):
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5647 # same test as previous one but, this time, we force the StudyInstanceUID
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5648 ct1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/CT01.dcm')
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5649 rt1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/RT.dcm')
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5650 oStudyId = ct1['ParentStudy']
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5651 oCtInstanceId = ct1['ID']
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5652 oRtInstanceId = rt1['ID']
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5653
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5654 oCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oCtInstanceId)
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5655 oRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oRtInstanceId)
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5656
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5657 ### anonymize while forcing the StudyInstanceUID
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5658
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5659 aStudyId = DoPost(_REMOTE, '/studies/%s/anonymize' % oStudyId, '{ "Replace" : { "StudyInstanceUID" : "1.2.3.4"}, "Force": true}',
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5660 'application/json')['ID']
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5661
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5662 ### validate
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5663
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5664 aSeries = DoGet(_REMOTE, '/studies/%s/series' % aStudyId)
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5665 self.assertEqual(2, len(aSeries))
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5666
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5667 aCt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CT', aSeries))
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5668 aRt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'RTSTRUCT', aSeries))
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5669 aCtInstanceId = aCt[0]['Instances'][0]
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5670 aRtInstanceId = aRt[0]['Instances'][0]
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5671 aCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aCtInstanceId)
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5672 aRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aRtInstanceId)
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5673
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5674 self.assertEqual("1.2.3.4", aCtTags['StudyInstanceUID'])
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5675 self.assertEqual("1.2.3.4", aRtTags['StudyInstanceUID'])
397bcd1d16b2 tests for RT-STRUCT anonymization
amazy
parents: 255
diff changeset
5676 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
5677
02c3d91b155c added anonymization test for RTH data (currently failing)
amazy
parents: 254
diff changeset
5678
235
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5679 def test_bitbucket_issue_140(self):
266
b105bb2233c6 fix issue 140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 265
diff changeset
5680 # "Modifying private tags with REST API changes VR from LO to
267
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 266
diff changeset
5681 # 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
5682 # 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
5683 source = UploadInstance(_REMOTE, 'Issue140.dcm') ['ID']
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5684 series = DoGet(_REMOTE, '/instances/%s' % source) ['ParentSeries']
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5685
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5686 target = DoPost(_REMOTE, '/series/%s/modify' % series, {
266
b105bb2233c6 fix issue 140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 265
diff changeset
5687 'Replace' : { 'RadioButton3' : 'aaabbbccc' },
b105bb2233c6 fix issue 140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 265
diff changeset
5688 'PrivateCreator' : 'RadioLogic', # <= the trick is here
235
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5689 }, 'application/json') ['ID']
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5690
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5691 instances = DoGet(_REMOTE, '/series/%s/instances' % target)
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5692 self.assertEqual(1, len(instances))
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5693
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5694 tags = DoGet(_REMOTE, '/instances/%s/tags' % source)
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5695 t = tags['4321,1012']
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5696 self.assertEqual('String', t['Type'])
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5697 self.assertEqual('RadioButton3', t['Name'])
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5698 self.assertEqual('RadioLogic', t['PrivateCreator'])
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5699 self.assertEqual('jklmopq', t['Value'])
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5700
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5701 tags = DoGet(_REMOTE, '/instances/%s/tags' % instances[0]['ID'])
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5702 t = tags['4321,1012']
327
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 326
diff changeset
5703 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
5704 self.assertEqual('RadioButton3', t['Name'])
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5705 self.assertEqual('RadioLogic', t['PrivateCreator'])
9929e4af2b7a test_bitbucket_issue_140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 234
diff changeset
5706 self.assertEqual('aaabbbccc', t['Value'])
236
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5707
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5708
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5709 def test_find_normalize(self):
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5710 # https://groups.google.com/d/msg/orthanc-users/AIwooGjsh94/YL28MNY4AgAJ
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5711
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5712 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5713
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5714 a = DoPost(_REMOTE, '/modalities/self/query', {
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5715 'Level' : 'Instance',
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5716 'Query' : { 'Rows' : '42' }
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5717 }) ['ID']
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5718
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5719 b = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a)
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5720 self.assertEqual(1, len(b))
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5721 self.assertFalse('Rows' in b[0])
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5722
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5723 a = DoPost(_REMOTE, '/modalities/self/query', {
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5724 'Level' : 'Instance',
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5725 'Query' : { 'Rows' : '42' },
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5726 'Normalize' : False
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5727 }) ['ID']
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5728
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5729 b = DoGet(_REMOTE, '/queries/%s/answers' % a)
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5730 self.assertEqual(0, len(b))
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5731
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5732 a = DoPost(_REMOTE, '/modalities/self/query', {
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5733 'Level' : 'Instance',
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5734 'Query' : { 'Rows' : '512' },
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5735 'Normalize' : False
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5736 }) ['ID']
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5737
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5738 b = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a)
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5739 self.assertEqual(1, len(b))
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5740 self.assertTrue('Rows' in b[0])
2de1aec255ae test_find_normalize
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 235
diff changeset
5741 self.assertEqual('512', b[0]['Rows'])
237
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5742
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5743 a = DoPost(_REMOTE, '/modalities/self/query', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5744 'Level' : 'Instance',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5745 'Query' : { 'Rows' : '' },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5746 'Normalize' : False
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5747 }) ['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5748
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5749 b = DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5750 self.assertEqual(1, len(b))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5751 self.assertTrue('Rows' in b[0])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5752 self.assertEqual('512', b[0]['Rows'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5753
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5754 self.assertRaises(Exception, lambda: DoPost(
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5755 _REMOTE, '/modalities/self/query', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5756 'Level' : 'Instance',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5757 'Query' : { 'Rows' : '*' }, # Out-of-range value
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5758 'Normalize' : False
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 236
diff changeset
5759 }))
243
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5760
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5761
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5762 def test_bitbucket_issue_141(self):
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
5763 # 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
5764 a = UploadInstance(_REMOTE, 'Issue141.dcm') ['ID']
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5765 study = '494c8037-b237f263-d8f15075-c8cb2280-daf39bd1'
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5766
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5767 with open(GetDatabasePath('HelloWorld.pdf'), 'rb') as f:
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5768 pdf = f.read()
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5769
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5770 b = DoPost(_REMOTE, '/tools/create-dicom', {
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5771 'Parent' : study,
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5772 'Tags' : {},
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5773 'Content' : 'data:application/pdf;base64,' + base64.b64encode(pdf)
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5774 }) ['ID']
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5775
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5776 tagsA = DoGet(_REMOTE, '/instances/%s/tags?short' % a)
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5777 tagsB = DoGet(_REMOTE, '/instances/%s/tags?short' % b)
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5778 self.assertEqual(tagsA['0008,0005'], tagsB['0008,0005'])
cccf697a4e13 test_bitbucket_issue_141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 237
diff changeset
5779 self.assertEqual(tagsA['0008,1030'], tagsB['0008,1030'])
247
1abdab0ba0e6 test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 243
diff changeset
5780
1abdab0ba0e6 test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 243
diff changeset
5781
1abdab0ba0e6 test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 243
diff changeset
5782 def test_modifying_missing_patientid(self):
1abdab0ba0e6 test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 243
diff changeset
5783 # 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
5784 UploadInstance(_REMOTE, '2019-06-17-VedranZdesic.dcm')
1abdab0ba0e6 test_modifying_missing_patientid
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 243
diff changeset
5785 DoPost(_REMOTE, '/studies/0c4aca1d-c107a241-6659d6aa-594c674a-a468b94a/modify', {})
262
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5786
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5787
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5788 def test_log_level(self):
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
5789 # https://bugs.orthanc-server.com/show_bug.cgi?id=65
262
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5790 original = DoGet(_REMOTE, '/tools/log-level')
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5791
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5792 DoPut(_REMOTE, '/tools/log-level', 'default')
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5793 self.assertEqual('default', DoGet(_REMOTE, '/tools/log-level'))
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5794 DoGet(_REMOTE, '/system')
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5795
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5796 DoPut(_REMOTE, '/tools/log-level', 'verbose')
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5797 self.assertEqual('verbose', DoGet(_REMOTE, '/tools/log-level'))
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5798 DoGet(_REMOTE, '/system')
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5799
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5800 DoPut(_REMOTE, '/tools/log-level', 'trace')
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5801 self.assertEqual('trace', DoGet(_REMOTE, '/tools/log-level'))
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5802 DoGet(_REMOTE, '/system')
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5803
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5804 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/tools/log-level', 'nope'))
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5805
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5806 # Switch back to the original log level
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5807 DoPut(_REMOTE, '/tools/log-level', original)
264
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5808
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5809
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5810 def test_upload_compressed(self):
265
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
5811 # New in Orthanc 1.6.0
264
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5812 with open(GetDatabasePath('DummyCT.dcm.gz'), 'rb') as f:
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5813 d = f.read()
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5814
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5815 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/instances', d, 'application/dicom'))
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5816
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5817 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/instances', d, 'application/dicom',
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5818 headers = { 'Content-Encoding' : 'nope' }))
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5819
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5820 a = DoPost(_REMOTE, '/instances', d, 'application/dicom',
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5821 headers = { 'Content-Encoding' : 'gzip' })
445f498bc1d4 test_upload_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
5822 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', a['ID'])
262
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5823
045a45c3f945 test_log_level
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 260
diff changeset
5824
263
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5825 def test_study_series_find_inconsistency(self):
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5826 # 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
5827
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5828 def CountAnswers(query):
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5829 a = DoPost(_REMOTE, 'modalities/self/query', query)
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5830 return len(DoGet(_REMOTE, '%s/answers' % a['Path']))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5831
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5832 # 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
5833 # "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
5834 # the "main DICOM tags" of Orthanc.
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5835 UploadInstance(_REMOTE, 'Issue137.dcm')
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
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5838 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5839 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5840 }))
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 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5843 'Level' : 'Series',
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
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5846
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5847 ##
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5848 ## "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
5849 ## 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
5850 ##
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5851
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5852 # 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
5853 # is wiped out by the normalization
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5854 self.assertEqual(0, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5855 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5856 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5857 'SeriesDescription' : 'NOPE'
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5858 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5859 'Normalize' : False
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 self.assertEqual(0, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5862 # This test fails on Orthanc <= 1.5.8
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5863 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5864 'Query' : {
669
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5865 'ImageComments' : '*' # Wildcard matching => no match, as the tag is absent
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5866 },
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5867 'Normalize' : False
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5868 }))
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5869 self.assertEqual(1, CountAnswers({
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5870 'Level' : 'Study',
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5871 'Query' : {
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5872 'ImageComments' : ''
263
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5873 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5874 'Normalize' : False
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 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5877 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5878 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5879 'SeriesDescription' : 'THIS^VALUE^IS^WIPED^OUT'
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 'Normalize' : True
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 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5884 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5885 'Query' : {
669
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5886 'ImageComments' : '*' # Matches, as wiped out by the normalization
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5887 },
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5888 'Normalize' : True
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5889 }))
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5890 self.assertEqual(1, CountAnswers({
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5891 'Level' : 'Study',
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5892 'Query' : {
36c00333f6ef fix test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 668
diff changeset
5893 'ImageComments' : ''
263
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5894 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5895 'Normalize' : True
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5896 }))
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 for normalize in [ True, False ]:
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5899 # 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
5900 # normalization has no effect
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5901
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5902 # "Universal matching" will match all entities, including
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5903 # those with the missing tag
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5904 # 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
5905 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5906 'Level' : 'Series',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5907 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5908 'SeriesDescription' : '' # Universal matching
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5909 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5910 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5911 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5912 # "Universal matching" will match all entities, including
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5913 # those with the missing tag
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5914 # 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
5915 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5916 'Level' : 'Series',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5917 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5918 'SeriesDescription' : '*' # Wildcard matching
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5919 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5920 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5921 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5922 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5923 'Level' : 'Series',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5924 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5925 '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
5926 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5927 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5928 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5929 self.assertEqual(0, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5930 'Level' : 'Series',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5931 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5932 'SeriesDescription' : '*MISMATCHED^VALUE*'
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5933 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5934 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5935 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5936
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5937 # Universal matching matches any instance, even if the
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5938 # 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
5939 # makes no sense
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5940 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5941 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5942 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5943 'SeriesDescription' : '' # Universal matching
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5944 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5945 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5946 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5947
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5948
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5949
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5950 ##
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5951 ## "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
5952 ##
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5953
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5954 # 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
5955 # is wiped out by the normalization
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5956 self.assertEqual(0, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5957 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5958 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5959 'ProtocolName' : 'NOPE'
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5960 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5961 'Normalize' : False
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5962 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5963 self.assertEqual(0, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5964 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5965 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5966 '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
5967 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5968 'Normalize' : False
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5969 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5970 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5971 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5972 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5973 'ProtocolName' : 'THIS^VALUE^IS^WIPED^OUT'
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5974 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5975 'Normalize' : True
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5976 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5977 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5978 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5979 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5980 'ProtocolName' : '*' # Matches, as wiped out by the normalization
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5981 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5982 'Normalize' : True
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5983 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5984
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5985 for normalize in [ True, False ]:
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5986 # 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
5987 # normalization has no effect
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5988
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5989 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5990 'Level' : 'Series',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5991 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5992 'ProtocolName' : '' # Universal matching
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5993 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5994 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5995 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5996 self.assertEqual(0, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5997 'Level' : 'Series',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5998 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
5999 '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
6000 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6001 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6002 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6003 self.assertEqual(0, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6004 'Level' : 'Series',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6005 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6006 'ProtocolName' : '*MISMATCHED^VALUE*'
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6007 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6008 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6009 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6010
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6011 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6012 'Level' : 'Study',
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6013 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6014 'ProtocolName' : '' # Universal matching
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6015 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6016 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6017 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6018
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6019
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6020 ##
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6021 ## "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
6022 ##
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6023
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6024 for level in [ 'Study', 'Series' ] :
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6025 for normalize in [ True, False ]:
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6026 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6027 'Level' : level,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6028 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6029 'StudyInstanceUID' : '' # Universal matching
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6030 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6031 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6032 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6033 self.assertEqual(0, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6034 'Level' : level,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6035 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6036 'StudyInstanceUID' : 'MISMATCHED^VALUE'
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6037 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6038 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6039 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6040 self.assertEqual(1, CountAnswers({
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6041 'Level' : level,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6042 'Query' : {
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6043 '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
6044 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6045 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6046 }))
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6047
269
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 268
diff changeset
6048 # 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
6049 # This test fails on Orthanc <= 1.5.8
269
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 268
diff changeset
6050 self.assertRaises(Exception, lambda: CountAnswers({
263
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6051 'Level' : level,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6052 'Query' : {
269
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 268
diff changeset
6053 'StudyInstanceUID' : '*'
263
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6054 },
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6055 'Normalize' : normalize,
a2719263fd04 test_study_series_find_inconsistency
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 262
diff changeset
6056 }))
265
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6057
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6058
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6059 def test_rendered(self):
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6060 # New in Orthanc 1.6.0
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6061 i = UploadInstance(_REMOTE, 'ColorTestMalaterre.dcm')['ID']
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6062 im = GetImage(_REMOTE, '/instances/%s/rendered' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6063 self.assertEqual("RGB", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6064 self.assertEqual(41, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6065 self.assertEqual(41, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6066
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6067 # http://effbot.org/zone/pil-comparing-images.htm
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6068 truth = Image.open(GetDatabasePath('ColorTestMalaterre.png'))
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6069 self.assertTrue(ImageChops.difference(im, truth).getbbox() is None)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6070
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6071 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6072 self.assertEqual("RGB", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6073 self.assertEqual(10, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6074 self.assertEqual(10, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6075
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6076 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6077 self.assertEqual("RGB", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6078 self.assertEqual(10, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6079 self.assertEqual(10, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6080
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6081 im = GetImage(_REMOTE, '/instances/%s/rendered?height=128' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6082 self.assertEqual("RGB", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6083 self.assertEqual(128, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6084 self.assertEqual(128, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6085
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6086 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10&smooth=0' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6087 self.assertEqual("RGB", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6088 self.assertEqual(10, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6089 self.assertEqual(10, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6090
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6091 im = GetImage(_REMOTE, '/instances/%s/rendered?height=10&smooth=1' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6092 self.assertEqual("RGB", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6093 self.assertEqual(10, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6094 self.assertEqual(10, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6095
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6096 im = GetImage(_REMOTE, '/instances/%s/rendered?height=5&width=10' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6097 self.assertEqual("RGB", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6098 self.assertEqual(5, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6099 self.assertEqual(5, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6100
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6101
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6102 # Grayscale image
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6103 i = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6104 im = GetImage(_REMOTE, '/instances/%s/rendered' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6105 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6106 self.assertEqual(288, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6107 self.assertEqual(288, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6108 self.assertEqual(0, im.getpixel((0, 0)))
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6109
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6110 # Those are the original windowing parameters that are written
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6111 # inside the DICOM file
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6112 im2 = GetImage(_REMOTE, '/instances/%s/rendered?window-center=248.009544468547&window-width=431.351843817788' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6113 self.assertEqual("L", im2.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6114 self.assertEqual(288, im2.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6115 self.assertEqual(288, im2.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6116 self.assertTrue(ImageChops.difference(im, im2).getbbox() is None)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6117
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6118 im = GetImage(_REMOTE, '/instances/%s/rendered?width=512&smooth=0' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6119 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6120 self.assertEqual(512, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6121 self.assertEqual(512, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6122
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6123 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&smooth=0' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6124 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6125 self.assertEqual(10, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6126 self.assertEqual(10, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6127
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6128 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&smooth=1' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6129 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6130 self.assertEqual(10, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6131 self.assertEqual(10, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6132
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6133 im = GetImage(_REMOTE, '/instances/%s/rendered?width=1&window-center=-1000' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6134 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6135 self.assertEqual(1, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6136 self.assertEqual(1, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6137 self.assertEqual(255, im.getpixel((0, 0)))
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6138
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6139 im = GetImage(_REMOTE, '/instances/%s/rendered?width=1&window-center=1000' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6140 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6141 self.assertEqual(1, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6142 self.assertEqual(1, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6143 self.assertEqual(0, im.getpixel((0, 0)))
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6144
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6145
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6146 # Test monochrome 1
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6147 i = UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm')['ID']
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6148 im = GetImage(_REMOTE, '/instances/%s/rendered' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6149 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6150 self.assertEqual(2010, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6151 self.assertEqual(2446, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6152 self.assertEqual(0, im.getpixel((0, 0)))
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6153 im = GetImage(_REMOTE, '/instances/%s/rendered?width=20' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6154 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6155 self.assertEqual(20, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6156 self.assertEqual(24, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6157 im = GetImage(_REMOTE, '/instances/%s/rendered?height=24' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6158 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6159 self.assertEqual(20, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6160 self.assertEqual(24, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6161 im = GetImage(_REMOTE, '/instances/%s/rendered?width=10&height=24' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6162 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6163 self.assertEqual(10, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6164 self.assertEqual(12, im.size[1])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6165 im = GetImage(_REMOTE, '/instances/%s/rendered?width=40&height=24' % i)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6166 self.assertEqual("L", im.mode)
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6167 self.assertEqual(20, im.size[0])
8d63d035b837 test_rendered
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 264
diff changeset
6168 self.assertEqual(24, im.size[1])
268
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6169
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6170
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6171 def test_bitbucket_issue_154(self):
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6172 # "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
6173 # 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
6174 a = UploadInstance(_REMOTE, 'Issue154-d1.dcm') ['ID']
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6175 b = UploadInstance(_REMOTE, 'Issue154-d2.dcm') ['ID']
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6176
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6177 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
6178 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
6179 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
6180
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6181 # C-FIND is working on list of UIDs
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6182 i = CallFindScu([ '-k', 'QueryRetrieveLevel=SERIES',
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6183 '-k', 'StudyInstanceUID=%s' % study,
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6184 '-k', 'SeriesInstanceUID=%s\\%s' % (series1, series2) ])
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6185 series = re.findall('\(0020,000e\).*?\[(.*?)\]', i)
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6186 self.assertEqual(2, len(series))
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6187 self.assertTrue(series1 in series)
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6188 self.assertTrue(series2 in series)
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6189
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6190 # Individual retrieval is working in Orthanc < 1.6.0
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6191 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6192 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6193 '--study', '-k', 'QueryRetrieveLevel=SERIES',
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6194 '-k', 'StudyInstanceUID=%s' % study,
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6195 '-k', 'SeriesInstanceUID=%s' % series1,
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6196 ])))
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6197 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6198 '--study', '-k', 'QueryRetrieveLevel=SERIES',
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6199 '-k', 'StudyInstanceUID=%s' % study,
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6200 '-k', 'SeriesInstanceUID=%s' % series2,
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6201 ])))
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6202 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6203
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6204 DropOrthanc(_LOCAL)
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6205
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6206 # 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
6207 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6208 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6209 '--study', '-k', 'QueryRetrieveLevel=SERIES',
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6210 '-k', 'StudyInstanceUID=%s' % study,
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6211 '-k', 'SeriesInstanceUID=%s\\%s' % (series1, series2),
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6212 ])))
c8d79d8258cd test_bitbucket_issue_154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 267
diff changeset
6213 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
279
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6214
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6215
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6216 def test_storage_commitment_api(self):
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6217 # 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
6218
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6219 def WaitTransaction(uid):
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6220 while True:
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6221 s = DoGet(_REMOTE, '/storage-commitment/%s' % uid)
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6222 if s['Status'] != 'Pending':
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6223 return s
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6224 else:
342
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
6225 time.sleep(0.01)
280
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6226
281
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6227 instance = UploadInstance(_REMOTE, 'DummyCT.dcm')
279
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6228 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
6229 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
6230
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6231 # Against self
281
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6232 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6233 "DicomInstances" : [ [ sopClassUid, sopInstanceUid ] ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6234 }) ['ID']
279
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6235 self.assertTrue(transaction.startswith('2.25.'))
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6236
280
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6237 result = WaitTransaction(transaction)
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6238 self.assertEqual('ORTHANC', result['RemoteAET'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6239 self.assertEqual('Success', result['Status'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6240 self.assertEqual(1, len(result['Success']))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6241 self.assertEqual(0, len(result['Failures']))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6242 self.assertEqual(sopClassUid, result['Success'][0]['SOPClassUID'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6243 self.assertEqual(sopInstanceUid, result['Success'][0]['SOPInstanceUID'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6244
281
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6245 tmp = DoPost(_REMOTE, '/modalities/self/storage-commitment', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6246 "DicomInstances" : [
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6247 { 'SOPClassUID' : sopClassUid,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6248 'SOPInstanceUID' : sopInstanceUid },
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6249 ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6250 })
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6251 self.assertEqual(tmp['Path'], '/storage-commitment/%s' % tmp['ID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6252 self.assertEqual(result, WaitTransaction(transaction))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6253
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6254 tmp = DoPost(_REMOTE, '/modalities/self/storage-commitment', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6255 "Resources" : [
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6256 instance['ID'],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6257 instance['ParentSeries'],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6258 instance['ParentStudy'],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6259 instance['ParentPatient'],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6260 ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6261 })
280
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6262 self.assertEqual(tmp['Path'], '/storage-commitment/%s' % tmp['ID'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6263 self.assertEqual(result, WaitTransaction(transaction))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6264
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6265
281
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6266 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6267 "DicomInstances" : [
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6268 [ 'nope', 'nope2' ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6269 [ sopClassUid, sopInstanceUid ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6270 ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 280
diff changeset
6271 }) ['ID']
279
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6272 self.assertTrue(transaction.startswith('2.25.'))
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6273
280
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6274 result = WaitTransaction(transaction)
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6275 self.assertEqual('ORTHANC', result['RemoteAET'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6276 self.assertEqual('Failure', result['Status'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6277 self.assertEqual(1, len(result['Success']))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6278 self.assertEqual(1, len(result['Failures']))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6279 self.assertEqual(sopClassUid, result['Success'][0]['SOPClassUID'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6280 self.assertEqual(sopInstanceUid, result['Success'][0]['SOPInstanceUID'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6281 self.assertEqual('nope', result['Failures'][0]['SOPClassUID'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6282 self.assertEqual('nope2', result['Failures'][0]['SOPInstanceUID'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6283 self.assertEqual(274, result['Failures'][0]['FailureReason'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6284
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6285 # Cannot remove items from a failed storage commitment transaction
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6286 self.assertRaises(Exception, lambda:
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6287 DoPost(_REMOTE, '/storage-commitment/%s/remove' % transaction))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6288
279
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6289
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6290 # 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
6291 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
6292 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
6293 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
6294 "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
6295 [ 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
6296 ]
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
6297 }))
279
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6298
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6299
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6300
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6301 def test_storage_commitment_store(self):
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6302 # 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
6303
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6304 def WaitTransaction(uid):
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6305 while True:
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6306 s = DoGet(_REMOTE, '/storage-commitment/%s' % uid)
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6307 if s['Status'] != 'Pending':
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6308 return s
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6309 else:
342
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
6310 time.sleep(0.01)
280
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6311
279
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6312 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6313 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6314 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6315
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6316 # 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
6317 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
6318 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
6319 '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
6320 '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
6321 }))
279
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6322
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6323 j = DoPost(_REMOTE, '/modalities/orthanctest/store', {
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6324 'Resources' : [ i ],
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6325 'StorageCommitment' : False,
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6326 })
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6327 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6328
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6329 j = DoPost(_REMOTE, '/modalities/self/store', {
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6330 'Resources' : [ i ],
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6331 'StorageCommitment' : True,
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6332 })
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6333
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6334 transaction = j['StorageCommitmentTransactionUID']
31e1e49df380 starting tests for storage commitment
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 269
diff changeset
6335 self.assertTrue(transaction.startswith('2.25.'))
280
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6336
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6337 result = WaitTransaction(transaction)
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6338 self.assertEqual('ORTHANC', result['RemoteAET'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6339 self.assertEqual('Success', result['Status'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6340 self.assertEqual(1, len(result['Success']))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6341 self.assertEqual(0, len(result['Failures']))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6342 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
6343 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
6344 result['Success'][0]['SOPInstanceUID'])
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6345
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6346 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6347 DoPost(_REMOTE, '/storage-commitment/%s/remove' % transaction)
5daa3896981c testing storage commitment reports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 279
diff changeset
6348 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
285
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6349
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6350
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6351 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
6352 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6353 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6354
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6355 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f:
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6356 dicom = f.read()
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6357
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6358 self.assertRaises(Exception, lambda: DoPost(
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6359 _REMOTE, '/modalities/orthanctest/store-straight', 'nope', 'nope'))
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6360
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6361 answer = DoPost(_REMOTE, '/modalities/orthanctest/store-straight', dicom, 'nope')
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6362
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6363 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
6364 answer['SOPClassUID'])
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6365 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
6366 answer['SOPInstanceUID'])
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6367
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6368 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
281a32ecc5c1 test_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 281
diff changeset
6369 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
289
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6370
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6371
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6372 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
6373 # Add a RLE-encoded DICOM file
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6374 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
6375 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6376 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6377 rleSize = len(DoGet(_REMOTE, '/instances/%s/file' % i))
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6378
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6379 # Export the instance, with transcoding: "_REMOTE" is the
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6380 # Orthanc server being tested
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6381 try:
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6382 DoDelete(_REMOTE, '/modalities/toto')
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6383 except:
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6384 pass
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6385
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6386 params = DoGet(_REMOTE, '/modalities?expand') ['orthanctest']
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6387 DoPut(_REMOTE, '/modalities/toto', params)
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6388 DoPost(_REMOTE, '/modalities/toto/store', str(i), 'text/plain')
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6389 j = DoGet(_LOCAL, '/instances')
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6390 self.assertEqual(1, len(j))
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6391 uncompressedSize = len(DoGet(_LOCAL, '/instances/%s/file' % j[0]))
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6392 self.assertTrue(uncompressedSize > rleSize / 2)
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6393
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
6394 # 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
6395 params['AllowTranscoding'] = False
4a70411ac9ad test_storescu_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 285
diff changeset
6396 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
6397 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
6398 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
6399 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
6400 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
6401 DoDelete(_REMOTE, '/modalities/toto')
290
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6402
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6403
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6404 def test_bitbucket_issue_169(self):
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6405 with open(GetDatabasePath('Issue169.dcm.bz2'), 'rb') as f:
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6406 dicom = bz2.decompress(f.read())
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6407
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6408 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
6409
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6410 self.assertEqual(44350560, len(dicom))
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6411 i = DoPost(_REMOTE, '/instances', dicom, 'application/dicom') ['ID']
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6412
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6413 tags = DoGet(_REMOTE, '/instances/%s/tags' % i)
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6414 self.assertEqual('NORMAL', tags['1337,1001']['Value'])
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6415
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6416 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6417 DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain')
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6418 j = DoGet(_LOCAL, '/instances')
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6419 self.assertEqual(1, len(j))
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6420
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6421 # 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
6422 # 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
6423 # Little Endian" (1.2.840.10008.1.2)
291
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6424 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6425 DoGet(_LOCAL, '/instances/%s/file' % j[0])))
290
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6426
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6427 # 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
6428 # because of this transcoding
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6429 tags = DoGet(_LOCAL, '/instances/%s/tags' % j[0])
b5333f87065b test_bitbucket_issue_169
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 289
diff changeset
6430 self.assertEqual('NORMAL', tags['1337,1001']['Value'])
291
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6431
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6432
302
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6433 def test_modify_transcode_instance(self):
291
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6434 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID']
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6435 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6436 DoGet(_REMOTE, '/instances/%s/file' % i)))
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6437
299
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6438 a = ExtractDicomTags(DoGet(_REMOTE, '/instances/%s/file' % i), [ 'SOPInstanceUID' ]) [0]
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6439 self.assertTrue(len(a) > 20)
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6440
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6441 SYNTAXES = [
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6442 '1.2.840.10008.1.2',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6443 '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
6444 #'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
6445 '1.2.840.10008.1.2.2',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6446 '1.2.840.10008.1.2.4.50',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6447 '1.2.840.10008.1.2.4.51',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6448 '1.2.840.10008.1.2.4.57',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6449 '1.2.840.10008.1.2.4.70',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6450 ]
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6451
304
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 302
diff changeset
6452 if HasGdcmPlugin(_REMOTE):
299
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6453 SYNTAXES = SYNTAXES + [
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6454 '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
6455 '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
6456 '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
6457 '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
6458 ]
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6459
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6460 for syntax in SYNTAXES:
291
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6461 transcoded = DoPost(_REMOTE, '/instances/%s/modify' % i, {
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6462 'Transcode' : syntax,
299
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6463 'Keep' : [ 'SOPInstanceUID' ],
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6464 'Force' : True,
291
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6465 })
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6466
cfa785074c64 test_modify_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 290
diff changeset
6467 self.assertEqual(syntax, GetTransferSyntax(transcoded))
292
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6468
299
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6469 b = ExtractDicomTags(transcoded, [ 'SOPInstanceUID' ]) [0]
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6470 self.assertTrue(len(b) > 20)
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6471 if syntax in [ '1.2.840.10008.1.2.4.50',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6472 '1.2.840.10008.1.2.4.51',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6473 '1.2.840.10008.1.2.4.81',
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6474 '1.2.840.10008.1.2.4.91' ]:
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6475 # Lossy transcoding: The SOP instance UID must have changed
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6476 self.assertNotEqual(a, b)
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6477 else:
c2144cf4bd83 HasGdcmPlugin() test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 293
diff changeset
6478 self.assertEqual(a, b)
292
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6479
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6480 def test_archive_transcode(self):
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6481 info = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6482
293
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6483 # GET on "/media"
292
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6484 z = GetArchive(_REMOTE, '/patients/%s/media' % info['ParentPatient'])
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6485 self.assertEqual(2, len(z.namelist()))
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6486 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
6487
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6488 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
6489
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6490 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
6491 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
6492
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6493 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
6494 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
6495
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6496 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
6497 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
6498
293
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6499
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6500 # POST on "/media"
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6501 self.assertRaises(Exception, lambda: PostArchive(
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6502 _REMOTE, '/patients/%s/media' % info['ParentPatient'], { 'Transcode' : 'nope' }))
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6503
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6504 z = PostArchive(_REMOTE, '/patients/%s/media' % info['ParentPatient'], {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6505 'Transcode' : '1.2.840.10008.1.2.4.50',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6506 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6507 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
6508
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6509 z = PostArchive(_REMOTE, '/studies/%s/media' % info['ParentStudy'], {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6510 'Transcode' : '1.2.840.10008.1.2.4.51',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6511 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6512 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
6513
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6514 z = PostArchive(_REMOTE, '/series/%s/media' % info['ParentSeries'], {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6515 'Transcode' : '1.2.840.10008.1.2.4.57',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6516 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6517 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
6518
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6519
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6520 # GET on "/archive"
292
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6521 z = GetArchive(_REMOTE, '/patients/%s/archive' % info['ParentPatient'])
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6522 self.assertEqual(1, len(z.namelist()))
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6523 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
6524
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6525 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
6526
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6527 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
6528 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
6529
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6530 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
6531 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
6532
e1827a4f5d3b test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
6533 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
6534 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
6535
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6536
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6537 # POST on "/archive"
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6538 self.assertRaises(Exception, lambda: PostArchive(
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6539 _REMOTE, '/patients/%s/archive' % info['ParentPatient'], { 'Transcode' : 'nope' }))
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6540
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6541 z = PostArchive(_REMOTE, '/patients/%s/archive' % info['ParentPatient'], {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6542 'Transcode' : '1.2.840.10008.1.2.4.50',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6543 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6544 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
6545
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6546 z = PostArchive(_REMOTE, '/studies/%s/archive' % info['ParentStudy'], {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6547 'Transcode' : '1.2.840.10008.1.2.4.51',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6548 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6549 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
6550
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6551 z = PostArchive(_REMOTE, '/series/%s/archive' % info['ParentSeries'], {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6552 'Transcode' : '1.2.840.10008.1.2.4.57',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6553 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6554 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
6555
293
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6556
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6557 # "/tools/create-*"
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6558 z = PostArchive(_REMOTE, '/tools/create-archive', {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6559 'Resources' : [ info['ParentStudy'] ],
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6560 'Transcode' : '1.2.840.10008.1.2.4.50',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6561 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6562 self.assertEqual(1, len(z.namelist()))
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6563 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
6564
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6565 z = PostArchive(_REMOTE, '/tools/create-media', {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6566 'Resources' : [ info['ParentStudy'] ],
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6567 'Transcode' : '1.2.840.10008.1.2.4.51',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6568 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6569 self.assertEqual(2, len(z.namelist()))
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6570 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
6571
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6572 z = PostArchive(_REMOTE, '/tools/create-media-extended', {
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6573 'Resources' : [ info['ParentStudy'] ],
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6574 'Transcode' : '1.2.840.10008.1.2.4.57',
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6575 })
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6576 self.assertEqual(2, len(z.namelist()))
032722c3e919 extended test_archive_transcode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 292
diff changeset
6577 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
6578
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6579 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6580 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
6581 self.assertEqual(1, len(z.namelist()))
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6582 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
6583
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6584 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
6585 self.assertEqual(2, len(z.namelist()))
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6586 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
6587
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6588 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
6589 self.assertEqual(2, len(z.namelist()))
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6590 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
6591
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6592
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
6593
308
2565d39dd36c integration mainline->c-get
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 307 305
diff changeset
6594
587
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6595 def test_download_file_transcode(self):
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6596 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6597
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6598 info = UploadInstance(_REMOTE, 'TransferSyntaxes/1.2.840.10008.1.2.1.dcm')
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6599 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6600 DoGet(_REMOTE, '/instances/%s/file' % info['ID'])))
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6601
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6602 self.assertEqual('1.2.840.10008.1.2.4.50', GetTransferSyntax(
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6603 DoGet(_REMOTE, '/instances/%s/file?transcode=1.2.840.10008.1.2.4.50' % info['ID'])))
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6604
f29d3ff889bf new test for /file?transcode=...
Alain Mazy <am@osimis.io>
parents: 585
diff changeset
6605
301
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6606 def test_modify_keep_source(self):
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6607 # 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
6608 i = UploadInstance(_REMOTE, 'DummyCT.dcm')
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6609 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6610
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6611 j = DoPost(_REMOTE, '/studies/%s/modify' % i['ParentStudy'], {
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6612 'Replace' : {
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6613 'StationName' : 'TEST',
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6614 },
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6615 'KeepSource' : True,
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6616 })
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6617
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6618 s = DoGet(_REMOTE, '/studies')
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6619 self.assertEqual(2, len(s))
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6620 self.assertTrue(i['ParentStudy'] in s)
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6621 self.assertTrue(j['ID'] in s)
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6622
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6623 DoDelete(_REMOTE, '/studies/%s' % j['ID'])
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6624 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6625
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6626 j = DoPost(_REMOTE, '/studies/%s/modify' % i['ParentStudy'], {
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6627 'Replace' : {
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6628 'StationName' : 'TEST',
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6629 },
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6630 'KeepSource' : False,
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6631 })
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6632
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6633 s = DoGet(_REMOTE, '/studies')
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6634 self.assertEqual(1, len(s))
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6635 self.assertFalse(i['ParentStudy'] in s)
6652d5720a45 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 300
diff changeset
6636 self.assertTrue(j['ID'] in s)
302
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6637
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6638
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6639 def test_modify_transcode_study(self):
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6640 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6641 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
6642 DoGet(_REMOTE, '/instances/%s/file' % i['ID'])))
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6643
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6644 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6645 j = DoPost(_REMOTE, '/studies/%s/modify' % i['ParentStudy'], {
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6646 'Transcode' : '1.2.840.10008.1.2.4.50',
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6647 'KeepSource' : False
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6648 })
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6649
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6650 k = DoGet(_REMOTE, '/instances')
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6651 self.assertEqual(1, len(k))
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6652 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
6653 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
6654 DoGet(_REMOTE, '/instances/%s/file' % k[0])))
22b6dd0f8c84 test_modify_transcode_study
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 301
diff changeset
6655
305
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6656
498
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6657 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
6658 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
6659 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
6660 'Replace' : replaceTags,
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6661 'Force': force,
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6662 'KeepSource' : keepSource
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6663 })
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6664
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6665 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
6666
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6667 i = UploadInstance(_REMOTE, 'DummyCT.dcm')
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6668 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
6669
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6670 # 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
6671 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
6672 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
6673
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6674 # 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
6675 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
6676 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
6677
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6678 # 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
6679 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
6680 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
6681
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6682
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6683 # 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
6684 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
6685 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
6686 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
6687
500
Alain Mazy <am@osimis.io>
parents: 498
diff changeset
6688 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
6689 # 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
6690 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
6691 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
6692 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
6693
62f37c13d4d0 new tests for modifications after sanity checks cleanup
Alain Mazy <am@osimis.io>
parents: 497
diff changeset
6694
504
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6695 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
6696 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
6697 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
6698
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6699 if dropOrthanc:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6700 DropOrthanc(_REMOTE)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6701
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6702 UploadFolder(_REMOTE, 'Knee/T1')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6703 UploadFolder(_REMOTE, 'Knee/T2')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6704
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6705 if dropOrthanc:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6706 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
6707
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6708 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
6709 'Replace' : replaceTags,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6710 'Force': force,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6711 'KeepSource' : keepSource
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6712 })
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6713 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
6714 return (modifyResponse, modifiedResource)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6715
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6716 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
6717 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
6718 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
6719 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
6720 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
6721 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
6722 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
6723
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6724 ####### study level tests #######
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6725
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6726 # 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
6727 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
6728 'StudyInstanceUID': kneeStudyInstanceUID,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6729 'StudyDescription': 'TOTO'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6730 }, force=True, keepSource=True)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6731 self.assertEqual(kneeStudy, modifyResponse['ID'])
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6732 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
6733
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6734 # 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
6735 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
6736 'StudyInstanceUID': kneeStudyInstanceUID,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6737 'PatientName': 'TOTO'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6738 }, force=True, keepSource=True)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6739 self.assertEqual(kneeStudy, modifyResponse['ID'])
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6740 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
6741 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
6742 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
6743
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6744 # 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
6745 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
6746 'StudyInstanceUID': kneeStudyInstanceUID,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6747 'PatientID': 'TOTO_ID',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6748 'PatientName': 'TOTO'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6749 }, force=True, keepSource=True)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6750 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
6751 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
6752 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
6753 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
6754 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
6755 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
6756
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6757 ####### series level tests #######
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6758 # 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
6759 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
6760 'SeriesInstanceUID': kneeSeriesInstanceUIDT1,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6761 'StudyInstanceUID': kneeStudyInstanceUID,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6762 'SeriesDescription': 'TOTO'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6763 }, force=True, keepSource=True)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6764 self.assertEqual(kneeSeriesT1, modifyResponse['ID'])
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6765 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
6766 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
6767
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6768
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6769 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
6770 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
6771
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6772 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
6773 patientDicomId = 'TEST_1'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6774 patientName = 'Test'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6775 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
6776 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
6777
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6778 DropOrthanc(_REMOTE)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6779 UploadFolder(_REMOTE, 'PatientWith2studies')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6780
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6781 # 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
6782
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6783 if True:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6784 # 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
6785 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
6786 'Replace' : {'PatientName': "TOTO"},
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6787 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6788 'KeepSource' : True
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6789 }))
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6790
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6791 if True:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6792 # 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
6793 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
6794 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6795 'PatientName': 'TOTO'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6796 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6797 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6798 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6799 })
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6800 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
6801 # 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
6802 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
6803
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6804 # 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
6805 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
6806 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
6807 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
6808 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
6809 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
6810
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6811 if True:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6812 # 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
6813 DropOrthanc(_REMOTE)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6814 UploadFolder(_REMOTE, 'PatientWith2studies')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6815
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6816 # 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
6817 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
6818 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6819 'PatientName': 'TOTO'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6820 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6821 'Keep': ['StudyInstanceUID', 'SeriesInstanceUID'],
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6822 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6823 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6824 })
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6825 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
6826 # 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
6827 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
6828
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6829 # 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
6830 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
6831 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
6832 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
6833 # 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
6834 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
6835 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
6836 # 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
6837 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
6838 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
6839
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6840 if True:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6841 # 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
6842 # 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
6843 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
6844 'Replace' : {'PatientName': "TOTO"},
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6845 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6846 'Keep': ['StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID'],
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6847 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6848 }))
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6849
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6850 if True:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6851 # 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
6852 DropOrthanc(_REMOTE)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6853 UploadFolder(_REMOTE, 'PatientWith2studies')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6854
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6855 # 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
6856 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
6857 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6858 'PatientName': 'TOTO'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6859 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6860 'Keep': ['StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID'],
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6861 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6862 'KeepSource' : True
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6863 })
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6864 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
6865 # 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
6866 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
6867
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6868 # 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
6869 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
6870 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
6871 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
6872 # 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
6873 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
6874 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
6875 # 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
6876 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
6877 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
6878
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6879
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6880 if True:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6881 # 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
6882 DropOrthanc(_REMOTE)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6883 UploadFolder(_REMOTE, 'PatientWith2studies')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6884 UploadFolder(_REMOTE, 'Knee/T1')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6885
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6886 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
6887
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6888 # 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
6889
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6890 # 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
6891 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
6892 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6893 'PatientID': 'TEST_1'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6894 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6895 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6896 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6897 }))
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6898
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6899 # 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
6900 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
6901 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6902 'PatientID': 'TEST_1',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6903 'PatientName': 'Test',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6904 'PatientBirthDate': '19000101',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6905 'PatientSex': 'F' # this is wrong !
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6906 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6907 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6908 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6909 }))
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6910
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6911 # 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
6912 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
6913 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6914 'PatientID': 'TEST_1',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6915 'PatientName': 'Test',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6916 'PatientBirthDate': '19000101',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6917 'PatientSex': 'M',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6918 '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
6919 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6920 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6921 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6922 }))
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6923
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6924 # 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
6925 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
6926 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6927 'PatientID': 'TEST_1',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6928 'PatientName': 'Test',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6929 'PatientBirthDate': '19000101',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6930 'PatientSex': 'M'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6931 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6932 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6933 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6934 })
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6935 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
6936 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
6937 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
6938 # 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
6939 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
6940
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6941
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6942 if True:
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6943 # 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
6944 DropOrthanc(_REMOTE)
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6945 UploadFolder(_REMOTE, 'PatientWith2studies')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6946 UploadFolder(_REMOTE, 'Knee/T1')
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6947
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6948 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
6949 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
6950
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6951 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
6952
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6953 # 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
6954 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
6955 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6956 'PatientName': 'Test Knee',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6957 'StudyDescription': 'Knee study'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6958 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6959 'Keep': ['StudyInstanceUID'],
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6960 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6961 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6962 })
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6963 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
6964 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
6965 # 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
6966 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
6967 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
6968
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6969 # 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
6970 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
6971 'Replace' : {
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6972 'PatientName': 'Test Knee 2',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6973 'PatientID': 'TEST_KNEE_2',
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6974 'StudyDescription': 'Knee study 2'
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6975 },
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6976 'Force': True,
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6977 'KeepSource' : False
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6978 })
16ff0375835d new tests and modified tests for new DicomModificationJob features
Alain Mazy <am@osimis.io>
parents: 501
diff changeset
6979 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
6980 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
6981 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
6982 # 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
6983 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
6984 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
6985 # 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
6986 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
6987
305
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6988 def test_store_peer_transcoding(self):
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6989 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID']
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6990
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6991 SYNTAXES = [
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6992 '1.2.840.10008.1.2',
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6993 '1.2.840.10008.1.2.1',
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6994 #'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
6995 '1.2.840.10008.1.2.2',
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6996 '1.2.840.10008.1.2.4.50',
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6997 '1.2.840.10008.1.2.4.51',
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6998 '1.2.840.10008.1.2.4.57',
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
6999 '1.2.840.10008.1.2.4.70',
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7000 ]
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7001
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7002 if HasGdcmPlugin(_REMOTE):
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7003 SYNTAXES = SYNTAXES + [
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7004 '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
7005 '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
7006 '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
7007 '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
7008 ]
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7009
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7010 for syntax in SYNTAXES:
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7011 body = {
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7012 'Resources' : [ i ],
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7013 }
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7014
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7015 if syntax != '1.2.840.10008.1.2.1':
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7016 body['Transcode'] = syntax
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7017
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7018 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7019 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7020 DoPost(_REMOTE, '/peers/peer/store', body, 'text/plain')
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7021 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7022 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7023 self.assertEqual(syntax, GetTransferSyntax(
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7024 DoGet(_LOCAL, '/instances/%s/file' % DoGet(_LOCAL, '/instances') [0])))
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7025
ed20ead1a8b6 test_store_peer_transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 304
diff changeset
7026 DropOrthanc(_LOCAL)
308
2565d39dd36c integration mainline->c-get
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 307 305
diff changeset
7027
2565d39dd36c integration mainline->c-get
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 307 305
diff changeset
7028
295
946b2199f481 added test for c-get
Alain Mazy <alain@mazy.be>
parents: 285
diff changeset
7029 def test_getscu(self):
307
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7030 def CleanTarget():
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7031 if os.path.isdir('/tmp/GETSCU'):
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7032 shutil.rmtree('/tmp/GETSCU')
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7033 os.makedirs('/tmp/GETSCU')
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7034
306
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7035 env = {}
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7036 if _DOCKER:
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7037 # 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
7038 # and running in a GNU/Linux distribution running DCMTK
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7039 # 3.6.0. Tell "getscu" where it can find the DICOM dictionary.
529
53cf0e3ad007 get DCMDICPATH from env
Alain Mazy <am@osimis.io>
parents: 527
diff changeset
7040 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
7041
295
946b2199f481 added test for c-get
Alain Mazy <alain@mazy.be>
parents: 285
diff changeset
7042 # no transcoding required
307
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7043 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7044
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7045 CleanTarget()
295
946b2199f481 added test for c-get
Alain Mazy <alain@mazy.be>
parents: 285
diff changeset
7046
306
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7047 subprocess.check_call([
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7048 FindExecutable('getscu'),
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7049 _REMOTE['Server'],
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7050 str(_REMOTE['DicomPort']),
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7051 '-aec', 'ORTHANC',
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7052 '-aet', 'ORTHANCTEST', # pretend to be the other orthanc
307
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7053 '-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
7054 '-k', '0008,0052=STUDY',
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7055 '--output-directory', '/tmp/GETSCU/'
da2be3ff2db5 fix getscu binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 296
diff changeset
7056 ], env = env)
295
946b2199f481 added test for c-get
Alain Mazy <alain@mazy.be>
parents: 285
diff changeset
7057
311
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7058 f1 = '/tmp/GETSCU/MR.1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7059 self.assertTrue(os.path.isfile(f1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7060 with open(f1, 'rb') as f:
543
Alain Mazy <am@osimis.io>
parents: 540
diff changeset
7061 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(f.read(), encoding='ISO-8859-1'))
311
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7062
307
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7063 CleanTarget()
295
946b2199f481 added test for c-get
Alain Mazy <alain@mazy.be>
parents: 285
diff changeset
7064
946b2199f481 added test for c-get
Alain Mazy <alain@mazy.be>
parents: 285
diff changeset
7065 # transcoding required
311
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7066 UploadInstance(_REMOTE, 'TransferSyntaxes/1.2.840.10008.1.2.4.50.dcm')
307
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7067
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7068 subprocess.check_call([
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7069 FindExecutable('getscu'),
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7070 _REMOTE['Server'],
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7071 str(_REMOTE['DicomPort']),
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7072 '-aec', 'ORTHANC',
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7073 '-aet', 'ORTHANCTEST', # pretend to be the other orthanc
311
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7074 '-k', '0020,000d=2.16.840.1.113669.632.20.1211.10000357775\\1.2.840.113663.1298.6234813.1.298.20000329.1115122',
307
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7075 '-k', '0008,0052=STUDY',
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7076 '--output-directory', '/tmp/GETSCU/'
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7077 ], env = env)
5be63aef39b1 fix test_getscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 306
diff changeset
7078
311
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7079 self.assertTrue(os.path.isfile(f1))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7080 with open(f1, 'rb') as f:
543
Alain Mazy <am@osimis.io>
parents: 540
diff changeset
7081 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax(f.read(), encoding='ISO-8859-1'))
311
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7082
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7083 # This file is transcoded from "1.2.840.10008.1.2.4.50" to "1.2.840.10008.1.2.1"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7084 # (LittleEndianExplicit is proposed by default by "getscu")
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7085 f2 = '/tmp/GETSCU/US.1.2.840.113663.1298.1.3.715.20000329.1115326'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7086 self.assertTrue(os.path.isfile(f2))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7087 with open(f2, 'rb') as f:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 308
diff changeset
7088 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
7089
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7090
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7091 def test_findscu_truncation(self):
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7092 # https://groups.google.com/forum/#!msg/orthanc-users/FkckWAHvso8/UbRBAhQ5CwAJ
585
536e1a76a2b5 new hg server
Alain Mazy <am@osimis.io>
parents: 584
diff changeset
7093 # 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
7094 UploadInstance(_REMOTE, 'Multiframe.dcm')
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7095 UploadInstance(_REMOTE, 'ColorTestImageJ.dcm')
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7096
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7097 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
7098
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7099 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k', 'StudyInstanceUID' ])
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7100 result = re.findall('\(0020,000d\).*?\[(.*?)\]', i)
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7101 self.assertEqual(2, len(result))
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7102
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7103 # 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
7104 # study, leading to a string of 249 characters
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7105 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k',
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7106 'StudyInstanceUID=%s\\%s\\%s\\%s\\%s' % (( study, ) * 5) ])
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7107 result = re.findall('\(0020,000d\).*?\[(.*?)\]', i)
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7108 self.assertEqual(1, len(result))
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7109
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7110 # 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
7111 # study, leading to a string of 299 characters. In Orthanc <=
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7112 # 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
7113 # == 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
7114 # 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
7115 # "StudyInstanceUID" and returns all the available
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7116 # 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
7117 i = CallFindScu([ '-k', '0008,0052=STUDY', '-k',
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7118 'StudyInstanceUID=%s\\%s\\%s\\%s\\%s\\%s' % (( study, ) * 6) ])
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7119 result = re.findall('\(0020,000d\).*?\[(.*?)\]', i)
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7120 self.assertEqual(1, len(result))
328
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7121
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7122
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7123 def test_store_compressed(self):
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7124 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f:
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7125 dicom = f.read()
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7126 i = DoPost(_REMOTE, '/instances', dicom) ['ID']
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7127 sourceSize = len(dicom)
324
6164d39399ad test_findscu_truncation
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 323
diff changeset
7128
328
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7129 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7130 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7131
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7132 # 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
7133 jobId = MonitorJob2(_REMOTE, lambda: DoPost(
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7134 _REMOTE, '/peers/peer/store', {
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7135 'Resources' : [ i ],
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7136 'Synchronous' : False,
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7137 }))
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7138
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7139 job = DoGet(_REMOTE, '/jobs/%s' % jobId)
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7140 self.assertFalse(job['Content']['Compress'])
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7141 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
7142 self.assertEqual(str(sourceSize), job['Content']['Size'])
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7143
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7144 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7145 DropOrthanc(_LOCAL)
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7146
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
7147 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
7148 # 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
7149 # 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
7150 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/peers/peer/store', {
328
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7151 'Resources' : [ i ],
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7152 'Compress' : True,
8a462f9c5a97 test_store_compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 327
diff changeset
7153 }))
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
7154 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
7155
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
7156 # 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
7157 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
7158 _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
7159 '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
7160 '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
7161 '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
7162 }))
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
7163
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
7164 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
7165 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
7166
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
7167 # 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
7168 self.assertLess(int(job['Content']['Size']), sourceSize / 2)
332
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7169
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7170
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7171 def test_move_ambra(self):
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7172 # "Orthanc + Ambra: Query/Retrieve" (2020-08-25)
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7173 # https://groups.google.com/g/orthanc-users/c/yIUnZ9v9-Zs/m/GQPXiAOiCQAJ
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7174
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7175 UploadInstance(_REMOTE, '2019-06-17-VedranZdesic.dcm')
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7176
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7177 self.assertFalse(MonitorJob(_REMOTE, lambda: CallMoveScu([
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7178 '--study',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7179 '-k', 'StudyInstanceUID='
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7180 ])))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7181
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7182 self.assertFalse(MonitorJob(_REMOTE, lambda: CallMoveScu([
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7183 '--study',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7184 '-k', 'AccessionNumber=',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7185 ])))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7186
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7187 self.assertFalse(MonitorJob(_REMOTE, lambda: CallMoveScu([
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7188 '--study',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7189 '-k', 'AccessionNumber=',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7190 '-k', 'StudyInstanceUID='
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7191 ])))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7192
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7193 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7194 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7195 '--study',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7196 '-k', 'AccessionNumber=CT16000988',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7197 '-k', 'StudyInstanceUID=',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7198 ])))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7199 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7200 DropOrthanc(_LOCAL)
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7201
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7202 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7203 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7204 '--study',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7205 '-k', 'AccessionNumber=CT16000988',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7206 '-k', 'StudyInstanceUID=1.2.840.113619.2.278.3.4194965761.659.1468842739.39',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7207 ])))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7208 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7209 DropOrthanc(_LOCAL)
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7210
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7211 # This fails on Orthanc <= 1.7.3
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7212 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7213 self.assertTrue(MonitorJob(_REMOTE, lambda: CallMoveScu([
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7214 '--study',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7215 '-k', 'AccessionNumber=',
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7216 '-k', 'StudyInstanceUID=1.2.840.113619.2.278.3.4194965761.659.1468842739.39'
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7217 ])))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7218 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
dc41bfa4bda5 test_move_ambra
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 328
diff changeset
7219 DropOrthanc(_LOCAL)
333
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7220
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7221
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7222 def test_decode_elscint(self):
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7223 # 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
7224 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
7225 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
7226
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7227 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % a)
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7228 self.assertEqual("L", im.mode)
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7229 self.assertEqual(512, im.size[0])
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7230 self.assertEqual(512, im.size[1])
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7231
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7232 im = GetImage(_REMOTE, '/instances/%s/frames/0/preview' % b)
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7233 self.assertEqual("L", im.mode)
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7234 self.assertEqual(512, im.size[0])
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7235 self.assertEqual(512, im.size[1])
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7236
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7237 # The two tests below fail on Orthanc <= 1.7.3
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7238 raw = DoGet(_REMOTE, '/instances/%s/frames/0/raw' % a)
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7239 self.assertEqual(512 * 512 * 2, len(raw))
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7240
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7241 raw = DoGet(_REMOTE, '/instances/%s/frames/0/raw' % b)
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7242 self.assertEqual(512 * 512 * 2, len(raw))
695be643b0f4 test_decode_elscint
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 332
diff changeset
7243
334
971ff285302b test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 333
diff changeset
7244
971ff285302b test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 333
diff changeset
7245 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
7246 # 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
7247 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
7248 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
7249
335
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7250 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
7251 modalitiesInStudy = re.findall('\(0008,0061\).*?\[(.*?)\]', i)
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7252 self.assertEqual(1, len(modalitiesInStudy))
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7253 self.assertEqual('CT\\PT ', modalitiesInStudy[0])
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7254
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7255 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
7256 # 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
7257 # 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
7258
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7259 if i in [ 'UX', 'UX\\MR' ]:
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7260 expected = 0
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7261 else:
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7262 expected = 1
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7263
334
971ff285302b test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 333
diff changeset
7264 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
971ff285302b test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 333
diff changeset
7265 'Query' : { 'ModalitiesInStudy' : i }})
335
96718de2f29c simplification and fix of test_incoming_findscu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
7266 self.assertEqual(expected, len(a))
334
971ff285302b test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 333
diff changeset
7267
971ff285302b test_rest_modalities_in_study_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 333
diff changeset
7268 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
7269 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
7270 self.assertEqual(expected, len(studyInstanceUid))
337
ec13ace43bde trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 335
diff changeset
7271
ec13ace43bde trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 335
diff changeset
7272
ec13ace43bde trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 335
diff changeset
7273 def test_webdav(self):
ec13ace43bde trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 335
diff changeset
7274 self.assertRaises(Exception, lambda: DoPropFind(_REMOTE, '/webdav/', 2))
ec13ace43bde trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 335
diff changeset
7275
342
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7276 for suffix in [ '', '/' ]:
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7277 f = DoPropFind(_REMOTE, '/webdav' + suffix, 0)
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7278 self.assertEqual(1, len(f))
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7279 self.assertTrue('/webdav/' in f.keys())
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7280 self.assertTrue(f['/webdav/']['folder'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7281 self.assertEqual('webdav', f['/webdav/']['displayname'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7282
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7283 f = DoPropFind(_REMOTE, '/webdav' + suffix, 1)
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7284 self.assertEqual(6, len(f))
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7285 self.assertTrue(f['/webdav/']['folder'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7286 self.assertEqual('webdav', f['/webdav/']['displayname'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7287
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7288 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
7289 self.assertTrue(f['/webdav/%s' % i]['folder'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7290 self.assertEqual(i, f['/webdav/%s' % i]['displayname'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7291
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7292 for depth in [ 0, 1 ]:
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7293 for suffix2 in [ '', '/' ]:
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7294 g = DoPropFind(_REMOTE, '/webdav/%s%s' % (i, suffix2), depth)
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7295
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7296 if i == 'uploads':
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7297 # Empty folders might still exist in "/uploads/"
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7298 self.assertTrue('/webdav/uploads/' in g)
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7299 self.assertEqual('uploads', g['/webdav/uploads/']['displayname'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7300 for j in g.items():
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7301 self.assertTrue(g.items()[0][1]['folder'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7302 else:
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7303 self.assertEqual(1, len(g))
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7304 self.assertEqual('/webdav/%s/' % i, g.items()[0][0])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7305 self.assertTrue(g.items()[0][1]['folder'])
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7306 self.assertEqual(i, g.items()[0][1]['displayname'])
341
66a36befb208 extending Toolbox.DoPropFind()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 337
diff changeset
7307
342
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7308 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7309 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f:
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7310 DoPut(_REMOTE, '/webdav/uploads/dummy', f.read(), 'text/plain')
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7311
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7312 while len(DoGet(_REMOTE, '/patients')) == 0:
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7313 time.sleep(0.01)
bf8369ea3ff1 more tests of webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 341
diff changeset
7314 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
337
ec13ace43bde trying webdav tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 335
diff changeset
7315
349
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7316
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7317 def test_log_categories(self):
350
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7318 original = DoGet(_REMOTE, '/tools/log-level-http')
349
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7319
350
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7320 DoPut(_REMOTE, '/tools/log-level-http', 'default')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7321 self.assertEqual('default', DoGet(_REMOTE, '/tools/log-level-http'))
349
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7322 DoGet(_REMOTE, '/system')
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7323
350
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7324 DoPut(_REMOTE, '/tools/log-level-http', 'verbose')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7325 self.assertEqual('verbose', DoGet(_REMOTE, '/tools/log-level-http'))
349
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7326 DoGet(_REMOTE, '/system')
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7327
350
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7328 DoPut(_REMOTE, '/tools/log-level-http', 'trace')
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7329 self.assertEqual('trace', DoGet(_REMOTE, '/tools/log-level-http'))
349
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7330 DoGet(_REMOTE, '/system')
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7331
350
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7332 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
7333
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7334 # Switch back to the original log level
350
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7335 DoPut(_REMOTE, '/tools/log-level-http', original)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7336
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 349
diff changeset
7337 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
7338 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
7339
698898a93a10 test_log_categories
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 348
diff changeset
7340 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '/tools/log-level-nope', 'default'))
357
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7341
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7342
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7343 def test_upload_zip(self):
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7344 f = StringIO()
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7345 with zipfile.ZipFile(f, 'w') as z:
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7346 z.writestr('hello/world/invalid.txt', 'Hello world')
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7347 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as g:
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7348 c = g.read()
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7349 z.writestr('hello/world/dicom1.dcm', c)
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7350 z.writestr('hello/world/dicom2.dcm', c)
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7351
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7352 f.seek(0)
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7353 i = DoPost(_REMOTE, '/instances', f.read())
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7354
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7355 self.assertEqual(2, len(i))
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7356 self.assertEqual(i[0], i[1])
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7357 self.assertEqual(6, len(i[0]))
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7358 self.assertEqual('66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', i[0]['ID'])
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7359 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', i[0]['ParentSeries'])
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7360 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', i[0]['ParentStudy'])
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7361 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', i[0]['ParentPatient'])
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7362 self.assertEqual('/instances/66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d', i[0]['Path'])
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7363
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7364 # Both are "Success" (instead of one "AlreadyStored"), because "OverwriteInstance" is true
18597ca05e48 test_upload_zip
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 355
diff changeset
7365 self.assertEqual('Success', i[0]['Status'])
361
6cf5cc4d0a99 test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 359
diff changeset
7366
6cf5cc4d0a99 test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 359
diff changeset
7367
6cf5cc4d0a99 test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 359
diff changeset
7368 def test_transfer_syntax_no_metaheader(self):
6cf5cc4d0a99 test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 359
diff changeset
7369 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
7370 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % a)
6cf5cc4d0a99 test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 359
diff changeset
7371 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
7372
6cf5cc4d0a99 test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 359
diff changeset
7373 # This fails on Orthanc <= 1.8.1
6cf5cc4d0a99 test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 359
diff changeset
7374 self.assertTrue('TransferSyntax' in m)
6cf5cc4d0a99 test_transfer_syntax_no_metaheader
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 359
diff changeset
7375 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
7376
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7377
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7378 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
7379 # 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
7380
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7381 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
7382 return (('--%s\r\n' +
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7383 '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
7384 '\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
7385
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7386 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
7387 dcm1 = f.read()
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7388
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7389 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
7390 dcm2 = f.read()
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7391
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7392 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
7393
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7394 boundary = '----WebKitFormBoundarypJDNQqJPoXiorRmQ'
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7395 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
7396 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
7397 '--' + boundary + '--'), headers = {
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7398 '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
7399 'X-Requested-With' : 'XMLHttpRequest',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7400 })
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7401
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7402 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
7403
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7404
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7405 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
7406 # 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
7407 # 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
7408 # "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
7409
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7410 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
7411 return (('--%s\r\n' +
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7412 '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
7413 '\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
7414
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7415 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
7416 dcm = f.read()
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7417
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7418 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
7419 dcm2 = f.read()
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7420
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7421 boundary = '----WebKitFormBoundarypJDNQqJPoXiorRmQ'
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7422
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7423 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
7424 m = DoPost(_REMOTE, '/instances',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7425 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
7426 headers = {
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7427 '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
7428 'X-Requested-With' : 'XMLHttpRequest',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7429 '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
7430 '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
7431 })
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7432
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7433 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
7434 m = DoPost(_REMOTE, '/instances',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7435 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
7436 headers = {
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7437 '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
7438 'X-Requested-With' : 'XMLHttpRequest',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7439 '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
7440 '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
7441 })
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7442 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
7443
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7444 m = DoPost(_REMOTE, '/instances',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7445 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
7446 headers = {
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7447 '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
7448 'X-Requested-With' : 'XMLHttpRequest',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7449 '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
7450 '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
7451 })
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7452
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7453 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
7454
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7455 # 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
7456 m = DoPost(_REMOTE, '/instances',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7457 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
7458 headers = {
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7459 '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
7460 'X-Requested-With' : 'XMLHttpRequest',
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7461 '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
7462 '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
7463 })
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7464
2cc40121c3a8 test_upload_multipart_1 and test_upload_multipart_2
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 363
diff changeset
7465 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
377
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7466
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7467
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7468 def test_pixel_data_offset(self):
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7469 # New in Orthanc 1.9.1
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7470 def Check(path, offset):
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7471 i = UploadInstance(_REMOTE, path) ['ID']
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7472 metadata = DoGetRaw(_REMOTE, '/instances/%s/metadata/PixelDataOffset' % i) [1]
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7473 self.assertEqual(offset, metadata)
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7474
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7475 Check('ColorTestMalaterre.dcm', str(0x03a0))
cc79fa4945da test_pixel_data_offset
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 374
diff changeset
7476 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
7477 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
7478 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
7479 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
7480 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
7481 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
7482 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
7483 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
7484 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
7485 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
7486 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
7487 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
7488
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7489
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7490 def test_peer_store_straight(self):
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7491 self.assertEqual(0, len(DoGet(_LOCAL, '/exports')['Exports']))
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7492 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports']))
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7493
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7494 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
7495 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
7496 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
7497 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
7498 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
7499 self.assertEqual('0.8.6', peer['Version'])
382
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7500
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7501 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f:
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7502 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
7503
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7504 # 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
7505 # "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
7506 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
7507 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
7508 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
7509 self.assertEqual(6, len(j))
382
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7510 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
7511 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
7512 self.assertEqual('Success', j['Status'])
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7513
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7514 self.assertEqual(1, len(DoGet(_LOCAL, '/patients')))
a8dd562943a7 added test_peer_store_straight
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 380
diff changeset
7515 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
383
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7516
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7517
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7518 def test_cp246(self):
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7519 # This fails on Orthanc <= 1.9.0
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7520 a = UploadInstance(_REMOTE, '2021-02-19-MalaterreCP246.dcm')['ID']
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7521 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7522
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7523 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % a)
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7524 self.assertEqual('1.2.840.10008.5.1.4.1.1.128', tags['0008,0016'])
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7525 self.assertEqual('1.3.12.2.1107.5.1.4.36085.2.0.517715415141633', tags['0008,0018'])
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7526 self.assertEqual('1.2.840.113745.101000.1008000.38179.6792.6324567', tags['0020,000d'])
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7527 self.assertEqual('1.3.12.2.1107.5.1.4.36085.2.0.517714246252254', tags['0020,000e'])
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7528
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7529 study = DoGet(_REMOTE, '/instances/%s/study' % a)
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7530 self.assertEqual(tags['0020,000d'], study['MainDicomTags']['StudyInstanceUID'])
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7531
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7532 series = DoGet(_REMOTE, '/instances/%s/series' % a)
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7533 self.assertEqual(tags['0020,000e'], series['MainDicomTags']['SeriesInstanceUID'])
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7534
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7535 instance = DoGet(_REMOTE, '/instances/%s' % a)
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7536 self.assertEqual(tags['0008,0018'], instance['MainDicomTags']['SOPInstanceUID'])
05d0d0c2623c added test_cp246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 382
diff changeset
7537
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7538
392
5cbcb4a83b41 fix for revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 391
diff changeset
7539 def test_revisions_metadata(self):
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7540 # 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
7541 # 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
7542 # "CheckRevisions" is "False". Conventions for HTTP headers
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7543 # related to revisions mimic CouchDB:
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7544 # 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
7545 i = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7546
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7547 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7548 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
7549 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
7550 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
7551
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7552 (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
7553 '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
7554 })
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7555 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
7556
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7557 (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
7558 '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
7559 })
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7560 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
7561
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7562 (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
7563 'If-None-Match' : '"0-16de4d7060d0b9d102ef0fca8acc892a"'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7564 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7565 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
7566 self.assertEqual('"0-16de4d7060d0b9d102ef0fca8acc892a"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7567 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
7568
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7569 (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
7570 '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
7571 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7572 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
7573 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
7574 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
7575
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 (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
7577 '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
7578 })
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 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
7580 self.assertEqual('"0-16de4d7060d0b9d102ef0fca8acc892a"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7581 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
7582
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7583 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7584 self.assertEqual('403', headers['status']) # Forbidden (system metadata)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7585
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7586 (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
7587 self.assertEqual('403', headers['status']) # Forbidden (system metadata)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7588
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7589 (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
7590 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
7591 self.assertEqual('"0-%s"' % ComputeMD5('hello'), headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7592
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7593 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/1024' % i)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7594 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
7595 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7596 self.assertEqual('hello', body)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7597
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7598 (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
7599 'If-None-Match' : '"0-5d41402abc4b2a76b9719d911017c592"'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7600 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7601 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
7602 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7603 self.assertEqual('', body)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7604
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7605 (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
7606 'If-None-Match' : '"1-tata"'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7607 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7608 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
7609 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7610 self.assertEqual('hello', body)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7611 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
7612
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7613 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/metadata/1024' % i)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7614 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
7615
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7616 (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
7617 'If-Match' : '45-5d41402abc4b2a76b9719d911017c592'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7618 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7619 self.assertEqual('409', headers['status']) # Conflict, as bad revision
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7620
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7621 (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
7622 '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
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 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
7625
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) = 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
7627 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7628 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7629 self.assertEqual('200', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7630
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7631 (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
7632 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7633 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7634 self.assertEqual('404', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7635
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7636 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/metadata/1024' % i)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7637 self.assertEqual('404', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7638
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7639 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
7640
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7641 (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
7642 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
7643 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7644
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7645 (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
7646 self.assertEqual('409', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7647
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7648 (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
7649 'If-None-Match' : '"0-5d41402abc4b2a76b9719d911017c592"'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7650 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7651 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
7652 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7653 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
7654
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7655 (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
7656 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7657 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7658 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
7659 self.assertEqual('"1-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7660 self.assertEqual('', body)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7661
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7662 (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
7663 'If-None-Match' : headers['etag']
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7664 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7665
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7666 if headers['status'] == '200':
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7667 print("Your database backend doesn't store revisions")
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7668 (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
7669 'If-Match' : '1-5d41402abc4b2a76b9719d911017c592'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7670 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7671 self.assertEqual('409', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7672
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7673 (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
7674 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7675 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7676 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
7677 self.assertEqual('"1-6e809cbda0732ac4845916a59016f954"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7678 self.assertEqual('', body)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7679
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7680 elif headers['status'] == '304': # Revisions are supported
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7681 (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
7682 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7683 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7684 self.assertEqual('409', headers['status'])
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7685
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7686 (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
7687 'If-Match' : '1-5d41402abc4b2a76b9719d911017c592'
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7688 })
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7689 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
7690 self.assertEqual('"2-6e809cbda0732ac4845916a59016f954"', headers['etag'])
391
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7691 self.assertEqual('', body)
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7692
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7693 else:
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7694 raise Exception('Internal error')
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7695
227d9a932467 testing revisions in metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 390
diff changeset
7696 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
7697
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 def test_revisions_attachments(self):
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7700 # 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
7701 # was introduced in 1.9.2), or if configuration option
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7702 # "CheckRevisions" is "False". Conventions for HTTP headers
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7703 # related to revisions mimic CouchDB:
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7704 # https://docs.couchdb.org/en/stable/api/document/common.html
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7705 i = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7706
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
7707 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
7708 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
7709
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7710 # "/compress", "/uncompress" and "/verify-md5" are POST
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7711 # methods, and are not affected by revisions
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7712 for suffix in [ '', '/compressed-data', '/compressed-md5', '/compressed-size',
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7713 '/data', '/is-compressed', '/md5', '/size' ]:
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7714 (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
7715 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
7716 self.assertEqual('"0-%s"' % md5, headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7717
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7718 (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
7719 'If-None-Match' : '"0-3e29b869978b6db4886355a2b1132124"',
393
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 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
7722 self.assertEqual('"0-3e29b869978b6db4886355a2b1132124"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7723 self.assertEqual('', body) # Body must be empty on 304 status
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7724
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7725 (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
7726 '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
7727 })
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7728 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
7729
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7730 (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
7731 '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
7732 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7733 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
7734 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
7735
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7736 (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
7737 '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
7738 })
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7739 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
7740 self.assertEqual('"0-3e29b869978b6db4886355a2b1132124"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7741
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7742 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/attachments/dicom' % i)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7743 self.assertEqual('403', headers['status']) # Forbidden (system metadata)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7744
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7745 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/dicom' % i, 'hello')
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7746 self.assertEqual('403', headers['status']) # Forbidden (system metadata)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7747
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7748 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello')
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7749 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
7750 self.assertEqual('"0-%s"' % ComputeMD5('hello'), headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7751
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7752 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7753 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
7754 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7755 self.assertEqual('hello', body)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7756
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7757 (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
7758 'If-None-Match' : '"0-5d41402abc4b2a76b9719d911017c592"'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7759 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7760 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
7761 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7762 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
7763
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7764 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
7765 '"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
7766 (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
7767 '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
7768 })
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7769 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
7770 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
7771 self.assertEqual('hello', body)
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7772
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7773 (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
7774 'If-None-Match' : 'tata' # Bad header format
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7775 })
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
7776 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
7777 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
7778
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7779 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
7780
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7781 (headers, body) = DoDeleteRaw(_REMOTE, '/instances/%s/attachments/1024' % i)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7782 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
7783
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7784 (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
7785 'If-Match' : '45-5d41402abc4b2a76b9719d911017c592'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7786 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7787 self.assertEqual('409', headers['status']) # Conflict, as bad revision
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7788
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7789 (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
7790 '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
7791 })
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7792 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
7793
eb87ec525b53 "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 394
diff changeset
7794 (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
7795 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7796 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7797 self.assertEqual('200', headers['status'])
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7798
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7799 (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
7800 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7801 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7802 self.assertEqual('404', headers['status'])
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7803
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7804 (headers, body) = DoGetRaw(_REMOTE, '/instances/%s/attachments/1024/data' % i)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7805 self.assertEqual('404', headers['status'])
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7806
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7807 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
7808
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7809 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello')
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7810 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
7811 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7812
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7813 (headers, body) = DoPutRaw(_REMOTE, '/instances/%s/attachments/1024' % i, 'hello')
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7814 self.assertEqual('409', headers['status'])
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7815
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7816 (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
7817 'If-None-Match' : '"0-5d41402abc4b2a76b9719d911017c592"'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7818 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7819 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
7820 self.assertEqual('"0-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7821 self.assertEqual('', body) # Body must be empty on 304 status
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7822
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7823 (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
7824 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7825 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7826 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
7827 self.assertEqual('"1-5d41402abc4b2a76b9719d911017c592"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7828 self.assertEqual('{}', body)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7829
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7830 (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
7831 'If-None-Match' : headers['etag']
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7832 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7833
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7834 if headers['status'] == '200':
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7835 print("Your database backend doesn't store revisions")
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7836 (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
7837 'If-Match' : '1-5d41402abc4b2a76b9719d911017c592'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7838 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7839 self.assertEqual('409', headers['status'])
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7840
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7841 (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
7842 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7843 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7844 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
7845 self.assertEqual('"1-6e809cbda0732ac4845916a59016f954"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7846 self.assertEqual('{}', body)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7847
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7848 elif headers['status'] == '304': # Revisions are supported
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7849 (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
7850 'If-Match' : '0-5d41402abc4b2a76b9719d911017c592'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7851 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7852 self.assertEqual('409', headers['status'])
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7853
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7854 (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
7855 'If-Match' : '1-5d41402abc4b2a76b9719d911017c592'
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7856 })
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7857 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
7858 self.assertEqual('"2-6e809cbda0732ac4845916a59016f954"', headers['etag'])
393
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7859 self.assertEqual('{}', body)
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7860
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7861 else:
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7862 raise Exception('Internal error')
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7863
3019306499c5 test_revisions_attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 392
diff changeset
7864 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
7865
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7866
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7867 def test_issue_195(self):
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7868 # 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
7869 # 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
7870 a = UploadInstance(_REMOTE, 'Issue195.dcm')['ID']
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7871 b = DoGet(_REMOTE, '/instances/%s/file' % a,
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7872 headers = { 'Accept' : 'application/dicom+json' })
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7873
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7874 # 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
7875 self.assertEqual(5, len(b))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7876 self.assertEqual(2, len(b["00080018"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7877 self.assertEqual("UI", b["00080018"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7878 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
7879 b["00080018"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7880
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7881 self.assertEqual(2, len(b["0020000D"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7882 self.assertEqual("UI", b["0020000D"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7883 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
7884 b["0020000D"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7885
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7886 self.assertEqual(2, len(b["0020000E"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7887 self.assertEqual("UI", b["0020000E"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7888 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
7889 b["0020000E"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7890
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7891 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
7892 self.assertEqual("LO", b["00081030"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7893
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7894 self.assertEqual(2, len(b["0008103E"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7895 self.assertEqual("LO", b["0008103E"]["vr"])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7896 self.assertEqual("Hello1", b["0008103E"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7897
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7898 a = UploadInstance(_REMOTE, 'Issue195-bis.dcm')['ID']
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7899 b = DoGet(_REMOTE, '/instances/%s/file' % a,
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7900 headers = { 'Accept' : 'application/dicom+json' })
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7901
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7902 # 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
7903 self.assertEqual(5, len(b))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7904 self.assertEqual(2, len(b["00080018"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7905 self.assertEqual("UI", b["00080018"]["vr"])
424
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
7906 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
7907 b["00080018"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7908
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7909 self.assertEqual(2, len(b["0020000D"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7910 self.assertEqual("UI", b["0020000D"]["vr"])
424
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
7911 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
7912 b["0020000D"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7913
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7914 self.assertEqual(2, len(b["0020000E"]))
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7915 self.assertEqual("UI", b["0020000E"]["vr"])
424
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
7916 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
7917 b["0020000E"]["Value"][0])
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7918
424
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
7919 self.assertEqual(2, len(b["00084567"]))
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
7920 self.assertEqual("UN", b["00084567"]["vr"])
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7921
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7922 # 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
7923 # $ echo -n 'QgA=' | base64 -d | hexdump -C
424
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
7924 self.assertEqual("QgA=", b["00084567"]["InlineBinary"])
399
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7925
dd519677974d integration tests for issue 195
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 397
diff changeset
7926 # 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
7927 self.assertEqual(1, len(b["00084565"]))
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
7928 self.assertEqual("UN", b["00084565"]["vr"])
402
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7929
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7930
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7931 def test_modify_attribute(self):
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7932 # This fails on Orthanc <= 1.9.3 (not implemented)
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7933 # 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
7934 i = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7935
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7936 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % i)
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7937 self.assertFalse('0020,9165' in tags)
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7938
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7939 i = DoPost(_REMOTE, '/studies/b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0/modify', {
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7940 "Replace": {
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7941 "0020,9165": "0020,9056",
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7942 }
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7943 })
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7944 instances = DoGet(_REMOTE, '/studies/%s/instances' % i['ID'])
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7945 self.assertEqual(1, len(instances))
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7946
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7947 tags = DoGet(_REMOTE, '/instances/%s/tags?short' % instances[0]['ID'])
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7948 self.assertTrue('0020,9165' in tags)
cc947ddc57c5 test_modify_attribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 399
diff changeset
7949 self.assertEqual('0020,9056', tags['0020,9165'])
405
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7950
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7951
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7952 def test_issue_146(self):
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7953 # "Update Anonyization to 2019c"
589
47b87c87213b new tests for GET /tools/create-archive
Alain Mazy <am@osimis.io>
parents: 588
diff changeset
7954 # https://bugs.orthanc-server.com/show_bug.cgi?id=146
405
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7955
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7956 def GetTags(study, params):
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7957 a = DoPost(_REMOTE, '/studies/%s/anonymize' % study, params) ['ID']
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7958 b = DoGet(_REMOTE, '/studies/%s/instances' % a)
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7959 self.assertEqual(1, len(b))
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7960 return DoGet(_REMOTE, '/instances/%s/tags?short' % b[0]['ID'])
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7961
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7962
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7963 UploadInstance(_REMOTE, 'Issue146.dcm')
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7964 study = '7c950970-321e4ab0-28446c5f-f94850f1-5c44634b'
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7965
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7966 self.assertRaises(Exception, lambda: GetTags(study, { 'DicomVersion' : 'nope' }))
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7967
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7968 tags2008 = GetTags(study, { 'DicomVersion' : '2008' })
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7969 tags2017c = GetTags(study, { 'DicomVersion' : '2017c' })
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7970 tags2021b = GetTags(study, { 'DicomVersion' : '2021b' })
557
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
7971 tags2023b = GetTags(study, { 'DicomVersion' : '2023b' })
405
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7972 tagsDefault = GetTags(study, {})
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7973
420
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 419
diff changeset
7974 orthancVersion = DoGet(_REMOTE, '/system') ['Version']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 419
diff changeset
7975 self.assertEqual('Orthanc %s - PS 3.15-2008 Table E.1-1' % orthancVersion, tags2008['0012,0063'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 419
diff changeset
7976 self.assertEqual('Orthanc %s - PS 3.15-2017c Table E.1-1 Basic Profile' % orthancVersion, tags2017c['0012,0063'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 419
diff changeset
7977 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
7978 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
7979 self.assertEqual(tagsDefault['0012,0063'], tags2023b['0012,0063'])
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
7980
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
7981 self.assertEqual(len(tags2021b), len(tags2023b))
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
7982 self.assertNotEqual(tags2021b, tags2023b)
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
7983
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
7984 for t in [ tags2008, tags2017c, tags2021b, tags2023b, tagsDefault ]:
405
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7985 self.assertTrue(t['0010,0010'].startswith('Anonymized'))
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7986 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', t['0008,0016'])
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7987 self.assertEqual(36, len(t['0010,0020'])) # Length of a UUID
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7988 self.assertEqual('YES', t['0012,0062'])
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7989
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7990 for t in [ tags2008 ]:
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7991 self.assertEqual('20200101', t['0008,0020'])
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7992
557
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
7993 for t in [ tags2017c, tags2021b, tags2023b, tagsDefault ]:
405
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7994 self.assertEqual('', t['0008,0020']) # Study Date, anonymized between 2008 and 2017c
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7995
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7996 for t in [ tags2008, tags2017c ]:
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7997 self.assertEqual('HELLO^C', t['0050,0020'])
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7998 self.assertEqual('HELLO^D', t['3006,0002'])
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
7999
557
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
8000 for t in [ tags2021b, tags2023b, tagsDefault ]:
405
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
8001 self.assertFalse('0050,0020' in t) # Device Description, anonymized between 2017c and 2019c
6bbc89c2c2d1 test_issue_146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
8002 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
8003
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8004
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8005 def test_anonymize_relationships_6(self):
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8006 # 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
8007 # 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
8008 # sequence containing StudyUID / Series UID of related series.
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8009 # [After anonymization,] this tag keep a reference of the
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8010 # original Study/Series UID.
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8011 # 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
8012 UploadInstance(_REMOTE, '2020-11-16-SalimKanounAnonymization.dcm')
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8013
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8014 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
8015 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
8016 tags['0008,1250'][0]['0020,000d'])
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8017 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
8018 tags['0008,1250'][0]['0020,000e'])
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8019
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8020 a = DoGet(_REMOTE, '/studies')
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8021 self.assertEqual(1, len(a))
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8022 b = DoPost(_REMOTE, '/studies/%s/anonymize' % a[0], {}) ['ID']
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8023
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8024 c = DoGet(_REMOTE, '/studies/%s/instances' % b)
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8025 self.assertEqual(1, len(c))
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8026 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
8027
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8028 # 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
8029 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
8030 tags['0008,1250'][0]['0020,000d'])
62ee5e57ee05 test_anonymize_relationships_6
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 405
diff changeset
8031 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
8032 tags['0008,1250'][0]['0020,000e'])
407
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8033
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8034
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8035 def test_modify_subsequences(self):
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8036 # New in Orthanc 1.9.4 (cf. LSD-629)
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8037 UploadInstance(_REMOTE, 'Issue22-NoPixelData.dcm')
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8038 studies = DoGet(_REMOTE, '/studies')
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8039 self.assertEqual(1, len(studies))
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8040
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8041 def GetTags(study):
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8042 instances = DoGet(_REMOTE, '/studies/%s/instances' % study)
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8043 self.assertEqual(1, len(instances))
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8044 return DoGet(_REMOTE, '/instances/%s/tags?short' % instances[0]['ID'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8045
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8046 tags1 = GetTags(studies[0])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8047
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8048 a = DoPost(_REMOTE, '/studies/%s/modify' % studies[0], {
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8049 'Replace' : {
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8050 'PatientName' : 'Hello1',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8051 'DimensionIndexSequence[1].DimensionDescriptionLabel' : 'Hello2',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8052 'DimensionIndexSequence[*].PatientName' : 'Hello3',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8053 '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
8054 'DimensionOrganizationSequence[0].DimensionOrganizationUID' : '1.2.3.4',
407
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8055 },
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8056 'Remove' : [
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8057 'ReferencedPerformedProcedureStepSequence',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8058 'PerformedProtocolCodeSequence[0].CodeValue',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8059 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[*].ReferencedSOPInstanceUID',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8060 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[1].ReferencedSOPClassUID',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8061 'SharedFunctionalGroupsSequence[2].ReferencedImageSequence', # Inexistent tag
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8062 ]
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8063 })
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8064 tags2 = GetTags(a['ID'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8065
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8066 self.assertEqual('Anonymized1', tags1['0010,0010'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8067 self.assertEqual('Hello1', tags2['0010,0010'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8068
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8069 self.assertEqual('Stack ID', tags1['0020,9222'][0]['0020,9421'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8070 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
8071 self.assertEqual('Stack ID', tags2['0020,9222'][0]['0020,9421'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8072 self.assertEqual('Hello2', tags2['0020,9222'][1]['0020,9421'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8073
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8074 for i in range(3):
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8075 self.assertFalse('0010,0010' in tags1['0020,9222'][i])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8076 self.assertEqual('Hello3', tags2['0020,9222'][i]['0010,0010'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8077
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8078 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
8079 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
8080 self.assertEqual('Hello4',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8081 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
8082 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
8083 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
8084
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8085 self.assertTrue('0008,1111' in tags1)
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8086 self.assertFalse('0008,1111' in tags2)
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8087 self.assertTrue('0008,0100' in tags1['0040,0260'][0])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8088 self.assertFalse('0008,0100' in tags2['0040,0260'][0])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8089
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8090 for i in range(3):
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8091 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
8092 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
8093 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
8094
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8095 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
8096 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
8097 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
8098
408
4e0b9fddbc71 test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
8099 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
8100 tags1['0020,9221'][0]['0020,9164'])
4e0b9fddbc71 test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
8101 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
8102
407
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8103 a = DoPost(_REMOTE, '/studies/%s/anonymize' % studies[0], {
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8104 'Replace' : {
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8105 'DimensionIndexSequence[1].DimensionDescriptionLabel' : 'Hello1',
408
4e0b9fddbc71 test "Replace" for UID in subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
8106 'DimensionOrganizationSequence[0].DimensionOrganizationUID' : '1.2.3.4',
407
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8107 },
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8108 'Remove' : [
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8109 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[*].ReferencedSOPInstanceUID', # 5200,9229
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8110 ],
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8111 'Keep' : [
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8112 'ReferencedImageEvidenceSequence', # 0008,9092
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8113 'DimensionIndexSequence', # 0020,9222
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8114 'PerFrameFunctionalGroupsSequence[*].2005,140f[*].SOPInstanceUID', # 5200,9230
424
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8115 '(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
8116 '(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
8117 ],
557
1cdb14a679f2 fix anonymization tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 556
diff changeset
8118 'DicomVersion' : '2021b',
424
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8119 'KeepPrivateTags' : True # Compatibility with Orthanc 1.9.4
407
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8120 })
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8121 tags3 = GetTags(a['ID'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8122
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8123 # UIDs
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8124 for i in [ '0008,0018',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8125 '0010,0020',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8126 '0008,0018',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8127 '0010,0020' ]:
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8128 self.assertNotEqual(tags1[i], tags3[i])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8129
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8130 self.assertNotEqual(tags1['0020,9221'][0]['0020,9164'],
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8131 tags3['0020,9221'][0]['0020,9164'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8132
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8133 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
8134 tags3['5200,9229'][0]['2005,140e'][0]['0008,0014'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8135
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8136 # 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
8137 # Removals (X)
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8138 for i in [ '0008,0021',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8139 '0008,002a',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8140 '0008,0031',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8141 '0008,1030',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8142 '0008,103e',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8143 '0008,1111',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8144 '0010,21c0',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8145 '0040,0006',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8146 '0040,0241',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8147 '0040,0244',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8148 '0040,0245',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8149 '0040,0250',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8150 '0040,0251',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8151 '0040,0253',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8152 '0040,0254',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8153 '0040,0555',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8154 ]:
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8155 self.assertTrue(i in tags1)
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8156 self.assertFalse(i in tags3)
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8157
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8158 # Clearings (Z)
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8159 for i in [ '0008,0020',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8160 '0008,0023',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8161 '0008,0030',
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8162 '0008,0033' ]:
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8163 self.assertNotEqual('', tags1[i])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8164 self.assertEqual('', tags3[i])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8165
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8166 # Replace
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8167 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
8168 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
8169 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
8170
407
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8171 # "Keep" on DimensionIndexSequence
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8172 for i in range(3):
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8173 self.assertEqual(tags1['0020,9222'][i]['0020,9164'],
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8174 tags3['0020,9222'][i]['0020,9164'])
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8175
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8176 # "Keep" on ReferencedImageEvidenceSequence
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8177 self.assertEqual(json.dumps(tags1['0008,9092']),
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8178 json.dumps(tags3['0008,9092']))
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8179
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8180 # "Keep" on PerFrameFunctionalGroupsSequence
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8181 self.assertEqual(json.dumps(tags1['5200,9230']),
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8182 json.dumps(tags3['5200,9230']))
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8183
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8184 # "Remove" on SharedFunctionalGroupsSequence
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8185 for i in range(3):
ad98466353c6 test_modify_subsequences
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 406
diff changeset
8186 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
8187 self.assertFalse('0008,1155' in tags3['5200,9229'][0]['0008,1140'][i])
410
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8188
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8189
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8190 def test_bulk_modify(self):
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8191 # New in Orthanc 1.9.4
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8192
411
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8193 def GetModified(lst, resourceType, expectedCount = None):
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8194 m = map(lambda x: x['ID'], filter(lambda x: x['Type'] == resourceType, lst['Resources']))
410
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8195 if expectedCount != None:
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8196 self.assertEqual(expectedCount, len(m))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8197 return m
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8198
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8199 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8200 series = DoGet(_REMOTE, '/series') [0]
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8201 study = DoGet(_REMOTE, '/studies') [0]
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8202 patient = DoGet(_REMOTE, '/patients') [0]
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8203
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8204 a = DoPost(_REMOTE, '/tools/bulk-modify', {
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8205 'Resources' : [ instance ]
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8206 })
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8207
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8208 self.assertNotEqual(instance, GetModified(a, 'Instance', 1) [0])
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8209 self.assertEqual(series, GetModified(a, 'Series', 1) [0])
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8210 self.assertEqual(study, GetModified(a, 'Study', 1) [0])
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8211 self.assertEqual(patient, GetModified(a, 'Patient', 1) [0])
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8212
411
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8213 b = DoPost(_REMOTE, '/tools/bulk-anonymize', {
410
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8214 'Resources' : [ instance ]
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8215 })
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8216
411
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8217 self.assertNotEqual(instance, GetModified(b, 'Instance', 1) [0])
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8218 self.assertNotEqual(series, GetModified(b, 'Series', 1) [0])
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8219 self.assertNotEqual(study, GetModified(b, 'Study', 1) [0])
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8220 self.assertNotEqual(patient, GetModified(b, 'Patient', 1) [0])
410
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8221
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8222 self.assertEqual(3, len(DoGet(_REMOTE, '/instances')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8223 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8224 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8225 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
411
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8226
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8227 DoPost(_REMOTE, '/tools/bulk-delete', {
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8228 'Resources' : GetModified(b, 'Patient', 1) + GetModified(a, 'Instance', 1)
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8229 })
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8230
410
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8231 knee1 = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID']
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8232 knee2 = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') ['ID']
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8233 brainix = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID']
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8234
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8235 self.assertEqual(4, len(DoGet(_REMOTE, '/instances')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8236 self.assertEqual(4, len(DoGet(_REMOTE, '/series')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8237 self.assertEqual(3, len(DoGet(_REMOTE, '/studies')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8238 self.assertEqual(3, len(DoGet(_REMOTE, '/patients')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8239
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8240 a = DoPost(_REMOTE, '/tools/bulk-modify', {
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8241 'Resources' : [ knee1, brainix ]
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8242 })
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8243
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8244 self.assertEqual(6, len(DoGet(_REMOTE, '/instances')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8245 self.assertEqual(4, len(DoGet(_REMOTE, '/series')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8246 self.assertEqual(3, len(DoGet(_REMOTE, '/studies')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8247 self.assertEqual(3, len(DoGet(_REMOTE, '/patients')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8248
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8249 for i in GetModified(a, 'Instance', 2):
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8250 self.assertTrue(not i in [ instance, knee1, knee2, brainix ])
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8251 self.assertTrue(DoGet(_REMOTE, '/instances/%s/metadata/ModifiedFrom' % i) in [ knee1, brainix ])
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8252
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8253 b = GetModified(a, 'Series', 2)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8254 self.assertTrue(DoGet(_REMOTE, '/instances/%s/series' % knee1) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8255 self.assertTrue(DoGet(_REMOTE, '/instances/%s/series' % brainix) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8256 self.assertFalse(DoGet(_REMOTE, '/instances/%s/series' % knee2) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8257 self.assertFalse(DoGet(_REMOTE, '/instances/%s/series' % instance) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8258
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8259 b = GetModified(a, 'Study', 2)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8260 self.assertTrue(DoGet(_REMOTE, '/instances/%s/study' % knee1) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8261 self.assertTrue(DoGet(_REMOTE, '/instances/%s/study' % brainix) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8262 self.assertTrue(DoGet(_REMOTE, '/instances/%s/study' % knee2) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8263 self.assertFalse(DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8264
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8265 b = GetModified(a, 'Patient', 2)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8266 self.assertTrue(DoGet(_REMOTE, '/instances/%s/patient' % knee1) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8267 self.assertTrue(DoGet(_REMOTE, '/instances/%s/patient' % brainix) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8268 self.assertTrue(DoGet(_REMOTE, '/instances/%s/patient' % knee2) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8269 self.assertFalse(DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID'] in b)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8270
411
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8271 DoPost(_REMOTE, '/tools/bulk-delete', {
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8272 'Resources' : GetModified(a, 'Instance', 2)
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8273 })
410
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8274
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8275 sourceInstances = DoGet(_REMOTE, '/instances')
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8276 sourceSeries = DoGet(_REMOTE, '/series')
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8277 sourceStudies = DoGet(_REMOTE, '/studies')
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8278 sourcePatients = DoGet(_REMOTE, '/patients')
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8279 self.assertEqual(4, len(sourceInstances))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8280 self.assertEqual(4, len(sourceSeries))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8281 self.assertEqual(3, len(sourceStudies))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8282 self.assertEqual(3, len(sourcePatients))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8283
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8284 a = DoPost(_REMOTE, '/tools/bulk-anonymize', {
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8285 'Resources' : [ knee1, brainix ]
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8286 })
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8287
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8288 self.assertEqual(6, len(DoGet(_REMOTE, '/instances')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8289 self.assertEqual(6, len(DoGet(_REMOTE, '/series')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8290 self.assertEqual(5, len(DoGet(_REMOTE, '/studies')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8291 self.assertEqual(5, len(DoGet(_REMOTE, '/patients')))
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8292
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8293 for i in GetModified(a, 'Instance', 2):
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8294 self.assertFalse(i in sourceInstances)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8295 self.assertTrue(DoGet(_REMOTE, '/instances/%s/metadata/AnonymizedFrom' % i) in [ knee1, brainix ])
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8296
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8297 for i in GetModified(a, 'Series', 2):
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8298 self.assertFalse(i in sourceSeries)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8299 self.assertTrue(DoGet(_REMOTE, '/series/%s/metadata/AnonymizedFrom' % i) in sourceSeries)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8300
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8301 for i in GetModified(a, 'Study', 2):
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8302 self.assertFalse(i in sourceStudies)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8303 self.assertTrue(DoGet(_REMOTE, '/studies/%s/metadata/AnonymizedFrom' % i) in sourceStudies)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8304
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8305 for i in GetModified(a, 'Patient', 2):
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8306 self.assertFalse(i in sourcePatients)
d0c6afc1ff68 test_bulk_modify
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
8307 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
8308
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8309 DoPost(_REMOTE, '/tools/bulk-delete', {
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8310 'Resources' : GetModified(a, 'Patient', 2)
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8311 })
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8312
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8313 self.assertEqual(4, len(DoGet(_REMOTE, '/instances')))
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8314 self.assertEqual(4, len(DoGet(_REMOTE, '/series')))
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8315 self.assertEqual(3, len(DoGet(_REMOTE, '/studies')))
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8316 self.assertEqual(3, len(DoGet(_REMOTE, '/patients')))
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8317
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8318 DoPost(_REMOTE, '/tools/bulk-delete', {
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8319 'Resources' : [ instance,
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8320 DoGet(_REMOTE, '/instances/%s/patient' % knee1) ['ID'],
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8321 DoGet(_REMOTE, '/instances/%s/series' % brainix) ['ID'] ]
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8322 })
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8323
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8324 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8325 self.assertEqual(0, len(DoGet(_REMOTE, '/series')))
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8326 self.assertEqual(0, len(DoGet(_REMOTE, '/studies')))
8cf866641fa7 testing bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
8327 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
412
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8328
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8329
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8330 def test_dicom_to_json_format(self):
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8331 # 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
8332 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8333 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID']
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8334 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID']
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8335 series = DoGet(_REMOTE, '/instances/%s/series' % instance) ['ID']
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8336
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8337 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
8338 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
8339 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
8340 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
8341 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
8342 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
8343
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8344 # Test "GetInstanceHeader()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8345 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
8346 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
8347 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
8348 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
8349 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
8350 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
8351
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8352 # Test "ListResources()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8353 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
8354 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
8355 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
8356 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
8357
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8358 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
8359 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
8360 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
8361 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
8362
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8363 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
8364 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
8365 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
8366 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
8367
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8368 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
8369 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
8370 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
8371 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
8372
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8373 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
8374 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
8375 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
8376 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
8377
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8378 # Test "GetSingleResource()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8379 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
8380 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
8381 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
8382 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
8383
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8384 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
8385 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
8386 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
8387 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
8388
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8389 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
8390 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
8391 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
8392 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
8393
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8394 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
8395 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
8396 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
8397 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
8398
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8399 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
8400 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
8401 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
8402 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
8403
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8404 # Test "Find()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8405 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
8406 self.assertEqual('20070101', a[0]['MainDicomTags']['StudyDate'])
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8407 self.assertEqual('KNIX', a[0]['PatientMainDicomTags']['PatientName'])
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8408
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8409 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
8410 self.assertEqual('20070101', a[0]['MainDicomTags']['0008,0020'])
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8411 self.assertEqual('KNIX', a[0]['PatientMainDicomTags']['0010,0010'])
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8412
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8413 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
8414 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
8415 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
8416 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
8417 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
8418
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8419 # Test "GetChildResources()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8420 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
8421 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
8422 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
8423 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
8424
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8425 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
8426 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
8427 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
8428 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
8429
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8430 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
8431 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
8432 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
8433 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
8434
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8435 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
8436 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
8437 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
8438 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
8439
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8440 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
8441 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
8442 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
8443 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
8444
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8445 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
8446 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
8447 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
8448 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
8449
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8450 # Test "GetParentResource()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8451 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
8452 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
8453 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
8454 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
8455
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8456 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
8457 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
8458 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
8459 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
8460
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8461 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
8462 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
8463 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
8464 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
8465
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8466 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
8467 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
8468 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
8469 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
8470
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8471 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
8472 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
8473 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
8474 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
8475
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8476 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
8477 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
8478 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
8479 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
8480
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8481 # Test "GetChildInstancesTags()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8482 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
8483 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
8484 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
8485 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
8486
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8487 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
8488 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
8489 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
8490 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
8491
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8492 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
8493 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
8494 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
8495 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
8496
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8497 # Test "GetSharedTags()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8498 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
8499 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
8500 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
8501 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
8502
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8503 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
8504 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
8505 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
8506 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
8507
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8508 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
8509 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
8510 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
8511 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
8512
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8513 # Test "GetModule()" in "OrthancRestResources.cpp"
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8514 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
8515 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
8516 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
8517
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8518 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
8519 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
8520 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
8521
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8522 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
8523 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
8524 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
8525
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8526 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
8527 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
8528 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
8529
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8530 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
8531 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
8532 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
8533 DoGet(_REMOTE, '/instances/%s/module?simplify' % instance) ['SOPInstanceUID'])
cd9da28451cc test_dicom_to_json_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 411
diff changeset
8534 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
8535 DoGet(_REMOTE, '/instances/%s/module?short' % instance) ['0008,0018'])
413
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8536
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8537 # Test "ListQueryAnswers()" in "OrthancRestModalities.cpp"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8538 a = DoPost(_REMOTE, '/modalities/self/query', { 'Level' : 'Study',
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8539 'Query' : { 'PatientID' : '*' }}) ['ID']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8540
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8541 self.assertEqual(1, len(DoGet(_REMOTE, '/queries/%s/answers' % a)))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8542 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers?expand' % a) [0]['0010,0020']['Value'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8543 self.assertEqual('PatientID', DoGet(_REMOTE, '/queries/%s/answers?expand' % a) [0]['0010,0020']['Name'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8544 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers?expand&simplify' % a) [0]['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8545 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers?expand&short' % a) [0]['0010,0020'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8546
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8547 # Test "GetQueryOneAnswer()" in "OrthancRestModalities.cpp"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8548 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers/0/content' % a) ['0010,0020']['Value'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8549 self.assertEqual('PatientID', DoGet(_REMOTE, '/queries/%s/answers/0/content' % a) ['0010,0020']['Name'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8550 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers/0/content?simplify' % a) ['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8551 self.assertEqual('ozp00SjY2xG', DoGet(_REMOTE, '/queries/%s/answers/0/content?short' % a) ['0010,0020'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8552
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8553 # Test "GetQueryArguments()" in "OrthancRestModalities.cpp"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8554 self.assertEqual('*', DoGet(_REMOTE, '/queries/%s/query' % a) ['0010,0020']['Value'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8555 self.assertEqual('PatientID', DoGet(_REMOTE, '/queries/%s/query' % a) ['0010,0020']['Name'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8556 self.assertEqual('*', DoGet(_REMOTE, '/queries/%s/query?simplify' % a) ['PatientID'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8557 self.assertEqual('*', DoGet(_REMOTE, '/queries/%s/query?short' % a) ['0010,0020'])
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 412
diff changeset
8558
414
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8559 # Test "BulkContent()" in "OrthancRestResources.cpp"
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8560 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
8561 self.assertEqual(4, len(a))
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8562 self.assertEqual('ozp00SjY2xG', a[0]['MainDicomTags']['PatientID'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8563 self.assertEqual('Knee (R)', a[1]['MainDicomTags']['StudyDescription'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8564 self.assertEqual('KNIX', a[1]['PatientMainDicomTags']['PatientName'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8565 self.assertEqual('AX. FSE PD', a[2]['MainDicomTags']['SeriesDescription'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8566 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
8567 a[3]['MainDicomTags']['SOPInstanceUID'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8568
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8569 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
8570 'Short': True })
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8571 self.assertEqual(4, len(a))
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8572 self.assertEqual('ozp00SjY2xG', a[0]['MainDicomTags']['0010,0020'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8573 self.assertEqual('Knee (R)', a[1]['MainDicomTags']['0008,1030'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8574 self.assertEqual('KNIX', a[1]['PatientMainDicomTags']['0010,0010'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8575 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
8576 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
8577 a[3]['MainDicomTags']['0008,0018'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8578
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8579 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
8580 'Full': True })
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8581 self.assertEqual(4, len(a))
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8582 self.assertEqual('ozp00SjY2xG', a[0]['MainDicomTags']['0010,0020']['Value'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8583 self.assertEqual('PatientID', a[0]['MainDicomTags']['0010,0020']['Name'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8584 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
8585 self.assertEqual('StudyDescription', a[1]['MainDicomTags']['0008,1030']['Name'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8586 self.assertEqual('KNIX', a[1]['PatientMainDicomTags']['0010,0010']['Value'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8587 self.assertEqual('PatientName', a[1]['PatientMainDicomTags']['0010,0010']['Name'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8588 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
8589 self.assertEqual('SeriesDescription', a[2]['MainDicomTags']['0008,103e']['Name'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8590 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
8591 a[3]['MainDicomTags']['0008,0018']['Value'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8592 self.assertEqual('SOPInstanceUID', a[3]['MainDicomTags']['0008,0018']['Name'])
a2beea45a53d test /tools/bulk-content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
8593
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8594
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8595 def test_bulk_content(self):
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8596 # New in Orthanc 1.9.4
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8597 knee1 = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID']
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8598 knee2 = UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') ['ID']
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8599 brainix = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID']
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8600
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8601 brainixHierarchy = [
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8602 DoGet(_REMOTE, '/instances/%s/patient' % brainix) ['ID'],
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8603 DoGet(_REMOTE, '/instances/%s/study' % brainix) ['ID'],
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8604 DoGet(_REMOTE, '/instances/%s/series' % brainix) ['ID'],
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8605 brainix,
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8606 ]
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8607
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8608 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : brainixHierarchy })
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8609 self.assertEqual(4, len(a))
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8610 b = map(lambda x: x['ID'], a)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8611 for i in range(4):
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8612 self.assertEqual(brainixHierarchy[i], b[i])
418
8a3d67a40083 test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
8613 self.assertTrue('Metadata' in a[i])
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8614
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8615 for (level, index) in [
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8616 ('Patient', 0),
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8617 ('Study', 1),
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8618 ('Series', 2),
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8619 ('Instance', 3),
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8620 ]:
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8621 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : brainixHierarchy,
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8622 'Level' : level })
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8623 self.assertEqual(1, len(a))
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8624 self.assertEqual(level, a[0]['Type'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8625 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
8626 self.assertTrue('Metadata' in a[0])
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8627
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8628 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
8629 'Level' : level,
8a3d67a40083 test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
8630 'Metadata' : False })
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8631 self.assertEqual(1, len(a))
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8632 self.assertEqual(level, a[0]['Type'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8633 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
8634 self.assertFalse('Metadata' in a[0])
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8635
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8636 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ knee1, knee2, brainix ] })
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8637 self.assertEqual(3, len(a))
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8638 for item in a:
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8639 self.assertEqual('Instance', item['Type'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8640 b = map(lambda x: x['ID'], a)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8641 self.assertTrue(knee1 in b)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8642 self.assertTrue(knee2 in b)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8643 self.assertTrue(brainix in b)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8644
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8645 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ knee1, knee2 ],
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8646 'Level' : 'Series' })
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8647 self.assertEqual(2, len(a))
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8648 for item in a:
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8649 self.assertEqual('Series', item['Type'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8650 b = map(lambda x: x['ID'], a)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8651 self.assertTrue(DoGet(_REMOTE, '/instances/%s' % knee1) ['ParentSeries'] in b)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8652 self.assertTrue(DoGet(_REMOTE, '/instances/%s' % knee2) ['ParentSeries'] in b)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8653
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8654 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
8655 'Level' : 'Study',
8a3d67a40083 test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
8656 'Metadata' : False })
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8657 self.assertEqual(1, len(a))
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8658 self.assertEqual(DoGet(_REMOTE, '/instances/%s/study' % knee1) ['ID'], a[0]['ID'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8659 self.assertEqual('Study', a[0]['Type'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8660 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
8661 self.assertFalse('Metadata' in a[0])
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8662
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8663 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
8664 'Level' : 'Patient',
8a3d67a40083 test "Metadata" in "/tools/bulk-content"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
8665 'Metadata' : True })
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8666 self.assertEqual(1, len(a))
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8667 self.assertEqual(DoGet(_REMOTE, '/instances/%s/patient' % knee1) ['ID'], a[0]['ID'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8668 self.assertEqual('Patient', a[0]['Type'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8669 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
8670 self.assertTrue('Metadata' in a[0])
451
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
8671 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
8672 self.assertEqual(2, len(a[0]['Metadata']))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
8673 self.assertTrue('MainDicomTagsSignature' in a[0]['Metadata'])
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
8674 else:
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
8675 self.assertEqual(1, len(a[0]['Metadata']))
33051f9ac850 new metadata MainDicomTagsSignature
Alain Mazy <am@osimis.io>
parents: 449
diff changeset
8676 self.assertTrue('LastUpdate' in a[0]['Metadata'])
415
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8677
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8678 for level in [ 'Instance', 'Series', 'Study', 'Patient' ]:
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8679 a = DoPost(_REMOTE, '/tools/bulk-content', { 'Resources' : [ knee1, brainix ],
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8680 'Level' : level })
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8681 self.assertEqual(2, len(a))
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8682 for item in a:
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8683 self.assertEqual(level, item['Type'])
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8684 b = map(lambda x: x['ID'], a)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8685 if level == 'Instance':
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8686 self.assertTrue(knee1 in b)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8687 self.assertTrue(brainix in b)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8688 else:
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8689 self.assertTrue(DoGet(_REMOTE, '/instances/%s/%s' % (knee1, level.lower())) ['ID'] in b)
fa6c4b82c027 test_bulk_content
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
8690 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
8691
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8692
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8693 def test_split_instances(self):
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8694 # New in 1.9.4
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8695 knee1 = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID']
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8696 knee2 = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0002.dcm') ['ID']
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8697 study = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918'
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8698 series = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285'
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8699
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8700 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8701 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8702 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8703
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8704 instances = DoGet(_REMOTE, '/instances')
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8705 self.assertEqual(2, len(instances))
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8706 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
8707 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
8708 for i in [ knee1, knee2 ]:
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8709 self.assertEqual(series, DoGet(_REMOTE, '/instances/%s/series' % i) ['ID'])
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8710 self.assertEqual(study, DoGet(_REMOTE, '/instances/%s/study' % i) ['ID'])
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8711
417
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8712 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/studies/%s/split' % study, {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8713 'KeepSource' : False
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8714 })) # Neither "Instances", nor "Series"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8715
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8716 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/studies/%s/split' % study, {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8717 'KeepSource' : False,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8718 'Instances' : [ ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8719 'Series' : [ ]
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8720 })) # Empty "Instances" and "Series"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8721
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8722 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/studies/%s/split' % study, {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8723 'Instances' : [ 'nope' ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8724 'KeepSource' : False
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8725 }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8726
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8727 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/studies/%s/split' % study, {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8728 'Series' : [ 'nope' ],
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8729 'KeepSource' : False
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8730 }))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 416
diff changeset
8731
416
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8732 result = DoPost(_REMOTE, '/studies/%s/split' % study, {
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8733 'Instances' : [ knee1 ],
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8734 'KeepSource' : False
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8735 })
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8736
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8737 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8738 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8739 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8740
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8741 instances = DoGet(_REMOTE, '/instances')
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8742 self.assertEqual(2, len(instances))
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8743
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8744 self.assertFalse(knee1 in instances)
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8745 self.assertTrue(knee2 in instances)
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8746 instances.remove(knee2)
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8747 self.assertEqual(series, DoGet(_REMOTE, '/instances/%s/series' % knee2) ['ID'])
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8748 self.assertEqual(study, DoGet(_REMOTE, '/instances/%s/study' % knee2) ['ID'])
80164728c038 test_split_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
8749 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
8750 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
8751 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
8752
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8753
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8754 def test_merge_instances(self):
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8755 # New in Orthanc 1.9.4
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8756 knee = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') ['ID']
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8757 brainix = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID']
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8758 brainixStudy = DoGet(_REMOTE, '/instances/%s/study' % brainix) ['ID']
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8759
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8760 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8761 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8762 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8763 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8764
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8765 instances = DoGet(_REMOTE, '/instances')
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8766 self.assertEqual(2, len(instances))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8767 self.assertTrue(brainix in instances)
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8768 self.assertTrue(knee in instances)
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8769
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8770 result = DoPost(_REMOTE, '/studies/%s/merge' % brainixStudy, {
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8771 'Resources' : [ knee ]
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8772 })
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8773
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8774 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8775 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8776 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8777 self.assertEqual(brainixStudy, DoGet(_REMOTE, '/studies')[0])
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8778
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8779 instances = DoGet(_REMOTE, '/instances')
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8780 self.assertEqual(2, len(instances))
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8781 self.assertTrue(brainix in instances)
6a57c4efe38a test_merge_instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 418
diff changeset
8782 self.assertFalse(knee in instances)
423
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8783
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8784
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8785 def test_query_retrieve_format(self):
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8786 # New in Orthanc 1.9.5
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8787 # 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
8788 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
8789 study = DoGet(_REMOTE, '/instances/%s/study' % i) ['MainDicomTags']['StudyInstanceUID']
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8790
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8791 a = DoPost(_REMOTE, '/modalities/self/query', {
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8792 'Level' : 'Study',
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8793 'Query' : {}
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8794 })
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8795
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8796 b = DoGet(_REMOTE, a['Path'] + '/answers')
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8797 self.assertEqual(1, len(b))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8798 self.assertEqual('0', b[0])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8799
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8800 b = DoGet(_REMOTE, a['Path'] + '/answers?expand')
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8801 self.assertEqual(1, len(b))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8802 self.assertEqual(6, len(b[0]))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8803 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
8804 self.assertEqual('SpecificCharacterSet', b[0]['0008,0005']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8805 self.assertEqual('A10003245599', b[0]['0008,0050']['Value'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8806 self.assertEqual('AccessionNumber', b[0]['0008,0050']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8807 self.assertEqual('STUDY', b[0]['0008,0052']['Value'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8808 self.assertEqual('QueryRetrieveLevel', b[0]['0008,0052']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8809 self.assertEqual('ORTHANC', b[0]['0008,0054']['Value'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8810 self.assertEqual('RetrieveAETitle', b[0]['0008,0054']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8811 self.assertEqual('887', b[0]['0010,0020']['Value'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8812 self.assertEqual('PatientID', b[0]['0010,0020']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8813 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
8814 self.assertEqual('StudyInstanceUID', b[0]['0020,000d']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8815
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8816 for (key, value) in b[0].items():
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8817 self.assertEqual('String', value['Type'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8818
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8819 self.assertEqual(json.dumps(b[0]),
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8820 json.dumps(DoGet(_REMOTE, a['Path'] + '/answers/0/content')))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8821
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8822 # 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
8823
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8824 b = DoGet(_REMOTE, a['Path'] + '/answers?expand&short')
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8825 self.assertEqual(1, len(b))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8826 self.assertEqual(6, len(b[0]))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8827 self.assertEqual('ISO_IR 100', b[0]['0008,0005'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8828 self.assertEqual('A10003245599', b[0]['0008,0050'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8829 self.assertEqual('STUDY', b[0]['0008,0052'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8830 self.assertEqual('ORTHANC', b[0]['0008,0054'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8831 self.assertEqual('887', b[0]['0010,0020'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8832 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
8833 self.assertEqual(json.dumps(b[0]),
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8834 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
8835
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8836 b = DoGet(_REMOTE, a['Path'] + '/answers?expand&simplify')
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8837 self.assertEqual(1, len(b))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8838 self.assertEqual(6, len(b[0]))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8839 self.assertEqual('ISO_IR 100', b[0]['SpecificCharacterSet'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8840 self.assertEqual('A10003245599', b[0]['AccessionNumber'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8841 self.assertEqual('STUDY', b[0]['QueryRetrieveLevel'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8842 self.assertEqual('ORTHANC', b[0]['RetrieveAETitle'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8843 self.assertEqual('887', b[0]['PatientID'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8844 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
8845 self.assertEqual(json.dumps(b[0]),
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8846 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
8847
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8848 b = DoPost(_REMOTE, '/queries/%s/retrieve' % a['ID'], {})
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8849 self.assertEqual('REST API', b['Description'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8850 self.assertEqual('ORTHANC', b['LocalAet'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8851 self.assertEqual('ORTHANC', b['RemoteAet'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8852 self.assertEqual(1, len(b['Query']))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8853 self.assertEqual(4, len(b['Query'][0]))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8854 self.assertEqual('A10003245599', b['Query'][0]['0008,0050'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8855 self.assertEqual('STUDY', b['Query'][0]['0008,0052'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8856 self.assertEqual('887', b['Query'][0]['0010,0020'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8857 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
8858
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8859 # 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
8860
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8861 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
8862 self.assertEqual('REST API', b['Description'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8863 self.assertEqual('ORTHANC', b['LocalAet'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8864 self.assertEqual('ORTHANC', b['RemoteAet'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8865 self.assertEqual(1, len(b['Query']))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8866 self.assertEqual(4, len(b['Query'][0]))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8867 self.assertEqual('A10003245599', b['Query'][0]['0008,0050']['Value'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8868 self.assertEqual('STUDY', b['Query'][0]['0008,0052']['Value'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8869 self.assertEqual('887', b['Query'][0]['0010,0020']['Value'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8870 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
8871 self.assertEqual('AccessionNumber', b['Query'][0]['0008,0050']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8872 self.assertEqual('QueryRetrieveLevel', b['Query'][0]['0008,0052']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8873 self.assertEqual('PatientID', b['Query'][0]['0010,0020']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8874 self.assertEqual('StudyInstanceUID', b['Query'][0]['0020,000d']['Name'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8875
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8876 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
8877 self.assertEqual('REST API', b['Description'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8878 self.assertEqual('ORTHANC', b['LocalAet'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8879 self.assertEqual('ORTHANC', b['RemoteAet'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8880 self.assertEqual(1, len(b['Query']))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8881 self.assertEqual(4, len(b['Query'][0]))
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8882 self.assertEqual('A10003245599', b['Query'][0]['AccessionNumber'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8883 self.assertEqual('STUDY', b['Query'][0]['QueryRetrieveLevel'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8884 self.assertEqual('887', b['Query'][0]['PatientID'])
cef3847dc8af test_query_retrieve_format
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 420
diff changeset
8885 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
8886
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8887
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8888 def test_anonymize_nested(self):
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8889 # New in Orthanc 1.9.5
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8890
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8891 tags = {
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8892 'MappingResourceIdentificationSequence' : [
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8893 {
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8894 # Test "DicomModification::RelationshipsVisitor::GetDefaultAction()"
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8895 '0009,1002' : 'ABCD', # Private tag not registered in dictionary
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8896 '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
8897 '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
8898
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8899 # Test "DicomModification::RelationshipsVisitor::VisitString()"
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8900 'StudyDescription' : 'Hello', # Removed
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8901 'StudyDate' : '20210705', # Cleared
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8902 '0009,1001' : '-1234', # Private tag whose VR is DS
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8903
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8904 # Test anonymization of nested sequences
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8905 'ReferencedStudySequence' : [
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8906 {
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8907 'PatientID' : 'HELLO'
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8908 }
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8909 ],
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8910
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8911 # Non-anonymized tags
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8912 'CodeMeaning' : 'MEANING1',
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8913 'EquivalentCodeSequence' : [
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8914 {
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8915 'CodeMeaning' : 'MEANING2',
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8916 }
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8917 ],
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8918 }
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8919 ],
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8920 }
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8921
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8922 a = DoPost(_REMOTE, '/tools/create-dicom',
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8923 json.dumps({
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8924 'Tags' : tags,
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8925 'PrivateCreator' : 'Lunit',
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8926 })) ['ID']
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8927
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8928 study = DoGet(_REMOTE, '/instances/%s/study' % a) ['ID']
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8929 b = DoPost(_REMOTE, '/studies/%s/anonymize' % study, {}) ['ID']
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8930 c = DoGet(_REMOTE, '/studies/%s/instances' % b)
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8931 self.assertEqual(1, len(c))
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8932
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8933 tags1 = DoGet(_REMOTE, '/instances/%s/tags?short' % a)
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8934 tags2 = DoGet(_REMOTE, '/instances/%s/tags?short' % c[0]['ID'])
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8935
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8936 # Only "StudyDate" must be present in
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8937 # "MappingResourceIdentificationSequence" after anonymization
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8938 self.assertEqual(1, len(tags1['0008,0124']))
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8939 self.assertEqual(1, len(tags2['0008,0124']))
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8940 self.assertEqual(9, len(tags1['0008,0124'][0]))
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8941 self.assertEqual(3, len(tags2['0008,0124'][0]))
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8942 self.assertEqual('', tags2['0008,0124'][0]['0008,0020'])
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8943 self.assertEqual('MEANING1', tags2['0008,0124'][0]['0008,0104'])
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8944 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
8945
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8946 self.assertTrue('0008,1110' in tags1['0008,0124'][0])
934f505677da test_anonymize_nested
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 423
diff changeset
8947 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
8948
77455e156112 integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 424
diff changeset
8949
77455e156112 integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 424
diff changeset
8950 def test_issue_200(self):
77455e156112 integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 424
diff changeset
8951 # 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
8952 # https://bugs.orthanc-server.com/show_bug.cgi?id=200
428
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 427
diff changeset
8953 self.assertEqual(0, len(DoGet(_REMOTE, '/changes') ['Changes']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 427
diff changeset
8954 self.assertEqual(0, len(DoGet(_REMOTE, '/changes?last') ['Changes']))
429
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8955 u = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
427
77455e156112 integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 424
diff changeset
8956
77455e156112 integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 424
diff changeset
8957 for change in DoGet(_REMOTE, '/changes') ['Changes']:
77455e156112 integration test for issue 200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 424
diff changeset
8958 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
8959 self.assertTrue(re.match('[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}', change['ID']))
428
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 427
diff changeset
8960
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 427
diff changeset
8961 last = DoGet(_REMOTE, '/changes?last') ['Changes']
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 427
diff changeset
8962 self.assertEqual(1, len(last))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 427
diff changeset
8963 self.assertTrue(re.match('[0-9]{8}T[0-9]{6}', last[0]['Date']))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 427
diff changeset
8964 self.assertTrue(re.match('[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}', last[0]['ID']))
429
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8965
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8966 self.assertEqual(0, len(DoGet(_REMOTE, '/exports') ['Exports']))
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8967 self.assertEqual(0, len(DoGet(_REMOTE, '/exports?last') ['Exports']))
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8968 DoPost(_REMOTE, '/modalities/self/store', [ u ])
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8969
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8970 for change in DoGet(_REMOTE, '/exports') ['Exports']:
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8971 self.assertTrue(re.match('[0-9]{8}T[0-9]{6}', change['Date']))
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8972 self.assertTrue(re.match('[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}-[0-9a-z]{8}', change['ID']))
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8973
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8974 last = DoGet(_REMOTE, '/exports?last') ['Exports']
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8975 self.assertEqual(1, len(last))
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8976 self.assertEqual('ozp00SjY2xG', last[0]['PatientID'])
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8977 self.assertEqual('self', last[0]['RemoteModality'])
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8978 self.assertEqual('Instance', last[0]['ResourceType'])
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8979 self.assertEqual('/instances/%s' % last[0]['ID'], last[0]['Path'])
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8980 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', last[0]['StudyInstanceUID'])
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8981 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', last[0]['SeriesInstanceUID'])
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8982 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', last[0]['SOPInstanceUID'])
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8983 self.assertTrue(re.match('[0-9]{8}T[0-9]{6}', last[0]['Date']))
f42c610234b0 test exports
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
8984 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
8985
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8986
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8987 def test_upload_dicomdir_archive(self):
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8988 # This test fails on Orthanc <= 1.9.6
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8989 # 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
8990
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8991 # Create a ZIP archive with a DICOMDIR
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8992 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8993 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID']
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8994 media = DoGet(_REMOTE, '/studies/%s/media' % study)
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8995 DoDelete(_REMOTE, '/instances/%s' % instance)
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8996
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8997 result = DoPost(_REMOTE, '/instances', media)
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8998 self.assertEqual(1, len(result))
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
8999 self.assertEqual(instance, result[0]['ID'])
e665c493e23e test_upload_dicomdir_archive
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 429
diff changeset
9000 self.assertEqual('Success', result[0]['Status'])
432
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9001
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9002
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9003 def test_modify_keep_source(self):
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9004 # 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
9005 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9006 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID']
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9007 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9008
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9009 a = DoPost(_REMOTE, '/studies/%s/anonymize' % study, {}) ['ID']
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9010 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9011 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9012 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9013
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9014 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
9015 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9016 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9017 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9018
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9019 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
9020 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9021 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9022 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9023
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9024 UploadInstance(_REMOTE, 'DummyCT.dcm')
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9025 a = DoPost(_REMOTE, '/studies/%s/modify' % study, { 'Replace' : { } }) ['ID']
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9026 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9027 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9028 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9029
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9030 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
9031 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9032 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9033 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9034
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9035 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
9036 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9037 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9038 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9039
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9040 def GetStudy(a):
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9041 b = filter(lambda x: x['Type'] == 'Study', a['Resources'])
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9042 if len(b) == 1:
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9043 return b[0]['ID']
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9044 else:
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9045 raise Exception()
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9046
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9047 UploadInstance(_REMOTE, 'DummyCT.dcm')
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9048 a = GetStudy(DoPost(_REMOTE, '/tools/bulk-anonymize', { 'Resources' : [ study ]}))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9049 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9050 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9051 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9052
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9053 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
9054 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9055 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9056 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9057
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9058 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
9059 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9060 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9061 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9062
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9063 UploadInstance(_REMOTE, 'DummyCT.dcm')
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9064 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
9065 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9066 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9067 # 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
9068 # 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
9069 # the original instance
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9070 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9071
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9072 # 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
9073 # introduced in 1.9.7
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9074
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9075 UploadInstance(_REMOTE, 'DummyCT.dcm')
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9076 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
9077 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9078 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9079 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9080
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9081 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
9082 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9083 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9084 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9085
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9086 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
9087 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9088 DoDelete(_REMOTE, '/studies/%s' % a)
f4609c97e995 test_modify_keep_source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 431
diff changeset
9089 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
433
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9090
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9091
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9092 def test_multiframe_windowing(self):
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9093 # Fixed in Orthanc 1.9.7
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9094 a = UploadInstance(_REMOTE, 'MultiframeWindowing.dcm') ['ID']
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9095
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9096 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
9097 self.assertEqual(0x00, im.getpixel((0, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9098 self.assertEqual(0x10, im.getpixel((1, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9099 self.assertEqual(0x20, im.getpixel((0, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9100 self.assertEqual(0x30, im.getpixel((1, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9101
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9102 # 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
9103 # mid-level value (i.e. 127)
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9104 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
9105 self.assertEqual(127 - 2 * 16, im.getpixel((0, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9106 self.assertEqual(127, im.getpixel((1, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9107 self.assertEqual(127 + 2 * 16, im.getpixel((0, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9108 self.assertEqual(127 + 2 * 32, im.getpixel((1, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9109
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9110 # 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
9111 im = GetImage(_REMOTE, '/instances/%s/frames/0/rendered' % a)
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9112 self.assertEqual(127 - 2 * 16, im.getpixel((0, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9113 self.assertEqual(127, im.getpixel((1, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9114 self.assertEqual(127 + 2 * 16, im.getpixel((0, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9115 self.assertEqual(127 + 2 * 32, im.getpixel((1, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9116
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9117 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
9118 self.assertEqual(100, im.getpixel((0, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9119 self.assertEqual(116, im.getpixel((1, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9120 self.assertEqual(132, im.getpixel((0, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9121 self.assertEqual(148, im.getpixel((1, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9122
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9123 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
9124 self.assertEqual(0, im.getpixel((0, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9125 self.assertEqual(32, im.getpixel((1, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9126 self.assertEqual(64, im.getpixel((0, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9127 self.assertEqual(96, im.getpixel((1, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9128
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9129 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
9130 self.assertEqual(100, im.getpixel((0, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9131 self.assertEqual(132, im.getpixel((1, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9132 self.assertEqual(164, im.getpixel((0, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9133 self.assertEqual(196, im.getpixel((1, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9134
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9135 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
9136 self.assertEqual(127 - 2 * 16, im.getpixel((0, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9137 self.assertEqual(127, im.getpixel((1, 0)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9138 self.assertEqual(127 + 2 * 16, im.getpixel((0, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9139 self.assertEqual(127 + 2 * 32, im.getpixel((1, 1)))
cb579ad96a6c test_multiframe_windowing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 432
diff changeset
9140
436
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9141
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9142 def test_dicom_seg(self):
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9143 # This test fails in Orthanc <= 1.9.7
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9144 a = UploadInstance(_REMOTE, 'DicomSeg.dcm') ['ID']
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9145
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9146 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
9147 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
9148
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9149 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
9150 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
9151
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9152 for i in range(96):
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9153 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
9154 self.assertEqual('L', im.mode)
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9155 self.assertEqual(256, im.size[0])
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9156 self.assertEqual(256, im.size[1])
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9157
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9158 e = im.getextrema()
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9159 self.assertEqual(0, e[0])
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9160
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9161 if e[1] == 0:
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9162 self.assertFalse(i in nonEmptyFrames)
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9163 else:
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9164 self.assertTrue(i in nonEmptyFrames)
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9165
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9166 im1 = GetImage(_REMOTE, '/instances/%s/frames/44/preview' % a)
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9167
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9168 # 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
9169 im2 = Image.open(GetDatabasePath('DicomSeg-Frame45.pgm'))
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9170 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
9171
9f87d5b2b382 added test_dicom_seg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 433
diff changeset
9172 self.assertTrue(ImageChops.difference(im1, im2).getbbox() is None)
440
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9173
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9174
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9175 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
9176 # New in Orthanc 1.10.0
440
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9177 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9178 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm')
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9179 b = UploadInstance(_REMOTE, 'DicomSeg.dcm') ['ID']
441
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9180 d = UploadInstance(_REMOTE, 'Issue124.dcm') ['ID']
440
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9181
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9182 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy' % a)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9183 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9184 self.assertEqual(numpy.float32, c.dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9185 self.assertEqual((288, 288, 1), c.shape)
441
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9186 self.assertAlmostEqual(0, c.min())
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9187 self.assertAlmostEqual(536, c.max())
440
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9188
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9189 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy?rescale=0' % a)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9190 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9191 self.assertEqual(numpy.uint16, c.dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9192 self.assertEqual((288, 288, 1), c.shape)
441
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9193 self.assertEqual(0, c.min())
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9194 self.assertEqual(536, c.max())
440
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9195
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9196 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy?rescale=1&compress=false' % a)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9197 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9198 self.assertEqual(numpy.float32, c.dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9199 self.assertEqual((1, 288, 288, 1), c.shape)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9200
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9201 series = DoGet(_REMOTE, '/instances/%s/series' % a)['ID']
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9202 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy?rescale=true&compress=0' % series)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9203 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9204 self.assertEqual(numpy.float32, c.dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9205 self.assertEqual((2, 288, 288, 1), c.shape)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9206
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9207 series = DoGet(_REMOTE, '/instances/%s/series' % a)['ID']
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9208 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy?rescale=1' % series)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9209 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9210 self.assertEqual(numpy.float32, c.dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9211 self.assertEqual((2, 288, 288, 1), c.shape)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9212
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9213 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy?compress' % a)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9214 self.assertTrue(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9215 self.assertEqual(1, len(c.files))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9216 self.assertEqual(numpy.float32, c['arr_0'].dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9217 self.assertEqual((1, 288, 288, 1), c['arr_0'].shape)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9218
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9219 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy' % b)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9220 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9221 self.assertEqual(numpy.float32, c.dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9222 self.assertEqual((256, 256, 1), c.shape)
441
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9223 self.assertAlmostEqual(0, c.min())
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9224 self.assertAlmostEqual(0, c.max())
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9225
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9226 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
9227 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9228 self.assertEqual(numpy.float32, c.dtype)
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9229 self.assertEqual((256, 256, 1), c.shape)
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9230 self.assertAlmostEqual(0, c.min())
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9231 self.assertAlmostEqual(255, c.max())
440
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9232
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9233 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy' % b)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9234 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9235 self.assertEqual(numpy.float32, c.dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9236 self.assertEqual((96, 256, 256, 1), c.shape)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9237
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9238 series = DoGet(_REMOTE, '/instances/%s/series' % b)['ID']
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9239 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy' % series)))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9240 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9241 self.assertEqual(numpy.float32, c.dtype)
3a5222eb4c93 added test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 439
diff changeset
9242 self.assertEqual((96, 256, 256, 1), c.shape)
441
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9243
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9244 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
9245 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9246 self.assertEqual(numpy.float32, c.dtype)
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9247 self.assertEqual((512, 512, 1), c.shape)
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9248 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
9249 self.assertAlmostEqual(2374, c.max())
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9250
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9251 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
9252 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9253 self.assertEqual(numpy.int16, c.dtype)
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9254 self.assertEqual((512, 512, 1), c.shape)
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9255 self.assertEqual(-2000, c.min())
21a45ddc9256 expanded test_numpy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 440
diff changeset
9256 self.assertEqual(3398, c.max())
442
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9257
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9258
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9259 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
9260 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
9261
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9262 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
9263 "Replace" : {
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9264 "PatientName" : "MyName[*]",
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9265 "PatientID": "test_brackets"
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9266 },
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9267 "Force": True
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9268 }),
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9269 'application/json')
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9270
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9271 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
9272
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9273 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
9274 'Query' : { 'PatientName' : 'MyName[*]' }})
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9275 self.assertEqual(1, len(a))
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9276
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9277 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
9278 'Query' : { 'PatientName' : 'MyName[*]' }})
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9279 self.assertEqual(1, len(a))
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9280
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9281 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
9282 'Query' : { 'PatientName' : 'MyName*' }})
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9283 self.assertEqual(1, len(a))
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9284
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9285 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
9286 'Query' : { 'PatientName' : 'MyName*' }})
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9287 self.assertEqual(1, len(a))
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9288
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9289 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
9290 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
9291
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9292 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
9293 "Replace" : {
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9294 "PatientName" : "MyName2[]",
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9295 "PatientID": "test_brackets2"
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9296 },
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9297 "Force": True
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9298 }),
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9299 'application/json')
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9300
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9301 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
9302
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9303 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
9304 'Query' : { 'PatientName' : 'MyName2[*]' }})
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9305 self.assertEqual(1, len(a))
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9306
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9307 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
9308 'Query' : { 'PatientName' : 'MyName2[*]' }})
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9309 self.assertEqual(1, len(a))
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9310
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9311 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
9312 'Query' : { 'PatientName' : 'MyName2*' }})
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9313 self.assertEqual(1, len(a))
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9314
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9315 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
9316 'Query' : { 'PatientName' : 'MyName2*' }})
af57603438b3 added tests for patient names with square brackets
Alain Mazy <am@osimis.io>
parents: 441
diff changeset
9317 self.assertEqual(1, len(a))
455
f53cd250becc test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
9318
f53cd250becc test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
9319
452
45dd181b0f17 added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents: 451
diff changeset
9320 def test_rest_find_requested_tags(self):
486
6144ef431512 new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents: 482
diff changeset
9321 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1): # RequestedTags introduced in 1.11.0 but Sequences allowed since 1.11.1
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9322
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9323 # Upload instances
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9324 for i in range(2):
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9325 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9326
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9327 # Patient level
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9328 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9329 'CaseSensitive' : False,
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9330 'Query' : { 'PatientName' : 'BRAINIX' },
486
6144ef431512 new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents: 482
diff changeset
9331 'RequestedTags' : [ 'PatientName', 'PatientID', 'PatientSex', 'PatientBirthDate'],
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9332 'Expand': True
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9333 })
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9334 self.assertEqual(1, len(a))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9335 self.assertIn('PatientName', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9336 self.assertIn('PatientID', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9337 self.assertIn('PatientSex', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9338 self.assertIn('PatientBirthDate', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9339
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9340 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9341 self.assertEqual('5Yp0E', a[0]['RequestedTags']['PatientID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9342 self.assertEqual('0000', a[0]['RequestedTags']['PatientSex'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9343 self.assertEqual('19490301', a[0]['RequestedTags']['PatientBirthDate'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9344
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9345 # Study level, request patient tags too
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9346 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9347 'CaseSensitive' : False,
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9348 'Query' : { 'PatientName' : 'BRAINIX' },
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9349 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID'],
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9350 'Expand': True
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9351 })
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9352 self.assertEqual(1, len(a))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9353 self.assertIn('PatientName', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9354 self.assertIn('StudyInstanceUID', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9355
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9356 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9357 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9358
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9359
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9360 # Series level, request patient and study tags too
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9361 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9362 'CaseSensitive' : False,
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9363 'Query' : { 'PatientName' : 'BRAINIX' },
486
6144ef431512 new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents: 482
diff changeset
9364 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'SeriesInstanceUID', 'RequestAttributesSequence'],
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9365 'Expand': True
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9366 })
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9367 self.assertEqual(1, len(a))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9368 self.assertIn('PatientName', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9369 self.assertIn('StudyInstanceUID', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9370 self.assertIn('SeriesInstanceUID', a[0]['RequestedTags'])
486
6144ef431512 new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents: 482
diff changeset
9371 self.assertIn('RequestAttributesSequence', a[0]['RequestedTags'])
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9372
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9373 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9374 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9375 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
9376 self.assertEqual('A10029316690', a[0]['RequestedTags']['RequestAttributesSequence'][0]['RequestedProcedureID'])
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9377
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9378
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9379 # Instance level, request patient, study and series tags too, include tags that are not part of the main dicom tags
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9380 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9381 'CaseSensitive' : False,
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9382 'Query' : { 'PatientName' : 'BRAINIX' },
486
6144ef431512 new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents: 482
diff changeset
9383 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID', 'PhotometricInterpretation', 'RequestAttributesSequence'],
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9384 'Expand': True
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9385 })
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9386 self.assertEqual(1, len(a))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9387 self.assertIn('PatientName', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9388 self.assertIn('StudyInstanceUID', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9389 self.assertIn('SeriesInstanceUID', a[0]['RequestedTags'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9390 self.assertIn('PhotometricInterpretation', a[0]['RequestedTags'])
486
6144ef431512 new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents: 482
diff changeset
9391 self.assertIn('RequestAttributesSequence', a[0]['RequestedTags'])
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9392
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9393 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9394 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9395 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', a[0]['RequestedTags']['SeriesInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9396 self.assertEqual('MONOCHROME2', a[0]['RequestedTags']['PhotometricInterpretation'])
486
6144ef431512 new tests for sequences in ExtraMainDicomTags
Alain Mazy <am@osimis.io>
parents: 482
diff changeset
9397 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
9398
45dd181b0f17 added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents: 451
diff changeset
9399
453
46ae8fb09254 test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents: 452
diff changeset
9400 def test_rest_find_requested_tags_computed_tags(self):
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9401 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9402 # Upload instances
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9403 for i in range(2):
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9404 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9405
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9406
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9407 # Patient level
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9408 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9409 'CaseSensitive' : False,
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9410 'Query' : { 'PatientName' : 'BRAINIX' },
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9411 'RequestedTags' : [ 'PatientName', 'NumberOfPatientRelatedStudies', 'NumberOfPatientRelatedSeries', 'NumberOfPatientRelatedInstances'],
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9412 'Expand': True
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9413 })
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9414 self.assertEqual(1, len(a))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9415
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9416 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9417 self.assertEqual('1', a[0]['RequestedTags']['NumberOfPatientRelatedStudies'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9418 self.assertEqual('1', a[0]['RequestedTags']['NumberOfPatientRelatedSeries'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9419 self.assertEqual('2', a[0]['RequestedTags']['NumberOfPatientRelatedInstances'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9420
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9421 # Study level
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9422 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9423 'CaseSensitive' : False,
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9424 'Query' : { 'PatientName' : 'BRAINIX' },
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9425 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'ModalitiesInStudy', 'SOPClassesInStudy', 'NumberOfStudyRelatedInstances', 'NumberOfStudyRelatedSeries'],
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9426 'Expand': True
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9427 })
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9428 self.assertEqual(1, len(a))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9429
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9430 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9431 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9432 self.assertEqual('MR', a[0]['RequestedTags']['ModalitiesInStudy'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9433 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', a[0]['RequestedTags']['SOPClassesInStudy'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9434 self.assertEqual('2', a[0]['RequestedTags']['NumberOfStudyRelatedInstances'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9435 self.assertEqual('1', a[0]['RequestedTags']['NumberOfStudyRelatedSeries'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9436
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9437 # Series level
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9438 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9439 'CaseSensitive' : False,
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9440 'Query' : { 'PatientName' : 'BRAINIX' },
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9441 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'NumberOfSeriesRelatedInstances'],
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9442 'Expand': True
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9443 })
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9444 self.assertEqual(1, len(a))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9445
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9446 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9447 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9448 self.assertEqual('2', a[0]['RequestedTags']['NumberOfSeriesRelatedInstances'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9449
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9450 # Instance level
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9451 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9452 'CaseSensitive' : False,
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9453 'Query' : { 'PatientName' : 'BRAINIX' },
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9454 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'SOPInstanceUID', 'InstanceAvailability'],
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9455 'Expand': True
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9456 })
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9457 self.assertEqual(2, len(a))
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9458
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9459 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9460 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9461 self.assertEqual('ONLINE', a[0]['RequestedTags']['InstanceAvailability'])
456
Alain Mazy <am@osimis.io>
parents: 454
diff changeset
9462
452
45dd181b0f17 added test for requestedTags in tools/find + list-resources
Alain Mazy <am@osimis.io>
parents: 451
diff changeset
9463 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
9464
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9465 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9466 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9467 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9468 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9469
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9470 # list series and request tags that are not in the default main dicom tags
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9471 a = DoGet(_REMOTE, '/studies/%s/series?expand&simplify&requestedTags=PatientName;Modality;SeriesInstanceUID;MRAcquisitionType' % study)
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9472
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9473 self.assertEqual('2D', a[0]['RequestedTags']['MRAcquisitionType'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9474 self.assertEqual('MR', a[0]['RequestedTags']['Modality'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9475 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9476 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', a[0]['RequestedTags']['SeriesInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9477
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9478 # list studies and request patient and studies tags
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9479 a = DoGet(_REMOTE, '/patients/%s/studies?expand&simplify&requestedTags=PatientName;StudyInstanceUID' % patient)
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9480
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9481 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9482 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9483
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9484
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9485 # list instances and request patient, studies and series tags including tags that are not in main dicom tags
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9486 a = DoGet(_REMOTE, '/patients/%s/instances?expand&simplify&requestedTags=PatientName;StudyInstanceUID;SeriesInstanceUID;SOPInstanceUID;Rows;Columns;InstanceAvailability' % patient)
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9487
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9488 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9489 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', a[0]['RequestedTags']['SeriesInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9490 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', a[0]['RequestedTags']['SOPInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9491 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9492 self.assertEqual('512', a[0]['RequestedTags']['Rows'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9493 self.assertEqual('512', a[0]['RequestedTags']['Columns'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9494 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
9495
453
46ae8fb09254 test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents: 452
diff changeset
9496
46ae8fb09254 test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents: 452
diff changeset
9497 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
9498
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9499 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9500 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9501 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9502 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9503
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9504 # list studies and request patient and studies tags, including ModalitiesInStudy
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9505 a = DoGet(_REMOTE, '/patients/%s/studies?expand&simplify&requestedTags=PatientName;StudyInstanceUID;ModalitiesInStudy;SOPClassesInStudy;NumberOfStudyRelatedInstances;NumberOfStudyRelatedSeries' % patient)
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9506
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9507 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9508 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9509 self.assertEqual('MR', a[0]['RequestedTags']['ModalitiesInStudy'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9510 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', a[0]['RequestedTags']['SOPClassesInStudy'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9511 self.assertEqual('1', a[0]['RequestedTags']['NumberOfStudyRelatedInstances'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9512 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
9513
46ae8fb09254 test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents: 452
diff changeset
9514
46ae8fb09254 test computed tags for tools/find and list-resources
Alain Mazy <am@osimis.io>
parents: 452
diff changeset
9515 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
9516
471
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9517 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9518 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9519 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9520 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID']
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9521
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9522 # list studies and request patient and studies tags, including ModalitiesInStudy
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9523 a = DoGet(_REMOTE, '/studies/%s/series?expand&simplify&requestedTags=PatientName;SeriesInstanceUID;NumberOfSeriesRelatedInstances' % study)
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9524
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9525 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', a[0]['RequestedTags']['SeriesInstanceUID'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9526 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])
1a4eb582cf03 skip tests for next version
Alain Mazy <am@osimis.io>
parents: 469
diff changeset
9527 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
9528
455
f53cd250becc test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
9529 def test_dicomweb_jpeg2k_implicit(self):
f53cd250becc test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
9530 # This is a file encoded using 1.2.840.10008.1.2.4.90 transfer
457
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 455
diff changeset
9531 # 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
9532 # representation. Support introduced in Orthanc 1.10.1.
f53cd250becc test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
9533 # 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
9534 a = UploadInstance(_REMOTE, '2022-03-08-RicSmi.dcm') ['ID']
f53cd250becc test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
9535 b = DoGet(_REMOTE, '/instances/%s/file' % a,
f53cd250becc test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
9536 headers = { 'Accept' : 'application/dicom+json' })
f53cd250becc test_dicomweb_jpeg2k_implicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
9537 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
9538 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
9539
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
9540 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
9541 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
9542 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
9543
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
9544 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
9545 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
9546 '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
9547 '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
9548 '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
9549 '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
9550 }))
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
9551
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
9552 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
9553 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
9554
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
9555 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
9556 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
9557
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
9558 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
9559 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
9560
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
9561 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
9562 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
9563 self.assertEqual(j['ID'], i['ID'])
501
1b1bb8621021 /store: allows overriding CalledAet, Host, Port
Alain Mazy <am@osimis.io>
parents: 500
diff changeset
9564
1b1bb8621021 /store: allows overriding CalledAet, Host, Port
Alain Mazy <am@osimis.io>
parents: 500
diff changeset
9565 def test_storescu_custom_host_ip_port(self):
510
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9566 if IsOrthancVersionAbove(_REMOTE, 1, 11, 3):
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9567 DropOrthanc(_LOCAL)
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9568 DropOrthanc(_REMOTE)
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9569
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9570 a = UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9571
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9572 # upload to self -> orthanctest shall not receive any content
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9573 DoPost(_REMOTE, '/modalities/self/store', {
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9574 'Resources' : [ a['ID']]
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9575 })
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9576 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9577
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9578 # upload to self by overriding it with config from orthanctest -> orthanctest shall receive the content
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9579 c = DoGet(_REMOTE, '/modalities/orthanctest/configuration')
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9580 DoPost(_REMOTE, '/modalities/self/store', {
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9581 'LocalAet' : 'YOP',
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9582 'CalledAet' : c['AET'],
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9583 'Port' : c['Port'],
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9584 'Host' : c['Host'],
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9585 'Resources' : [ a['ID']]
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9586 })
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9587
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9588 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9589
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9590 DropOrthanc(_REMOTE)
Alain Mazy <am@osimis.io>
parents: 509
diff changeset
9591 DropOrthanc(_LOCAL)
503
138d5efd4407 added test_rle_planar_configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 502
diff changeset
9592
138d5efd4407 added test_rle_planar_configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 502
diff changeset
9593 def test_rle_planar_configuration(self):
531
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9594 if IsOrthancVersionAbove(_REMOTE, 1, 11, 2):
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9595 # https://groups.google.com/g/orthanc-users/c/CSVWfRasSR0/m/y1XDRXVnAgAJ
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9596 a = UploadInstance(_REMOTE, '2022-11-14-RLEPlanarConfiguration.dcm') ['ID']
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9597 uri = '/instances/%s/preview' % a
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9598 im = GetImage(_REMOTE, uri)
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9599 self.assertEqual('RGB', im.mode)
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9600 self.assertEqual(1475, im.size[0])
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9601 self.assertEqual(1475, im.size[1])
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9602 self.assertEqual('c684b0050dc2523041240bf2d26dc85e', ComputeMD5(DoGet(_REMOTE, uri)))
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9603
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9604 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1):
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9605 a = UploadInstance(_REMOTE, '2023-04-21-RLEPlanarConfigurationYBR_FULL.dcm') ['ID']
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9606 uri = '/instances/%s/preview' % a
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9607 im = GetImage(_REMOTE, uri)
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9608 self.assertEqual('RGB', im.mode)
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9609 self.assertEqual(1260, im.size[0])
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9610 self.assertEqual(910, im.size[1])
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9611 self.assertEqual('07a3ea7ea08d54362f744cc5945e8743', ComputeMD5(DoGet(_REMOTE, uri)))
8a920ab91cf4 YBR_FULL RLE
Alain Mazy <am@osimis.io>
parents: 530
diff changeset
9612
512
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
9613
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
9614 def test_rest_api_write_to_file_system(self):
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
9615 if IsOrthancVersionAbove(_REMOTE, 1, 12, 0):
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
9616 a = UploadInstance(_REMOTE, '2022-11-14-RLEPlanarConfiguration.dcm') ['ID']
e2ce0edb9002 /system
Alain Mazy <am@osimis.io>
parents: 511
diff changeset
9617 self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/instances/%s/export' % a, '/tmp/test.dcm'))
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9618
515
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9619 def test_overwrite_generates_stable_study(self):
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9620
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9621 # 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
9622 # 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
9623 # 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
9624 # 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
9625 # 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
9626
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9627
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9628 def GetAllStableStudyChangesIds(studyId, timeout):
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9629 # 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
9630 fromSeq = DoGet(_REMOTE, '/changes')["Last"]
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9631
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9632 endTime = time.time() + timeout
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9633 newStableStudyFound = False
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9634 while not newStableStudyFound and time.time() < endTime:
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9635 time.sleep(0.1)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9636 changes = DoGet(_REMOTE, '/changes')
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9637 stableStudyChangesIds = []
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9638
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9639 for change in changes["Changes"]:
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9640 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
9641 stableStudyChangesIds.append(change["Seq"])
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9642 if change["Seq"] > fromSeq:
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9643 newStableStudyFound = True
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9644
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9645 return stableStudyChangesIds
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9646
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9647 if True:
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9648 DropOrthanc(_REMOTE)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9649 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
9650 # 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
9651 changes1 = GetAllStableStudyChangesIds(upload1["ParentStudy"], 4)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9652 self.assertEqual(1, len(changes1))
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9653
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9654 # 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
9655 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
9656 changes1b = GetAllStableStudyChangesIds(upload1b["ParentStudy"], 4)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9657 self.assertEqual(1, len(changes1b))
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9658 self.assertNotEqual(changes1[0], changes1b[0])
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9659
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9660 if True:
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9661 DropOrthanc(_REMOTE)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9662 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
9663 # 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
9664 changes1 = GetAllStableStudyChangesIds(upload1["ParentStudy"], 4)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9665 self.assertEqual(1, len(changes1))
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9666
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9667 # 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
9668 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
9669 json.dumps({
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9670 "Replace" : {
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9671 "InstitutionName" : "hello",
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9672 "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
9673 },
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9674 "Force": True
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9675 }),
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9676 'application/json')
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9677 upload1b = DoPost(_REMOTE, '/instances', modified, 'application/dicom')
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9678 changes1b = GetAllStableStudyChangesIds(upload1b["ParentStudy"], 4)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9679 self.assertEqual(upload1["ParentStudy"], upload1b["ParentStudy"])
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9680 self.assertEqual(1, len(changes1b))
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9681 self.assertNotEqual(changes1[0], changes1b[0])
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9682
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9683
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9684 if True:
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9685 DropOrthanc(_REMOTE)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9686 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
9687 # 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
9688 changes1 = GetAllStableStudyChangesIds(upload1["ParentStudy"], 4)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9689 self.assertEqual(1, len(changes1))
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9690
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9691 # 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
9692 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
9693 changes2 = GetAllStableStudyChangesIds(upload2["ParentStudy"], 4)
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9694 self.assertEqual(upload1["ParentStudy"], upload2["ParentStudy"])
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9695 self.assertEqual(2, len(changes2))
5dca7ef42156 added a non-regression test wrt StableStudy
Alain Mazy <am@osimis.io>
parents: 512
diff changeset
9696 self.assertEqual(changes1[0], changes2[0])
516
Alain Mazy <am@osimis.io>
parents: 515 514
diff changeset
9697
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9698 def test_labels(self):
523
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9699 def CheckAllLabels(expected):
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9700 actual = DoGet(_REMOTE, '/tools/labels')
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9701 self.assertEqual(len(actual), len(expected))
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9702 for i in expected:
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9703 self.assertTrue(i in actual)
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9704 for i in actual:
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9705 self.assertTrue(i in expected)
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9706
517
692f2956ddab test HasLabels in /system
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 516
diff changeset
9707 if (IsOrthancVersionAbove(_REMOTE, 1, 12, 0) and
692f2956ddab test HasLabels in /system
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 516
diff changeset
9708 DoGet(_REMOTE, '/system') ['HasLabels']):
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9709 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9710 patient = DoGet(_REMOTE, '/instances/%s/patient' % u) ['ID']
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9711 study = DoGet(_REMOTE, '/instances/%s/study' % u) ['ID']
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9712 series = DoGet(_REMOTE, '/instances/%s/series' % u) ['ID']
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9713
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9714 for base in [ '/instances/%s' % u,
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9715 '/series/%s' % series,
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9716 '/studies/%s' % study,
519
b1991073e4d1 test alphanumeric labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 518
diff changeset
9717 '/patients/%s' % patient ]:
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9718
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9719 # no tags by default
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9720 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels']))
523
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9721 CheckAllLabels([])
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9722
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9723 # 404 if requesting a tag that does apply for a resource
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9724 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base))
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9725
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9726 # delete a non existing tag does not generate an error
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9727 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/hello' % base))
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9728 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels']))
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9729
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9730 # Not an alphanumeric label -> 400
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9731 self.assertRaises(Exception, lambda: DoPut(_REMOTE, '%s/labels/@' % base))
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9732
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9733 # add a tag
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9734 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base))
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9735 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9736 self.assertEqual('hello', DoGet(_REMOTE, base) ['Labels'][0])
523
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9737 CheckAllLabels([ 'hello' ])
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9738
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9739 # double tagging does not generate any error
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9740 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base))
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9741 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base))
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9742 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9743 self.assertEqual('hello', DoGet(_REMOTE, base) ['Labels'][0])
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9744
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9745 # add a second tag
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9746 self.assertEqual('', DoPut(_REMOTE, '%s/labels/world' % base))
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9747 self.assertEqual('', DoGet(_REMOTE, '%s/labels/world' % base))
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9748 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base))
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9749 self.assertEqual(2, len(DoGet(_REMOTE, base) ['Labels']))
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9750 self.assertIn(DoGet(_REMOTE, base) ['Labels'][0], ['hello', 'world'])
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9751 self.assertIn(DoGet(_REMOTE, base) ['Labels'][1], ['hello', 'world'])
523
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9752 CheckAllLabels([ 'hello', 'world' ])
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9753
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9754 # delete the first tag
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9755 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/hello' % base))
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9756 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9757 self.assertEqual('world', DoGet(_REMOTE, base) ['Labels'][0])
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9758 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base))
523
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9759 CheckAllLabels([ 'world' ])
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9760
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9761 # delete the second tag
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9762 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/world' % base))
513
5824f0545d5b added test_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 512
diff changeset
9763 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels']))
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9764 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/world' % base))
523
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9765 CheckAllLabels([ ])
521
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9766
8114f67e0f7f labels: doc
Alain Mazy <am@osimis.io>
parents: 519
diff changeset
9767 # test all valid chars
523
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9768 VALID = r'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9769 self.assertEqual('', DoPut(_REMOTE, '%s/labels/%s' % (base, VALID)))
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9770 CheckAllLabels([ VALID ])
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9771 DoDelete(_REMOTE, '%s/labels/%s' % (base, VALID))
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9772 CheckAllLabels([ ])
767840cb4d3f test /tools/labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 522
diff changeset
9773
517
692f2956ddab test HasLabels in /system
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 516
diff changeset
9774 else:
692f2956ddab test HasLabels in /system
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 516
diff changeset
9775 print("Your database backend doesn't support labels")
518
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9776
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9777 def test_find_labels(self):
548
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9778 def Execute(labels, constraint, query = { }, level='Instance'):
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9779 return DoPost(_REMOTE, '/tools/find', { 'Level' : level,
525
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9780 'Query' : query,
522
fce9e90acdc2 replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 521
diff changeset
9781 'Labels' : labels,
fce9e90acdc2 replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 521
diff changeset
9782 'LabelsConstraint' : constraint, })
518
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9783
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9784 if (IsOrthancVersionAbove(_REMOTE, 1, 12, 0) and
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9785 DoGet(_REMOTE, '/system') ['HasLabels']):
548
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9786 u = UploadInstance(_REMOTE, 'DummyCT.dcm')
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9787 studyId = u["ParentStudy"]
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9788 seriesId = u["ParentSeries"]
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9789 patientId = u["ParentPatient"]
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9790 u = u["ID"]
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9791 self.assertEqual(1, len(Execute([ 'a' ], 'None')))
518
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9792
522
fce9e90acdc2 replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 521
diff changeset
9793 # The instance has no label
fce9e90acdc2 replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 521
diff changeset
9794 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
9795 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
9796 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
9797 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
9798 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
9799 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
9800 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
9801 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
9802 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
9803 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
9804 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
9805 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'None')))
518
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9806
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9807 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
9808 # The instance has label "a"
fce9e90acdc2 replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 521
diff changeset
9809 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
9810 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
9811 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
9812 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
9813 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
9814 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
9815 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
9816 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
9817 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
9818 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
9819 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
9820 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'None')))
518
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9821
525
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9822 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'PatientID' : 'nope' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9823 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'PatientID' : '' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9824 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'StudyInstanceUID' : 'nope' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9825 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'StudyInstanceUID' : '' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9826 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : 'nope' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9827 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : '' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9828 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : 'nope' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9829 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : '' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9830
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9831 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'PatientID' : 'ozp00SjY2xG' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9832
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9833 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9834 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9835 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9836 self.assertEqual(1, len(Execute([ 'a' ], 'All', {
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9837 'PatientID' : 'ozp00SjY2xG',
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9838 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390',
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9839 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394',
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9840 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109',
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9841 })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9842
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9843 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'PatientID' : 'nope' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9844 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'PatientID' : '' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9845 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'StudyInstanceUID' : 'nope' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9846 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'StudyInstanceUID' : '' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9847 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SeriesInstanceUID' : 'nope' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9848 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SeriesInstanceUID' : '' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9849 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SOPInstanceUID' : 'nope' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9850 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SOPInstanceUID' : '' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9851
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9852 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'PatientID' : 'ozp00SjY2xG' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9853 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9854 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9855 self.assertEqual(0, len(Execute([ 'b' ], 'All', { 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9856 self.assertEqual(0, len(Execute([ 'b' ], 'All', {
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9857 'PatientID' : 'ozp00SjY2xG',
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9858 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390',
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9859 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394',
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9860 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109',
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9861 })))
b60a0cc28c34 added test
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 523
diff changeset
9862
518
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9863 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
9864 # 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
9865 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
9866 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
9867 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
9868 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
9869 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
9870 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
9871 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
9872 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
9873 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
9874 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
9875 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
9876 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'None')))
524
0699890b9961 more tests for label
Alain Mazy <am@osimis.io>
parents: 523
diff changeset
9877 self.assertEqual(0, len(Execute([ 'b', 'c' ], 'All')))
0699890b9961 more tests for label
Alain Mazy <am@osimis.io>
parents: 523
diff changeset
9878 self.assertEqual(1, len(Execute([ 'b', 'c' ], 'Any')))
0699890b9961 more tests for label
Alain Mazy <am@osimis.io>
parents: 523
diff changeset
9879 self.assertEqual(0, len(Execute([ 'b', 'c' ], 'None')))
0699890b9961 more tests for label
Alain Mazy <am@osimis.io>
parents: 523
diff changeset
9880 self.assertEqual(0, len(Execute([ 'c', 'd' ], 'All')))
0699890b9961 more tests for label
Alain Mazy <am@osimis.io>
parents: 523
diff changeset
9881 self.assertEqual(0, len(Execute([ 'c', 'd' ], 'Any')))
0699890b9961 more tests for label
Alain Mazy <am@osimis.io>
parents: 523
diff changeset
9882 self.assertEqual(1, len(Execute([ 'c', 'c' ], 'None')))
518
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9883
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9884 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
9885 # The instance has label "b"
fce9e90acdc2 replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 521
diff changeset
9886 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
9887 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
9888 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
9889 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
9890 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
9891 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
9892 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
9893 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
9894 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
9895 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
9896 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
9897 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
9898
fce9e90acdc2 replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 521
diff changeset
9899 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
9900 # 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
9901 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
9902 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
9903 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
9904 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
9905 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
9906 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
9907 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
9908 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
9909 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
9910 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
9911 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
9912 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'None')))
548
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9913
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9914
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9915 # tests at series levels (make sure to test only with series levels and with multiple levels)
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9916 DoPut(_REMOTE, '/series/%s/labels/b' % seriesId)
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9917 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9918 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9919 }, 'Series')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9920 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9921 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9922 }, 'Series')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9923 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9924 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9925 }, 'Series')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9926 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9927 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9928 }, 'Series')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9929 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9930 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9931 }, 'Series')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9932 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9933 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9934 }, 'Series')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9935 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9936 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9937 }, 'Series')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9938 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9939 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9940 }, 'Series')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9941
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9942 # tests at study levels (make sure to test only with study levels and with multiple levels)
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9943 DoPut(_REMOTE, '/studies/%s/labels/b' % studyId)
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9944 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9945 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9946 }, 'Study')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9947 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9948 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9949 }, 'Study')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9950 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9951 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9952 }, 'Study')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9953 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9954 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9955 }, 'Study')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9956 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9957 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9958 }, 'Study')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9959 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9960 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9961 }, 'Study')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9962 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9963 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9964 }, 'Study')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9965 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9966 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9967 }, 'Study')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9968
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9969 # tests at patient levels
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9970 DoPut(_REMOTE, '/patients/%s/labels/b' % patientId)
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9971 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9972 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9973 }, 'Patient')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9974 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9975 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9976 }, 'Patient')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9977 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9978 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9979 }, 'Patient')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9980 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9981 'PatientID' : 'ozp00SjY2xG',
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9982 }, 'Patient')))
3933237d1958 more tools/find tests
Alain Mazy <am@osimis.io>
parents: 547
diff changeset
9983
518
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9984 else:
43a323de0b02 added test_find_labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 517
diff changeset
9985 print("Your database backend doesn't support labels")
527
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9986
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9987
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9988 def test_numeric_metadata(self):
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9989 if IsOrthancVersionAbove(_REMOTE, 1, 12, 0):
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9990 instance = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9991 study = DoGet(_REMOTE, '/instances/%s/study' % instance)['ID']
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9992
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9993 m = DoGet(_REMOTE, '/studies/%s/metadata' % study)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9994 self.assertEqual(2, len(m))
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9995 self.assertTrue('LastUpdate' in m)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9996 self.assertTrue('MainDicomTagsSignature' in m)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9997 lastUpdate = DoGet(_REMOTE, '/studies/%s/metadata/%s' % (study, 'LastUpdate'))
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9998 signature = DoGet(_REMOTE, '/studies/%s/metadata/%s' % (study, 'MainDicomTagsSignature'))
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
9999
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10000 m = DoGet(_REMOTE, '/studies/%s/metadata?numeric' % study)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10001 self.assertEqual(2, len(m))
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10002 self.assertTrue(7 in m) # MetadataType_LastUpdate
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10003 self.assertTrue(15 in m) # MetadataType_MainDicomTagsSignature
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10004 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
10005 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
10006
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10007 m = DoGet(_REMOTE, '/studies/%s/metadata?expand' % study)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10008 self.assertEqual(2, len(m))
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10009 self.assertTrue('LastUpdate' in m)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10010 self.assertTrue('MainDicomTagsSignature' in m)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10011 self.assertEqual(lastUpdate, m['LastUpdate'])
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10012 self.assertEqual(signature, m['MainDicomTagsSignature'])
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10013
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10014 m = DoGet(_REMOTE, '/studies/%s/metadata?expand&numeric' % study)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10015 self.assertEqual(2, len(m))
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10016 self.assertTrue('7' in m)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10017 self.assertTrue('15' in m)
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10018 self.assertEqual(lastUpdate, m['7'])
86456045ac80 added test_numeric_metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 526
diff changeset
10019 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
10020
584
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10021 def test_expand(self):
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10022 # 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
10023 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10024 r = UploadInstance(_REMOTE, 'DummyCT.dcm')
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10025 instanceId = r['ID']
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10026 seriesId = r['ParentSeries']
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10027 studyId = r['ParentStudy']
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10028
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10029 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
10030 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
10031
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10032 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
10033 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
10034
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10035 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
10036 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
10037
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10038 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
10039 self.assertEqual(1, len(r))
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10040 self.assertIn('MainDicomTags', r[0])
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10041
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10042 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
10043 self.assertEqual(1, len(r))
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10044 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
10045
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10046 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
10047 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
10048
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10049 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
10050 self.assertEqual(1, len(r))
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10051 self.assertIn('MainDicomTags', r[0])
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10052
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10053 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
10054 self.assertEqual(1, len(r))
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10055 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
10056
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10057 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
10058 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
10059
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10060
c4f4b0bc908b new tests for new expand GET arguments
Alain Mazy <am@osimis.io>
parents: 583
diff changeset
10061
535
31f70bfd86a7 Fix orphan files remaining in storage when working with MaximumStorageSize
Alain Mazy <am@osimis.io>
parents: 533
diff changeset
10062 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
10063 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
10064 (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
10065 self.assertEqual('404', headers['status'])
538
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10066
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10067 def test_delete_updates_parents_last_update_metadata(self):
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10068 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1):
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10069 i = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10070 j = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0002.dcm')
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10071
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10072 #instanceLastUpdate1 = DoGet(_REMOTE, '/instances/%s/metadata/LastUpdate' % i['ID'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10073 seriesLastUpdate1 = DoGet(_REMOTE, '/series/%s/metadata/LastUpdate' % i['ParentSeries'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10074 studyLastUpdate1 = DoGet(_REMOTE, '/studies/%s/metadata/LastUpdate' % i['ParentStudy'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10075 patientLastUpdate1 = DoGet(_REMOTE, '/patients/%s/metadata/LastUpdate' % i['ParentPatient'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10076
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10077 time.sleep(1.01)
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10078 DoDelete(_REMOTE, '/instances/%s' % j['ID'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10079
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10080 #instanceLastUpdate2 = DoGet(_REMOTE, '/instances/%s/metadata/LastUpdate' % i['ID'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10081 seriesLastUpdate2 = DoGet(_REMOTE, '/series/%s/metadata/LastUpdate' % i['ParentSeries'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10082 studyLastUpdate2 = DoGet(_REMOTE, '/studies/%s/metadata/LastUpdate' % i['ParentStudy'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10083 patientLastUpdate2 = DoGet(_REMOTE, '/patients/%s/metadata/LastUpdate' % i['ParentPatient'])
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10084
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10085 #self.assertEqual(instanceLastUpdate1, instanceLastUpdate2)
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10086 self.assertNotEqual(seriesLastUpdate1, seriesLastUpdate2)
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10087 self.assertNotEqual(studyLastUpdate1, studyLastUpdate2)
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10088 self.assertNotEqual(patientLastUpdate1, patientLastUpdate2)
7a83a8f087c7 LastUpdate when deleting resources
Alain Mazy <am@osimis.io>
parents: 535
diff changeset
10089
554
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10090 def test_pixel_data_vr(self):
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10091 def Check(path, hasPixelData, hasMetadata, expectedVR):
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10092 i = UploadInstance(_REMOTE, path) ['ID']
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10093 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % i)
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10094 if hasMetadata:
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10095 self.assertTrue('PixelDataVR' in m)
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10096 self.assertEqual(expectedVR, m['PixelDataVR'])
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10097 else:
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10098 self.assertFalse('PixelDataVR' in m)
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10099
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10100 if hasPixelData:
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10101 self.assertTrue('PixelDataOffset' in m)
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10102 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
10103 'Accept': 'application/dicom+json'
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10104 })
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10105 self.assertEqual(expectedVR, j['7FE00010']['vr'])
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10106
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10107 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1):
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10108 # File without pixel data
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10109 Check('MarekLatin2.dcm', False, False, None)
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10110
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10111 # 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
10112 # according to the DICOM standard => medata is present
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10113 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
10114 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
10115 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
10116
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10117 # Those files are formatted as expected
ede184638961 added test_pixel_data_vr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 548
diff changeset
10118 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
10119 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
10120 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
10121 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
10122 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
10123 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
10124 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
10125
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10126 def test_encapsulate_stl(self):
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10127 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1):
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10128 stl = b'Hello, world'
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10129
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10130 i = DoPost(_REMOTE, '/tools/create-dicom', json.dumps({
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10131 '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
10132 'Force' : True,
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10133 'Tags' : {
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10134 'PatientName' : 'Jodogne'
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10135 }
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10136 })) ['ID']
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10137
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10138 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10139 self.assertEqual('Jodogne', tags['PatientName'])
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10140 self.assertEqual('M3D', tags['Modality'])
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10141 self.assertEqual('model/stl', tags['MIMETypeOfEncapsulatedDocument'])
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10142 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
10143
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10144 i = DoPost(_REMOTE, '/tools/create-dicom', json.dumps({
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10145 '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
10146 'Tags' : {}
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10147 })) ['ID']
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10148
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10149 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10150 self.assertFalse('PatientName' in tags)
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10151 self.assertEqual('M3D', tags['Modality'])
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10152 self.assertEqual('model/mtl', tags['MIMETypeOfEncapsulatedDocument'])
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10153 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
10154
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10155 i = DoPost(_REMOTE, '/tools/create-dicom', json.dumps({
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10156 '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
10157 'Tags' : {}
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10158 })) ['ID']
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10159
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10160 tags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % i)
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10161 self.assertFalse('PatientName' in tags)
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10162 self.assertEqual('M3D', tags['Modality'])
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10163 self.assertEqual('model/obj', tags['MIMETypeOfEncapsulatedDocument'])
855c3720902a added test_encapsulate_stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 557
diff changeset
10164 self.assertEqual('1.2.840.10008.5.1.4.1.1.104.4', tags['SOPClassUID'])
591
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10165
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10166
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10167 def test_error_codes_content_type(self):
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10168
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10169 # from 1.12.2, check that a ContentType header is included in errors with an error description (ex: 404)
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10170 (headers, body) = DoGetRaw(_REMOTE, '/rnm94%3Cscript%3Ealert(1)%3C/script%3Ejdtkc/explorer.html')
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10171 self.assertEqual('404', headers['status'])
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10172
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10173 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
595
b6c1f0c9ca15 fix test_error_codes_content_type
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 591
diff changeset
10174 self.assertEqual('text/plain', headers['content-type'])
591
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10175
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10176 (headers, body) = DoPutRaw(_REMOTE, '/system', 'hello')
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10177 self.assertEqual('405', headers['status'])
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10178 # when there is no body, there is no content-type
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10179 self.assertNotIn('content-type', headers)
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10180
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10181 # responses with bodies contain x-content-type-options
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10182 if IsOrthancVersionAbove(_REMOTE, 1, 12, 2):
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10183 (headers, body) = DoGetRaw(_REMOTE, '/system')
3cb7c6162c77 new test for XSS
Alain Mazy <am@osimis.io>
parents: 589
diff changeset
10184 self.assertIn('nosniff', headers['x-content-type-options'])
603
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10185
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10186 def test_modify_with_labels(self):
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10187
606
0700fe8e2b78 skip test
Alain Mazy <am@osimis.io>
parents: 605
diff changeset
10188 if DoGet(_REMOTE, '/system')['ApiVersion'] < 23 or not DoGet(_REMOTE, '/system')['HasLabels']:
0700fe8e2b78 skip test
Alain Mazy <am@osimis.io>
parents: 605
diff changeset
10189 return
0700fe8e2b78 skip test
Alain Mazy <am@osimis.io>
parents: 605
diff changeset
10190
603
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10191 def UploadAndLabel(testId):
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10192 DropOrthanc(_REMOTE)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10193
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10194 u = UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm')
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10195 studyId = u["ParentStudy"]
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10196 seriesId = u["ParentSeries"]
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10197 patientId = u["ParentPatient"]
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10198 instanceId = u["ID"]
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10199
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10200 if testId == 2: # multi instance study
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10201 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0002.dcm')
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10202 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10203 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm')
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10204
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10205 # add a label to the study before modification
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10206 DoPut(_REMOTE, '/patients/%s/labels/label-patient' % patientId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10207 DoPut(_REMOTE, '/studies/%s/labels/label-study' % studyId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10208 DoPut(_REMOTE, '/series/%s/labels/label-series' % seriesId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10209 DoPut(_REMOTE, '/instances/%s/labels/label-instance' % instanceId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10210
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10211 originalPatient = DoGet(_REMOTE, '/patients/%s' % patientId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10212 self.assertEqual(1, len(originalPatient["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10213 self.assertIn('label-patient', originalPatient["Labels"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10214
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10215 originalStudy = DoGet(_REMOTE, '/studies/%s' % studyId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10216 self.assertEqual(1, len(originalStudy["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10217 self.assertIn('label-study', originalStudy["Labels"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10218
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10219 originalSeries = DoGet(_REMOTE, '/series/%s' % seriesId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10220 self.assertEqual(1, len(originalSeries["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10221 self.assertIn('label-series', originalSeries["Labels"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10222
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10223 originalInstance = DoGet(_REMOTE, '/instances/%s' % instanceId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10224 self.assertEqual(1, len(originalInstance["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10225 self.assertIn('label-instance', originalInstance["Labels"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10226
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10227 return originalPatient, originalStudy, originalSeries, originalInstance
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10228
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10229
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10230 for testId in range(1, 2): #test with a single instance study and a multi instance study
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10231
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10232 originalPatient, originalStudy, originalSeries, originalInstance = UploadAndLabel(testId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10233
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10234 # modify a study in place with no label field in the payload (default behavior before 1.12.3)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10235 DoPost(_REMOTE, '/studies/%s/modify' % originalStudy['ID'], {
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10236 'Keep' : ['StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID'],
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10237 'Replace' : {
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10238 'PatientName': 'modified'
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10239 },
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10240 'Force': True
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10241 })
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10242
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10243 # with no options, all resources lose their labels during the modification
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10244 modifiedStudy = DoGet(_REMOTE, '/studies/%s' % originalStudy['ID'])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10245 self.assertEqual(0, len(modifiedStudy["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10246 self.assertEqual('modified', modifiedStudy["PatientMainDicomTags"]["PatientName"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10247
605
Alain Mazy <am@osimis.io>
parents: 604
diff changeset
10248 if IsOrthancVersionAbove(_REMOTE, 1, 12, 3) and DoGet(_REMOTE, '/system')['ApiVersion'] >= 23 and DoGet(_REMOTE, '/system')['HasLabels']:
603
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10249 for testId in range(1, 2): #test with a single instance study and a multi instance study
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10250
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10251 originalPatient, originalStudy, originalSeries, originalInstance = UploadAndLabel(testId)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10252
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10253 # modify a study in place with no label field in the payload (default behavior before 1.12.3)
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10254 DoPost(_REMOTE, '/studies/%s/modify' % originalStudy['ID'], {
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10255 'Keep' : ['StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID'],
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10256 'Replace' : {
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10257 'PatientName': 'modified2'
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10258 },
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10259 'Force': True,
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10260 'KeepLabels': True
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10261 })
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10262
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10263 # now, each resource level shall have kept its labels
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10264
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10265 modifiedInstance = DoGet(_REMOTE, '/instances/%s' % originalInstance['ID'])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10266 self.assertEqual(1, len(modifiedInstance["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10267 self.assertIn('label-instance', modifiedInstance["Labels"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10268
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10269 modifiedSeries = DoGet(_REMOTE, '/series/%s' % originalSeries['ID'])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10270 self.assertEqual(1, len(modifiedSeries["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10271 self.assertIn('label-series', modifiedSeries["Labels"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10272
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10273 modifiedStudy = DoGet(_REMOTE, '/studies/%s' % originalStudy['ID'])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10274 self.assertEqual(1, len(modifiedStudy["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10275 self.assertIn('label-study', modifiedStudy["Labels"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10276 self.assertEqual('modified2', modifiedStudy["PatientMainDicomTags"]["PatientName"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10277
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10278 modifiedPatient = DoGet(_REMOTE, '/patients/%s' % originalPatient['ID'])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10279 self.assertEqual(1, len(modifiedPatient["Labels"]))
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10280 self.assertIn('label-patient', modifiedPatient["Labels"])
75244cf58a6d new test for KeepLabels
Alain Mazy <am@osimis.io>
parents: 595
diff changeset
10281
626
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10282 def test_findscu_group_length(self):
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10283 UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0001.dcm')
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10284 UploadInstance(_REMOTE, 'Comunix/Pet/IM-0001-0001.dcm')
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10285 UploadInstance(_REMOTE, 'Comunix/Pet/IM-0001-0002.dcm')
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10286
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10287 i = CallFindScu([ '-k', '0008,0052=PATIENT', '-k', '0008,0000=22' ]) # GE like C-Find that includes group-length
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10288 # print(i)
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10289 s = re.findall('\(0008,0000\).*?\[(.*?)\]', i)
9c295b8dac00 C-find group length
Alain Mazy <am@osimis.io>
parents: 606
diff changeset
10290 self.assertEqual(0, len(s))
646
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10291
652
dfd42a6c13fa added test_tags_after_pixel_data
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 649
diff changeset
10292
dfd42a6c13fa added test_tags_after_pixel_data
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 649
diff changeset
10293 def test_tags_after_pixel_data(self):
653
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10294 if IsOrthancVersionAbove(_REMOTE, 1, 12, 4):
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10295 # https://discourse.orthanc-server.org/t/private-tags-with-group-7fe0-are-not-provided-via-rest-api/4744
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10296 u = UploadInstance(_REMOTE, '2024-05-30-GuillemVela.dcm') ['ID']
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10297
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10298 a = DoGet(_REMOTE, '/instances/%s/tags' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10299 self.assertFalse('8e05,1000' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10300
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10301 a = DoGet(_REMOTE, '/instances/%s/tags?whole' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10302 self.assertTrue('8e05,1000' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10303 self.assertEqual('XEOS_Attributes', a['8e05,0010']['Value'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10304 self.assertEqual('acquisition', a['8e05,1000']['Value'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10305 self.assertEqual('specimen', a['8e05,1001']['Value'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10306
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10307 a = DoGet(_REMOTE, '/instances/%s/tags?full' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10308 self.assertFalse('8e05,1000' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10309
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10310 a = DoGet(_REMOTE, '/instances/%s/tags?full&whole' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10311 self.assertTrue('8e05,1000' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10312 self.assertEqual('XEOS_Attributes', a['8e05,0010']['Value'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10313 self.assertEqual('acquisition', a['8e05,1000']['Value'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10314 self.assertEqual('specimen', a['8e05,1001']['Value'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10315
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10316 a = DoGet(_REMOTE, '/instances/%s/tags?short' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10317 self.assertFalse('8e05,1000' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10318
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10319 a = DoGet(_REMOTE, '/instances/%s/tags?short&whole' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10320 self.assertTrue('8e05,1000' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10321 self.assertEqual('XEOS_Attributes', a['8e05,0010'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10322 self.assertEqual('acquisition', a['8e05,1000'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10323 self.assertEqual('specimen', a['8e05,1001'])
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10324
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10325 a = DoGet(_REMOTE, '/instances/%s/tags?simplify' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10326 self.assertFalse('Unknown Tag & Data' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10327
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10328 a = DoGet(_REMOTE, '/instances/%s/tags?simplify&whole' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10329 self.assertTrue('Unknown Tag & Data' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10330
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10331 a = DoGet(_REMOTE, '/instances/%s/simplified-tags' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10332 self.assertFalse('Unknown Tag & Data' in a)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10333
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10334 a = DoGet(_REMOTE, '/instances/%s/simplified-tags?whole' % u)
fdd90df1e8ff fix test version
Alain Mazy <am@orthanc.team>
parents: 652
diff changeset
10335 self.assertTrue('Unknown Tag & Data' in a)
652
dfd42a6c13fa added test_tags_after_pixel_data
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 649
diff changeset
10336
dfd42a6c13fa added test_tags_after_pixel_data
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 649
diff changeset
10337
646
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10338 def test_requested_tags(self):
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10339 u = UploadInstance(_REMOTE, 'DummyCT.dcm')
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10340
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10341 def CheckPatientContent(patient):
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10342 self.assertEqual(u['ParentPatient'], patient['ID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10343 self.assertEqual('Patient', patient['Type'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10344 self.assertFalse(patient['IsStable'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10345 self.assertEqual(0, len(patient['Labels']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10346 self.assertTrue('LastUpdate' in patient)
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10347 self.assertEqual(2, len(patient['MainDicomTags']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10348 self.assertEqual('ozp00SjY2xG', patient['MainDicomTags']['PatientID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10349 self.assertEqual('KNIX', patient['MainDicomTags']['PatientName'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10350 self.assertEqual(1, len(patient['Studies']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10351 self.assertEqual(u['ParentStudy'], patient['Studies'][0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10352
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10353 def CheckStudyContent(study):
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10354 self.assertEqual(u['ParentStudy'], study['ID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10355 self.assertEqual(u['ParentPatient'], study['ParentPatient'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10356 self.assertEqual('Study', study['Type'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10357 self.assertFalse(study['IsStable'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10358 self.assertEqual(0, len(study['Labels']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10359 self.assertTrue('LastUpdate' in study)
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10360 self.assertEqual(7, len(study['MainDicomTags']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10361 self.assertEqual('0ECJ52puWpVIjTuhnBA0um', study['MainDicomTags']['InstitutionName'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10362 self.assertEqual('1', study['MainDicomTags']['ReferringPhysicianName'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10363 self.assertEqual('20070101', study['MainDicomTags']['StudyDate'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10364 self.assertEqual('Knee (R)', study['MainDicomTags']['StudyDescription'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10365 self.assertEqual('1', study['MainDicomTags']['StudyID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10366 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', study['MainDicomTags']['StudyInstanceUID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10367 self.assertEqual('120000.000000', study['MainDicomTags']['StudyTime'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10368 self.assertEqual(2, len(study['PatientMainDicomTags']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10369 self.assertEqual('ozp00SjY2xG', study['PatientMainDicomTags']['PatientID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10370 self.assertEqual('KNIX', study['PatientMainDicomTags']['PatientName'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10371 self.assertEqual(1, len(study['Series']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10372 self.assertEqual(u['ParentSeries'], study['Series'][0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10373
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10374 def CheckSeriesContent(series):
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10375 self.assertEqual(None, series['ExpectedNumberOfInstances'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10376 self.assertEqual('Unknown', series['Status'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10377 self.assertEqual(u['ParentSeries'], series['ID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10378 self.assertEqual(u['ParentStudy'], series['ParentStudy'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10379 self.assertEqual('Series', series['Type'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10380 self.assertFalse(series['IsStable'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10381 self.assertEqual(0, len(series['Labels']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10382 self.assertTrue('LastUpdate' in series)
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10383 self.assertEqual(13, len(series['MainDicomTags']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10384 self.assertEqual('0', series['MainDicomTags']['CardiacNumberOfImages'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10385 self.assertEqual('0.999841\\0.000366209\\0.0178227\\-0.000427244\\0.999995\\0.00326545', series['MainDicomTags']['ImageOrientationPatient'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10386 self.assertEqual('24', series['MainDicomTags']['ImagesInAcquisition'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10387 self.assertEqual('GE MEDICAL SYSTEMS', series['MainDicomTags']['Manufacturer'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10388 self.assertEqual('MR', series['MainDicomTags']['Modality'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10389 self.assertEqual('ca', series['MainDicomTags']['OperatorsName'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10390 self.assertEqual('324-58-2995/6', series['MainDicomTags']['ProtocolName'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10391 self.assertEqual('20070101', series['MainDicomTags']['SeriesDate'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10392 self.assertEqual('AX. FSE PD', series['MainDicomTags']['SeriesDescription'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10393 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', series['MainDicomTags']['SeriesInstanceUID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10394 self.assertEqual('5', series['MainDicomTags']['SeriesNumber'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10395 self.assertEqual('120000.000000', series['MainDicomTags']['SeriesTime'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10396 self.assertEqual('TWINOW', series['MainDicomTags']['StationName'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10397 self.assertEqual(1, len(series['Instances']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10398 self.assertEqual(u['ID'], series['Instances'][0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10399
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10400 def CheckInstanceContent(instance):
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10401 self.assertEqual(2472, instance['FileSize'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10402 self.assertTrue('FileUuid' in instance)
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10403 self.assertEqual(u['ID'], instance['ID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10404 self.assertEqual(u['ParentSeries'], instance['ParentSeries'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10405 self.assertEqual('Instance', instance['Type'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10406 self.assertEqual(1, instance['IndexInSeries'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10407 self.assertEqual(0, len(instance['Labels']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10408 self.assertEqual(7, len(instance['MainDicomTags']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10409 self.assertEqual('1', instance['MainDicomTags']['AcquisitionNumber'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10410 self.assertEqual('0.999841\\0.000366209\\0.0178227\\-0.000427244\\0.999995\\0.00326545', instance['MainDicomTags']['ImageOrientationPatient'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10411 self.assertEqual('-149.033\\-118.499\\-61.0464', instance['MainDicomTags']['ImagePositionPatient'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10412 self.assertEqual('20070101', instance['MainDicomTags']['InstanceCreationDate'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10413 self.assertEqual('120000.000000', instance['MainDicomTags']['InstanceCreationTime'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10414 self.assertEqual('1', instance['MainDicomTags']['InstanceNumber'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10415 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', instance['MainDicomTags']['SOPInstanceUID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10416
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10417 def CheckRequestedTags(resource):
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10418 self.assertEqual(6, len(resource['RequestedTags']))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10419 self.assertEqual('ozp00SjY2xG', resource['RequestedTags']['PatientID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10420 self.assertEqual('Knee (R)', resource['RequestedTags']['StudyDescription'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10421 self.assertEqual('AX. FSE PD', resource['RequestedTags']['SeriesDescription'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10422 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', resource['RequestedTags']['SOPClassUID'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10423 self.assertEqual('2800', resource['RequestedTags']['RepetitionTime'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10424 self.assertEqual(3, len(resource['RequestedTags']['DerivationCodeSequence'][0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10425 self.assertEqual('121327', resource['RequestedTags']['DerivationCodeSequence'][0]['CodeValue'])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10426
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10427 requestedTags = 'PatientID;StudyDescription;SeriesDescription;SOPClassUID;RepetitionTime;DerivationCodeSequence'
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10428
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10429 a = DoGet(_REMOTE, '/patients?expand')
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10430 self.assertEqual(1, len(a))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10431 self.assertEqual(7, len(a[0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10432 CheckPatientContent(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10433 self.assertFalse('RequestedTags' in a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10434
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10435 a = DoGet(_REMOTE, '/patients?expand&requestedTags=%s' % requestedTags)
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10436 self.assertEqual(1, len(a))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10437 self.assertEqual(8, len(a[0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10438 CheckPatientContent(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10439 CheckRequestedTags(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10440
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10441 a = DoGet(_REMOTE, '/studies?expand')
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10442 self.assertEqual(1, len(a))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10443 self.assertEqual(9, len(a[0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10444 CheckStudyContent(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10445 self.assertFalse('RequestedTags' in a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10446
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10447 a = DoGet(_REMOTE, '/studies?expand&requestedTags=%s' % requestedTags)
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10448 self.assertEqual(1, len(a))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10449 self.assertEqual(10, len(a[0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10450 CheckStudyContent(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10451 CheckRequestedTags(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10452
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10453 a = DoGet(_REMOTE, '/series?expand')
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10454 self.assertEqual(1, len(a))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10455 self.assertEqual(10, len(a[0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10456 CheckSeriesContent(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10457 self.assertFalse('RequestedTags' in a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10458
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10459 a = DoGet(_REMOTE, '/series?expand&requestedTags=%s' % requestedTags)
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10460 self.assertEqual(1, len(a))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10461 self.assertEqual(11, len(a[0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10462 CheckSeriesContent(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10463 CheckRequestedTags(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10464
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10465 a = DoGet(_REMOTE, '/instances?expand')
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10466 self.assertEqual(1, len(a))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10467 self.assertEqual(8, len(a[0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10468 CheckInstanceContent(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10469 self.assertFalse('RequestedTags' in a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10470
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10471 a = DoGet(_REMOTE, '/instances?expand&requestedTags=%s' % requestedTags)
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10472 self.assertEqual(1, len(a))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10473 self.assertEqual(9, len(a[0]))
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10474 CheckInstanceContent(a[0])
0daf680aa3cc added test_requested_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 640
diff changeset
10475 CheckRequestedTags(a[0])
647
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10476
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10477 a = DoGet(_REMOTE, '/patients/%s' % u['ParentPatient'])
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10478 self.assertEqual(7, len(a))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10479 CheckPatientContent(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10480 self.assertFalse('RequestedTags' in a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10481
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10482 a = DoGet(_REMOTE, '/patients/%s?requestedTags=%s' % (u['ParentPatient'], requestedTags))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10483 self.assertEqual(8, len(a))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10484 CheckPatientContent(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10485 CheckRequestedTags(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10486
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10487 a = DoGet(_REMOTE, '/studies/%s' % u['ParentStudy'])
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10488 self.assertEqual(9, len(a))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10489 CheckStudyContent(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10490 self.assertFalse('RequestedTags' in a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10491
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10492 a = DoGet(_REMOTE, '/studies/%s?requestedTags=%s' % (u['ParentStudy'], requestedTags))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10493 self.assertEqual(10, len(a))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10494 CheckStudyContent(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10495 CheckRequestedTags(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10496
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10497 a = DoGet(_REMOTE, '/series/%s' % u['ParentSeries'])
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10498 self.assertEqual(10, len(a))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10499 CheckSeriesContent(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10500 self.assertFalse('RequestedTags' in a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10501
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10502 a = DoGet(_REMOTE, '/series/%s?requestedTags=%s' % (u['ParentSeries'], requestedTags))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10503 self.assertEqual(11, len(a))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10504 CheckSeriesContent(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10505 CheckRequestedTags(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10506
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10507 a = DoGet(_REMOTE, '/instances/%s' % u['ID'])
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10508 self.assertEqual(8, len(a))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10509 CheckInstanceContent(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10510 self.assertFalse('RequestedTags' in a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10511
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10512 a = DoGet(_REMOTE, '/instances/%s?requestedTags=%s' % (u['ID'], requestedTags))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10513 self.assertEqual(9, len(a))
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10514 CheckInstanceContent(a)
5ee7be1be006 test expansion of single resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 646
diff changeset
10515 CheckRequestedTags(a)
661
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10516
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10517
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10518 def test_computed_tags(self):
662
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 661
diff changeset
10519 # curl 'http://alice:orthanctest@localhost:8042/patients/0946fcb6-cf12ab43-bad958c1-bf057ad5-0fc6f54c?requested-tags=0020,1200;0020,1202;0020,1204'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 661
diff changeset
10520 # curl 'http://alice:orthanctest@localhost:8042/studies/6c65289b-db2fcb71-7eaf73f4-8e12470c-a4d6d7cf?requested-tags=0008,0061;0008,0062;0020,1206;0020,1208'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 661
diff changeset
10521 # curl 'http://alice:orthanctest@localhost:8042/series/318603c5-03e8cffc-a82b6ee1-3ccd3c1e-18d7e3bb?requested-tags=0020,1209'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 661
diff changeset
10522 # curl 'http://alice:orthanctest@localhost:8042/instances/ee693caa-9786a685-4f0f9fb0-4411cc8b-988f5574?requested-tags=0008,0056'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 661
diff changeset
10523
661
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10524 UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0001.dcm')
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10525 UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0002.dcm')
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10526 UploadInstance(_REMOTE, 'Comunix/Pet/IM-0001-0001.dcm')
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10527 UploadInstance(_REMOTE, 'Comunix/Pet/IM-0001-0002.dcm')
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10528
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10529 instance = 'ee693caa-9786a685-4f0f9fb0-4411cc8b-988f5574'
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10530 series = '318603c5-03e8cffc-a82b6ee1-3ccd3c1e-18d7e3bb'
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10531 study = '6c65289b-db2fcb71-7eaf73f4-8e12470c-a4d6d7cf'
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10532 patient = '0946fcb6-cf12ab43-bad958c1-bf057ad5-0fc6f54c'
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10533
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10534 a = DoGet(_REMOTE, '/instances/%s?requested-tags=0008,0056' % instance)
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10535 self.assertEqual(1, len(a['RequestedTags']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10536 self.assertEqual('ONLINE', a['RequestedTags']['InstanceAvailability'])
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10537
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10538 a = DoGet(_REMOTE, '/series/%s?requested-tags=0020,1209' % series)
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10539 self.assertEqual(1, len(a['RequestedTags']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10540 self.assertEqual(2, int(a['RequestedTags']['NumberOfSeriesRelatedInstances']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10541
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10542 a = DoGet(_REMOTE, '/studies/%s?requested-tags=0008,0061;0008,0062;0020,1206;0020,1208' % study)
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10543 self.assertEqual(4, len(a['RequestedTags']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10544 self.assertEqual('CT\\PT', a['RequestedTags']['ModalitiesInStudy'])
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10545 self.assertEqual('1.2.840.10008.5.1.4.1.1.128\\1.2.840.10008.5.1.4.1.1.2', a['RequestedTags']['SOPClassesInStudy'])
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10546 self.assertEqual(2, int(a['RequestedTags']['NumberOfStudyRelatedSeries']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10547 self.assertEqual(4, int(a['RequestedTags']['NumberOfStudyRelatedInstances']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10548
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10549 a = DoGet(_REMOTE, '/patients/%s?requested-tags=0020,1200;0020,1202;0020,1204' % patient)
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10550 self.assertEqual(3, len(a['RequestedTags']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10551 self.assertEqual(1, int(a['RequestedTags']['NumberOfPatientRelatedStudies']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10552 self.assertEqual(2, int(a['RequestedTags']['NumberOfPatientRelatedSeries']))
763e2ccbd0df added test_computed_tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 653
diff changeset
10553 self.assertEqual(4, int(a['RequestedTags']['NumberOfPatientRelatedInstances']))
663
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10554
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10555 def test_computed_tags_and_patient_comments(self):
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10556 UploadInstance(_REMOTE, 'WithEmptyPatientComments.dcm')
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10557
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10558 # without requesting PatientComments, we get the computed tags
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10559 i = CallFindScu([ '-k', 'PatientID=WITH_COMMENTS', '-k', 'QueryRetrieveLevel=Study', '-k', 'ModalitiesInStudy', '-k', 'NumberOfStudyRelatedSeries', '-k', 'NumberOfStudyRelatedInstances' ])
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10560 modalitiesInStudy = re.findall('\(0008,0061\).*?\[(.*?)\]', i)
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10561 self.assertEqual(1, len(modalitiesInStudy))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10562 self.assertEqual('CT', modalitiesInStudy[0])
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10563
664
854640df43d3 fix version
Alain Mazy <am@orthanc.team>
parents: 663
diff changeset
10564 if IsOrthancVersionAbove(_REMOTE, 1, 12, 5):
663
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10565 # when requesting PatientComments, with 1.12.4, we did not get the computed tags
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10566 i = CallFindScu([ '-k', 'PatientID=WITH_COMMENTS', '-k', 'QueryRetrieveLevel=Study', '-k', 'ModalitiesInStudy', '-k', 'NumberOfStudyRelatedSeries', '-k', 'NumberOfStudyRelatedInstances', '-k', 'PatientComments' ])
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10567 modalitiesInStudy = re.findall('\(0008,0061\).*?\[(.*?)\]', i)
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10568 self.assertEqual(1, len(modalitiesInStudy))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10569 self.assertEqual('CT', modalitiesInStudy[0])
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10570 numberOfStudyRelatedSeries = re.findall('\(0020,1206\).*?\[(.*?)\]', i)
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10571 self.assertEqual(1, len(numberOfStudyRelatedSeries))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10572 self.assertEqual(1, int(numberOfStudyRelatedSeries[0]))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10573 numberOfStudyRelatedInstances = re.findall('\(0020,1208\).*?\[(.*?)\]', i)
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10574 self.assertEqual(1, len(numberOfStudyRelatedInstances))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10575 self.assertEqual(1, int(numberOfStudyRelatedInstances[0]))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10576
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10577 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10578 'Expand': True,
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10579 'Query' : { 'PatientID' : 'WITH_COMMENTS'},
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10580 'RequestedTags': ['ModalitiesInStudy', 'NumberOfStudyRelatedSeries', 'NumberOfStudyRelatedInstances', 'PatientComments']})
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10581
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10582 self.assertEqual(4, len(a[0]['RequestedTags'].keys()))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10583 self.assertEqual(1, int(a[0]['RequestedTags']['NumberOfStudyRelatedSeries']))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10584 self.assertEqual(1, int(a[0]['RequestedTags']['NumberOfStudyRelatedInstances']))
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10585 self.assertEqual('CT', a[0]['RequestedTags']['ModalitiesInStudy'])
7a6996b9b9ee added specific c-find test
Alain Mazy <am@orthanc.team>
parents: 662
diff changeset
10586 self.assertEqual('', a[0]['RequestedTags']['PatientComments'])