测试过程及结果
本次对于医生推荐系统测试通过手动测试的方式共进行了两轮测试。
(1)第一轮测试中执行了个20个测试用例,通过16个,失败4个,其中属于严重缺陷的1个,属于一般缺陷的3个。
(2)第二轮测试中执行了10个测试用例,通过9个,失败1个,其中属于严重缺陷的0个,一般缺陷的1个。
测试结论及改进
医生推荐系统共进行了两轮具体测试,在第一轮测试中发现了一些错误,通过步骤重现分析属于逻辑错误还是编码错误后进行具体修改,修改成功后再次进行新一轮的测试验证,通过对比实测结果与预期结果,重新进行修改测试。就测试到的问题而言,绝大多数是由于系统代码编写产生的错误,因此重新进行修改可以消除错误。在整体更改之后,虽然仍存在着对系统运行不影响的问题,但是该系统目前已基本解决求医难的问题,满足了医生和患者用户的需求。
在该系统测试阶段,我们遵照最少用例测试最多错误的原则,遵循全面覆盖功能点,并避免系统在配置资源方面的冗余。
7结束语
医生推荐系统是根据患者网上求医难、信息适用性差的需求而开发的一款系统。可以及时有效的解答患者的健康问题、方便用户浏览健康资讯,还可以使医生的个人品牌得到宣传和实现。
本文从分析研究背景、内容和意义出发,首先分析了在互联网使用和信息大爆炸的当代,患者求医过程中遇到的各种不便与限制医生进一步发展的原因,然后从技术、经济和操作三个方面进行系统的可行性分析,确定系统是否可行。接着,进一步分析游客、患者用户、医生用户和管理员这四类用户的用户需求,并根据用户需求绘制四类用户各自的用例图,然后进行医生推荐系统的数据建模,通过绘制医生推荐系统的数据流图,列出对应的数据字典。接着,进行从系统的总体结构到具体功能模块的设计,按照系统实体与实体之间的联系绘制E-R图,并转换为逻辑结构设计。最后,根据前面的分析设计进行系统实施与测试,使用C#语言在Visual Studio 2008中编写代码和测试,最终得到满足用户需求的医生推荐系统。
医生推荐系统虽然基本实现预期目标,能够为用户提供在线问诊、医生查找、浏览健康资讯等功能,但目前仍存在一些问题,如商业价值不高,系统缺乏充值操作,还有消息功能不够完善等,需要随着用户的使用不断更新完善才能更好的满足用户需求。
参考文献
- 何惠茹.基于推理算法的导医系统设计与实现[D].安徽:安徽大学,2016.
- 刘泽田,金函琪,付瑶,孙钰明,李河.基于Hadoop的医疗云存储与医生推荐系统的研究与实现[J].数字技术与应用,2017(8):63-65.
- 吴信东,叶明全,胡东辉,吴共庆,胡学钢,王浩.普适医疗信息管理与服务的关键技术与挑战[J].计算机学报,2012,35(5):827-845.
- 李嘉政.计算机软件技术开发应用分析[J].中国战略新兴产业,2018(4):108.
- Anna E. Ordóñez,Pamela Y. Collins. Advancing Research to Action in Global Child Mental Health[J]. Child and Adolescent Psychiatric Clinics of North America,2015,24(4):679-697.
- 陈庆荣.基于B/S模式应用的研究与设计[J].福建电脑,2018,34(2):125-126.
- 沈被娜,刘祖照,姚晓冬.计算机软件技术基础[M].北京:清华大学出版社,2000.
- 赵春玲.NET平台下开发三层架构WinForm应用程序简介[J].信息技术与信息化,2010,4:33-35.
- 江红,余青松.C#.NET程序设计教程[M].北京:清华大学出版社,2010.
- (美)斯泰尔曼.Head First C#[M].北京:中国电力出版社,2010.
- (美)Jason N. Gaylord.ASP.NET 4.5高级编程(第8版)[M].北京:清华大学出版社,2014.
- 刘天印,周松林,张帆,张兆春.基于ASP.NET的实验室管理系统的设计及Web编程技术[J].黄石高等专科学校学报,2004,20(4):42-45.
- (美)Jeffer R.Shapiro.SQL Server 2005参考大全.[M].北京:清华大学出版社,2016.
- 祁新安,候清江.SQL Server数据库的运用研究[J].制造业自动化,2013,32(12):2-3.
- 王珊,萨师煊.数据库系统概论[M].北京:人民邮电出版社,2011.
- 易建勋.计算机网络设计[M].北京:人民邮电出版社,2014.
- Zhengxing Huang,Xudong Lu,Huilong Duan,Chenhui Zhao.Collaboration-based medical knowledge recommendation[J] . Artificial Intelligence In Medicine . 2012,1: 13-24.
核心算法代码分享如下:
package com.sql
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types._
import org.junit.Test
import java.util.Properties
class DoctorSpark2024 {
val spark = SparkSession.builder()
.master("local[12]")
.appName("医生大数据Spark分析2024")
.getOrCreate()
val doctors_schema = StructType(
List(
StructField("name", StringType),
StructField("views", FloatType),
StructField("hospital",StringType),
StructField("department", StringType),
StructField("gaode_province", StringType),
StructField("gaode_city",StringType),
StructField("gaode_district", StringType),
StructField("title", StringType),
StructField("disease", StringType)
)
)
val doctors_df = spark.read.option("header", "false").schema(doctors_schema).csv("hdfs://bigdata:9000/doctor2024/doctors/doctors.csv")
@Test
def init(): Unit = {
doctors_df.show()
}
//指标5 热门医生Top10
@Test
def tables05(): Unit = {
doctors_df.createOrReplaceTempView("ods_doctors")
val df2 = spark.sql(
"""
select hospital,name,max(views) num
from ods_doctors
group by hospital,name
order by num desc
limit 10
""")
df2
// .show(50)
.coalesce(1)
.write
.mode("overwrite")
.option("driver", "com.mysql.cj.jdbc.Driver")
.option("user", "root")
.option("password", "123456")
.jdbc(
"jdbc:mysql://bigdata:3306/hive_doctor?useSSL=false",
"tables05",
new Properties()
)
}
//指标6 科室数量Top10
@Test
def tables06(): Unit = {
doctors_df.createOrReplaceTempView("ods_doctors")
val df2 = spark.sql(
"""
select department,count(distinct name) num
from ods_doctors
group by department
order by num desc
limit 10
""")
df2
// .show(50)
.coalesce(1)
.write
.mode("overwrite")
.option("driver", "com.mysql.cj.jdbc.Driver")
.option("user", "root")
.option("password", "123456")
.jdbc(
"jdbc:mysql://bigdata:3306/hive_doctor?useSSL=false",
"tables06",
new Properties()
)
}
}