Spaces:
Sleeping
Sleeping
File size: 5,945 Bytes
ae68995 f1650bd 9435ad1 ae68995 31e5847 856eb5a 31e5847 ae68995 31e5847 9435ad1 b94ea39 9435ad1 b94ea39 9435ad1 b94ea39 9435ad1 ae68995 b94ea39 9435ad1 31e5847 ae68995 31e5847 103159c 9435ad1 b94ea39 9435ad1 b94ea39 9435ad1 b94ea39 103159c ae68995 30b8c84 1cb5e9a 0230985 ae68995 31e5847 655cc9a ae68995 31e5847 ae68995 31e5847 ae68995 31e5847 ae68995 b0ff116 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
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)
|