Skip to content

Commit

Permalink
Filter is now functional
Browse files Browse the repository at this point in the history
  • Loading branch information
ManjotSingh18 committed Aug 18, 2023
1 parent d3af6be commit 346b569
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 17 deletions.
Binary file modified __pycache__/home.cpython-39.pyc
Binary file not shown.
106 changes: 91 additions & 15 deletions gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ def __init__(self, master):
self.frm1.pack()
self.pns=None
self.icon=None
self.miniumum=0
self.maximum = 200
self.sexes={0, 1,2}
self.creator = tk.Toplevel(self.window)
self.creator.protocol("WM_DELETE_WINDOW", lambda: None)
self.creator.grab_set()
Expand All @@ -27,6 +30,7 @@ def __init__(self, master):
disclaimer.pack()
agree.pack()
disagree.pack()
self.limits=100
self.searcher()
def searcher(self):
self.icon=ImageTk.PhotoImage(Image.open("./img/logo.PNG"))
Expand All @@ -36,6 +40,7 @@ def searcher(self):
searchbutt=tk.Button(self.frm0,text="Search", width=20, height=3,justify="center", command=lambda: self.drawdata(self.frm1),bg="lightgrey")
nextbutt=tk.Button(self.frm0,text="Next", justify="center",width=20, height=3, command=lambda: self.next(self.frm1),bg="lightgrey")
prevbutt=tk.Button(self.frm0,text="Previous", justify="center",width=20, height=3,command=lambda: self.prev(self.frm1), bg="lightgrey")
filterbutt=tk.Button(self.frm0,text="Filter", command=self.params, justify="center",width=10, height=3, bg="lightgrey")
self.pns=pagesearch=tk.Entry(self.frm0, width=25, bg="lightgrey")
self.pns.insert(0, f"Search page number")
pagesearch.bind("<FocusIn>", self.temp_text)
Expand All @@ -44,9 +49,10 @@ def searcher(self):
#searchmessage.pack_propagate(True)
searchmessage.pack(fill="both", expand="True")
searchbox.pack(fill="x")
searchbutt.pack(side="left", pady="20", padx=(0, 100))
searchbutt.pack(side="left", pady="20", padx=(0, 50))
nextbutt.pack(side="left", pady="20")
prevbutt.pack(side="left", pady="20")
filterbutt.pack(side="left")
self.pns.pack(side="left", pady="20", padx="30")
def pagesearcher(self, e):
if len(self.move) == 0 or not self.pns.get().isdigit() or int(self.pns.get()) > len(self.data)//5 or int(self.pns.get()) <= 0:
Expand All @@ -56,29 +62,68 @@ def pagesearcher(self, e):
self.offset = int(self.pns.get())-1
show=self.move[self.offset]
for n in range(0, len(show)):
test=tk.Label(self.frm1, text=f"Age: {show[n].age}, Sex: {show[n].sex}, Drugs: {', '.join(show[n].drugs)}\n\n Reactions: {', '.join(show[n].reactions)}\n\n", font=('Helvetica', 10, 'bold'), justify='center', wraplength=700, bg="#358797")
test.pack(pady=10)
test=tk.Label(self.frm1,highlightcolor="white",text=f"Age: {show[n].age}, Sex: {show[n].sex}, Drugs: {', '.join(show[n].drugs)}\n\n Reactions: {', '.join(show[n].reactions)}\n\n", font=('Helvetica', 10, 'bold'), justify='center', wraplength=700, bg="#358797")
test.pack(pady=10)
page=tk.Label(self.frm1, text=f"Page {self.offset+1}", font=('Helvetica', 15, 'bold'))
page.pack()
def temp_text(self, e):
self.pns.delete(0, "end")
def temp_text2(self, e):
self.pns.insert(0, f"Search page number")
def params(self):
self.filterpop=tk.Toplevel()
self.filterpop.title("Filters")
self.filterpop.geometry("400x300")
ageminmessage=tk.Label(self.filterpop, text="Minimum Age")
self.minentry=tk.Entry(self.filterpop,bg="lightgrey")
self.maxentry=tk.Entry(self.filterpop, bg="lightgrey")
agemaxmessage=tk.Label(self.filterpop, text='Maximum Age')
limitmessage=tk.Label(self.filterpop, text="Amount of entries to search (max 1000)")
self.limitamount=tk.Entry(self.filterpop, bg="lightgrey")
sexmessage=tk.Label(self.filterpop, text="Sexes to display")
self.CheckVar1 = tk.IntVar()
self.CheckVar2 = tk.IntVar()
self.CheckVar3 = tk.IntVar()
self.s1 = tk.Checkbutton(self.filterpop, text='Undefined', onvalue=1, offvalue=0, variable=self.CheckVar1)
self.s2 = tk.Checkbutton(self.filterpop, text='Male',onvalue=1, offvalue=0, variable=self.CheckVar2)
self.s3 = tk.Checkbutton(self.filterpop, text='Female', onvalue=1, offvalue=0, variable=self.CheckVar3)
self.s1.select()
self.s2.select()
self.s3.select()
applybutt=tk.Button(self.filterpop,text="Apply", command=self.filapply, justify="center",width=10, height=3, bg="lightgrey")
reset=tk.Button(self.filterpop,text="Reset", command=self.default, justify="center",width=10, height=3, bg="lightgrey")
limitmessage.pack()
self.limitamount.pack()
ageminmessage.pack()
self.minentry.pack()
agemaxmessage.pack()
self.maxentry.pack()
sexmessage.pack()
self.s1.pack()
self.s2.pack()
self.s3.pack()
applybutt.pack()
reset.pack(side="left")

