【最新原创毕设】基于大数据的在线医疗问诊系统+94924(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、文案

目  录

摘要

1 绪论

1.1 选题背景与意义

1.2研究现状

1.3相关技术说明

1.4论文结构与章节安排

2 相关理论和技术

2.1 Hadoop生态圈

2.1.1 HDFS分布式存储

2.1.2 MapReduce分布式计算框架

2.1.3 Sqoop工具

2.2 Echarts数据可视化图表库

2.3 MySQL关系型数据库

2.4 Hive

3 基于大数据的在线医疗问诊系统系统分析

3.1 可行性分析

3.1.1 技术可行性分析

3.1.2 经济可行性分析

3.1.3 操作可行性分析

3.2 系统功能分析

3.2.1 功能性分析

3.2.2 非功能性分析

3.3 系统用例分析

3.4 系统流程分析

3.4.1 数据流程

3.4.2 业务流程

3.5本章小结

4 基于大数据的在线医疗问诊系统总体设计

4.1 系统架构设计

4.2 系统功能模块设计

4.2.1整体功能模块设计

4.2.2用户模块设计

4.2.3 评论管理模块设计

4.2.4医生排班管理模块设计

4.2.5在线问诊管理模块设计

4.3 数据库设计

4.3.1 数据库概念结构设计

4.3.2 数据库逻辑结构设计

4.3本章小结

5 基于大数据的在线医疗问诊系统详细设计与实现

5.1系统部署

5.1.1 系统环境部署

5.1.2 数据处理过程

5.2前台用户功能模块

5.2.1 前台首页界面

5.2.2 用户注册界面

5.2.3 用户登录界面

5.2.4专家会诊界面

5.2.5健康资讯界面

5.2.6 医生排班界面

5.2.7医生推荐界面

5.2.8我的账户界面

5.2.9个人中心界面

5.3后台功能模块

5.3.1系统用户界面

5.3.2医生排班管理界面

5.3.3在线问诊管理界面

5.3.4系统管理界面

5.3.5资源管理界面

6系统测试

6.1 系统测试用例

6.2 系统测试结果

结论

参考文献

致  谢

摘要

科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用大数据技术建设在线医疗问诊系统。

本设计主要实现集人性化、高效率、便捷等优点于一身的在线医疗问诊系统,完成系统用户、医生排班管理、在线问诊管理、初步诊断管理、就诊信息管理、医生推荐管理、历史病情管理、系统管理、医院公告管理、资源管理、交流管理等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。在线医疗问诊系统基于Java语言、MySQL数据库和SpringBoot框架进行在线医疗问诊系统的设计与实现研究。通过使用Java语言的强大功能和灵活性,结合SpringBoot框架的优势以及MySQL数据库的高效数据存储和管理能力,我们将开发一个功能全面、高效可靠的在线医疗问诊系统。

关键词:Java;SpringBoot;在线医疗问诊系统;Hadoop大数据分析

Abstract

The rapid development of technological progress has caused tremendous changes in people's daily lives, and the rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The arrival of the information age has become an unstoppable fashion trend, and the history of human development is entering a new era. In practical applications, the working rules and development steps of application software are utilized to build an online medical consultation system using big data technology.

This design mainly implements an online medical consultation system that combines the advantages of humanization, high efficiency, and convenience. It completes functional modules such as system user, doctor scheduling management, online consultation management, preliminary diagnosis management, medical information management, doctor recommendation management, historical condition management, system management, hospital announcement management, resource management, and communication management. The system communicates with the server through a browser to achieve data exchange and change. This system improves work efficiency and reduces errors and omissions in data storage through scientific management and convenient services. The online medical consultation system is designed and implemented based on Java language, MySQL database, and SpringBoot framework. By utilizing the powerful features and flexibility of Java language, combined with the advantages of the SpringBoot framework and the efficient data storage and management capabilities of MySQL database, we will develop a comprehensive, efficient, and reliable online medical consultation system.

Keywords:Java; SpringBoot; Online medical consultation system; Hadoop Big data analysis

1 绪论

1.1 选题背景与意义

随着互联网的普及和技术的发展,网络医疗服务得到了迅速发展。在线医疗问诊系统作为医患沟通的一种新型形式,通过互联网技术将患者和医生联系起来,提供在线咨询、诊断、治疗等服务。这种方式消除了时间和地域的限制,方便了患者就医,并且减轻了医院的就诊压力,提高了医疗资源的利用效率。

然而,目前在线医疗问诊系统还面临一些挑战,例如患者难以准确描述症状、医生难以做出准确诊断、信息传递不畅等问题。这些问题往往导致在线问诊的结果不够准确和有效,影响了患者的治疗效果和医生的诊断质量。因此,如何利用大数据技术来改善在线医疗问诊系统的效率和效果成为当前亟待解决的问题。

本研究将利用大数据技术对在线医疗问诊系统进行优化和改进,通过对患者症状、疾病信息等大量数据的挖掘和分析,建立患者病情模型和疾病诊断模型,提高医生对患者情况的判断和诊断能力。同时利用用户健康档案、历史诊疗记录等数据,为患者提供个性化的健康管理建议和治疗方案。通过监测患者体征数据、用药情况等信息,可以及时发现病情变化并提前预警,减少因治疗延误导致的不良后果。通过大数据平台实现患者、医生、健康管理机构之间的信息共享和交流,促进医疗资源的整合和优化利用。

通过以上方面的研究和实践,可以提高在线医疗问诊系统的智能化水平和服务质量,为患者提供更加便捷、高效、个性化的医疗服务,同时也能够提升医生的诊疗水平和工作效率,对推动医疗健康信息化发展具有重要随着互联网技术的不断发展和普及,人们对于便捷、高效的线上服务需求不断增加。

1.2研究现状

在线医疗问诊系统是近年来快速发展的一种新型医疗服务模式。它利用互联网、移动通信和云计算等技术,使得患者可以通过线上平台与医生进行实时的远程问诊和咨询。在线医疗问诊系统的出现,不仅提供了便利的医疗服务,还能解决因地理位置限制、医疗资源不足等问题,使得患者可以及时获得专业的医疗建议和诊断。

目前,国内外对于在线医疗问诊系统的研究已经取得了一定的进展。国外的研究主要集中在如何提高问诊过程的可靠性和准确性上,通过引入机器学习和自然语言处理等技术,以提高系统对症状描述和疾病诊断的准确度。例如,利用大数据分析和机器学习算法,可以快速、自动地从海量的医疗数据中提取特征,进行疾病预测和诊断。而国内的研究则主要关注问诊系统与传统医疗模式的结合,如将线上问诊与线下就诊相结合,提供全面的医疗服务。

医患沟通是医疗过程中至关重要的环节。国内外研究者通过在线医疗问诊系统的信息共享和患者参与机制,促进了医患之间信息的对话和交流。加拿大一项研究发现,在在线医疗问诊系统中加入患者健康教育模块,患者更容易理解医疗过程,提高了治疗依从性。

大数据分析是在线医疗问诊系统的一项关键技术。通过对海量的医疗数据进行分析和挖掘,可以帮助医生更快速、准确地进行疾病诊断和治疗。同时,大数据分析还可以发现疾病的规律和趋势,对医疗决策提供科学依据。

因此,基于大数据的在线医疗问诊系统的研究具有重要的现实意义和学术价值。通过引入大数据分析技术,可以提高系统的智能化水平,提供更加准确、个性化的医疗建议和诊断。同时,研究在线医疗问诊系统也可以推动医疗服务模式的创新和转型,提高医疗服务的便利性和效率。

1.3相关技术说明

MySQL:作为关系型数据库管理系统,MySQL提供稳定可靠的数据存储和管理功能,适合存储医疗数据和相关信息,与Hadoop进行数据交互和查询,为系统提供数据支持。

Hadoop大数据平台:作为Hive的底层基础架构,Hadoop提供了分布式存储和计算能力,支持大规模数据的处理和分析,与MySQL数据库进行数据交互和存储,为系统提供高性能的数据处理能力,实现对海量患者病历、症状等数据的高效存储和管理。

Python:作为主要的编程语言,Python在数据清洗、数据处理和分析方面具有丰富的库和工具,可与MySQL数据库进行交互,实现数据的导入、处理和导出,为系统提供灵活的数据处理功能。

SQL:结构化查询语言在Hadoop和MySQL数据库中的应用十分重要,利用SQL语言对大数据进行分析,提取患者病历、症状等关键信息,为医生提供诊断和治疗建议。

Tableau:作为数据可视化工具,Tableau可以连接MySQL数据库,创建交互式报表和图表,直观展示民宿价格趋势和分析结果,为系统提供直观、易懂的数据展示功能。

1.4论文结构与章节安排

本文共分为六章,章节内容安排如下:

第一章为引言,此章节对所设计和实现的系统的背景和状况以及意义进行详细的论述以及说明,同时进行了论文整体框架的结构的简要介绍。

第二章为系统需求分析,章节所做的主要的工作是对系统进行了技术、经济和操作方面可行性的分析;对系统实行了总体功能的需求、用例分析。

第三章为系统的设计,主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。

第四章就是对系统的实现,根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。

第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试

第六章:总结。

2 相关理论和技术 

2.1 Hadoop生态圈

Hadoop作为Apache基金会所开发的一个分布式系统基础架构,在处理海量数据的存储和分析计算方面发挥着关键作用,为大数据处理提供了强有力的支持。Hadoop拥有高可靠性、高扩展性、高效性、高容错性四个优点,可以实现一个分布式文件系统( Distributed File System)。Hadoop框架的两大核心组件是HDFS和MapReduce。HDFS作为分布式文件系统,专门用于存储海量数据,提供了高可靠性和高扩展性的数据存储解决方案。而MapReduce则是Hadoop框架中的计算模型,通过将计算任务分解成多个小任务并在分布式环境中并行执行,实现了对海量数据的高效处理和计算。HDFS负责数据的存储,而MapReduce负责数据的计算,两者共同构成了Hadoop框架的核心功能,为大数据处理提供了强大的支持。在Hadoop1.x版本中,MapReduce不仅作为计算框架进行业务逻辑运算,还负责资源的调度,导致耦合性较大。而在Hadoop2.x版本中,引入了Yarn(Yet Another Resource Negotiator),将资源的调度独立出来,使得MapReduce只负责运算,降低了耦合度。随着Hadoop3.x版本的推出,进一步优化了HDFS和YARN的性能和可靠性,提供了新的功能,如容器的多租户支持和GPU硬件加速等,使得Hadoop框架更加灵活高效,适应了不断增长的大数据处理需求。

2.1.1 HDFS分布式存储

HDFS(Hadoop Distributed File System)是Hadoop的分布式文件系统,主要负责存储和读取集群数据。它通过运用数据块的方式将数据存储在多个节点上,实现一个完整的文件系统。HDFS具有高容错性,能够在廉价的通用硬件上轻松部署,同时提供高吞吐量的数据访问,这一特性使得HDFS特别适用于那些需要处理超大规模数据集的应用程序。

2.1.2 MapReduce分布式计算框架

MapReduce最初是由Google于2004年提出的,是一种用于分布式并行计算的编程框架。它不仅能够处理海量数据,给用户提供简便的编程模型,还解决了传统计算方法固有的低效率问题。Map Reduce程序包括两个主要阶段:Map阶段和Reduce阶段。MapReduce的核心功能是先将大规模的数据集分发到集群中的每个节点,利用集群的资源进行计算,然后使用MapReduce将各个节点的计算结果整合为所需的最终结果,即可实现MapReduce并行计算处理机制。

2.1.3 Sqoop工具

Sqoop是一个主要用于Sqoop主要用于结构化数据和Hadoop之间的批量数据传输的工具。它可以将关系数据库(如MySQL、Oracle、Postgres等)的数据导入Hadoop的HDFS中,也可以将HDFS的数据导入关系数据库,还可以在传输过程中实现数据 转换等功能。Sqoop的使用过程如下:(1)当MapReduce工作时,Sqoop将表导入到MapReduce中进行记录,并将数据传输到HDFS。(2)java包含访问关系数据库的API接口。Sqoop在大数据处理和数据迁移方面提供高效可靠的数据传输解决方法。

2.2 Echarts数据可视化图表库

ECharts是一个基于JavaScript的数据可视化图表库,旨在为用户提供直观、生动、可交互和可个性化定制的数据可视化图表。通过ECharts,用户可以轻松地创建各种类型的图表,如折线图、柱状图、饼图、雷达图等,展示数据的分布、趋势和关联关系。其起初由百度团队开源,后于2018年初捐赠给Apache基金会,在三年后该项目被宣布正式完成。Echarts丰富的可视化图表库,不仅提供了折线图、柱状图、散点图、饼图、热力图等常见的图表类型,还有其他多种应用于不同场所而展示不同类型数据的图表。除外,用户还可以根据自己的需求,通过运用Echarts特有的配置项和API,进行个性化定制和交互操作。Echarts具有良好的跨平台兼容性,无论是在PC端还是移动设备上都能流畅运行,兼容当前主流浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),提供丰富多样、易于使用、且可专属定制的数据可视化图表。

