Hospital Management System Using MySQL Connectivity and Tkinter GUI Python Project

Hospital Management System Using MySQL Connectivity and Tkinter GUI Python Project

Hospital Management System is a simple project developed in Python. Hospital Management System is a simple GUI based Desktop Application in Tkinter which is user Friendly and very easy to understand. This Project Contains Database.

 

Source Code:

import tkinter.messagebox
from tkinter import  *
import mysql.connector as sqlcon
import random as rd

con=sqlcon.connect(host="localhost",user="root",password="admin")#connection to mysql 
cur=con.cursor()
cur = con.cursor(buffered=True)
if (con):
    # Carry out normal procedure
    print ("Connection successful")
else:
    print ("Connection unsuccessful")
cur.execute("create database if not exists Hospital")
cur.execute("use Hospital")
cur.execute("create table if not exists appointment"
            "("
            "idno varchar(12) primary key,"
            "name char(50),"
            "age char(3),"
            "gender char(1),"
            "phone varchar(10),"
            "bg varchar(3))")
cur.execute("create table if not exists appointment_details"
            "("
            "idno varchar(12) primary key,"
            "doctor varchar(50),"
            "date varchar(20),"
            "time varchar(20),"
            "appointment_no varchar(10))")

#  Message for registration
def entry():
    global e1,e2,e3,e4,e5,e6
    p1=e1.get()
    p2=e2.get()
    p3=e3.get()
    p4=e4.get()
    p5=e5.get()
    p6=e6.get()

    query='insert into appointment values("{}", "{}", "{}", "{}", "{}", "{}")'.format(p1,p2,p3,p4,p5,p6)
    con.commit()
    cur.execute(query)
    
        
    
    tkinter.messagebox.showinfo("DONE", "YOU HAVE BEEN REGISTERED")

#  For registration 
def register():
    global e1,e2,e3,e4,e5,e6
    root1=Tk()
    label=Label(root1,text="REGISTER YOURSELF",font='arial 25 bold')
    label.pack()
    frame=Frame(root1,height=500,width=200)
    frame.pack()
    l1=Label(root1,text="AADHAR CARD NO.")
    l1.place(x=10,y=130)
    e1=tkinter.Entry(root1)
    e1.place(x=100,y=130)
    l2=Label(root1,text="NAME")
    l2.place(x=10,y=170)
    e2=tkinter.Entry(root1)
    e2.place(x=100,y=170)
    l3=Label(root1,text="AGE")
    l3.place(x=10,y=210)
    e3=tkinter.Entry(root1)
    e3.place(x=100,y=210)
    l4=Label(root1,text="GENDER M\F")
    l4.place(x=10,y=250)
    e4=tkinter.Entry(root1)
    e4.place(x=100,y=250)
    l5=Label(root1,text="PHONE")
    l5.place(x=10,y=290)
    e5=tkinter.Entry(root1)
    e5.place(x=100,y=290)
    l6=Label(root1,text="BLOOD GROUP")
    l6.place(x=10,y=330)
    e6=tkinter.Entry(root1)
    e6.place(x=100,y=330)
    b1=Button(root1,text="SUBMIT",command=entry)
    b1.place(x=150,y=370)
    
    
    root.resizable(False,False)
    root1.mainloop()

