def test_study_find_patient_attrs_with_filters_negative(pacs_srv: pacs.PACS): request = Dataset() request.PatientName = 'Test1^*' request.SpecificCharacterSet = 'ISO_IR 192' request.QueryRetrieveLevel = 'STUDY' request.AccessionNumber = '1234' assert not list(pacs_srv.c_find(request))
def test_study_find_no_patient_attrs(pacs_srv: pacs.PACS): request = Dataset() request.SpecificCharacterSet = 'ISO_IR 192' request.QueryRetrieveLevel = 'STUDY' request.AccessionNumber = '1234' results = list(pacs_srv.c_find(request)) assert len(results) == 1 assert results[0].AccessionNumber == '1234'
def test_study_find_modalities_in_study_no_filter(pacs_srv: pacs.PACS): request = Dataset() request.SpecificCharacterSet = 'ISO_IR 192' request.QueryRetrieveLevel = 'STUDY' request.AccessionNumber = '1234' request.ModalitiesInStudy = None results = list(pacs_srv.c_find(request)) assert len(results) == 1 assert results[0].ModalitiesInStudy == ['DX', 'SR']
def test_study_find_patient_attrs_with_filters_positive(pacs_srv: pacs.PACS): request = Dataset() request.PatientName = 'Test^*' request.SpecificCharacterSet = 'ISO_IR 192' request.QueryRetrieveLevel = 'STUDY' request.AccessionNumber = '1234' results = list(pacs_srv.c_find(request)) assert len(results) == 1 assert results[0].AccessionNumber == '1234' assert results[0].PatientName == 'Test^Test^Test'
def move_accession_number(accession_number, one_per_series=True): if one_per_series: print('Getting metadata for study') d = make_dataset('image') d.AccessionNumber = accession_number d.QueryRetrieveLevel = 'IMAGE' x = do_find(d) x = query_results_to_dataframe(x) y = x.groupby('SeriesInstanceUID').SOPInstanceUID.first() print('Grabbing images') for sop_instance_uid in y: move_sop_instance(sop_instance_uid) else: d = Dataset() d.QueryRetrieveLevel = 'STUDY' d.AccessionNumber = accession_number do_move(d)
def make_dataset(query_level='series', **kwargs): if query_level == 'study': d = Dataset() d.QueryRetrieveLevel = 'STUDY' d.StudyDate = '' #Required d.StudyInstanceUID = '' #Optional d.PatientName = '' d.PatientID = '' d.AccessionNumber = '' d.StudyDescription = '' d.StudyID = '' d.StudyTime = '' d.StudyInstanceUID = '' d.NumberOfStudyRelatedSeries = '' d.StationName = '' d.SpecificCharacterSet = '' d.ModalitiesInStudy = '' d.Manufacturer = '' d.ManufacturerModelName = '' d.InstitutionName = '' if query_level == 'series': d = Dataset() d.QueryRetrieveLevel = 'SERIES' d.SeriesDescription = '' d.SeriesNumber = '' d.SeriesInstanceUID = '' d.Modality = '' d.NumberOfSeriesRelatedInstances = '' d.StationName = '' d.SpecificCharacterSet = '' d.SeriesDate = '' d.AccessionNumber = '' d.SeriesTime = '' d.Manufacturer = '' d.ManufacturerModelName = '' d.SOPClassUID = '' if query_level == 'image': d = Dataset() d.QueryRetrieveLevel = "IMAGE" #Required d.SeriesInstanceUID = '' #Optional d.StudyInstanceUID = '' d.SOPInstanceUID = '' d.AccessionNumber = '' d.StationName = '' d.SeriesDate = '' d.SeriesTime = '' d.SOPClassUID = '' d.InstanceNumber = '' d.SpecificCharacterSet = '' d.StudyInstanceUID = '' if query_level == 'patient': #todo find optional tags d = Dataset() d.QueryRetrieveLevel = 'PATIENT' d.PatientName = '' d.PatientSex = '' d.PatientID = '' d.AccessionNumber = '' for k, v in kwargs.items(): try: d = write_tag_by_keyword(d, k, v) except: print(f'could not write tag: "{k}" with value: {v}') return d