php实现医院挂号
PHP实现医院挂号系统
医院挂号系统需要包含患者注册、医生管理、挂号预约、排队叫号等功能。以下是关键实现步骤:
数据库设计 创建必要的数据库表结构,例如患者表、医生表、科室表、挂号记录表等。示例SQL:
CREATE TABLE patients (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
id_card VARCHAR(18) UNIQUE,
phone VARCHAR(20),
password VARCHAR(255)
);
CREATE TABLE doctors (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT,
specialty TEXT
);
CREATE TABLE appointments (
id INT AUTO_INCREMENT PRIMARY KEY,
patient_id INT,
doctor_id INT,
appointment_date DATE,
time_slot VARCHAR(20),
status ENUM('pending', 'confirmed', 'canceled')
);
患者注册登录 实现患者注册和登录功能,使用PHP处理表单提交并验证数据:
// 注册处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$name = $_POST['name'];
$id_card = $_POST['id_card'];
$phone = $_POST['phone'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
// 插入数据库
$stmt = $pdo->prepare("INSERT INTO patients (name, id_card, phone, password) VALUES (?, ?, ?, ?)");
$stmt->execute([$name, $id_card, $phone, $password]);
}
挂号功能实现 创建挂号页面,允许患者选择科室、医生和时间:
// 获取可预约医生列表
$department_id = $_GET['department'];
$doctors = $pdo->query("SELECT * FROM doctors WHERE department_id = $department_id")->fetchAll();
// 处理挂号提交
if (isset($_POST['book_appointment'])) {
$patient_id = $_SESSION['patient_id'];
$doctor_id = $_POST['doctor_id'];
$date = $_POST['date'];
$time = $_POST['time'];
$stmt = $pdo->prepare("INSERT INTO appointments (patient_id, doctor_id, appointment_date, time_slot) VALUES (?, ?, ?, ?)");
$stmt->execute([$patient_id, $doctor_id, $date, $time]);
}
排队叫号系统 实现简单的排队逻辑,按挂号顺序叫号:
// 获取当前医生待诊列表
$doctor_id = $_SESSION['doctor_id'];
$queue = $pdo->query("SELECT a.id, p.name FROM appointments a JOIN patients p ON a.patient_id = p.id WHERE a.doctor_id = $doctor_id AND a.status = 'confirmed' ORDER BY a.appointment_date, a.time_slot")->fetchAll();
后台管理功能 创建管理员界面管理医生、科室和挂号记录:
// 添加新医生
if (isset($_POST['add_doctor'])) {
$name = $_POST['name'];
$department = $_POST['department'];
$specialty = $_POST['specialty'];
$stmt = $pdo->prepare("INSERT INTO doctors (name, department_id, specialty) VALUES (?, ?, ?)");
$stmt->execute([$name, $department, $specialty]);
}
安全注意事项
- 对所有用户输入使用预处理语句防止SQL注入
- 密码使用password_hash()加密存储
- 敏感操作需要验证用户权限
- 重要数据传输使用HTTPS
系统可进一步扩展功能如:

- 在线支付挂号费
- 检查报告查询
- 电子病历管理
- 短信通知提醒
实现时建议采用MVC架构分离业务逻辑和视图,使用PDO或ORM框架处理数据库操作,确保代码可维护性和安全性。






