Esempio n. 1
0
def create_client(url):
    ''' Function to create the dicomweb client for future requests'''
    webclient = DICOMwebClient(url=url,
                               qido_url_prefix='rs',
                               wado_url_prefix='rs',
                               stow_url_prefix='rs')
    return webclient
Esempio n. 2
0
def _search_for_series(args):
    '''Searches for Series and writes metadata to standard output.'''
    params = _parse_search_parameters(args)
    client = DICOMwebClient(args.url,
                            username=args.username,
                            password=args.password,
                            ca_bundle=args.ca_bundle,
                            cert=args.cert)
    series = client.search_for_series(args.study_instance_uid, **params)
    _print_metadata(series, args.prettify, args.dicomize)
Esempio n. 3
0
def _retrieve_bulkdata(args):
    '''Retrieves bulk data and either writes them to standard output or to a
    file on disk.
    '''
    client = DICOMwebClient(args.url,
                            username=args.username,
                            password=args.password,
                            ca_bundle=args.ca_bundle,
                            cert=args.cert)
    data = client.retrieve_bulkdata(args.bulkdata_uri, args.media_type)
    print(data)
    print('\n')
Esempio n. 4
0
def _retrieve_instance_metadata(args):
    '''Retrieves metadata for an individual Instances and either
    writes it to standard output or to a file on disk.
    '''
    client = DICOMwebClient(args.url,
                            username=args.username,
                            password=args.password,
                            ca_bundle=args.ca_bundle,
                            cert=args.cert)
    metadata = client.retrieve_instance_metadata(args.study_instance_uid,
                                                 args.series_instance_uid,
                                                 args.sop_instance_uid)
    if args.save:
        _save_metadata(metadata, args.output_dir, args.sop_instance_uid,
                       args.prettify, args.dicomize)
    else:
        _print_metadata(metadata, args.prettify, args.dicomize)
Esempio n. 5
0
def _retrieve_study_metadata(args):
    '''Retrieves metadata for all Instances of a given Study and either
    writes it to standard output or to files on disk.
    '''
    client = DICOMwebClient(args.url,
                            username=args.username,
                            password=args.password,
                            ca_bundle=args.ca_bundle,
                            cert=args.cert)
    metadata = client.retrieve_study_metadata(args.study_instance_uid)
    if args.save:
        for md in metadata:
            tag = client.lookup_tag('SOPInstanceUID')
            sop_instance_uid = md[tag]['Value'][0]
            _save_metadata(md, args.output_dir, sop_instance_uid,
                           args.prettify, args.dicomize)
    else:
        _print_metadata(metadata, args.prettify, args.dicomize)
Esempio n. 6
0
def _retrieve_instance(args):
    '''Retrieves an Instances and either writes it to standard output or to a
    file on disk.
    '''
    client = DICOMwebClient(args.url,
                            username=args.username,
                            password=args.password,
                            ca_bundle=args.ca_bundle,
                            cert=args.cert)
    instance = client.retrieve_instance(
        args.study_instance_uid,
        args.series_instance_uid,
        args.sop_instance_uid,
        media_types=args.media_types,
    )
    if args.save:
        _save_instance(instance, args.output_dir, args.sop_instance_uid)
    else:
        _print_instance(instance)
Esempio n. 7
0
def _retrieve_study(args):
    '''Retrieves all Instances of a given Study and either writes them to
    standard output or to files on disk.
    '''
    client = DICOMwebClient(args.url,
                            username=args.username,
                            password=args.password,
                            ca_bundle=args.ca_bundle,
                            cert=args.cert)
    instances = client.retrieve_study(
        args.study_instance_uid,
        media_types=args.media_types,
    )
    for inst in instances:
        sop_instance_uid = inst.SOPInstanceUID
        if args.save:
            _save_instance(inst, args.output_dir, sop_instance_uid)
        else:
            _print_instance(inst)
Esempio n. 8
0
def _retrieve_instance_frames(args):
    '''Retrieves frames for an individual instances and either
    writes them to standard output or files on disk or displays them in a GUI
    (depending on the requested content type).
    Frames can only be saved and shown if they are retrieved using
    image media types.
    '''
    client = DICOMwebClient(args.url,
                            username=args.username,
                            password=args.password,
                            ca_bundle=args.ca_bundle,
                            cert=args.cert)
    pixel_data = client.retrieve_instance_frames(
        args.study_instance_uid,
        args.series_instance_uid,
        args.sop_instance_uid,
        args.frame_numbers,
        media_types=args.media_types,
    )

    for i, data in enumerate(pixel_data):
        if args.save or args.show:
            try:
                image = Image.open(BytesIO(data))
            except Exception:
                try:
                    import jpeg_ls
                    image = jpeg_ls.decode(np.fromstring(data, dtype=np.uint8))
                except Exception:
                    raise IOError('Cannot load retrieved frame as an image.')
            if args.save:
                filename = (
                    '{sop_instance_uid}_{frame_number}.{extension}'.format(
                        sop_instance_uid=args.sop_instance_uid,
                        frame_number=args.frame_numbers[i],
                        extension=image.format.lower()))
                filepath = os.path.join(args.output_dir, filename)
                _save_image(image, filepath)
            elif args.show:
                _show_image(image)
        else:
            _print_pixel_data(data)