Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 219:00e5aeea33dd
test_bitbucket_issue_131
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 24 Feb 2019 08:50:02 +0100 |
parents | 70fba41776be |
children | 7b1c976caa9b |
comparison
equal
deleted
inserted
replaced
218:70fba41776be | 219:00e5aeea33dd |
---|---|
4518 | 4518 |
4519 # ...but only 1 value for the "Rows" tag | 4519 # ...but only 1 value for the "Rows" tag |
4520 rows = re.findall('\(0028,0010\) US ([0-9]+)', i) | 4520 rows = re.findall('\(0028,0010\) US ([0-9]+)', i) |
4521 self.assertEqual(1, len(rows)) | 4521 self.assertEqual(1, len(rows)) |
4522 self.assertEqual('512', rows[0]) | 4522 self.assertEqual('512', rows[0]) |
4523 | |
4524 | |
4525 | |
4526 def test_bitbucket_issue_131(self): | |
4527 # "Orthanc PACS silently fails to C-MOVE due to duplicate | |
4528 # StudyInstanceUID in it's database." | |
4529 # https://bitbucket.org/sjodogne/orthanc/issues/131/orthanc-pacs-silently-fails-to-c-move-due | |
4530 | |
4531 # Insert 2 instances, with the same StudyInstanceUID, but with | |
4532 # different patient IDs. Orthanc will create 2 distincts | |
4533 # patients, and the hierarchy of resources above the two | |
4534 # instances will be fully disjoint. | |
4535 UploadInstance(_REMOTE, 'PatientIdsCollision/Issue131-a.dcm') | |
4536 UploadInstance(_REMOTE, 'PatientIdsCollision/Issue131-b.dcm') | |
4537 | |
4538 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
4539 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) | |
4540 | |
4541 a = DoPost(_REMOTE, '/modalities/self/query', { | |
4542 'Level' : 'Study', | |
4543 'Query' : {"PatientID": "A" }})['ID'] | |
4544 | |
4545 # 1 study is matched | |
4546 self.assertEqual(1, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) | |
4547 | |
4548 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
4549 self.assertTrue(MonitorJob(_REMOTE, lambda: DoPost | |
4550 (_REMOTE, '/queries/%s/retrieve' % a, | |
4551 '{"TargetAet":"ORTHANCTEST","Synchronous":false}'))) | |
4552 | |
4553 # The two studies are matched, as we made the request at the | |
4554 # Study level, thus the shared StudyInstanceUID is used as the key | |
4555 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) | |
4556 | |
4557 | |
4558 # Match the 2 studies | |
4559 a = DoPost(_REMOTE, '/modalities/self/query', { | |
4560 'Level' : 'Study', | |
4561 'Query' : {"StudyInstanceUID": "2.25.123" }})['ID'] | |
4562 self.assertEqual(2, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) | |
4563 DropOrthanc(_LOCAL) | |
4564 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
4565 self.assertTrue(MonitorJob(_REMOTE, lambda: DoPost | |
4566 (_REMOTE, '/queries/%s/retrieve' % a, | |
4567 '{"TargetAet":"ORTHANCTEST","Synchronous":false}'))) | |
4568 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) | |
4569 | |
4570 | |
4571 # Same test, at the patient level => only 1 instance is transfered | |
4572 a = DoPost(_REMOTE, '/modalities/self/query', { | |
4573 'Level' : 'Patient', | |
4574 'Query' : {"PatientID": "A" }})['ID'] | |
4575 self.assertEqual(1, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) | |
4576 DropOrthanc(_LOCAL) | |
4577 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
4578 self.assertTrue(MonitorJob(_REMOTE, lambda: DoPost | |
4579 (_REMOTE, '/queries/%s/retrieve' % a, | |
4580 '{"TargetAet":"ORTHANCTEST","Synchronous":false}'))) | |
4581 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
4582 | |
4583 | |
4584 # Same test, at the series level => only 1 instance is transfered | |
4585 a = DoPost(_REMOTE, '/modalities/self/query', { | |
4586 'Level' : 'Series', | |
4587 'Query' : {"PatientID": "A" }})['ID'] | |
4588 self.assertEqual(1, len(DoGet(_REMOTE, '/queries/%s/answers' % a))) | |
4589 DropOrthanc(_LOCAL) | |
4590 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) | |
4591 self.assertTrue(MonitorJob(_REMOTE, lambda: DoPost | |
4592 (_REMOTE, '/queries/%s/retrieve' % a, | |
4593 '{"TargetAet":"ORTHANCTEST","Synchronous":false}'))) | |
4594 self.assertEqual(1, len(DoGet(_LOCAL, '/instances'))) | |
4595 |