一种以甲状腺超声图像自动诊断为特色的医疗社交APP的制作方法

文档序号:14038512阅读:1180来源:国知局
一种以甲状腺超声图像自动诊断为特色的医疗社交APP的制作方法

本发明涉及一种以甲状腺超声图像自动诊断为特色的医疗社交app,属于信息技术领域。



背景技术:

甲状腺是位于人体颈部前下方的一个产生激素的腺体,它影响心率、胆固醇水平、体重、体能水平、精神状态,并且控制其他一系列的身体功能。近些年来,各个国家甲状腺癌的发病率逐渐增高,全球发病率正以每年6.2%的幅度增加;在国内,甲状腺的发病率更是呈现明显地上升趋势。相对于其它辅助检查手段,由于超声检查具有高效性、无放射性、无创性、可重复性、价格相对低廉、易被患者接受、易于推广应用等诸多优势,目前,美国甲状腺协会和欧洲甲状腺协会已推荐超声作为甲状腺结节术前诊断的首选方法。我国协和医院的超声报告抽样结果显示:近10年术前超声诊断的比例始终保持在83%以上,超声提示诊断的比例由47%提升至92%,提示诊断正确的比例由78%上升至88%,超声诊断正确的比例由37%上升至81%。然而,如何从大量的包含甲状腺结节的超声图像中鉴别出恶性结节,仍然是临床诊断中一个非常具有挑战性的课题。

在实际临床诊断中,医生主要通过对超声图像的读图判断,在超声图像中标记出疑似病变区域并给出病情结论。这个过程主要依赖医生自身的医学知识和临床经验,来定性地完成,因而,缺乏规范、定量的甲状腺超声表现描述,而且,不同水平和经验的医生对同一图像可能做出不一致的判断,使诊断结果的主观性较强。此外,因固有的超声成像机制,临床采集到的超声甲状腺肿瘤图像质量一般较差,使得良、恶性结节特征界限更是难以主观把握。

特别地,我国高水平医疗人才极度短缺,每万人拥有的医生数量不及医疗发达国家平均水平的50%,三甲医院临床医生平均日接诊量超过30人次,远大于行业内8人次的标准。而且,我国高水平医院和高水平医生过度集中在大城市的大医院,集中在发达地区。中西部地区以及全国范围的基层医院严重缺乏优质医疗资源,不足全国医院数量3%的三甲医院就诊量超过总量的30%,20%的城市医疗资源负担了全国80%的医疗服务问题。所以,目前我国医疗卫生事业发展面临高水平医疗人才短缺、优质医疗资源分布失衡、恶性医患纠纷持续高发三大突出问题,这也是导致“看病难、看病贵”问题连续多年成为城乡居民公认的突出社会问题之一的主要原因。

目前,国内医疗健康类app已超过2000款,大多数都是线上问诊、预约挂号类型,市场下载量较多的几款同类产品和市场相关健康医疗产品有春雨医生、好大夫在线、丁香医生、病历夹、医生树和39健康等,这些应用大多为全科式,用户定位以患者为主。目前市场尚无面向医生,并利用计算机技术对医学超声图像进行自动识别诊断的app。

基于以上分析,可以看出目前甲状腺超声图像诊断主要存在三个问题:①超声图像诊断对医生的能力要求较高;②在我国,医疗资源分配严重失衡;③目前市场上没有用户定位为医生的,利用计算机技术对甲状腺超声图像进行自动识别诊断的app。针对这三个问题,本发明提出了一个利用计算机技术进行甲状腺超声图像自动诊断的医疗社交app,其特色功能是超声图像自动诊断(也称为辅助诊断),目标用户为医生或者医学院的学生,可以有效地解决甲状腺超声图像诊断存在的三个主要问题。



技术实现要素:

本发明解决的技术问题是:通过app辅助诊断功能,利用计算机技术对甲状腺超声图像进行自动地识别诊断,从而有效地降低超声图像对医生能力、时间的要求,进而提高医生的专业水平、提高医生的工作效率,提高甲状腺超声图像诊断的准确率。

本发明采用的技术方案为:一种以甲状腺超声图像自动诊断为特色的医疗社交app,包括以下五个模块:

