comparison Tests/Tests.py @ 179:8a2dd77d4035

testing split/merge
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 01 Oct 2018 17:54:32 +0200
parents ef6b791c6d62
children 911070f790e3
comparison
equal deleted inserted replaced
178:c896ac762b9f 179:8a2dd77d4035
3844 # one of the Generic Group Length tags (*, 0x0000) 3844 # one of the Generic Group Length tags (*, 0x0000)
3845 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] 3845 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
3846 result = CallFindScu([ '-k', '0008,0052=STUDY', '-k', '0008,0000=80' ]) 3846 result = CallFindScu([ '-k', '0008,0052=STUDY', '-k', '0008,0000=80' ])
3847 self.assertFalse('UnableToProcess' in result) 3847 self.assertFalse('UnableToProcess' in result)
3848 self.assertFalse('E:' in result) 3848 self.assertFalse('E:' in result)
3849
3850
3851 def test_split(self):
3852 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
3853 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')
3854 study = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918'
3855 t1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285'
3856 t2 = 'bbf7a453-0d34251a-03663b55-46bb31b9-ffd74c59'
3857
3858 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
3859 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
3860
3861 info = DoGet(_REMOTE, '/studies/%s' % study)
3862 self.assertTrue('ReferringPhysicianName' in info['MainDicomTags'])
3863
3864 job = MonitorJob2(_REMOTE, lambda: DoPost
3865 (_REMOTE, '/studies/%s/split' % study, {
3866 'Series' : [ t2 ],
3867 'Replace' : { 'PatientName' : 'Hello' },
3868 'Remove' : [ 'ReferringPhysicianName' ],
3869 'KeepSource' : False
3870 }))
3871
3872 self.assertNotEqual(None, job)
3873
3874 studies = set(DoGet(_REMOTE, '/studies'))
3875 self.assertEqual(2, len(studies))
3876
3877 series = set(DoGet(_REMOTE, '/series'))
3878 self.assertEqual(2, len(series))
3879 self.assertTrue(t1 in series)
3880
3881 study2 = DoGet(_REMOTE, '/jobs/%s' % job)['Content']['TargetStudy']
3882 self.assertTrue(study in studies)
3883 self.assertTrue(study2 in studies)
3884
3885 info = DoGet(_REMOTE, '/studies/%s' % study2)
3886 self.assertTrue('Hello', info['PatientMainDicomTags']['PatientName'])
3887 self.assertFalse('ReferringPhysicianName' in info['MainDicomTags'])
3888
3889
3890 def test_merge(self):
3891 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
3892 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
3893 knee = '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918'
3894 t1 = '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285'
3895 brainix = '27f7126f-4f66fb14-03f4081b-f9341db2-53925988'
3896 flair = '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0'
3897
3898 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
3899 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
3900
3901 job = MonitorJob2(_REMOTE, lambda: DoPost
3902 (_REMOTE, '/studies/%s/merge' % knee, {
3903 'Resources' : [ brainix ],
3904 'KeepSource' : True
3905 }))
3906
3907 self.assertNotEqual(None, job)
3908
3909 studies = set(DoGet(_REMOTE, '/studies'))
3910 self.assertEqual(2, len(studies))
3911 self.assertTrue(knee in studies)
3912 self.assertTrue(brainix in studies)
3913
3914 series = set(DoGet(_REMOTE, '/studies/%s' % knee)['Series'])
3915 self.assertTrue(t1 in series)
3916 series.remove(t1)
3917 self.assertEqual(1, len(series))
3918
3919 instances = DoGet(_REMOTE, '/series/%s' % list(series)[0])['Instances']
3920 self.assertEqual(1, len(instances))
3921 merged = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0])
3922
3923 instances = DoGet(_REMOTE, '/series/%s' % t1)['Instances']
3924 self.assertEqual(1, len(instances))
3925 a = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0])
3926
3927 instances = DoGet(_REMOTE, '/series/%s' % flair)['Instances']
3928 self.assertEqual(1, len(instances))
3929 b = DoGet(_REMOTE, '/instances/%s/tags?simplify' % instances[0])
3930
3931 tags = DoGet(_REMOTE, '/studies/%s' % knee)
3932
3933 for key in tags['PatientMainDicomTags']:
3934 self.assertEqual(a[key], merged[key])
3935 if (key in b and key != 'PatientSex'):
3936 self.assertNotEqual(a[key], b[key])
3937
3938 for key in tags['MainDicomTags']:
3939 # Not in the patient/study module
3940 if (not key in [ 'InstitutionName',
3941 'RequestingPhysician',
3942 'RequestedProcedureDescription', ]):
3943 self.assertEqual(a[key], merged[key])
3944 if (key in b):
3945 self.assertNotEqual(a[key], b[key])
3946