391 lines
5.8 KiB
Markdown
391 lines
5.8 KiB
Markdown
# 《HIS 医疗管理系统设计说明书(2025级)》
|
||
|
||
(需求功能与系统约定)
|
||
|
||
---
|
||
|
||
# 一、系统概述
|
||
|
||
本系统为一个面向小型医院的轻量级医疗信息管理系统(Hospital Information System,简称 HIS),用于实现患者信息管理、诊疗记录管理、住院病房管理、药品管理以及多维度统计分析等功能。
|
||
|
||
系统采用 C++ 实现,整体结构划分为:
|
||
|
||
```text
|
||
his-core(核心业务逻辑层)
|
||
his-cli(命令行交互层)
|
||
storage(数据持久化层)
|
||
```
|
||
|
||
通过模块化设计,实现业务逻辑与交互界面的解耦,提高系统的可扩展性与可维护性。
|
||
|
||
---
|
||
|
||
# 二、系统设计目标
|
||
|
||
1. 实现一个完整的医院信息管理流程,包括挂号、诊疗、检查、住院、开药等功能
|
||
2. 支持至少:
|
||
|
||
* 100名门诊患者
|
||
* 30名住院患者
|
||
* 20名医生
|
||
* 5个科室
|
||
3. 支持多种查询与统计功能
|
||
4. 具备良好的鲁棒性,能够处理异常输入(测试工程师场景)
|
||
5. 全程基于链表实现数据存储
|
||
|
||
---
|
||
|
||
# 三、系统总体结构
|
||
|
||
系统采用分层架构:
|
||
|
||
```text
|
||
CLI层(用户交互)
|
||
↓
|
||
Service层(业务逻辑)
|
||
↓
|
||
Model层(数据实体)
|
||
↓
|
||
Storage层(链表 + 文件)
|
||
```
|
||
|
||
各层职责:
|
||
|
||
* CLI层:命令解析与结果输出
|
||
* Service层:业务规则处理
|
||
* Model层:数据结构定义
|
||
* Storage层:数据存储与文件持久化
|
||
|
||
---
|
||
|
||
# 四、数据实体与约定
|
||
|
||
## 4.1 通用约定
|
||
|
||
1. 所有实体均采用唯一ID作为主标识
|
||
2. 姓名允许重复(需支持重名情况)
|
||
3. 所有数据通过链表进行存储
|
||
4. 数据文件采用 JSON 数组格式存储
|
||
|
||
---
|
||
|
||
## 4.2 患者(Patient)
|
||
|
||
属性:
|
||
|
||
```text
|
||
PatientID(唯一)
|
||
姓名
|
||
年龄
|
||
性别
|
||
联系方式
|
||
状态(门诊 / 住院 / 已出院)
|
||
```
|
||
|
||
约定:
|
||
|
||
* 一个患者可对应多条医疗记录
|
||
* 支持模糊查询(按姓名)
|
||
|
||
---
|
||
|
||
## 4.3 医生(Doctor)
|
||
|
||
属性:
|
||
|
||
```text
|
||
DoctorID(唯一)
|
||
姓名
|
||
科室ID
|
||
职称(主任/副主任/主治/住院医师)
|
||
出诊时间
|
||
```
|
||
|
||
约定:
|
||
|
||
* 每个医生隶属于一个科室
|
||
* 每个科室至少3名医生
|
||
|
||
---
|
||
|
||
## 4.4 科室(Department)
|
||
|
||
属性:
|
||
|
||
```text
|
||
DepartmentID
|
||
名称
|
||
```
|
||
|
||
---
|
||
|
||
## 4.5 医疗记录(MedicalRecord)【核心】
|
||
|
||
属性:
|
||
|
||
```text
|
||
RecordID(唯一)
|
||
PatientID
|
||
DoctorID
|
||
类型(挂号 / 看诊 / 检查 / 住院)
|
||
时间
|
||
详细信息(结构化数据)
|
||
```
|
||
|
||
约定:
|
||
|
||
* 每个患者最多可有多条记录
|
||
* 记录必须关联患者与医生
|
||
* 记录不可直接修改(需撤销后重建)
|
||
|
||
---
|
||
|
||
## 4.6 病房与床位(Ward & Bed)
|
||
|
||
### 病房:
|
||
|
||
```text
|
||
WardID
|
||
类型(普通 / 特殊)
|
||
科室ID
|
||
床位数量
|
||
```
|
||
|
||
### 床位:
|
||
|
||
```text
|
||
BedID
|
||
所属病房
|
||
状态(空闲 / 已占用)
|
||
患者ID
|
||
```
|
||
|
||
约定:
|
||
|
||
* 一个床位同一时间只能属于一个患者
|
||
* 支持床位动态分配与释放
|
||
|
||
---
|
||
|
||
## 4.7 药品(Medicine)
|
||
|
||
属性:
|
||
|
||
```text
|
||
MedicineID
|
||
通用名
|
||
商品名
|
||
别名
|
||
库存数量
|
||
所属科室
|
||
单价
|
||
```
|
||
|
||
约定:
|
||
|
||
* 支持多名称匹配(通用名/商品名/别名)
|
||
* 库存不得为负
|
||
|
||
---
|
||
|
||
# 五、功能需求
|
||
|
||
---
|
||
|
||
## 5.1 数据管理功能
|
||
|
||
### (1)增加
|
||
|
||
* 添加患者信息
|
||
* 添加医生信息
|
||
* 添加医疗记录
|
||
* 添加药品信息
|
||
|
||
要求:
|
||
|
||
* 支持单条输入
|
||
* 支持文件批量导入
|
||
* 自动校验数据合法性
|
||
|
||
---
|
||
|
||
### (2)修改
|
||
|
||
* 支持修改患者信息
|
||
* 支持修改药品信息
|
||
|
||
约定:
|
||
|
||
* 医疗记录不可直接修改
|
||
* 修改记录需“撤销 + 重建”
|
||
|
||
---
|
||
|
||
### (3)删除
|
||
|
||
* 删除患者
|
||
* 删除记录
|
||
* 删除药品
|
||
|
||
约束:
|
||
|
||
* 删除需进行依赖检查(如患者是否仍在住院)
|
||
|
||
---
|
||
|
||
## 5.2 查询功能
|
||
|
||
支持多维度查询:
|
||
|
||
1. 按患者查询历史记录
|
||
2. 按医生查询诊疗情况
|
||
3. 按科室查询整体信息
|
||
4. 按药品名称查询库存
|
||
|
||
要求:
|
||
|
||
* 支持模糊查询
|
||
* 支持排序输出
|
||
|
||
---
|
||
|
||
## 5.3 住院管理功能
|
||
|
||
* 分配床位
|
||
* 出院处理
|
||
* 床位状态更新
|
||
|
||
约定:
|
||
|
||
* 若无空床,则拒绝住院
|
||
* 出院后自动释放床位
|
||
|
||
---
|
||
|
||
## 5.4 药房管理功能
|
||
|
||
* 药品入库
|
||
* 药品出库
|
||
* 处方发药
|
||
|
||
约定:
|
||
|
||
* 库存不足时禁止发药
|
||
* 每次开药数量有限制
|
||
|
||
---
|
||
|
||
## 5.5 报表与统计功能
|
||
|
||
系统需支持以下统计:
|
||
|
||
1. 医院营业额(检查+药品+住院费用)
|
||
2. 医生工作量统计
|
||
3. 当前住院患者报表
|
||
4. 床位使用率
|
||
5. 药品库存统计
|
||
|
||
扩展:
|
||
|
||
* 按时间范围统计
|
||
|
||
---
|
||
|
||
# 六、命令行交互设计(his-cli)
|
||
|
||
系统采用 REPL 模式:
|
||
|
||
```text
|
||
his > command args
|
||
```
|
||
|
||
示例:
|
||
|
||
```text
|
||
his add patient
|
||
his list patient
|
||
his find patient --name 张三
|
||
his admit P001
|
||
his discharge P001
|
||
his report doctor
|
||
```
|
||
|
||
设计原则:
|
||
|
||
* 命令清晰
|
||
* 参数灵活
|
||
* 支持错误提示
|
||
|
||
---
|
||
|
||
# 七、数据存储与持久化
|
||
|
||
采用文本文件存储:
|
||
|
||
```text
|
||
patients.txt
|
||
doctors.txt
|
||
records.txt
|
||
medicines.txt
|
||
wards.txt
|
||
```
|
||
|
||
约定:
|
||
|
||
* 文件内容为 JSON 数组
|
||
* 系统启动时加载
|
||
* 系统退出时保存
|
||
|
||
---
|
||
|
||
# 八、鲁棒性设计
|
||
|
||
系统需处理异常情况:
|
||
|
||
### 输入异常:
|
||
|
||
* 非法字符
|
||
* 空输入
|
||
* 超长字符串
|
||
* 格式错误
|
||
|
||
### 业务异常:
|
||
|
||
* 无空床
|
||
* 库存不足
|
||
* ID不存在
|
||
* 重复添加
|
||
|
||
### 极端情况:
|
||
|
||
* 大规模数据
|
||
* 全部重名
|
||
* 空数据系统
|
||
|
||
---
|
||
|
||
# 九、测试要求
|
||
|
||
系统需提供测试用例:
|
||
|
||
1. 正常流程测试
|
||
2. 异常输入测试
|
||
3. 极端情况测试
|
||
4. 文件导入测试
|
||
|
||
每个数据文件至少30条记录
|
||
|
||
---
|
||
|
||
# 十、扩展功能(可选)
|
||
|
||
1. 数据分析(预测床位需求)
|
||
2. 医生推荐系统
|
||
3. 药品消耗趋势分析
|
||
4. 多角色权限系统
|
||
|
||
---
|
||
|
||
# 十一、总结
|
||
|
||
本系统通过模块化设计,实现了一个具备完整医疗流程的轻量级 HIS 系统,满足课程设计中对功能性、鲁棒性与扩展性的要求,同时在架构设计上具备良好的工程实践价值。 |