共用模块:主要包含的功能有请求服务端数据、文件系统管理、本地图片上传、图片异步加载、网络数据缓存、用户注册登陆等。请求服务端数据由客户端按照服务端提供的接口,通过请求响应的url并提供请求参数来获取数据;文件系统管理通过获取客户端的文件读写权限,对文件等进行压缩、建立、删除等,从而实现文件系统的维护;本地图片上传通过扫描本地文件,待用户选择图片后,向服务端发送数据等待返回结果,从而判断是否重传及更新本地缓存;图片异步加载可实现用户先访问文字信息,待图片加载完毕后再更新视图,通过开启异步线程进行图片获取及handler处理及时更新视图来实现;网络数据缓存功能可对用户经常访问的数据进行缓存处理,从而加快访问速度,通过建立映射关系实现请求url与访问数据的关系对应;用户注册登陆借助于前面的请求服务端数据功能实现用户身份的认证或新用户的建立。

辅助诊断模块:可实现病例的智能诊断,发现病灶。用户选择一张或多张甲状腺超声图像图片,并对个人信息进行相关描述,借助于共用模块的服务端请求功能,将数据发送向服务端,在经处理后获取服务端信息,并针对返回结果判断是否请求成功,从而决定刷新用户视图或再次请求数据。成功获取数据后构建新的activity,将获取的信息填充到activity中的list,按照病例的分类信息提供用户访问更多相关病例的功能。

会话模块:提供即时聊天和好友管理功能,用户在通讯录功能对好友进行添加、删除、查找等,并可查看系统推荐的好友。即时聊天功能通过接入第三方模块teamtalk进行实现;为及时相应好友添加请求,系统采用轮询机制,持续访问服务端好友请求接口,查看是否有新的好友添加请求,在获取请求后通过系统广播及时更新底部视图,从而提醒用户查看会话模块;好友删除及查找都借助于共用模块的服务端请求功能,将数据发送向服务端,在经处理后获取服务端信息,并针对返回结果判断是否请求成功,从而决定刷新用户视图或再次请求数据。好友删除后及时更新本地缓存,避免出现本地数据与服务端数据不一致的情况,提高系统健壮性。

病例库模块:一个甲状腺超声医学数据库,按照类别(超声特征、病理结果和风险分层)整理了相应的病例,病例库模块的病例来自用户发布在医圈模块的医圈;此模块可实现对病例的分类查看、按照病例内容进行检索、查看热门的病例分类、获取更多病例贡献者或查看最高贡献者。病例的分类数据由于其变化频率极低,因此对其进行数据缓存,客户端在获取数据时直接在本地进行获取,从而提高访问速度。查看某一分类下病例列表或贡献者时,通过向服务端发送此分类的指定id来获取相应数据去填充list视图。

医圈模块:医生专属的医疗社交圈,用户可以查看好友发布的状态,由此进入病例详情页或者发布自己的状态;其中发布医圈可以新建,也可以将辅助诊断模块产生的诊断结果直接发布到医圈,发布的医圈将会保存在病例库模块中;对别人发表的医圈内容可进行评论、点赞、收藏和转发等操作。发表医圈时,用户通过编辑图片(进行涂鸦或剪切),将最终图片和文字信息一同发向服务端,在经处理后获取服务端信息,并针对返回结果判断是否请求成功,从而决定刷新用户视图或再次发送数据。成功发表的医圈内容为实现及时更新医圈列表内容,通过startactivityforresult的形式来及时获取返回结果并刷新视图。查看指定医圈详情内容时,通过向服务器发送此医圈内容的id来获取内容。

我的模块:我的模块提供包括实名认证、个人信息编辑、兴趣点设置、我的病历夹、我的诊断录、我的收藏夹、我的学习册、邀请好友和修改密码的操作,其中我的病例夹保存着用户发表的病例我的诊断录保存着用户的诊断记录,来自辅助诊断模块;我的收藏夹包含用户收藏的病例;我的学习册链接到外部学习网站。用户信息的修改尽管要修改的信息种类非常多,但涉及的修改方法是大同小异的,因此采用键值对的方式提供统一接口向服务器传输数据,增强了程序的封装性。

所述的共用模块实现过程如下:

(1)请求服务端数据:客户端按照服务端提供的接口,将请求数据以键值对的形式存储在map中,借助于第三方包jsoup发起请求,设置默认请求方式为post,超时时长为10s。客户端与服务端之间的数据通信以json的形式进行传输,服务端在返回数据时,将数据结果(data)与错误代码(code)、错误信息(message)进行包装,客户端根据错误代码进行相应的处理(抛出错误信息或解析数据结果)。

(2)文件系统管理:文件系统管理模块的主要功能包括目录的创建与删除,按照修改时间对文件进行排序、将bitmap保存为本地图片、删除目录下过旧的历史文件。

