Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import sqlite3 | |
| from fpdf import FPDF | |
| import os | |
| # ---------------- DATABASE ---------------- | |
| conn = sqlite3.connect("hospital.db", check_same_thread=False) | |
| c = conn.cursor() | |
| c.execute(""" | |
| CREATE TABLE IF NOT EXISTS users ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| name TEXT, | |
| email TEXT, | |
| password TEXT, | |
| role TEXT | |
| ) | |
| """) | |
| c.execute(""" | |
| CREATE TABLE IF NOT EXISTS patients ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| name TEXT, | |
| age INTEGER, | |
| gender TEXT, | |
| phone TEXT | |
| ) | |
| """) | |
| c.execute(""" | |
| CREATE TABLE IF NOT EXISTS appointments ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| patient TEXT, | |
| doctor TEXT, | |
| date TEXT | |
| ) | |
| """) | |
| conn.commit() | |
| # ---------------- FUNCTIONS ---------------- | |
| def register(name, email, password, role): | |
| c.execute("INSERT INTO users(name,email,password,role) VALUES (?,?,?,?)", | |
| (name, email, password, role)) | |
| conn.commit() | |
| return "User registered successfully" | |
| def login(email, password): | |
| c.execute("SELECT * FROM users WHERE email=? AND password=?", (email, password)) | |
| user = c.fetchone() | |
| if user: | |
| return f"Welcome {user[1]} ({user[4]})" | |
| return "Invalid login" | |
| def add_patient(name, age, gender, phone): | |
| c.execute("INSERT INTO patients(name,age,gender,phone) VALUES (?,?,?,?)", | |
| (name, age, gender, phone)) | |
| conn.commit() | |
| return "Patient added" | |
| def view_patients(): | |
| c.execute("SELECT * FROM patients") | |
| return c.fetchall() | |
| def book_appointment(patient, doctor, date): | |
| c.execute("INSERT INTO appointments(patient,doctor,date) VALUES (?,?,?)", | |
| (patient, doctor, date)) | |
| conn.commit() | |
| return "Appointment booked" | |
| def generate_pdf(): | |
| c.execute("SELECT * FROM patients") | |
| data = c.fetchall() | |
| pdf = FPDF() | |
| pdf.add_page() | |
| pdf.set_font("Arial", size=12) | |
| pdf.cell(200, 10, "Hospital Patients Report", ln=True) | |
| for row in data: | |
| pdf.cell(200, 10, str(row), ln=True) | |
| file_path = "reports/patients.pdf" | |
| os.makedirs("reports", exist_ok=True) | |
| pdf.output(file_path) | |
| return file_path | |
| # ---------------- UI ---------------- | |
| with gr.Blocks(title="PRO Hospital System") as app: | |
| gr.Markdown("# 🏥 PRO Hospital Management System") | |
| with gr.Tab("Register"): | |
| register_btn = gr.Button("Register User") | |
| r = gr.Interface( | |
| fn=register, | |
| inputs=["text","text","text","text"], | |
| outputs="text" | |
| ) | |
| with gr.Tab("Login"): | |
| login_box = gr.Interface( | |
| fn=login, | |
| inputs=["text","text"], | |
| outputs="text" | |
| ) | |
| with gr.Tab("Patients"): | |
| patient_box = gr.Interface( | |
| fn=add_patient, | |
| inputs=["text","number","text","text"], | |
| outputs="text" | |
| ) | |
| gr.Dataframe(view_patients()) | |
| with gr.Tab("Appointments"): | |
| appointment_box = gr.Interface( | |
| fn=book_appointment, | |
| inputs=["text","text","text"], | |
| outputs="text" | |
| ) | |
| with gr.Tab("Reports"): | |
| pdf_btn = gr.Button("Generate PDF Report") | |
| pdf_output = gr.File() | |
| pdf_btn.click(generate_pdf, outputs=pdf_output) | |
| app.launch() |