#  Message for appointment
def apo_details():
    global x1,x2,h,p1,p2,p3,o,x4,x3
    p1=x2.get()
    p2=x3.get()
    p3=x4.get()
    if int(p1)==1:
        i=("Dr. sharma \nRoom no:- 10")
        j=("Dr. Verma \nRoom no:- 11")
        q=(i,j)
        h=rd.choice(q) 
        u=(23,34,12,67,53,72)
        o=rd.choice(u)
        det=("Your appointment is fixed with",h,
             "\nDate:-",p2,
             "\nTime:-",p3,
             '\nappointment no:-',o)

        query='insert into appointment_details values("{}", "{}", "{}", "{}", "{}")'.format(p1,h,p2,p3,o)
        cur.execute(query)
        tkinter.messagebox.showinfo("APPOINTMENT DETAILS",det)
     
    elif int(p1)==2:
        i=("Dr. Sidharth \nRoom no. 16")
        j=("Dr. Tendulkar \nRoom no. 17")
        q=(i,j)
        h=rd.choice(q) 
        u=(23,34,12,67,53,72)
        o=rd.choice(u)        
        det=("Your appointment is fixed with",h,
             "\nDate:-",p2,
             "\nTime:-",p3,
             '\nappointment no:-',o)
        query='insert into appointment_details values("{}", "{}", "{}", "{}", "{}")'.format(p1,h,p2,p3,o)
        cur.execute(query) 
        tkinter.messagebox.showinfo("APPOINTMENT DETAILS",det)
     
    elif int(p1)==3:
        i=("Dr. Kumar \nRoom no. 12")
        j=("Dr. Khan \nRoom no. 13")
        q=(i,j)
        h=rd.choice(q) 
        u=(23,34,12,67,53,72)
        o=rd.choice(u)        
        det=("Your appointment is fixed with",h,
             "\nDate:-",p2,
             "\nTime:-",p3,
             '\nappointment no:-',o)
        query='insert into appointment_details values("{}", "{}", "{}", "{}", "{}")'.format(p1,h,p2,p3,o)
        cur.execute(query) 
        tkinter.messagebox.showinfo("APPOINTMENT DETAILS",det)

    elif int(p1)==4:
        i=("Dr. Virat, \nRoom no. 18")
        j=("Dr. Leo \nRoom no. 19")
        q=(i,j)
        h=rd.choice(q) 
        u=(23,34,12,67,53,72)
        o=rd.choice(u)        
        det=("Your appointment is fixed with",h,
             "\nDate:-",p2,
             "\nTime:-",p3,
             '\nappointment no:-',o)
        query='insert into appointment_details values("{}", "{}", "{}", "{}", "{}")'.format(p1,h,p2,p3,o)
        cur.execute(query)
        tkinter.messagebox.showinfo("APPOINTMENT DETAILS",det)
    elif int(p1)==5:
        i=("Dr. Kohli \nRoom no. 14")
        j=("Dr. singh \nRoom no. 15")
        q=(i,j)
        h=rd.choice(q) 
        u=(23,34,12,67,53,72)
        o=rd.choice(u)        
        det=("Your appointment is fixed with",h,
             "\nDate:-",p2,
             "\nTime:-",p3,
             '\nappointment no:-',o)
        query='insert into appointment_details values("{}", "{}", "{}", "{}", "{}")'.format(p1,h,p2,p3,o)
        cur.execute(query)
        tkinter.messagebox.showinfo("APPOINTMENT DETAILS",det)   
    elif int(p1)==6:
        i=("Dr. Irfan \nRoom no. 001")
        j=("Dr. John \nRoom no. 002")
        k=("Dr. Sanjay \nRoom no. 003")
        l=("Dr. Shahid \nRoom no. 004")
        q=(i,j,k,l)
        h=rd.choice(q) 
        u=(23,34,12,67,53,72)
        o=rd.choice(u)        
        det=("Your appointment is fixed with",h,
             "\nDate:-",p2,
             "\nTime:-",p3,
             '\nappointment no:-',o)
        query='insert into appointment_details values("{}", "{}", "{}", "{}", "{}")'.format(p1,h,p2,p3,o)
        cur.execute(query)
        tkinter.messagebox.showinfo("APPOINTMENT DETAILS",det)   
    else:
        tkinter.messagebox.showwarning('WRONG INPUT','PLEASE ENTER VALID VALUE')