关于目录的创建与删除。程序启动时会初始化文件目录,如果已存在相应目录,则直接返回;否则建立相应目录。在程序运行过程中,提交诊断和发表“医圈”时也会涉及到目录建立,将中途产生的图片文件存放到对应目录下,如果取消发送,则会在取消发送时删除刚刚建立的目录。目录删除采用递归删除的方式:如果所给路径为文件路径,则直接删除,否则,获取目录下文件列表,对每个文件或目录进行递归删除,最后删除目录。

关于按照修改时间对文件进行排序。在选择图片进行上传过程中,需要对图片按照修改时间的顺序进行排序,在排序过程中,将图片路径的数组列表传入后,使用java自带的排序方法,按照由路径构造的文件的修改时间作为比较依据,进行排序。

关于将bitmap保存为本地图片。获取bitmap与目标保存路径,若目标路径已有相关文件则进行删除,否则,截取目标路径后缀名,按照后缀名去构造png或jpg文件,默认情况下构造jpg。

关于删除目录下过旧的历史文件。系统使用过程会产生许多图片,因此需要对一些过旧的文件进行删除来清理缓存。对给定目录下文件或文件夹的修改时间与临界时间进行比较,删除过旧文件或递归删除过旧文件夹。

(3)本地图片上传:本地图片上传的主要流程如下:首先判断是否获得读取媒体数据的权限,在没有获得的情况下请求此权限,请求失败则直接返回;拥有相应权限后,扫描本地图片,android将本地媒体文件以数据表的形式存储,通过直接请求uri:“mediastore.images.media.external_content_uri”去访问媒体文件,并将媒体文件格式限制为image/jpeg和image/png,从而扫描到本地图片并进行显示等待用户选择;用户选择图片后,对图片按照不同用途进行压缩并保存到本地;最后将本地图片和上传用户id发送给服务端。服务端根据图片上传结果返回数据,上传成功时,返回已上传图片在服务端的相对地址,客户端解析出地址后进行下一步操作。

(4)图片异步加载:在加载信息列表或信息详情时,因为数据中不仅含有文字信息,还包含图片,为提高用户的访问速度并提供更好的用户体验,决定对图片采用异步加载的方式:先呈现出其他文字信息,将待加载图片以默认图片的形式进行展示,开启异步线程访问服务端请求图片,在成功获取图片后进行替换。

因为信息列表的展示形式以android内自带的“listview”作为基础控件,listview在填充数据时会对新出现在屏幕内的列表项进行重新获取数据,因此,为了减少不必要的网络访问,还需要对请求获得的图片进行缓存处理。图片异步加载的流程如下:首先,尝试获取指定url下的图片资源,若缓存中已存在,则直接返回图片资源,否则返回空;当返回不为空时,使用此图片填充视图,否则,使用默认图片进行填充并且开启新的线程访问网络获取图片,在图片获取成功后去替换视图中的图片并将此图片资源添加到缓存,使用图片的url作为其唯一标识符。

(5)网络数据缓存:缓存过程中,使用android自带的sharedpreference来建立请求图片的url与图片在客户端本地相对地址之间的映射关系。程序请求图片时,通过url查找映射关系是否存在,若已有相应的本地缓存地址,则直接返回此地址,作为图片路径;否则,客户端向服务端发起请求,在成功获取图片后将图片在本地进行保存,更新映射关系并返回图片地址。

(6)用户注册登陆:注册模块具体流程如下:用户进入注册界面,首先需要填写手机号码,点击获取验证码,在填写验证码、用户密码及确认密码后需要勾选“同意《蝶医用户协议》”,若在填写过程中,信息输入不完整、验证码不正确或失效、密码及确认密码不相同、密码格式不符合要求(密码格式为:至少包含字母和数字两种字符,且长度在6到20之间)或未同意协议,都将提示用户要进行修改。当信息格式符合要求后,将输入信息传输给后台服务端,服务端进行相应处理并返回注册结果;若注册成功,客户端跳转到登录界面;否则,提醒用户按照错误提示(注册手机已存在等)进行修改。

登录模块具体流程如下:用户在进入登录界面后,系统根据是否有缓存密码或是否为主动退出来判断能否进行自动登录,若为自动登录,则从缓存数据中提取用户名和密码信息,连接后台进行验证,验证成功后返回此用户的用户信息,客户端对信息进行本地缓存并跳转到主界面;当自动登录验证失败或为手动登录时,等待用户输入用户名和密码后进行数据格式的查验,符合要求后连接后台进行验证。

所述的诊断模块实现过程如下:

(1)首先用户选择图片并标注各类必要信息,将数据上传到服务端;

(2)客户端开启异步线程周期性询问服务端是否已成功诊断;

(3)在成功诊断并获取数据后,关闭异步线程,更新ui线程,提示用户查看诊断结果;

