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
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)
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')
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)
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)
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)
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)
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)