Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 255:02c3d91b155c
added anonymization test for RTH data (currently failing)
author | amazy |
---|---|
date | Tue, 03 Sep 2019 14:28:44 +0200 |
parents | 05b77ade5e1d |
children | 397bcd1d16b2 |
comparison
equal
deleted
inserted
replaced
254:05b77ade5e1d | 255:02c3d91b155c |
---|---|
4667 # This fails on Orthanc <= 1.5.6 | 4667 # This fails on Orthanc <= 1.5.6 |
4668 self.assertEqual(tags['0008,1115'][0]['0020,000e'], | 4668 self.assertEqual(tags['0008,1115'][0]['0020,000e'], |
4669 cr[0]['MainDicomTags']['SeriesInstanceUID']) | 4669 cr[0]['MainDicomTags']['SeriesInstanceUID']) |
4670 | 4670 |
4671 | 4671 |
4672 def test_anonymize_relationships_5(self): | |
4673 ct1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/CT01.dcm') | |
4674 rt1 = UploadInstance(_REMOTE, 'HierarchicalAnonymization/RTH/RT.dcm') | |
4675 oStudyId = ct1['ParentStudy'] | |
4676 oCtInstanceId = ct1['ID'] | |
4677 oRtInstanceId = rt1['ID'] | |
4678 | |
4679 oCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oCtInstanceId) | |
4680 oRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % oRtInstanceId) | |
4681 | |
4682 # first validate the relationships in the source data | |
4683 oStudyUID = oCtTags['StudyInstanceUID'] | |
4684 oRtSeriesUID = oRtTags['SeriesInstanceUID'] | |
4685 oRtInstanceUID = oRtTags['SOPInstanceUID'] | |
4686 oRtFrameOfReferenceUID = oRtTags['ReferencedFrameOfReferenceSequence'][0]['FrameOfReferenceUID'] | |
4687 oCtSeriesUID = oCtTags['SeriesInstanceUID'] | |
4688 oCtInstanceUID = oCtTags['SOPInstanceUID'] | |
4689 oCtFrameOfReferenceUID = oCtTags['FrameOfReferenceUID'] | |
4690 | |
4691 oContourSequenceCount = len(oRtTags['ROIContourSequence'][0]['ContourSequence']) | |
4692 self.assertEqual(oCtFrameOfReferenceUID, oRtFrameOfReferenceUID) | |
4693 self.assertEqual(oStudyUID, oRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID']) | |
4694 self.assertEqual(oCtSeriesUID, oRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['SeriesInstanceUID']) | |
4695 self.assertEqual(oCtInstanceUID, oRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['RTReferencedSeriesSequence'][0]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) | |
4696 self.assertEqual(oCtInstanceUID, oRtTags['ROIContourSequence'][0]['ContourSequence'][oContourSequenceCount-1]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) | |
4697 | |
4698 ### anonymize | |
4699 | |
4700 aStudyId = DoPost(_REMOTE, '/studies/%s/anonymize' % oStudyId, '{}', | |
4701 'application/json')['ID'] | |
4702 | |
4703 ### validate | |
4704 | |
4705 aSeries = DoGet(_REMOTE, '/studies/%s/series' % aStudyId) | |
4706 self.assertEqual(2, len(aSeries)) | |
4707 | |
4708 aCt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'CT', aSeries)) | |
4709 aRt = list(filter(lambda x: x['MainDicomTags']['Modality'] == 'RTSTRUCT', aSeries)) | |
4710 | |
4711 aCtInstanceId = aCt[0]['Instances'][0] | |
4712 aRtInstanceId = aRt[0]['Instances'][0] | |
4713 | |
4714 aCtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aCtInstanceId) | |
4715 aRtTags = DoGet(_REMOTE, '/instances/%s/tags?simplify' % aRtInstanceId) | |
4716 | |
4717 # now validate the relationships in the anonymized data | |
4718 aStudyUID = aCtTags['StudyInstanceUID'] | |
4719 aRtSeriesUID = aRtTags['SeriesInstanceUID'] | |
4720 aRtInstanceUID = aRtTags['SOPInstanceUID'] | |
4721 aRtFrameOfReferenceUID = aRtTags['ReferencedFrameOfReferenceSequence'][0]['FrameOfReferenceUID'] | |
4722 aCtSeriesUID = aCtTags['SeriesInstanceUID'] | |
4723 aCtInstanceUID = aCtTags['SOPInstanceUID'] | |
4724 aCtFrameOfReferenceUID = aCtTags['FrameOfReferenceUID'] | |
4725 | |
4726 aContourSequenceCount = len(aRtTags['ROIContourSequence'][0]['ContourSequence']) | |
4727 # make sure all UIDs have been updated | |
4728 self.assertNotEqual(oStudyUID, aStudyUID) | |
4729 self.assertNotEqual(oRtSeriesUID, aRtSeriesUID) | |
4730 self.assertNotEqual(oRtInstanceUID, aRtInstanceUID) | |
4731 self.assertNotEqual(oRtFrameOfReferenceUID, aRtFrameOfReferenceUID) | |
4732 self.assertNotEqual(oCtSeriesUID, aCtSeriesUID) | |
4733 self.assertNotEqual(oCtInstanceUID, aCtInstanceUID) | |
4734 self.assertNotEqual(oCtFrameOfReferenceUID, aCtFrameOfReferenceUID) | |
4735 | |
4736 # validate the relationships | |
4737 self.assertEqual(oContourSequenceCount, aContourSequenceCount) | |
4738 self.assertEqual(aCtFrameOfReferenceUID, aRtFrameOfReferenceUID) | |
4739 # fails !!! self.assertEqual(aStudyUID, aRtTags['ReferencedFrameOfReferenceSequence'][0]['RTReferencedStudySequence'][0]['ReferencedSOPInstanceUID']) | |
4740 # fails !!! 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']) | |
4742 self.assertEqual(aCtInstanceUID, aRtTags['ROIContourSequence'][0]['ContourSequence'][aContourSequenceCount-1]['ContourImageSequence'][0]['ReferencedSOPInstanceUID']) | |
4743 | |
4744 | |
4745 | |
4746 | |
4672 @unittest.skip('Not fixed yet in Orthanc') | 4747 @unittest.skip('Not fixed yet in Orthanc') |
4673 def test_bitbucket_issue_140(self): | 4748 def test_bitbucket_issue_140(self): |
4674 source = UploadInstance(_REMOTE, 'Issue140.dcm') ['ID'] | 4749 source = UploadInstance(_REMOTE, 'Issue140.dcm') ['ID'] |
4675 series = DoGet(_REMOTE, '/instances/%s' % source) ['ParentSeries'] | 4750 series = DoGet(_REMOTE, '/instances/%s' % source) ['ParentSeries'] |
4676 | 4751 |