comparison Tests/Tests.py @ 18:16c37933384d

test
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 19 Jun 2015 09:11:29 +0200
parents 7c8500991a12
children 2a29bcff60a7
comparison
equal deleted inserted replaced
17:7c8500991a12 18:16c37933384d
1719 def test_storescu_rf(self): 1719 def test_storescu_rf(self):
1720 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID'] 1720 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID']
1721 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) 1721 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
1722 j = DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain') 1722 j = DoPost(_REMOTE, '/modalities/orthanctest/store', str(i), 'text/plain')
1723 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) 1723 self.assertEqual(1, len(DoGet(_LOCAL, '/instances')))
1724
1725
1726 def test_anonymize_instance(self):
1727 def AnonymizeAndUpload(instanceId, parameters):
1728 return DoPost(_REMOTE, '/instances', DoPost(_REMOTE, '/instances/%s/anonymize' % instanceId, parameters,
1729 'application/json'), 'application/dicom')['ID']
1730
1731 def ModifyAndUpload(instanceId, parameters):
1732 return DoPost(_REMOTE, '/instances', DoPost(_REMOTE, '/instances/%s/modify' % instanceId, parameters,
1733 'application/json'), 'application/dicom')['ID']
1734
1735 a = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID']
1736 s1 = DoGet(_REMOTE, '/instances/%s/content/PatientName' % a)
1737 s2 = DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % a) # Some private tag
1738 s3 = DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % a)
1739 s4 = DoGet(_REMOTE, '/instances/%s/content/SeriesDescription' % a)
1740 s5 = DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % a)
1741
1742 b = AnonymizeAndUpload(a, '{}')
1743 self.assertNotEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
1744 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
1745
1746 # Keep private tag (only OK since Orthanc 0.8.0)
1747 b = AnonymizeAndUpload(a, '{"Keep":["00e1-10c2"]}')
1748 self.assertNotEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
1749 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
1750
1751 b = AnonymizeAndUpload(a, '{"Keep":["00e1,10c2","PatientName"]}')
1752 self.assertEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
1753 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
1754
1755 b = AnonymizeAndUpload(a, '{"Keep":["PatientName"],"Replace":{"00e1,10c2":"Hello"}}')
1756 self.assertEqual(s1, DoGet(_REMOTE, '/instances/%s/content/PatientName' % b))
1757 self.assertTrue(DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b).startswith('Hello'))
1758
1759 # Examples from the Wiki
1760 b = AnonymizeAndUpload(a, '{"Replace":{"PatientName":"hello","0010-0020":"world"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": null}')
1761 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
1762 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
1763 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
1764 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b))
1765 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b))
1766 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
1767 DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % a)
1768 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b))
1769
1770 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"},"Remove":["InstitutionName"],"RemovePrivateTags": null}')
1771 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
1772 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
1773 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
1774 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008,103e' % b))
1775 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/00e1-10c2' % b))
1776 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b))
1777
1778 b = ModifyAndUpload(a, '{"Replace":{"PatientName":"hello","PatientID":"world"}}')
1779 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % b).strip())
1780 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/PatientID' % b).strip())
1781 self.assertEqual(s2, DoGet(_REMOTE, '/instances/%s/content/00e1,10c2' % b))
1782 self.assertEqual(s3, DoGet(_REMOTE, '/instances/%s/content/0008,1030' % b))
1783 self.assertEqual(s4, DoGet(_REMOTE, '/instances/%s/content/0008-103E' % b))
1784 self.assertEqual(s5, DoGet(_REMOTE, '/instances/%s/content/InstitutionName' % b))
1785
1786
1787 # Test modify non-existing
1788 i = DoPost(_REMOTE, '/tools/create-dicom',
1789 json.dumps({
1790 'PatientName' : 'Jodogne',
1791 'Modality' : 'CT',
1792 }))['ID']
1793
1794 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i).strip())
1795 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % i))
1796 self.assertEqual('CT', DoGet(_REMOTE, '/instances/%s/content/Modality' % i).strip())
1797
1798 b = ModifyAndUpload(i, '{"Replace":{"StudyDescription":"hello","Modality":"world"}}')
1799 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % b).strip())
1800 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % b).strip())
1801 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/Modality' % b).strip())
1802