测试过程及结果
本次对于医生推荐系统测试通过手动测试的方式共进行了两轮测试。
(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()
      )
  }
}