(4)在诊断结果查看页面,用户可以看到智能诊断所分析出的超声提示结果(良性预测概率)。此外,还可以选择发布功能,将自己的诊断病例发送到“医圈”模块,以和其他人进行交流。在页面底部,可以按照自己标注的病例分类查看同一分类下的相似病例。

所述的会话模块实现过程如下:

(1)其他模块中会涉及到好友的添加,为及时响应好友添加请求,系统内采用以下机制进行查询:开启好友请求查询服务,持续访问服务端好友查询接口,判断是否有新的好友请求,当查询到当前用户有新的好友请求时,开启系统广播,在android下滑栏中添加好友消息,用户点击后进入好友审核页面。

(2)用户可以通过搜索账号、昵称的方式查询好友,在朋友详情页面会显示此用户的昵称、职称、部门、兴趣点及最近发表的“医圈”病例的缩略图,通过点击缩略图可进入相应的“医圈”详情页面。点击添加好友按钮,会向用户发出好友添加请求,等待用户审核。

(3)好友搜索页面的底部有用户推荐列表,里面包含了发表“医圈”内容较多的用户,可在列表中查看其最近发表的“医圈”内容的缩略图,点击后可进入朋友详情页面。

(4)在会话模块的通讯录中,点击已在通讯录内的好友(即已审核通过的好友),可查看其内容详情,并可进行删除好友。好友删除后,发出系统广播,及时更新通讯录列表。

(5)借助于第三方模块teamtalk实现即时聊天功能。

所述的病例库模块实现过程如下:

(1)病例分类模块由四部分构成,分别是超声特征分类、病理结果分类、风险分层分类、热门分类。模块构造流程如下:系统检测本地是否有超声特征分类和病理结果分类信息,若不存在则向后台发起请求,获取数据后在本地缓存。向服务器请求获取热门分类数据,获取的四个热门分类按照其热门指数由高到低,依次放置在四个圆中。由于获取的热门分类的名称长短不一,为实现良好的展示效果,此处对所放置的圆形控件做了自适应处理,对文字长度进行开平方,获取控件长宽基准,在文字中插入换行符,从而实现文字完整展示并保证背景圆形不被拉伸。

(2)点击某一分类选项后进入病例分类列表页,展示此分类下的所有病例、更多贡献者和最高贡献者。列表展示方式与数据获取方式和“医圈”模块类似。在更多贡献者页面,列表展示其他用户所发表的“医圈”内容的相关图片,最多呈现此用户近期的四张图片,由于图片数量不固定(可能少于四张),因此在布局文件中将图片的预设高度设为0,在有图片填充时动态设置其高度,从而实现良好的布局。

所述的医圈模块实现过程如下:

(1)“医圈”信息列表是基于第三方模块的控件pulltorefreshlistview来进行展示的,不同于android原生的listview,pulltorefreshlistview支持通过拖拽的方式来获取更多数据或刷新数据,给用户更好的体验,并且开发过程中与listview类似,同样采用适配器(adapter)的方式进行数据填充。“医圈”列表信息的获取功能除了包含获取初始化数据,还需要有获取更多数据和刷新数据的功能,因此需要historypageno、newpageno两个变量来对列表信息拉取页码进行记录。在获取初始化数据时,将historypageno设为1,启动下拉刷新线程来获取数据并进行填充,对historypageno执行加一操作,记录下一个获取的页码。在上拉获取历史数据时,拉取页码historypageno的数据,添加到适配器数据中并刷新适配器视图,对historypageno执行加一操作,记录下一个获取的页码。在下拉获取最新数据时,使用newpageno记录当前拉取页码,使用historypageno作为最大拉取页码,进行循环拉取,获取数据更新适配器。

(2)为及时更新已发布的“医圈”信息,系统内有“医圈”查询服务,持续访问服务端“医圈”更新接口,当有新的内容发表时,系统服务启动系统广播,在“医圈”图标上进行标注,提醒用户查看新的“医圈”病例。

(3)点击“医圈”列表项后进入“医圈”详情页面,可查看此条病例的详细信息,并进行评论、点赞等操作。评论区使用pulltorefreshlistview控件进行展示,为了实现良好的用户体验和界面布局,将包含viewpager在内的展示病例信息的控件集合(viewgroup)作为列表的头部添加到pulltorefreshlistview中。点赞或评论按照服务端的接口提供相应的数据,收到操作结果后在前端通过toast控件给予用户反馈。

所述的我的模块实现过程如下:

