comparison Tests/Tests.py @ 118:a954c535fef6

test_bitbucket_issue_55
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 14 Jul 2017 11:43:16 +0200
parents d87bf4fbbf83
children 7ecd26982dd7
comparison
equal deleted inserted replaced
117:d87bf4fbbf83 118:a954c535fef6
528 "Replace" : { 528 "Replace" : {
529 "PatientName" : "hello", 529 "PatientName" : "hello",
530 #"PatientID" : "world" 530 #"PatientID" : "world"
531 }, 531 },
532 "Remove" : [ "StationName" ], 532 "Remove" : [ "StationName" ],
533 "RemovePrivateTags" : None 533 "RemovePrivateTags" : True
534 }), 534 }),
535 'application/json') 535 'application/json')
536 j = DoPost(_REMOTE, '/instances', modified, 'application/dicom')['ID'] 536 j = DoPost(_REMOTE, '/instances', modified, 'application/dicom')['ID']
537 537
538 self.assertNotEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) 538 self.assertNotEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip())
1889 b = AnonymizeAndUpload(a, '{"Keep":["PatientName"],"Replace":{"00e1,10c2":"Hello"}}') 1889 b = AnonymizeAndUpload(a, '{"Keep":["PatientName"],"Replace":{"00e1,10c2":"Hello"}}')
1890 self.assertEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b)) 1890 self.assertEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
1891 self.assertTrue(DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b).startswith('Hello')) 1891 self.assertTrue(DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b).startswith('Hello'))
1892 1892
1893 # Examples from the Wiki 1893 # Examples from the Wiki
1894 b = AnonymizeAndUpload(a, '{"Replace":{"PatientName":"hello","0010-0020":"world"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": null}') 1894 b = AnonymizeAndUpload(a, '{"Replace":{"PatientName":"hello","0010-0020":"world"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": true,"Force":true}')
1895 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip()) 1895 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
1896 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip()) 1896 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
1897 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b)) 1897 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
1898 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b)) 1898 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b))
1899 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b)) 1899 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b))
1900 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b)) 1900 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
1901 DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % a) 1901 DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % a)
1902 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b)) 1902 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b))
1903 1903
1904 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"},"Remove":["InstitutionName"],"RemovePrivateTags": null}') 1904 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"},"Remove":["InstitutionName"],"RemovePrivateTags": true,"Force":true}')
1905 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip()) 1905 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
1906 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip()) 1906 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
1907 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b)) 1907 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
1908 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b)) 1908 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b))
1909 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b)) 1909 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
1910 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b)) 1910 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b))
1911 1911
1912 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"}}') 1912 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"},"Force":true}')
1913 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip()) 1913 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
1914 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip()) 1914 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
1915 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1,10c2' % b)) 1915 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1,10c2' % b))
1916 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b)) 1916 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
1917 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b)) 1917 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b))
3279 3279
3280 instance = a[0]['ID'] 3280 instance = a[0]['ID']
3281 3281
3282 return (instance, DoGet(_REMOTE, '/instances/%s/tags' % instance)) 3282 return (instance, DoGet(_REMOTE, '/instances/%s/tags' % instance))
3283 3283
3284 # Use a sample DICOM image that already contains the 0010,1060
3285 # (RequestingService) tag
3286 UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm') 3284 UploadInstance(_REMOTE, 'Issue44/Monochrome1.dcm')
3287 origStudy = '6068a14b-d4df27af-9ec22145-538772d8-74f228ff' 3285 origStudy = '6068a14b-d4df27af-9ec22145-538772d8-74f228ff'
3288 3286
3289 # Add the 0032,1033 (Requesting Service) and the 0010,1060 3287 # Add the 0032,1033 (Requesting Service) and the 0010,1060
3290 # (Patient's Mother's Birth Name) tags 3288 # (Patient's Mother's Birth Name) tags
3318 # Run "dciodvfy" on the anonymized file to be sure it is still valid 3316 # Run "dciodvfy" on the anonymized file to be sure it is still valid
3319 f.write(DoGet(_REMOTE, '/instances/%s/file' % instance)) 3317 f.write(DoGet(_REMOTE, '/instances/%s/file' % instance))
3320 f.flush() 3318 f.flush()
3321 subprocess.check_output([ FindExecutable('dciodvfy'), f.name ], 3319 subprocess.check_output([ FindExecutable('dciodvfy'), f.name ],
3322 stderr = subprocess.STDOUT).split('\n') 3320 stderr = subprocess.STDOUT).split('\n')
3321
3322
3323 def test_bitbucket_issue_55(self):
3324 def Run(modify, query):
3325 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
3326
3327 operation = 'modify' if modify else 'anonymize'
3328
3329 self.assertRaises(Exception, lambda: DoPost(
3330 _REMOTE, '/studies/%s/%s' % (study, operation), query))
3331 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
3332
3333 query["Force"] = True
3334 a = DoPost(_REMOTE, '/studies/%s/%s' % (study, operation), query)['Path']
3335 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
3336 DoDelete(_REMOTE, a)
3337
3338 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
3339
3340 UploadInstance(_REMOTE, 'DummyCT.dcm')
3341 study = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0'
3342
3343 Run(True, { "Replace" : { "StudyInstanceUID" : "world" } })
3344 Run(True, { "Replace" : { "SeriesInstanceUID" : "world" } })
3345 Run(True, { "Replace" : { "SOPInstanceUID" : "world" } })
3346
3347 Run(False, { "Keep" : [ "StudyInstanceUID" ]})
3348 Run(False, { "Keep" : [ "SeriesInstanceUID" ]})
3349 Run(False, { "Keep" : [ "SOPInstanceUID" ]})
3350
3351 Run(False, { "Replace" : { "StudyInstanceUID" : "world" } })
3352 Run(False, { "Replace" : { "SeriesInstanceUID" : "world" } })
3353 Run(False, { "Replace" : { "SOPInstanceUID" : "world" } })
3354