基于微信小程序的体检报告统一查询与对比系统的设计

2022-09-09 02:16周文安廖建雄
电子技术与软件工程 2022年11期
关键词:格式化体检中心程序

周文安 廖建雄

(四川省计算机研究院 四川省成都市 610041)

1 引言

随着社会经济的快速发展,人们对身体健康的重视度越来越高,越来越多的人有了定期体检的习惯。然而现在很多医院或体检中心都只提供给体检者纸质版本的体检报告,相对于电子版本的报告而言,纸质版本报告的缺点一是携带、查阅不方便,二是时间长了容易丢失。因此我们设计并实现了一套电子版本的体检报告查询、对比系统,用户可通过微信小程序查看自己的历年体检报告,并可以将多份报告中的项目一一对比,直观地了解自己身体指标的变化情况。

本文中使用的名词定义

体检中心:各医院健康管理中心、体检中心或其他提供体检的机构在本文中统称为体检中心。

2 系统设计

2.1 系统架构

如图1所示,该系统总体分为三大部分:数据格式化处理、微信小程序和系统后台。

图1:系统数据流程及主要功能模块图

数据格式化处理:因各家体检中心使用的是不同厂商的体检系统,而各厂商设计的体检系统在数据结构、数据字典等方面存在差异。为了方便实现报告查看、对比等功能,需要将所有体检数据转换成相同的数据结构。数据格式化处理模块的功能就是访问不同体检中心的数据接口,将体检数据转换成本系统定义的格式,供其他模块使用。

微信小程序:提供给个人用户使用的产品。用户通过登录小程序并绑定自己的姓名和身份证号后,即可查看本系统已对接的所有体检中心所生成的其本人的体检报告。并可以选择不同的体检报告一一对比,直观地反映体检者在两次体检中身体健康状况发生了哪些变化。

系统后台:本系统的管理运维中心,提供给管理人员使用,管理员可通过后台对整个系统进行配置、查询体检报告、分析特定疾病在不同年龄段和不同性别的分布情况以及发布系统资讯等。

2.2 技术选型

2.2.1 开发工具选择

(1)数据格式化处理及服务端程序使用当前最流行的服务端框架之一SpringBoot,SpringBoot 是一个使用Java 为开发语言的开源框架,能够非常方便快速的构建Restful 服务。SpringBoot 易于上手,内嵌Web 服务,不需要像传统Java 那样使用大量配置文件,后期维护方便。

(2)微信小程序使用uni-app,uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web、以及各种小程序、快应用等多个平台[3]。目前本系统只实现了微信小程序,如果以后要发布APP,只需要经过少量的调整就可复用现有的代码。

(3)系统后台使用Vue 框架,Vue 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。Vue 使用双向绑定,数据与页面不管是哪边做了修改,另一边会自动更新,使代码更简洁,开发效率更高。

2.2.2 数据库选择

数据库采用MongoDB 与MySQL 结合使用的模式。MongoDB 用来存放体检档案,MySQL 则用来存放除体检档案外的其他数据。

(1)MongoDB 作为当下最流行的NoSQL 数据库之一,它的文档存储与体检报告的数据结构非常契合。

1.一份体检报告通过格式化处理后即是一个JSON 文档;

2.体检报告存档后基本没有更改的需求,主要用于数据展示及分析;

3.读取报告时可以一次性直接获取到完整的体检报告,相较传统方式可减少IO 操作次数。

(2)MySQL 是目前最流行的开源关系型数据库之一,在本文实现的系统中用来存放体检报告数据之外的其他数据,如系统用户数据、资讯数据、知识库数据、疾病库数据等。

3 系统模块及实现

3.1 数据格式化处理

数据格式化处理程序需要对接不同体检中心,根据不同体检中心的数据对接接口及体检数据格式的不同,需要在数据对接时针对不同体检中心完成程序的设计与开发。最终实现将所有体检中心的所有体检报告数据都格式化成统一的JSON 文档并存放在MongoDB 数据库中。格式化处理程序的调用时机有2 个,分别是定时执行和手动执行。

3.1.1 定时执行

使用SpringBoot 的定时机制,每隔一段时间访问一次体检中心的接口,获取新的数据并格式化到MongoDB 数据库中,在SpringBoot 中可以通过Java 注解的方式开启定时执行的功能。@EnableScheduling 注解放在类上用来开启定时执行,@Scheduled(cron = "* */10 * * * *")注解放在要定时执行的方法上,用来配置方法执行的条件,cron 表达式中的值从左到右分别表示秒、分、时、日、月、周几。如@Scheduled(cron = "* */10 * * * *")表达式定义的规则是每隔10 分钟执行一次该注解作用的方法。

3.1.2 手动执行

当体检中心的体检报告数据有变更或用户发现其本人的体检报告有缺失时,可以通过小程序提供给用户的数据同步功能手动发起更新数据的请求,系统收到请求后会调用格式化处理程序获取最新的数据并保存到MongoDB 数据库中。

3.2 微信小程序

3.2.1 用户登录

通过获取用户微信绑定的手机号注册和登录本平台,用户首次登录后需要绑定本人的姓名及身份证号等信息。绑定后进入首页,首页如图2所示,主要分为上中下三个区域,上部展示本人的基本信息和最近一次体检报告中的心率、血压、血糖、身高、体重及BMI 等体检结果数据;中间部分是其他功能模块的入口,包括健康档案、指标库、疾病库等;下部区域为系统资讯模块,展示系统发布的最新资讯。

图2:小程序首页

小程序使用的是用户微信绑定的手机号进行注册与登录,注册或登录时需要用户对小程序使用手机号进行授权。用户确认授权后系统可以拿到微信返回的临时code,再用这个code 到微信服务器换取用户的真实手机号。关键代码如下:

3.2.2 健康档案

健康档案模块包含体检报告查看、报告对比、趋势分析、健康风险预警等功能。

报告查看:用户通过点击报告列表中对应的体检报告即可查看该报告的详细信息,包含总检结论、项目明细等。在展示总检结论时,需要对总检结论与知识库、疾病库进行比对,如结论中包含有疾病库中定义的疾病或指标库中定义的指标时,就会在总检数据后面生成对应的名词解释。在查看项目明细时,会将报告中的异常指标使用醒目的方式标示出来,如尿酸值高于正常范围,将会使用红色显示结果并配上偏高的符号。

本刊严格执行稿件三审责任制,来稿发表刊登的栏目类别由终审时根据杂志对文章的要求决定,以发表时为准。凡正在本刊审阅的稿件,作者如欲投他刊,请务必事先与本刊联系并撤稿,切勿一稿两投。

报告对比:如图3所示,用户可以选中2 份或多份体检报告进行对比,直观地了解自己在多次体检中身体指标发生的变化。实现报告对比的难点在于体检报告是多层嵌套的JSON 数据,并且每份体检报告中所包含的体检项目数量和顺序不同。在具体实现时,本文采用的方法是:

图3:报告对比

(1)先计算出要对比的所有体检报告中包含的项目合集;

(2)并按照系统中预定义的顺序排好序;

(3)根据合并后的结构填充相应报告的数据;

(4)得到完整的对比报告。数据处理流程如图4所示。

图4:报告对比流程图

趋势分析:通过将用户本人所有体检报告中给定指标项提取出来,绘制成折线图,横轴为日期,纵轴为检测结果,直观地反映该指标的历史变化情况。如选择空腹血糖指标,则用户可以看到自己历年以来的血糖结果的走势图。

健康风险预警:通过分析关键健康指标是否处于异常状态,提醒用户注意关注自身健康情况,如发现血糖指标过高,提醒用户复查是否患有糖尿病并注意健康饮食。

3.2.3 疾病库

