Bootstrap

基于YOLO医院病房监控管理系统设计与实现

第1章 绪 论
1.1 课题背景
就我国现医疗卫生机构病房数情况而言,受整体医疗需求持续增长影响,我国病房数逐年增长。2023年,全国医疗卫生机构总诊疗人次45.2亿人次(不包含诊所、医务室、村卫生室数据),同比增长5.3%。2023年,医院病床使用率为80.8%,同比提高6.7个百分点。在中国,约30000个医院中只有30%的医院有属于自己的信息管理系统。
在这一背景下,将深度学习技术应用于医院病床监测系统,不仅是医疗技术发展的必然趋势,更是提高医疗服务效率和质量的关键。通过实时分析医院监控视频,YOLO V5不仅能够监控病床使用状况,还能辅助识别紧急医疗情况,比如患者跌倒,从而提升医院的应急响应速度和治疗效率。此外,为了提高数据处理效率并减轻客户端的负担,可以考虑将计算任务转移到配备强大服务器的云平台,通过Web技术动态展示患者的就诊流程、状态和结果[5][9]。
1.2 目的与意义
现如今病房检测系统装置从应用层向上说已然进入到商业画经营阶段。这既是市场的需求,也是技术发展的必然结果。信息时代的病房管理形式已经从传统的人管形式,向智能化,网络画的高科技管理形式过度。基于YOLO医院病房监控管理系统实现了对病房的实时状况进行检测与报警,为病患和患告都带来了便捷。该项目的意义在于,通过医院病房监控管理系统可以大大提高医院的信息化建设,实现医学大数据整合和应用,为医疗决策提供更加科学、精准的依据,同时大大提高了医生的工作效率。在当今网络化和数字化的时代背景下,远程智能视频监控为人们的生活安全提供了重要支持,同样地,该病床监测系统也将为医院环境的安全管理和服务水平提供创新的技术支撑[7]。
1.3 论文研究主要内容
本题使用YOLO、Python、Django框架、结合MySQL数据库、阿里云对象存储平台,设计并实现了医院病房监控管理,为病床数据的可视化管理和实时监控提供便利。设计并开发一个完整的病床监测系统。系统的设计将包括以下几个关键组件:首先是图像采集模块,该模块将使用医院内的摄像头实时捕获病房内的视频流。本系统主要角色包括管理员、用户。监控部分主要由硬件摄像头进行实现,软件平台包括管理端和用户端,后端通过Django框架与MySQL数据库实现接口开发,前端通过HTML进行页面显示。软件部分还将结合视频分析技术,采用YOLO训练分析模型,对视频流中每一帧图片进行实时分析,将异常状态进行标记、并作出警报,反馈给用户和管理员。
1.4 国内外研究现状
在国际上,医院自动化监控系统的研究和应用已取得显著进展,尤其是在患者监护和医疗资源管理等领域。先进国家的研究机构和医疗机构已经开始利用深度学习技术来提高医院服务的效率和安全性。在欧美等地,已有多项研究聚焦于利用人工智能进行病情监测和病床管理,例如通过分析患者的体态和活动模式来预测其健康状况和治疗需求(参见Smith等人在《医疗人工智能》杂志上的论文 [1])。
在中国,尽管此类研究起步较晚,但近年来已经取得了显著的进展。随着深度学习和人工智能技术在国内的快速发展,越来越多的研究机构和医疗单位开始关注并应用这些技术于医疗监控和管理中。例如,有研究聚焦于开发基于深度学习的图像识别系统,用以监控病房中的患者活动,实时检测并预防跌倒等事故的发生。同时,国内的一些研究也在探索如何利用大数据和智能算法来改善病床管理效率,例如通过分析历史数据来预测病床需求,从而帮助医院做出更为科学的决策。

第2章 关键技术介绍
CNN是深度学习中用于图像处理的主要神经网络类型,特别适用于图像识别和分类任务。在YOLO中,CNN用于提取图像特征并识别图像中的对象。通过层层卷积和池化操作,网络能够从基本的像素信息中学习到复杂的特征表示。通过技术如旋转、缩放、剪切等修改训练图像,可以增加模型的泛化能力。使用在大型数据集上预训练的模型,并在特定任务(如病房监控)上进行微调。这有助于在较小的数据集[6]得出来的结果,再通过研发平台为pycharm,语言选择python,框架选择django[2]对整个系统进行页面的开发。
2.1 MySQL
MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL是世界上最流行的和标准化的数据库语言,它使得存储、更新和存取信息更加容易。mysql数据库以其快速的运行,小的设备,低的维护费用,以及开源的优点,在世界范围内得到了越来越多的中小规模的站点使用[1]。
本系统考虑到实用性与便捷性采用MySQL数据库,本系统主要创建医生表、护士表、病人表、病房表等数据表,并在表中创建医生id、护士id、病房id等字段建立相关表格的关联关系。
2.2 Django
Django是应用于Web开发的高级动态语言框架,基于python的web框架开发,采用前后端分离的开发模式[4]。Django拥有完善的模板机制、对象关系映射机制以及用于动态创建后台管理界面的功能,利用Django,可以快速设计和开发具有MVC层次的Web应用。在实体映射方面,Django的对象相关映射机制帮助开发者在Python类中灵活定义数据模型,并且Django具有功能丰富的动态数据库访问 API,可以大幅度简化书写SQL语句的繁杂工作。同时Django支持包括Postgresql,MySQL,Sqlite,Oracle在内的多种后台数据库。
2.3 YOLO
YOLO是 "You only look once "的首字母缩写,是一个开源软件工具,它具有实时检测特定图像中物体的高效能力。YOLO算法使用卷积神经网络(CNN)模型来检测图像中的物体。该算法只需要通过给定的神经网络进行一次前向传播就能检测到图像中的所有物体。这使YOLO算法在速度上比其他算法更有优势,使其成为迄今为止最著名的检测算法之一。YOLO系列的端到端学习算法现在已经到了第五代[3]。
YOLO算法不仅通过其单前向传播能力提供了较高的检测速度和性能,而且还能非常准确和精确地检测它们。在本教程中,我们将重点介绍YOLO V5,它是YOLO软件的第五个也是最新的版本。我们将使用YOLO与著名的PyTorch库。PyTorch是一个深度学习开源包,它是基于著名的Torch库。它也是一个基于Python的库,更常用于自然语言处理和计算机视觉。