在使用Echarts时,只需五个步骤即可:(1)引入Echarts插件文件到HTML中;(2)准备一个具备大小的DOM容器;(3)初始化Echarts实例对象;(4)指定配置项和数据(option);(5)将配置项设置给Echarts实例对象。

2.3 MySQL关系型数据库

MySQL是目前世界上最流行的数据库之一的开源式关系型数据库,被广泛应用于各种规模的应用程序,从小型个人项目到大型企业级应用程序。由于MySQL具有灵活性、可靠性和性能优势,它在各种场景下都得到广泛应用,包括网站、企业级应用程序、移动应用程序、数据分析和物联网等。MySQL可以作为客户端服务器上的独立程序使用,也可以作为库植入到其他软件中使用;运行在多个操作系统上,包括Windows、Linux、MacOS等,支持横向和纵向扩展,可以通过添加更多的服务器节点或增加硬件资源来处理更大规模的数据和负载。

2.4 Hive

Hive作为一个开源的数据仓库工具,为大数据处理提供了强大的查询和分析功能。通过将结构化数据存储在Hadoop分布式文件系统中,并利用元数据管理表和分区信息,Hive实现了对海量数据的高效处理和查询。其灵活的数据存储格式支持多种文件格式,如文本、Parquet和ORC,使用户能够根据不同需求选择合适的存储方式。此外,Hive的优化器和执行引擎能够将HiveQL查询转换为MapReduce作业,利用Hadoop集群的并行处理能力加速数据处理过程。