def drawdata(self, frames):
self.offset=0
self.data= home.apicall(self.frm0.winfo_children()[1].get("1.0","end-1c"))
self.data= home.apicall(self.frm0.winfo_children()[1].get("1.0","end-1c"), self.limits)
self.move.clear()
counter=0
for i in range(0, len(self.data)):
self.move[i//3].append(self.data[i])
if self.maximum>= int(self.data[i].age) >= self.miniumum and int(self.data[i].sex) in self.sexes:
self.move[counter//3].append(self.data[i])
counter+=1
self.delete(frames)
x=0
for case in self.data:
if x == 3:
break
else:
test=tk.Label(frames, text=f"Age: {case.age}, Sex: {case.sex}, Drugs: {', '.join(case.drugs)}\n\n Reactions: {', '.join(case.reactions)}\n\n", font=('Helvetica', 10, 'bold'), justify='center', wraplength=700, bg="#358797")
test.pack(pady=10)
x+=1
if self.maximum>= int(case.age) >= self.miniumum and int(case.sex) in self.sexes:
if x == 3:
break
else:
test=tk.Label(frames, highlightcolor="white", text=f"Age: {case.age}, Sex: {case.sex}, Drugs: {', '.join(case.drugs)}\n\n Reactions: {', '.join(case.reactions)}\n\n", font=('Helvetica', 10, 'bold'), justify='center', wraplength=700, bg="#358797")
test.pack(pady=10)
x+=1
page=tk.Label(frames, text=f"Page 1", font=('Helvetica', 15, 'bold'))
page.pack()
def next(self, frames):
Expand All @@ -87,8 +132,8 @@ def next(self, frames):
self.offset+=1
show=self.move[self.offset]
for n in range(0, len(show)):
test=tk.Label(frames, text=f"Age: {show[n].age}, Sex: {show[n].sex}, Drugs: {', '.join(show[n].drugs)}\n\n Reactions: {', '.join(show[n].reactions)}\n\n", font=('Helvetica', 10, 'bold'), justify='center', wraplength=700, bg="#358797")
test.pack(pady=10)
test=tk.Label(frames, highlightcolor="white", text=f"Age: {show[n].age}, Sex: {show[n].sex}, Drugs: {', '.join(show[n].drugs)}\n\n Reactions: {', '.join(show[n].reactions)}\n\n", font=('Helvetica', 10, 'bold'), justify='center', wraplength=700, bg="#358797")
test.pack(pady=10)
page=tk.Label(frames, text=f"Page {self.offset+1}", font=('Helvetica', 15, 'bold'))
page.pack()
else:
Expand All @@ -101,8 +146,8 @@ def prev(self, frames):
self.offset-=1
show=self.move[self.offset]
for n in range(0, len(show)):
test=tk.Label(frames, text=f"Age: {show[n].age}, Sex: {show[n].sex}, Drugs: {', '.join(show[n].drugs)}\n\n Reactions: {', '.join(show[n].reactions)}\n\n", font=('Helvetica', 10, 'bold'), justify='center', wraplength=700, bg="#358797")
test.pack(pady=10)
test=tk.Label(frames, highlightcolor="white", text=f"Age: {show[n].age}, Sex: {show[n].sex}, Drugs: {', '.join(show[n].drugs)}\n\n Reactions: {', '.join(show[n].reactions)}\n\n", font=('Helvetica', 10, 'bold'), justify='center', wraplength=700, bg="#358797")
test.pack(pady=10)
page=tk.Label(frames, text=f"Page {self.offset+1}", font=('Helvetica', 15, 'bold'))
page.pack()
else:
Expand All @@ -116,6 +161,37 @@ def disagreed(self):
self.creator.destroy()
self.window.destroy()
quit()
def filapply(self):
if self.limitamount.get().isdigit() and int(self.limitamount.get()) <=1000 and self.limitamount.get() != "":
self.limits=int(self.limitamount.get())
else:
pass
if self.minentry.get().isdigit():
self.miniumum=int(self.minentry.get())
if self.maxentry.get().isdigit():
self.maximum=int(self.maxentry.get())
try:
if self.CheckVar1.get():
self.sexes.add(0)
else:
self.sexes.remove(0)
if self.CheckVar2.get():
self.sexes.add(1)
else:
self.sexes.remove(1)
if self.CheckVar3.get():
self.sexes.add(2)
else:
self.sexes.remove(2)
except:
pass
self.filterpop.destroy()
def default(self):
self.miniumum=0
self.maximum=200
self.limits=100
self.sexes={0, 1, 2}
self.filterpop.destroy()
def quit(self):
self.window.destroy()
quit()
Expand Down
4 changes: 2 additions & 2 deletions home.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ def mainsearch():
drugname = str(input())
apicall(drugname)
#API call to retrieve adverse effect reports on given search
def apicall(drug: str):
def apicall(drug: str, limiter: int):
cases=[]
api_url= f'https://api.fda.gov/drug/event.json?search=patient.drug.openfda.brand_name:"{drug}"&limit=100'
api_url= f'https://api.fda.gov/drug/event.json?search=patient.drug.openfda.brand_name:"{drug}"&limit={limiter}'
response = requests.get(api_url)
try:
for patients in response.json()['results']:
Expand Down

0 comments on commit 346b569

Please sign in to comment.