예제 #1
0
    def get_studies(self, search_string=None, patient_id=None, modality=None):
        # Create our Identifier (query) dataset
        ds = Dataset()

        for attr in Study.attributes:
            ds.__setattr__(attr, '')

        if modality:
            ds.Modality = modality
        if patient_id:
            ds.PatientID = patient_id
        if search_string:
            ds.StudyDescription = search_string
        ds.QueryRetrieveLevel = 'STUDY'

        identifiers = Scu.c_find(self.connection.host, self.connection.port,
                                 ds, self.connection.calling_aet,
                                 self.connection.called_aet)
        studies = []
        for identifier in identifiers:
            study = Study()
            study.create(identifier, self.connection)
            studies.append(study)

        return studies
예제 #2
0
    def store(self, files):
        files = to_path_array(files)
        if not files:
            return None

        files = get_filelist_from_path_array(files)

        for file in files:
            if is_dicom_file(file):
                try:
                    f = open(file, 'rb')
                    ds = dcmread(f, force=True)
                    f.close()
                    Scu.c_store(self.connection.host, self.connection.port, ds,
                                self.connection.calling_aet,
                                self.connection.called_aet)
                except IOError:
                    pass
예제 #3
0
    def get_patient(self, patient_uid):
        # Create our Identifier (query) dataset
        ds = Dataset()

        for attr in Patient.attributes:
            ds.__setattr__(attr, '')

        ds.PatientID = patient_uid
        ds.QueryRetrieveLevel = 'PATIENT'

        identifiers = Scu.c_find(self.connection.host, self.connection.port,
                                 ds, self.connection.calling_aet,
                                 self.connection.called_aet)
        for identifier in identifiers:
            patient = Patient()
            patient.create(identifier, self.connection)
            return patient

        return None
예제 #4
0
    def get_serie(self, series_uid):
        # Create our Identifier (query) dataset
        ds = Dataset()

        for attr in Series.attributes:
            ds.__setattr__(attr, '')

        ds.SeriesInstanceUID = series_uid
        ds.QueryRetrieveLevel = 'SERIES'

        identifiers = Scu.c_find(self.connection.host, self.connection.port,
                                 ds, self.connection.calling_aet,
                                 self.connection.called_aet)
        for identifier in identifiers:
            serie = Series()
            serie.create(identifier, self.connection)
            return serie

        return None
예제 #5
0
    def get_study(self, study_uid):
        # Create our Identifier (query) dataset
        ds = Dataset()

        for attr in Study.attributes:
            ds.__setattr__(attr, '')

        ds.StudyInstanceUID = study_uid
        ds.QueryRetrieveLevel = 'STUDY'

        identifiers = Scu.c_find(self.connection.host, self.connection.port,
                                 ds, self.connection.calling_aet,
                                 self.connection.called_aet)
        for identifier in identifiers:
            study = Study()
            study.create(identifier, self.connection)
            return study

        return None
예제 #6
0
    def get_patients(self, search_string='*', modality=None):
        # Create our Identifier (query) dataset
        ds = Dataset()

        for attr in Patient.attributes:
            ds.__setattr__(attr, '')

        if modality:
            ds.Modality = modality
        ds.PatientName = search_string
        ds.QueryRetrieveLevel = 'PATIENT'

        identifiers = Scu.c_find(self.connection.host, self.connection.port,
                                 ds, self.connection.calling_aet,
                                 self.connection.called_aet)
        patients = []
        for identifier in identifiers:
            patient = Patient()
            patient.create(identifier, self.connection)
            patients.append(patient)

        return patients
예제 #7
0
    def download(self,
                 output_directory: os.path = None,
                 extension=None,
                 overwrite=True):
        if not self.connection:
            raise gtDicomException(
                'Cannot get the studies. No connection available')

        series = self.get_series()

        for serie in series:
            ds = Dataset()
            ds.QueryRetrieveLevel = 'SERIES'
            ds.PatientID = serie.PatientID
            ds.StudyInstanceUID = serie.StudyInstanceUID
            ds.SeriesInstanceUID = serie.SeriesInstanceUID
            ds.Modality = serie.Modality

            return Scu.c_get(self.connection.host, self.connection.port, ds,
                             output_directory, overwrite, extension,
                             self.connection.calling_aet,
                             self.connection.called_aet)
예제 #8
0
    def get_series(self, study_uid=None, modality=None):
        # Create our Identifier (query) dataset
        ds = Dataset()

        for attr in Series.attributes:
            ds.__setattr__(attr, '')

        if study_uid:
            ds.StudyInstanceUID = study_uid
        if modality:
            ds.Modality = modality
        ds.QueryRetrieveLevel = 'SERIES'

        identifiers = Scu.c_find(self.connection.host, self.connection.port,
                                 ds, self.connection.calling_aet,
                                 self.connection.called_aet)
        series = []
        for identifier in identifiers:
            serie = Series()
            serie.create(identifier, self.connection)
            series.append(serie)

        return series
예제 #9
0
 def echo(self):
     return Scu.c_echo(self.connection.host, self.connection.port,
                       self.connection.calling_aet,
                       self.connection.called_aet)
예제 #10
0
 def c_find(self, ds: Dataset):
     return Scu.c_find(self.connection.host, self.connection.port, ds,
                       self.connection.calling_aet,
                       self.connection.called_aet)