PHP_WORKS/modules/medical_records/view.php
2025-05-30 11:10:48 +08:00

335 lines
19 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>病历详情 - 电子病历系统</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
<link href="../../css/material.css" rel="stylesheet">
</head>
<body>
<header class="header">
<h1>
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"/>
</svg>
病历详情
</h1>
</header>
<nav class="nav-menu">
<ul>
<li><a href="../../index.php">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"/>
</svg>
仪表板
</a></li>
<li><a href="../patients/list.php">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"/>
</svg>
患者管理
</a></li>
<li><a href="../doctors/list.php">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M14.84,2.5C16.2,2.5 17.5,3.2 18.28,4.38L18.5,4.75L19.25,4.38C19.92,4 20.75,4.2 21.13,4.87C21.5,5.54 21.33,6.42 20.66,6.79L20.04,7.12C20.04,7.12 20.04,7.12 20.04,7.12C20.47,7.88 20.47,8.78 20.04,9.54L20.5,9.78C21.17,10.15 21.33,11.04 20.97,11.71C20.6,12.38 19.72,12.54 19.05,12.17L18.5,11.88C17.71,13.07 16.39,13.77 15.04,13.77C13.68,13.77 12.36,13.07 11.57,11.88L11,12.17C10.33,12.54 9.45,12.38 9.08,11.71C8.71,11.04 8.88,10.15 9.55,9.78L10,9.54C9.58,8.78 9.58,7.88 10,7.12L9.38,6.79C8.71,6.42 8.55,5.54 8.92,4.87C9.29,4.2 10.17,4 10.84,4.38L11.57,4.75C12.35,3.56 13.67,2.86 15.04,2.86M15.04,4.64C14.18,4.64 13.4,5.09 12.96,5.78L12.5,6.5L11.78,6.06C11.58,5.94 11.32,6 11.19,6.21C11.07,6.42 11.13,6.68 11.34,6.81L12.06,7.25L11.78,7.94C11.58,8.38 11.58,8.87 11.78,9.31L12.06,10L11.34,10.44C11.13,10.57 11.07,10.83 11.19,11.04C11.32,11.25 11.58,11.31 11.78,11.19L12.5,10.75L12.96,11.47C13.4,12.16 14.18,12.61 15.04,12.61C15.9,12.61 16.68,12.16 17.12,11.47L17.58,10.75L18.3,11.19C18.5,11.31 18.76,11.25 18.89,11.04C19.01,10.83 18.95,10.57 18.74,10.44L18.02,10L18.3,9.31C18.5,8.87 18.5,8.38 18.3,7.94L18.02,7.25L18.74,6.81C18.95,6.68 19.01,6.42 18.89,6.21C18.76,6 18.5,5.94 18.3,6.06L17.58,6.5L17.12,5.78C16.68,5.09 15.9,4.64 15.04,4.64M11,15.5V17.5H3V15.5C3,14.39 6.69,13.5 9.5,13.5C10.4,13.5 11.5,13.65 12.5,13.91C11.84,14.8 11.5,15.88 11.5,17C11.34,16.83 11.17,16.66 11,15.5M9.5,12A2.5,2.5 0 0,1 7,9.5A2.5,2.5 0 0,1 9.5,7A2.5,2.5 0 0,1 12,9.5A2.5,2.5 0 0,1 9.5,12Z"/>
</svg>
医生管理
</a></li>
<li><a href="list.php" class="active">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"/>
</svg>
病历管理
</a></li>
<li><a href="../departments/list.php">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"/>
</svg>
科室管理
</a></li>
<li><a href="../medications/list.php">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M17,3C18.1,3 19,3.9 19,5V8H21V10H19V19C19,20.1 18.1,21 17,21H7C5.9,21 5,20.1 5,19V10H3V8H5V5C5,3.9 5.9,3 7,3H17M7,5V8H17V5H7M7,10V19H17V10H7M9,12H15V14H9V12M9,15H13V17H9V15Z"/>
</svg>
药品管理
</a></li>
</ul>
</nav>
<div class="container">
<?php
include "../../conn/conn.php";
$record_id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
if ($record_id <= 0) {
echo '<div class="alert alert-error">无效的病历ID</div>';
exit;
}
$sql = "SELECT mr.*, p.name as patient_name, p.gender as patient_gender, p.birth_date, p.phone as patient_phone,
d.name as doctor_name, d.specialty, dept.name as department_name
FROM medical_records mr
JOIN patients p ON mr.patient_id = p.id
JOIN doctors d ON mr.doctor_id = d.id
JOIN departments dept ON mr.department_id = dept.id
WHERE mr.id = $record_id";
$result = mysqli_query($connID, $sql);
if (mysqli_num_rows($result) == 0) {
echo '<div class="alert alert-error">病历不存在</div>';
exit;
}
$record = mysqli_fetch_assoc($result);
$status_class = '';
switch($record['status']) {
case '待诊': $status_class = 'status-pending'; break;
case '就诊中': $status_class = 'status-processing'; break;
case '已完成': $status_class = 'status-completed'; break;
}
$age = '';
if($record['birth_date']) {
$today = new DateTime();
$birth = new DateTime($record['birth_date']);
$age = $today->diff($birth)->y . '岁';
}
?>
<div class="card">
<div class="card-header">
<div style="display: flex; justify-content: space-between; align-items: center;">
<h2 class="card-title">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"/>
</svg>
病历号MR<?php echo str_pad($record['id'], 6, '0', STR_PAD_LEFT); ?>
</h2>
<div>
<span class="status-badge <?php echo $status_class; ?>">
<?php echo $record['status']; ?>
</span>
</div>
</div>
<div style="margin-top: 16px;">
<?php if($record['status'] != '已完成'): ?>
<a href="edit.php?id=<?php echo $record['id']; ?>" class="btn btn-warning">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"/>
</svg>
编辑病历
</a>
<?php endif; ?>
<?php if($record['status'] == '待诊'): ?>
<a href="start.php?id=<?php echo $record['id']; ?>" class="btn btn-success">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M8,5.14V19.14L19,12.14L8,5.14Z"/>
</svg>
开始诊治
</a>
<?php endif; ?>
<?php if($record['status'] == '就诊中'): ?>
<a href="complete.php?id=<?php echo $record['id']; ?>" class="btn btn-success">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"/>
</svg>
完成诊治
</a>
<?php endif; ?>
<a href="../patients/view.php?id=<?php echo $record['patient_id']; ?>" class="btn btn-primary">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"/>
</svg>
查看患者
</a>
</div>
</div>
</div>
<div class="grid grid-2">
<div class="card">
<div class="card-header">
<h3 class="card-title">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"/>
</svg>
患者信息
</h3>
</div>
<div class="card-content">
<div style="display: grid; gap: 12px;">
<div style="display: flex; justify-content: space-between;">
<strong>姓名:</strong>
<span><?php echo htmlspecialchars($record['patient_name']); ?></span>
</div>
<div style="display: flex; justify-content: space-between;">
<strong>性别:</strong>
<span><?php echo $record['patient_gender']; ?></span>
</div>
<div style="display: flex; justify-content: space-between;">
<strong>年龄:</strong>
<span><?php echo $age ?: '未知'; ?></span>
</div>
<div style="display: flex; justify-content: space-between;">
<strong>联系电话:</strong>
<span><?php echo htmlspecialchars($record['patient_phone']); ?></span>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M14.84,2.5C16.2,2.5 17.5,3.2 18.28,4.38L18.5,4.75L19.25,4.38C19.92,4 20.75,4.2 21.13,4.87C21.5,5.54 21.33,6.42 20.66,6.79L20.04,7.12C20.04,7.12 20.04,7.12 20.04,7.12C20.47,7.88 20.47,8.78 20.04,9.54L20.5,9.78C21.17,10.15 21.33,11.04 20.97,11.71C20.6,12.38 19.72,12.54 19.05,12.17L18.5,11.88C17.71,13.07 16.39,13.77 15.04,13.77C13.68,13.77 12.36,13.07 11.57,11.88L11,12.17C10.33,12.54 9.45,12.38 9.08,11.71C8.71,11.04 8.88,10.15 9.55,9.78L10,9.54C9.58,8.78 9.58,7.88 10,7.12L9.38,6.79C8.71,6.42 8.55,5.54 8.92,4.87C9.29,4.2 10.17,4 10.84,4.38L11.57,4.75C12.35,3.56 13.67,2.86 15.04,2.86M15.04,4.64C14.18,4.64 13.4,5.09 12.96,5.78L12.5,6.5L11.78,6.06C11.58,5.94 11.32,6 11.19,6.21C11.07,6.42 11.13,6.68 11.34,6.81L12.06,7.25L11.78,7.94C11.58,8.38 11.58,8.87 11.78,9.31L12.06,10L11.34,10.44C11.13,10.57 11.07,10.83 11.19,11.04C11.32,11.25 11.58,11.31 11.78,11.19L12.5,10.75L12.96,11.47C13.4,12.16 14.18,12.61 15.04,12.61C15.9,12.61 16.68,12.16 17.12,11.47L17.58,10.75L18.3,11.19C18.5,11.31 18.76,11.25 18.89,11.04C19.01,10.83 18.95,10.57 18.74,10.44L18.02,10L18.3,9.31C18.5,8.87 18.5,8.38 18.3,7.94L18.02,7.25L18.74,6.81C18.95,6.68 19.01,6.42 18.89,6.21C18.76,6 18.5,5.94 18.3,6.06L17.58,6.5L17.12,5.78C16.68,5.09 15.9,4.64 15.04,4.64M11,15.5V17.5H3V15.5C3,14.39 6.69,13.5 9.5,13.5C10.4,13.5 11.5,13.65 12.5,13.91C11.84,14.8 11.5,15.88 11.5,17C11.34,16.83 11.17,16.66 11,15.5M9.5,12A2.5,2.5 0 0,1 7,9.5A2.5,2.5 0 0,1 9.5,7A2.5,2.5 0 0,1 12,9.5A2.5,2.5 0 0,1 9.5,12Z"/>
</svg>
医生信息
</h3>
</div>
<div class="card-content">
<div style="display: grid; gap: 12px;">
<div style="display: flex; justify-content: space-between;">
<strong>医生:</strong>
<span><?php echo htmlspecialchars($record['doctor_name']); ?></span>
</div>
<div style="display: flex; justify-content: space-between;">
<strong>专业:</strong>
<span><?php echo htmlspecialchars($record['specialty']); ?></span>
</div>
<div style="display: flex; justify-content: space-between;">
<strong>科室:</strong>
<span><?php echo htmlspecialchars($record['department_name']); ?></span>
</div>
<div style="display: flex; justify-content: space-between;">
<strong>就诊时间:</strong>
<span><?php echo date('Y年m月d日 H:i', strtotime($record['visit_date'])); ?></span>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"/>
</svg>
病历内容
</h3>
</div>
<div class="card-content">
<div class="grid grid-2">
<div>
<h4 style="color: #1976d2; margin-bottom: 8px;">主诉</h4>
<div style="padding: 12px; background: #f5f5f5; border-radius: 4px; margin-bottom: 16px;">
<?php echo $record['chief_complaint'] ? nl2br(htmlspecialchars($record['chief_complaint'])) : '<span style="color: #999;">未填写</span>'; ?>
</div>
<h4 style="color: #1976d2; margin-bottom: 8px;">现病史</h4>
<div style="padding: 12px; background: #f5f5f5; border-radius: 4px; margin-bottom: 16px;">
<?php echo $record['present_illness'] ? nl2br(htmlspecialchars($record['present_illness'])) : '<span style="color: #999;">未填写</span>'; ?>
</div>
<h4 style="color: #1976d2; margin-bottom: 8px;">体格检查</h4>
<div style="padding: 12px; background: #f5f5f5; border-radius: 4px;">
<?php echo $record['physical_examination'] ? nl2br(htmlspecialchars($record['physical_examination'])) : '<span style="color: #999;">未填写</span>'; ?>
</div>
</div>
<div>
<h4 style="color: #1976d2; margin-bottom: 8px;">诊断</h4>
<div style="padding: 12px; background: #e8f5e8; border-radius: 4px; margin-bottom: 16px;">
<?php echo $record['diagnosis'] ? nl2br(htmlspecialchars($record['diagnosis'])) : '<span style="color: #999;">未填写</span>'; ?>
</div>
<h4 style="color: #1976d2; margin-bottom: 8px;">治疗方案</h4>
<div style="padding: 12px; background: #fff3e0; border-radius: 4px; margin-bottom: 16px;">
<?php echo $record['treatment_plan'] ? nl2br(htmlspecialchars($record['treatment_plan'])) : '<span style="color: #999;">未填写</span>'; ?>
</div>
<?php if($record['notes']): ?>
<h4 style="color: #1976d2; margin-bottom: 8px;">备注</h4>
<div style="padding: 12px; background: #f5f5f5; border-radius: 4px;">
<?php echo nl2br(htmlspecialchars($record['notes'])); ?>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php
$prescriptions_sql = "SELECT p.*, m.name as medication_name, m.specification, m.unit
FROM prescriptions p
JOIN medications m ON p.medication_id = m.id
WHERE p.record_id = $record_id
ORDER BY p.created_at";
$prescriptions_result = mysqli_query($connID, $prescriptions_sql);
if(mysqli_num_rows($prescriptions_result) > 0):
?>
<div class="card">
<div class="card-header">
<h3 class="card-title">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M17,3C18.1,3 19,3.9 19,5V8H21V10H19V19C19,20.1 18.1,21 17,21H7C5.9,21 5,20.1 5,19V10H3V8H5V5C5,3.9 5.9,3 7,3H17M7,5V8H17V5H7M7,10V19H17V10H7M9,12H15V14H9V12M9,15H13V17H9V15Z"/>
</svg>
处方明细
</h3>
</div>
<div class="card-content">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>药品名称</th>
<th>规格</th>
<th>剂量</th>
<th>用法频次</th>
<th>疗程</th>
<th>用药说明</th>
</tr>
</thead>
<tbody>
<?php while($prescription = mysqli_fetch_assoc($prescriptions_result)): ?>
<tr>
<td><strong><?php echo htmlspecialchars($prescription['medication_name']); ?></strong></td>
<td><?php echo htmlspecialchars($prescription['specification']); ?></td>
<td><?php echo htmlspecialchars($prescription['dosage']); ?></td>
<td><?php echo htmlspecialchars($prescription['frequency']); ?></td>
<td><?php echo htmlspecialchars($prescription['duration']); ?></td>
<td><?php echo htmlspecialchars($prescription['instructions'] ?: '-'); ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</div>
</div>
</div>
<?php endif; ?>
<div style="margin-top: 24px; text-align: center;">
<a href="list.php" class="btn" style="background: #f5f5f5; color: #666;">
<svg class="icon" viewBox="0 0 24 24" fill="currentColor">
<path d="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"/>
</svg>
返回病历列表
</a>
</div>
<div style="margin-top: 16px; text-align: center; color: #666; font-size: 14px;">
创建时间:<?php echo date('Y年m月d日 H:i', strtotime($record['created_at'])); ?>
</div>
</div>
</body>
</html>