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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
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}")
def greet(): return jsonify('Hello. This is the API for the feature manager.')