comparison Tests/Tests.py @ 482:535e651e70a2

added test for asynchronous cmove
author Alain Mazy <am@osimis.io>
date Tue, 21 Jun 2022 11:02:45 +0200
parents 4ee85b016a40
children 6144ef431512
comparison
equal deleted inserted replaced
481:e0b502b31a8a 482:535e651e70a2
3479 DoPost(_REMOTE, '/modalities/orthanctest/store', p) 3479 DoPost(_REMOTE, '/modalities/orthanctest/store', p)
3480 DoDelete(_REMOTE, '/patients/%s' % p) 3480 DoDelete(_REMOTE, '/patients/%s' % p)
3481 3481
3482 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) 3482 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
3483 3483
3484 # Upload instance Brainix/Flair/IM-0001-0001.dcm 3484 # Move instance Brainix/Flair/IM-0001-0001.dcm
3485 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Instance', 3485 DoPost(_REMOTE, '/modalities/orthanctest/move', {
3486 'Resources' : [ 3486 'Level' : 'Instance',
3487 { 3487 'Resources' : [
3488 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', 3488 {
3489 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', 3489 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775',
3490 'SOPInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549', 3490 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497',
3491 } 3491 'SOPInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549',
3492 ]}) 3492 }
3493 3493 ]})
3494 # Upload series Brainix/Flair/* 3494
3495 # Move series Brainix/Flair/*
3495 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) 3496 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
3496 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) 3497 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
3497 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) 3498 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
3498 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) 3499 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
3500
3501 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1):
3502 # Reset and test asynchronous C-Move at instance level
3503 for p in DoGet(_REMOTE, '/patients'):
3504 DoDelete(_REMOTE, '/patients/%s' % p)
3505
3506 DoPost(_REMOTE, '/modalities/orthanctest/move', {
3507 'Level' : 'Instance',
3508 'Resources' : [
3509 {
3510 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775',
3511 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497',
3512 'SOPInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549',
3513 }
3514 ],
3515 'Asynchronous': True
3516 })
3517
3518 job = MonitorJob2(_REMOTE, lambda: DoPost
3519 (_REMOTE, '/modalities/orthanctest/move', {
3520 'Level' : 'Instance',
3521 'Resources' : [
3522 {
3523 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775',
3524 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497',
3525 'SOPInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549',
3526 }
3527 ],
3528 'Asynchronous': True
3529 }))
3530
3531 self.assertNotEqual(None, job)
3532
3533 # check the job was successfull
3534 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
3535 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
3536 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
3537 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
3538
3539 # check the job content
3540 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content']
3541 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', jobContent['Query'][0]['0020,000d'])
3542 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', jobContent['Query'][0]['0020,000e'])
3543 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314079549', jobContent['Query'][0]['0008,0018'])
3544
3545 # Reset and test synchronous C-Move at series level
3546 for p in DoGet(_REMOTE, '/patients'):
3547 DoDelete(_REMOTE, '/patients/%s' % p)
3499 3548
3500 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Series', 3549 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Series',
3501 'Resources' : [ 3550 'Resources' : [
3502 { 3551 {
3503 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', 3552 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775',
3507 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) 3556 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
3508 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) 3557 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
3509 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) 3558 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
3510 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) 3559 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
3511 3560
3512 # Upload series Brainix/Epi/* 3561 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1):
3562 # Reset and test asynchronous C-Move at series level with additional PatientID filter
3563 for p in DoGet(_REMOTE, '/patients'):
3564 DoDelete(_REMOTE, '/patients/%s' % p)
3565
3566 job = MonitorJob2(_REMOTE, lambda: DoPost
3567 (_REMOTE, '/modalities/orthanctest/move', {
3568 'Level' : 'Series',
3569 'Resources' : [
3570 {
3571 'PatientID' : '5Yp0E',
3572 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775',
3573 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497',
3574 }
3575 ],
3576 'Asynchronous': True
3577 }))
3578
3579 self.assertNotEqual(None, job)
3580
3581 # check the job was successfull
3582 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
3583 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
3584 self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
3585 self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
3586
3587 # check the job content
3588 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content']
3589 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', jobContent['Query'][0]['0020,000d'])
3590 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', jobContent['Query'][0]['0020,000e'])
3591 self.assertEqual('5Yp0E', jobContent['Query'][0]['0010,0020'])
3592
3593 # Move series Brainix/Epi/*
3513 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Series', 3594 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Series',
3514 'Resources' : [ 3595 'Resources' : [
3515 { 3596 {
3516 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', 3597 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775',
3517 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314125550', 3598 'SeriesInstanceUID' : '1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114314125550',
3520 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) 3601 self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
3521 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) 3602 self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
3522 self.assertEqual(2, len(DoGet(_REMOTE, '/series'))) 3603 self.assertEqual(2, len(DoGet(_REMOTE, '/series')))
3523 self.assertEqual(3, len(DoGet(_REMOTE, '/instances'))) 3604 self.assertEqual(3, len(DoGet(_REMOTE, '/instances')))
3524 3605
3525 # Upload study Knee/* 3606 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1):
3526 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Study', 3607 # Move study Knee asynchronously
3527 'Resources' : [ 3608 job = MonitorJob2(_REMOTE, lambda: DoPost
3528 { 3609 (_REMOTE, '/modalities/orthanctest/move', {
3529 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881', 3610 'Level' : 'Study',
3530 } 3611 'Resources' : [
3531 ]}) 3612 {
3532 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) 3613 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881'
3533 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) 3614 }
3534 self.assertEqual(3, len(DoGet(_REMOTE, '/series'))) 3615 ],
3535 self.assertEqual(4, len(DoGet(_REMOTE, '/instances'))) 3616 'Asynchronous': True
3617 }))
3618
3619 self.assertNotEqual(None, job)
3620
3621 # check the job was successfull
3622 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
3623 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
3624 self.assertEqual(3, len(DoGet(_REMOTE, '/series')))
3625 self.assertEqual(4, len(DoGet(_REMOTE, '/instances')))
3626
3627 # check the job content
3628 jobContent = DoGet(_REMOTE, '/jobs/%s' % job)['Content']
3629 self.assertEqual('2.16.840.1.113669.632.20.121711.10000160881', jobContent['Query'][0]['0020,000d'])
3536 3630
3537 # Reset 3631 # Reset
3538 for p in DoGet(_REMOTE, '/patients'): 3632 for p in DoGet(_REMOTE, '/patients'):
3539 DoDelete(_REMOTE, '/patients/%s' % p) 3633 DoDelete(_REMOTE, '/patients/%s' % p)
3540 3634
3541 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) 3635 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
3542 3636
3543 3637
3544 # Upload all at once 3638 if IsOrthancVersionAbove(_REMOTE, 1, 11, 1):
3545 DoPost(_REMOTE, '/modalities/orthanctest/move', { 'Level' : 'Study', 3639 # Move all at once asynchronously at PatientLevel
3546 'Resources' : [ 3640 job = MonitorJob2(_REMOTE, lambda: DoPost(_REMOTE, '/modalities/orthanctest/move',
3547 { 3641 {
3548 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881', 3642 'Level' : 'Patient',
3643 'Resources' : [
3644 {
3645 'PatientID' : '5Yp0E',
3549 }, 3646 },
3550 { 3647 {
3551 'StudyInstanceUID' : '2.16.840.1.113669.632.20.1211.10000357775', 3648 'PatientID': '887',
3649 'PatientName' : 'KNEE',
3552 } 3650 }
3553 ]}) 3651 ],
3554 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) 3652 'Synchronous': False
3555 self.assertEqual(2, len(DoGet(_REMOTE, '/studies'))) 3653 }))
3556 self.assertEqual(3, len(DoGet(_REMOTE, '/series'))) 3654
3557 self.assertEqual(4, len(DoGet(_REMOTE, '/instances'))) 3655 self.assertEqual(2, len(DoGet(_REMOTE, '/patients')))
3656 self.assertEqual(2, len(DoGet(_REMOTE, '/studies')))
3657 self.assertEqual(3, len(DoGet(_REMOTE, '/series')))
3658 self.assertEqual(4, len(DoGet(_REMOTE, '/instances')))
3558 3659
3559 3660
3560 3661
3561 def test_reconstruct_json(self): 3662 def test_reconstruct_json(self):
3562 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) 3663 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))