Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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()
Esempio n. 5
0
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()
Esempio n. 6
0
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)
Esempio n. 7
0
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)
Esempio n. 8
0
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()
Esempio n. 9
0
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()
Esempio n. 10
0
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)
Esempio n. 11
0
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)
Esempio n. 12
0
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)
Esempio n. 13
0
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)
Esempio n. 14
0
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)
Esempio n. 15
0
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)
Esempio n. 16
0
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)
Esempio n. 17
0
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)
Esempio n. 18
0
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)
Esempio n. 19
0
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)