Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 407:ad98466353c6
test_modify_subsequences
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 09 Jun 2021 16:53:02 +0200 |
parents | 62ee5e57ee05 |
children | 4e0b9fddbc71 |
comparison
equal
deleted
inserted
replaced
406:62ee5e57ee05 | 407:ad98466353c6 |
---|---|
7099 # In Orthanc <= 1.9.3, the two tests below failed | 7099 # In Orthanc <= 1.9.3, the two tests below failed |
7100 self.assertNotEqual('1.2.840.113619.6.95.31.0.3.4.1.3175.13.6054282', | 7100 self.assertNotEqual('1.2.840.113619.6.95.31.0.3.4.1.3175.13.6054282', |
7101 tags['0008,1250'][0]['0020,000d']) | 7101 tags['0008,1250'][0]['0020,000d']) |
7102 self.assertNotEqual('1.3.12.2.1107.5.1.4.11047.30000019111306043635400005028', | 7102 self.assertNotEqual('1.3.12.2.1107.5.1.4.11047.30000019111306043635400005028', |
7103 tags['0008,1250'][0]['0020,000e']) | 7103 tags['0008,1250'][0]['0020,000e']) |
7104 | |
7105 | |
7106 def test_modify_subsequences(self): | |
7107 # New in Orthanc 1.9.4 (cf. LSD-629) | |
7108 UploadInstance(_REMOTE, 'Issue22-NoPixelData.dcm') | |
7109 studies = DoGet(_REMOTE, '/studies') | |
7110 self.assertEqual(1, len(studies)) | |
7111 | |
7112 def GetTags(study): | |
7113 instances = DoGet(_REMOTE, '/studies/%s/instances' % study) | |
7114 self.assertEqual(1, len(instances)) | |
7115 return DoGet(_REMOTE, '/instances/%s/tags?short' % instances[0]['ID']) | |
7116 | |
7117 tags1 = GetTags(studies[0]) | |
7118 | |
7119 a = DoPost(_REMOTE, '/studies/%s/modify' % studies[0], { | |
7120 'Replace' : { | |
7121 'PatientName' : 'Hello1', | |
7122 'DimensionIndexSequence[1].DimensionDescriptionLabel' : 'Hello2', | |
7123 'DimensionIndexSequence[*].PatientName' : 'Hello3', | |
7124 'ReferencedImageEvidenceSequence[2].ReferencedSeriesSequence[0].ReferencedSOPSequence[0].ReferencedSOPInstanceUID' : 'Hello4', | |
7125 }, | |
7126 'Remove' : [ | |
7127 'ReferencedPerformedProcedureStepSequence', | |
7128 'PerformedProtocolCodeSequence[0].CodeValue', | |
7129 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[*].ReferencedSOPInstanceUID', | |
7130 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[1].ReferencedSOPClassUID', | |
7131 'SharedFunctionalGroupsSequence[2].ReferencedImageSequence', # Inexistent tag | |
7132 ] | |
7133 }) | |
7134 tags2 = GetTags(a['ID']) | |
7135 | |
7136 self.assertEqual('Anonymized1', tags1['0010,0010']) | |
7137 self.assertEqual('Hello1', tags2['0010,0010']) | |
7138 | |
7139 self.assertEqual('Stack ID', tags1['0020,9222'][0]['0020,9421']) | |
7140 self.assertEqual('In-Stack Position Number', tags1['0020,9222'][1]['0020,9421']) | |
7141 self.assertEqual('Stack ID', tags2['0020,9222'][0]['0020,9421']) | |
7142 self.assertEqual('Hello2', tags2['0020,9222'][1]['0020,9421']) | |
7143 | |
7144 for i in range(3): | |
7145 self.assertFalse('0010,0010' in tags1['0020,9222'][i]) | |
7146 self.assertEqual('Hello3', tags2['0020,9222'][i]['0010,0010']) | |
7147 | |
7148 self.assertEqual('1.3.46.670589.11.22237.5.20.1.1.7512.2014100814064168452', | |
7149 tags1['0008,9092'][2]['0008,1115'][0]['0008,1199'][0]['0008,1155']) | |
7150 self.assertEqual('Hello4', | |
7151 tags2['0008,9092'][2]['0008,1115'][0]['0008,1199'][0]['0008,1155']) | |
7152 self.assertEqual(tags1['0008,9092'][1]['0008,1115'][0]['0008,1199'][0]['0008,1155'], | |
7153 tags2['0008,9092'][1]['0008,1115'][0]['0008,1199'][0]['0008,1155']) | |
7154 | |
7155 self.assertTrue('0008,1111' in tags1) | |
7156 self.assertFalse('0008,1111' in tags2) | |
7157 self.assertTrue('0008,0100' in tags1['0040,0260'][0]) | |
7158 self.assertFalse('0008,0100' in tags2['0040,0260'][0]) | |
7159 | |
7160 for i in range(3): | |
7161 self.assertTrue('0008,1155' in tags1['5200,9229'][0]['0008,1140'][i]) | |
7162 self.assertFalse('0008,1155' in tags2['5200,9229'][0]['0008,1140'][i]) | |
7163 self.assertTrue('0008,1150' in tags1['5200,9229'][0]['0008,1140'][i]) | |
7164 | |
7165 self.assertTrue('0008,1150' in tags2['5200,9229'][0]['0008,1140'][0]) | |
7166 self.assertFalse('0008,1150' in tags2['5200,9229'][0]['0008,1140'][1]) | |
7167 self.assertTrue('0008,1150' in tags2['5200,9229'][0]['0008,1140'][2]) | |
7168 | |
7169 a = DoPost(_REMOTE, '/studies/%s/anonymize' % studies[0], { | |
7170 'Replace' : { | |
7171 'DimensionIndexSequence[1].DimensionDescriptionLabel' : 'Hello1', | |
7172 }, | |
7173 'Remove' : [ | |
7174 'SharedFunctionalGroupsSequence[*].ReferencedImageSequence[*].ReferencedSOPInstanceUID', # 5200,9229 | |
7175 ], | |
7176 'Keep' : [ | |
7177 'ReferencedImageEvidenceSequence', # 0008,9092 | |
7178 'DimensionIndexSequence', # 0020,9222 | |
7179 'PerFrameFunctionalGroupsSequence[*].2005,140f[*].SOPInstanceUID', # 5200,9230 | |
7180 ] | |
7181 }) | |
7182 tags3 = GetTags(a['ID']) | |
7183 | |
7184 # UIDs | |
7185 for i in [ '0008,0018', | |
7186 '0010,0020', | |
7187 '0008,0018', | |
7188 '0010,0020' ]: | |
7189 self.assertNotEqual(tags1[i], tags3[i]) | |
7190 | |
7191 self.assertNotEqual(tags1['0020,9221'][0]['0020,9164'], | |
7192 tags3['0020,9221'][0]['0020,9164']) | |
7193 | |
7194 self.assertNotEqual(tags1['5200,9229'][0]['2005,140e'][0]['0008,0014'], | |
7195 tags3['5200,9229'][0]['2005,140e'][0]['0008,0014']) | |
7196 | |
7197 # http://dicom.nema.org/medical/dicom/current/output/chtml/part15/chapter_E.html#table_E.1-1 | |
7198 # Removals (X) | |
7199 for i in [ '0008,0021', | |
7200 '0008,002a', | |
7201 '0008,0031', | |
7202 '0008,1030', | |
7203 '0008,103e', | |
7204 '0008,1111', | |
7205 '0010,21c0', | |
7206 '0040,0006', | |
7207 '0040,0241', | |
7208 '0040,0244', | |
7209 '0040,0245', | |
7210 '0040,0250', | |
7211 '0040,0251', | |
7212 '0040,0253', | |
7213 '0040,0254', | |
7214 '0040,0555', | |
7215 ]: | |
7216 self.assertTrue(i in tags1) | |
7217 self.assertFalse(i in tags3) | |
7218 | |
7219 # Clearings (Z) | |
7220 for i in [ '0008,0020', | |
7221 '0008,0023', | |
7222 '0008,0030', | |
7223 '0008,0033' ]: | |
7224 self.assertNotEqual('', tags1[i]) | |
7225 self.assertEqual('', tags3[i]) | |
7226 | |
7227 # Replace | |
7228 self.assertEqual('In-Stack Position Number', tags1['0020,9222'][1]['0020,9421']) | |
7229 self.assertEqual('Hello1', tags3['0020,9222'][1]['0020,9421']) | |
7230 | |
7231 # "Keep" on DimensionIndexSequence | |
7232 for i in range(3): | |
7233 self.assertEqual(tags1['0020,9222'][i]['0020,9164'], | |
7234 tags3['0020,9222'][i]['0020,9164']) | |
7235 | |
7236 # "Keep" on ReferencedImageEvidenceSequence | |
7237 self.assertEqual(json.dumps(tags1['0008,9092']), | |
7238 json.dumps(tags3['0008,9092'])) | |
7239 | |
7240 # "Keep" on PerFrameFunctionalGroupsSequence | |
7241 self.assertEqual(json.dumps(tags1['5200,9230']), | |
7242 json.dumps(tags3['5200,9230'])) | |
7243 | |
7244 # "Remove" on SharedFunctionalGroupsSequence | |
7245 for i in range(3): | |
7246 self.assertTrue('0008,1155' in tags1['5200,9229'][0]['0008,1140'][i]) | |
7247 self.assertFalse('0008,1155' in tags3['5200,9229'][0]['0008,1140'][i]) | |
7248 | |
7249 with open('/tmp/a', 'w') as f: | |
7250 f.write(json.dumps(tags1, indent=4, sort_keys=True)) | |
7251 with open('/tmp/b', 'w') as f: | |
7252 f.write(json.dumps(tags3, indent=4, sort_keys=True)) |