第3章 需求分析
3.1 功能性需求分析
系统主要功能模块分为管理端和用户端两个角色,具体功能如图3.1。

图 3.1系统功能图
本项目要实现一个针对医院病房监控管理系统的数据采集平台,主要包括管理端和用户端两个部分。监控部分主要由硬件摄像头进行实现,软件平台包括管理端和用户端,后端通过Django框架与MySQL数据库实现接口开发,前端通过HTML进行页面显示。软件部分还将结合视频分析技术,采用YOLO训练分析模型,对视频流中每一帧图片进行实时分析,将异常状态进行标记、并作出警报,反馈给用户和管理员。
系统主要功能模块分为管理端(图3.2)和用户端(图3.3)两个角色,具体功能如用例图如下图。

图3.2管理端用例图

图3.3用户端用例图

表3.1 目标检测用例描述
用例名称 目标检测
参与者 管理员
用例概述 管理员使用该用例完成目标检测的功能
前置条件 管理员已经登录,并且进入系统主页
后置条件 系统中上传一张图片
基本事件流 参与者动作 系统响应
1.管理员在系统主页面上点击“上传图片”。

3.管理选择一张图片。

6.显示分析后的数据

2.系统弹窗获取磁盘图片信息。

4.系统分析图片中病人的各种行为动作并形成数据。
5.将分析数据存入数据库。

备选事件流 2a.前端控制只能上传后缀名为图片的文件。
6a.分析后的数据若病人存在离床、占床等行为则弹窗警报。
表3.2 添加病房用例描述
用例名称 添加病房
参与者 管理员
用例概述 管理员使用该用例完成添加病房的功能
前置条件 管理员已经登录,并且进入管理病房页面
后置条件 系统中添加一条病房记录
基本事件流 参与者动作 系统响应
1.管理员在管理主页面上选择“病房管理”。

4.管理员在病房管理主页面上点击“增加”按钮。

6.管理员填写病房信息

8.点击“保存”按钮。

2.系统从数据库中获取病房信息列表。
3.系统打开病房信息页面。

5.系统跳转到新增病房界面

7.系统检查管理员输入的信息是正确有效的。

9.系统将病房添加到数据库中。
10.保存成功后系统自动跳转到病房列表
备选事件流 2a.系统数据库病房信息为空,界面显示为“没有数据”。
7a.系统验证管理员输入的病房编号是否已经存在,如果存在,则提示“病房编号已存在,请重新输入”。
7b.系统验证管理员输入的病房名称是否已经存在,如果存在,则提示“病房名称已存在,请重新输入”。
9a.系统录入过程发生错误,未完成操作,则提示“添加病房失败”。
表3.3 更新病房用例描述
用例名称 更新病房
参与者 管理员
用例概述 管理员使用该用例完成更新病房的功能
前置条件 管理员已经登录,并且进入管理病房页面
后置条件 系统中更新一条病房记录
基本事件流 参与者动作 系统响应
1.管理员在病房管理主页面上点击“病房名称”。
2.系统跳转到病房详细信息界面

4.管理员填写病房更新信息

6.点击“保存”按钮。

3.系统从数据库中获取病房信息。

5.系统检查管理员输入的信息是正确有效的。

7.系统将病房添加到数据库中。
8.保存成功后系统自动跳转到病房列表
备选事件流 5a.系统验证管理员输入的病房编号是否已经存在,如果存在,则提示“病房编号已存在,请重新输入”。
5b.系统验证管理员输入的病房名称是否已经存在,如果存在,则提示“病房名称已存在,请重新输入”。
7a.系统录入过程发生错误,未完成操作,则提示“添加病房失败”。
表3.4 添加医生用例描述
用例名称 添加医生
参与者 管理员
用例概述 管理员使用该用例完成添加医生的功能
前置条件 管理员已经登录,并且进入管理病房页面
后置条件 系统中添加一条病房记录
基本事件流 参与者动作 系统响应
1.管理员在管理主页面上选择“医生管理”。

4.管理员在医生管理主页面上点击“增加”按钮。

6.填写医生名称

8.管理员填写医生信息,点击“保存”按钮。

2.系统从数据库中获取医生信息列表。
3.系统打开医生信息页面。

5.系统跳转到新增医生界面

7.系统检查管理员输入的信息是正确有效的。

9.系统将医生信息添加到数据库中。
10.保存成功后系统自动跳转到医生列表
备选事件流 2a.系统数据库医生信息为空,界面显示为“没有数据”。
7a.系统验证管理员输入的医生编号是否已经存在,如果存在,则提示“医生编号已存在,请重新输入”。
7b.系统验证管理员输入的病房名称是否已经存在,如果存在,则提示“医生名称已存在,请重新输入”。
9a.系统录入过程发生错误,未完成操作,则提示“添加医生失败”。
表3.5 更新医生用例描述
用例名称 更新医生
参与者 管理员
用例概述 管理员使用该用例完成更新医生的功能
前置条件 管理员已经登录,并且进入管理医生页面
后置条件 系统中更新一条医生记录
基本事件流 参与者动作 系统响应
1.管理员在医生管理主页面上点击“医生名称”。
2.系统跳转到医生详细信息界面

