From 92c776711a48f81ec242fd16ae61fd5f41a7818a Mon Sep 17 00:00:00 2001 From: anushkachaudhari9405 <114808715+anushkachaudhari9405@users.noreply.github.com> Date: Sun, 30 Apr 2023 13:09:00 +0530 Subject: [PATCH 1/8] MapYourHealth.py --- CodeBrewers_SY_21/MapYourHealth.py | 1200 ++++++++++++++++++++++++++++ 1 file changed, 1200 insertions(+) create mode 100644 CodeBrewers_SY_21/MapYourHealth.py diff --git a/CodeBrewers_SY_21/MapYourHealth.py b/CodeBrewers_SY_21/MapYourHealth.py new file mode 100644 index 0000000..f40bf57 --- /dev/null +++ b/CodeBrewers_SY_21/MapYourHealth.py @@ -0,0 +1,1200 @@ +import streamlit as st +import pandas as pd +import csv +from datetime import datetime +import altair as alt +from PIL import Image +import plotly.express as px +from streamlit import pyplot as plt +from streamlit_option_menu import option_menu + + + + +class doctor: # contains details about doctor + +# # list of patients under a doctor + def __init__ (self, name="", phn="", add="", mail="", specialist="", age="", gender="", password="", degree="", yr="", patient_list=[], shared_pat_list=[]): + self.doctor_name = name + self.doctor_add = add + self.doctor_phn = phn + self.doctor_mail = mail + self.degree = degree + self.specialist = specialist + self.doctor_gender = gender + self.practice_yr = yr + self.doctor_age = age + self.doctor_password = password + self.patient_list = patient_list + self.shared_pat_list = shared_pat_list + + + + + def login_doctor(self, dr_list): + loggedIn_dr = None + n = len(dr_list) + flag1 = False + flag2 = False + + + + + while flag1 == False: + email_input = st.text_input(" ") + if email_input == "": + st.write("Enter your Mail") + else: + for i in range(n): + if email_input == dr_list[i].doctor_mail: + flag1 = True + while flag2 == False: + password_input = st.text_input("", type="password") + if password_input == "": + st.write("Enter your password!") + else: + if password_input == dr_list[i].doctor_password: + flag2 = True + st.success("Login successful!") + loggedIn_dr = dr_list[i] + if flag2 == False: + st.warning("Invalid password! Please enter again.") + + break + + + + + if flag1 == False: + st.warning("Invalid email ID! Please enter again.") + + + + + return loggedIn_dr + + + + + + + + + def read_csv_dr(self, path, dr_list): + dr_details = pd.read_csv(path,encoding= 'unicode_escape') + for i in range(len(dr_details)): + dr = doctor( + name = dr_details.iloc[i]["Doctor Name"], + phn = dr_details.iloc[i]["Phone No"], + add = dr_details.iloc[i]["Address"], + mail = dr_details.iloc[i]["Email"], + specialist = dr_details.iloc[i]["Specialist"], + age = dr_details.iloc[i]["Age"], + gender = dr_details.iloc[i]["Gender"], + password = dr_details.iloc[i]["Password"], + degree = dr_details.iloc[i]["Degree"], + yr = dr_details.iloc[i]["Year of Practice"], + patient_list = [], + shared_pat_list = [] + ) + dr_list.append(dr) # add doctor obj to the doctor list + return dr_list + + + + + + + + + def Patient_list(self,dr): + #st.header("List of Patients") + n = len( dr.patient_list) + st.write(f"Number of patients in patient_list: {n}") # add this line + pat_list=[] + col = ["Patient ID","Patient Name","Age","Gender","Phone No.","Email ID","Address"] + pat_list.append(col) + for i in dr.patient_list: + pat_list.append([i.patient_id,i.patient_name,i.patient_age,i.patient_gender,i.patient_phn,i.patient_mail,i.patient_add]) + st.table(pat_list) + + + + def drPersonal_details(self): + # for dr in dr_list: + st.header("PROFILE") + df={ "Name":self.doctor_name, + "Age":self.doctor_age, + "Gender":self.doctor_gender, + "Speciality": self.specialist, + "Degree":self.degree, + "Practice Year":self.practice_yr, + "Phone No.":self.doctor_phn, + "Email ID": self.doctor_mail, + "Address":self.doctor_add + } + st.dataframe(df) + + + + def Patient_personal_details(self,dr): + st.header("PATIENT DETAILS") + flag=0 + pat_mail=st.text_input("Enter patient mail: ") + for pat in dr.patient_list: + if pat.patient_mail == pat_mail: + flag=1 + df={"Patient ID" : pat.patient_id, + "Name" : pat.patient_name, + "Age" : pat.patient_age, + "Gender" : pat.patient_gender, + "Phone no" : pat.patient_phn, + "Email ID" : pat.patient_mail, + "Address" : pat.patient_add, + "Past surgeries" : pat.past_surgeries, + "Current diseases" : pat.current_disease, + "Current medications" : pat.current_medication, + "Current BP (mmHg)" : pat.bp, + "Current BMI" : pat.bmi, + "Current WBC" : pat.wbc, + "Current RBC" : pat.rbc + } + st.dataframe(df) + st.markdown('***Visual Analysis***') + pat.Visulaisation(pat) + break + if flag==0: + st.warning("Patient not found!") + + + + + + def patient_sharing(self, dr, dr_list): + pat=patient() + temp_dr = [] + for i in range(len(dr_list)): + if dr.doctor_mail == dr_list[i].doctor_mail: + continue + temp_dr.append(dr_list[i].doctor_mail) + list1=[] + for i in temp_dr: + list1.append(pat.get_name(dr_list,i)) + choice=st.radio("Select Doctor", list1) + for i in range(len(list1)): + if choice==list1[i]: + share_dr_mail=temp_dr[i] + for i in range(len(dr_list)): + if share_dr_mail == dr_list[i].doctor_mail: + share_dr=dr_list[i] + + pat_id = st.text_input("Enter patient mail to be shared:") + if st.button("Share"): + flag = False + for i in range(len(dr.patient_list)): + if dr.patient_list[i].patient_mail== pat_id: + share_dr.shared_pat_list.append(dr.patient_list[i]) + st.write("Patient data shared successfully") + flag = True + break + if not flag: + st.error("Patient not found!") + for item in share_dr.shared_pat_list: + list1 = [item.patient_id, item.patient_name, item.patient_age, item.patient_add, item.patient_phn, item.patient_gender, item.patient_mail, item.patient_password] + for i in range(len(dr_list)): + if share_dr.doctor_mail == dr_list[i].doctor_mail: + path = share_dr.doctor_name+".csv" + dr.append_row(path,list1) + + + + + + + + + + def get_name(self,patient_list,mail): + for i in patient_list: + if i.patient_mail==mail: + return i.patient_name + return "NA" + + def appointment_dr(self,dr,dr_list): + status="NC" or "C" + ans=1 + flag=1 + app_list=[] + app_details=pd.read_csv("appointments.csv",encoding= 'unicode_escape') + #store all appointments in the list + for i in range (0,len(app_details),1): + list2=[app_details.iloc[i]["Of"],app_details.iloc[i]["With"],app_details.iloc[i]["DateTime"],app_details.iloc[i]["Status"]] + app_list.append(list2) + + + ans=st.selectbox("Enter Choice",["Schedule new appointment","View scheduled appointments","Cancel Appointment","Reschedule Appointment"]) + #ans=int(input("Enter choice: ")) + if ans=="Schedule new appointment": + with_pat=st.text_input("Enter patient email to be appointed : ") + #check if patient is present + for i in dr_list: + for j in i.patient_list: + if j.patient_mail==with_pat: + flag=0 + if(flag==1): + st.warning("Account doesnot exist!") + #return + date = st.date_input("Select a date", value=datetime.now(), key="datetime") + time=st.time_input("Select time (Hr-min)") + t=str(date)+" "+str(time) + list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] + flag1=1 + #check for clashings in appointments + for i in app_list: + if i==list1: #purna ditto appointment present ahe + flag1=0 + st.warning("Appointment already exists") + elif i[1]==list1[1] and i[2]==list1[2]: #patient already has appointment at this time + st.warning("Patient has another appointment at this time.\nSpecify another time") + while(str(t)==list1[2]): + t=dr.input_date() #take new date + list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] + elif i[0]==list1[0] and i[2]==list1[2]: #dr already has appointment at this time + st.warning("You have another appointment scheduled at this time\nSpecify another time") + while(str(t)==list1[2]): + t=dr.input_date() + list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] + if(flag1==1): + #append new appointment list + if st.button("Schedule"): + app_list.append(list1) + dr.append_row("appointments.csv",list1) + st.success("Appointment scheduled succesfully") + #view + + elif ans == "View scheduled appointments": + #sort wrt date and time + for i in app_list: + sorted_app_list=sorted(app_list,key=lambda x:datetime.strptime(x[2], "%Y-%m-%d %H:%M:%S")) + ans2=st.radio("Enter Choice:",[" View all appointments","View completed appointments","View uncompleted appointments "]) + #ans2=int(input("Enter choice: ")) + #view all + if ans2==" View all appointments": + appointment_list = [] + col = ["Patient Name", "Date and Time", "Status"] + flag2 = 0 + appointment_list.append(col) + for i in sorted_app_list: + if dr.doctor_mail == i[0]: + flag2 = 1 + for j in dr_list: + pat_name=dr.get_name(j.patient_list,i[1]) + if pat_name!="NA": + appointment_list.append([pat_name,i[2],i[3]]) + st.table(appointment_list) + if flag2 == 0: + st.info("No appointments found!") + #only c + elif ans2=="View completed appointments": + appointment_list=[] + col=["Patient Name","Date and Time","Status"] + appointment_list.append(col) + flag2=0 + for i in sorted_app_list: + if(dr.doctor_mail==i[0]): + if(i[3]=='C'): + flag2=1 + for j in dr_list: + pat_name=dr.get_name(j.patient_list,i[1]) + if pat_name!="NA": + appointment_list.append([pat_name,i[2],i[3]]) + st.table(appointment_list) + if(flag2==0): + st.info("No appointments found!") + #only nc + elif ans2=="View uncompleted appointments ": + appointment_list=[] + col=["Patient Name","Date and Time","Status"] + appointment_list.append(col) + flag2=0 + for i in sorted_app_list: + if(dr.doctor_mail==i[0]): + if(i[3]=='NC'): + flag2=1 + for j in dr_list: + pat_name=dr.get_name(j.patient_list,i[1]) + if pat_name!="NA": + appointment_list.append([pat_name,i[2],i[3]]) + st.table(appointment_list) + if(flag2==0): + st.info("No appointments found!") + + + + + + + + + + + + + + + + + #cancel appointments + elif ans== "Cancel Appointment": + appointment_list = [] + for i in app_list: + if dr.doctor_mail == i[0]: + appointment_list.append(str(i[1]+" "+i[2]+" "+i[3])) + ans3=st.radio("Select",appointment_list) + if st.button("Cancel"): + for i in range(len(appointment_list)): + if ans3==appointment_list[i]: + for item in app_list: + if item[0]==dr.doctor_mail: + if str(item[1]+" "+item[2]+" "+item[3])==appointment_list[i]: + app_list.remove(item) + st.success("Appointment cancelled!") + new_file=open("appointments.csv",'w',newline='') + write=csv.writer(new_file) + write.writerow(("Of","With","DateTime","Status")) + new_file.close() + for i in app_list: + dr.append_row("appointments.csv",i) + + #reschedule + + elif ans=="Reschedule Appointment": + appointment_list = [] + flag2 = 0 + for i in app_list: + if dr.doctor_mail == i[0]: + flag2 = 1 + appointment_list.append(str(i[1]+" "+i[2]+" "+i[3])) + ans3=st.radio("Select",appointment_list) + date = st.date_input("Select a date", value=datetime.now(), key="datetime") + time=st.time_input("Select time (Hr-min)") + t=str(date)+" "+str(time) + if st.button("Reschedule"): + for i in range(len(appointment_list)): + if ans3==appointment_list[i]: + for item in app_list: + if item[0]==dr.doctor_mail: + if str(item[1]+" "+item[2]+" "+item[3])==appointment_list[i]: + list1=[str(dr.doctor_mail),item[1],str(t),str(status)] + app_list.remove(item) + app_list.append(list1) #add new one + st.success("Appointment rescheduled!") + new_file=open("appointments.csv",'w',newline='') + write=csv.writer(new_file) + write.writerow(("Of","With","DateTime","Status")) + new_file.close() + for i in app_list: + dr.append_row("appointments.csv",i) + + + + + + + def provide_medication(self,dr): + flag1=0 + pat_mail = st.text_input("Enter patient email: ") + # pat_list = pd.read_csv(dr.doctor_name + ".csv") + # pat = pat_list[pat_list["Email"] == pat_mail] + for i in dr.patient_list: + if i.patient_mail==pat_mail: + pat=i + + + + + if pat==None: + st.warning("Patient not found. Please enter a valid email address.") + return + #pat = pat.iloc[0] + if pat.current_disease!='': + curr_disease=pat.current_disease + + + + + st.write("Diagnosed disease:", curr_disease) + #ans = st.text("Update diagnosed disease?") + ans = st.selectbox("Update disease?", ["Yes", "No"]) + if ans == "Yes": + flag1=1 + curr_disease=st.text_input("Enter updated disease:",) + elif ans=="No": + curr_disease=pat.current_disease + else: + curr_disease= st.text_input("Enter diagnosed disease:") + + + + + if pat.current_medication!='': + curr_medi=pat.current_medication + st.write("Current Medication:", curr_medi) + ans = st.selectbox("Update medication?", ["Yes1", "No1"]) + if ans=="Yes1": + flag1=1 + curr_medi=st.text_input("Enter updated medication:") + #pat.current_medication = curr_medi + elif ans=="No1": + + curr_medi=pat.current_medication + else: + curr_medi=st.text_input("Enter updated medication:") + if flag1==1: + if st.button("Update"): + pat.current_medication=curr_medi + pat.current_disease=curr_disease + list1=[pat.patient_id,pat.patient_name,pat.patient_age,pat.patient_add,pat.patient_phn,pat.patient_gender,pat.patient_mail,pat.patient_password,pat.past_surgeries,pat.current_disease,pat.current_medication,pat.bmi,pat.bp,pat.wbc,pat.rbc] + flag=1 + pat_list=[] + pat_details=pd.read_csv(dr.doctor_name+".csv",encoding= 'unicode_escape') + for i in range (0,len(pat_details),1): + list2=[pat_details.iloc[i]["Patient ID"],pat_details.iloc[i]["Patient Name"],pat_details.iloc[i]["Age"],pat_details.iloc[i]["Address"],pat_details.iloc[i]["Phone No"],pat_details.iloc[i]["Gender"],pat_details.iloc[i]["Email"],pat_details.iloc[i]["Password"],pat_details.iloc[i]["Past surgeries"],pat_details.iloc[i]["Current diseases"],pat_details.iloc[i]["Current medications"],pat_details.iloc[i]["Current BP (mmHg)"],pat_details.iloc[i]["Current BMI"],pat_details.iloc[i]["Current WBC"],pat_details.iloc[i]["Current RBC"]] + pat_list.append(list2) + for i in range(len(pat_list)): + #check where given time and patient matches in list + if pat_list[i][6]==pat_mail: + flag=0 + pat_list.pop(i) + pat_list.insert(i,list1) + + #write whole app_list into csv again + if flag==0: + new_file=open(dr.doctor_name+".csv",'w',newline='') + write=csv.writer(new_file) + write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) + new_file.close() + for i in pat_list: + dr.append_row(dr.doctor_name+".csv",i) + st.success("Medication updated succesfully!") + else : + st.warning("Unsuccessfull...") + else: + st.write("") #display msg + + + + + + def append_row(self,file_name,list1): + f=open(file_name,'a',newline='') + write=csv.writer(f) + write.writerow(list1) + f.close() + + def dr_signUp(self,dr_list): + email = st.text_input("Enter Email ID:") + for i in dr_list: + if i.doctor_mail == email: + st.write("Your Account already exists") + return + + + + + password = st.text_input("Enter Password:",type="password") + Name = st.text_input("Enter Name:") + age = st.text_input("Enter Age:") + gender = st.radio("Enter Gender:",["Female","Male"]) + phone_no = st.text_input("Enter Phone No:") + address = st.text_input("Enter Address:") + specialist = st.text_input("Enter Speciality:") + degree = st.text_input("Enter Degree:") + yr_practice = st.text_input("Enter Year of Practice:") + if st.button('Signup'): + list1 = [Name, phone_no, address, email, specialist, age, gender, password, degree, yr_practice] + d=doctor(Name, phone_no, address, email, specialist, age, gender, password, degree, yr_practice) + dr_list.append(d) + d.append_row("Doctors.csv",list1) + file_name=Name+".csv" + new_file=open(file_name,"w") + write=csv.writer(new_file) + write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) + st.success("Successfully Signed up") + + + + +#***************************************PATIENT************************************************************************ + + + + +class patient : # contains details about patient + def __init__(self, patient_id="", patient_name="", patient_age="", patient_add="", patient_phn="", patient_gender="", patient_mail="", patient_password="", past_surgeries="", current_disease="", current_medication="", bp="", bmi="", wbc="", rbc="",blood_group="",ht="",wt=""): + self.patient_id = patient_id + self.patient_age = patient_age + self.patient_name = patient_name + self.patient_add = patient_add + self.patient_phn = patient_phn + self.patient_gender = patient_gender + self.patient_mail = patient_mail + self.patient_password = patient_password + self.past_surgeries = past_surgeries + self.current_disease = current_disease + self.current_medication = current_medication + self.bmi = bmi + self.bp = bp + self.wbc = wbc + self.rbc = rbc + self.blood_group= blood_group + self.ht=ht + self.wt=wt + + + + + + + + + + def read_csv_patient(self, path,patient_list): + patient_list = [] + patient_details = pd.read_csv(path,encoding= 'unicode_escape') + for i in range(len(patient_details)): + pat = patient( + patient_id = patient_details.iloc[i]["Patient ID"], + patient_name = patient_details.iloc[i]["Patient Name"], + patient_age = patient_details.iloc[i]["Age"], + patient_add = patient_details.iloc[i]["Address"], + patient_phn = patient_details.iloc[i]["Phone No"], + patient_gender = patient_details.iloc[i]["Gender"], + patient_mail = patient_details.iloc[i]["Email"], + patient_password = patient_details.iloc[i]["Password"], + past_surgeries = patient_details.iloc[i]["Past surgeries"], + current_disease = patient_details.iloc[i]["Current diseases"], + current_medication = patient_details.iloc[i]["Current medications"], + bp = patient_details.iloc[i]["Current BP (mmHg)"], + bmi = patient_details.iloc[i]["Current BMI"], + wbc = patient_details.iloc[i]["Current WBC"], + rbc = patient_details.iloc[i]["Current RBC"], + # blood_group=patient_details.iloc[i]["Blood Group"], + # ht = patient_details.iloc[i]["Height "], + # wt = patient_details.iloc[i]["Weight"] + ) + patient_list.append(pat) + return patient_list + + + + + def login_patient(self,email, patient_list): + flag = False #to check correct password + pat = patient() + for i in range (len(patient_list)): #search a row of patient + if email==str(patient_list[i].patient_mail) : + while (flag==False): #do until password is not right + password = st.text_input("",type="password") + if password=="": + st.write("Enter your password!") + elif (password==str(patient_list[i].patient_password)) : + flag = True # password match + st.success("\nLogin successful!") + pat = patient_list[i] #store loggined patient object + + if flag == False: # password wrong + st.warning("Invalid password! \nPlease enter again: ") + return pat + + + + + + + + + def Patient_personal_details(self): + + st.header("PROFILE") + df={ + "Patient ID":self.patient_id, + "Name":self.patient_name, + "Age":self.patient_age, + "Gender":self.patient_gender, + "Phone No.": self.patient_phn, + "Email ID": self.patient_mail, + "Address": self.patient_add + } + st.dataframe(df) + + + + + + + def patient_signUp(self, dr_list): + pat=patient() + dr=doctor() + email = st.text_input("Enter Email ID:") + for i in dr_list: + for j in i.patient_list: + if j.patient_mail == email: + st.write("Your Account already exists") + return + password = st.text_input("Enter Password:",type='password') + id = st.text_input("Enter ID:") + name = st.text_input("Enter Name:") + age = st.text_input("Enter Age:") + gender = st.radio("Enter Gender:",["Female","Male"]) + phone_no = st.text_input("Enter Phone No:") + address = st.text_input("Enter Address:") + list1=[] + for i in dr_list: + list1.append(pat.get_name(dr_list,i.doctor_mail)) + doc=st.selectbox("Select Doctor",list1) + for i in range(len(list1)): + if doc==list1[i]: + path = dr_list[i].doctor_name+ ".csv" + + + if st.button('Signup'): + list1 = [id, name, age, address, phone_no, gender, email, password] + dr.append_row(path, list1) + st.success("Signed up successfully!") + + + + + + + + + + + + + + + + + + + + + def update_medical_details(self,pat): + if(pat.past_surgeries!=''): + past_sur=pat.past_surgeries + st.write("Past surgeries:", past_sur) + ans = st.selectbox("Update ?", ["Yes", "No"]) + if ans=="Yes": + flag1=1 + past_sur=st.text_input("Past surgeries:") + elif ans=="No": + past_sur=pat.past_surgeries + else: + past_sur=st.text_input("Past surgeries:") + + + if(pat.bmi!=''): + bmi=pat.bmi + st.write("Current BMI:", bmi) + ans1 = st.selectbox("Update ?", ["Yes1", "No1"]) + if ans1=="Yes1": + flag1=1 + bmi=st.text_input("Enter updated BMI:") + elif ans1=="No1": + bmi=pat.bmi + else: + bmi=st.text_input("Enter updated BMI:") + if(pat.bp!=''): + bp=pat.bp + st.write("Current BP:", bp) + ans2 = st.selectbox("Update ?", ["Yes2", "No2"]) + if ans2=="Yes2": + flag1=1 + bp=st.text_input("Enter updated BP:") + elif ans2=="No2": + bp=pat.bp + else: + bp=st.text_input("Enter updated BP:") + if(pat.wbc!=''): + wbc=pat.wbc + st.write("Current WBC count:", wbc) + ans3 = st.selectbox("Update ?", ["Yes3", "No3"]) + if ans3=="Yes3": + flag1=1 + wbc=st.text_input("Enter updated WBC count:") + elif ans3=="No3": + wbc=pat.wbc + else: + wbc=st.text_input("Enter updated WBC count:") + if(pat.rbc!=''): + rbc=pat.rbc + st.write("Current RBC count:", rbc) + ans4 = st.selectbox("Update ?", ["Yes4", "No4"]) + if ans4=="Yes4": + flag1=1 + rbc=st.text_input("Enter updated RBC count:") + elif ans4=="No4": + rbc=pat.rbc + else: + rbc=st.text_input("Enter updated RBC count:") + if flag1==1: + if st.button("Update"): + pat.past_surgeries=past_sur + pat.bmi=bmi + pat.bp=bp + pat.wbc=wbc + pat.rbc=rbc + list1=[pat.patient_id,pat.patient_name,pat.patient_age,pat.patient_add,pat.patient_phn,pat.patient_gender,pat.patient_mail,pat.patient_password,pat.past_surgeries,pat.current_disease,pat.current_medication,pat.bmi,pat.bp,pat.wbc,pat.rbc] + flag=1 + pat_list=[] + for i in dr_list: + for j in i.patient_list: + if j==pat: + doc_name=i.doctor_name + break + pat_details=pd.read_csv(doc_name+".csv",encoding= 'unicode_escape') + for i in range (0,len(pat_details),1): + list2=[pat_details.iloc[i]["Patient ID"],pat_details.iloc[i]["Patient Name"],pat_details.iloc[i]["Age"],pat_details.iloc[i]["Address"],pat_details.iloc[i]["Phone No"],pat_details.iloc[i]["Gender"],pat_details.iloc[i]["Email"],pat_details.iloc[i]["Password"],pat_details.iloc[i]["Past surgeries"],pat_details.iloc[i]["Current diseases"],pat_details.iloc[i]["Current medications"],pat_details.iloc[i]["Current BP (mmHg)"],pat_details.iloc[i]["Current BMI"],pat_details.iloc[i]["Current WBC"],pat_details.iloc[i]["Current RBC"]] + pat_list.append(list2) + for i in range(len(pat_list)): + if pat_list[i][6]==pat.patient_mail: + flag=0 + pat_list.pop(i) + pat_list.insert(i,list1) + dr=doctor() + #write whole app_list into csv again + if flag==0: + new_file=open(doc_name+".csv",'w',newline='') + write=csv.writer(new_file) + write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) + new_file.close() + for i in pat_list: + dr.append_row(doc_name+".csv",i) + st.success("Medication details updated succesfully!") + else : + st.warning("Unsuccessfull...") + else: + st.write("") #display msg + + + + + + + def view_medical_details(self,pat): + ans=st.radio("Select",["View History","View Current Disease / Medication","Health Rate"]) + if ans=="View History": + st.markdown("***History***") + if(pat.past_surgeries==''): + st.warning("No past surgeries present.") + else: + st.write("Past Surgeries: ",pat.past_surgeries) + elif ans == "View Current Disease / Medication": + if(pat.current_disease==''): + st.warning("No current disease present.") + else: + st.write("Current Disease: ",pat.current_disease) + if(pat.current_medication==''): + st.warning("No current medication present.") + else: + st.write("Current Medication: ",pat.current_medication) + elif ans == "Health Rate": + st.markdown("***Health Rate***") + if(pat.bmi==''): + st.warning("No current BMI present.") + else: + st.write("Current BMI: ",pat.bmi) + if(pat.bp==''): + st.warning("No current BP present.") + else: + st.write("Current BP: ",pat.bp) + if(pat.wbc==''): + st.warning("No current wbc count present.") + else: + st.write("Current WBC: ",pat.wbc) + if(pat.rbc==''): + st.warning("No current rbc count present.") + else: + st.write("Current RBC: ",pat.rbc) + + + + + + + + + def get_name(self,dr_list,mail): + for i in dr_list: + if i.doctor_mail==mail: + return i.doctor_name + + + + + + + + + + def view_pat_appointments(self,pat,dr_list): + app_list=[] + app_details=pd.read_csv("appointments.csv") + for i in range (0,len(app_details),1): + list=[app_details.iloc[i]["Of"],app_details.iloc[i]["With"],app_details.iloc[i]["DateTime"],app_details.iloc[i]["Status"]] + app_list.append(list) + #sort wrt date and time + for i in app_list: + sorted_app_list=sorted(app_list,key=lambda x:datetime.strptime(x[2], "%Y-%m-%d %H:%M:%S")) + ans2=st.radio("Select",["View all appointments","View completed appointments","View uncompleted appointments"]) + if ans2=="View all appointments": + appointment_list = [] + col = ["Doctor Name", "Date and Time", "Status"] + appointment_list.append(col) + flag2=0 + for i in sorted_app_list: + if pat.patient_mail == i[1]: + flag2=1 + doc_name=pat.get_name(dr_list,i[0]) + appointment_list.append([doc_name,i[2],i[3]]) + st.table(appointment_list) + if flag2 == 0: + st.info("No appointments found!") + #only c + elif ans2=="View completed appointments": + appointment_list=[] + col=["Doctor Name","Date and Time","Status"] + appointment_list.append(col) + flag2=0 + for i in sorted_app_list: + if pat.patient_mail == i[1]: + if(i[3]=='C'): + flag2=1 + doc_name=pat.get_name(dr_list,i[0]) + appointment_list.append([doc_name,i[2],i[3]]) + st.table(appointment_list) + if(flag2==0): + st.info("No appointments found!") + #only nc + elif ans2=="View uncompleted appointments ": + appointment_list=[] + col=["Doctor Name","Date and Time","Status"] + appointment_list.append(col) + flag2=0 + for i in app_list: + if pat.patient_mail == i[1]: + if(i[3]=='NC'): + flag2=1 + doc_name=pat.get_name(dr_list,i[0]) + appointment_list.append([doc_name,i[2],i[3]]) + st.table(appointment_list) + if(flag2==0): + st.info("No appointments found!") + + + + + + + + + + + + + + + + + + + + + + + + + def Visulaisation(graph,pat): + + +# Load the dataset + data = pd.read_csv("Health Data.csv") + # Get the name of the person for whom we want to create the graph + person_mail = pat.patient_mail + person_name=pat.patient_name + # Filter the dataset to get only the data for the selected person + person_data = data[data['Patient Mail'] == person_mail] + # Loop through each row in the filtered dataset + for index, row in person_data.iterrows(): + # Create a chart for the current row + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'BMI': [row['BMI_1'], row['BMI_2'],row['BMI_3'],row['BMI_4'] ]}) + chart = alt.Chart(chart_data).mark_bar(color="#faca2b").encode( + x='Date', + y='BMI' + ).properties( + title=f"{person_name}'s BMI ", + width=500, + height=500) + # Display the chart + st.altair_chart(chart) + + for index, row in person_data.iterrows(): + # Create a chart for the current row + st.write(f"{person_name}'s BP ") + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'BP': [row['BP_1'], row['BP_2'],row['BP_3'],row['BP_4'] ]}) + + st.line_chart(chart_data.set_index('Date')) + + + for index, row in person_data.iterrows(): + # Create a chart for the current row + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'Cholestrol': [row['Cholesterol_1'], row['Cholesterol_2'],row['Cholesterol_3'],row['Cholesterol_4'] ]}) + chart = alt.Chart(chart_data).mark_bar(color="#09ab3b").encode( + x='Date', + y='Cholestrol' + ).properties( + title=f"{person_name}'s Cholestrol ", + width=500, + height=500 ) + # Display the chart + st.altair_chart(chart) + + + + + for index, row in person_data.iterrows(): + # Create a chart for the current row + st.write(f"{person_name}'s RBC ") + + + + + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'RBC': [row['RBC_1'], row['RBC_2'],row['RBC_3'],row['RBC_4'] ]}) + + + + + + # Display the chart + st.line_chart(chart_data.set_index('Date')) + + + + + for index, row in person_data.iterrows(): + # Create a chart for the current row + st.write(f"{person_name}'s WBC ") + + + + + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'WBC': [row['WBC_1'], row['WBC_2'],row['WBC_3'],row['WBC_4'] ]}) + + + + + + # Display the chart + st.line_chart(chart_data.set_index('Date')) + + + + + + + + + + + + + + + + +#*********************************************************************************************************************# +dr_obj = doctor() +pat_obj = patient() + + + + +dr_list = [] + + + + + + + + +# Read doctor details from CSV and append to the list of doctors +dr_list = dr_obj.read_csv_dr("Doctors.csv", dr_list) + + + + +# Read patient details for each doctor from CSV and append to the patient list of each doctor +n = len(dr_list) +for i in range(n): + path = dr_list[i].doctor_name+ ".csv" + #pat_obj.read_csv_patient(path, dr_list[i].patient_list) + dr_list[i].patient_list= pat_obj.read_csv_patient(path,dr_list[i].patient_list) + + + + + + + + +# Streamlit app +st.title("Patient-Doctor Portal") +image=Image.open("Logo.png") +st.sidebar.image(image,caption=None,width=300,use_column_width=200,clamp=True,channels="RGB",output_format="auto") + + + + +while True: + + #choose = st.sidebar.radio("Select user", ["Login as Doctor", "Login as Patient", "SignUp as Doctor", "SignUp as Patient", "Terminate"],key="unique") + with st.sidebar: + choose=option_menu("", ["Login as Doctor","Login as Patient", "SignUp as Doctor","SignUp as Patient"], + icons=["house","house","house","house"], + menu_icon="cast", default_index=1, + styles={ + "container": {"padding": "5!important"}, + "icon": {"font-size": "25px"}, + "nav-link": {"font-size": "16px", "text-align": "left", "margin":"0px"}, + }) + if choose == "Login as Doctor": + dr_obj_login = dr_obj.login_doctor(dr_list) + if dr_obj_login is None: + st.write("Doctor not found") + else: + choose = 1 + while choose != 0: + choose = st.selectbox( + "Select an option:", + ["View Personal Details", "View Patient List","View Patient Details", "Share Patient Details", "Appointments","Prescribe Medication", "Logout"] + ) + + + + + if choose == "View Personal Details": + dr_obj_login.drPersonal_details( ) + st.write("Personal details displayed") + + + + + elif choose == "View Patient List": + st.write("Patient list displayed") + dr_obj_login.Patient_list(dr_obj_login) + + + elif choose == "View Patient Details": + dr_obj_login.Patient_personal_details(dr_obj_login) + + + elif choose == "Share Patient Details": + st.write("Patient details shared") + dr_obj_login.patient_sharing(dr_obj_login,dr_list) + + + + + elif choose == "Prescribe Medication": + + dr_obj_login. provide_medication(dr_obj_login) + + + + + elif choose == "Appointments": + dr_obj_login.appointment_dr(dr_obj_login,dr_list) + + elif choose == "Logout": + st.write("Logged out") + + + + + + + + + elif choose == "Login as Patient": + email=st.text_input("") + p_obj_login = patient() + if email=="": + st.write("Enter email ID") + else: + for i in range (len(dr_list)): + # search in every list + p_obj_login = p_obj_login.login_patient(email,dr_list[i].patient_list) + if p_obj_login.patient_id=="" :# patient mail is notfound continue for loop + continue + else: + break # else terminate the iteration + if p_obj_login.patient_mail=="" : + st.warning("Invalid mail ID!Please enter again:") + else : + choose = 1 + while choose != 0: + choose = st.selectbox("Select an option:", ["View Personal Details", "View Medical Details","Update Medical Details", "View scheduled appointments", + "Health Analysis","Logout"]) + if choose == "View Personal Details": + p_obj_login.Patient_personal_details() + + + elif choose == "View Medical Details": + p_obj_login.view_medical_details(p_obj_login) + + + elif choose == "Update Medical Details": + p_obj_login.update_medical_details(p_obj_login) + + + elif choose == "View scheduled appointments": + p_obj_login.view_pat_appointments(p_obj_login,dr_list) + + + elif choose=="Health Analysis": + p_obj_login.Visulaisation(p_obj_login) + elif choose=="Logout": + st.success("Logout successful!") + p_obj_login = None + break + + + + + elif choose == "SignUp as Doctor": + dr_obj.dr_signUp(dr_list) + + elif choose == "SignUp as Doctor": + dr_obj.dr_signUp(dr_list) + + elif choose == "SignUp as Patient": + pat_obj.patient_signUp(dr_list) + elif choose == "Terminate": + break + + + + + + + + + + + + + From 3a030d7adc9da34d89b57db1d0d78905ee117308 Mon Sep 17 00:00:00 2001 From: anushkachaudhari9405 <114808715+anushkachaudhari9405@users.noreply.github.com> Date: Sun, 30 Apr 2023 16:23:19 +0530 Subject: [PATCH 2/8] Update README.md --- README.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e6bc571..7a373aa 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,13 @@ -# Buffer-4.0 -Buffer is a Data Structures and Algorithms Project series, in which students can participate as mentees in teams of 3-4 people. -This year the themes on which students can create a project are- +Team Name : CodeBrewers -1. Healthcare -2. Digital Society -3. Open Innovation -4. Custom data structure to store data +Team members: +1.Gouri Dhampalwar (SY Comp) +2.Anushka Chaudhari (SY Comp) +3.Akansha Dahikar (SY Comp) +4.Shrawani Gosavi (SY Comp) -This repository is created for all the teams to be able to upload their final project source code for the same. +Theme name : Health Care -While submitting, note that: +PROJECT NAME: Digitalized Patient-Health Report Management System -Each folder should have the name of the team and inside a readme file with team member details, (name, year, branch) and their theme. The readme file should also contain the link to their presentation as well as the drive link where both the report documents would be stored. -Happy Coding :) From 321c5fae4ec81b708c3ac16236708122fa75f1a3 Mon Sep 17 00:00:00 2001 From: anushkachaudhari9405 <114808715+anushkachaudhari9405@users.noreply.github.com> Date: Sun, 30 Apr 2023 16:23:51 +0530 Subject: [PATCH 3/8] Delete MapYourHealth.py --- CodeBrewers_SY_21/MapYourHealth.py | 1200 ---------------------------- 1 file changed, 1200 deletions(-) delete mode 100644 CodeBrewers_SY_21/MapYourHealth.py diff --git a/CodeBrewers_SY_21/MapYourHealth.py b/CodeBrewers_SY_21/MapYourHealth.py deleted file mode 100644 index f40bf57..0000000 --- a/CodeBrewers_SY_21/MapYourHealth.py +++ /dev/null @@ -1,1200 +0,0 @@ -import streamlit as st -import pandas as pd -import csv -from datetime import datetime -import altair as alt -from PIL import Image -import plotly.express as px -from streamlit import pyplot as plt -from streamlit_option_menu import option_menu - - - - -class doctor: # contains details about doctor - -# # list of patients under a doctor - def __init__ (self, name="", phn="", add="", mail="", specialist="", age="", gender="", password="", degree="", yr="", patient_list=[], shared_pat_list=[]): - self.doctor_name = name - self.doctor_add = add - self.doctor_phn = phn - self.doctor_mail = mail - self.degree = degree - self.specialist = specialist - self.doctor_gender = gender - self.practice_yr = yr - self.doctor_age = age - self.doctor_password = password - self.patient_list = patient_list - self.shared_pat_list = shared_pat_list - - - - - def login_doctor(self, dr_list): - loggedIn_dr = None - n = len(dr_list) - flag1 = False - flag2 = False - - - - - while flag1 == False: - email_input = st.text_input(" ") - if email_input == "": - st.write("Enter your Mail") - else: - for i in range(n): - if email_input == dr_list[i].doctor_mail: - flag1 = True - while flag2 == False: - password_input = st.text_input("", type="password") - if password_input == "": - st.write("Enter your password!") - else: - if password_input == dr_list[i].doctor_password: - flag2 = True - st.success("Login successful!") - loggedIn_dr = dr_list[i] - if flag2 == False: - st.warning("Invalid password! Please enter again.") - - break - - - - - if flag1 == False: - st.warning("Invalid email ID! Please enter again.") - - - - - return loggedIn_dr - - - - - - - - - def read_csv_dr(self, path, dr_list): - dr_details = pd.read_csv(path,encoding= 'unicode_escape') - for i in range(len(dr_details)): - dr = doctor( - name = dr_details.iloc[i]["Doctor Name"], - phn = dr_details.iloc[i]["Phone No"], - add = dr_details.iloc[i]["Address"], - mail = dr_details.iloc[i]["Email"], - specialist = dr_details.iloc[i]["Specialist"], - age = dr_details.iloc[i]["Age"], - gender = dr_details.iloc[i]["Gender"], - password = dr_details.iloc[i]["Password"], - degree = dr_details.iloc[i]["Degree"], - yr = dr_details.iloc[i]["Year of Practice"], - patient_list = [], - shared_pat_list = [] - ) - dr_list.append(dr) # add doctor obj to the doctor list - return dr_list - - - - - - - - - def Patient_list(self,dr): - #st.header("List of Patients") - n = len( dr.patient_list) - st.write(f"Number of patients in patient_list: {n}") # add this line - pat_list=[] - col = ["Patient ID","Patient Name","Age","Gender","Phone No.","Email ID","Address"] - pat_list.append(col) - for i in dr.patient_list: - pat_list.append([i.patient_id,i.patient_name,i.patient_age,i.patient_gender,i.patient_phn,i.patient_mail,i.patient_add]) - st.table(pat_list) - - - - def drPersonal_details(self): - # for dr in dr_list: - st.header("PROFILE") - df={ "Name":self.doctor_name, - "Age":self.doctor_age, - "Gender":self.doctor_gender, - "Speciality": self.specialist, - "Degree":self.degree, - "Practice Year":self.practice_yr, - "Phone No.":self.doctor_phn, - "Email ID": self.doctor_mail, - "Address":self.doctor_add - } - st.dataframe(df) - - - - def Patient_personal_details(self,dr): - st.header("PATIENT DETAILS") - flag=0 - pat_mail=st.text_input("Enter patient mail: ") - for pat in dr.patient_list: - if pat.patient_mail == pat_mail: - flag=1 - df={"Patient ID" : pat.patient_id, - "Name" : pat.patient_name, - "Age" : pat.patient_age, - "Gender" : pat.patient_gender, - "Phone no" : pat.patient_phn, - "Email ID" : pat.patient_mail, - "Address" : pat.patient_add, - "Past surgeries" : pat.past_surgeries, - "Current diseases" : pat.current_disease, - "Current medications" : pat.current_medication, - "Current BP (mmHg)" : pat.bp, - "Current BMI" : pat.bmi, - "Current WBC" : pat.wbc, - "Current RBC" : pat.rbc - } - st.dataframe(df) - st.markdown('***Visual Analysis***') - pat.Visulaisation(pat) - break - if flag==0: - st.warning("Patient not found!") - - - - - - def patient_sharing(self, dr, dr_list): - pat=patient() - temp_dr = [] - for i in range(len(dr_list)): - if dr.doctor_mail == dr_list[i].doctor_mail: - continue - temp_dr.append(dr_list[i].doctor_mail) - list1=[] - for i in temp_dr: - list1.append(pat.get_name(dr_list,i)) - choice=st.radio("Select Doctor", list1) - for i in range(len(list1)): - if choice==list1[i]: - share_dr_mail=temp_dr[i] - for i in range(len(dr_list)): - if share_dr_mail == dr_list[i].doctor_mail: - share_dr=dr_list[i] - - pat_id = st.text_input("Enter patient mail to be shared:") - if st.button("Share"): - flag = False - for i in range(len(dr.patient_list)): - if dr.patient_list[i].patient_mail== pat_id: - share_dr.shared_pat_list.append(dr.patient_list[i]) - st.write("Patient data shared successfully") - flag = True - break - if not flag: - st.error("Patient not found!") - for item in share_dr.shared_pat_list: - list1 = [item.patient_id, item.patient_name, item.patient_age, item.patient_add, item.patient_phn, item.patient_gender, item.patient_mail, item.patient_password] - for i in range(len(dr_list)): - if share_dr.doctor_mail == dr_list[i].doctor_mail: - path = share_dr.doctor_name+".csv" - dr.append_row(path,list1) - - - - - - - - - - def get_name(self,patient_list,mail): - for i in patient_list: - if i.patient_mail==mail: - return i.patient_name - return "NA" - - def appointment_dr(self,dr,dr_list): - status="NC" or "C" - ans=1 - flag=1 - app_list=[] - app_details=pd.read_csv("appointments.csv",encoding= 'unicode_escape') - #store all appointments in the list - for i in range (0,len(app_details),1): - list2=[app_details.iloc[i]["Of"],app_details.iloc[i]["With"],app_details.iloc[i]["DateTime"],app_details.iloc[i]["Status"]] - app_list.append(list2) - - - ans=st.selectbox("Enter Choice",["Schedule new appointment","View scheduled appointments","Cancel Appointment","Reschedule Appointment"]) - #ans=int(input("Enter choice: ")) - if ans=="Schedule new appointment": - with_pat=st.text_input("Enter patient email to be appointed : ") - #check if patient is present - for i in dr_list: - for j in i.patient_list: - if j.patient_mail==with_pat: - flag=0 - if(flag==1): - st.warning("Account doesnot exist!") - #return - date = st.date_input("Select a date", value=datetime.now(), key="datetime") - time=st.time_input("Select time (Hr-min)") - t=str(date)+" "+str(time) - list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] - flag1=1 - #check for clashings in appointments - for i in app_list: - if i==list1: #purna ditto appointment present ahe - flag1=0 - st.warning("Appointment already exists") - elif i[1]==list1[1] and i[2]==list1[2]: #patient already has appointment at this time - st.warning("Patient has another appointment at this time.\nSpecify another time") - while(str(t)==list1[2]): - t=dr.input_date() #take new date - list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] - elif i[0]==list1[0] and i[2]==list1[2]: #dr already has appointment at this time - st.warning("You have another appointment scheduled at this time\nSpecify another time") - while(str(t)==list1[2]): - t=dr.input_date() - list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] - if(flag1==1): - #append new appointment list - if st.button("Schedule"): - app_list.append(list1) - dr.append_row("appointments.csv",list1) - st.success("Appointment scheduled succesfully") - #view - - elif ans == "View scheduled appointments": - #sort wrt date and time - for i in app_list: - sorted_app_list=sorted(app_list,key=lambda x:datetime.strptime(x[2], "%Y-%m-%d %H:%M:%S")) - ans2=st.radio("Enter Choice:",[" View all appointments","View completed appointments","View uncompleted appointments "]) - #ans2=int(input("Enter choice: ")) - #view all - if ans2==" View all appointments": - appointment_list = [] - col = ["Patient Name", "Date and Time", "Status"] - flag2 = 0 - appointment_list.append(col) - for i in sorted_app_list: - if dr.doctor_mail == i[0]: - flag2 = 1 - for j in dr_list: - pat_name=dr.get_name(j.patient_list,i[1]) - if pat_name!="NA": - appointment_list.append([pat_name,i[2],i[3]]) - st.table(appointment_list) - if flag2 == 0: - st.info("No appointments found!") - #only c - elif ans2=="View completed appointments": - appointment_list=[] - col=["Patient Name","Date and Time","Status"] - appointment_list.append(col) - flag2=0 - for i in sorted_app_list: - if(dr.doctor_mail==i[0]): - if(i[3]=='C'): - flag2=1 - for j in dr_list: - pat_name=dr.get_name(j.patient_list,i[1]) - if pat_name!="NA": - appointment_list.append([pat_name,i[2],i[3]]) - st.table(appointment_list) - if(flag2==0): - st.info("No appointments found!") - #only nc - elif ans2=="View uncompleted appointments ": - appointment_list=[] - col=["Patient Name","Date and Time","Status"] - appointment_list.append(col) - flag2=0 - for i in sorted_app_list: - if(dr.doctor_mail==i[0]): - if(i[3]=='NC'): - flag2=1 - for j in dr_list: - pat_name=dr.get_name(j.patient_list,i[1]) - if pat_name!="NA": - appointment_list.append([pat_name,i[2],i[3]]) - st.table(appointment_list) - if(flag2==0): - st.info("No appointments found!") - - - - - - - - - - - - - - - - - #cancel appointments - elif ans== "Cancel Appointment": - appointment_list = [] - for i in app_list: - if dr.doctor_mail == i[0]: - appointment_list.append(str(i[1]+" "+i[2]+" "+i[3])) - ans3=st.radio("Select",appointment_list) - if st.button("Cancel"): - for i in range(len(appointment_list)): - if ans3==appointment_list[i]: - for item in app_list: - if item[0]==dr.doctor_mail: - if str(item[1]+" "+item[2]+" "+item[3])==appointment_list[i]: - app_list.remove(item) - st.success("Appointment cancelled!") - new_file=open("appointments.csv",'w',newline='') - write=csv.writer(new_file) - write.writerow(("Of","With","DateTime","Status")) - new_file.close() - for i in app_list: - dr.append_row("appointments.csv",i) - - #reschedule - - elif ans=="Reschedule Appointment": - appointment_list = [] - flag2 = 0 - for i in app_list: - if dr.doctor_mail == i[0]: - flag2 = 1 - appointment_list.append(str(i[1]+" "+i[2]+" "+i[3])) - ans3=st.radio("Select",appointment_list) - date = st.date_input("Select a date", value=datetime.now(), key="datetime") - time=st.time_input("Select time (Hr-min)") - t=str(date)+" "+str(time) - if st.button("Reschedule"): - for i in range(len(appointment_list)): - if ans3==appointment_list[i]: - for item in app_list: - if item[0]==dr.doctor_mail: - if str(item[1]+" "+item[2]+" "+item[3])==appointment_list[i]: - list1=[str(dr.doctor_mail),item[1],str(t),str(status)] - app_list.remove(item) - app_list.append(list1) #add new one - st.success("Appointment rescheduled!") - new_file=open("appointments.csv",'w',newline='') - write=csv.writer(new_file) - write.writerow(("Of","With","DateTime","Status")) - new_file.close() - for i in app_list: - dr.append_row("appointments.csv",i) - - - - - - - def provide_medication(self,dr): - flag1=0 - pat_mail = st.text_input("Enter patient email: ") - # pat_list = pd.read_csv(dr.doctor_name + ".csv") - # pat = pat_list[pat_list["Email"] == pat_mail] - for i in dr.patient_list: - if i.patient_mail==pat_mail: - pat=i - - - - - if pat==None: - st.warning("Patient not found. Please enter a valid email address.") - return - #pat = pat.iloc[0] - if pat.current_disease!='': - curr_disease=pat.current_disease - - - - - st.write("Diagnosed disease:", curr_disease) - #ans = st.text("Update diagnosed disease?") - ans = st.selectbox("Update disease?", ["Yes", "No"]) - if ans == "Yes": - flag1=1 - curr_disease=st.text_input("Enter updated disease:",) - elif ans=="No": - curr_disease=pat.current_disease - else: - curr_disease= st.text_input("Enter diagnosed disease:") - - - - - if pat.current_medication!='': - curr_medi=pat.current_medication - st.write("Current Medication:", curr_medi) - ans = st.selectbox("Update medication?", ["Yes1", "No1"]) - if ans=="Yes1": - flag1=1 - curr_medi=st.text_input("Enter updated medication:") - #pat.current_medication = curr_medi - elif ans=="No1": - - curr_medi=pat.current_medication - else: - curr_medi=st.text_input("Enter updated medication:") - if flag1==1: - if st.button("Update"): - pat.current_medication=curr_medi - pat.current_disease=curr_disease - list1=[pat.patient_id,pat.patient_name,pat.patient_age,pat.patient_add,pat.patient_phn,pat.patient_gender,pat.patient_mail,pat.patient_password,pat.past_surgeries,pat.current_disease,pat.current_medication,pat.bmi,pat.bp,pat.wbc,pat.rbc] - flag=1 - pat_list=[] - pat_details=pd.read_csv(dr.doctor_name+".csv",encoding= 'unicode_escape') - for i in range (0,len(pat_details),1): - list2=[pat_details.iloc[i]["Patient ID"],pat_details.iloc[i]["Patient Name"],pat_details.iloc[i]["Age"],pat_details.iloc[i]["Address"],pat_details.iloc[i]["Phone No"],pat_details.iloc[i]["Gender"],pat_details.iloc[i]["Email"],pat_details.iloc[i]["Password"],pat_details.iloc[i]["Past surgeries"],pat_details.iloc[i]["Current diseases"],pat_details.iloc[i]["Current medications"],pat_details.iloc[i]["Current BP (mmHg)"],pat_details.iloc[i]["Current BMI"],pat_details.iloc[i]["Current WBC"],pat_details.iloc[i]["Current RBC"]] - pat_list.append(list2) - for i in range(len(pat_list)): - #check where given time and patient matches in list - if pat_list[i][6]==pat_mail: - flag=0 - pat_list.pop(i) - pat_list.insert(i,list1) - - #write whole app_list into csv again - if flag==0: - new_file=open(dr.doctor_name+".csv",'w',newline='') - write=csv.writer(new_file) - write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) - new_file.close() - for i in pat_list: - dr.append_row(dr.doctor_name+".csv",i) - st.success("Medication updated succesfully!") - else : - st.warning("Unsuccessfull...") - else: - st.write("") #display msg - - - - - - def append_row(self,file_name,list1): - f=open(file_name,'a',newline='') - write=csv.writer(f) - write.writerow(list1) - f.close() - - def dr_signUp(self,dr_list): - email = st.text_input("Enter Email ID:") - for i in dr_list: - if i.doctor_mail == email: - st.write("Your Account already exists") - return - - - - - password = st.text_input("Enter Password:",type="password") - Name = st.text_input("Enter Name:") - age = st.text_input("Enter Age:") - gender = st.radio("Enter Gender:",["Female","Male"]) - phone_no = st.text_input("Enter Phone No:") - address = st.text_input("Enter Address:") - specialist = st.text_input("Enter Speciality:") - degree = st.text_input("Enter Degree:") - yr_practice = st.text_input("Enter Year of Practice:") - if st.button('Signup'): - list1 = [Name, phone_no, address, email, specialist, age, gender, password, degree, yr_practice] - d=doctor(Name, phone_no, address, email, specialist, age, gender, password, degree, yr_practice) - dr_list.append(d) - d.append_row("Doctors.csv",list1) - file_name=Name+".csv" - new_file=open(file_name,"w") - write=csv.writer(new_file) - write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) - st.success("Successfully Signed up") - - - - -#***************************************PATIENT************************************************************************ - - - - -class patient : # contains details about patient - def __init__(self, patient_id="", patient_name="", patient_age="", patient_add="", patient_phn="", patient_gender="", patient_mail="", patient_password="", past_surgeries="", current_disease="", current_medication="", bp="", bmi="", wbc="", rbc="",blood_group="",ht="",wt=""): - self.patient_id = patient_id - self.patient_age = patient_age - self.patient_name = patient_name - self.patient_add = patient_add - self.patient_phn = patient_phn - self.patient_gender = patient_gender - self.patient_mail = patient_mail - self.patient_password = patient_password - self.past_surgeries = past_surgeries - self.current_disease = current_disease - self.current_medication = current_medication - self.bmi = bmi - self.bp = bp - self.wbc = wbc - self.rbc = rbc - self.blood_group= blood_group - self.ht=ht - self.wt=wt - - - - - - - - - - def read_csv_patient(self, path,patient_list): - patient_list = [] - patient_details = pd.read_csv(path,encoding= 'unicode_escape') - for i in range(len(patient_details)): - pat = patient( - patient_id = patient_details.iloc[i]["Patient ID"], - patient_name = patient_details.iloc[i]["Patient Name"], - patient_age = patient_details.iloc[i]["Age"], - patient_add = patient_details.iloc[i]["Address"], - patient_phn = patient_details.iloc[i]["Phone No"], - patient_gender = patient_details.iloc[i]["Gender"], - patient_mail = patient_details.iloc[i]["Email"], - patient_password = patient_details.iloc[i]["Password"], - past_surgeries = patient_details.iloc[i]["Past surgeries"], - current_disease = patient_details.iloc[i]["Current diseases"], - current_medication = patient_details.iloc[i]["Current medications"], - bp = patient_details.iloc[i]["Current BP (mmHg)"], - bmi = patient_details.iloc[i]["Current BMI"], - wbc = patient_details.iloc[i]["Current WBC"], - rbc = patient_details.iloc[i]["Current RBC"], - # blood_group=patient_details.iloc[i]["Blood Group"], - # ht = patient_details.iloc[i]["Height "], - # wt = patient_details.iloc[i]["Weight"] - ) - patient_list.append(pat) - return patient_list - - - - - def login_patient(self,email, patient_list): - flag = False #to check correct password - pat = patient() - for i in range (len(patient_list)): #search a row of patient - if email==str(patient_list[i].patient_mail) : - while (flag==False): #do until password is not right - password = st.text_input("",type="password") - if password=="": - st.write("Enter your password!") - elif (password==str(patient_list[i].patient_password)) : - flag = True # password match - st.success("\nLogin successful!") - pat = patient_list[i] #store loggined patient object - - if flag == False: # password wrong - st.warning("Invalid password! \nPlease enter again: ") - return pat - - - - - - - - - def Patient_personal_details(self): - - st.header("PROFILE") - df={ - "Patient ID":self.patient_id, - "Name":self.patient_name, - "Age":self.patient_age, - "Gender":self.patient_gender, - "Phone No.": self.patient_phn, - "Email ID": self.patient_mail, - "Address": self.patient_add - } - st.dataframe(df) - - - - - - - def patient_signUp(self, dr_list): - pat=patient() - dr=doctor() - email = st.text_input("Enter Email ID:") - for i in dr_list: - for j in i.patient_list: - if j.patient_mail == email: - st.write("Your Account already exists") - return - password = st.text_input("Enter Password:",type='password') - id = st.text_input("Enter ID:") - name = st.text_input("Enter Name:") - age = st.text_input("Enter Age:") - gender = st.radio("Enter Gender:",["Female","Male"]) - phone_no = st.text_input("Enter Phone No:") - address = st.text_input("Enter Address:") - list1=[] - for i in dr_list: - list1.append(pat.get_name(dr_list,i.doctor_mail)) - doc=st.selectbox("Select Doctor",list1) - for i in range(len(list1)): - if doc==list1[i]: - path = dr_list[i].doctor_name+ ".csv" - - - if st.button('Signup'): - list1 = [id, name, age, address, phone_no, gender, email, password] - dr.append_row(path, list1) - st.success("Signed up successfully!") - - - - - - - - - - - - - - - - - - - - - def update_medical_details(self,pat): - if(pat.past_surgeries!=''): - past_sur=pat.past_surgeries - st.write("Past surgeries:", past_sur) - ans = st.selectbox("Update ?", ["Yes", "No"]) - if ans=="Yes": - flag1=1 - past_sur=st.text_input("Past surgeries:") - elif ans=="No": - past_sur=pat.past_surgeries - else: - past_sur=st.text_input("Past surgeries:") - - - if(pat.bmi!=''): - bmi=pat.bmi - st.write("Current BMI:", bmi) - ans1 = st.selectbox("Update ?", ["Yes1", "No1"]) - if ans1=="Yes1": - flag1=1 - bmi=st.text_input("Enter updated BMI:") - elif ans1=="No1": - bmi=pat.bmi - else: - bmi=st.text_input("Enter updated BMI:") - if(pat.bp!=''): - bp=pat.bp - st.write("Current BP:", bp) - ans2 = st.selectbox("Update ?", ["Yes2", "No2"]) - if ans2=="Yes2": - flag1=1 - bp=st.text_input("Enter updated BP:") - elif ans2=="No2": - bp=pat.bp - else: - bp=st.text_input("Enter updated BP:") - if(pat.wbc!=''): - wbc=pat.wbc - st.write("Current WBC count:", wbc) - ans3 = st.selectbox("Update ?", ["Yes3", "No3"]) - if ans3=="Yes3": - flag1=1 - wbc=st.text_input("Enter updated WBC count:") - elif ans3=="No3": - wbc=pat.wbc - else: - wbc=st.text_input("Enter updated WBC count:") - if(pat.rbc!=''): - rbc=pat.rbc - st.write("Current RBC count:", rbc) - ans4 = st.selectbox("Update ?", ["Yes4", "No4"]) - if ans4=="Yes4": - flag1=1 - rbc=st.text_input("Enter updated RBC count:") - elif ans4=="No4": - rbc=pat.rbc - else: - rbc=st.text_input("Enter updated RBC count:") - if flag1==1: - if st.button("Update"): - pat.past_surgeries=past_sur - pat.bmi=bmi - pat.bp=bp - pat.wbc=wbc - pat.rbc=rbc - list1=[pat.patient_id,pat.patient_name,pat.patient_age,pat.patient_add,pat.patient_phn,pat.patient_gender,pat.patient_mail,pat.patient_password,pat.past_surgeries,pat.current_disease,pat.current_medication,pat.bmi,pat.bp,pat.wbc,pat.rbc] - flag=1 - pat_list=[] - for i in dr_list: - for j in i.patient_list: - if j==pat: - doc_name=i.doctor_name - break - pat_details=pd.read_csv(doc_name+".csv",encoding= 'unicode_escape') - for i in range (0,len(pat_details),1): - list2=[pat_details.iloc[i]["Patient ID"],pat_details.iloc[i]["Patient Name"],pat_details.iloc[i]["Age"],pat_details.iloc[i]["Address"],pat_details.iloc[i]["Phone No"],pat_details.iloc[i]["Gender"],pat_details.iloc[i]["Email"],pat_details.iloc[i]["Password"],pat_details.iloc[i]["Past surgeries"],pat_details.iloc[i]["Current diseases"],pat_details.iloc[i]["Current medications"],pat_details.iloc[i]["Current BP (mmHg)"],pat_details.iloc[i]["Current BMI"],pat_details.iloc[i]["Current WBC"],pat_details.iloc[i]["Current RBC"]] - pat_list.append(list2) - for i in range(len(pat_list)): - if pat_list[i][6]==pat.patient_mail: - flag=0 - pat_list.pop(i) - pat_list.insert(i,list1) - dr=doctor() - #write whole app_list into csv again - if flag==0: - new_file=open(doc_name+".csv",'w',newline='') - write=csv.writer(new_file) - write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) - new_file.close() - for i in pat_list: - dr.append_row(doc_name+".csv",i) - st.success("Medication details updated succesfully!") - else : - st.warning("Unsuccessfull...") - else: - st.write("") #display msg - - - - - - - def view_medical_details(self,pat): - ans=st.radio("Select",["View History","View Current Disease / Medication","Health Rate"]) - if ans=="View History": - st.markdown("***History***") - if(pat.past_surgeries==''): - st.warning("No past surgeries present.") - else: - st.write("Past Surgeries: ",pat.past_surgeries) - elif ans == "View Current Disease / Medication": - if(pat.current_disease==''): - st.warning("No current disease present.") - else: - st.write("Current Disease: ",pat.current_disease) - if(pat.current_medication==''): - st.warning("No current medication present.") - else: - st.write("Current Medication: ",pat.current_medication) - elif ans == "Health Rate": - st.markdown("***Health Rate***") - if(pat.bmi==''): - st.warning("No current BMI present.") - else: - st.write("Current BMI: ",pat.bmi) - if(pat.bp==''): - st.warning("No current BP present.") - else: - st.write("Current BP: ",pat.bp) - if(pat.wbc==''): - st.warning("No current wbc count present.") - else: - st.write("Current WBC: ",pat.wbc) - if(pat.rbc==''): - st.warning("No current rbc count present.") - else: - st.write("Current RBC: ",pat.rbc) - - - - - - - - - def get_name(self,dr_list,mail): - for i in dr_list: - if i.doctor_mail==mail: - return i.doctor_name - - - - - - - - - - def view_pat_appointments(self,pat,dr_list): - app_list=[] - app_details=pd.read_csv("appointments.csv") - for i in range (0,len(app_details),1): - list=[app_details.iloc[i]["Of"],app_details.iloc[i]["With"],app_details.iloc[i]["DateTime"],app_details.iloc[i]["Status"]] - app_list.append(list) - #sort wrt date and time - for i in app_list: - sorted_app_list=sorted(app_list,key=lambda x:datetime.strptime(x[2], "%Y-%m-%d %H:%M:%S")) - ans2=st.radio("Select",["View all appointments","View completed appointments","View uncompleted appointments"]) - if ans2=="View all appointments": - appointment_list = [] - col = ["Doctor Name", "Date and Time", "Status"] - appointment_list.append(col) - flag2=0 - for i in sorted_app_list: - if pat.patient_mail == i[1]: - flag2=1 - doc_name=pat.get_name(dr_list,i[0]) - appointment_list.append([doc_name,i[2],i[3]]) - st.table(appointment_list) - if flag2 == 0: - st.info("No appointments found!") - #only c - elif ans2=="View completed appointments": - appointment_list=[] - col=["Doctor Name","Date and Time","Status"] - appointment_list.append(col) - flag2=0 - for i in sorted_app_list: - if pat.patient_mail == i[1]: - if(i[3]=='C'): - flag2=1 - doc_name=pat.get_name(dr_list,i[0]) - appointment_list.append([doc_name,i[2],i[3]]) - st.table(appointment_list) - if(flag2==0): - st.info("No appointments found!") - #only nc - elif ans2=="View uncompleted appointments ": - appointment_list=[] - col=["Doctor Name","Date and Time","Status"] - appointment_list.append(col) - flag2=0 - for i in app_list: - if pat.patient_mail == i[1]: - if(i[3]=='NC'): - flag2=1 - doc_name=pat.get_name(dr_list,i[0]) - appointment_list.append([doc_name,i[2],i[3]]) - st.table(appointment_list) - if(flag2==0): - st.info("No appointments found!") - - - - - - - - - - - - - - - - - - - - - - - - - def Visulaisation(graph,pat): - - -# Load the dataset - data = pd.read_csv("Health Data.csv") - # Get the name of the person for whom we want to create the graph - person_mail = pat.patient_mail - person_name=pat.patient_name - # Filter the dataset to get only the data for the selected person - person_data = data[data['Patient Mail'] == person_mail] - # Loop through each row in the filtered dataset - for index, row in person_data.iterrows(): - # Create a chart for the current row - chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'BMI': [row['BMI_1'], row['BMI_2'],row['BMI_3'],row['BMI_4'] ]}) - chart = alt.Chart(chart_data).mark_bar(color="#faca2b").encode( - x='Date', - y='BMI' - ).properties( - title=f"{person_name}'s BMI ", - width=500, - height=500) - # Display the chart - st.altair_chart(chart) - - for index, row in person_data.iterrows(): - # Create a chart for the current row - st.write(f"{person_name}'s BP ") - chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'BP': [row['BP_1'], row['BP_2'],row['BP_3'],row['BP_4'] ]}) - - st.line_chart(chart_data.set_index('Date')) - - - for index, row in person_data.iterrows(): - # Create a chart for the current row - chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'Cholestrol': [row['Cholesterol_1'], row['Cholesterol_2'],row['Cholesterol_3'],row['Cholesterol_4'] ]}) - chart = alt.Chart(chart_data).mark_bar(color="#09ab3b").encode( - x='Date', - y='Cholestrol' - ).properties( - title=f"{person_name}'s Cholestrol ", - width=500, - height=500 ) - # Display the chart - st.altair_chart(chart) - - - - - for index, row in person_data.iterrows(): - # Create a chart for the current row - st.write(f"{person_name}'s RBC ") - - - - - chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'RBC': [row['RBC_1'], row['RBC_2'],row['RBC_3'],row['RBC_4'] ]}) - - - - - - # Display the chart - st.line_chart(chart_data.set_index('Date')) - - - - - for index, row in person_data.iterrows(): - # Create a chart for the current row - st.write(f"{person_name}'s WBC ") - - - - - chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'WBC': [row['WBC_1'], row['WBC_2'],row['WBC_3'],row['WBC_4'] ]}) - - - - - - # Display the chart - st.line_chart(chart_data.set_index('Date')) - - - - - - - - - - - - - - - - -#*********************************************************************************************************************# -dr_obj = doctor() -pat_obj = patient() - - - - -dr_list = [] - - - - - - - - -# Read doctor details from CSV and append to the list of doctors -dr_list = dr_obj.read_csv_dr("Doctors.csv", dr_list) - - - - -# Read patient details for each doctor from CSV and append to the patient list of each doctor -n = len(dr_list) -for i in range(n): - path = dr_list[i].doctor_name+ ".csv" - #pat_obj.read_csv_patient(path, dr_list[i].patient_list) - dr_list[i].patient_list= pat_obj.read_csv_patient(path,dr_list[i].patient_list) - - - - - - - - -# Streamlit app -st.title("Patient-Doctor Portal") -image=Image.open("Logo.png") -st.sidebar.image(image,caption=None,width=300,use_column_width=200,clamp=True,channels="RGB",output_format="auto") - - - - -while True: - - #choose = st.sidebar.radio("Select user", ["Login as Doctor", "Login as Patient", "SignUp as Doctor", "SignUp as Patient", "Terminate"],key="unique") - with st.sidebar: - choose=option_menu("", ["Login as Doctor","Login as Patient", "SignUp as Doctor","SignUp as Patient"], - icons=["house","house","house","house"], - menu_icon="cast", default_index=1, - styles={ - "container": {"padding": "5!important"}, - "icon": {"font-size": "25px"}, - "nav-link": {"font-size": "16px", "text-align": "left", "margin":"0px"}, - }) - if choose == "Login as Doctor": - dr_obj_login = dr_obj.login_doctor(dr_list) - if dr_obj_login is None: - st.write("Doctor not found") - else: - choose = 1 - while choose != 0: - choose = st.selectbox( - "Select an option:", - ["View Personal Details", "View Patient List","View Patient Details", "Share Patient Details", "Appointments","Prescribe Medication", "Logout"] - ) - - - - - if choose == "View Personal Details": - dr_obj_login.drPersonal_details( ) - st.write("Personal details displayed") - - - - - elif choose == "View Patient List": - st.write("Patient list displayed") - dr_obj_login.Patient_list(dr_obj_login) - - - elif choose == "View Patient Details": - dr_obj_login.Patient_personal_details(dr_obj_login) - - - elif choose == "Share Patient Details": - st.write("Patient details shared") - dr_obj_login.patient_sharing(dr_obj_login,dr_list) - - - - - elif choose == "Prescribe Medication": - - dr_obj_login. provide_medication(dr_obj_login) - - - - - elif choose == "Appointments": - dr_obj_login.appointment_dr(dr_obj_login,dr_list) - - elif choose == "Logout": - st.write("Logged out") - - - - - - - - - elif choose == "Login as Patient": - email=st.text_input("") - p_obj_login = patient() - if email=="": - st.write("Enter email ID") - else: - for i in range (len(dr_list)): - # search in every list - p_obj_login = p_obj_login.login_patient(email,dr_list[i].patient_list) - if p_obj_login.patient_id=="" :# patient mail is notfound continue for loop - continue - else: - break # else terminate the iteration - if p_obj_login.patient_mail=="" : - st.warning("Invalid mail ID!Please enter again:") - else : - choose = 1 - while choose != 0: - choose = st.selectbox("Select an option:", ["View Personal Details", "View Medical Details","Update Medical Details", "View scheduled appointments", - "Health Analysis","Logout"]) - if choose == "View Personal Details": - p_obj_login.Patient_personal_details() - - - elif choose == "View Medical Details": - p_obj_login.view_medical_details(p_obj_login) - - - elif choose == "Update Medical Details": - p_obj_login.update_medical_details(p_obj_login) - - - elif choose == "View scheduled appointments": - p_obj_login.view_pat_appointments(p_obj_login,dr_list) - - - elif choose=="Health Analysis": - p_obj_login.Visulaisation(p_obj_login) - elif choose=="Logout": - st.success("Logout successful!") - p_obj_login = None - break - - - - - elif choose == "SignUp as Doctor": - dr_obj.dr_signUp(dr_list) - - elif choose == "SignUp as Doctor": - dr_obj.dr_signUp(dr_list) - - elif choose == "SignUp as Patient": - pat_obj.patient_signUp(dr_list) - elif choose == "Terminate": - break - - - - - - - - - - - - - From 0749d3febfda856e90681005a92a1724d19323a4 Mon Sep 17 00:00:00 2001 From: anushkachaudhari9405 <114808715+anushkachaudhari9405@users.noreply.github.com> Date: Sun, 30 Apr 2023 16:28:24 +0530 Subject: [PATCH 4/8] MapYourHealth.py Main Python Code file --- .../Python Code/MapYourHealth.py | 1119 +++++++++++++++++ 1 file changed, 1119 insertions(+) create mode 100644 Codebrewers_SY_21/Python Code/MapYourHealth.py diff --git a/Codebrewers_SY_21/Python Code/MapYourHealth.py b/Codebrewers_SY_21/Python Code/MapYourHealth.py new file mode 100644 index 0000000..768fe9b --- /dev/null +++ b/Codebrewers_SY_21/Python Code/MapYourHealth.py @@ -0,0 +1,1119 @@ +import streamlit as st +import pandas as pd +import csv +from datetime import datetime +import altair as alt +from PIL import Image +import plotly.express as px +from streamlit import pyplot as plt +from streamlit_option_menu import option_menu +#import matplotlib.pyplot as plt + + + + + + + + +class doctor: # contains details about doctor + +# # list of patients under a doctor + def __init__ (self, name="", phn="", add="", mail="", specialist="", age="", gender="", password="", degree="", yr="", patient_list=[], shared_pat_list=[]): + self.doctor_name = name + self.doctor_add = add + self.doctor_phn = phn + self.doctor_mail = mail + self.degree = degree + self.specialist = specialist + self.doctor_gender = gender + self.practice_yr = yr + self.doctor_age = age + self.doctor_password = password + self.patient_list = patient_list + self.shared_pat_list = shared_pat_list + + + + + def login_doctor(self, dr_list): + loggedIn_dr = None + n = len(dr_list) + flag1 = False + flag2 = False + + + + + while flag1 == False: + email_input = st.text_input(" ") + if email_input == "": + st.write("Enter your Mail") + else: + for i in range(n): + if email_input == dr_list[i].doctor_mail: + flag1 = True + while flag2 == False: + password_input = st.text_input("", type="password") + if password_input == "": + st.write("Enter your password!") + else: + if password_input == dr_list[i].doctor_password: + flag2 = True + st.success("Login successful!") + loggedIn_dr = dr_list[i] + if flag2 == False: + st.warning("Invalid password! Please enter again.") + + break + + + + + if flag1 == False: + st.warning("Invalid email ID! Please enter again.") + + + + + return loggedIn_dr + + + + + def read_csv_dr(self, path, dr_list): + dr_details = pd.read_csv(path,encoding= 'unicode_escape') + for i in range(len(dr_details)): + dr = doctor( + name = dr_details.iloc[i]["Doctor Name"], + phn = dr_details.iloc[i]["Phone No"], + add = dr_details.iloc[i]["Address"], + mail = dr_details.iloc[i]["Email"], + specialist = dr_details.iloc[i]["Specialist"], + age = dr_details.iloc[i]["Age"], + gender = dr_details.iloc[i]["Gender"], + password = dr_details.iloc[i]["Password"], + degree = dr_details.iloc[i]["Degree"], + yr = dr_details.iloc[i]["Year of Practice"], + patient_list = [], + shared_pat_list = [] + ) + dr_list.append(dr) # add doctor obj to the doctor list + return dr_list + + + + + + + + + def Patient_list(self,dr): + #st.header("List of Patients") + n = len( dr.patient_list) + st.write(f"Number of patients in patient_list: {n}") # add this line + pat_list=[] + col = ["Patient ID","Patient Name","Age","Gender","Phone No.","Email ID","Address"] + pat_list.append(col) + for i in dr.patient_list: + pat_list.append([i.patient_id,i.patient_name,i.patient_age,i.patient_gender,i.patient_phn,i.patient_mail,i.patient_add]) + st.table(pat_list) + + + + def drPersonal_details(self): + # for dr in dr_list: + st.header("PROFILE") + df={ "Name":self.doctor_name, + "Age":self.doctor_age, + "Gender":self.doctor_gender, + "Speciality": self.specialist, + "Degree":self.degree, + "Practice Year":self.practice_yr, + "Phone No.":self.doctor_phn, + "Email ID": self.doctor_mail, + "Address":self.doctor_add + } + st.dataframe(df) + + + + def Patient_personal_details(self,dr): + st.header("PATIENT DETAILS") + flag=0 + pat_mail=st.text_input("Enter patient mail: ") + for pat in dr.patient_list: + if pat.patient_mail == pat_mail: + flag=1 + df={"Patient ID" : pat.patient_id, + "Name" : pat.patient_name, + "Age" : pat.patient_age, + "Gender" : pat.patient_gender, + "Phone no" : pat.patient_phn, + "Email ID" : pat.patient_mail, + "Address" : pat.patient_add, + "Past surgeries" : pat.past_surgeries, + "Current diseases" : pat.current_disease, + "Current medications" : pat.current_medication, + "Current BP (mmHg)" : pat.bp, + "Current BMI" : pat.bmi, + "Current WBC" : pat.wbc, + "Current RBC" : pat.rbc + } + st.dataframe(df) + st.markdown('***Visual Analysis***') + pat.Visulaisation(pat) + break + if flag==0: + st.warning("Patient not found!") + + + + + + + def patient_sharing(self, dr, dr_list): + pat=patient() + temp_dr = [] + for i in range(len(dr_list)): + if dr.doctor_mail == dr_list[i].doctor_mail: + continue + temp_dr.append(dr_list[i].doctor_mail) + list1=[] + for i in temp_dr: + list1.append(pat.get_name(dr_list,i)) + choice=st.radio("Select Doctor", list1) + for i in range(len(list1)): + if choice==list1[i]: + share_dr_mail=temp_dr[i] + for i in range(len(dr_list)): + if share_dr_mail == dr_list[i].doctor_mail: + share_dr=dr_list[i] + + pat_id = st.text_input("Enter patient mail to be shared:") + if st.button("Share"): + flag = False + for i in range(len(dr.patient_list)): + if dr.patient_list[i].patient_mail== pat_id: + share_dr.shared_pat_list.append(dr.patient_list[i]) + st.write("Patient data shared successfully") + flag = True + break + if not flag: + st.error("Patient not found!") + for item in share_dr.shared_pat_list: + list1 = [item.patient_id, item.patient_name, item.patient_age, item.patient_add, item.patient_phn, item.patient_gender, item.patient_mail, item.patient_password] + for i in range(len(dr_list)): + if share_dr.doctor_mail == dr_list[i].doctor_mail: + path = share_dr.doctor_name+".csv" + dr.append_row(path,list1) + + + + + def get_name(self,patient_list,mail): + for i in patient_list: + if i.patient_mail==mail: + return i.patient_name + return "NA" + + def appointment_dr(self,dr,dr_list): + status="NC" or "C" + ans=1 + flag=1 + app_list=[] + app_details=pd.read_csv("appointments.csv",encoding= 'unicode_escape') + #store all appointments in the list + for i in range (0,len(app_details),1): + list2=[app_details.iloc[i]["Of"],app_details.iloc[i]["With"],app_details.iloc[i]["DateTime"],app_details.iloc[i]["Status"]] + app_list.append(list2) + + + ans=st.selectbox("Enter Choice",["Schedule new appointment","View scheduled appointments","Cancel Appointment","Reschedule Appointment"]) + #ans=int(input("Enter choice: ")) + if ans=="Schedule new appointment": + with_pat=st.text_input("Enter patient email to be appointed : ") + #check if patient is present + for i in dr_list: + for j in i.patient_list: + if j.patient_mail==with_pat: + flag=0 + if(flag==1): + st.warning("Account doesnot exist!") + #return + date = st.date_input("Select a date", value=datetime.now(), key="datetime") + time=st.time_input("Select time (Hr-min)") + t=str(date)+" "+str(time) + list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] + flag1=1 + #check for clashings in appointments + for i in app_list: + if i==list1: #purna ditto appointment present ahe + flag1=0 + st.warning("Appointment already exists") + elif i[1]==list1[1] and i[2]==list1[2]: #patient already has appointment at this time + st.warning("Patient has another appointment at this time.\nSpecify another time") + while(str(t)==list1[2]): + t=dr.input_date() #take new date + list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] + elif i[0]==list1[0] and i[2]==list1[2]: #dr already has appointment at this time + st.warning("You have another appointment scheduled at this time\nSpecify another time") + while(str(t)==list1[2]): + t=dr.input_date() + list1=[str(dr.doctor_mail),str(with_pat),str(t),str(status)] + if(flag1==1): + #append new appointment list + if st.button("Schedule"): + app_list.append(list1) + dr.append_row("appointments.csv",list1) + st.success("Appointment scheduled succesfully") + #view + + elif ans == "View scheduled appointments": + #sort wrt date and time + for i in app_list: + sorted_app_list=sorted(app_list,key=lambda x:datetime.strptime(x[2], "%Y-%m-%d %H:%M:%S")) + ans2=st.radio("Enter Choice:",[" View all appointments","View completed appointments","View uncompleted appointments "]) + #ans2=int(input("Enter choice: ")) + #view all + if ans2==" View all appointments": + appointment_list = [] + col = ["Patient Name", "Date and Time", "Status"] + flag2 = 0 + appointment_list.append(col) + for i in sorted_app_list: + if dr.doctor_mail == i[0]: + flag2 = 1 + for j in dr_list: + pat_name=dr.get_name(j.patient_list,i[1]) + if pat_name!="NA": + appointment_list.append([pat_name,i[2],i[3]]) + st.table(appointment_list) + if flag2 == 0: + st.info("No appointments found!") + #only c + elif ans2=="View completed appointments": + appointment_list=[] + col=["Patient Name","Date and Time","Status"] + appointment_list.append(col) + flag2=0 + for i in sorted_app_list: + if(dr.doctor_mail==i[0]): + if(i[3]=='C'): + flag2=1 + for j in dr_list: + pat_name=dr.get_name(j.patient_list,i[1]) + if pat_name!="NA": + appointment_list.append([pat_name,i[2],i[3]]) + st.table(appointment_list) + if(flag2==0): + st.info("No appointments found!") + #only nc + elif ans2=="View uncompleted appointments ": + appointment_list=[] + col=["Patient Name","Date and Time","Status"] + appointment_list.append(col) + flag2=0 + for i in sorted_app_list: + if(dr.doctor_mail==i[0]): + if(i[3]=='NC'): + flag2=1 + for j in dr_list: + pat_name=dr.get_name(j.patient_list,i[1]) + if pat_name!="NA": + appointment_list.append([pat_name,i[2],i[3]]) + st.table(appointment_list) + if(flag2==0): + st.info("No appointments found!") + + + + #cancel appointments + elif ans== "Cancel Appointment": + appointment_list = [] + for i in app_list: + if dr.doctor_mail == i[0]: + appointment_list.append(str(i[1]+" "+i[2]+" "+i[3])) + ans3=st.radio("Select",appointment_list) + if st.button("Cancel"): + for i in range(len(appointment_list)): + if ans3==appointment_list[i]: + for item in app_list: + if item[0]==dr.doctor_mail: + if str(item[1]+" "+item[2]+" "+item[3])==appointment_list[i]: + app_list.remove(item) + st.success("Appointment cancelled!") + new_file=open("appointments.csv",'w',newline='') + write=csv.writer(new_file) + write.writerow(("Of","With","DateTime","Status")) + new_file.close() + for i in app_list: + dr.append_row("appointments.csv",i) + + #reschedule + + elif ans=="Reschedule Appointment": + appointment_list = [] + flag2 = 0 + for i in app_list: + if dr.doctor_mail == i[0]: + flag2 = 1 + appointment_list.append(str(i[1]+" "+i[2]+" "+i[3])) + ans3=st.radio("Select",appointment_list) + date = st.date_input("Select a date", value=datetime.now(), key="datetime") + time=st.time_input("Select time (Hr-min)") + t=str(date)+" "+str(time) + if st.button("Reschedule"): + for i in range(len(appointment_list)): + if ans3==appointment_list[i]: + for item in app_list: + if item[0]==dr.doctor_mail: + if str(item[1]+" "+item[2]+" "+item[3])==appointment_list[i]: + list1=[str(dr.doctor_mail),item[1],str(t),str(status)] + app_list.remove(item) + app_list.append(list1) #add new one + st.success("Appointment rescheduled!") + new_file=open("appointments.csv",'w',newline='') + write=csv.writer(new_file) + write.writerow(("Of","With","DateTime","Status")) + new_file.close() + for i in app_list: + dr.append_row("appointments.csv",i) + + + + + + + def provide_medication(self,dr): + flag1=0 + pat_mail = st.text_input("Enter patient email: ") + # pat_list = pd.read_csv(dr.doctor_name + ".csv") + # pat = pat_list[pat_list["Email"] == pat_mail] + for i in dr.patient_list: + if i.patient_mail==pat_mail: + pat=i + + + + + if pat==None: + st.warning("Patient not found. Please enter a valid email address.") + return + #pat = pat.iloc[0] + if pat.current_disease!='': + curr_disease=pat.current_disease + + + + + st.write("Diagnosed disease:", curr_disease) + #ans = st.text("Update diagnosed disease?") + ans = st.selectbox("Update disease?", ["Yes", "No"]) + if ans == "Yes": + flag1=1 + curr_disease=st.text_input("Enter updated disease:",) + elif ans=="No": + curr_disease=pat.current_disease + else: + curr_disease= st.text_input("Enter diagnosed disease:") + + + + + if pat.current_medication!='': + curr_medi=pat.current_medication + st.write("Current Medication:", curr_medi) + ans = st.selectbox("Update medication?", ["Yes1", "No1"]) + if ans=="Yes1": + flag1=1 + curr_medi=st.text_input("Enter updated medication:") + #pat.current_medication = curr_medi + elif ans=="No1": + + curr_medi=pat.current_medication + else: + curr_medi=st.text_input("Enter updated medication:") + if flag1==1: + if st.button("Update"): + pat.current_medication=curr_medi + pat.current_disease=curr_disease + list1=[pat.patient_id,pat.patient_name,pat.patient_age,pat.patient_add,pat.patient_phn,pat.patient_gender,pat.patient_mail,pat.patient_password,pat.past_surgeries,pat.current_disease,pat.current_medication,pat.bmi,pat.bp,pat.wbc,pat.rbc] + flag=1 + pat_list=[] + pat_details=pd.read_csv(dr.doctor_name+".csv",encoding= 'unicode_escape') + for i in range (0,len(pat_details),1): + list2=[pat_details.iloc[i]["Patient ID"],pat_details.iloc[i]["Patient Name"],pat_details.iloc[i]["Age"],pat_details.iloc[i]["Address"],pat_details.iloc[i]["Phone No"],pat_details.iloc[i]["Gender"],pat_details.iloc[i]["Email"],pat_details.iloc[i]["Password"],pat_details.iloc[i]["Past surgeries"],pat_details.iloc[i]["Current diseases"],pat_details.iloc[i]["Current medications"],pat_details.iloc[i]["Current BP (mmHg)"],pat_details.iloc[i]["Current BMI"],pat_details.iloc[i]["Current WBC"],pat_details.iloc[i]["Current RBC"]] + pat_list.append(list2) + for i in range(len(pat_list)): + #check where given time and patient matches in list + if pat_list[i][6]==pat_mail: + flag=0 + pat_list.pop(i) + pat_list.insert(i,list1) + + #write whole app_list into csv again + if flag==0: + new_file=open(dr.doctor_name+".csv",'w',newline='') + write=csv.writer(new_file) + write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) + new_file.close() + for i in pat_list: + dr.append_row(dr.doctor_name+".csv",i) + st.success("Medication updated succesfully!") + else : + st.warning("Unsuccessfull...") + else: + st.write("") #display msg + + + + + + def append_row(self,file_name,list1): + f=open(file_name,'a',newline='') + write=csv.writer(f) + write.writerow(list1) + f.close() + + def dr_signUp(self,dr_list): + email = st.text_input("Enter Email ID:") + for i in dr_list: + if i.doctor_mail == email: + st.write("Your Account already exists") + return + + + + + password = st.text_input("Enter Password:",type="password") + Name = st.text_input("Enter Name:") + age = st.text_input("Enter Age:") + gender = st.radio("Enter Gender:",["Female","Male"]) + phone_no = st.text_input("Enter Phone No:") + address = st.text_input("Enter Address:") + specialist = st.text_input("Enter Speciality:") + degree = st.text_input("Enter Degree:") + yr_practice = st.text_input("Enter Year of Practice:") + if st.button('Signup'): + list1 = [Name, phone_no, address, email, specialist, age, gender, password, degree, yr_practice] + d=doctor(Name, phone_no, address, email, specialist, age, gender, password, degree, yr_practice) + dr_list.append(d) + d.append_row("Doctors.csv",list1) + file_name=Name+".csv" + new_file=open(file_name,"w") + write=csv.writer(new_file) + write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) + st.success("Successfully Signed up") + + + + +#***************************************PATIENT************************************************************************ + + + +class patient : # contains details about patient + def __init__(self, patient_id="", patient_name="", patient_age="", patient_add="", patient_phn="", patient_gender="", patient_mail="", patient_password="", past_surgeries="", current_disease="", current_medication="", bp="", bmi="", wbc="", rbc="",blood_group="",ht="",wt=""): + self.patient_id = patient_id + self.patient_age = patient_age + self.patient_name = patient_name + self.patient_add = patient_add + self.patient_phn = patient_phn + self.patient_gender = patient_gender + self.patient_mail = patient_mail + self.patient_password = patient_password + self.past_surgeries = past_surgeries + self.current_disease = current_disease + self.current_medication = current_medication + self.bmi = bmi + self.bp = bp + self.wbc = wbc + self.rbc = rbc + self.blood_group= blood_group + self.ht=ht + self.wt=wt + + + + + + + + + + def read_csv_patient(self, path,patient_list): + patient_list = [] + patient_details = pd.read_csv(path,encoding= 'unicode_escape') + for i in range(len(patient_details)): + pat = patient( + patient_id = patient_details.iloc[i]["Patient ID"], + patient_name = patient_details.iloc[i]["Patient Name"], + patient_age = patient_details.iloc[i]["Age"], + patient_add = patient_details.iloc[i]["Address"], + patient_phn = patient_details.iloc[i]["Phone No"], + patient_gender = patient_details.iloc[i]["Gender"], + patient_mail = patient_details.iloc[i]["Email"], + patient_password = patient_details.iloc[i]["Password"], + past_surgeries = patient_details.iloc[i]["Past surgeries"], + current_disease = patient_details.iloc[i]["Current diseases"], + current_medication = patient_details.iloc[i]["Current medications"], + bp = patient_details.iloc[i]["Current BP (mmHg)"], + bmi = patient_details.iloc[i]["Current BMI"], + wbc = patient_details.iloc[i]["Current WBC"], + rbc = patient_details.iloc[i]["Current RBC"], + # blood_group=patient_details.iloc[i]["Blood Group"], + # ht = patient_details.iloc[i]["Height "], + # wt = patient_details.iloc[i]["Weight"] + ) + patient_list.append(pat) + return patient_list + + + + + def login_patient(self,email, patient_list): + flag = False #to check correct password + pat = patient() + for i in range (len(patient_list)): #search a row of patient + if email==str(patient_list[i].patient_mail) : + while (flag==False): #do until password is not right + password = st.text_input("",type="password") + if password=="": + st.write("Enter your password!") + elif (password==str(patient_list[i].patient_password)) : + flag = True # password match + st.success("\nLogin successful!") + pat = patient_list[i] #store loggined patient object + + if flag == False: # password wrong + st.warning("Invalid password! \nPlease enter again: ") + return pat + + + + + + + + + def Patient_personal_details(self): + + st.header("PROFILE") + df={ + "Patient ID":self.patient_id, + "Name":self.patient_name, + "Age":self.patient_age, + "Gender":self.patient_gender, + "Phone No.": self.patient_phn, + "Email ID": self.patient_mail, + "Address": self.patient_add + } + st.dataframe(df) + + + + + + + def patient_signUp(self, dr_list): + pat=patient() + dr=doctor() + email = st.text_input("Enter Email ID:") + for i in dr_list: + for j in i.patient_list: + if j.patient_mail == email: + st.write("Your Account already exists") + return + password = st.text_input("Enter Password:",type='password') + id = st.text_input("Enter ID:") + name = st.text_input("Enter Name:") + age = st.text_input("Enter Age:") + gender = st.radio("Enter Gender:",["Female","Male"]) + phone_no = st.text_input("Enter Phone No:") + address = st.text_input("Enter Address:") + list1=[] + for i in dr_list: + list1.append(pat.get_name(dr_list,i.doctor_mail)) + doc=st.selectbox("Select Doctor",list1) + for i in range(len(list1)): + if doc==list1[i]: + path = dr_list[i].doctor_name+ ".csv" + + + if st.button('Signup'): + list1 = [id, name, age, address, phone_no, gender, email, password] + dr.append_row(path, list1) + st.success("Signed up successfully!") + + + + + + + + + + + + + + + + + + + + + def update_medical_details(self,pat): + if(pat.past_surgeries!=''): + past_sur=pat.past_surgeries + st.write("Past surgeries:", past_sur) + ans = st.selectbox("Update ?", ["Yes", "No"]) + if ans=="Yes": + flag1=1 + past_sur=st.text_input("Past surgeries:") + elif ans=="No": + past_sur=pat.past_surgeries + else: + past_sur=st.text_input("Past surgeries:") + + + if(pat.bmi!=''): + bmi=pat.bmi + st.write("Current BMI:", bmi) + ans1 = st.selectbox("Update ?", ["Yes1", "No1"]) + if ans1=="Yes1": + flag1=1 + bmi=st.text_input("Enter updated BMI:") + elif ans1=="No1": + bmi=pat.bmi + else: + bmi=st.text_input("Enter updated BMI:") + if(pat.bp!=''): + bp=pat.bp + st.write("Current BP:", bp) + ans2 = st.selectbox("Update ?", ["Yes2", "No2"]) + if ans2=="Yes2": + flag1=1 + bp=st.text_input("Enter updated BP:") + elif ans2=="No2": + bp=pat.bp + else: + bp=st.text_input("Enter updated BP:") + if(pat.wbc!=''): + wbc=pat.wbc + st.write("Current WBC count:", wbc) + ans3 = st.selectbox("Update ?", ["Yes3", "No3"]) + if ans3=="Yes3": + flag1=1 + wbc=st.text_input("Enter updated WBC count:") + elif ans3=="No3": + wbc=pat.wbc + else: + wbc=st.text_input("Enter updated WBC count:") + if(pat.rbc!=''): + rbc=pat.rbc + st.write("Current RBC count:", rbc) + ans4 = st.selectbox("Update ?", ["Yes4", "No4"]) + if ans4=="Yes4": + flag1=1 + rbc=st.text_input("Enter updated RBC count:") + elif ans4=="No4": + rbc=pat.rbc + else: + rbc=st.text_input("Enter updated RBC count:") + if flag1==1: + if st.button("Update"): + pat.past_surgeries=past_sur + pat.bmi=bmi + pat.bp=bp + pat.wbc=wbc + pat.rbc=rbc + list1=[pat.patient_id,pat.patient_name,pat.patient_age,pat.patient_add,pat.patient_phn,pat.patient_gender,pat.patient_mail,pat.patient_password,pat.past_surgeries,pat.current_disease,pat.current_medication,pat.bmi,pat.bp,pat.wbc,pat.rbc] + flag=1 + pat_list=[] + for i in dr_list: + for j in i.patient_list: + if j==pat: + doc_name=i.doctor_name + break + pat_details=pd.read_csv(doc_name+".csv",encoding= 'unicode_escape') + for i in range (0,len(pat_details),1): + list2=[pat_details.iloc[i]["Patient ID"],pat_details.iloc[i]["Patient Name"],pat_details.iloc[i]["Age"],pat_details.iloc[i]["Address"],pat_details.iloc[i]["Phone No"],pat_details.iloc[i]["Gender"],pat_details.iloc[i]["Email"],pat_details.iloc[i]["Password"],pat_details.iloc[i]["Past surgeries"],pat_details.iloc[i]["Current diseases"],pat_details.iloc[i]["Current medications"],pat_details.iloc[i]["Current BP (mmHg)"],pat_details.iloc[i]["Current BMI"],pat_details.iloc[i]["Current WBC"],pat_details.iloc[i]["Current RBC"]] + pat_list.append(list2) + for i in range(len(pat_list)): + if pat_list[i][6]==pat.patient_mail: + flag=0 + pat_list.pop(i) + pat_list.insert(i,list1) + dr=doctor() + #write whole app_list into csv again + if flag==0: + new_file=open(doc_name+".csv",'w',newline='') + write=csv.writer(new_file) + write.writerow(("Patient ID","Patient Name","Age","Address","Phone No","Gender","Email","Password","Past surgeries","Current diseases","Current medications","Current BP (mmHg)","Current BMI","Current WBC","Current RBC")) + new_file.close() + for i in pat_list: + dr.append_row(doc_name+".csv",i) + st.success("Medication details updated succesfully!") + else : + st.warning("Unsuccessfull...") + else: + st.write("") #display msg + + + + + + + def view_medical_details(self,pat): + ans=st.radio("Select",["View History","View Current Disease / Medication","Health Rate"]) + if ans=="View History": + st.markdown("***History***") + if(pat.past_surgeries==''): + st.warning("No past surgeries present.") + else: + st.write("Past Surgeries: ",pat.past_surgeries) + elif ans == "View Current Disease / Medication": + if(pat.current_disease==''): + st.warning("No current disease present.") + else: + st.write("Current Disease: ",pat.current_disease) + if(pat.current_medication==''): + st.warning("No current medication present.") + else: + st.write("Current Medication: ",pat.current_medication) + elif ans == "Health Rate": + st.markdown("***Health Rate***") + if(pat.bmi==''): + st.warning("No current BMI present.") + else: + st.write("Current BMI: ",pat.bmi) + if(pat.bp==''): + st.warning("No current BP present.") + else: + st.write("Current BP: ",pat.bp) + if(pat.wbc==''): + st.warning("No current wbc count present.") + else: + st.write("Current WBC: ",pat.wbc) + if(pat.rbc==''): + st.warning("No current rbc count present.") + else: + st.write("Current RBC: ",pat.rbc) + + + + + + + + + def get_name(self,dr_list,mail): + for i in dr_list: + if i.doctor_mail==mail: + return i.doctor_name + + + + + + + + + + def view_pat_appointments(self,pat,dr_list): + app_list=[] + app_details=pd.read_csv("appointments.csv") + for i in range (0,len(app_details),1): + list=[app_details.iloc[i]["Of"],app_details.iloc[i]["With"],app_details.iloc[i]["DateTime"],app_details.iloc[i]["Status"]] + app_list.append(list) + #sort wrt date and time + for i in app_list: + sorted_app_list=sorted(app_list,key=lambda x:datetime.strptime(x[2], "%Y-%m-%d %H:%M:%S")) + ans2=st.radio("Select",["View all appointments","View completed appointments","View uncompleted appointments"]) + if ans2=="View all appointments": + appointment_list = [] + col = ["Doctor Name", "Date and Time", "Status"] + appointment_list.append(col) + flag2=0 + for i in sorted_app_list: + if pat.patient_mail == i[1]: + flag2=1 + doc_name=pat.get_name(dr_list,i[0]) + appointment_list.append([doc_name,i[2],i[3]]) + st.table(appointment_list) + if flag2 == 0: + st.info("No appointments found!") + #only c + elif ans2=="View completed appointments": + appointment_list=[] + col=["Doctor Name","Date and Time","Status"] + appointment_list.append(col) + flag2=0 + for i in sorted_app_list: + if pat.patient_mail == i[1]: + if(i[3]=='C'): + flag2=1 + doc_name=pat.get_name(dr_list,i[0]) + appointment_list.append([doc_name,i[2],i[3]]) + st.table(appointment_list) + if(flag2==0): + st.info("No appointments found!") + #only nc + elif ans2=="View uncompleted appointments ": + appointment_list=[] + col=["Doctor Name","Date and Time","Status"] + appointment_list.append(col) + flag2=0 + for i in app_list: + if pat.patient_mail == i[1]: + if(i[3]=='NC'): + flag2=1 + doc_name=pat.get_name(dr_list,i[0]) + appointment_list.append([doc_name,i[2],i[3]]) + st.table(appointment_list) + if(flag2==0): + st.info("No appointments found!") + + + + + + + def Visulaisation(graph,pat): + + +# Load the dataset + data = pd.read_csv("Health Data.csv") + # Get the name of the person for whom we want to create the graph + person_mail = pat.patient_mail + person_name=pat.patient_name + # Filter the dataset to get only the data for the selected person + person_data = data[data['Patient Mail'] == person_mail] + # Loop through each row in the filtered dataset + for index, row in person_data.iterrows(): + # Create a chart for the current row + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'BMI': [row['BMI_1'], row['BMI_2'],row['BMI_3'],row['BMI_4'] ]}) + chart = alt.Chart(chart_data).mark_bar(color="#faca2b").encode( + x='Date', + y='BMI' + ).properties( + title=f"{person_name}'s BMI ", + width=500, + height=500) + # Display the chart + st.altair_chart(chart) + + for index, row in person_data.iterrows(): + # Create a chart for the current row + st.write(f"{person_name}'s BP ") + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'BP': [row['BP_1'], row['BP_2'],row['BP_3'],row['BP_4'] ]}) + + st.line_chart(chart_data.set_index('Date')) + + + for index, row in person_data.iterrows(): + # Create a chart for the current row + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'Cholestrol': [row['Cholesterol_1'], row['Cholesterol_2'],row['Cholesterol_3'],row['Cholesterol_4'] ]}) + chart = alt.Chart(chart_data).mark_bar(color="#09ab3b").encode( + x='Date', + y='Cholestrol' + ).properties( + title=f"{person_name}'s Cholestrol ", + width=500, + height=500 ) + # Display the chart + st.altair_chart(chart) + + + + + for index, row in person_data.iterrows(): + # Create a chart for the current row + st.write(f"{person_name}'s RBC ") + + + + + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'RBC': [row['RBC_1'], row['RBC_2'],row['RBC_3'],row['RBC_4'] ]}) + + + + + + # Display the chart + st.line_chart(chart_data.set_index('Date')) + + + + + for index, row in person_data.iterrows(): + # Create a chart for the current row + st.write(f"{person_name}'s WBC ") + + + + + chart_data = pd.DataFrame({'Date': [row['date_1'], row['date_2'],row['date_3'],row['date_4']], 'WBC': [row['WBC_1'], row['WBC_2'],row['WBC_3'],row['WBC_4'] ]}) + + + + + + # Display the chart + st.line_chart(chart_data.set_index('Date')) + + +#*********************************************************************************************************************# +dr_obj = doctor() +pat_obj = patient() +dr_list = [] + +# Read doctor details from CSV and append to the list of doctors +dr_list = dr_obj.read_csv_dr("Doctors.csv", dr_list) + + +# Read patient details for each doctor from CSV and append to the patient list of each doctor +n = len(dr_list) +for i in range(n): + path = dr_list[i].doctor_name+ ".csv" + #pat_obj.read_csv_patient(path, dr_list[i].patient_list) + dr_list[i].patient_list= pat_obj.read_csv_patient(path,dr_list[i].patient_list) + + + +# Streamlit app +st.title("Patient-Doctor Portal") +image=Image.open("Logo.png") +st.sidebar.image(image,caption=None,width=300,use_column_width=200,clamp=True,channels="RGB",output_format="auto") + + +while True: + + #choose = st.sidebar.radio("Select user", ["Login as Doctor", "Login as Patient", "SignUp as Doctor", "SignUp as Patient", "Terminate"],key="unique") + with st.sidebar: + choose=option_menu("", ["Login as Doctor","Login as Patient", "SignUp as Doctor","SignUp as Patient"], + icons=["house","house","house","house"], + menu_icon="cast", default_index=1, + styles={ + "container": {"padding": "5!important"}, + "icon": {"font-size": "25px"}, + "nav-link": {"font-size": "16px", "text-align": "left", "margin":"0px"}, + }) + if choose == "Login as Doctor": + dr_obj_login = dr_obj.login_doctor(dr_list) + if dr_obj_login is None: + st.write("Doctor not found") + else: + choose = 1 + while choose != 0: + choose = st.selectbox( + "Select an option:", + ["View Personal Details", "View Patient List","View Patient Details", "Share Patient Details", "Appointments","Prescribe Medication", "Logout"] + ) + + + + + if choose == "View Personal Details": + dr_obj_login.drPersonal_details( ) + st.write("Personal details displayed") + + + elif choose == "View Patient List": + st.write("Patient list displayed") + dr_obj_login.Patient_list(dr_obj_login) + + + elif choose == "View Patient Details": + dr_obj_login.Patient_personal_details(dr_obj_login) + + + elif choose == "Share Patient Details": + st.write("Patient details shared") + dr_obj_login.patient_sharing(dr_obj_login,dr_list) + + + elif choose == "Prescribe Medication": + + dr_obj_login. provide_medication(dr_obj_login) + + + elif choose == "Appointments": + dr_obj_login.appointment_dr(dr_obj_login,dr_list) + + elif choose == "Logout": + st.write("Logged out") + + + elif choose == "Login as Patient": + email=st.text_input("") + p_obj_login = patient() + if email=="": + st.write("Enter email ID") + else: + for i in range (len(dr_list)): + # search in every list + p_obj_login = p_obj_login.login_patient(email,dr_list[i].patient_list) + if p_obj_login.patient_id=="" :# patient mail is notfound continue for loop + continue + else: + break # else terminate the iteration + if p_obj_login.patient_mail=="" : + st.warning("Invalid mail ID!Please enter again:") + else : + choose = 1 + while choose != 0: + choose = st.selectbox("Select an option:", ["View Personal Details", "View Medical Details","Update Medical Details", "View scheduled appointments", + "Health Analysis","Logout"]) + if choose == "View Personal Details": + p_obj_login.Patient_personal_details() + + + elif choose == "View Medical Details": + p_obj_login.view_medical_details(p_obj_login) + + + elif choose == "Update Medical Details": + p_obj_login.update_medical_details(p_obj_login) + + + elif choose == "View scheduled appointments": + p_obj_login.view_pat_appointments(p_obj_login,dr_list) + + + elif choose=="Health Analysis": + p_obj_login.Visulaisation(p_obj_login) + elif choose=="Logout": + st.success("Logout successful!") + p_obj_login = None + break + + + + + elif choose == "SignUp as Doctor": + dr_obj.dr_signUp(dr_list) + + elif choose == "SignUp as Doctor": + dr_obj.dr_signUp(dr_list) + + elif choose == "SignUp as Patient": + pat_obj.patient_signUp(dr_list) + elif choose == "Terminate": + break + + + + + + + + + + + + + From 96579f96229f7956edf8bf42f45f8c6bac88c802 Mon Sep 17 00:00:00 2001 From: anushkachaudhari9405 <114808715+anushkachaudhari9405@users.noreply.github.com> Date: Sun, 30 Apr 2023 16:32:42 +0530 Subject: [PATCH 5/8] Add files via upload --- Codebrewers_SY_21/Python Code/Doctors.csv | 8 +++ .../Python Code/Dr. Ajay Kaul.csv | 11 ++++ .../Python Code/Dr. Rajeev Verma.csv | 14 +++++ .../Python Code/Dr. Sandeep Vaishya.csv | 12 +++++ .../Python Code/Dr. Soniya Singh .csv | 11 ++++ .../Python Code/Dr. Y K Mishra.csv | 11 ++++ Codebrewers_SY_21/Python Code/Health Data.csv | 51 ++++++++++++++++++ Codebrewers_SY_21/Python Code/Logo.png | Bin 0 -> 16631 bytes .../Python Code/appointments.csv | 7 +++ 9 files changed, 125 insertions(+) create mode 100644 Codebrewers_SY_21/Python Code/Doctors.csv create mode 100644 Codebrewers_SY_21/Python Code/Dr. Ajay Kaul.csv create mode 100644 Codebrewers_SY_21/Python Code/Dr. Rajeev Verma.csv create mode 100644 Codebrewers_SY_21/Python Code/Dr. Sandeep Vaishya.csv create mode 100644 Codebrewers_SY_21/Python Code/Dr. Soniya Singh .csv create mode 100644 Codebrewers_SY_21/Python Code/Dr. Y K Mishra.csv create mode 100644 Codebrewers_SY_21/Python Code/Health Data.csv create mode 100644 Codebrewers_SY_21/Python Code/Logo.png create mode 100644 Codebrewers_SY_21/Python Code/appointments.csv diff --git a/Codebrewers_SY_21/Python Code/Doctors.csv b/Codebrewers_SY_21/Python Code/Doctors.csv new file mode 100644 index 0000000..05b2b40 --- /dev/null +++ b/Codebrewers_SY_21/Python Code/Doctors.csv @@ -0,0 +1,8 @@ +Doctor Name,Phone No,Address,Email,Specialist,Age,Gender,Password,Degree,Year of Practice +Dr. Y K Mishra,9087678954,Kothrud Pune,ykmishra@gmail.com,Cardiac Surgeon,32,Male,mishra101,MD,7 +Dr. Sandeep Vaishya,8234536781,Hingne Colony Pune,vaishya@gmail.com,Neurosurgeon,20,Male,vaishya102,Mch DNB,10 +Dr. Rajeev Verma,7689081243,Magarpatta city Hadapsar Pune,vermadr@gmail.com,Orthopaedic and Joint Replacement Surgeon,15,Male,Verma103,MBBS Md Bams,15 +Dr. Ajay Kaul,8956197850,Koregaon Park Pune,kaulajay@gmail.com,Cardiac Surgeon,36,Male,Kaul104,Md,5 +Dr. Soniya Singh ,7834519087,Wakad Pune,soniyasingh@gmail.com,Liver Transplant Surgeon,21,Female,soniya105,MBBS MS FRCS FRCS,8 + +Anushka Chaudhari,7584393843,Pune,anushka@gmail.com,dentist,45,Female,anushka,BDA,7 diff --git a/Codebrewers_SY_21/Python Code/Dr. Ajay Kaul.csv b/Codebrewers_SY_21/Python Code/Dr. Ajay Kaul.csv new file mode 100644 index 0000000..2e61adf --- /dev/null +++ b/Codebrewers_SY_21/Python Code/Dr. Ajay Kaul.csv @@ -0,0 +1,11 @@ +Patient ID,Patient Name,Age,Address,Phone No,Gender,Email,Password,Past surgeries,Current diseases,Current medications,Current BP (mmHg),Current BMI,Current WBC,Current RBC,Blood Group,Height ,Weight +P202201,Dhananjay Mane,52,Dange Chowk Pune,8965320152,Male,dhananjay8@gmail.com,dhananjay01,Cesarean section.,Chlamydia. Cholera.,"Norfloxacin, trimethoprim-sulfamethoxazole (TMP-SMX), and ciprofloxacin",20.1,7000,2.3,4,O-ve,178,78 +P202202,Ganu Seth,63,Khadewali Chowk Pune,6352102458,Male,ganu.seth@gmail.com,ganu02,Organ replacement.,Congenital Rubella Syndrome. Coronavirus Disease 2019 (COVID-19),acetaminophen,22.4,7800,3.4,5.2,O-ve,180,65 +P202203,Rama Pawar,72,Karvenagar Pune,9632587962,Female,ramapawar@gmail.com,rama03,Joint replacement.,Creutzfeldt-Jakob Disease.,Paracetamol,23.4,5800,3.4,4.1,A-ve,177,45 +P202204,Prakash Patil,40,Kothrud Pune,8456123451,Male,prakashpatil@gmail.com,prakash04,Full hysterectomy.,Cytomegalovirus,Benznidazole,22.7,8900,1,5.6,A+ve,190,39 +P202205,Ashwini Kumble,26,Deccan Pune,7758963222,Female,ashwinik@gmail.com,ashwini05,Heart surgeries.,Acute myeloid leukaemia,AML Treatments,20.4,9000,3,4,B+ve,154,43 +P202206,Soumitra Wagh,17,Malad Mumbai,8569301254,Male,soumitrawagh@gmail.com,soumitra06,"Bariatric surgeries, including the gastric bypass.",Cat Scratch Disease.,oseltamivir,23.5,11000,4,4.9,A+ve,145,60 +P202207,Firoz Khan,34,FC Road Pune,7855596320,Male,firozkhan@gmail.com,firoz07,Appendectomy. ...,Chagas Disease (American trypanosomiasis),"Clarithromycin,Rifampin ,Trimethoprim-sulfamethoxazole.",18.5,4600,1,5,A-ve,162,56 +P202208,Lopez Albert,62,Kharadi Pune,9687546321,Male,Lopezalbert@gmail.com,lopez08,Breast biopsy. ...,Chickenpox (Varicella and Shingles),Benznidazole,19.8,8000,2.6,5.7,B+ve,177,78 +P202209,Atharva Kalamkar,13,Magarpatta Pune,7589632514,Male,atharvak@gmail.com,atharva09,Carotid endarterectomy. ...,Chikungunya.,"acyclovir (Zovirax, Sitavig)",18.9,9000,-3,4.8,B-ve,156,45 +P202210,Dhruv Patil,20,Yerwada Pune,6325698751,Male,dhruv.patil@gmail.com,dhruv10,Cataract surgery. ...,Paralysis,acetaminophen (Tylenol®),19.4,10000,-4,4,O-ve,155,56 diff --git a/Codebrewers_SY_21/Python Code/Dr. Rajeev Verma.csv b/Codebrewers_SY_21/Python Code/Dr. Rajeev Verma.csv new file mode 100644 index 0000000..38ea005 --- /dev/null +++ b/Codebrewers_SY_21/Python Code/Dr. Rajeev Verma.csv @@ -0,0 +1,14 @@ +Patient ID,Patient Name,Age,Address,Phone No,Gender,Email,Password,Past surgeries,Current diseases,Current medications,Current BP (mmHg),Current BMI,Current WBC,Current RBC,Blood Group,Height ,Weight +P202121,Tanisha Bodhwani,10,Swami Samarth Society Vashi Pune,9875642304,female,tanisha@gmail.com,tanisha21,Appendectomy. ...,Cat Scratch Disease.,"Clarithromycin,Rifampin ,Trimethoprim-sulfamethoxazole.",90,18.5,4600,1,A-ve,145,78 +P202122,Devyani Kalamkar,15,New Mankapur Naka Pune,8496578240,female,devikalmakar@gmail.com,devyani22,Breast biopsy. ...,Chagas Disease (American trypanosomiasis),Benznidazole,100,19.8,8000,2.6,A+ve,162,68 +P202123,Himanshu Gajbhiye,23,Hinjewadi Pune,9625785112,male,himanshu9874@gmail.com,himanshu23,Carotid endarterectomy. ...,Chickenpox (Varicella and Shingles),"acyclovir (Zovirax, Sitavig)",120,18.9,9000,-3,B-ve,177,45 +P202124,Tanmay Bhatt,33,Lane 15 Viman nagar Pune,9687521000,male,bhatttanmay@gmail.com,tanmay24,Cataract surgery. ...,Chikungunya.,acetaminophen (Tylenol®),80,19.4,10000,-4,B+ve,156,60 +P202125,Gaurav Shrivastava,48,Dhayari Pune,8654231500,male,gaurav3698@gmail.com,gaurav25,Cesarean section (also called a c-section). ...,Chlamydia. Cholera.,"Norfloxacin, trimethoprim-sulfamethoxazole (TMP-SMX), and ciprofloxacin",89,20.1,7000,2.3,O+ve,155,65 +P202126,Prabhakar Samarth,36,Shastri nagar Pune,9875126548,male,prabhakardahikar@gmail.com,prabhakar16,Cholecystectomy,Congenital Rubella Syndrome. Coronavirus Disease 2019 (COVID-19),acetaminophen,90,22.4,7800,3.4,O+ve,134,70 +P202127,Shubham Gujrathi,67,Tilak Nagar Mumbai,6254879533,male,shubham.gujrathi@gmail.com,shubham27,Coronary artery bypass. ...,Creutzfeldt-Jakob Disease.,Paracetamol,100,23.4,5800,3.4,B-ve,180,89 +P202128,Aditya Chahande,30,Kalyani Nagar West Mumbai,9687546213,male,aditya582@gmail.com,aditya28,"Debridement of wound, burn, or infection.",Cytomegalovirus,Benznidazole,110,22.7,8900,1,A-ve,177,88 +P202129,Gopal Goyal,69,Film city Koregaon park Pune,8795462310,male,gopalgoyal@gmail.com,gopal29,Hemorrhoidectomy.,Acute myeloid leukaemia,AML Treatments,109,20.4,9000,3,A+ve,190,45 +P202130,Aman Goyal,40,Pimpri Pune,8765423510,male,amangoyal@gmail.com,aman30,Hysteroscopy,Flu,oseltamivir,90,23.5,11000,4,A-ve,154,46 + + +P202101,Anjali Wagh,15,12 Lane5 manewada Pune,9875210542,Female,anjaliwagh17@gmail.com,anjali01 diff --git a/Codebrewers_SY_21/Python Code/Dr. Sandeep Vaishya.csv b/Codebrewers_SY_21/Python Code/Dr. Sandeep Vaishya.csv new file mode 100644 index 0000000..d6853f6 --- /dev/null +++ b/Codebrewers_SY_21/Python Code/Dr. Sandeep Vaishya.csv @@ -0,0 +1,12 @@ +Patient ID,Patient Name,Age,Address,Phone No,Gender,Email,Password,Past surgeries,Current diseases,Current medications,Current BP (mmHg),Current BMI,Current WBC,Current RBC +P202111,Swaropa Jha,32,South main road Koregaon Park Pune,8955623157,female,jha.swaroopa@gmail.com,swarropa11,Cesarean section.,Chlamydia. Cholera.,"Norfloxacin, trimethoprim-sulfamethoxazole (TMP-SMX), and ciprofloxacin",89,20.1,7000,2.3 +P202112,Saksham Kumar,45,15 kannamwar ward Phaltan,9562014576,male,kumar125@gmail.com,saksham12,Organ replacement.,Congenital Rubella Syndrome. Coronavirus Disease 2019 (COVID-19),acetaminophen,90,22.4,7800,3.4 +P202113,Rohit Kumar,32,91 Subhashnagar Kolhapur,9623657024,male,rohit_kumar@gmail.com,rohit13,Joint replacement.,Creutzfeldt-Jakob Disease.,Paracetamol,100,23.4,5800,3.4 +P202114,Prathmesh Dahikar,24,93 Chatrapati Chowk Kolhapur,6320458120,male,prathmesh458@gmail.com,prathmesh14,Full hysterectomy.,Cytomegalovirus,Benznidazole,110,22.7,8900,1 +P202115,Ritu Hedau,28,lane 5 Deccan Pune,9632587422,female,ritu.hedau@gmail.com,ritu15,Heart surgeries.,Acute myeloid leukaemia,AML Treatments,109,20.4,9000,3 +P202116,Ashish Nimje,35,Kumar Periwinkel Viman nagar Pune,6302487520,male,ashish895@gmail.com,ashish16,"Bariatric surgeries, including the gastric bypass.",Cat Scratch Disease.,oseltamivir,90,23.5,11000,4 +P202117,Asha Manapure,66,Kalyani Nagar Wadgaon Pune,7754620315,female,asha785@gmail.com,asha17,Appendectomy. ...,Chagas Disease (American trypanosomiasis),"Clarithromycin,Rifampin ,Trimethoprim-sulfamethoxazole.",90,18.5,4600,1 +P202118,Malhaar Nimje,3,vile parle east Mumbai,8564230515,male,"nimje785@gmail.com +",malhaar18,Breast biopsy. ...,Chickenpox (Varicella and Shingles),Benznidazole,100,19.8,8000,2.6 +P202119,Shobha Kanitkar,71,Lane 2 Tulsi Bagh Pune,9865723504,female,shobha.k@gmail.com,shobha19,Carotid endarterectomy. ...,Chikungunya.,"acyclovir (Zovirax, Sitavig)",120,18.9,9000,-3 +P202120,Suman Pidwani,12,Dombivali Mumbai,8459672160,female,suman.pid@gmail.com,suman20,Cataract surgery. ...,Paralysis,acetaminophen (Tylenol®),80,19.4,10000,-4 diff --git a/Codebrewers_SY_21/Python Code/Dr. Soniya Singh .csv b/Codebrewers_SY_21/Python Code/Dr. Soniya Singh .csv new file mode 100644 index 0000000..3279a70 --- /dev/null +++ b/Codebrewers_SY_21/Python Code/Dr. Soniya Singh .csv @@ -0,0 +1,11 @@ +Patient ID,Patient Name,Age,Address,Phone No,Gender,Email,Password,Past surgeries,Current diseases,Current medications,Current BP (mmHg),Current BMI,Current WBC,Current RBC,Blood Group,Height ,Weight +P202211,Priyanka Meshram,13,Magarpatta Pune,9856235478,Female,priyankameshram@gmail.com,priyanka11,Cesarean section.,Chlamydia. Cholera.,"Norfloxacin, trimethoprim-sulfamethoxazole (TMP-SMX), and ciprofloxacin",89,20.1,7000,2.3,A+ve,190,39 +P202212,Smith Singh,2,New Mankapur Naka Pune,9687562130,Male,smithsingh@gmail.com,smith12,Organ replacement.,Congenital Rubella Syndrome. Coronavirus Disease 2019 (COVID-19),acetaminophen,90,22.4,7800,3.4,B+ve,154,43 +P202213,Piyush Shende,45,Hinjewadi Pune,7896542302,Male,piyushshende@gmail.com,piyush13,Joint replacement.,Creutzfeldt-Jakob Disease.,Paracetamol,100,23.4,5800,3.4,B+ve,177,78 +P202214,Jay Bharne,30,Lane 15 Viman nagar Pune,8546215478,Male,jaybharne@gmail.com,jay14,Full hysterectomy.,Cytomegalovirus,Benznidazole,110,22.7,8900,1,B-ve,156,45 +P202215,Kashmira Giripunje,35,Dhayari Pune,6213018456,Female,kashmira785@gmail.com,kashmira15,Heart surgeries.,Acute myeloid leukaemia,AML Treatments,109,20.4,9000,3,O-ve,155,56 +P202216,Tanmay Pandav,41,Shastri nagar Pune,9875624560,male,tanmay896@gmail.com,tanmay16,"Bariatric surgeries, including the gastric bypass.",Cat Scratch Disease.,oseltamivir,90,23.5,11000,4,A+ve,145,60 +P202217,Jaffar Soudagar,32,Tilak Nagar Mumbai,8579642310,Male,jaffar96@gmail.com,jaffar17,Appendectomy. ...,Chagas Disease (American trypanosomiasis),"Clarithromycin,Rifampin ,Trimethoprim-sulfamethoxazole.",90,18.5,4600,1,A-ve,162,56 +P202218,Aranksha Meshram,10,Kalyani Nagar West Mumbai,9658745521,Female,aranksha23@gmail.com,aranksha18,Breast biopsy. ...,Chickenpox (Varicella and Shingles),Benznidazole,100,19.8,8000,2.6,O-ve,178,78 +P202219,Kashish Bajaj,30,Film city Koregaon park Pune,8975642990,Female,kashishbajaj@gmail.com,kashish19,Carotid endarterectomy. ...,Chikungunya.,"acyclovir (Zovirax, Sitavig)",120,18.9,9000,-3,O-ve,180,65 +P202220,vishal Kose,26,Pimpri Pune,8954796255,Male,vishalkose@gmail.com,vishal20,Cataract surgery. ...,Paralysis,acetaminophen (Tylenol®),80,19.4,10000,-4,A-ve,177,45 diff --git a/Codebrewers_SY_21/Python Code/Dr. Y K Mishra.csv b/Codebrewers_SY_21/Python Code/Dr. Y K Mishra.csv new file mode 100644 index 0000000..d580d8b --- /dev/null +++ b/Codebrewers_SY_21/Python Code/Dr. Y K Mishra.csv @@ -0,0 +1,11 @@ +Patient ID,Patient Name,Age,Address,Phone No,Gender,Email,Password,Past surgeries,Current diseases,Current medications,Current BP (mmHg),Current BMI,Current WBC,Current RBC +P202101,Anjali Wagh,15,12 Lane5 manewada Pune,9875210542,Female,anjaliwagh17@gmail.com,anjali01,Appendectomy,Malaria,B12,101.0,20.1,7000,2.5 +P202102,Mayuri Jain,20,15 Subhash nagar Pune,9630215478,Female,mayuri.jain@gmail.com,mayuri02,breast Biopsy,Creutzfeldt-Jakob Disease.,Paracetamol,23.5,110.0,7800,3.4 +P202103,Amar Goyal,80,16 Chatrapati nagar Pune,9624510278,Male,amar15@gmail.com,amar03,Carotid endarterectomy. ...,Cytomegalovirus,Benznidazole,109.0,23.4,5800,3.4 +P202104,Aditya Kadam,47,5 Ravivar Peth Latur,9825401547,Male,aditya82@gmail.com,aditya04,Cataract surgery. ...,Acute myeloid leukaemia,AML Treatments,90.0,22.7,8900,1.0 +P202105,Vaishnavi Godhad,25,101 Lane 2 Karvenagar Pune,8521450215,Female,vaishnavi452@gmail.com,vaishnavi05,Organ replacement.,Flu,oseltamivir,120.0,20.4,9000,3.0 +P202106,Ashish Shubh,41,35 Manindar Chowk Lonavala,6021530472,Male,ashish8521@gmail.com,ashish06,Joint replacement.,Cat Scratch Disease.,"Clarithromycin,Rifampin ,Trimethoprim-sulfamethoxazole.",80.0,23.5,11000,4.0 +P202107,Aditi Modi,38,11 Lane 9 Lakshminagar Pune,8524130785,Female,modiaditi@gmail.com,aditi07,Full hysterectomy.,Chagas Disease (American trypanosomiasis),Benznidazole,89.0,18.5,4600,1.0 +P202108,Hitesh Patel,55,12 Karve nagar Pune,9002151278,male,hiteshpatel@gmail.com,hitesh08,Heart surgeries.,Chickenpox (Varicella and Shingles),"acyclovir (Zovirax, Sitavig)",90.0,19.8,8000,2.6 +P202109,Sagar Karende,68,Lane 5 Kothrud pune,9620085210,male,sagar96@gmail.com,sagar09,Kidney Stones,Chikungunya.,acetaminophen (Tylenol®),90.0,18.9,9000,-3.0 +P202110,Samruddhi Samarth,17,Lane 9 Katraj pune,7220489630,female,sam7895@gmail.com,samruddhi10ss,Appendics,Chlamydia. Cholera.,"Norfloxacin, trimethoprim-sulfamethoxazole (TMP-SMX), and ciprofloxacin",100.0,19.4,10000,-4.0 diff --git a/Codebrewers_SY_21/Python Code/Health Data.csv b/Codebrewers_SY_21/Python Code/Health Data.csv new file mode 100644 index 0000000..2d4c499 --- /dev/null +++ b/Codebrewers_SY_21/Python Code/Health Data.csv @@ -0,0 +1,51 @@ +Patient Mail,date_1,BMI_1,Cholesterol_1,RBC_1,WBC_1,BP_1,date_2,BMI_2,Cholesterol_2,RBC_2,WBC_2,BP_2,date_3,BMI_3,Cholesterol_3,RBC_3,WBC_3,BP_3,date_4,BMI_4,Cholesterol_4,RBC_4,WBC_4,BP_4 +anjaliwagh17@gmail.com,16-08-2022,4,322,14.1,21,130,15-09-2022,4,315,12.9,7.65,160,15-10-2022,4,141,13.2,7.32,140,15-11-2022,5,250,15,5.5,138 +mayuri.jain@gmail.com,26-09-2022,2,564,35,8.79,115,27-10-2022,2,205,16,14.17,150,27-11-2022,4,237,40,18.93,120,27-12-2022,3,219,35,10.84,140 +amar15@gmail.com,12-08-2022,4,261,69,9.9,124,12-09-2022,2,417,14.5,33.91,136,12-10-2022,5,269,11.7,7.54,108,12-11-2022,4,267,69,9.5,125 +aditya82@gmail.com,03-06-2022,3,263,76,9.95,128,05-07-2022,3,195,11.7,7.22,128,05-08-2022,5,289,13,17.96,120,05-09-2022,3,303,76,85,192 +vaishnavi452@gmail.com,04-05-2022,3,269,16,14.15,120,02-06-2022,5,234,57,8.39,140,02-07-2022,5,254,31,18.9,130,02-08-2022,5,256,16,7.2,123 +ashish8521@gmail.com,28-07-2022,3,177,35,13.3,120,28-08-2022,4,198,16.7,14.17,140,18-09-2022,0,274,38,18.84,165,18-10-2022,5,204,35,7.36,112 +modiaditi@gmail.com,29-08-2022,5,256,38,6.7,130,29-09-2022,2,166,49,5.9,130,28-10-2022,5,222,11.7,7.54,130,28-11-2022,5,217,38,13.33,110 +hiteshpatel@gmail.com,12-07-2022,5,239,75,13.33,110,13-08-2022,4,178,12.6,16,105,13-09-2022,5,258,57,10.57,124,13-10-2022,5,308,75,12.82,132 +sagar96@gmail.com,05-08-2022,3,293,22,5,140,03-09-2022,5,249,15,10.84,138,23-10-2022,5,177,16.7,7.55,100,22-11-2022,2,193,22,8.6,112 +sam7895@gmail.com,04-06-2022,4,407,22,10.32,150,05-07-2022,3,281,15.9,10.84,120,05-08-2022,5,160,49,8.48,150,15-09-2022,4,228,22,9,112 +tanisha@gmail.com,09-09-2022,2,234,12,9.5,140,09-10-2022,2,126,71,5.5,174,07-11-2022,5,327,12.6,7.23,140,07-12-2022,5,231,12,8,120 +devikalmakar@gmail.com,20-10-2022,4,226,22,85,150,21-11-2022,4,305,57,10.84,120,21-12-2022,2,235,15,8.1,112,21-01-2023,5,244,22,8.35,108 +himanshu9874@gmail.com,22-11-2022,3,235,22,7.2,135,26-12-2022,5,226,61,10.84,150,27-01-2023,5,305,15.9,10.6,180,27-02-2023,4,262,22,21,130 +bhatttanmay@gmail.com,01-10-2022,2,234,22,7.36,142,11-11-2022,5,240,13.5,10.84,130,11-12-2022,4,304,71,18.11,110,11-01-2023,5,259,22,44.13,130 +gaurav3698@gmail.com,19-06-2022,2,303,22,13.33,140,18-07-2022,4,233,16.8,10.84,120,18-08-2022,5,295,57,10.85,158,18-09-2022,5,211,22,8.39,105 +prabhakardahikar@gmail.com,12-09-2022,5,149,12.2,12.82,134,12-10-2022,4,276,65,10.8,150,11-11-2022,0,271,61,10.82,135,11-12-2022,5,325,12.2,14.17,140 +shubham.gujrathi@gmail.com,09-08-2022,5,311,65,8.6,128,09-09-2022,4,261,75,10.3,145,09-10-2022,5,249,13.5,10.8,120,09-11-2022,2,254,65,5.9,128 +aditya582@gmail.com,06-05-2022,5,203,69,9,112,06-06-2022,4,319,13.2,33.91,150,06-07-2022,3,288,16.8,8.39,134,06-08-2022,4,197,69,16,120 +gopalgoyal@gmail.com,16-06-2022,5,211,13.6,8,140,18-07-2022,3,242,40,9.7,140,18-08-2022,4,226,65,7.72,120,18-09-2022,5,236,13.6,10.84,178 +amangoyal@gmail.com,17-09-2022,5,199,14.1,8.35,140,19-10-2022,5,243,11.7,4.5,136,19-11-2022,5,283,75,10.8,200,19-12-2022,5,282,14.1,10.84,120 +dhananjay8@gmail.com,12-07-2022,5,229,73,21,110,12-08-2022,3,260,13,7.4,118,12-09-2022,5,188,13.2,8.39,150,12-10-2022,5,234,73,21,150 +ganu.seth@gmail.com,19-06-2022,5,245,75,44.13,140,20-07-2022,3,354,31,9.26,108,20-08-2022,4,286,10,7.72,130,20-09-2022,5,254,75,8.79,130 +ramapawar@gmail.com,18-05-2022,4,303,13.7,9.51,120,20-06-2022,4,245,38,10.3,120,20-07-2022,2,274,70,21,120,20-08-2022,1,299,13.7,9.9,128 +prakashpatil@gmail.com,18-07-2022,5,204,28,8.6,130,18-08-2022,4,197,11.7,10.07,120,28-09-2022,3,360,13.5,8.79,122,28-10-2022,5,211,28,9.95,110 +ashwinik@gmail.com,29-07-2022,2,288,13.2,13.03,115,29-08-2022,2,223,57,13.6,156,29-09-2022,3,273,65,9.9,152,29-10-2022,5,182,13.4,14.15,180 +soumitrawagh@gmail.com,16-08-2022,3,275,40,7.4,112,16-09-2022,3,309,16.7,10.57,140,16-10-2022,4,201,11.7,9.95,160,16-11-2022,4,294,24,13.3,110 +firozkhan@gmail.com,25-10-2022,3,243,11.7,7.4,132,21-11-2022,3,208,49,7.23,106,21-10-2022,3,267,15,14.15,125,21-11-2022,0,298,18,6.7,130 +Lopezalbert@gmail.com,24-06-2022,1,295,13,7.6,130,24-07-2022,5,199,12.6,6.2,142,24-08-2022,5,196,13.8,13.3,160,24-09-2022,3,231,13.1,13.33,138 +atharvak@gmail.com,12-09-2022,5,230,31,37.51,138,12-10-2022,3,209,15,10.77,104,12-11-2022,5,201,67,6.7,120,12-12-2022,3,254,31,5,138 +dhruv.patil@gmail.com,22-10-2022,5,265,38,8.79,120,22-11-2022,5,236,15.9,8.1,94,22-12-2022,2,230,40,13.33,136,22-01-2023,4,196,21,10.32,160 +priyankameshram@gmail.com,20-11-2022,5,229,11.7,5,112,20-12-2022,4,218,71,8.8,120,20-01-2023,5,269,16.7,5,134,20-02-2023,2,240,13.3,9.5,140 +smithsingh@gmail.com,11-10-2022,1,228,57,7.2,110,11-11-2022,5,198,15,7.44,120,11-12-2022,3,212,15.9,10.32,117,11-01-2023,3,409,75,85,100 +piyushshende@gmail.com,19-08-2022,1,215,16.7,9,128,20-09-2022,5,270,35,7.44,146,20-10-2022,2,226,16.8,9.5,108,20-11-2022,1,172,75,7.2,120 +jaybharne@gmail.com,30-10-2022,5,326,49,13.01,160,29-11-2022,4,214,69,7.71,120,29-12-2022,1,246,63,85,112,29-01-2023,1,265,20,7.36,118 +kashmira785@gmail.com,09-08-2022,5,200,12.6,3.7,120,09-09-2022,5,201,76,0.01,150,09-10-2022,5,232,26,7.2,140,09-11-2022,5,246,12.6,13.33,138 +tanmay896@gmail.com,06-09-2022,4,256,15,44.13,170,16-10-2022,5,244,16,18.93,130,16-11-2022,0,177,20,7.36,120,16-12-2022,5,315,21,12.82,140 +jaffar96@gmail.com,19-06-2022,3,207,15.9,10.93,144,20-07-2022,5,208,35,7.54,110,20-08-2022,5,277,40,13.33,150,20-09-2022,4,184,12,8.6,150 +aranksha23@gmail.com,28-05-2022,4,273,71,8.47,130,28-06-2022,4,270,38,17.96,148,28-07-2022,3,249,100,12.82,142,28-08-2022,4,226,54,9,125 +kashishbajaj@gmail.com,18-07-2022,5,180,57,10.93,140,18-08-2022,4,306,75,18.9,128,19-09-2022,5,210,40,8.6,152,19-10-2022,4,246,21,8,129 +vishalkose@gmail.com,29-07-2022,2,222,61,12.56,160,29-08-2022,5,243,22,18.84,178,29-09-2022,4,207,23,9,125,29-10-2022,4,232,12,8.35,120 +jha.swaroopa@gmail.com,16-08-2022,4,223,13.5,12.91,130,26-09-2022,5,221,22,7.54,126,29-10-2022,5,212,59,8,118,29-11-2022,5,177,15,21,134 +kumar125@gmail.com,25-10-2022,5,209,16.8,7.4,122,25-11-2022,1,330,12,10.57,150,24-12-2022,5,271,11.7,8.35,132,24-01-2023,2,277,25,44.13,110 +rohit_kumar@gmail.com,24-06-2022,2,233,65,12.87,152,24-07-2022,3,266,22,7.55,140,24-08-2022,1,233,23,21,145,24-09-2022,5,249,14,9.51,102 +prathmesh458@gmail.com,12-09-2022,5,197,75,9.57,124,12-10-2022,4,206,22,8.48,130,12-11-2022,3,213,55,44.13,130,12-12-2022,4,210,28,8.6,130 +ritu.hedau@gmail.com,22-10-2022,4,218,13.2,6.3,130,21-11-2022,4,212,22,7.23,124,21-12-2022,4,283,12,8.39,110,21-01-2023,3,207,19,13.03,130 +ashish895@gmail.com,20-11-2022,2,211,10,7.8,101,22-12-2022,5,275,22,8.1,110,02-01-2023,4,282,12.3,14.17,148,02-02-2023,3,212,13.5,7.4,132 +asha785@gmail.com,11-10-2022,4,149,70,10.8,126,15-11-2022,4,302,12.2,10.6,125,25-12-2022,5,230,12.2,5.9,128,25-01-2023,4,271,28,0.01,108 +nimje785@gmail.com,19-08-2022,4,197,13.5,6.5,140,19-09-2022,5,234,65,18.11,110,19-10-2022,4,167,15.6,16,178,19-11-2022,5,233,30,18.93,140 +shobha.k@gmail.com,30-10-2022,3,246,65,5,118,30-11-2022,4,313,69,10.85,120,30-12-2022,1,224,13.8,10.84,126,30-01-2023,4,213,26,7.54,160 +suman.pid@gmail.com,09-08-2022,5,225,11.7,8.12,110,19-09-2022,3,244,13.6,10.82,100,19-10-2022,3,268,25,10.84,150,19-11-2022,5,283,12,17.96,140 diff --git a/Codebrewers_SY_21/Python Code/Logo.png b/Codebrewers_SY_21/Python Code/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..77b4bc8cd6930609077dfa350512ac886d39b5e5 GIT binary patch literal 16631 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 literal 0 HcmV?d00001 diff --git a/Codebrewers_SY_21/Python Code/appointments.csv b/Codebrewers_SY_21/Python Code/appointments.csv new file mode 100644 index 0000000..a31632b --- /dev/null +++ b/Codebrewers_SY_21/Python Code/appointments.csv @@ -0,0 +1,7 @@ +Of,With,DateTime,Status +ykmishra@gmail.com,mayuri.jain@gmail.com,2023-03-14 18:30:00,C +vaishya@gmail.com,amar15@gmail.com,2023-04-12 13:00:00,NC +kaulajay@gmail.com,vaishnavi452@gmail.com,2023-01-01 12:00:00,C +soniyasingh@gmail.com,ashish8521@gmail.com,2023-03-16 18:00:00,NC +ykmishra@gmail.com,mayuri.jain@gmail.com,2023-04-30 11:12:00,C +vermadr@gmail.com,aditya82@gmail.com,2023-05-16 00:30:00,NC From 15555ee35b96a30f03ede1c61453813d310a97c6 Mon Sep 17 00:00:00 2001 From: anushkachaudhari9405 <114808715+anushkachaudhari9405@users.noreply.github.com> Date: Sun, 30 Apr 2023 16:34:20 +0530 Subject: [PATCH 6/8] Project Description --- Project Description | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Project Description diff --git a/Project Description b/Project Description new file mode 100644 index 0000000..f84fcf4 --- /dev/null +++ b/Project Description @@ -0,0 +1,35 @@ +PROJECT DESCRIPTION +Objective: The objective of this project is to create a digitalized report management system that allows doctors and patients to connect online with digitalized sharing and store medical data of patients. The system aims to improve patient care and streamline communication between doctors and patients. + + + + +Features: + +Doctor functionalities: +View Personal Details: Doctors can view their basic information, such as name, address, and contact details. +View patient list: The doctor can view a list of all their patients along with their basic information and detailed information such as medical history, current medication , and visual analysis of patients health data +Share patient details: The doctor can share patient information with other doctors, such as referrals or consultations. +Appointments: The doctor can schedule appointments with patients and view upcoming appointments on their calendar. +Prescribe medications: Based on a patient's symptoms, the doctor can suggest appropriate medications and also he can update the disease and prescribe accordingly. + + + +Patient functionalities: +View personal details: Patients can view their basic information, such as name, address, and contact details. +View medical details: Patients can view their medical history, current medication, and Health rate. +View schedule appointments: Patients can view their scheduled appointments with the doctor. +Health analysis using graphs: Patients can view graphical representations of their health data, such as blood pressure, cholesterol , BMI, RBC, and WBC +Implementation: The program is implemented using Python programming language, and list data structure is used to store the data of patients and doctors. The data is stored in CSV format, which can be easily accessed and updated by the doctor. The program has also incorporate basic user interface for ease of use. +Overall, this project will help doctors and patients to connect more easily, and will improve the quality of patient care by providing more accurate and timely information to doctors virtually + + + + +Future Scope: +We are planning to add new features such as +Patient will be able to download pdf file of his data history and can share with the doctor that are not available in our application. +Instead of csv we can use DBMS for real life table of doctor and patient. +We can authenticate tables and files +Regional language support: System will allow users to write in their regional language, making it more accessible to non-English speaking users. +Use of some ML models to predict the accuracy of data. From 69b5f7603cea068464b0add12d3de1d19bc28d27 Mon Sep 17 00:00:00 2001 From: anushkachaudhari9405 <114808715+anushkachaudhari9405@users.noreply.github.com> Date: Sun, 30 Apr 2023 16:36:16 +0530 Subject: [PATCH 7/8] Create Project Demonstration --- Project Demonstration | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Project Demonstration diff --git a/Project Demonstration b/Project Demonstration new file mode 100644 index 0000000..0934344 --- /dev/null +++ b/Project Demonstration @@ -0,0 +1,8 @@ +Project Vedio Link: + +https://drive.google.com/file/d/1-wsqT1c_7ssvZ5dnD84SMkP5E5WVOMYq/view?usp=share_link + + +OverAll Project Link: + +https://drive.google.com/drive/folders/1HfSZsLB64iuMbIIEHl-nTD6_Eiv5Fz2T?usp=share_link From 7df261284cb1d112b5e910e51cc56298475952b4 Mon Sep 17 00:00:00 2001 From: anushkachaudhari9405 <114808715+anushkachaudhari9405@users.noreply.github.com> Date: Sun, 30 Apr 2023 23:32:37 +0530 Subject: [PATCH 8/8] Update Project Demonstration --- Project Demonstration | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Project Demonstration b/Project Demonstration index 0934344..623a100 100644 --- a/Project Demonstration +++ b/Project Demonstration @@ -1,6 +1,5 @@ Project Vedio Link: - -https://drive.google.com/file/d/1-wsqT1c_7ssvZ5dnD84SMkP5E5WVOMYq/view?usp=share_link +https://drive.google.com/file/d/17TzvqaR8nWgYj4z2qUA7eCiCr2CkAMir/view?usp=share_link OverAll Project Link: