当前位置:首页 > PHP

PHP实现医院

2026-03-12 17:09:29PHP

PHP实现医院挂号系统

医院挂号系统通常包含患者注册、医生排班、挂号预约、缴费管理等功能模块。以下是一个基于PHP和MySQL的简化实现方案:

数据库设计

创建核心数据表结构:

PHP实现医院

CREATE TABLE patients (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    gender ENUM('男','女') NOT NULL,
    birth_date DATE,
    phone VARCHAR(20) UNIQUE,
    id_card VARCHAR(18) UNIQUE
);

CREATE TABLE departments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    description TEXT
);

CREATE TABLE doctors (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    department_id INT,
    title VARCHAR(50),
    FOREIGN KEY (department_id) REFERENCES departments(id)
);

CREATE TABLE schedules (
    id INT AUTO_INCREMENT PRIMARY KEY,
    doctor_id INT NOT NULL,
    date DATE NOT NULL,
    start_time TIME NOT NULL,
    end_time TIME NOT NULL,
    max_appointments INT DEFAULT 20,
    FOREIGN KEY (doctor_id) REFERENCES doctors(id)
);

CREATE TABLE appointments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    patient_id INT NOT NULL,
    schedule_id INT NOT NULL,
    status ENUM('待支付','已预约','已取消','已完成') DEFAULT '待支付',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (patient_id) REFERENCES patients(id),
    FOREIGN KEY (schedule_id) REFERENCES schedules(id)
);

核心功能实现

患者注册模块:

function registerPatient($name, $gender, $birthDate, $phone, $idCard) {
    global $db;
    $stmt = $db->prepare("INSERT INTO patients (name, gender, birth_date, phone, id_card) VALUES (?, ?, ?, ?, ?)");
    $stmt->execute([$name, $gender, $birthDate, $phone, $idCard]);
    return $db->lastInsertId();
}

医生排班管理:

PHP实现医院

function addDoctorSchedule($doctorId, $date, $startTime, $endTime, $maxAppointments) {
    global $db;
    $stmt = $db->prepare("INSERT INTO schedules (doctor_id, date, start_time, end_time, max_appointments) VALUES (?, ?, ?, ?, ?)");
    return $stmt->execute([$doctorId, $date, $startTime, $endTime, $maxAppointments]);
}

挂号预约功能:

function makeAppointment($patientId, $scheduleId) {
    global $db;

    // 检查号源是否已满
    $stmt = $db->prepare("SELECT COUNT(*) FROM appointments WHERE schedule_id = ? AND status IN ('待支付','已预约')");
    $stmt->execute([$scheduleId]);
    $current = $stmt->fetchColumn();

    $stmt = $db->prepare("SELECT max_appointments FROM schedules WHERE id = ?");
    $stmt->execute([$scheduleId]);
    $max = $stmt->fetchColumn();

    if ($current >= $max) {
        return false; // 号源已满
    }

    $stmt = $db->prepare("INSERT INTO appointments (patient_id, schedule_id) VALUES (?, ?)");
    return $stmt->execute([$patientId, $scheduleId]);
}

前端界面示例

挂号页面HTML片段:

<form action="make_appointment.php" method="post">
    <div class="form-group">
        <label>选择科室</label>
        <select name="department" id="department" class="form-control">
            <?php 
            $depts = $db->query("SELECT * FROM departments");
            foreach ($depts as $dept) {
                echo "<option value='{$dept['id']}'>{$dept['name']}</option>";
            }
            ?>
        </select>
    </div>

    <div class="form-group">
        <label>选择医生</label>
        <select name="doctor" id="doctor" class="form-control">
            <option value="">-- 请先选择科室 --</option>
        </select>
    </div>

    <div class="form-group">
        <label>选择日期</label>
        <input type="date" name="appointment_date" class="form-control">
    </div>

    <button type="submit" class="btn btn-primary">查询可预约时段</button>
</form>

系统安全考虑

  1. 使用预处理语句防止SQL注入
  2. 对敏感数据如身份证号进行加密存储
  3. 实现CSRF防护机制
  4. 对用户输入进行严格验证
  5. 重要操作记录日志

扩展功能建议

  1. 微信/支付宝支付接口集成
  2. 短信通知功能
  3. 电子病历系统对接
  4. 数据统计分析模块
  5. 移动端适配或APP开发

该系统需要根据具体医院需求进行调整和完善,建议采用MVC框架如Laravel或ThinkPHP进行开发,以提高代码可维护性和开发效率。

标签: 医院PHP
分享给朋友:

相关文章

PHP中实现重定向

PHP中实现重定向

PHP重定向的实现方法 在PHP中,重定向是通过发送HTTP头信息来实现的。以下是几种常见的重定向方法: 使用header()函数 header("Location: https://exampl…

PHP接口防重推荐实现

PHP接口防重推荐实现

防重实现方法 使用唯一请求标识符(UUID或业务ID)作为防重依据,客户端每次请求生成唯一标识,服务端校验该标识是否已处理过。适合短时间内的重复请求拦截。 // 客户端生成唯一标识 $request…

域名转短域名PHP实现

域名转短域名PHP实现

短域名服务的基本原理 短域名服务通过将长URL映射到更短的唯一字符串实现跳转。核心步骤包括生成短码、存储原始URL与短码的对应关系、通过短码重定向到原始URL。 生成短码的常见方法 Base62编码…

PHP实现markdown

PHP实现markdown

实现Markdown解析的基本方法 PHP中有多种方式可以实现Markdown解析功能,包括使用现有库、自定义解析器或结合前端工具。以下是几种常见的方法: 使用Parsedown库 Parsedow…

PHP实现OCR

PHP实现OCR

PHP实现OCR的方法 使用PHP实现OCR(光学字符识别)可以通过多种方式完成,以下为几种常见方法: 使用Tesseract OCR Tesseract是一个开源的OCR引擎,支持多种语言。可以通…

PHP 实现aop

PHP 实现aop

PHP 实现 AOP(面向切面编程) AOP(Aspect-Oriented Programming)是一种编程范式,用于将横切关注点(如日志、事务、权限等)从业务逻辑中分离出来。PHP 本身不原生支…