(1)用户在成功登录后已对基本信息进行了缓存,因此不必再请求服务端获取基本信息数据,但由于保存的头像信息为服务端相对地址,因此需要调用图像异步加载模块来获取头像图片。根据用户信息中存储兴趣点id的字符串,结合超声特征和病理结果种类信息,将其解析为相应兴趣点名称。因为此处涉及到要获取超声特征和病理结果数据,在病例模块也涉及到获取此数据,并且两个模块同属于一个activity下的不同fragment,有同时触发的可能性,为避免重复获取两次数据,对超声特征和病理结果数据获取方法进行了synchronized关键字限制:一次只允许一个线程访问该方法。当第二个线程再次访问时,会判断是否已成功获取数据,得知已取得数据后会直接返回。

(2)“我的病例夹”包含了用户发表过的所有“医圈”病例,包括用户设置为仅自己可见的病例;“我的收藏夹”包含了用户收藏的所有“医圈”病例;“我的诊断录”包含了用户发起诊断的病例。以上三个模块的展示形式都类似于“医圈列表”,故不再赘述。“我的病例夹”与“我的收藏夹”列表在点击列表项后跳转到相应“医圈”id下的“医圈”详情页面;“我的诊断录”列表在点击某一项后跳转到类似于“诊断病例”页面。我的学习册以webview的形式链接到外部网站,保持了系统的统一性。

(3)基本信息的修改包括修改个人兴趣点、头像、密码、绑定手机、绑定邮箱。除了修改个人兴趣点之外,其他几个修改功能都属于对用户基本信息的“一处”修改。针对只修改一处的功能,为避免创建多个重复的接口,决定采用一个以键值对为参数的方法作为公用方法,此处的“键”为要修改的信息的变量名,“值”为要修改的目标值,通过将“键”、“值”和用户id传输给服务端,服务端进行相应修改,完成后返回操作结果,若操作成功,则使用更新本地缓存的用户信息,提示修改成功;否则提示用户操作失败。头像的修改略有不同,首先需要调用图片上传模块将头像上传,上传成功后获得图片在服务端的地址,再将此地址作为“值”调用修改方法。密码的修改则需要用户先输入原始密码进行验证,验证成功后才可以进行修改。

(4)消息推送通过android系统的广播机制进行实现,在获取新的系统推送后进行广播,系统接收到广播后在下滑栏中添加消息。用户关闭消息推送功能时,将广播接收响应进行关闭,从而实现对消息推送的控制。

(5)在发布“医圈”内容和“诊断”内容时,会保存许多中间过程图片(压缩后的图片或编辑后的图片)在客户端本地,为了方便用户管理存储空间,系统设置了本地缓存清理功能,通过调用文件系统管理模块的删除历史文件功能来完成对缓存的清理工作。

(6)除此之外,“我的”模块还有相关的版本介绍、隐私声明、关于系统等信息,信息的内容存储在本地html文件中,通过webview进行展示,避免了使用原生textview在布局文件中进行复杂布局,使代码高效且简洁。

(7)用户在退出登录时,需要关闭当前页面并清空本地缓存密码。系统采用了eventbus作为事件总线,因为退出按钮不在mainactivity(包含上述五个模块fragment的活动)中,无法直接关闭mainactivity,通过在mainactivity订阅退出事件,在点击退出按钮后发布退出事件,触发mainactivity中相应代码,执行删除缓存密码、跳转到登录界面、结束自身,从而实现退出系统。

本发明的原理在于:本发明涉及到的原理主要是开发app,其中会用到app开发所需要的技术,其中辅助诊断功能借助北京航空航天大学虚拟现实国家重点实验室研究的甲状腺超声图像识别和诊断算法,会话功能则基于开源项目teamtalk进行改进开发。

本发明与现有技术相比的优点在于:

(1)本发明提出的辅助诊断功能,能够利用计算机技术进行超声图像的自动诊断,能够提高医生的工作效率,提高确诊率。

(2)本发明提出的医圈功能,能够促进医生对经典病例,疑难病例的交流,进而提高医生诊断水平。

(3)本发明提出的病例功能和学习册功能,能够让医生在任何时间对自身掌握不够熟悉的病例或者相关知识,进行有针对性的学习,进而提高医生的能力。

(4)一些医疗资源欠发达的地区,由于医生技术水平相对有限,也能够通过辅助诊断功能,一定程度上缓解医疗资源失衡的问题。通过医圈功能,能够进一步促进医生之间相互交流,进而提升医生的治疗水平;利用病例,学习册,辅助诊断等功能,能够对经典病例,疑难病例进行学习,也能够提升医生的自身能力。

附图说明

图1为本发明的功能结构图;

图2为共用模块图片上传实现流程图;

图3为共用模块图片异步加载实现流程图;

图4为共用模块网络数据缓存实现流程图;

图5为辅助诊断模块实现流程图;

图6为医圈模块的实现流程图;

图7为病例库模块的实现流程图;

图8为会话模块的实现流程图;

图9为我的模块的实现流程图。

具体实施方式

图1给出了本发明的功能结构图,包含了辅助诊断、医圈、病例、会话和我的五个模块,下面结合其他附图及具体实施方式进一步说明本发明。

本发明是一个以甲状腺超声图像自动诊断为特色的医疗社交app,包括了六个模块:

1、共用模块

共用模块为后面五个模块提供基本的底层功能,如请求服务端数据、文件系统管理、图片的上传与异步加载等。

如图2所示,本发明共用模块图片上传实现如下:

首先判断是否获得读取媒体数据的权限,在没有获得的情况下请求此权限,请求失败则直接返回;拥有相应权限后,扫描本地图片,android将本地媒体文件以数据表的形式存储,通过直接请求uri:“mediastore.images.media.external_content_uri”去访问媒体文件,并将媒体文件格式限制为image/jpeg和image/png,从而扫描到本地图片并进行显示等待用户选择;用户选择图片后,对图片按照不同用途进行压缩并保存到本地;最后将本地图片和上传用户id发送给服务端。服务端根据图片上传结果返回数据,上传成功时,返回已上传图片在服务端的相对地址,客户端解析出地址后进行下一步操作。

如图3所示,本发明共用模块图片异步加载实现如下:

先呈现出其他文字信息,将待加载图片以默认图片的形式进行展示,开启异步线程访问服务端请求图片,在成功获取图片后进行替换。因为信息列表的展示形式以android内自带的“listview”作为基础控件,listview在填充数据时会对新出现在屏幕内的列表项进行重新获取数据,因此,为了减少不必要的网络访问,还需要对请求获得的图片进行缓存处理。图片异步加载的流程如下:首先,尝试获取指定url下的图片资源,若缓存中已存在,则直接返回图片资源,否则返回空;当返回不为空时,使用此图片填充视图,否则,使用默认图片进行填充并且开启新的线程访问网络获取图片,在图片获取成功后去替换视图中的图片并将此图片资源添加到缓存,使用图片的url作为其唯一标识符。

如图4所示,本发明共用模块网络数据缓存实现如下:

缓存过程中,使用android自带的sharedpreference来建立请求图片的url与图片在客户端本地相对地址之间的映射关系。程序请求图片时,通过url查找映射关系是否存在,若已有相应的本地缓存地址,则直接返回此地址,作为图片路径;否则,客户端向服务端发起请求,在成功获取图片后将图片在本地进行保存,更新映射关系并返回图片地址。

2、辅助诊断模块

辅助诊断是本发明最具特色的核心模块,用户可以使用辅助诊断功能进行甲状腺超声图像的自动诊断。

如图5所示,本发明辅助诊断模块实现如下:

(1)首先用户选择图片并标注各类必要信息,将数据上传到服务端;

(2)客户端开启异步线程周期性询问服务端是否已成功诊断;

(3)在成功诊断并获取数据后,关闭异步线程,更新ui线程,提示用户查看诊断结果;

(4)在诊断结果查看页面,用户可以看到智能诊断所分析出的超声提示结果(良性预测概率)。此外,还可以选择发布功能,将自己的诊断病例发送到“医圈”模块,以和其他人进行交流。在页面底部,可以按照自己标注的病例分类查看同一分类下的相似病例。

3、医圈模块

医圈模块是本应用的重要组成部分,使用甲状腺超声辅助诊断app的医生与医学院学生,通过医圈模块发布、浏览自己或别人的辅助诊断结果、疑难病例与治疗方案征文、医疗专业知识等,还可与医圈状态的发布者进行互动,满足用户答疑解惑、交流学习的需求。

如图6所示,本发明医圈模块实现如下:

(1)“医圈”信息列表是基于第三方模块的控件pulltorefreshlistview来进行展示的,不同于android原生的listview,pulltorefreshlistview支持通过拖拽的方式来获取更多数据或刷新数据,给用户更好的体验,并且开发过程中与listview类似,同样采用适配器(adapter)的方式进行数据填充。“医圈”列表信息的获取功能除了包含获取初始化数据,还需要有获取更多数据和刷新数据的功能,因此需要historypageno、newpageno两个变量来对列表信息拉取页码进行记录。在获取初始化数据时,将historypageno设为1,启动下拉刷新线程来获取数据并进行填充,对historypageno执行加一操作,记录下一个获取的页码。在上拉获取历史数据时,拉取页码historypageno的数据,添加到适配器数据中并刷新适配器视图,对historypageno执行加一操作,记录下一个获取的页码。在下拉获取最新数据时,使用newpageno记录当前拉取页码,使用historypageno作为最大拉取页码,进行循环拉取,获取数据更新适配器。

(2)为及时更新已发布的“医圈”信息,系统内有“医圈”查询服务,持续访问服务端“医圈”更新接口,当有新的内容发表时,系统服务启动系统广播,在“医圈”图标上进行标注,提醒用户查看新的“医圈”病例。

(3)点击“医圈”列表项后进入“医圈”详情页面,可查看此条病例的详细信息,并进行评论、点赞等操作。评论区使用pulltorefreshlistview控件进行展示,为了实现良好的用户体验和界面布局,将包含viewpager在内的展示病例信息的控件集合(viewgroup)作为列表的头部添加到pulltorefreshlistview中。点赞或评论按照服务端的接口提供相应的数据,收到操作结果后在前端通过toast控件给予用户反馈。

4、病例库模块

病例库模块是应用的学习资源库,其中基础数据库是由北京协和医院甲状腺超声科室提供的真实经典病例。产品上线之后,协和课题组成员会定期整理上传最新的经典病例,同时也会陆续纳入审查合格的医圈优秀病例,以此不断充实、更新系统病例数据库。经过调研得知,不论是经验丰富的专业医生还是医学院学生,均采用学习实际病例的方法,加快提升自身专业水平,因此资源丰富且内容真实的病例库将会是本应用吸引新用户的特色功能之一。从长远的角度看,此数据库将具有极高的医学研究价值,为日后甲状腺超声病理研究做出一定贡献。

如图7所示,本发明病例库模块实现如下:

(1)病例分类模块由四部分构成,分别是超声特征分类、病理结果分类、风险分层分类、热门分类。模块构造流程如下:系统检测本地是否有超声特征分类和病理结果分类信息,若不存在则向后台发起请求,获取数据后在本地缓存。向服务器请求获取热门分类数据,获取的四个热门分类按照其热门指数由高到低,依次放置在四个圆中。由于获取的热门分类的名称长短不一,为实现良好的展示效果,此处对所放置的圆形控件做了自适应处理,对文字长度进行开平方,获取控件长宽基准,在文字中插入换行符,从而实现文字完整展示并保证背景圆形不被拉伸。

(2)点击某一分类选项后进入病例分类列表页,展示此分类下的所有病例、更多贡献者和最高贡献者。列表展示方式与数据获取方式和“医圈”模块类似。在更多贡献者页面,列表展示其他用户所发表的“医圈”内容的相关图片,最多呈现此用户近期的四张图片,由于图片数量不固定(可能少于四张),因此在布局文件中将图片的预设高度设为0,在有图片填充时动态设置其高度,从而实现良好的布局。

5、会话模块

会话模块属于辅助型次要模块,其功能与同类产品的即时通讯功能相近。考虑到医生工作忙碌,诊断或学习时遇到疑问需要与专业相似的同事一起讨论,根据访谈调研得知,传统面谈效率太低,远程通讯相较而言更方便。而现有的即时通讯应用例如微信、qq等,用户好友成员成分复杂,不是纯粹的医疗专业圈,不仅流程繁琐,而且不方便处理隐私信息。为满足医生们及时会诊和答疑的需求,应用设计中加入会话模块。

如图8所示,本发明会话模块实现如下:

(1)其他模块中会涉及到好友的添加,为及时响应好友添加请求,系统内采用以下机制进行查询:开启好友请求查询服务,持续访问服务端好友查询接口,判断是否有新的好友请求,当查询到当前用户有新的好友请求时,开启系统广播,在android下滑栏中添加好友消息,用户点击后进入好友审核页面。

(2)用户可以通过搜索账号、昵称的方式查询好友,在朋友详情页面会显示此用户的昵称、职称、部门、兴趣点及最近发表的“医圈”病例的缩略图,通过点击缩略图可进入相应的“医圈”详情页面。点击添加好友按钮,会向用户发出好友添加请求,等待用户审核。

(3)好友搜索页面的底部有用户推荐列表,里面包含了发表“医圈”内容较多的用户,可在列表中查看其最近发表的“医圈”内容的缩略图,点击后可进入朋友详情页面。

(4)在会话模块的通讯录中,点击已在通讯录内的好友(即已审核通过的好友),可查看其内容详情,并可进行删除好友。好友删除后,发出系统广播,及时更新通讯录列表。

(5)借助于第三方模块teamtalk实现即时聊天功能。

6、我的模块

个人信息的管理,是每个应用必备的功能。本应用中“我的”模块,结合用户需求和应用特点,除了常规的查阅和修改基本的个人信息功能,还设计了医生身份认证、我的病例夹、我的诊断录、我的收藏夹、我的学习册、编辑兴趣点、邀请好友加入等功能。我的病例夹是用户发布的医圈记录,所有状态按照时间顺序排列,便于用户管理查阅;我的诊断录是用户发布的诊断结果记录,每次诊断卡片上均提供明确的诊断反馈,分为诊断中、诊断成功、诊断失败、诊断中止四个状态,在进行会诊、随访等工作时为用户带来便利;我的收藏夹是用户收藏的其他用户的优秀病例,有利于用户与医友互相学习与交流;我的学习册中置入通往教学web的跳转链接,该功能是将诊断系统与教学系统连接起来的重要渠道。

如图9所示,本发明我的模块实现如下:

(1)用户在成功登录后已对基本信息进行了缓存,因此不必再请求服务端获取基本信息数据,但由于保存的头像信息为服务端相对地址,因此需要调用图像异步加载模块来获取头像图片。根据用户信息中存储兴趣点id的字符串,结合超声特征和病理结果种类信息,将其解析为相应兴趣点名称。因为此处涉及到要获取超声特征和病理结果数据,在病例模块也涉及到获取此数据,并且两个模块同属于一个activity下的不同fragment,有同时触发的可能性,为避免重复获取两次数据,对超声特征和病理结果数据获取方法进行了synchronized关键字限制:一次只允许一个线程访问该方法。当第二个线程再次访问时,会判断是否已成功获取数据,得知已取得数据后会直接返回。

(2)“我的病例夹”包含了用户发表过的所有“医圈”病例,包括用户设置为仅自己可见的病例;“我的收藏夹”包含了用户收藏的所有“医圈”病例;“我的诊断录”包含了用户发起诊断的病例。以上三个模块的展示形式都类似于“医圈列表”。“我的病例夹”与“我的收藏夹”列表在点击列表项后跳转到相应“医圈”id下的“医圈”详情页面;“我的诊断录”列表在点击某一项后跳转到类似于“诊断病例”页面。我的学习册以webview的形式链接到外部网站,保持了系统的统一性。

(3)基本信息的修改包括修改个人兴趣点、头像、密码、绑定手机、绑定邮箱。除了修改个人兴趣点之外,其他几个修改功能都属于对用户基本信息的“一处”修改。针对只修改一处的功能,为避免创建多个重复的接口,决定采用一个以键值对为参数的方法作为公用方法,此处的“键”为要修改的信息的变量名,“值”为要修改的目标值,通过将“键”、“值”和用户id传输给服务端,服务端进行相应修改,完成后返回操作结果,若操作成功,则使用更新本地缓存的用户信息,提示修改成功;否则提示用户操作失败。头像的修改略有不同,首先需要调用图片上传模块将头像上传,上传成功后获得图片在服务端的地址,再将此地址作为“值”调用修改方法。密码的修改则需要用户先输入原始密码进行验证,验证成功后才可以进行修改。

(4)消息推送通过android系统的广播机制进行实现,在获取新的系统推送后进行广播,系统接收到广播后在下滑栏中添加消息。用户关闭消息推送功能时,将广播接收响应进行关闭,从而实现对消息推送的控制。

(5)在发布“医圈”内容和“诊断”内容时,会保存许多中间过程图片(压缩后的图片或编辑后的图片)在客户端本地,为了方便用户管理存储空间,系统设置了本地缓存清理功能,通过调用文件系统管理模块的删除历史文件功能来完成对缓存的清理工作。

(6)除此之外,“我的”模块还有相关的版本介绍、隐私声明、关于系统等信息,信息的内容存储在本地html文件中,通过webview进行展示,避免了使用原生textview在布局文件中进行复杂布局,使代码高效且简洁。

(7)用户在退出登录时,需要关闭当前页面并清空本地缓存密码。系统采用了eventbus作为事件总线,因为退出按钮不在mainactivity(包含上述五个模块fragment的活动)中,无法直接关闭mainactivity,通过在mainactivity订阅退出事件,在点击退出按钮后发布退出事件,触发mainactivity中相应代码,执行删除缓存密码、跳转到登录界面、结束自身,从而实现退出系统。

本发明未详细阐述的技术内容属于本领域技术人员的公知技术。

尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1