comparison Tests/Tests.py @ 256:397bcd1d16b2

tests for RT-STRUCT anonymization
author amazy
date Thu, 05 Sep 2019 13:12:13 +0200
parents 02c3d91b155c
children 943166deebcb
comparison
equal deleted inserted replaced
255:02c3d91b155c 256:397bcd1d16b2
4705 aSeries = DoGet(_REMOTE, '/studies/%s/series' % aStudyId) 4705 aSeries = DoGet(_REMOTE, '/studies/%s/series' % aStudyId)
4706 self.assertEqual(2, len(aSeries)) 4706 self.assertEqual(2, len(aSeries))
4707 4707
4708 aCt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CT', aSeries)) 4708 aCt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CT', aSeries))
4709 aRt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'RTSTRUCT', aSeries)) 4709 aRt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'RTSTRUCT', aSeries))
4710
4711 aCtInstanceId = aCt[0]['Instances'][0] 4710 aCtInstanceId = aCt[0]['Instances'][0]
4712 aRtInstanceId = aRt[0]['Instances'][0] 4711 aRtInstanceId = aRt[0]['Instances'][0]
4713
4714 aCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aCtInstanceId) 4712 aCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aCtInstanceId)
4715 aRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aRtInstanceId) 4713 aRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aRtInstanceId)
4716 4714
4717 # now validate the relationships in the anonymized data 4715 # now validate the relationships in the anonymized data
4718 aStudyUID = aCtTags['StudyInstanceUID'] 4716 aStudyUID = aCtTags['StudyInstanceUID']
4734 self.assertNotEqual(oCtFrameOfReferenceUID, aCtFrameOfReferenceUID) 4732 self.assertNotEqual(oCtFrameOfReferenceUID, aCtFrameOfReferenceUID)
4735 4733
4736 # validate the relationships 4734 # validate the relationships
4737 self.assertEqual(oContourSequenceCount, aContourSequenceCount) 4735 self.assertEqual(oContourSequenceCount, aContourSequenceCount)
4738 self.assertEqual(aCtFrameOfReferenceUID, aRtFrameOfReferenceUID) 4736 self.assertEqual(aCtFrameOfReferenceUID, aRtFrameOfReferenceUID)
4739 # fails !!! self.assertEqual(aStudyUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID']) 4737 self.assertEqual(aStudyUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID'])
4740 # fails !!! self.assertEqual(aCtSeriesUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['SeriesInstanceUID']) 4738 self.assertEqual(aCtSeriesUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['SeriesInstanceUID'])
4741 self.assertEqual(aCtInstanceUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) 4739 self.assertEqual(aCtInstanceUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['ContourImageSequence'][0]['ReferencedSOPInstanceUID'])
4742 self.assertEqual(aCtInstanceUID, aRtTags['ROIContourSequence'][0]['ContourSequence'][aContourSequenceCount-1]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) 4740 self.assertEqual(aCtInstanceUID, aRtTags['ROIContourSequence'][0]['ContourSequence'][aContourSequenceCount-1]['ContourImageSequence'][0]['ReferencedSOPInstanceUID'])
4743 4741
4742 def test_anonymize_relationships_5b(self):
4743 # same test as previous one but, this time, we force the StudyInstanceUID
4744 ct1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/CT01.dcm')
4745 rt1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/RT.dcm')
4746 oStudyId = ct1['ParentStudy']
4747 oCtInstanceId = ct1['ID']
4748 oRtInstanceId = rt1['ID']
4749
4750 oCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oCtInstanceId)
4751 oRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oRtInstanceId)
4752
4753 ### anonymize while forcing the StudyInstanceUID
4754
4755 aStudyId = DoPost(_REMOTE, '/studies/%s/anonymize' % oStudyId, '{ "Replace" : { "StudyInstanceUID" : "1.2.3.4"}, "Force": true}',
4756 'application/json')['ID']
4757
4758 ### validate
4759
4760 aSeries = DoGet(_REMOTE, '/studies/%s/series' % aStudyId)
4761 self.assertEqual(2, len(aSeries))
4762
4763 aCt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CT', aSeries))
4764 aRt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'RTSTRUCT', aSeries))
4765 aCtInstanceId = aCt[0]['Instances'][0]
4766 aRtInstanceId = aRt[0]['Instances'][0]
4767 aCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aCtInstanceId)
4768 aRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aRtInstanceId)
4769
4770 self.assertEqual("1.2.3.4", aCtTags['StudyInstanceUID'])
4771 self.assertEqual("1.2.3.4", aRtTags['StudyInstanceUID'])
4772 self.assertEqual("1.2.3.4", aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID'])
4744 4773
4745 4774
4746 4775
4747 @unittest.skip('Not fixed yet in Orthanc') 4776 @unittest.skip('Not fixed yet in Orthanc')
4748 def test_bitbucket_issue_140(self): 4777 def test_bitbucket_issue_140(self):