除了基本的数据查询功能,Hive还支持复杂的数据处理操作,如连接、聚合、窗口函数等,使用户能够进行更深入的数据分析。同时,Hive还提供了UDF(用户自定义函数)和UDAF(用户自定义聚合函数)的扩展机制,允许用户根据自身需求编写自定义函数,扩展Hive的功能。

另外,Hive可以与其他工具集成,如Apache Spark、Apache HBase等,实现更复杂的数据处理任务。通过与Hadoop生态系统的无缝集成,Hive为用户提供了一个全面的大数据处理解决方案,帮助用户更好地管理和分析海量数据,为企业决策和业务发展提供有力支持。

3 基于大数据的在线医疗问诊系统系统分析

系统需求分析是系统开发的一个关键环节,它在系统的设计和实现上起到了一个承上启下的位置。系统需求分析是对所需要做的系统进行一个需求的挖掘,如果分析的准确可以精准的解决现实中碰到的问题。如果分析不到位会影响后期系统的实现。一个系统的优秀程度需求分析也是占据了非常大的比例,如果需求分析不到位,后面的系统设计要实现就是一个偏离导航的设计。

3.1 可行性分析

系统可行行分析是对系统对系统可行性进行一个探讨。在探讨系统的可行性上我们主要从技术上的可行性和经济上的可行性以及法律层面的可行性上进行分析,如果三个层面度通过,我们则认为系统是比较可行的。

3.1.1 技术可行性分析

SpringBoot是一种常用的Java Web开发框架,能够实现分层架构,提高开发效率和代码复用性。在线医疗问诊系统在数据的存储上使用的MySQL数据库,在系统开发中使用了大数据分析技术,结合Java、HTML、Tomcat这些开发工具的使用,能够给我们的编写工作带来许多的便利,可以快速搭建一个功能强大、性能稳定的在线医疗问诊系统。因此,从技术层面分析是可行的。

3.1.2 经济可行性分析

SpringBoot框架是开源的,拥有大量的社区支持和丰富的学习资源。使用SpringBoot框架进行开发可以降低开发成本,缩短开发周期。此外,SpringBoot框架具备良好的性能和稳定性,可以降低系统的运行成本和维护成本。因此,从经济角度分析是可行的

3.1.3 操作可行性分析

本系统实现功能的操作很简单,普通电脑的常见配置就可以运行本软件,并且只要粗通电脑使用的基本常识就可以流畅的使用本软件。电脑具备连接互联网的能力,并且可以正常访问系统,并不需要操作者有什么高超的能力,只需了解业务流程,并且按照专业知识进行正确操作即可,所以高校教材订购管理系统具备操作可行性。

3.2 系统功能分析

3.2.1 功能性分析

基于大数据的在线医疗问诊系统我划分为了患者用户模块,医生用户模块和管理员模块这三大部分。

患者用户模块:

