예제 #1
0
def delete_qib(qib_id):
    try:
        models.QIB.query.filter_by(id = qib_id).delete()
        db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #2
0
def get_albums():
    try:
        all_albums = models.Album.query.all()
        results = albums_schema.dump(all_albums)
        return jsonify(results)
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")    
예제 #3
0
def get_regions():
    try:
        all_regions = models.Region.query.all()
        results = regions_schema.dump(all_regions)
        return jsonify(results)
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")   
예제 #4
0
def get_modalities():
    try:
        all_modalities = models.Modality.query.all()
        results = modalities_schema.dump(all_modalities)
        return jsonify(results)
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")          
예제 #5
0
def upload_csv():
    try:
        file_name=''
        album_name=''  
        qib_name=''
        qib_description=''
        csv_type=''
        if request.form:
            album_name = request.form['album_name']
            qib_name = request.form['qib_name']
            qib_description = request.form['qib_description']
            file_name = request.form['file_name']
            csv_type = request.form['csv_type']
        if request.method == 'POST' and request.files:
            data = pd.read_csv(request.files[file_name])
            headers = data.columns.values.tolist()
            csv_check = check_headers(headers, csv_type)
            if csv_check == False:
                return jsonify('Invalid columns')
            else:
                if csv_type == 'Custom QIB':
                    load_custom_filter_csv_to_db(data,album_name, qib_name,qib_description) 
                if csv_type == 'New QIB':
                    load_file_to_db(data,album_name,qib_name,qib_description)
                if csv_type == 'Outcome list':
                    add_outcome(data)
        return jsonify('OK')
    except Exception:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #6
0
def get_patients():
    try:
        all_patients = models.Patient.query.all()
        results = patients_schema.dump(all_patients)
        return jsonify(results)
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")    
예제 #7
0
def get_features(qib_id):
    try:
        all_features_of_qib = db.session.query(models.QIBFeature.id_feature).filter(models.QIBFeature.id_qib == qib_id).subquery()
        features = db.session.query(models.Feature).filter(models.Feature.id.in_(all_features_of_qib))
        results = features_schema.dump(features)
        return jsonify(results)
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #8
0
def edit_family(family_name):
    try:
        if request.json:
            content = request.json
            family = models.Family.query.filter_by(name = family_name).first()
            family.name = content['name']
            db.session.commit()
            return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #9
0
def new_album():
    try:
        if request.json:
            content = request.json
            album = models.Album(content['name'],content['description'])
            db.session.add(album)
            db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #10
0
def edit_qib(qib_id):
    try:
        if request.json:
            content = request.json
            qib = models.QIB.query.filter_by(id = qib_id).first()
            qib.name = content['name']
            qib.description = content['description']
            db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #11
0
def get_studies_by_album(album_id):
    try:
        studies = []
        study_albums = models.StudyAlbum.query.filter_by(id_album = album_id).all()
        for study_album in study_albums:
            study = models.Study.query.filter_by(id = study_album.id_study).first()
            studies.append(study)
        results = studies_schema.dump(studies)    
        return jsonify(results)
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #12
0
def delete_family(family_name):
    try:
        family = models.Family.query.filter_by(name = family_name).first()
        features = models.Feature.query.filter_by(id_family = family.id).all()
        if len(features) > 0: 
            return jsonify("This feature family still has features. Cannot delete.")
        db.session.delete(family)
        db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #13
0
def edit_album(album_id):
    try:
        if request.json:
            content = request.json
            album = models.Album.query.filter_by(id = album_id).first()
            album.name = content['name']
            album.description = content['description']
            db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #14
0
def edit_region(region_id):
    try:
        if request.json:
            content = request.json
            region = models.Region.query.filter_by(id = region_id).first()
            region.name = content['name']
            region.description = content['description']
            db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #15
0
def edit_modality(modality_id):
    try:
        if request.json:
            content = request.json
            modality = models.Modality.query.filter_by(id = modality_id).first()
            modality.name = content['name']
            modality.description = content['description']
            db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #16
0
def edit_feature(feature_id):
    try:
        if request.json:
            content = request.json
            feature = models.Feature.query.filter_by(id = feature_id).first()
            feature.name = content['name']
            family = models.Family.query.filter_by(name = content['family']).first()
            feature.family = family
            db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #17
0
def delete_album(album_id):
    try:
        qibs = models.QIB.query.filter_by(id_album = album_id).all()
        print(qibs)
        if len(qibs) > 0: 
            return jsonify("Album has children QIBs. Cannot delete.")
        album = models.Album.query.filter_by(id = album_id).first()
        db.session.delete(album)
        db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #18
