Spaces:
Sleeping
Sleeping
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) | |