comparison Tests/Tests.py @ 452:45dd181b0f17 more-tags

added test for requestedTags in tools/find + list-resources
author Alain Mazy <am@osimis.io>
date Mon, 14 Mar 2022 13:13:58 +0100
parents 33051f9ac850
children 46ae8fb09254
comparison
equal deleted inserted replaced
451:33051f9ac850 452:45dd181b0f17
8437 self.assertEqual(1, len(a)) 8437 self.assertEqual(1, len(a))
8438 8438
8439 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient', 8439 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
8440 'Query' : { 'PatientName' : 'MyName2*' }}) 8440 'Query' : { 'PatientName' : 'MyName2*' }})
8441 self.assertEqual(1, len(a)) 8441 self.assertEqual(1, len(a))
8442
8443
8444 def test_rest_find_requested_tags(self):
8445 # Upload instances
8446 for i in range(2):
8447 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
8448
8449 # Patient level
8450 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Patient',
8451 'CaseSensitive' : False,
8452 'Query' : { 'PatientName' : 'BRAINIX' },
8453 'RequestedTags' : [ 'PatientName', 'PatientID', 'PatientSex', 'PatientBirthDate' ],
8454 'Expand': True
8455 })
8456 self.assertEqual(1, len(a))
8457 self.assertIn('PatientName', a[0]['RequestedTags'])
8458 self.assertIn('PatientID', a[0]['RequestedTags'])
8459 self.assertIn('PatientSex', a[0]['RequestedTags'])
8460 self.assertIn('PatientBirthDate', a[0]['RequestedTags'])
8461
8462 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
8463 self.assertEqual('5Yp0E', a[0]['RequestedTags']['PatientID'])
8464 self.assertEqual('0000', a[0]['RequestedTags']['PatientSex'])
8465 self.assertEqual('19490301', a[0]['RequestedTags']['PatientBirthDate'])
8466
8467 # Study level, request patient tags too
8468 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
8469 'CaseSensitive' : False,
8470 'Query' : { 'PatientName' : 'BRAINIX' },
8471 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID'],
8472 'Expand': True
8473 })
8474 self.assertEqual(1, len(a))
8475 self.assertIn('PatientName', a[0]['RequestedTags'])
8476 self.assertIn('StudyInstanceUID', a[0]['RequestedTags'])
8477
8478 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
8479 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
8480
8481
8482 # Series level, request patient and study tags too
8483 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
8484 'CaseSensitive' : False,
8485 'Query' : { 'PatientName' : 'BRAINIX' },
8486 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'SeriesInstanceUID'],
8487 'Expand': True
8488 })
8489 self.assertEqual(1, len(a))
8490 self.assertIn('PatientName', a[0]['RequestedTags'])
8491 self.assertIn('StudyInstanceUID', a[0]['RequestedTags'])
8492 self.assertIn('SeriesInstanceUID', a[0]['RequestedTags'])
8493
8494 pprint.pprint(a[0])
8495 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
8496 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
8497 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', a[0]['RequestedTags']['SeriesInstanceUID'])
8498
8499
8500 # Instance level, request patient, study and series tags too, include tags that are not part of the main dicom tags
8501 a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Series',
8502 'CaseSensitive' : False,
8503 'Query' : { 'PatientName' : 'BRAINIX' },
8504 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'SeriesInstanceUID', 'SOPInstanceUID', 'PhotometricInterpretation'],
8505 'Expand': True
8506 })
8507 self.assertEqual(1, len(a))
8508 self.assertIn('PatientName', a[0]['RequestedTags'])
8509 self.assertIn('StudyInstanceUID', a[0]['RequestedTags'])
8510 self.assertIn('SeriesInstanceUID', a[0]['RequestedTags'])
8511 self.assertIn('PhotometricInterpretation', a[0]['RequestedTags'])
8512
8513 self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
8514 self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
8515 self.assertEqual('1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114285654497', a[0]['RequestedTags']['SeriesInstanceUID'])
8516 self.assertEqual('MONOCHROME2', a[0]['RequestedTags']['PhotometricInterpretation'])
8517
8518
8519 # def test_rest_find_requested_tags_modalities_in_study(self):
8520 # # Upload instances
8521 # for i in range(2):
8522 # UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1))
8523
8524 # # Study level, request patient tags too
8525 # a = DoPost(_REMOTE, '/tools/find', { 'Level' : 'Study',
8526 # 'CaseSensitive' : False,
8527 # 'Query' : { 'PatientName' : 'BRAINIX' },
8528 # 'RequestedTags' : [ 'PatientName', 'StudyInstanceUID', 'ModalitiesInStudy'],
8529 # 'Expand': True
8530 # })
8531 # self.assertEqual(1, len(a))
8532 # self.assertIn('PatientName', a[0]['RequestedTags'])
8533 # self.assertIn('StudyInstanceUID', a[0]['RequestedTags'])
8534 # self.assertIn('ModalitiesInStudy', a[0]['RequestedTags'])
8535
8536 # self.assertEqual('BRAINIX', a[0]['RequestedTags']['PatientName'])
8537 # self.assertEqual('2.16.840.1.113669.632.20.1211.10000357775', a[0]['RequestedTags']['StudyInstanceUID'])
8538
8539
8540 def test_list_resources_requested_tags(self):
8541
8542 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
8543 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID']
8544 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID']
8545
8546 # list series and request tags that are not in the default main dicom tags
8547 a = DoGet(_REMOTE, '/studies/%s/series?expand&simplify&requestedTags=PatientName;Modality;SeriesInstanceUID;MRAcquisitionType' % study)
8548
8549 self.assertEqual('2D', a[0]['RequestedTags']['MRAcquisitionType'])
8550 self.assertEqual('MR', a[0]['RequestedTags']['Modality'])
8551 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])
8552 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', a[0]['RequestedTags']['SeriesInstanceUID'])
8553
8554 # list studies and request patient and studies tags
8555 a = DoGet(_REMOTE, '/patients/%s/studies?expand&simplify&requestedTags=PatientName;StudyInstanceUID' % patient)
8556
8557 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID'])
8558 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])
8559
8560
8561 # list instances and request patient, studies and series tags including tags that are not in main dicom tags
8562 a = DoGet(_REMOTE, '/patients/%s/instances?expand&simplify&requestedTags=PatientName;StudyInstanceUID;SeriesInstanceUID;SOPInstanceUID;Rows;Columns' % patient)
8563
8564 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID'])
8565 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.394', a[0]['RequestedTags']['SeriesInstanceUID'])
8566 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', a[0]['RequestedTags']['SOPInstanceUID'])
8567 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])
8568 self.assertEqual('512', a[0]['RequestedTags']['Rows'])
8569 self.assertEqual('512', a[0]['RequestedTags']['Columns'])
8570
8571 pprint.pprint(a[0])
8572
8573
8574 def test_list_resources_requested_tags_modalities_in_study(self):
8575
8576 instance = UploadInstance(_REMOTE, 'DummyCT.dcm') ['ID']
8577 patient = DoGet(_REMOTE, '/instances/%s/patient' % instance) ['ID']
8578 study = DoGet(_REMOTE, '/instances/%s/study' % instance) ['ID']
8579
8580 # list studies and request patient and studies tags, including ModalitiesInStudy
8581 a = DoGet(_REMOTE, '/patients/%s/studies?expand&simplify&requestedTags=PatientName;StudyInstanceUID;ModalitiesInStudy' % patient)
8582
8583 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7391.1171285944.390', a[0]['RequestedTags']['StudyInstanceUID'])
8584 self.assertEqual('CT', a[0]['RequestedTags']['ModalitiesInStudy'])
8585 self.assertEqual('KNIX', a[0]['RequestedTags']['PatientName'])