import gradio as gr from functools import partial import csv import pandas as pd import ast from datasets import load_dataset from huggingface_hub import HfApi, HfFolder data = pd.read_csv("./KB_gpt_v1.csv",index_col=0) all_diseases = list(data['diseases']) js = "(x) => {return alert('File Saved!!')}" logged_in_users = {} def login(username, password): if (username, password) in [("admin", "pass1234"), ("admin2", "pass1234")]: logged_in_users[username] = True print(logged_in_users) return True else: return False def get_symp(symptoms,investigations,drugs,advices,contraindications): all_drugs = [] all_contras = [] drug_dict = eval(drugs) contra_dict = eval(contraindications) for cat,med in drug_dict.items(): for i in med: all_drugs.append(i) for dru,con in contra_dict.items(): for i in con: lol = "" for ikey,ival in i.items(): lol+=ival+":" all_contras.append(lol[:-1]) print(all_contras) # print(all) return (gr.update(choices=eval(symptoms),visible=True,interactive=True)),(gr.update(choices=eval(investigations),visible=True,interactive=True)),(gr.update(choices=all_drugs,visible=True,interactive=True)),(gr.update(choices=eval(advices),visible=True,interactive=True)),(gr.update(choices=all_contras,visible=True,interactive=True)) def get_list(disease): print(disease) sympto = eval((data[data['diseases']==str(disease)]['symptoms']).iloc[0]) investigations = eval((data[data['diseases']==str(disease)]['investigations']).iloc[0]) drugs = eval((data[data['diseases']==str(disease)]["Drug type: Drugs"]).iloc[0]) advices = eval((data[data['diseases']==str(disease)]["Advices"]).iloc[0]) contras = eval((data[data['diseases']==str(disease)]["contraindications"]).iloc[0]) return sympto,investigations,drugs,advices,contras #------------------------------------------------ # api = HfApi() # # Replace with your Hugging Face Spaces username and repository name # username = "Add-Vishnu" # repo_name = "cdss_kb_generation" # # Replace with the CSV file name filename = "demo1.csv" # # Load the repository # repo = HfFolder.(repo_name, api=api, username=username) #--------------------------------------------------------- def get_original_format(drug_data,drug_dict,contra_data,contra_dict): # print("Drug_dict: ",drug_dict) # print("Drug_dict_type_before: ",type(drug_dict)) # print("Drug_dict_type_after: ",type(drug_dict)) drug_dict = eval(drug_dict) drug_keys = drug_dict.keys() # print("keys: ",drug_keys) user_drug_dict = {} for i in drug_data: for j in drug_keys: if i in drug_dict[j]: user_drug_dict.setdefault(j, []).append(i) contra_list = [] for i in contra_data: contra = i.split(':') inner_dict = {} inner_dict['Contraindication'] = contra[0] inner_dict['Reason'] = contra[1] print(inner_dict) contra_list.append(inner_dict) user_contra_dict = {} contra_dict = eval(contra_dict) contra_keys = contra_dict.keys() for i in contra_list: for j in contra_keys: if i in contra_dict[j]: user_contra_dict.setdefault(j, []).append(i) return user_drug_dict,user_contra_dict def save_data(disease,symp_data,invest_data,drug_data,advice_data,contra_data,drug_dict,contra_dict): user = "" for username, logged_in in logged_in_users.items(): if logged_in: user = username print(user) user_drug_dict,user_contra_dict = get_original_format(drug_data,drug_dict,contra_data,contra_dict) # --------------------------------------------- # Read the existing content of the CSV file # file_path = repo.filename_to_path(filename) existing_rows = [] with open(filename, "r") as csv_file: print("Reading the data") csv_reader = csv.reader(csv_file) for row in csv_reader: existing_rows.append(row) print(existing_rows) # ---------------------------------------------- try: print("In try") with open("./demo1.csv", mode="a") as csvfile: print("In open csv file",csvfile) csv_writer = csv.writer(csvfile) csv_writer.writerow([disease,symp_data,invest_data,user_drug_dict,advice_data,user_contra_dict,user]) print("Done writing!!") except: print("An Exception occured") with gr.Blocks() as demo: with gr.Row(): disease = gr.Dropdown(all_diseases,label="Diseases") with gr.Row(): fetch = gr.Button(value="Fetch") symptoms=gr.Textbox(visible=False) investigations = gr.Textbox(visible=False) drugs = gr.Textbox(visible=False) advices = gr.Textbox(visible=False) contraindications = gr.Textbox(visible=False) disease.change(get_list,disease,[symptoms,investigations,drugs,advices,contraindications]) with gr.Box(): symptoms_box = gr.CheckboxGroup(label="Symptoms",visible=False) investigations_box = gr.CheckboxGroup(label="Investigations",visible=False) # drugs_box = gr.Box(visible=False) drugs_box = gr.CheckboxGroup(label="Drugs",visible=False) advices_box = gr.CheckboxGroup(label="Advices",visible=False) contra_box = gr.CheckboxGroup(label="Contraindications",visible=False) save = gr.Button(value="Save") fetch.click(get_symp, inputs=[symptoms,investigations,drugs,advices,contraindications],outputs=[symptoms_box,investigations_box,drugs_box,advices_box,contra_box]) save.click(save_data,inputs=[disease,symptoms_box,investigations_box,drugs_box,advices_box,contra_box,drugs,contraindications],outputs=[]).then(fn=None,_js=js) if __name__ == "__main__": demo.launch(auth=login)