(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现在线问诊等操作,就必须有这个系统的账号,如果没有账号的话,可以注册患者用户进行相关的操作,同时用户还可以通过“我的”这一按钮对个人信息以及操作的信息进行管控。

(2)查看基于大数据的在线医疗问诊系统的首页信息:在线医疗问诊系统的首页信息包含了首页、专家会诊、医院公告、健康资讯、医生排班、医生推荐等。

(3)专家会诊:用户点击“专家会诊”菜单显示所有的专家会诊信息,可以按照分类查看帖子信息,或者输入关键词进行局部搜索,点击可以进入帖子的详细展示界面,在此界面用户可以点赞、收藏、评论,也可以点击“发布内容”输入帖子信息进行发帖。

(4)医院公告:当用户点击“医院公告”这一菜单按钮,会显示管理员在后台发布的所有的医院公告,可以查看详情。

(5)健康资讯:当用户点击“健康资讯”这一菜单按钮,会显示管理员在后台发布的所有的健康资讯,可以查看详情,进行收藏、点赞、评论等。

(6)医生排班:用户可以查看医生排班信息,在查询到自己想要了解的医生排班信息的时候,可以进入查看详细的介绍,包括医生用户、医生姓名、医生性别、擅长领域、问诊数量、当前数量、就诊时段、医生科室、医生简介等信息,点击“问诊”这一按钮以后会跳转到问诊医生填写的界面,根据提示填写好在线问诊,点击“提交”以后就完成了;在医生排班详情这个界面,同时支持用户对喜欢的医生排班进行收藏、点赞以及评论的功能。

(7)医生推荐:患者用户在前台点击“医生推荐”菜单会进入到医生推荐列表界面,可以查看到包括患者用户、医生姓名、擅长领域、医生科室、服务态度、专业水平、评价反馈等详细信息,在医生推荐详情这个界面,同时支持用户对喜欢的医生推荐进行评论功能。

(8)我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改进行管控。

(9)个人中心:患者用户在前台点击“个人中心”可以对个人首页、在线问诊、初步诊断、就诊信息、医生推荐和自己收藏的信息进行管理。

医生用户模块:

(1)注册登录:医生用户根据在前台注册的账号信息进行登录系统。

(2)查看基于大数据的在线医疗问诊系统的首页信息:在线医疗问诊系统的首页信息包含了首页、专家会诊、医院公告、健康资讯、医生排班、医生推荐等。

(3)我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改进行管控。

(4)个人中心:医生用户在前台点击“个人中心”可以对个人首页、医生排班、在线问诊、初步诊断、就诊信息、历史病情和自己收藏的信息进行管理。

管理员管理模块:

(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。

(2)系统用户:管理员可以对在线医疗问诊系统中的管理员以及前台注册的患者用户、医生用户进行增删改查。

(3)科目信息管理:管理员点击“科目信息管理”系统会把在线医疗问诊系统当中所有的科目信息都显示出来,管理员可进行添加科目信息和类型描述管理,并可进行查询、重置或删除等相应操作。

(4)医生排班管理:管理员点击“医生排班管理”会显示出所有的医生排班信息,支持输入医生姓名对医生排班进行查询,如果想要添加新的医生排班,点击“添加”按钮,输入医生用户、医生姓名、医生性别、擅长领域、问诊数量、当前数量、就诊时段、医生科室、医生简介等信息,点击“提交”按钮就可以添加了,同时可以选择某一条医生排班,点击“删除”进行删除,也可以对用户提交的医生排班评论的信息进行管控。

(5)在线问诊管理:管理员点击“在线问诊管理”系统会把在线医疗问诊系统当中所有的在线问诊信息都显示出来,支持通过医生姓名、患者姓名或问诊状态对在线问诊进行查询,点击右侧的“初步诊断”可以对患者用户初步诊断的病情信息进行添加。

(6)就诊信息管理:管理员点击“就诊信息管理”会显示所有患者的就诊信息,点击详情查看详细内容,也可以点击“支付”按钮进行支付信息设置。

(7)医生推荐管理:管理员点击“医生推荐管理”会显示所有用户提交的医生推荐信息,点击详情查看详细内容,也可以对用户提交的医生推荐评论的信息进行管控。

(8)历史病情管理:管理员点击“历史病情管理”会显示所有患者的历史病情,点击详情查看详细内容。

(9)系统管理:管理员点击“系统管理”菜单可以对首页展示的轮播图进行管理。

(10)医院公告管理:管理员点击“医院公告管理”菜单可以查看到系统中的所有医院公告信息,对已经存在的医院公告,管理员可以修改,也可以添加新的医院公告或者删除医院公告。

(11)资源管理:管理员可以对在线医疗问诊系统前台展示的健康资讯以及健康资讯所属的分类进行管控。

(12)交流管理:管理员可以对系统前台展示的专家会诊以及专家会诊论坛所属的分类进行管控。

3.2.2 非功能性分析

在线医疗问诊系统的非功能性需求比如在线医疗问诊系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:

2-1在线医疗问诊系统非功能需求表

安全性

主要指在线医疗问诊系统数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指在线医疗问诊系统能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响在线医疗问诊系统占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着在线医疗问诊系统的页面展示内容进行操作,就可以了。

可维护性

在线医疗问诊系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

3.3 系统用例分析

基于大数据的在线医疗问诊系统的完整UML用例图分别是图3-1、图3-2和图3-3。

图3-1就是患者用户角色的用例展示。

图3-1 系统患者用户角色用例图

图3-2就是医生用户角色的用例展示。

图3-2 医生用户角色用例图

图3-3就是管理员角色的用例展示。

图3-3 管理员角色用例图

3.4 系统流程分析

3.4.1 数据流程

开发基于大数据的在线医疗问诊系统最主要的一个目的就是实现用户对医生的问诊信息提交,图3-4就是系统的数据流图。

图3-4问诊医生操作展开图

3.4.2 业务流程

分析完基于大数据的在线医疗问诊系统的数据流,那么接下来我们来看系统的业务流程,图3-5就是业务流程图:

图3-5业务流程图

3.5本章小结

本章主要通过对基于大数据的在线医疗问诊系统的可行性分析、功能需求分析、系统用例分析、系统流程分析,确定整个基于大数据的在线医疗问诊系统要实现的功能。同时也为基于大数据的在线医疗问诊系统的代码实现和测试提供了标准。

4 基于大数据的在线医疗问诊系统总体设计

本章主要讨论的内容包括在线医疗问诊系统的功能模块设计、数据库系统设计。

4.1 系统架构设计

系统的总体结构从表现层、业务层、数据库三个层次利用图例和文字形象描述他们之间的联系以及每层的内容,该总体设计也将决定平台大体框架。系统架构图如图4-1所示。

图4-1 系统架构图

4.2 系统功能模块设计

4.2.1整体功能模块设计

在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本基于大数据的在线医疗问诊系统中的用例。那么接下来就要开始对基于大数据的在线医疗问诊系统的架构、主要功能和数据库开始进行设计。基于大数据的在线医疗问诊系统根据前面章节的需求分析得出,其总体设计模块图如图4-2所示。

图4-2 系统功能模块图

4.2.2用户模块设计

本系统的用户包括后台管理员和前台用户,两种用户模块的功能基本是相同的,用户比管理员多了一个注册功能,所以以用户模块的结构图为例进行分析,用户模块结构图为例进行分析,如下图:

图4-3用户模块结构图

4.2.3 评论管理模块设计

在线医疗问诊系统是一个交流性质的公开平台,用户在平台上提交评论,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的评论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:

图4-4评论管理模块结构图

4.2.4医生排班管理模块设计

在线医疗问诊系统是中需要存储不少医生信息,其模块功能结构,具体的结构图如下:

图4-5医生信息模块结构图

4.2.5在线问诊管理模块设计

在线医疗问诊系统最重要的一个功能就是用户提交问诊信息生成在线问诊信息,其在线问诊模块功能结构,具体的结构图如下:

图4-6在线问诊模块结构图

4.3 数据库设计

数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。

4.3.1 数据库概念结构设计

下面是整个基于大数据的在线医疗问诊系统中主要的数据库表总E-R实体关系图。

图4-7 系统总E-R关系图

4.3.2 数据库逻辑结构设计

通过上一小节中基于大数据的在线医疗问诊系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表doctor_scheduling (医生排班)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

doctor_scheduling_id

int

10

0

N

Y

医生排班ID

2

doctor_user

int

10

0

Y

N

0

医生用户

3

doctors_name

varchar

64

0

Y

N

医生姓名

4

doctors_gender

varchar

64

0

Y

N

医生性别

5

proficient_in_areas_of_expertise

varchar

64

0

Y

N

擅长领域

6

number_of_consultations

int

10

0

Y

N

0

问诊数量

7

current_quantity

int

10

0

Y

N

0

当前数量

8

visit_period

varchar

64

0

Y

N

就诊时段

9

doctors_department

varchar

64

0

Y

N

医生科室

10

doctor_image

varchar

255

0

Y

N

医生图片

11

doctor_introduction

text

65535

0

Y

N

医生简介

12

hits

int

10

0

N

N

0

点击数

13

praise_len

int

10

0

N

N

0

点赞数

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表doctor_users (医生用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

doctor_users_id

int

10

0

N

Y

医生用户ID

2

doctors_name

varchar

64

0

Y

N

医生姓名

3

doctors_gender

varchar

64

0

Y

N

医生性别

4

doctors_phone_number

varchar

64

0

Y

N

医生电话

5

doctors_medical_experience

varchar

64

0

Y

N

医生医龄

6

proficient_in_areas_of_expertise

varchar

64

0

Y

N

擅长领域

7

examine_state

varchar

16

0

N

N

已通过

审核状态

8

user_id

int

10

0

N

N

0

用户ID

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表forum (论坛)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

forum_id

mediumint

8

0

N

Y

论坛id

2

display

smallint

5

0

N

N

100

排序

3

user_id

mediumint

8

0

N

N

0

用户ID

4

nickname

varchar

16

0

Y

N

昵称:[0,16]

5

praise_len

int

10

0

Y

N

0

点赞数

6

hits

int

10

0

N

N

0

访问数

7

title

varchar

125

0

N

N

标题

8

keywords

varchar

125

0

Y

N

关键词

9

description

varchar

255

0

Y

N

描述

10

url

varchar

255

0

Y

N

来源地址

11

tag

varchar

255

0

Y

N

标签

12

img

text

65535

0

Y

N

封面图

13

content

longtext

2147483647

0

Y

N

正文

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

16

avatar

varchar

255

0

Y

N

发帖人头像:

17

type

varchar

64

0

N

N

0

论坛分类:[0,1000]用来搜索指定类型的论坛帖

表forum_type (论坛分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

name

varchar

16

0

N

N

分类名称:[2,16]

3

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

4

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

5

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

6

icon

varchar

255

0

Y

N

分类图标:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表historical_medical_condition (历史病情)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

historical_medical_condition_id

int

10

0

N

Y

历史病情ID

2

patient_name

varchar

64

0

Y

N

患者姓名

3

patient_gender

varchar

64

0

Y

N

患者性别

4

disease_type

varchar

64

0

Y

N

病情类型

5

disease_description

text

65535

0

Y

N

病情描述

6

diagnostic_results

text

65535

0

Y

N

诊断结果

7

treatment_plan

text

65535

0

Y

N

治疗方案

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表online_consultation (在线问诊)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

online_consultation_id

int

10

0

N

Y

在线问诊ID

2

patient_users

int

10

0

Y

N

0

患者用户

3

patient_name

varchar

64

0

Y

N

患者姓名

4

doctor_user

int

10

0

Y

N

0

医生用户

5

doctors_name

varchar

64

0

Y

N

医生姓名

6

doctors_gender

varchar

64

0

Y

N

医生性别

7

proficient_in_areas_of_expertise

varchar

64

0

Y

N

擅长领域

8

number_of_consultations

int

10

0

Y

N

0

问诊数量

9

current_quantity

int

10

0

Y

N

0

当前数量

10

appointment_quantity

varchar

64

0

Y

N

预约数量

11

inspection_report

varchar

255

0

Y

N

检查报告

12

disease_description

text

65535

0

Y

N

病情描述

13

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

14

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表patient_users (患者用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

patient_users_id

int

10

0

N

Y

患者用户ID

2

patient_name

varchar

64

0

Y

N

患者姓名

3

patient_gender

varchar

64

0

Y

N

患者性别

4

contact_phone_number

varchar

64

0

Y

N

联系电话

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表preliminary_diagnosis (初步诊断)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

preliminary_diagnosis_id

int

10

0

N

Y

初步诊断ID

2

doctor_users

int

10

0

Y

N

0

医生用户

3

patient_users

int

10

0

Y

N

0

患者用户

4

doctors_name

varchar

64

0

Y

N

医生姓名

5

disease_description

text

65535

0

Y

N

病情描述

6

preliminary_judgment

text

65535

0

Y

N

初步判断

7

preliminary_diagnosis

text

65535

0

Y

N

初步诊断

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表recommended_by_doctors (医生推荐)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

recommended_by_doctors_id

int

10

0

N

Y

医生推荐ID

2

patient_users

int

10

0

Y

N

0

患者用户

3

doctors_name

varchar

64

0

Y

N

医生姓名

4

proficient_in_areas_of_expertise

varchar

64

0

Y

N

擅长领域

5

doctors_department

varchar

64

0

Y

N

医生科室

6

doctors_photo

varchar

255

0

Y

N

医生照片

7

service_attitude

varchar

64

0

Y

N

服务态度

8

professional_level

varchar

64

0

Y

N

专业水平

9

evaluation_feedback

text

65535

0

Y

N

评价反馈

10

hits

int

10

0

N

N

0

点击数

11

praise_len

int

10

0

N

N

0

点赞数

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表visit_information (就诊信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

visit_information_id

int

10

0

N

Y

就诊信息ID

2

created_date

date

10

0

Y

N

建档日期

3

doctor_users

int

10

0

Y

N

0

医生用户

4

doctors_name

varchar

64

0

Y

N

医生姓名

5

patient_users

int

10

0

Y

N

0

患者用户

6

patient_name

varchar

64

0

Y

N

患者姓名

7

disease_description

varchar

64

0

Y

N

病情描述

8

diagnostic_results

text

65535

0

Y

N

诊断结果

9

treatment_plan

text

65535

0

Y

N

治疗方案

10

prescription_medication

text

65535

0

Y

N

开处方药

11

drug_expenses

int

10

0

Y

N

0

药品费

12

inspection_fee

int

10

0

Y

N

0

检查费

13

surgical_expenses

int

10

0

Y

N

0

手术费

14

hospitalization_expenses

int

10

0

Y

N

0

住院费

15

total_cost

varchar

64

0

Y

N

总费用

16

pay_state

varchar

16

0

N

N

未支付

支付状态

17

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

18

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

19

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

4.3本章小结

整个在线医疗问诊系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。

5 基于大数据的在线医疗问诊系统详细设计与实现

基于大数据的在线医疗问诊系统的详细设计与实现主要是根据前面的在线医疗问诊系统的需求分析和基于大数据的在线医疗问诊系统的总体设计来设计页面并实现业务逻辑。主要从基于大数据的在线医疗问诊系统界面实现、业务逻辑实现这两部分进行介绍。

5.1系统部署

5.1.1 系统环境部署

本项目基于书数据构建在线医疗问诊系统,利用Hadoop的分布式计算和存储能力处理大规模医疗数据。使用Hive构建数据仓库,实现对结构化数据的管理和查询,配置Hadoop集群,确保系统的高可用性和容错性。其中Hadoop生态圈提供了底层的分布式存储(HDFS)和分布式计算框架(MapReduce),用于处理海量医疗数据。Hive提供了类似SQL的查询语言,使得数据分析人员可以使用类似于关系型数据库的方式来查询存储在Hadoop中的数据。基于主框架Springboot,简化了系统的开发和部署过程。SparkSQL提供了用于结构化数据处理的API,可以与标准SQL集成,使得开发人员可以在Spark上运行SQL查询。

(1)大数据集群环境:部署Hadoop集群环境,包括HDFS分布式文件系统和YARN资源管理器等组件,以支持大规模数据的存储和计算。

(2)Hive及Hadoop环境配置:配置Hive和Hadoop需要进行一系列步骤,包括设置配置文件、启动相关服务等。具体流程如下:①配置Hadoop环境,包括core-site.xml、hdfs-site.xml等配置文件。②配置Hive环境,包括hive-site.xml等配置文件。③启动Hadoop集群和Hive服务。

(3)代码打包部署:在部署系统代码时,需要将代码打包成可执行的Jar包,并通过自动化工具实现部署流程的自动化,提高部署效率和稳定性。首先,编写系统代码,并进行测试和调试。然后,使用Maven等工具将代码打包成Jar包。再将Jar包上传到Hadoop集群中的相应位置,最后在集群上启动Jar包,运行系统代码。

(4)启动与运行:在部署完系统代码之后,需要启动系统服务并确保其正常运行。首先启动Hadoop集群中的各个节点;然后启动Hive服务,并确保其与Hadoop集群正常连接;最后启动系统代码,监听用户的请求,并进行相应的处理。

5.1.2 数据处理过程

在本系统中,我们使用Hadoop技术进行系统内部数据处理,其主要包括数据的存储、处理和分析等过程。具体流程如下:

(1)数据采集与存储:数据源包括患者的基本信息、病例数据、医疗记录等。数据通过Hadoop集群的HDFS进行存储,保证数据的可靠性和高可用性。

(2)数据处理:使用MapReduce等技术对存储在HDFS中的数据进行处理,包括数据清洗、转换、计算等操作。通过Hive进行数据的查询和分析,提取出用户所需的信息。

(3)数据分析与挖掘:利用Hadoop生态系统中的工具,如Spark、Hive等进行数据分析和挖掘,发现数据中的规律和趋势。结合机器学习和数据挖掘算法,实现对医疗数据的预测和分类。

(4)数据可视化:将分析结果通过Echarts等工具进行可视化展示,生成各种图表和报表,帮助用户直观理解医疗数据的分析结果。

数据分析流程图如下所示。

图5-1数据分析流程图

5.2前台用户功能模块

5.2.1 前台首页界面

当进入基于大数据的在线医疗问诊系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,再往下是健康资讯,其主界面展示如下图5-2所示。

图5-2 前台首页界面图

5.2.2 用户注册界面

基于大数据的在线医疗问诊系统的游客和用户时可以进行注册登录,当用户右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用用户注册界面展示如下图5-3所示。

图5-3注册界面图

注册关键代码如下所示。

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

        query.put("username",user.getUsername());

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}

5.2.3 用户登录界面

基于大数据的在线医疗问诊系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当患者用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到在线医疗问诊系统的首页中;否则将会提示相应错误信息,用户登录界面如下图5-4所示。

图5-4用户登录界面图

登录的逻辑代码如下所示。

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

5.2.4专家会诊界面

当访客点击在线医疗问诊系统中导航栏上的“专家会诊”后将会进入到该“专家会诊”列表的界面,然后选择想要看的专家会诊,点击进入到详细界面,在详细界面可以收藏+赞+评论等操作。也可以点击发布内容发布新的帖子。专家会诊列表界面如下图5-5所示。

图5-5专家会诊列表界面图

5.2.5健康资讯界面

当访客点击基于大数据的在线医疗问诊系统中导航栏上的“健康资讯”后将会进入到该“健康资讯”列表的界面,然后选择想要看的健康资讯,点击进入到详细界面,在详细界面可以收藏+赞+订单评价等操作。健康资讯界面如下图5-6所示。

图5-6健康资讯界面图

5.2.6 医生排班界面

当用户点击“医生排班”后就可以看到所有的医生排班,可以输入医生姓名或医生科室进行搜索查询,选择你想要了解的医生排班后将会进入该医生排班的详情界面,可以了解到该医生排班的医生用户、医生姓名、医生性别、擅长领域、问诊数量、当前数量、就诊时段、医生科室、医生简介等,同时可以对点击下方的“问诊”、“点赞”、“收藏”进行相关操作,也可以在下方评论区输入想要评论的内容进行评论,医生排班详情展示页面如图5-7所示。

图5-7 医生详情界面图

查询医生排班信息关键代码如下所示。

   @RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

    }

问诊信息提交页面如图5-8所示。

图5-8 问诊信息提交界面图

问诊信息提交关键代码如下所示。   

  @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

5.2.7医生推荐界面

当用户点击“医生推荐”后就可以看到所有的医生推荐信息,可以在下方评论区输入想要评论的内容进行评论。患者用户也可以在个人中心的医生推荐模块进行医生推荐信息发布。医生推荐界面如下图5-9所示。

图5-9医生推荐界面图

5.2.8我的账户界面

当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料以及登录系统的密码进行设置管理,我的账户界面如下图5-10所示。

图5-10 我的账户界面图

5.2.9个人中心界面

前台用户点击右上角“个人中心”模块,可以查看和管理个人相关的信息和任务,其中患者用户可以对包括个人首页、在线问诊、初步诊断、就诊信息、医生推荐和收藏的信息进行。医生用户可以对个人首页、医生排班、在线问诊、初步诊断、就诊信息、历史病情和收藏的信息进行管理。患者用户个人中心界面如下图5-11所示。

图5-11患者用户个人中心界面

医生用户个人中心界面如下图5-12所示。

图5-12医生用户个人中心界面

5.3后台功能模块

5.3.1系统用户界面

基于大数据的在线医疗问诊系统中的管理人员在“系统用户”这一菜单是中可以对注册的患者用户,医生用户以及管理员进行管控。系统用户管理界面如下图5-13所示。

图5-13系统用户管理界面图

修改用户信息关键代码如下:

    @PostMapping("/set")

@Transactional

    public Map<String, Object> set(HttpServletRequest request) throws IOException {

        service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));

        return success(1);

    }

5.3.2医生排班管理界面

管理员点击“医生排班管理”显示所有的医生排班,支持通过医生科室或医生姓名对医生排班进行查询。如果想要添加新的医生排班,点击“添加”按钮,输入医生用户、医生姓名、医生性别、擅长领域、问诊数量、当前数量、就诊时段、医生科室、医生简介等信息,点击“提交”按钮就可以添加了,也可以对用户提交的医生评论的信息进行管控。医生排班管理界面如下图5-14所示。

图5-14医生排班管理界面图

添加医生排班信息关键代码如下所示。   

  @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

5.3.3在线问诊管理界面

管理员点击“在线问诊管理”会显示出所有的在线问诊信息,支持通过患者姓名或者医生姓名对在线问诊信息进行查询,点击“初步诊断”对问诊信息进行初步诊断信息添加。在线问诊管理界面如下图5-15所示。

图5-15在线问诊管理界面图

5.3.4系统管理界面

管理人员在“系统管理”这一菜单下是可以对在线医疗问诊系统内的轮播图进行添加修改的,其管理界面如下图5-16所示。

图5-16系统轮播图管理界面图

轮播图上传关键代码如下:

 @PostMapping("/upload")

    public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {

        log.info("进入方法");

        if (file.isEmpty()) {

            return error(30000, "没有选择文件");

        }

        try {

            //判断有没路径,没有则创建

            String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";

            File targetDir = new File(filePath);

            if (!targetDir.exists() && !targetDir.isDirectory()) {

                if (targetDir.mkdirs()) {

                    log.info("创建目录成功");

                } else {

                    log.error("创建目录失败");

                }

            }

            String fileName = file.getOriginalFilename();

            File dest = new File(filePath + fileName);

            log.info("文件路径:{}", dest.getPath());

            log.info("文件名:{}", dest.getName());

            file.transferTo(dest);

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("url", "/api/upload/" + fileName);

            return success(jsonObject);

        } catch (IOException e) {

            log.info("上传失败:{}", e.getMessage());

        }

        return error(30000, "上传失败");

    }

5.3.5资源管理界面

管理员点击“资源管理”菜单能够对其下子菜单健康资讯和健康资讯的分类进行增删改查。界面如下图5-17所示。

图5-17资源管理界面图

6 系统测试

6.1 系统测试用例

系统测试包括:用户登录功能测试、医生排班查看功能测试、医生推荐添加、健康资讯搜索、密码修改、问诊医生功能测试,如表6-1、6-2、6-3、6-4、6-5、6-6所示:

用户登录功能测试:

表6-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

医生排班查看功能测试:

表6-2 医生排班查看功能测试表

用例名称

医生排班查看

目的

测试医生排班查看功能

前提

用户登录

测试流程

点击医生排班列表

预期结果

可以查看到所有医生排班信息

实际结果

实际结果与预期结果一致

添加医生推荐界面测试:

表6-3 添加医生推荐界面测试表

用例名称

添加医生推荐测试用例

目的

测试医生推荐添加功能

前提

管理员正常登录情况下

测试流程

1)点击医生推荐管理,然后点击添加后并填写信息。

2)点击进行提交。