4.管理员填写医生更新信息

6.点击“保存”按钮。

3.系统从数据库中获取医生信息。

5.系统检查管理员输入的信息是正确有效的。

7.系统将医生添加到数据库中。
8.保存成功后系统自动跳转到医生列表
备选事件流 5a.系统验证管理员输入的医生编号是否已经存在,如果存在,则提示“医生编号已存在,请重新输入”。
5b.系统验证管理员输入的医生名称是否已经存在,如果存在,则提示“医生名称已存在,请重新输入”。
7a.系统录入过程发生错误,未完成操作,则提示“添加医生失败”。
表3.6 添加护士用例描述
用例名称 添加护士
参与者 管理员
用例概述 管理员使用该用例完成添加护士的功能
前置条件 管理员已经登录,并且进入管理病房页面
后置条件 系统中添加一条病房记录
基本事件流 参与者动作 系统响应
1.管理员在管理主页面上选择“护士管理”。

4.管理员在护士管理主页面上点击“增加”按钮。

6.填写护士名称

8.管理员填写护士信息,点击“保存”按钮。

2.系统从数据库中获取护士信息列表。
3.系统打开护士信息页面。

5.系统跳转到新增护士界面

7.系统检查管理员输入的信息是正确有效的。

9.系统将护士信息添加到数据库中。
10.保存成功后系统自动跳转到护士列表
备选事件流 7a.系统验证管理员输入的护士编号是否已经存在,如果存在,则提示“护士编号已存在,请重新输入”。
7b.系统验证管理员输入的护士名称是否已经存在,如果存在,则提示“护士名称已存在,请重新输入”。
9a.系统录入过程发生错误,未完成操作,则提示“添加护士失败”。
表3.7 更新护士用例描述
用例名称 更新护士
参与者 管理员
用例概述 管理员使用该用例完成更新护士的功能
前置条件 管理员已经登录,并且进入管理护士页面
后置条件 系统中更新一条护士记录
基本事件流 参与者动作 系统响应
1.管理员在护士管理主页面上点击“护士名称”。
2.系统跳转到护士详细信息界面

4.管理员填写护士更新信息

6.点击“保存”按钮。

3.系统从数据库中获取护士信息。

5.系统检查管理员输入的信息是正确有效的。

7.系统将护士添加到数据库中。
8.保存成功后系统自动跳转到护士列表
备选事件流 5a.系统验证管理员输入的护士编号是否已经存在,如果存在,则提示“护士编号已存在,请重新输入”。
5b.系统验证管理员输入的护士名称是否已经存在,如果存在,则提示“护士名称已存在,请重新输入”。
7a.系统录入过程发生错误,未完成操作,则提示“添加护士失败”。
表3.8 添加病人用例描述
用例名称 添加病人
参与者 管理员
用例概述 管理员使用该用例完成添加病人的功能
前置条件 管理员已经登录,并且进入管理病房页面
后置条件 系统中添加一条病房记录
基本事件流 参与者动作 系统响应
1.管理员在管理主页面上选择“病人管理”。

4.管理员在病人管理主页面上点击“增加”按钮。

6.填写病人名称

8.管理员填写病人信息,点击“保存”按钮。

2.系统从数据库中获取病人信息列表。
3.系统打开病人信息页面。

5.系统跳转到新增病人界面

7.系统检查管理员输入的信息是正确有效的。

9.系统将病人信息添加到数据库中。
10.保存成功后系统自动跳转到病人列表
备选事件流 7a.系统验证管理员输入的病人编号是否已经存在,如果存在,则提示“病人编号已存在,请重新输入”。
7b.系统验证管理员输入的病房名称是否已经存在,如果存在,则提示“病人名称已存在,请重新输入”。
9a.系统录入过程发生错误,未完成操作,则提示“添加病人失败”。
表3.9 更新病人用例描述
用例名称 更新病人
参与者 管理员
用例概述 管理员使用该用例完成更新病人的功能
前置条件 管理员已经登录,并且进入管理病人页面
后置条件 系统中更新一条病人记录
基本事件流 参与者动作 系统响应
1.管理员在病人管理主页面上点击“病人名称”。
2.系统跳转到病人详细信息界面

4.管理员填写病人更新信息

6.点击“保存”按钮。

3.系统从数据库中获取病人信息。

5.系统检查管理员输入的信息是正确有效的。

7.系统将病人添加到数据库中。
8.保存成功后系统自动跳转到病人列表
备选事件流 5a.系统验证管理员输入的病人编号是否已经存在,如果存在,则提示“病人编号已存在,请重新输入”。
5b.系统验证管理员输入的病人名称是否已经存在,如果存在,则提示“病人名称已存在,请重新输入”。
7a.系统录入过程发生错误,未完成操作,则提示“添加病人失败”。
3.2 非功能性需求
该系统专注于实现病人在床位监测、空床状态识别和病人离床行为监测核心功能。检测目标病人是否在病床上是否有离床、占床等行为,并可对监测的数据进行处理分析,
该系统在安全方面采取数据和功能都受到保护,不受到非法访问和恶意攻击的威胁。具备严格的身份验证和访问控制机制,只有经过授权的用户才能访问系统的敏感数据和功能。同时,该系统应具备防止恶意攻击的安全防护措施。
该系统界面的易用性和用户满意度。该系统界面简洁明了,操作逻辑清晰,用户能够轻松上手和操作。同时,还具备响应式的界面设计,适应不同的屏幕尺寸和设备类型。该系统还提供良好的用户反馈机制,及时回应用户的操作和需求。
3.3 系统原型
基于YOLO医院病房监控管理系统设计与实现由两端组成,分别是管理端和用户端,为节约篇幅,因此只选取管理端、用户端部分核心功能原型进行展示。
3.3.1 系统主页
该页面为用户登录系统时进入的首页,为用户提供了目标监测的功能。用户点击“选择文件”按钮开始选择并上传图片到系统中,点击“开始检测”按钮,系统自动分析图片中病人的行为动作。如下图:

图3.4 系统分页结果页面
系统监测用户上传的图片后,若发现病人有离床、占床等行为存在,则会发出弹窗警报。如下图:

图3.5 系统警报页面

3.3.2 医生列表
列表中展示所有的医生信息,点击“添加”按钮可添加医生信息;点击“医生名字”可以查看医生的详细信息(同时可以修改医生的基本信息);点击“删除”按钮可删除指定医生信息,若选择多个可批量删除。如下图:

图3.6 医生列表原型图
3.3.3 护士列表
列表中展示所有的护士信息,点击“添加”按钮可添加护士信息;点击“护士名字”可以查看护士的详细信息(同时可以修改护士的基本信息);点击“删除”按钮可删除指定护士信息,若选择多个可批量删除。如下图:

图3.7 护士列表原型图
3.3.4 病房列表
列表中展示所有的病房信息,点击“添加”按钮可添加病房信息;点击“病房编号”可以查看病房的详细信息(同时可以修改病房的基本信息);点击“删除”按钮可删除指定病房信息,若选择多个可批量删除。如下图:

图3.8 病房列表原型图
管理员警报统计如图3.5所示,管理员可以通过此页面查对病房信息进行管理
3.4 模块需求描述
数据存储及备份模块:建立完善的数据存储系统,包括实时数据存储、历史数据备份等功能,以便后续数据分析和查询。
系统维护与更新模块:建立系统维护计划,包括定期检查、维护和更新系统软硬件,确保系统长期稳定运行。
报警与通知模块:设置报警规则和通知机制,一旦监测到异常情况,系统能够及时发出警报并通知相关责任人员。
硬件设备模块:包括监控摄像头、传感器设备、报警器等硬件设备,这些设备需要具备高清晰度、稳定性和可靠性,以确保对病房实时状况的准确监测和报警。
(1)模块1:用户登录系统
管理员使用账号密码进入系统
(2)模块2:医生管理、护士管理等管理模块
查看医生、护士、病人、病房等信息
(3)模块3:目标检测模块模块
上传图片信息,系统可自动分析图片中病人离床、占床等行为,并发出相应的警报信息。
3.5 系统开发环境
集成开发环境(精确到版本号和编码):python3.9
数据库(精确到账号密码端口编码格式):项目数据库名称:hospital ,数据库账号:root,数据库密码:root,端口号:3306,编码格式:UTF-8
浏览器(精确到名称):Microsoft Edge
web服务器(精确到版本号):Django4.2.11
编译环境(精确到版本号):Pycharm2023
3.6 系统可行性分析
3.6.1 技术可行性分析
视频分析模块采用的是YOLO算法,通过深度学习算法能够实现目标检测。YOLO模型经过大量的模型训练,并使用各种各样的数据集,在不断学习的过程中,能够显著提高模型判断画面情况的准确性。
系统采用Django框架进行软件的研发工作,奠定了软件开发的框架基础,使用成熟的框架体系,可以让开发效率更快,安全性更高,避免了很多基础性的研发问题。
综上所述,系统采用了现目前比较主流的框架和技术,能够很好的借鉴API文档和前辈们的经验,使得开发不容易走弯路,可控性更好,可行性更强,对于软件的完成,提供了非常有力的理论依据。
3.6.2 安全可行性分析
MySQL是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。能够将图片数据很好的存放起来,并且提供给前端进行友好的交互和展示。

第4章 系统设计
4.1 体系结构设计
从系统架构的角度来看,本选题包括了管理员、用户端两个部分组成。前端分为管理端和用户端两部分,其中管理端基于HTML技术开发。后端的实现采用了Django框架,Django是web开发者的首选框架,是一个遵循 MVC 设计模式的框架。采用了YOLO V5来实时分析前端发送的视频流。数据存储方面,本选题选择了MySQL数据库以及阿里云对象存储平台。

图4.1 体系结构图
4.2 数据库设计
本系统考虑到实用性与便捷性采用MySQL数据库,本系统主要创建医生表、护士表、病人表、病房表等数据表,并在表中创建医生id、护士id、病房id等字段建立相关表格的关联关系。

图4.2 系统E-R图
该表主要用于存储系统中录入的医生信息。如下表:
表格 4 1医生表
字段名 名称 数据类型 约束
id 主键 int PK,AUTO_INCREMENT
code 医生编号(50) varchar NOT NULL
name 医生名称(30) varchar NOT NULL
gender 性别(1) varchar NOT NULL
phone 电话(11) varchar NOT NULL

