Add-Vishnu's picture
Added interface for contraindications, created a function to get original format dataset
31e5847
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)