预期结果

提交以后,页面首页会显示新的医生推荐 

实际结果

实际结果与预期结果一致

健康资讯搜索功能测试:

表6-4健康资讯搜索功能测试表

用例名称

健康资讯搜索测试

目的

测试健康资讯搜索功能

前提

测试流程

1)在搜索框填入搜索关键字。

2)点击搜索按钮。

预期结果

页面显示包含有搜索关键字的健康资讯

实际结果

实际结果与预期结果一致

密码修改搜索功能测试:

表6-5 密码修改功能测试表

用例名称

密码修改测试用例

目的

测试管理员密码修改功能

前提

管理员用户正常登录情况下

测试流程

1)管理员密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

问诊医生功能测试:

表6-6问诊医生功能测试表

用例名称

问诊医生测试用例

目的

测试用户问诊医生功能

前提

用户正常登录情况下

测试流程

1)搜索查看医生排班,点击问诊。

2)填写问诊内容信息,点击进行提交。

预期结果

医生回复在线问诊

实际结果

实际结果与预期结果一致

6.2 系统测试结果

通过编写在线医疗问诊系统的测试用例,已经检测完毕用户登录功能测试、医生排班查看功能测试、医生推荐添加、健康资讯搜索、密码修改、问诊医生功能测试,通过这6大模块为基于大数据的在线医疗问诊系统的后期推广运营提供了强力的技术支撑。