疾病库的目的是建立常见疾病的知识库,当用户体检报告中出现相关的专业名词时可以直接看到相关的科普知识。如某用户在体检报告中发现有肾囊肿,对于没有医学背景的人来说,不知道肾囊肿的相关知识,知识库正好可以弥补这点,疾病库包含对疾病的介绍、容易引发的风险与并发症、临床表现及医生建议等相关信息。

3.2.4 指标库

指标库与疾病库功能类似,疾病库主要收录的是各疾病的相关知识,而指标库收录的则是检查指标的相关知识,如对甘油三酯的介绍,甘油三酯的临床意义等。

3.2.5 最新资讯

最新资讯版块是本系统的信息发布平台,管理员在系统后台录入并发布相关资讯后,用户可以在小程序上查看相关文章,如健康指导、急救方法等。系统会根据用户的点击数生成人气榜,根据用户输入的搜索词和搜索次数生成热点词。

3.2.6 注意事项

查看参加体检前的注意事项,如哪些项目需要空腹,衣服的着装要求等。

3.2.7 意见反馈

意见反馈的作用是帮助平台正向发展,提高平台整体服务水平,方便用户使用。用户在使用过程中有什么意见和建议都可通过意见反馈功能进行留言,系统运维人员看到后会对用户提出的意见和建议给予答复。

3.3 系统后台

系统后台偏向于管理功能,使用对象为系统管理员,主要功能为健康分析、报告查询、疾病库和知识库的管理、趋势项管理、资讯管理等功能。

3.3.1 健康分析

在获得用户授权使用体检数据用于分析的情况下,系统根据不同指标不同维度对人群的健康状况进行分析。如可以通过不同年龄段、不同性别、所从事的职业等分别分析患高血压或患糖尿病的情况,并能将患不同疾病进行关联分析,判断二者之间是否存在联系。

3.3.2 报告查询

可以通过不同的筛选条件查询体检报告,如姓名、身份证号、性别、体检年度等。在查看体检报告时,会将报告中的异常指标项目用醒目的方式标示出来。

3.3.3 疾病库和知识库管理

疾病库和知识库是一个不断修改、完善的过程,随着时间的推移,疾病库和指标库可能不能满足当前的需求,因此疾病库和指标库必须要有维护的功能。

3.3.4 趋势项管理

每份体检报告中都含有上百个指标,将每个指标都做趋势项分析不太现实,趋势项管理的作用就是配置用户能够查看哪些趋势项,把要做趋势分析的项目与体检项目关联,关联后用户在查看趋势分析时才能获取到正确的数据。目前配置了对体重指数、血压、空腹血糖、甘油三脂、胆固醇、高密度总胆固醇、低密度总胆固醇等重要生理指标的趋势分析。

3.3.5 资讯管理

资讯管理分为类别管理、文章管理以及用户协议管理。

类别管理:资讯的分类管理,所有资讯都将归类到相应的类别下面,用户在查看时可以通过类别来筛选对应的文章。

文章管理:系统发布的具体文章,发布人登录管理后台,录入、编辑文章内容后,就可将文章发布出去,文章发布后所有小程序用户都将能看到文章内容。

用户协议管理:小程序的用户协议可以通过该功能维护。

3.3.6 用户管理

管理系统中的用户,维护用户信息、重置账号密码、处理用户提交的意见和建议等。

4 结束语

本文介绍了基于微信小程序实现的体检档案电子管理系统,并介绍了系统中的主要功能模块,以及在开发过程中的一些关键技术点和难点。个人用户可以通过本文实现的系统查看和对比本人的体检报告、查看相关疾病和体检指标的科普信息,本系统还可以给医疗等相关从业人员提供不同维度的健康数据分析服务。

猜你喜欢
格式化体检中心程序
精细化健康体检管理模式在体检中心的应用探析
现代人守则:昏死之前请把手机格式化
医院体检中心护理风险管理的应用效果分析
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
格式化
创卫暗访程序有待改进
直接格式化对硬盘的寿命有影响吗