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)