《三水区慢性病地理信息系统》项目研发总结

**

本次任务完成时间:2018年12月21日~2019年01月15日
开发工具与关键技术:SuperMap + C# + SQL Server
完成模块功能:区域定位、查询搜索、路径查询、周边分析、图层管理器、疫情预警

一、 功能实现
1.1登录
(1).运行项目,就会出现下图所示登录页面:
(帐号、密码的输入框中分别填写您的帐号和密码,这些信息也从系统管理员处获取。)《三水区慢性病地理信息系统》项目研发总结
(2)登录成功
如果您的帐号和密码都正确,在点击“登录”按钮后就可以看到系统的前台主界面。如下图所示:

《三水区慢性病地理信息系统》项目研发总结

2.1综合展示
2.1.1 区域定位
概述:区域定位是对三水区的街道的定位
操作流程:主界面 → 区域定位
(1)点击某个街道进行定位,效果如图下图显示:

《三水区慢性病地理信息系统》项目研发总结

2.1.2 查询搜索
概述:查询搜索是通过选择某个条件筛选出地址的功能
操作流程:主界面 → 查询搜索 → 输入查询条件 → 查询
(1)地址查询,效果如下图所示:
在输入框中输入三水区所管辖的地方的地址进行输入查询,并在地图上进行定位出来,如果输入的地址在地图找不到将不会显示,建议输入详细的地址,点击筛选出来的数据进行地址定位 如图下图所示
《三水区慢性病地理信息系统》项目研发总结

(2)公司企业查询,效果与操作和地址查询一致
(3)项目登记号查询,效果如图下图所示

在输入框中,可以精确的输入患者的项目登记号进行查询, 也可以输入项目登记号的关键字进行模糊查询,模糊的结果会在右边的侧边栏里显示,单击侧边栏中的任意结果 ,如果这项目登记号没有被注销,则可以在地图上定位出位置。
《三水区慢性病地理信息系统》项目研发总结
(4)病例门诊号查询、卡片号查询,效果与操作和项目登记号查询一致,区别是以不同的条件对患者的家庭地址进行筛选

2.1.3 路径查询
概述:路径查询是对患者的活动路径进行查询
操作流程:主界面 → 路径查询
注意:路径查询中的 年、月 都将以栅格网格的形式展示。天 将以路径的形式展示
年 查询
点击“年”选项卡 输入开始年份 和 结束年份后,然后点击查询按钮,会在地图底部显示时间轴和右侧信息框,效果如图下图所示:
《三水区慢性病地理信息系统》项目研发总结

点击对应的时间轴 在地图将会显示 当前年份所有的病人活动栅格图信息,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

如果需要查询某一个病人的活动路径信息 在左侧的条件进行筛选,输入项目登记号,年龄,性别… 会自动在地图 右侧 模糊筛选出项目登记号,点击其中一个项目登记号 在时间轴 选择 查询时间 即可查询对应的病人路径信息,效果如下图所示:《三水区慢性病地理信息系统》项目研发总结
月 查询
请参考 “年查询” 操作一致,效果如下图。
《三水区慢性病地理信息系统》项目研发总结

日 查询
病人路径“日”查询 操作与 年,月一致 区别是查询结果,将不再以栅格的形式展示,是以病人路径的形式展示 ,在不输入项目登记号 将会把当天的全部病人的路径分布显示,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

如果需要查询某一个病人的活动路径图 条件筛选与 年,月,周一致。
2.1.4 图层管理器
概述:用于管理图层,可以在其中开启与关闭图层。
操作流程:主界面  图层管理器
移入主界面的“图层管理器”显示或关闭医院地理信息,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结
(1)医院分布图层管理
概述:显示地图中所有医院信息及其周边信息。
移入主界面的“图层管理器”显示或关闭医院地理信息,如下图所示:
《三水区慢性病地理信息系统》项目研发总结

1. 医院详细信息
概述:根据点击的医院显示相应的信息
点击地图中的医院图标显示详细信息,如图下图所示
《三水区慢性病地理信息系统》项目研发总结

2. 医院周边信息
概述:显示地图中所有医院信息及其周边信息。
点击医院详细信息弹窗中的“周围查询”按钮进行查询。查询的结果全部在右则的导航栏显示,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

点击右侧信息名称可以进行定位,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

(2)社康分布图层管理
概述:用于开启与关闭地图所有社康及其查看社康信息,并且查看该社康周边的相关信息。
移入主界面的“图层管理器”显示或关闭社康地理信息:
1. 社康周边信息
效果和操作与医院周边查询一致
2. 社康详细信息
概述:显示关于该社康的详细信息。
点击详细信息查询该社康的详细信息,弹出右侧框显示该社康详细信息,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

(3)药店分布图层管理
概述:用于显示与关闭地图中的所有药店地理信息,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

1. 药店周边信息:效果和操作与医院周边查询一致

(4)病例分布散点图层管理
概述:根据病例的分布进行不同的标记,打点,来自现有的数据。
病例在地图上的分布呈现功能,实现动态病例分布散点图,不同的病例类型需以不同风格的点进行呈现,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

1.活动路径
点击病例详细的“活动路径”会跳转到“路径查询”模块,并会绑定对应的项目登记号,如下图所示:
《三水区慢性病地理信息系统》项目研发总结

更多病例路径分析请参考路径查询模块操作
2. 病例周边信息:效果和操作与医院周边查询一致
(5)病例分布热力图层管理
概述:病例分布实时热力图在地图上的呈现
开启病例分布图层,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结
(6)病原分布图层管理
概述:病原分布图在地图上的呈现
开启病原分布图层,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结
(7)疫情预警图层管理
概述:通过计算各单位(例如:学校,工厂,企业等)最近90天内的病例数,如大于2例则生成绝对,排除报警的已绿色图标显示,未排除报警的已红色图标显示,效果如下图所示
《三水区慢性病地理信息系统》项目研发总结

点击红色图标,进行排除疫情报警,效果如下图所示
《三水区慢性病地理信息系统》项目研发总结
《三水区慢性病地理信息系统》项目研发总结

2.2 疫情预警
2.2.1 移动百分位预警
效果参考社区级绝对法预警

2.2.2 社区级绝对法预警
选择某年某月,默认是三个月内,分析某个社康内是否在三个月内发生俩次病例以上,如果有就预警,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

如果某个社区发生两次病例,查询的社区都会在属性表上显示,点击某个社区可以进行定位操作,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

2.2.3 单位级绝对法预警
择某年某月,默认是三个月内,点击“查询”按钮后将会统计各单位在指定时间段内的病例数,如果单位病例数在3个月累计≥2例则预警,显示预警单位位置,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

点击地图中的疫情预警图标即可弹出疫情详细信息,效果如下图所示:
《三水区慢性病地理信息系统》项目研发总结

二、 相关业务表和关系
《三水区慢性病地理信息系统》项目研发总结

三、 部分代码

 /// <summary>
        /// 查询疫情预警提醒
        /// </summary>
        /// <returns></returns>
        public ActionResult SelectWarning()
        {
            try
            {
                var startTime = DateTime.Now.AddDays(-90);//最近90天的病例数
                var end = DateTime.Now;//获取现在时间
                var list = (from tbPatient in myModels.PW_Patient
                            where tbPatient.DiagnoseDate <= end && tbPatient.DiagnoseDate >= startTime
                            select new
                            {
                                WorkSheet = tbPatient.WorkSheet.Trim(),//工作单位
                            }).GroupBy(m => m.WorkSheet).ToList();//通过工作单位分组
                return Json(list, JsonRequestBehavior.AllowGet);
            }
            catch (Exception)
            {
                return Json("", JsonRequestBehavior.AllowGet);
            }
        }
        /// <summary>
        /// 条件查询疫情预警提醒(单位)
        /// </summary>
        /// <returns></returns>
        public ActionResult SelectWarnings(string startTime,string endTime, int type)
        {
            try
            {
                var StartTime = Convert.ToDateTime(startTime);
                var EndTimes = Convert.ToDateTime(endTime).Month;
                int month;
                int days;
                month = Convert.ToInt32(EndTimes);
                switch (month)//判断一个月中有多少天
                {
                    case 2: days = 28; break;
                    case 4:
                    case 6:
                    case 9:
                    case 11: days = 30; break;
                    default: days = 31; break;

                }
                var EndTime = Convert.ToDateTime(endTime + "-" + days);//拼接天日期(月的最后一天)
                if (type == 1)//确诊日期统计
                {
                    var list = (from tbPatient in myModels.PW_Patient
                                where tbPatient.DiagnoseDate <= EndTime && tbPatient.DiagnoseDate >= StartTime
                                select new
                                {
                                    WorkSheet = tbPatient.WorkSheet.Trim(),//工作单位
                                }).GroupBy(m => m.WorkSheet).ToList();//通过工作单位分组
                    return Json(list, JsonRequestBehavior.AllowGet);
                }
                else if (type == 2)//订正终审日期统计
                {
                    var list = (from tbPatient in myModels.PW_Patient
                                join tbCard in myModels.SYS_Card on tbPatient.CardID equals tbCard.CardID
                                where tbCard.CorrectDate <= EndTime && tbCard.CorrectDate >= StartTime
                                select new
                                {
                                    WorkSheet = tbPatient.WorkSheet.Trim(),//工作单位
                                }).GroupBy(m => m.WorkSheet).ToList();//通过工作单位分组
                    return Json(list, JsonRequestBehavior.AllowGet);
                }
                return Json("", JsonRequestBehavior.AllowGet);
            }
            catch (Exception)
            {
                return Json("", JsonRequestBehavior.AllowGet);
            }
        }

四、开发总结

经过这次项目实训,我觉得最大的收获就是提升了自己的自学能力,就好比如对地图中所需要的插件如何使用,通过一些相关的插件文档进行自学运用,如何实现系统所需的功能,使得所做的地图编辑分析系统得以更好、更全面、内容和功能更加丰富的呈现出来;
**