# 《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 系统,满足课程设计中对功能性、鲁棒性与扩展性的要求,同时在架构设计上具备良好的工程实践价值。