#  For appointment
def get_apoint():
    global x1,x2,x3,x4
    p1=x1.get()  
    cur.execute('select * from appointment where idno=(%s)',(p1,))
    dat=cur.fetchall()
    a=[]
    for i in dat:
        a.append(i)   
    if len(a)==0:
        tkinter.messagebox.showwarning("ERROR", "NO DATA FOUND!!")
    else:
        root3=Tk()
        label=Label(root3,text="APPOINTMENT",font='arial 25 bold')
        label.pack()
        frame=Frame(root3,height=500,width=300)
        frame.pack()
        if i[3]=='M' or i[3]=='m':
                x="Mr."
                name2=Label(root3,text=i[1])
                name2.place(x=140,y=80)
        else:
                x="Mrs\Ms."
                name2=Label(root3,text=i[1])
                name2.place(x=170,y=80)
        for i in dat:
            name=Label(root3,text='WELCOME')
            name.place(x=50,y=80)
            name1=Label(root3,text=x)
            name1.place(x=120,y=80)
            age=Label(root3,text='AGE:-')
            age.place(x=50,y=100)
            age1=Label(root3,text=i[2])
            age1.place(x=100,y=100)
            phone=Label(root3,text='PHONE:-')
            phone.place(x=50,y=120)
            phone1=Label(root3,text=i[4])
            phone1.place(x=100,y=120)
            bg=Label(root3,text='BLOOD GROUP:-')
            bg.place(x=50,y=140)
            bg1=Label(root3,text=i[5])
            bg1.place(x=150,y=140)


        L=Label(root3,text='DEPARTMENTS')
        L.place(x=50,y=220)
        L1=Label(root3,text="1.Orthopaedic surgeon ")
        L1.place(x=50,y=250)
        L2=Label(root3,text='2.Physician')
        L2.place(x=50,y=270)
        L3=Label(root3,text='3.Nephrologist')
        L3.place(x=50,y=290)
        L4=Label(root3,text='4.Neurologist')
        L4.place(x=50,y=310)
        L5=Label(root3,text='5.Gynaecologist')
        L5.place(x=50,y=330)
        L6=Label(root3,text='6.X-ray')
        L6.place(x=50,y=350)
        L7=Label(root3,text='Enter your choice')
        L7.place(x=100,y=370)
        x2=tkinter.Entry(root3)
        x2.place(x=200,y=370)
        
        L7=Label(root3,text=('enter date')).place(x=100,y=400)
        x3=tkinter.Entry(root3)
        x3.place(x=200,y=400)

        L8=Label(root3,text=('enter time in 24 hour format')).place(x=48,y=430)
        x4=tkinter.Entry(root3)
        x4.place(x=200,y=430)
        
        B1=Button(root3,text='Submit',command=apo_details)
        B1.place(x=120,y=480)   
        root3.resizable(False,False)
        root3.mainloop()



#  For AADHAAR no input
def apoint():
    global x1
    root2=Tk()
    label=Label(root2,text="APPOINTMENT",font='arial 25 bold')
    label.pack()
    frame=Frame(root2,height=200,width=200)
    frame.pack()
    l1=Label(root2,text="AADHAAR NO.")
    l1.place(x=10,y=130)
    x1=tkinter.Entry(root2)
    x1.place(x=100,y=130)
    b1=Button(root2,text='Submit',command=get_apoint)
    b1.place(x=100,y=160)
    root2.resizable(False,False)
    root2.mainloop()
    
#  List of doctors
def lst_doc():
    root4=Tk()
    
    l=["Dr. sharma","Dr. Verma","Dr. Kumar","Dr. Khan","Dr. Kohli","Dr. singh","Dr. Sidharth","Dr. tendulkar","Dr. Virat","Dr. Leo",'Dr. Irfan','Dr. John',
       'Dr. Sanjay','Dr. Shahid']
    m=["Orthopaedic surgeon","Orthopaedic surgeon","Nephrologist","Nephrologist","Gynaecologist","Gynaecologist","Physician","Physician","Neurologist",
       "Neurologist",'X-ray','X-ray','X-ray','X-ray']
    n=[10,11,12,13,14,15,16,17,18,19,20,21,22,23]

    frame=Frame(root4,height=500,width=500)
    frame.pack()
    
    
    l1=Label(root4,text='NAME OF DOCTORS') 
    l1.place(x=20,y=10)
    count=20
    for i in l:
       count=count+20
       l=Label(root4,text=i)
       l.place(x=20,y=count)

    l2=Label(root4,text='DEPARTMENT')
    l2.place(x=140,y=10)
    count1=20
    for i in m:
       count1=count1+20
       l3=Label(root4,text=i)
       l3.place(x=140,y=count1)

    l4=Label(root4,text='ROOM NO')
    l4.place(x=260,y=10)
    count2=20
    for i in n:
       count2=count2+20
       l5=Label(root4,text=i)
       l5.place(x=260,y=count2)
    root.resizable(False,False)
    root4.mainloop()

