PHP实现医院
PHP实现医院管理系统的基本功能
医院管理系统需要涵盖多个模块,包括患者管理、医生排班、药品库存、病历记录等。以下是一个基本的PHP实现框架:
数据库设计 创建MySQL数据库表结构,例如:
CREATE TABLE patients (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
gender VARCHAR(10),
age INT,
contact VARCHAR(20),
address TEXT
);
CREATE TABLE doctors (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
specialization VARCHAR(100),
contact VARCHAR(20)
);
患者管理模块
// 添加患者
function addPatient($name, $gender, $age, $contact, $address) {
global $conn;
$sql = "INSERT INTO patients (name, gender, age, contact, address)
VALUES ('$name', '$gender', $age, '$contact', '$address')";
return mysqli_query($conn, $sql);
}
医生排班模块

// 创建排班表
CREATE TABLE schedules (
id INT AUTO_INCREMENT PRIMARY KEY,
doctor_id INT,
day VARCHAR(10),
start_time TIME,
end_time TIME,
FOREIGN KEY (doctor_id) REFERENCES doctors(id)
);
// 添加排班
function addSchedule($doctor_id, $day, $start_time, $end_time) {
global $conn;
$sql = "INSERT INTO schedules (doctor_id, day, start_time, end_time)
VALUES ($doctor_id, '$day', '$start_time', '$end_time')";
return mysqli_query($conn, $sql);
}
安全性和验证
输入验证
function validatePatientData($data) {
$errors = [];
if(empty($data['name'])) $errors[] = "姓名不能为空";
if(!in_array($data['gender'], ['男','女'])) $errors[] = "性别无效";
if(!is_numeric($data['age']) || $data['age'] < 0) $errors[] = "年龄无效";
return $errors;
}
防止SQL注入

function safeQuery($conn, $sql, $params) {
$stmt = $conn->prepare($sql);
$types = str_repeat('s', count($params));
$stmt->bind_param($types, ...$params);
$stmt->execute();
return $stmt;
}
用户界面设计
登录系统
// 用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE,
password VARCHAR(255),
role ENUM('admin','doctor','staff')
);
// 登录验证
function authenticate($username, $password) {
global $conn;
$sql = "SELECT id, username, password, role FROM users WHERE username = ?";
$stmt = safeQuery($conn, $sql, [$username]);
$result = $stmt->get_result();
if($row = $result->fetch_assoc()) {
if(password_verify($password, $row['password'])) {
return $row;
}
}
return false;
}
报表生成功能
就诊统计
// 就诊记录表
CREATE TABLE appointments (
id INT AUTO_INCREMENT PRIMARY KEY,
patient_id INT,
doctor_id INT,
date DATE,
diagnosis TEXT,
FOREIGN KEY (patient_id) REFERENCES patients(id),
FOREIGN KEY (doctor_id) REFERENCES doctors(id)
);
// 生成月度报告
function generateMonthlyReport($month, $year) {
global $conn;
$start_date = "$year-$month-01";
$end_date = "$year-$month-31";
$sql = "SELECT d.name as doctor_name, COUNT(a.id) as appointment_count
FROM appointments a
JOIN doctors d ON a.doctor_id = d.id
WHERE a.date BETWEEN '$start_date' AND '$end_date'
GROUP BY a.doctor_id";
$result = mysqli_query($conn, $sql);
$report = [];
while($row = mysqli_fetch_assoc($result)) {
$report[] = $row;
}
return $report;
}
系统集成与API
RESTful API端点
// 获取患者信息API
$app->get('/api/patients/{id}', function ($request, $response, $args) {
$id = $args['id'];
$sql = "SELECT * FROM patients WHERE id = ?";
$stmt = safeQuery($this->db, $sql, [$id]);
$patient = $stmt->get_result()->fetch_assoc();
return $response->withJson($patient);
});
// 创建预约API
$app->post('/api/appointments', function ($request, $response) {
$data = $request->getParsedBody();
$sql = "INSERT INTO appointments (patient_id, doctor_id, date, diagnosis)
VALUES (?, ?, ?, ?)";
$stmt = safeQuery($this->db, $sql, [
$data['patient_id'],
$data['doctor_id'],
$data['date'],
$data['diagnosis']
]);
return $response->withJson(['status' => 'success']);
});
这个实现框架涵盖了医院管理系统的基本功能,可以根据实际需求进行扩展和完善。系统应采用MVC架构,分离业务逻辑和表现层,确保代码的可维护性和安全性。






