def read_history(resource_type, resource_id, version): if resource_type is not None and resource_type not in RESOURCES: return fhir_error.inform_not_found() request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request) return fhir_api.handle_history(fhir_request, resource_type, resource_id, version)
def handle_resource(resource_type): if resource_type == 'metadata': return redirect("/static/doc/metadata") if resource_type in [ 'callsets', 'variantsets', 'readgroupsets', 'referencesets', 'variant' ]: if request.method == 'GET': return ga4gh.api.ga_handle_search(request, resource_type) elif resource_type in [ 'variantset', 'genomes', 'files', 'runs', 'genomes' ]: if request.method == 'GET': return basespace.api.bs_handle_search(request, resource_type) elif resource_type in RESOURCES: if request.method == 'GET': return ttam.api.ttam_handle_search(request, resource_type) else: return fhir_error.inform_not_found() g.api_base = request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request) if request.method == 'GET': return fhir_api.handle_search(fhir_request, resource_type) else: return fhir_api.handle_create(fhir_request, resource_type)
def handle_resources(resource_type, resource_id): if resource_type in ['callsets', 'variantsets', 'readgroupsets', 'referencesets', 'variant']: if request.method == 'GET': return ga4gh.api.ga_handle_read(request, resource_type, resource_id) elif resource_type in ['variantset', 'genomes', 'files', 'runs', 'genomes']: if request.method == 'GET': return basespace.api.bs_handle_read(request, resource_type, resource_id) elif resource_type in RESOURCES: if request.method == 'GET': return ttam.api.ttam_handle_read(request, resource_type, resource_id) else: return fhir_error.inform_not_found() request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request, is_resource=False) if request.method == 'GET': return fhir_api.handle_read(fhir_request, resource_type, resource_id) elif request.method == 'PUT': return fhir_api.handle_update(fhir_request, resource_type, resource_id) else: return fhir_api.handle_delete(fhir_request, resource_type, resource_id)
def handle_history(request, resource_type, resource_id, version): ''' handle FHIR history operation ''' query_args = [] if version is not None: query_args.append(Resource.version == version) if resource_type is not None: query_args.append(Resource.resource_type == resource_type) if resource_id is not None: query_args.append(Resource.resource_id == resource_id) hist_query = Resource.query.filter(*query_args) if version is not None: # request = GET [api base]/[resource]/[resource_id]/_history/[version] # don't render as a bundle in this case resource = hist_query.first() if resource is None: return fhir_error.inform_not_found() else: return resource.as_response(request) resp_bundle = FHIRBundle(hist_query, request, version_specific=True) return resp_bundle.as_response()
def handle_resources(resource_type, resource_id): if resource_type in [ 'callsets', 'variantsets', 'readgroupsets', 'referencesets', 'variant' ]: if request.method == 'GET': return ga4gh.api.ga_handle_read(request, resource_type, resource_id) elif resource_type in [ 'variantset', 'genomes', 'files', 'runs', 'genomes' ]: if request.method == 'GET': return basespace.api.bs_handle_read(request, resource_type, resource_id) elif resource_type in RESOURCES: if request.method == 'GET': return ttam.api.ttam_handle_read(request, resource_type, resource_id) else: return fhir_error.inform_not_found() request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request, is_resource=False) if request.method == 'GET': return fhir_api.handle_read(fhir_request, resource_type, resource_id) elif request.method == 'PUT': return fhir_api.handle_update(fhir_request, resource_type, resource_id) else: return fhir_api.handle_delete(fhir_request, resource_type, resource_id)
def handle_ttam_no_client(_): ''' If a request is attempting to access a 23andme resource and gets an error. (e.g. the user hasn't imported resources 23andme), we simply return a 404. The resource might be or not be in the server, but without a client it's hard to check with 23andme, so we simply pretend that resource is not here. ''' return fhir_error.inform_not_found()
def handle_resource(resource_type): if resource_type not in RESOURCES: return fhir_error.inform_not_found() g.api_base = request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request) if request.method == 'GET': return fhir_api.handle_search(fhir_request, resource_type) else: return fhir_api.handle_create(fhir_request, resource_type)
def handle_resource(resource_type): if resource_type not in RESOURCES: return fhir_error.inform_not_found() g.api_base = request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request) if request.method == "GET": return fhir_api.handle_search(fhir_request, resource_type) else: return fhir_api.handle_create(fhir_request, resource_type)
def handle_resources(resource_type, resource_id): if resource_type not in RESOURCES: return fhir_error.inform_not_found() request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request, is_resource=False) if request.method == "GET": return fhir_api.handle_read(fhir_request, resource_type, resource_id) elif request.method == "PUT": return fhir_api.handle_update(fhir_request, resource_type, resource_id) else: return fhir_api.handle_delete(fhir_request, resource_type, resource_id)
def handle_resources(resource_type, resource_id): if resource_type not in RESOURCES: return fhir_error.inform_not_found() request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request, is_resource=False) if request.method == 'GET': return fhir_api.handle_read(fhir_request, resource_type, resource_id) elif request.method == 'PUT': return fhir_api.handle_update(fhir_request, resource_type, resource_id) else: return fhir_api.handle_delete(fhir_request, resource_type, resource_id)
def handle_read(request, resource_type, resource_id): ''' handle FHIR read operation ''' if resource_type in ('Patient', 'Sequence') and resource_id.startswith('ttam_'): resource = ttam.get_one(resource_type, resource_id) else: resource = find_latest_resource(resource_type, resource_id, owner_id=request.authorizer.email) if resource is None: return fhir_error.inform_not_found() elif not resource.visible: return fhir_error.inform_gone() return resource.as_response(request)
def handle_resource(resource_type): if resource_type in ['callsets', 'variantsets', 'readgroupsets', 'referencesets', 'variant']: if request.method == 'GET': return ga4gh.api.ga_handle_search(request, resource_type) if resource_type not in RESOURCES: return fhir_error.inform_not_found() g.api_base = request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request) if request.method == 'GET': return fhir_api.handle_search(fhir_request, resource_type) else: return fhir_api.handle_create(fhir_request, resource_type)
def handle_resource(resource_type): if resource_type in [ 'callsets', 'variantsets', 'readgroupsets', 'referencesets', 'variant' ]: if request.method == 'GET': return ga4gh.api.ga_handle_search(request, resource_type) if resource_type not in RESOURCES: return fhir_error.inform_not_found() g.api_base = request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request) if request.method == 'GET': return fhir_api.handle_search(fhir_request, resource_type) else: return fhir_api.handle_create(fhir_request, resource_type)
def handle_resources_policy(resource_type, resource_id): if resource_type not in RESOURCES: return fhir_error.inform_not_found() request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request, is_resource=False) if request.method == 'GET': return fhir_api.handle_read(fhir_request, resource_type, resource_id) elif request.method == 'PUT' or request.method == 'POST': return fhir_api.handle_add_policy(fhir_request, resource_type, resource_id) else: return fhir_api.handle_delete_policy(fhir_request, resource_type, resource_id)
def handle_resource(resource_type): if resource_type == 'metadata': return redirect("/static/doc/metadata") if resource_type in ['callsets', 'variantsets', 'readgroupsets', 'referencesets', 'variant']: if request.method == 'GET': return ga4gh.api.ga_handle_search(request, resource_type) elif resource_type in ['variantset', 'genomes', 'files', 'runs', 'genomes']: if request.method == 'GET': return basespace.api.bs_handle_search(request, resource_type) elif resource_type in RESOURCES: if request.method == 'GET': return ttam.api.ttam_handle_search(request, resource_type) else: return fhir_error.inform_not_found() g.api_base = request.api_base = util.get_api_base() fhir_request = fhir_api.FHIRRequest(request) if request.method == 'GET': return fhir_api.handle_search(fhir_request, resource_type) else: return fhir_api.handle_create(fhir_request, resource_type)