0% found this document useful (0 votes)
3 views6 pages

Smart Hospital Data Management System

The document outlines a project for a Smart Hospital Patient Record and Data Management System, developed using Python, Tkinter, and MySQL. It includes functionalities for managing patient records, such as adding, viewing, and searching records, along with data visualization features for insights. The system is designed to streamline hospital data management through a user-friendly graphical interface.

Uploaded by

kowstubatlan
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views6 pages

Smart Hospital Data Management System

The document outlines a project for a Smart Hospital Patient Record and Data Management System, developed using Python, Tkinter, and MySQL. It includes functionalities for managing patient records, such as adding, viewing, and searching records, along with data visualization features for insights. The system is designed to streamline hospital data management through a user-friendly graphical interface.

Uploaded by

kowstubatlan
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Smart Hospital Patient Record and Data

Management System(Final GUI Project)

Developed By: Kowstub

Class: XII

Subject: Informatics Practices

1. Introduction
This project is developed to manage patient records and hospital data efficiently using a
graphical user interface, MySQL database, and data visualization tools. It supports easy CRUD
operations and generates useful insights through charts.

2. Requirements
●​ Python 3.2​

●​ Tkinter module for GUI​

●​ mysql-connector-python for DB connection​

●​ Pandas and Matplotlib for charting​

●​ MySQL Database Setup

