目录
主题以及小组成员
选择主题:医院病房管理系统
小组成员:黄柏玮,黄建宇,贡焜,宫正阳
小组分工(截止目前进度)
黄柏玮:关系模式的编写,物理结构的设计,视图的实现,博客的编写
黄建宇:概念模型的编写(E-R图),物理结构的设计,存储结构的实现
贡焜:逻辑结构的设计,存储功能的实现,物理结构的设计
宫正阳:基本信息的编写,触发器的编写,物理结构的设计
引言
医院病房管理系统是一种能够提高医院病房管理效率和质量的信息管理系统。 它通过对病房、病床、病人、医生和护士等信息的管理,实现了病房资源的合理分配和利用,提供了准确和实时的病房信息,方便医院管理人员进行决策和分析。
选题背景
某医院希望建立数据库来管理其主要业务信息,业务规则如下:
(1)一个科室有多个病房,多个医生;
(2)一个病房属于一个科室;
(3)一个医生只能属于一个科室,但可负责多个病人的诊治;
(4)一个病人的主管医生只有一人;
一.系统的各项功能
1.1.基本信息管理模块
- a.科室基本信息的录入,删除,修改,查询。
其中基本信息包括:科名,科地址,科电话,主任医生姓名等信息
b.病房基本信息的录入,删除,修改,查询。
其中基本信息包括:病房号,床位号,所属科室名等信息
c.医生基本信息的录入,删除,修改,查询。
其中基本信息包括:姓名,职称,所属科室名,年龄,工作证号等信息
d.病人基本信息的录入,删除,修改,查询。
其中基本信息包括:病历号,姓名,性别,诊断,主管医生,病房号等信息。
2、业务功能模块
1.2.业务功能模块
-
1.信息查询模块
病人信息查询
医生工作情况查询
查询负责病人最多的前 10 个的医生信息及其负责病人的个数
查询负责病人最多的前 10 个的科室信息及其负责病人的个数2.费用计算模块
住院所需费用:(出院日期-入院日期)* 病房收费标准。
设置存储过程,输入病人病历号和出院日期,计算住院费用。显示病历号,病人姓名,住院时间,病房收费标准,住院费用。
二.功能设计
2.1.信息查询模块
1.病人信息查询:设计一个存储过程,以病历号作为输入参数,检索病人的情况,包括病人病历号,病人姓名、主治医生姓名,诊断结果,病房号和病床号。
2.医生工作情况查询:设计一个存储过程,检索每一位医生的工作情况,包括医生工作证号,负责的病人姓名,没有治疗过任何病人的医生也应出现在结果中。
3.查询医生负责的病人人数:查询负责病人最多的前 10 个的医生信息及其负责的病人个数
4.查询科室负责的病人人数:查询负责病人最多的前 10 个的科室信息及其负责病人的个数
2.2.简易费用计算模块
住院费用:(出院日期-入院日期)* 病房收费标准。
三.数据库设计
3.1 各基本信息的关系模式
-
病人表(病历号,姓名,性别,诊断结果,病房号,病床号,入院日期,主治医师)
-
医生表(工作证号,姓名,职称,所属科室名,年龄)
-
科室表(科名,科电话,科地址,主任医生姓名)
-
病房表(病房号,所属科室名,收费标准,床位总数,已使用床位数)
3.2 各基本信息之间的联系
-
属于表(工作证号,科名)
-
包含表(病房号,科名)
-
入住表(病历号,病房号)
-
诊治(病历号,工作证号)
3.3 关系模式合并
1.病人表和入住表和诊治表的主码相同,可以将三个表进行合并
合并后的复合表:
病人表(病历号,姓名,性别,诊断结果,病房号,病床号,入院日期,主治医生)
2.医生表和属于表的主码相同,将两个表进行合并
合并后的复合表:
医生表(工作证号,姓名,职称,所属科室名,年龄)
3.病房表和包含表的主码相同,将两个表进行合并
合并后的复合表:
病房表(病房号,所属科室名,收费标准,床位总数,已使用床位数)
四.性能需求
4.1 响应时间要短
系统对用户请求的响应时间应在可接受范围内,确保用户操作的流畅性和体验。
对于关键功能,如紧急呼叫、病情记录等,响应时间应尽可能短,以支持及时响应和处理。
4.2 并发处理能力
系统应能够同时处理多个用户的请求,满足医疗机构高并发访问的需求。
应具备负载均衡和容错能力,确保在高并发情况下系统的稳定性和性能。
五.用户需求
5.1 易用性:
系统界面应简洁明了,易于用户操作和理解。
5.2 考虑用户需求
系统设计应充分照顾好用户需求,能够让用户方便使用
六.概念模型 (E-R图)
七.逻辑结构设计
病人 ( 病人姓名,身份证号,性别,年龄,电话号码,登录密码,入院日期,确诊结果 )
医生 ( 医生工号,医生姓名,身份证号,电话号码,职称,登录密码,所属科室 )
科室 ( 科室名,科室代码,科室主任,科室电话,科室地址 )
病房 ( 病房号,床位数,所属科室 ,收费标准 )
病床 ( 病房号 ,病床号 ,目前状态 )
管理员 ( 管理员账号,管理员密码,管理员等级 )
八.物理结构设计
8.1 病人信息表
8.2 医生信息表
8.3 科室信息表
8.4 病房信息表
8.5 病床信息表
8.6 管理员信息表
九. 简单的存储结构实现
create table 病人信息(
病人姓名 varchar(50),
身份证号 varchar(50) PRIMARY KEY ,
性别 varchar(50),
年龄 int,
电话号码 varchar(50),
登录密码 varchar(50),
入院日期 date,
确诊结果 varchar(50)
);
create table 医生信息(
医生工号 varchar(50) PRIMARY KEY ,
医生姓名 varchar(50),
身份证号 varchar(50),
电话号码 varchar(50),
职称 varchar(50),
登录密码 varchar(50),
所属科室 varchar(50),
FOREIGN KEY (所属科室) REFERENCES 科室信息(科室代码)
);
create table 科室信息(
科室名 varchar(50),
科室代码 varchar(50) PRIMARY KEY ,
科室主任 varchar(50),
科室电话 varchar(50),
科室地址 varchar(50),
FOREIGN KEY(科室主任) REFERENCES 医生信息(医生工号)
);
create table 病房信息(
病房号 varchar(50) PRIMARY KEY ,
床位数 varchar(50),
所属科室 varchar(50),
收费标准 int
);
create table 病床信息(
病房号 varchar(50),
病床号 varchar(50) PRIMARY KEY ,
目前状态 varchar(50),
FOREIGN KEY (病床号) REFERENCES 病房信息(病房号)
);
create table 管理员信息(
管理员账号 varchar(50),
管理员密码 varchar(50),
管理员等级 varchar(50)
);
十.视图
视图1: 病人基本信息视图
CREATE VIEW 病人基本信息 AS
SELECT 病人姓名, 性别, 年龄, 电话号码, 入院日期, 确诊结果
FROM 病人信息;
视图2: 科室和病房信息视图
CREATE VIEW 科室和病房信息 AS
SELECT
科室信息.科室名,
科室信息.科室代码,
科室信息.科室主任,
科室信息.科室电话,
科室信息.科室地址,
病房信息.病房号,
病房信息.床位数,
病房信息.收费标准
FROM
科室信息
JOIN
病房信息 ON 科室信息.科室名 = 病房信息.所属科室;
十一.触发器
CREATE TRIGGER 记录病床状态变化
AFTER UPDATE ON 病床信息
FOR EACH ROW
BEGIN
IF NEW.目前状态 <> OLD.目前状态 THEN
INSERT INTO 病床状态日志 (病房号, 病床号, 原状态, 新状态, 变更时间)
VALUES (OLD.病房号, OLD.病床号, OLD.目前状态, NEW.目前状态, NOW());
END IF;
END;
十二.存储过程
CREATE PROCEDURE 插入新病人信息(
IN p_病人姓名 varchar(50),
IN p_身份证号 varchar(50),
IN p_性别 varchar(50),
IN p_年龄 int,
IN p_电话号码 varchar(50),
IN p_登录密码 varchar(50),
IN p_入院日期 date,
IN p_确诊结果 varchar(50)
)
BEGIN
INSERT INTO 病人信息 (病人姓名, 身份证号, 性别, 年龄, 电话号码, 登录密码, 入院日期, 确诊结果)
VALUES (p_病人姓名, p_身份证号, p_性别, p_年龄, p_电话号码, p_登录密码, p_入院日期, p_确诊结果);
END;
更新信息:如更新病人电话号码
CREATE PROCEDURE 更新病人电话号码(
IN p_身份证号 varchar(50),
IN p_新电话号码 varchar(50)
)
BEGIN
UPDATE 病人信息
SET 电话号码 = p_新电话号码
WHERE 身份证号 = p_身份证号;
END ;
十三.数据流图
13.1顶层数据流图
13.2第0层数据流图
13.3第1层数据流图