0
def tag_column(qib_id):
    try:
        if request.json:
            content = request.json
            print( content['outcome_column'])
            qib = models.QIB.query.filter_by(id = qib_id).first()
            qib.outcome_column = content['outcome_column']
            qib.metadata_columns = content['metadata_columns']
            db.session.commit()
            results = qib_schema.dump(qib)
            return jsonify(results)
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #19
0
def new_family():
    try:
        if request.json:
            content = request.json
            print(content)
            family = models.Family.query.filter_by(name = content['name']).first()
            if family is not None:
                return jsonify("Family already exists.")
            family = models.Family(name = content['name'])
            db.session.add(family)
            db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #20
0
def get_statistics():
    try:
        series = db.session.query(models.Series.id).count()
        studies = db.session.query(models.Study.id).count()
        patients = db.session.query(models.Patient.id).count()
        qibs = db.session.query(models.QIB.id).count()
        stat_dict = {}
        stat_dict['series'] = series
        stat_dict['studies'] = studies
        stat_dict['patients'] = patients
        stat_dict['qibs'] = qibs
        return jsonify(stat_dict)
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #21
0
def edit_patient(patient_id):
    try:
        if request.json:
            content = request.json
            patient = models.Patient.query.filter_by(id = patient_id).first()
            patient.first_name = content['first_name']
            patient.last_name = content['last_name']
            patient.birthdate = datetime.strptime(content['birthdate'], '%Y-%m-%d')
            patient.gender = content['gender']
            outcome = models.Outcome.query.filter_by(id_patient = patient_id).first()
            outcome.plc_status = content['plc_status']
            db.session.commit()
        return jsonify("OK")
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")   
예제 #22
0
def get_qib_features_by_qib(qib_id):
    try:
        all_qib_features = models.QIBFeature.query.filter_by(id_qib=qib_id).all()
        df = convert_to_df(all_qib_features)
        return df.to_json(orient='records')
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #23
0
def get_families_features():
    try:
        all_families = models.Family.query.all()
        all_features = models.Feature.query.all()
        family_feature_dict = {}
        for family in all_families:
            family_feature_dict[family.name] = []
        for feature in all_features:
            if feature.family.name  in family_feature_dict:
                family_feature_dict[feature.family.name].append(feature_schema.dump(feature))
        family_feature_list = []
        for key, value in family_feature_dict.items():
            result_dict={}
            result_dict["family"] = key
            result_dict["features"] = value
            family_feature_list.append(result_dict)
        return jsonify(family_feature_list)    
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #24
0
def generate_scatterplot_data(qib_id, feature_1, feature_2):
    try:
        feature_1 = models.Feature.query.filter_by(id = feature_1).scalar()
        feature_2 = models.Feature.query.filter_by(id = feature_2).scalar()
        all_qib_features = models.QIBFeature.query.filter(models.QIBFeature.id_qib == qib_id)\
            .filter((models.QIBFeature.feature == feature_1) | (models.QIBFeature.feature == feature_2)).all()
        df = convert_to_scatter_coords(all_qib_features,feature_1,feature_2)
        return df.to_json(orient='values')
    except Exception as err:
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #25
0
def get_qibs():
    try:
        album = request.args.get('album', default = 0, type = int)
        region = request.args.get('region', default = 0, type = int)
        date = request.args.get('date', default = '*', type = str)
        print(datetime.now())
        if(album!=0 and region==0 and date=='*'):
            all_qibs = models.QIB.query.filter_by(id_album=album).all()
        elif(album==0 and region!=0 and date=='*'):
            all_qibs = models.QIB.query.join(models.QIBFeature, models.QIB.id == models.QIBFeature.id_qib)\
                .join(models.SeriesRegion, models.QIBFeature.id_series_region == models.SeriesRegion.id)\
                .join(models.Region, models.Region.id == models.SeriesRegion.id_region)\
                .filter(models.Region.id == region).all()
        elif(album==0 and region==0 and date!='*'):
            all_qibs = models.QIB.query.filter(models.QIB.time_stamp >= datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f')).all()
        else:
            all_qibs = models.QIB.query.all()
        results = qibs_schema.dump(all_qibs)
        return jsonify(results)
    except Exception as err:
        print(err)
        return jsonify(f"{err.__class__.__name__}: {err}")
예제 #26
0
def greet():
    return jsonify('Hello. This is the API for the feature manager.')