Mercurial > hg > orthanc-tests
diff Tests/Tests.py @ 48:e4352463ff74
test_patient_ids_collision
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 06 Oct 2015 15:56:32 +0200 |
parents | f610491f74c3 |
children | e7f9b8199545 |
line wrap: on
line diff
--- a/Tests/Tests.py Wed Sep 23 12:43:20 2015 +0200 +++ b/Tests/Tests.py Tue Oct 06 15:56:32 2015 +0200 @@ -2242,3 +2242,45 @@ self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i['ID']).strip()) self.assertEqual(encoded, DoGet(_REMOTE, '/instances/%s/content/8899-8899' % i['ID'])[0:-1]) + + + def test_patient_ids_collision(self): + # Upload 3 instances from 3 different studies, but with the + # same PatientID + for i in range(3): + UploadInstance(_REMOTE, 'PatientIdsCollision/Image%d.dcm' % (i + 1)) + + a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', + 'Query' : { 'PatientName' : '*' }}) + self.assertEqual(1, len(a)) + self.assertEqual('COMMON', DoGet(_REMOTE, '/patients/%s' % a[0]) ['MainDicomTags']['PatientID']) + + a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', + 'CaseSensitive' : True, + 'Query' : { 'PatientName' : 'FOO\\HELLO' }}) + self.assertEqual(2, len(a)) + + a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', + 'CaseSensitive' : False, + 'Query' : { 'PatientName' : 'Foo' }}) + self.assertEqual(1, len(a)) + self.assertEqual('FOO^SERIES', DoGet(_REMOTE, '/series/%s/study' % a[0]) ['MainDicomTags']['StudyDescription']) + self.assertEqual('FOO', DoGet(_REMOTE, '/series/%s/study' % a[0]) ['PatientMainDicomTags']['PatientName']) + self.assertEqual('COMMON', DoGet(_REMOTE, '/series/%s/study' % a[0]) ['PatientMainDicomTags']['PatientID']) + + a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', + 'Query' : { 'PatientName' : '*' }}) + self.assertEqual(3, len(a)) + d = map(lambda x: DoGet(_REMOTE, '/studies/%s' % x) ['MainDicomTags']['StudyDescription'], a) + self.assertTrue('FOO^SERIES' in d) + self.assertTrue('HELLO^SERIES' in d) + self.assertTrue('WORLD^SERIES' in d) + + d = map(lambda x: DoGet(_REMOTE, '/studies/%s' % x) ['PatientMainDicomTags']['PatientID'], a) + self.assertEqual(1, len(set(d))) + self.assertEqual('COMMON', d[0]) + + for i in a: + d = DoGet(_REMOTE, '/studies/%s' % i) ['MainDicomTags']['StudyDescription'] + p = DoGet(_REMOTE, '/studies/%s' % i) ['PatientMainDicomTags']['PatientName'] + self.assertEqual('%s^SERIES' % p, d)