comparison Tests/Tests.py @ 554:ede184638961

added test_pixel_data_vr
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sun, 25 Jun 2023 15:19:44 +0200
parents 3933237d1958
children 1028b75ac1ce
comparison
equal deleted inserted replaced
553:6004be7f70a8 554:ede184638961
1169 # New in Orthanc 1.9.0 1169 # New in Orthanc 1.9.0
1170 self.assertTrue('RemoteAET' in m) 1170 self.assertTrue('RemoteAET' in m)
1171 self.assertEqual(DoGet(_REMOTE, '/series/%s/metadata/RemoteAET' % series), '') # None, received by REST API 1171 self.assertEqual(DoGet(_REMOTE, '/series/%s/metadata/RemoteAET' % series), '') # None, received by REST API
1172 1172
1173 m = DoGet(_REMOTE, '/instances/%s/metadata' % i) 1173 m = DoGet(_REMOTE, '/instances/%s/metadata' % i)
1174 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1): 1174 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1175 self.assertEqual(11, len(m))
1176 elif IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1177 self.assertEqual(10, len(m)) 1175 self.assertEqual(10, len(m))
1178 elif IsOrthancVersionAbove(_REMOTE, 1, 9, 1): 1176 elif IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
1179 self.assertEqual(9, len(m)) 1177 self.assertEqual(9, len(m))
1180 else: 1178 else:
1181 self.assertEqual(8, len(m)) 1179 self.assertEqual(8, len(m))
1182
1183 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1):
1184 # ./Tests/GetPixelDataVR.py ./Database/Knee/T1/IM-0001-0001.dcm
1185 self.assertTrue('PixelDataVR' in m) # New in Orthanc 1.12.1
1186 self.assertEqual('OW', DoGet(_REMOTE, '/instances/%s/metadata/PixelDataVR' % i))
1187 1180
1188 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): 1181 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1189 self.assertTrue('MainDicomTagsSignature' in m) 1182 self.assertTrue('MainDicomTagsSignature' in m)
1190 1183
1191 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): 1184 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
1391 1384
1392 i = DoGet(_REMOTE, '/instances') 1385 i = DoGet(_REMOTE, '/instances')
1393 self.assertEqual(1, len(i)) 1386 self.assertEqual(1, len(i))
1394 m = DoGet(_REMOTE, '/instances/%s/metadata' % i[0]) 1387 m = DoGet(_REMOTE, '/instances/%s/metadata' % i[0])
1395 1388
1396 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1): 1389 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1397 self.assertEqual(11, len(m))
1398 elif IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1399 self.assertEqual(10, len(m)) 1390 self.assertEqual(10, len(m))
1400 elif IsOrthancVersionAbove(_REMOTE, 1, 9, 1): 1391 elif IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
1401 self.assertEqual(9, len(m)) 1392 self.assertEqual(9, len(m))
1402 else: 1393 else:
1403 self.assertEqual(8, len(m)) 1394 self.assertEqual(8, len(m))
1404
1405 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1):
1406 # ./Tests/GetPixelDataVR.py ./Database/ColorTestImageJ.dcm
1407 self.assertTrue('PixelDataVR' in m) # New in Orthanc 1.12.1
1408 self.assertEqual('OB', DoGet(_REMOTE, '/instances/%s/metadata/PixelDataVR' % i[0]))
1409 1395
1410 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0): 1396 if IsOrthancVersionAbove(_REMOTE, 1, 11, 0):
1411 self.assertTrue('MainDicomTagsSignature' in m) # New in Orthanc 1.11.0 1397 self.assertTrue('MainDicomTagsSignature' in m) # New in Orthanc 1.11.0
1412 1398
1413 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): 1399 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1):
9790 #self.assertEqual(instanceLastUpdate1, instanceLastUpdate2) 9776 #self.assertEqual(instanceLastUpdate1, instanceLastUpdate2)
9791 self.assertNotEqual(seriesLastUpdate1, seriesLastUpdate2) 9777 self.assertNotEqual(seriesLastUpdate1, seriesLastUpdate2)
9792 self.assertNotEqual(studyLastUpdate1, studyLastUpdate2) 9778 self.assertNotEqual(studyLastUpdate1, studyLastUpdate2)
9793 self.assertNotEqual(patientLastUpdate1, patientLastUpdate2) 9779 self.assertNotEqual(patientLastUpdate1, patientLastUpdate2)
9794 9780
9781 def test_pixel_data_vr(self):
9782 def Check(path, hasPixelData, hasMetadata, expectedVR):
9783 i = UploadInstance(_REMOTE, path) ['ID']
9784 m = DoGet(_REMOTE, '/instances/%s/metadata?expand' % i)
9785 if hasMetadata:
9786 self.assertTrue('PixelDataVR' in m)
9787 self.assertEqual(expectedVR, m['PixelDataVR'])
9788 else:
9789 self.assertFalse('PixelDataVR' in m)
9790
9791 if hasPixelData:
9792 self.assertTrue('PixelDataOffset' in m)
9793 j = DoGet(_REMOTE, '/instances/%s/file?expand' % i, headers = {
9794 'Accept': 'application/dicom+json'
9795 })
9796 self.assertEqual(expectedVR, j['7FE00010']['vr'])
9797
9798 if IsOrthancVersionAbove(_REMOTE, 1, 12, 1):
9799 # File without pixel data
9800 Check('MarekLatin2.dcm', False, False, None)
9801
9802 # Those files are badly formatted, and should be 'OB'
9803 # according to the DICOM standard => medata is present
9804 Check('Issue143.dcm', True, True, 'OW') # Little Endian Explicit, 8bpp
9805 Check('KarstenHilbertRF.dcm', True, True, 'OW') # Little Endian Explicit, 8bpp
9806 Check('PilatesArgenturGEUltrasoundOsiriX.dcm', True, True, 'OW') # Little Endian Explicit, 8bpp
9807
9808 # Those files are formatted as expected
9809 Check('ColorTestMalaterre.dcm', True, False, 'OW') # Implicit Little Endian, 8bpp
9810 Check('Issue94.dcm', True, False, 'OW') # Implicit Little Endian, 16bpp
9811 Check('TransferSyntaxes/1.2.840.10008.1.2.1.dcm', True, False, 'OB') # Explicit Little Endian, 8bpp
9812 Check('Phenix/IM-0001-0001.dcm', True, False, 'OW') # Explicit Little Endian, 16bpp
9813 Check('TransferSyntaxes/1.2.840.10008.1.2.2.dcm', True, False, 'OB') # Explicit Big Endian, 8bpp
9814 Check('TransferSyntaxes/1.2.840.10008.1.2.4.50.dcm', True, False, 'OB') # JPEG
9815 Check('Knee/T1/IM-0001-0001.dcm', True, False, 'OB') # JPEG2k