结论

在开发本在线医疗问诊系统之前我胸有成竹,觉得很简单,但在实际的开发中我发现了自身的很多问题,许多编程思想和方法都还没有掌握牢靠,比如对于大数据的分析技术和SpringBoot框架的使用,通过开发这个在线医疗问诊系统我成长了很多,懂得了做什么事情都要脚踏实地,不能眼高手低,在本次基于大数据的在线医疗问诊系统的开发中我逐渐掌握逐渐熟悉的技术。

本次基于大数据的在线医疗问诊系统的开发中我还学会了很多,例如良好的编程思想和完善的规划思想。在着手编程之前需要罗列出程序框架的大概,脑海中构建出程序的主题框架。做好这一步我们才能胸有成竹的经行开发项目。当设计框架了熟于心之后,需要思考本次编程所需的主要知识点和技术点,并充分学习。如此一来项目的开发才能循序渐进、如丝般顺滑,长久以往就能养成良好的开发习惯。一个程序好不好还要看出的bug多不多,如果在项目完成前做好bug的查验与预防可能发生的事故才能保证程序的稳定长久性运行。如果项目在完工后出现各种问题自己,那么在进入社会后,不仅会给公司团队带来麻烦和增加不必要的工作,还会导致客户流失,公司对自己的评价下降。

在本次项目中我也暴露了诸多问题。对于SpringBoot的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。

参考文献

[1]邓继红.医院档案管理与档案升级工作探究[J].兰台内外,2024,(02):34-36.

[2]陈红.数字化档案管理信息系统在医院档案管理中的应用[J].办公自动化,2024,29(02):70-72.

[3]孙超.医院档案管理信息系统的设计与实现[J].办公自动化,2024,29(01):70-72.

[4]马庆.计算机软件开发中JAVA编程语言的应用[J].山西电子技术,2023,(06):84-86+98.

[5]黄赛英.基于Springboot的医院档案管理系统设计[J].集成电路应用,2023,40(11):384-385.DOI:10.19339/j.issn.1674-2583.2023.11.176.

[6]杨芬,宋晓燕.MySQL数据库应用的课程教学分析[J].电子技术,2023,52(10):180-181.

[7]王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.

[8]徐震阳,王博,蒋效伟等.多端融合的医疗健康平台设计与实现[J].现代信息科技,2023,7(01):115-118.DOI:10.19850/j.cnki.2096-4706.2023.01.031.

[9]Nitika S ,K. A A ,Pankaj A , et al.Association of waiting time and satisfaction level of patients with online registration system in a tertiary level medical institute outpatient department (OPD)[J].Health Policy and Technology,2022,11(4):

[10]王曼维,杨荻,李岩等.基于SpringBoot框架的智慧医疗问诊系统设计与实现[J].中国医学装备,2022,19(03):133-136.

[11]巩蕾.医院挂号预约管理系统设计[J].电脑编程技巧与维护,2022,(02):66-68+80.DOI:10.16184/j.cnki.comprg.2022.02.033.

[12]陈谦民,翟祥栩,薛颖等.医院信息管理提升平台的设计与实现[J].现代信息科技,2021,5(13):95-98.DOI:10.19850/j.cnki.2096-4706.2021.13.024.

[13]胡小勇.基于SpringBoot的医院门诊管理信息系统的设计与实现[D].华中科技大学,2021.DOI:10.27157/d.cnki.ghzku.2021.001118.

[14]叶基林.某医院挂号预约管理系统设计与实现[D].电子科技大学,2021.DOI:10.27005/d.cnki.gdzku.2021.002694.

[15]Jie H D ,Hsin Y Y ,Hao T W , et al.Cancer Registry Coding via Hybrid Neural Symbolic Systems in the Cross-Hospital Setting[J].IEEE ACCESS,2021,9112081-112096.

[16]刘致放.医院基础信息自动化管理平台的设计与研究[J].电子世界,2020,(20):148-149.DOI:10.19353/j.cnki.dzsj.2020.20.066.

[17]马传宸.智慧医疗服务平台后端服务模块的设计与实现[D].南京大学,2020.DOI:10.27235/d.cnki.gnjiu.2020.002424.

[18]张毅.LM医院挂号预约系统的分析与设计[D].西安理工大学,2020.DOI:10.27398/d.cnki.gxalu.2020.001477.

[19]吴俪昊,吴玮,原明明.浅谈现代化医院管理中的电子信息工程与应用[J].信息系统工程,2020,(05):37-38.

[20]Zexin A ,Xiao Z .System Design of Multiple Network Platform Outpatient Appointment Registration System for Large General Hospitals[J].Journal of Physics: Conference Series,2019,1288012036-012036.

致  谢

这篇文章的完成经历了多个日日夜夜的努力,终于在今天得以完成。这篇文章的创作过程实为不易,但在老师和同学的辛勤帮助下顺利渡过。让我在设计过程中举步维艰时,非常感谢我的导师不耐其烦的帮助我解决问题,给予了我许多指导意见。也感谢所有为我授业解惑的老师!

另外,本文的完成也参考借鉴了许多国内外在大数据和SpringBoot技术上的著作,如果没有著作原作的辛勤付出和科研成果,我也很难完成本论文。感谢在本论文中关联到的学者们!也感谢Google等公司,感谢他们强大的搜索引擎,让我的资料查阅省事简单。

感谢之余也还有几句话要说,虽大学学习四年,怎奈何本人才疏学浅,本文的完成已为尽力,但文中不免有些不当和错误之处,诚挚真切的请求各位老师对本文的批评改正,感谢百忙之中费心审阅我论文的老师。

免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-

免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-

免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-

猜你喜欢

转载自blog.csdn.net/BS53804/article/details/143053278