def ser_avail():
    
    root5=Tk()
    frame=Frame(root5,height=500,width=500)
    frame.pack()
    l1=Label(root5,text='SERVICES AVAILABLE')
    l1.place(x=20,y=10)
    f=["ULTRASOUND","X-RAY","CT Scan","MRI","BLOOD COLLECTION","DIALYSIS","ECG","CHEMIST","LAB"]
    count1=20
    for i in f:
       count1=count1+20
       l3=Label(root5,text=i)
       l3.place(x=20,y=count1)
    l2=Label(root5,text='ROOM NO.')
    l2.place(x=140,y=10)
    g=[1,2,3,4,5,6,7,8,9]
    count2=20
    for i in g:
       count2=count2+20
       l4=Label(root5,text=i)
       l4.place(x=140,y=count2)
    l5=Label(root5,text='To avail any of these please contact on our no.:- 7042****55')
    l5.place(x=20,y=240)
    root5.resizable(False,False)
    root5.mainloop()

def modify():
    global x3,x4,choice,new,x5,root6
    p1=x3.get()
    cur.execute('select * from appointment where idno=(%s)',(p1,))
    
    dat=cur.fetchall()
    a=[]
    for i in dat:
        a.append(i)   
    if len(a)==0:
        tkinter.messagebox.showwarning("ERROR", "NO DATA FOUND!!")
    else: 
      root6=Tk()
      frame=Frame(root6,height=500,width=500)
      frame.pack()
      l1=Label(root6,text='DATA MODIFICATION',font="arial 15 bold")
      l1.place(x=75,y=10)
      l2=Label(root6,text='WHAT YOU WANT TO CHANGE')
      l2.place(x=50,y=200)
      l3=Label(root6,text='1.NAME')
      l3.place(x=50,y=220)
      l4=Label(root6,text='2.AGE')
      l4.place(x=50,y=240)
      l5=Label(root6,text='3.GENDER')
      l5.place(x=50,y=260)
      l6=Label(root6,text='4.PHONE')
      l6.place(x=50,y=280)
      l7=Label(root6,text='5.BLOOD GROUP')
      l7.place(x=50,y=300)
      x2=Label(root6,text='Enter')
      x2.place(x=50,y=330)
      x4=tkinter.Entry(root6)
      choice=x4.get()
      x4.place(x=100,y=330)
      for i in dat:
            name=Label(root6,text='NAME:-')
            name.place(x=50,y=80)
            name1=Label(root6,text=i[1])
            name1.place(x=150,y=80)
            age=Label(root6,text='AGE:-')
            age.place(x=50,y=100)
            age1=Label(root6,text=i[2])
            age1.place(x=150,y=100)
            gen=Label(root6,text='GENDER:-')
            gen.place(x=50,y=120)
            gen1=Label(root6,text=i[3])
            gen1.place(x=150,y=120)
            pho=Label(root6,text='PHONE:-')
            pho.place(x=50,y=140)
            pho1=Label(root6,text=i[4])
            pho1.place(x=150,y=140)
            bg=Label(root6,text='BLOOD GROUP:-')
            bg.place(x=50,y=160)
            bg1=Label(root6,text=i[5])
            bg1.place(x=150,y=160)
      b=Button(root6,text='Submit',command=do_modify)
      b.place(x=50,y=400)
      L1=Label(root6,text='OLD DETAILS')
      L1.place(x=50,y=50)
      L2=Label(root6,text='ENTER NEW DETAIL')
      L2.place(x=50,y=360)
      x5=tkinter.Entry(root6)
      new=x5.get()
      x5.place(x=160,y=360)

      root6.resizable(False,False)
      root6.mainloop()

