# HG changeset patch # User Sebastien Jodogne # Date 1622747119 -7200 # Node ID 6bbc89c2c2d12ab632a38ab4d175fe97774dc64a # Parent 931be0125954ca405f35de21172783fa27433f13 test_issue_146 diff -r 931be0125954 -r 6bbc89c2c2d1 Database/Issue146.dcm Binary file Database/Issue146.dcm has changed diff -r 931be0125954 -r 6bbc89c2c2d1 Database/Issue146.dump --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Database/Issue146.dump Thu Jun 03 21:05:19 2021 +0200 @@ -0,0 +1,8 @@ +# dump2dcm +Ug --write-xfer-little Issue146.dump Issue146.dcm + +(0010,0020) LO HELLO^A # Patient ID +(0010,0010) PN HELLO^B # Patient Name +(0008,0016) UI =MRImageStorage # SOPClassUID +(0008,0020) DA 20200101 # Study Date, anonymized between 2008 and 2017c +(0050,0020) LO HELLO^C # Device Description, anonymized between 2017c and 2019c +(3006,0002) SH HELLO^D # StructureSetLabel, anonymized between 2019c and 2021b diff -r 931be0125954 -r 6bbc89c2c2d1 Tests/Tests.py --- a/Tests/Tests.py Thu Jun 03 17:03:06 2021 +0200 +++ b/Tests/Tests.py Thu Jun 03 21:05:19 2021 +0200 @@ -7024,3 +7024,50 @@ tags = DoGet(_REMOTE, '/instances/%s/tags?short' % instances[0]['ID']) self.assertTrue('0020,9165' in tags) self.assertEqual('0020,9056', tags['0020,9165']) + + + def test_issue_146(self): + # "Update Anonyization to 2019c" + # https://bugs.orthanc-server.com/show_bug.cgi?id=146 + + def GetTags(study, params): + a = DoPost(_REMOTE, '/studies/%s/anonymize' % study, params) ['ID'] + b = DoGet(_REMOTE, '/studies/%s/instances' % a) + self.assertEqual(1, len(b)) + return DoGet(_REMOTE, '/instances/%s/tags?short' % b[0]['ID']) + + + UploadInstance(_REMOTE, 'Issue146.dcm') + study = '7c950970-321e4ab0-28446c5f-f94850f1-5c44634b' + + self.assertRaises(Exception, lambda: GetTags(study, { 'DicomVersion' : 'nope' })) + + tags2008 = GetTags(study, { 'DicomVersion' : '2008' }) + tags2017c = GetTags(study, { 'DicomVersion' : '2017c' }) + tags2021b = GetTags(study, { 'DicomVersion' : '2021b' }) + tagsDefault = GetTags(study, {}) + + self.assertEqual('Orthanc mainline - PS 3.15-2008 Table E.1-1', tags2008['0012,0063']) + self.assertEqual('Orthanc mainline - PS 3.15-2017c Table E.1-1 Basic Profile', tags2017c['0012,0063']) + self.assertEqual('Orthanc mainline - PS 3.15-2021b Table E.1-1 Basic Profile', tags2021b['0012,0063']) + self.assertEqual(tagsDefault['0012,0063'], tags2021b['0012,0063']) + + for t in [ tags2008, tags2017c, tags2021b, tagsDefault ]: + self.assertTrue(t['0010,0010'].startswith('Anonymized')) + self.assertEqual('1.2.840.10008.5.1.4.1.1.4', t['0008,0016']) + self.assertEqual(36, len(t['0010,0020'])) # Length of a UUID + self.assertEqual('YES', t['0012,0062']) + + for t in [ tags2008 ]: + self.assertEqual('20200101', t['0008,0020']) + + for t in [ tags2017c, tags2021b, tagsDefault ]: + self.assertEqual('', t['0008,0020']) # Study Date, anonymized between 2008 and 2017c + + for t in [ tags2008, tags2017c ]: + self.assertEqual('HELLO^C', t['0050,0020']) + self.assertEqual('HELLO^D', t['3006,0002']) + + for t in [ tags2021b, tagsDefault ]: + self.assertFalse('0050,0020' in t) # Device Description, anonymized between 2017c and 2019c + self.assertEqual('', t['3006,0002']) # StructureSetLabel, anonymized between 2019c and 2021b