import tkinter as tk
from tkinter import ttk, messagebox
import [Link]
import pandas as pd
import [Link] as plt
# Database connection and setup
def connectdb():
try:
conn = [Link](
host="localhost", # Your MySQL host
user="root", # Your MySQL username
password="password", # Your MySQL password
database="hospital" # Your database name
)
return conn
except [Link] as err:
[Link]("Connection Error", f"Could not connect to MySQL
Database!\n{err}")
return None

def createtable():
conn = connectdb()
if conn:
cursor = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS patients (
PatientID INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(100),
Age INT,
Gender VARCHAR(10),
Disease VARCHAR(200)
);
""")
[Link]()
[Link]()

# Functionalities
def addrecord():
name = [Link]()
age = [Link]()
gender = [Link]()
disease = [Link]()
if not (name and age and gender and disease):
[Link]("Input Error", "Please fill all fields!")
return
conn = connectdb()
if conn:
cursor = [Link]()
query = "INSERT INTO patients (Name, Age, Gender, Disease) VALUES (%s, %s, %s,
%s)"
try:
[Link](query, (name, age, gender, disease))
[Link]()
[Link]("Success", "Patient record added successfully!")
clearentries()
viewrecords()
except Exception as e:
[Link]("Error", f"Failed to add record: {e}")
finally:
[Link]()

def viewrecords():
for row in table.get_children():
[Link](row)
conn = connectdb()
if conn:
cursor = [Link]()
[Link]("SELECT * FROM patients")
rows = [Link]()
for row in rows:
[Link]('', [Link], values=row)
[Link]()

def searchrecords():
search_val = [Link]()
search_type_val = [Link]()
if not search_val:
[Link]("Input Error", "Please enter a search term!")
return
query = ""
if search_type_val == "Age":
query = "SELECT * FROM patients WHERE Age = %s"
elif search_type_val == "Disease":
query = "SELECT * FROM patients WHERE Disease LIKE %s"
search_val = f"%{search_val}%"
for row in table.get_children():
[Link](row)
conn = connectdb()
if conn:
cursor = [Link]()
[Link](query, (search_val,))
rows = [Link]()
if not rows:
[Link]("No Results", "No matching records found.")
for row in rows:
[Link]('', [Link], values=row)
[Link]()

def clearentries():
[Link](0, [Link])
[Link](0, [Link])
[Link](0, [Link])
[Link](None)
[Link](0, [Link])

def showcharts():
conn = connectdb()
if not conn:
return
df = pd.read_sql("SELECT Gender, COUNT(*) as Count FROM patients GROUP BY
Gender", conn)
[Link]()
if [Link]:
[Link]("No Data", "No records available for analysis!")
return
[Link](figsize=(7,7))
[Link](df['Count'], labels=df['Gender'], autopct='%1.1f%%', startangle=140)
[Link]("Patient Gender Distribution")
[Link]()

# Setup Menu
def setup_menu(root):
menubar = [Link](root)

patient_menu = [Link](menubar, tearoff=0)


patient_menu.add_command(label="Add Patient", command=addrecord)
patient_menu.add_command(label="View All Patients", command=viewrecords)
patient_menu.add_command(label="Search Patients", command=searchrecords)
patient_menu.add_separator()
patient_menu.add_command(label="Clear Fields", command=clearentries)
menubar.add_cascade(label="Patient Management", menu=patient_menu)

viz_menu = [Link](menubar, tearoff=0)


viz_menu.add_command(label="Gender Distribution Chart", command=showcharts)
menubar.add_cascade(label="Data Visualization", menu=viz_menu)
system_menu = [Link](menubar, tearoff=0)
system_menu.add_command(label="Exit", command=[Link])
menubar.add_cascade(label="System", menu=system_menu)

[Link](menu=menubar)

# Initialize Main Window


root = [Link]()
[Link]("Smart Hospital Patient Record and Data Management System")
[Link]("900x600")
[Link](bg="#eaf4ff")

# Title
title = [Link](root, text="Smart Hospital Patient Record and Data Management System",
font=("Arial", 20, "bold"), bg="#004080", fg="white", pady=10)
[Link](fill=tk.X)

# Patient Form Frame


formframe = [Link](root, bg="#eaf4ff")
[Link](pady=10)

[Link](formframe, text="Name:", bg="#eaf4ff").grid(row=0, column=0, padx=10, pady=5,


sticky='e')
nameentry = [Link](formframe)
[Link](row=0, column=1, padx=10, pady=5)

[Link](formframe, text="Age:", bg="#eaf4ff").grid(row=1, column=0, padx=10, pady=5,


sticky='e')
ageentry = [Link](formframe)
[Link](row=1, column=1, padx=10, pady=5)

[Link](formframe, text="Gender:", bg="#eaf4ff").grid(row=2, column=0, padx=10, pady=5,


sticky='e')
gendervar = [Link](value=None)
[Link](formframe, text="Male", variable=gendervar, value="Male",
bg="#eaf4ff").grid(row=2, column=1, sticky='w')
[Link](formframe, text="Female", variable=gendervar, value="Female",
bg="#eaf4ff").grid(row=2, column=2, sticky='w')

[Link](formframe, text="Disease:", bg="#eaf4ff").grid(row=3, column=0, padx=10, pady=5,


sticky='e')
diseaseentry = [Link](formframe)
[Link](row=3, column=1, padx=10, pady=5)
# Search Frame
searchframe = [Link](root, text="Search Patient Records", bg="#eaf4ff", font=("Arial",
12, "bold"))
[Link](padx=20, pady=10, fill=tk.X)

searchtype = [Link](value="Age")
[Link](searchframe, text="Age", variable=searchtype, value="Age",
bg="#eaf4ff").pack(side=[Link], padx=10)
[Link](searchframe, text="Disease", variable=searchtype, value="Disease",
bg="#eaf4ff").pack(side=[Link], padx=10)
searchentry = [Link](searchframe, width=40)
[Link](side=[Link], padx=10)
search_button = [Link](searchframe, text="Search", bg="#17a2b8", fg="white", width=15,
command=searchrecords)
search_button.pack(side=[Link], padx=10)

# Table Frame
tableframe = [Link](root)
[Link](padx=20, pady=10, fill=[Link], expand=True)

columns = ("PatientID", "Name", "Age", "Gender", "Disease")


table = [Link](tableframe, columns=columns, show="headings")

for col in columns:


[Link](col, text=col)
[Link](col, anchor=[Link], width=120)

scroll_y = [Link](tableframe, orient=[Link], command=[Link])


[Link](yscrollcommand=scroll_y.set)
scroll_y.pack(side=[Link], fill=tk.Y)
[Link](fill=[Link], expand=True)

# Setup The Menu


setup_menu(root)

# Create Table if Not Exists


createtable()

# Run Main Loop


[Link]()

You might also like