def do_modify():
    global ad,x3,x4,x5
    ad=x3.get()
    choice=x4.get()
    new=x5.get()
    if choice=='1':
        cur.execute('update appointment set name={} where idno={}'.format(new,ad))
    elif choice=='2':
        cur.execute('update appointment set age={} where idno={}'.format(new,ad))		
    elif choice=='3':
        cur.execute('update appointment set gender={} where idno={}'.format(new,ad))
    elif choice=='4':
        cur.execute('update appointment set phone={} where idno={}'.format(new,ad))	
    elif choice=='5':
        cur.execute('update appointment set bg={} where idno={}'.format(new,ad))
    else:
        pass
    root6.destroy()
    tkinter.messagebox.showinfo("DONE", "YOUR DATA HAS BEEN MODIFIED")
    
choice=None
new=None	
ad=None
def mod_sub():
    global x3,ad
    root7=Tk()
    label=Label(root7,text="MODIFICATION",font='arial 25 bold')
    label.pack()
    frame=Frame(root7,height=200,width=200)
    frame.pack()
    l1=Label(root7,text="AADHAAR NO.")
    l1.place(x=10,y=130)
    x3=tkinter.Entry(root7)
    x3.place(x=100,y=130)
    ad=x3.get()
    b1=Button(root7,text='Submit',command=modify)
    b1.place(x=100,y=160)
    root7.resizable(False,False)
    root7.mainloop()     

def search_data():
    global x3,ad
    root7=Tk()
    label=Label(root7,text="SEARCH DATA",font='arial 25 bold')
    label.pack()
    frame=Frame(root7,height=200,width=200)
    frame.pack()
    l1=Label(root7,text="AADHAAR NO.")
    l1.place(x=10,y=130)
    x3=tkinter.Entry(root7)
    x3.place(x=100,y=130)
    ad=x3.get()
    b1=Button(root7,text='Submit',command=view_data)
    b1.place(x=100,y=160)
    root7.resizable(False,False)
    root7.mainloop()

def view_data():
    global p1
    p1=x3.get()
    cur.execute('select * from appointment where idno=(%s)',(p1,))
    
    dat=cur.fetchall()
    print(dat)
    a=[]
    for i in dat:
        a.append(i)   
    if len(a)==0:
        tkinter.messagebox.showwarning("ERROR", "NO DATA FOUND!!")
    else:
        det=a
        tkinter.messagebox.showinfo("APPOINTMENT DETAILS",det)
        
   
root=Tk()
label=Label(root,text="INDIAN HOSPITAL",font="arial 40 bold",bg='light blue')
b1=Button(text="Registration",font="arial 20 bold",bg='yellow',command=register)
b2=Button(text="Appointment",font="arial 20 bold",bg='yellow',command=apoint)
b3=Button(text="List of Doctors",font="arial 20 bold",bg='yellow',command=lst_doc)
b4=Button(text="Services available",font='arial 20 bold',bg='yellow',command=ser_avail)
b7=Button(text="View data",font='arial 20 bold',bg='yellow',command=search_data)
b5=Button(text="Modify existing data",font='arial 20 bold',bg='yellow',command=mod_sub)
b6=Button(text="Exit",font='arial 20 bold',command=root.destroy,bg='violet')
label.pack()
b1.pack(side=LEFT,padx=10)
b3.pack(side=LEFT,padx=10)
b4.pack(side=LEFT,padx=10)
b2.place(x=25,y=500)
b7.pack(side=LEFT,padx=10)
b5.place(x=350,y=500)
b6.place(x=800,y=500)
frame=Frame(root,height=600,width=50)
frame.pack()
root.resizable(False,False)
root.mainloop()

 

 

Output:

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *