comparison Tests/Tests.py @ 548:3933237d1958

more tools/find tests
author Alain Mazy <am@osimis.io>
date Thu, 22 Jun 2023 19:56:47 +0200
parents 7de5fd295025
children ede184638961 739cad709a8c
comparison
equal deleted inserted replaced
547:7de5fd295025 548:3933237d1958
1945 'Query' : { 'StationName' : 'SMR4-MP3' }}) 1945 'Query' : { 'StationName' : 'SMR4-MP3' }})
1946 self.assertEqual(1, len(a)) 1946 self.assertEqual(1, len(a))
1947 1947
1948 1948
1949 def test_rest_find(self): 1949 def test_rest_find(self):
1950 # Upload 8 instances 1950 # Upload 12 instances
1951 for i in range(2): 1951 for i in range(3):
1952 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) 1952 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
1953 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) 1953 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1))
1954 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1)) 1954 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-000%d.dcm' % (i + 1))
1955 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1)) 1955 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-000%d.dcm' % (i + 1))
1956
1957
1958 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
1959 'CaseSensitive' : True,
1960 'Query' : {
1961 'PatientName' : '*NE*',
1962 'StudyDate': '20080819'
1963 }})
1964 self.assertEqual(1, len(a))
1965
1966 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
1967 'CaseSensitive' : True,
1968 'Query' : {
1969 'PatientName' : '*NE*',
1970 'PatientSex': '0000'
1971 }})
1972 self.assertEqual(1, len(a))
1973
1974 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
1975 'CaseSensitive' : True,
1976 'Query' : {
1977 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881'
1978 }})
1979 self.assertEqual(2, len(a))
1980
1981 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
1982 'CaseSensitive' : True,
1983 'Query' : {
1984 'StudyInstanceUID' : '2.16.840.1.113669.632.20.121711.10000160881',
1985 'SeriesInstanceUID': '1.3.46.670589.11.17521.5.0.3124.2008081908564160709'
1986 }})
1987 self.assertEqual(3, len(a))
1988
1989 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
1990 'CaseSensitive' : True,
1991 'Query' : {
1992 'StudyDate' : '20080818-20080820',
1993 'Modality': 'MR'
1994 }})
1995 self.assertEqual(2, len(a))
1996
1997 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
1998 'CaseSensitive' : True,
1999 'Query' : {
2000 'StudyDate' : '20080818-',
2001 'ModalitiesInStudy': 'MR'
2002 }})
2003 self.assertEqual(1, len(a))
2004
1956 2005
1957 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', 2006 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
1958 'CaseSensitive' : False, 2007 'CaseSensitive' : False,
1959 'Query' : { 'PatientName' : 'BRAINIX' }}) 2008 'Query' : { 'PatientName' : 'BRAINIX' }})
1960 self.assertEqual(1, len(a)) 2009 self.assertEqual(1, len(a))
1997 self.assertEqual(2, len(a)) 2046 self.assertEqual(2, len(a))
1998 2047
1999 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', 2048 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance',
2000 'CaseSensitive' : True, 2049 'CaseSensitive' : True,
2001 'Query' : { 'PatientName' : '*NE*' }}) 2050 'Query' : { 'PatientName' : '*NE*' }})
2002 self.assertEqual(4, len(a)) 2051 self.assertEqual(6, len(a))
2003 2052
2004 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', 'Query' : { }}) 2053 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', 'Query' : { }})
2005 self.assertEqual(2, len(a)) 2054 self.assertEqual(2, len(a))
2006 2055
2007 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', 'Query' : { }}) 2056 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', 'Query' : { }})
2009 2058
2010 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', 'Query' : { }}) 2059 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series', 'Query' : { }})
2011 self.assertEqual(4, len(a)) 2060 self.assertEqual(4, len(a))
2012 2061
2013 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', 'Query' : { }}) 2062 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', 'Query' : { }})
2014 self.assertEqual(8, len(a)) 2063 self.assertEqual(12, len(a))
2015 2064
2016 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study', 2065 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
2017 'Expand' : True, 2066 'Expand' : True,
2018 'Query' : { 'StudyDate' : '20061201-20061201' }}) 2067 'Query' : { 'StudyDate' : '20061201-20061201' }})
2019 self.assertEqual(1, len(a)) 2068 self.assertEqual(1, len(a))
9470 9519
9471 else: 9520 else:
9472 print("Your database backend doesn't support labels") 9521 print("Your database backend doesn't support labels")
9473 9522
9474 def test_find_labels(self): 9523 def test_find_labels(self):
9475 def Execute(labels, constraint, query = { }): 9524 def Execute(labels, constraint, query = { }, level='Instance'):
9476 return DoPost(_REMOTE, '/tools/find', { 'Level' : 'Instance', 9525 return DoPost(_REMOTE, '/tools/find', { 'Level' : level,
9477 'Query' : query, 9526 'Query' : query,
9478 'Labels' : labels, 9527 'Labels' : labels,
9479 'LabelsConstraint' : constraint, }) 9528 'LabelsConstraint' : constraint, })
9480 9529
9481 if (IsOrthancVersionAbove(_REMOTE, 1, 12, 0) and 9530 if (IsOrthancVersionAbove(_REMOTE, 1, 12, 0) and
9482 DoGet(_REMOTE, '/system') ['HasLabels']): 9531 DoGet(_REMOTE, '/system') ['HasLabels']):
9483 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] 9532 u = UploadInstance(_REMOTE, 'DummyCT.dcm')
9533 studyId = u["ParentStudy"]
9534 seriesId = u["ParentSeries"]
9535 patientId = u["ParentPatient"]
9536 u = u["ID"]
9537 self.assertEqual(1, len(Execute([ 'a' ], 'None')))
9484 9538
9485 # The instance has no label 9539 # The instance has no label
9486 self.assertEqual(1, len(Execute([], 'All'))) 9540 self.assertEqual(1, len(Execute([], 'All')))
9487 self.assertEqual(1, len(Execute([], 'Any'))) 9541 self.assertEqual(1, len(Execute([], 'Any')))
9488 self.assertEqual(1, len(Execute([], 'None'))) 9542 self.assertEqual(1, len(Execute([], 'None')))
9519 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : '' }))) 9573 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : '' })))
9520 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : 'nope' }))) 9574 self.assertEqual(0, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : 'nope' })))
9521 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : '' }))) 9575 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : '' })))
9522 9576
9523 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'PatientID' : 'ozp00SjY2xG' }))) 9577 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'PatientID' : 'ozp00SjY2xG' })))
9524 return
9525 9578
9526 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' }))) 9579 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390' })))
9527 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' }))) 9580 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394' })))
9528 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' }))) 9581 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 'SOPInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' })))
9529 self.assertEqual(1, len(Execute([ 'a' ], 'All', { 9582 self.assertEqual(1, len(Execute([ 'a' ], 'All', {
9601 self.assertEqual(0, len(Execute([ 'b' ], 'Any'))) 9654 self.assertEqual(0, len(Execute([ 'b' ], 'Any')))
9602 self.assertEqual(1, len(Execute([ 'b' ], 'None'))) 9655 self.assertEqual(1, len(Execute([ 'b' ], 'None')))
9603 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'All'))) 9656 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'All')))
9604 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'Any'))) 9657 self.assertEqual(0, len(Execute([ 'a', 'b' ], 'Any')))
9605 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'None'))) 9658 self.assertEqual(1, len(Execute([ 'a', 'b' ], 'None')))
9606 9659
9660
9661 # tests at series levels (make sure to test only with series levels and with multiple levels)
9662 DoPut(_REMOTE, '/series/%s/labels/b' % seriesId)
9663 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
9664 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
9665 }, 'Series')))
9666 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
9667 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
9668 }, 'Series')))
9669 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
9670 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
9671 }, 'Series')))
9672 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
9673 'SeriesInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.394'
9674 }, 'Series')))
9675 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
9676 'PatientID' : 'ozp00SjY2xG',
9677 }, 'Series')))
9678 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
9679 'PatientID' : 'ozp00SjY2xG',
9680 }, 'Series')))
9681 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
9682 'PatientID' : 'ozp00SjY2xG',
9683 }, 'Series')))
9684 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
9685 'PatientID' : 'ozp00SjY2xG',
9686 }, 'Series')))
9687
9688 # tests at study levels (make sure to test only with study levels and with multiple levels)
9689 DoPut(_REMOTE, '/studies/%s/labels/b' % studyId)
9690 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
9691 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
9692 }, 'Study')))
9693 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
9694 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
9695 }, 'Study')))
9696 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
9697 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
9698 }, 'Study')))
9699 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
9700 'StudyInstanceUID' : '1.2.840.113619.2.176.2025.1499492.7391.1171285944.390'
9701 }, 'Study')))
9702 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
9703 'PatientID' : 'ozp00SjY2xG',
9704 }, 'Study')))
9705 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
9706 'PatientID' : 'ozp00SjY2xG',
9707 }, 'Study')))
9708 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
9709 'PatientID' : 'ozp00SjY2xG',
9710 }, 'Study')))
9711 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
9712 'PatientID' : 'ozp00SjY2xG',
9713 }, 'Study')))
9714
9715 # tests at patient levels
9716 DoPut(_REMOTE, '/patients/%s/labels/b' % patientId)
9717 self.assertEqual(1, len(Execute([ 'a' ], 'None', {
9718 'PatientID' : 'ozp00SjY2xG',
9719 }, 'Patient')))
9720 self.assertEqual(0, len(Execute([ 'a' ], 'Any', {
9721 'PatientID' : 'ozp00SjY2xG',
9722 }, 'Patient')))
9723 self.assertEqual(1, len(Execute([ 'b' ], 'Any', {
9724 'PatientID' : 'ozp00SjY2xG',
9725 }, 'Patient')))
9726 self.assertEqual(1, len(Execute([ 'b' ], 'All', {
9727 'PatientID' : 'ozp00SjY2xG',
9728 }, 'Patient')))
9729
9607 else: 9730 else:
9608 print("Your database backend doesn't support labels") 9731 print("Your database backend doesn't support labels")
9609 9732
9610 9733
9611 def test_numeric_metadata(self): 9734 def test_numeric_metadata(self):