该表主要用于存储系统中录入的护士信息。如下表:
表格 4 2护士表
字段名 名称 数据类型 约束
id 护士编号(50) int PK,AUTO_INCREMENT
code 护士名称(30) varchar NOT NULL
name 性别(1) varchar NOT NULL
gender 电话(11) varchar NOT NULL
phone 护士编号 varchar NOT NULL
该表主要用于存储系统中录入的病房信息。如下表:
表格 4 3病房表
字段名 名称 数据类型 约束
id 护士编号 int PK,AUTO_INCREMENT
code 病床编号 Varchar(50) NOT NULL
name 病床名称 Varchar(30) NOT NULL
该表主要用于存储系统中录入的病人信息。如下表:
表格 4 4病人表
字段名 名称 数据类型 约束
id 主键 int PK,AUTO_INCREMENT
code 病人编号 Varchar(50) NOT NULL
name 病人名称 Varchar(30) NOT NULL
gender 性别 Varchar(1) NOT NULL
phone 电话 Varchar(11) NOT NULL
doctor_id 主治医生id int DEFAULT NULL
nurse_id 责任护士id int DEFAULT NULL
ward_id 病床id int DEFAULT NULL
4.3 系统流程图
系统主要是集成摄像头监控接口,通过摄像头将视频传输到后台实时分析病人是否离床、被人占床等情况,若有病人长时间离床或被人占床的情况,则发出警报告之医护人员。

图4.3 系统流程图
4.4 软件设计
4.4.1功能模块设计
医院病房监控管理系统的特色在于它不仅仅是提供对病房的实时监控,还可以实现数据分析与自动预警机制。医生可以通过系统实时观察病房的病床情况,当某个病床出现问题时可以及时赶到病房处理。系统一旦检测到病床的异常,系统会自动根据后台数据找到对应的负责医生,向医生发送通知,医生可以根据通知信息做对应的补救措施,以确保及时处理异常。
本项目要实现一个针对医院病房监控管理系统的数据采集平台,主要包括管理端和用户端两个部分。监控部分主要由硬件摄像头进行实现,软件平台包括管理端和用户端,软件部分还将结合视频分析技术,采用YOLO训练分析模型,对视频流中每一帧图片进行实时分析,将异常状态进行标记、并作出警报,反馈给用户和管理员。

4.4.2 目标检测模块设计
该页面为用户登录系统时进入的首页,为用户提供了目标监测的功能。用户点击“选择文件”按钮开始选择并上传图片到系统中,点击“开始检测”按钮,系统自动分析图片中病人的行为动作。

图4.4主页功能顺序图
4.4.3 观看实时视频流模块设计
管理员可以在系统中观看实时视频流,实时查看病人的离床、占床等动作行为。

图4.5实时视频模块功能顺序图
4.4.4 医生管理模块设计
管理员可以在系统中查看医生的基础信息,点击“新增”按钮新增医生信息。

图4.6医生模块功能顺序图
4.4.5 护士管理模块设计
管理员可以在系统中查看护士的基础信息,点击“新增”按钮新增护士信息。

图4.7护士模块功能顺序图
4.4.6 病房管理模块设计
管理员可以在系统中查看病房的基础信息,点击“新增”按钮新增病房信息。

图4.8病房模块功能顺序图
4.4.7 病人管理模块设计
管理员可以在系统中查看病人的基础信息,点击“新增”按钮新增病人信息。

图4.9病人模块功能顺序图
4.5 JSON接口设计
本项目设计28个接口,受篇幅限制,选取部分接口作为展示说明。
4.5.1 目标检测模块
该页面为用户登录系统时进入的首页,为用户提供了目标监测的功能。用户点击“选择文件”按钮开始选择并上传图片到系统中,点击“开始检测”按钮,系统自动分析图片中病人的行为动作。该接口描述如表4.9所示。
表4.9 上传图片接口
请求方式 POST
访问权限 登录管理员
参数说明 是否必须 类型 描述
file 是 file 文件
请求示例 http://127.0.0.1:8000/sh
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “添加成功”,
“code”: 200,
“data”:[
url: http://127.0.0.1:8000/sh
]
}
4.5.2 观看实时视频流模块
管理员可以在系统中观看实时视频流,实时查看病人的离床、占床等动作行为。
表4.10 实时视频录制检测接口
请求方式 POST
访问权限 登录管理员
参数说明 是否必须 类型 描述
file 是 file 文件,上传的视频文件
请求示例 POST http://127.0.0.1:8000/record_video #视频录制接口
Content-Type: application/json

{
“action”: “start”
}

POST http://127.0.0.1:8000/record_video #视频停止接口
Content-Type: application/json

{
“action”: “stop”
}

POST http://127.0.0.1:8000/video_detect #视频检测接口
Content-Type: multipart/form-data
Content-Disposition: form-data; name=“file”; filename=“example.mp4” POST http://127.0.0.1:8000/video_detect
Content-Type: multipart/form-data
Content-Disposition: form-data; name=“file”; filename="example.mp
响应参数 JSON类型
参数说明 msg string 返回处理的消息
code integer 返回的状态代码
data array 包含视频流访问URL的数组
响应示例 {
“msg”: “添加成功”,
“code”: 200,
“data”: [
{
“url”: “http://127.0.0.1:8000/stream”
}
]
}
4.5.3 医生管理模块
4.5.3.1 添加医生接口
在系统中添加医生信息,页面中包括医生编号、医生名称、性别、电话等字段。该接口描述如表4.11所示。
表4.11 添加医生接口
请求方式 POST
访问权限 登录管理员
参数说明 是否必须 类型 描述
code 是 int 医生编号
name 是 string 医生名称
gender 是 char 性别
phone 是 int 电话
请求示例 http://127.0.0.1:8000/saveDoctor
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “添加成功”,
“code”: 200
}
4.5.3.2 更新医生接口
在系统中更新医生信息,页面中包括医生编号、医生名称、性别、电话等字段。该接口描述如表4.12所示。
表4.12 更新医生接口
请求方式 PUT
访问权限 登录管理员
参数说明 是否必须 类型 描述
code 否 int 医生编号
name 否 string 医生名称
gender 否 char 性别
phone 否 int 电话
请求示例 http://127.0.0.1:8000/updateDoctor
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “更新成功”,
“code”: 200
}
4.5.4 护士管理模块
4.5.4.1 添加护士接口
在系统中更新护士信息,页面中包括护士编号、护士名称、性别、电话等字段。该接口描述如表4.13所示。
表4.13 添加护士接口
请求方式 POST
访问权限 登录管理员
参数说明 是否必须 类型 描述
code 是 int 护士编号
name 是 string 护士名称
gender 是 char 性别
phone 是 int 电话
请求示例 http://127.0.0.1:8000/saveNurse
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “添加成功”,
“code”: 200
}
4.5.4.2 更新护士接口
在系统中更新护士信息,页面中包括护士编号、护士名称、性别、电话等字段。该接口描述如表4.14所示。
表4.14 更新护士接口
请求方式 PUT
访问权限 登录管理员
参数说明 是否必须 类型 描述
code 否 int 护士编号
name 否 string 护士名称
gender 否 char 性别
phone 否 int 电话
请求示例 http://127.0.0.1:8000/updateNurse
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “更新成功”,
“code”: 200
}
4.5.5 病房管理模块
4.5.5.1 添加病房接口
在系统中添加病床信息,页面中包括病床编号、病床字段。该接口描述如表4.15所示。
表4.15 添加病床接口
请求方式 POST
访问权限 登录管理员
参数说明 是否必须 类型 描述
code 是 int 病房编号
name 是 string 病房名称
请求示例 http://127.0.0.1:8000/saveWard
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “添加成功”,
“code”: 200
}
4.5.5.2 更新病房接口
在系统中更新病床信息,页面中包括病床编号、病床字段。该接口描述如表4.16所示。
表4.16 更新病房接口
请求方式 PUT
访问权限 登录管理员
参数说明 是否必须 类型 描述
code 否 int 病房编号
name 否 string 病房名称
请求示例 http://127.0.0.1:8000/updateWard
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “更新成功”,
“code”: 200
}
4.5.6 病人管理模块
4.5.6.1 添加病人接口
在系统中添加病人信息,页面中包括病人编号、病人名称、性别、电话、医生编号、护士编号、病床编号等字段。该接口描述如表4.17所示。
表4.17 添加病人接口
请求方式 POST
访问权限 登录管理员
参数说明 是否必须 类型 描述
code 是 int 病人编号
name 是 string 病人名称
gender 是 char 性别
phone 是 int 电话
doctor_id 是 int 医生编号
nursd_id 是 int 护士编号
ward_id 是 int 病床编号
请求示例 http://127.0.0.1:8000/savePatient
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “添加成功”,
“code”: 200
}
4.5.6.2 更新病人接口
在系统中更新病人信息,页面中包括病人编号、病人名称、性别、电话、医生编号、护士编号、病床编号等字段。该接口描述如表4.18所示。
表4.18 添加病人接口
请求方式 PUT
访问权限 登录管理员
参数说明 是否必须 类型 描述
code 是 int 病床编号
name 是 string 病床名称
gender 是 char 性别
phone 是 int 电话
doctor_id 是 int 医生编号
nursd_id 是 int 护士编号
ward_id 是 int 病床编号
请求示例 http://127.0.0.1:8000/updatePatient
响应参数 JSON类型
参数说明 msg:返回处理消息
code:返回代码
响应示例 {
“msg”: “添加成功”,
“code”: 200
}

第5章 系统实现
5.1硬件实现
系统主要是集成摄像头监控接口,通过摄像头将视频传输到后台实时分析病人是否离床、被人占床等情况,若有病人长时间离床或被人占床的情况,则发出警报告之医护人员。

5.2 软件实现
5.2.1 目标检测功能模板实现
该页面为用户登录系统时进入的首页,为用户提供了目标监测的功能。用户点击“选择文件”按钮开始选择并上传图片到系统中,点击“开始检测”按钮,系统自动分析图片中病人的行为动作。代码实现如下:

5.2.2 观看实时视频流模块实现??
管理员可以在系统中观看实时视频流,实时查看病人的离床、占床等动作行为。代码实现如下:
??贴功能代码
5.2.3 医生管理功能模板实现
列表中展示所有的医生信息,点击“添加”按钮可添加医生信息;点击“医生名字”可以查看医生的详细信息(同时可以修改医生的基本信息);点击“删除”按钮可删除指定医生信息,若选择多个可批量删除。代码实现如下:
class Doctor(models.Model):
id = models.AutoField(primary_key=True)
code = models.CharField(max_length=50, verbose_name=‘编号’)
name = models.CharField(max_length=30, verbose_name=‘名字’)
gender = models.CharField(max_length=1, choices=Gender.choices, verbose_name=‘性别’)
phone = models.CharField(max_length=11, verbose_name=‘电话’)
password = models.CharField(max_length=255, verbose_name=‘密码’)
class Meta:
verbose_name = “医生管理”
verbose_name_plural = “医生管理”
def save(self, *args, **kwargs):
self.password = make_password(self.password, None, ‘pbkdf2_sha256’)
super(Doctor, self).save(*args, **kwargs)
def str(self):
return self.name
5.2.4 护士管理功能模板实现
列表中展示所有的护士信息,点击“添加”按钮可添加护士信息;点击“护士名字”可以查看护士的详细信息(同时可以修改护士的基本信息);点击“删除”按钮可删除指定护士信息,若选择多个可批量删除。代码实现如下:
class Nurse(models.Model):
id = models.AutoField(primary_key=True)
code = models.CharField(max_length=50, verbose_name=‘编号’)
name = models.CharField(max_length=30, verbose_name=‘名字’)
gender = models.CharField(max_length=1, choices=Gender.choices, verbose_name=‘性别’)
phone = models.CharField(max_length=11, verbose_name=‘电话’)
password = models.CharField(max_length=255, verbose_name=‘密码’)
class Meta:
verbose_name = “护士管理”
verbose_name_plural = “护士管理”
def save(self, *args, **kwargs):
self.password = make_password(self.password, None, ‘pbkdf2_sha256’)
super(Nurse, self).save(*args, **kwargs)
def str(self):
return self.name

5.2.5 病房信息管理功能模板实现
列表中展示所有的病房信息,点击“添加”按钮可添加病房信息;点击“病房编号”可以查看病房的详细信息(同时可以修改病房的基本信息);点击“删除”按钮可删除指定病房信息,若选择多个可批量删除。代码实现如下:
class Ward(models.Model):
id = models.AutoField(primary_key=True)
room_code = models.CharField(max_length=50, verbose_name=‘编号’)
name = models.CharField(max_length=30, verbose_name=‘病房名称’)
class Meta:
verbose_name = “病房管理”
verbose_name_plural = “病房管理”
def str(self):
return self.name

5.2.6 病人信息管理功能模板实现
列表中展示所有的病人信息,点击“添加”按钮可添加病人信息;点击“病人编号”可以查看病人的详细信息(同时可以修改病人的基本信息);点击“删除”按钮可删除指定病人信息,若选择多个可批量删除。代码实现如下:
from django.db import models

Create your models here.

class Gender(models.TextChoices):
MALE = ‘M’, ‘男’
FEMALE = ‘F’, ‘女’
class Patient(models.Model):
id = models.AutoField(primary_key=True)
code = models.CharField(max_length=50, verbose_name=‘编号’)
name = models.CharField(max_length=30, verbose_name=‘名字’)
gender = models.CharField(max_length=1, choices=Gender.choices, verbose_name=‘性别’)
phone = models.CharField(max_length=11, verbose_name=‘电话’)
ward = models.ForeignKey(‘doctor.Ward’, verbose_name=“床位号”, blank=True, null=True, on_delete=models.SET_NULL)
doctor = models.ForeignKey(‘doctor.Doctor’, verbose_name=“主治医生”, blank=True, null=True, on_delete=models.SET_NULL)
nurse = models.ForeignKey(‘doctor.Nurse’, verbose_name=“责任护士”, blank=True, null=True, on_delete=models.SET_NULL)
create_time = models.DateTimeField(auto_now_add=True, verbose_name=“入院时间”,)
class Meta:
ordering = [‘-create_time’]
verbose_name = “病人列表”
verbose_name_plural = “病人列表”
def str(self):
return self.name

第6章 系统测试
6.1 登录模块测试
在本系统中,主要是针对各个模块进行功能测试,与数据库相关的管理模块测试结果见表6.1。
表格6.1 用户登录功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 正确输入用户名、密码 输入正确的用户名、正确的密码,点击登录 用户登录成功,系统跳转至主页面 正确
2 输入错误的用户名、密码 输入错误的用户名、错误的密码,点击登录 用户登录失败,系统提示“用户名或密码错误”并停留在登录界面 正确
3 未输入用户名、密码 未输入用户名、未输入密码,点击登录 用户登录失败,系统提示“用户名不能为空”,“密码不能为空”并停留在登录界面 正确
6.2 医生管理模块测试
管理员管理医生信息,为医生添加信息以及修改/删除系统中录入的医生信息,医生管理模块功能测试用例如表6.2所示。
表6.2 医生管理功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 “添加”按钮 点击“添加”按钮跳转到医生信息添加页面,具体参见表6.3 正确跳转到医生信息添加页面 正确
2 “修改”按钮 点击“修改”按钮跳转到医生信息修改页面,在页面中依次修改医生信息后点击“保存”按钮。 正确跳转到医生信息修改页面,点击“保存”按钮可以向数据库正确保存数据 正确
3 “删除”按钮 点击“删除”按钮弹窗提示“是否确认删除医生信息” 点击“是”删除医生信息,点击“否”关闭弹窗,医生信息未删除 正确
6.2.1添加医生信息模块测试
管理员在系统中添加医生信息,添加医生信息模块功能测试用例如表6.3所示。
表6.3 添加医生信息功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 “添加”按钮 正确输入医生信息 点击“保存”按钮,正确保存医生数据 正确
2 输入的信息长度超长 输入的医生姓名、手机号等字段的长度超长,其中医生姓名超过10个字,手机号输入超过11个字 系统提示“输入信息格式超长,请重新输入” 正确
3 必填项填写不完全 用户没有填写完全系统要求的必须信息 系统会根据实际情况提示用户哪项信息不能为空,请重新输入 正确
4 输入的手机号不符合 输入的手机号不是一个131、133、150等开头 系统提示“请输入正确的手机号” 正确
6.3 护士管理模块测试
管理员管理护士信息,为护士添加信息以及修改/删除系统中录入的护士信息,护士管理模块功能测试用例如表6.4所示。
表6.4 护士管理功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 “添加”按钮 点击“添加”按钮跳转到护士信息添加页面,具体参见表6.5 正确跳转到护士信息添加页面 正确
2 “修改”按钮 点击“修改”按钮跳转到护士信息修改页面,在页面中依次修改医生信息后点击“保存”按钮。 正确跳转到护士信息修改页面,点击“保存”按钮可以向数据库正确保存数据 正确
3 “删除”按钮 点击“删除”按钮弹窗提示“是否确认删除护士信息” 点击“是”删除护士信息,点击“否”关闭弹窗,护士信息未删除 正确
6.3.1添加护士信息模块测试
管理员在系统中添加护士信息,添加护士信息模块功能测试用例如表6.5所示。
表6.5 添加护士信息功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 “添加”按钮 正确输入护士信息 点击“保存”按钮,正确保存护士数据 正确
2 输入的信息长度超长 输入的护士姓名、手机号等字段的长度超长,其中护士姓名超过10个字,手机号输入超过11个字 系统提示“输入信息格式超长,请重新输入” 正确
3 必填项填写不完全 用户没有填写完全系统要求的必须信息 系统会根据实际情况提示用户哪项信息不能为空,请重新输入 正确
4 输入的手机号不符合 输入的手机号不是一个131、133、150等开头 系统提示“请输入正确的手机号” 正确

6.4 病床管理模块测试
管理员管理病床信息,为病床添加信息以及修改/删除系统中录入的病床信息,病床管理模块功能测试用例如表6.6所示。
表6.6 病床管理功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 “添加”按钮 点击“添加”按钮跳转到病床信息添加页面,具体参见表6.7 正确跳转到病床信息添加页面 正确
2 “修改”按钮 点击“修改”按钮跳转到病床信息修改页面,在页面中依次修改医生信息后点击“保存”按钮。 正确跳转到病床信息修改页面,点击“保存”按钮可以向数据库正确保存数据 正确
3 “删除”按钮 点击“删除”按钮弹窗提示“是否确认删除病床信息” 点击“是”删除病床信息,点击“否”关闭弹窗,病床信息未删除 正确
6.4.1 添加病床信息模块测试
管理员在系统中添加病床信息,添加病床信息模块功能测试用例如表6.7所示。
表6.7 添加病床信息功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 “添加”按钮 正确输入病床信息 点击“保存”按钮,正确保存病床数据 正确
2 输入的信息长度超长 输入的病床名称超过10个字 系统提示“输入信息格式超长,请重新输入” 正确
3 必填项填写不完全 用户没有填写完全系统要求的必须信息 系统会根据实际情况提示用户哪项信息不能为空,请重新输入 正确
6.5 病人管理模块测试
管理员管理病人信息,为病人添加信息以及修改/删除系统中录入的病人信息,病人管理模块功能测试用例如表6.8所示。
表6.8 病人管理功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 “添加”按钮 点击“添加”按钮跳转到病人信息添加页面,具体参见表6.9 正确跳转到病人信息添加页面 正确
2 “修改”按钮 点击“修改”按钮跳转到病人信息修改页面,在页面中依次修改医生信息后点击“保存”按钮。 正确跳转到病人信息修改页面,点击“保存”按钮可以向数据库正确保存数据 正确
3 “删除”按钮 点击“删除”按钮弹窗提示“是否确认删除病人信息” 点击“是”删除病人信息,点击“否”关闭弹窗,病人信息未删除 正确
6.5.1 添加病人信息模块测试
管理员在系统中添加病人信息,添加病人信息模块功能测试用例如表6.9所示。
表6.9 添加病人信息功能测试用例
用例编号 用例描述 操作过程及数据 预期结果 实际结果
1 “添加”按钮 正确输入病人信息 点击“保存”按钮,正确保存病人数据 正确
2 输入的信息长度超长 输入的病人姓名、手机号等字段的长度超长,其中病人姓名超过10个字,手机号输入超过11个字 系统提示“输入信息格式超长,请重新输入” 正确
3 必填项填写不完全 用户没有填写完全系统要求的必须信息 系统会根据实际情况提示用户哪项信息不能为空,请重新输入 正确
4 输入的手机号不符合 输入的手机号不是一个131、133、150等开头 系统提示“请输入正确的手机号” 正确
6.6 测试结论
各项测试用例测试下来说明,该系统相对稳定,测试用例的选择能够适时地满足测试用例设计需求,基本上达到项目测试所应具有的水平,相对较客观完善,与预期效果相差无几,满足了用户的相应需求。
第7章 结 论
基于YOLO医院病房监控管理系统是一种利用计算机视觉技术来实现对医院病房的实时监控和管理的系统。YOLO V5是一种目标检测算法,能够快速准确地检测出图像中的各种物体。
本题使用YOLO、Python、Django框架、结合MySQL数据库、阿里云对象存储平台,设计并实现了医院病房监控管理,为病床数据的可视化管理和实时监控提供便利。设计并开发一个完整的病床监测系统。系统的设计将包括以下几个关键组件:首先是图像采集模块,该模块将使用医院内的摄像头实时捕获病房内的视频流。本系统主要角色包括管理员、用户。监控部分主要由硬件摄像头进行实现,软件平台包括管理端和用户端,后端通过Django框架与MySQL数据库实现接口开发,前端通过HTML进行页面显示。软件部分还将结合视频分析技术,采用YOLO训练分析模型,对视频流中每一帧图片进行实时分析,将异常状态进行标记、并作出警报,反馈给用户和管理员。
系统现在已经能够实现对图片的分析,并判断出病人的离床、占床等动作行为,同时管理员可以配置病人相关的医生、护士、病床等关联信息,实现对病人的实现行为监控,但是相对于成熟的项目来说,系统现在存在功能单一、功能联动性不高、耦合度高等问题。后期需要扩充更多功能以及将各个管理模块进行关联,让系统灵活度更高,可以自由扩充功能。

;