黄瑜:将GraphQL技术引入医疗行业,将会碰撞出何种火花?
近些年,各家医院均采用多种措施推进医疗数据的开发和利用,希望从数据服务的层面提升医院运营效能、改进医疗质量、提升患者服务。不过,由于医疗数据是在HIS、LIS、PACS、EMR等医院信息系统中产生的,这些异构系统越建越多,存在数据标准不统一的现象,这就导致了医院的数据共享能力差、数据利用成本高、数据使用效率低,甚至数据无法使用的问题。要解决这些问题,必须进行全面的数据治理。
刘慈欣在《三体》里描述人类地球的未来城市是树状的。在小说中,作者生动描绘了未来人类在树状城市里活动的高效率、快捷和方便,这让我们不禁思考,能不能将医疗异构系统中的数据看成“树状”,然后按看图说话的全视图方式进行方便快捷的访问查询呢?
IT领域确实就有这样的数据挖掘工具,而且正被FaceBook、淘宝、腾讯等拥有恐龙级用户群、每天生产海量数据的公司使用着。这就是GraphQL技术,只是目前在医疗领域还比较少见。它能帮助开发人员进行数据挖掘,节约大量的精力和成本,使得用户可以快速、敏捷地挖掘数据并进行赋能应用。
云南省红河州滇南中心医院信息中心软件开发组经过学习和探索,在微服务数据中台的基础上,创新地应用GraphQL技术进行医疗数据挖掘与治理。具体方式是以图状数据结构进行存储和查询,实现医疗数据的全联接集成,构建医疗数据全联接服务新模式。
本文旨在阐述通过结合医院医疗场景和信息化特征,探索如何应用GraphQL新技术在医疗数据开发中起到关键核心作用,从而高效率、低成本地推进医疗数据服务工作,希望总结一套可复制、可推广的经验,供医院信息部门、医疗信息化系统提供商及医院大数据部门参考。
1.数据接口开发问题
对于医院信息部门而言,提供信息系统数据接口服务是最常见的一项工作。有的医院必须由第三方提供此项服务,接口费非常昂贵,而这些接口提供的数据其实大同小异。对于有一定技术开发能力的医院而言,由信息科自主开发接口也是一件较为困难的事情。因为从技术角度来看,负责数据接口的开发人员往往处于被动一方,需要由接口调用方整理具体需要开发数据的接口文档,再根据需求文档进行定制化开发,往往难以复用。
实际上,这些接口存在很多共性数据。基于集成平台提供数据接口服务的医院,开始使用RESTful等微服务工具来构建统一的数据接口平台,一般是由开发方自行拟定医院业务常用的数据字段,不管对方是否需要,都进行统一提供。
这种方式的弊端是:业务需求增多后,应用通过接口返回的字段会越来越多;而具体到某个应用的前端页面或第三方调用者而言,可能需要的只是其中一小部分数据而已。这种臃肿的接口解决方案会增加额外的网络传输量,导致接口越来越慢,这也是很多医院信息系统“跑不快”的主要原因之一。
2.数据集成及利用问题
要实现医疗数据的利用,首先要解决数据集成的问题,医院需要对两方面数据进行集成:一是针对医疗服务对象(患者)进行诊疗信息收集,将分布在医院各异构系统中的诊疗数据进行统一集成,构建实时联通的临床数据中心,即CDR;二是围绕医疗质量和科研管理进行数据集成,构建对实时性要求不高的运营及科研数据中心,即ODR、RDR等。
其次要基于集成数据,快速、实时、智能、安全、清晰、定向地提供给数据服务对象,也即具体的应用程序或数据接口进行数据使用。目前医院的常规思维是建设集成平台进行数据集成后,完成患者360度视图和BI应用,分别配置给临床医生工作站和部分管理者使用。
在国家卫生健康委互联互通标准化成熟度测评、电子病历系统应用水平分级评价等工作的推动下,借助集成平台实现医疗数据的集成和开发服务已成趋势。但这也导致医院医疗数据开发工作普遍存在技术单一、效率不高、建设周期漫长、数据利用率不高、数据解耦度不足、完全依赖厂家等特点,而且还需要投入昂贵的建设费用。
为解决上述问题,可通过应用创新的GraphQL技术,构建医院全联接数据集成服务。
1.GraphQL的定义
GraphQL是Facebook开发的数据查询语言,2015年开源,旨在提供微服务RESTful体系的更强大的代替方案,从而能在大数据领域进一步推进微服务数据中台的技术应用,助力大数据的快速开发。
GraphQL是一种API查询语言,类似于数据库中的SQL,或集成平台提供的数据接口服务。相对而言,RESTful API依赖于后端隐式的、被动的数据约定,GraphQL则在获取数据和更新数据时更加主动,所见即所得。
2.GraphQL的特点
一是所见即所得。查询的返回结果就是输入的查询结构的精确映射。
二是减少网络请求次数。如果设计的数据结构是从属的,直接就能在查询语句中指定;即使数据结构是独立的,也可以在查询语句中指定上下文。只需要一次网络请求,就能获得资源和子资源的数据。
三是请求方在请求数据时不仅可以描述需要请求的数据,还可以对各个字段起别名,以适配预设的字段名称。
3.GraphQL的应用方法
GraphQL的自身特点决定了其适用于医院的业务场景和信息化场景。
一是将GraphQL技术应用到医院数据接口服务中,发挥其优势。
发送一条GraphQL查询,可以精准捕获第三方或前端期望得到的数据。GraphQL查询不仅访问一个资源的属性,还可以平滑地跟踪它们之前的引用。GraphQL API可以在一条单一请求中获取到应用所需的所有数据,而典型的RESTful需要从多个URL进行加载。使用GraphQL的应用,即便在速度较慢的网络下也依然能够很快获取数据。由于GraphQL API是基于类型和字段组织的,而非终结点,具有通过单一节点获取数据的完整能力,这就能解决医院因接口服务运行慢从而拖累HIS等业务系统的痛点问题。
二是将GraphQL技术和RESTful API融合。
通过使用传统RESTful API请求方式,将GraphQL查询语句当作请求参数传递,利用服务器端又是客户端的方式,避免了GraphQL客户端因依赖node.js造成部分第三方无法调用的问题;同时,前端不用重复输入大量不同的URL请求数据,通过单一公共URL路径请求即可,能让前端更专注于描述需要的数据。
针对扩展性,单个RESTful接口的返回数据越来越臃肿;针对某个前端展现,实际需要调用多个独立的RESTful API,才能获取足够数据。对于Web前端而言,由于Ajax技术的存在,这种请求数据的方式并不会造成太大的问题;但对于应用来说,由于渲染的方式不同,必须拉取全部数据之后才能绘制界面,这就导致这个界面必须要拿到所有RESTful接口返回的数据才能进行渲染绘制。
三是将数据结构抽象为图,构建全新的医疗数据中台。
在将HIS、LIS、PACS、EMR等异构系统实现数据全联接的同时,将整个数据结构抽象为图,可以将患者、科室、医生等任意节点作为起始节点,获取全关联数据,使得医疗数据具有连续性,大大丰富了数据维度和广度。此外,前端开发人员可以根据自己的需求,自行确定需要获取数据的维度和深度。
红河州滇南中心医院已基于GraphQL构建了医院数据中台。2020年,红河州滇南中心医院基于微服务架构,自主开发应用的多学科联合会诊MDT系统获得2020数字中国创新大赛智慧医疗赛道暨第四届智慧医疗创新大赛“最具发展潜力奖”、云南省智慧医疗创新大赛一等奖。该系统的构建基础之一,正是GraphQL技术。
在实践中,我们进行了以下探索与尝试。
首先,为了避免调用方不可用或修改调用方式成本较高等问题,我们对GraphQL和RESTful进行整合,通过RESTful的调用方法实现GraphQL所见即所得、由调用方选择所需数据的特性。
其次,我们通过GraphQL API和RESTful API融合构建数据中台,对医院数据进行全联接与统一管理,向个人、医院、政府机构等不同服务对象提供不同维度的全联接数据查询服务。在这种数据服务新模式中,实现了所见即所得,且尽可能地减少了数据接口的请求次数。
第三,我们对数据结构进行图化抽象,由任意节点遍历整个图结构,实现数据的闭环全联接。诊疗数据全联接的范围包括:门诊就诊信息,如诊断、处方、用药、检查、病历等;住院诊疗信息,如诊断、医嘱、住院信息、患者档案、病案、病程、护理记录等;所有医技科室的服务信息,如检查项目、结果、危急值等;以及门诊住院的历次就诊信息,内容涵盖了诊疗数据的全部内容。
例如:可通过调用某患者的基本信息,遍历到该患者的历次就诊信息,遍历到每次就诊的科室,遍历到该科室信息以及在该科室就诊过的所有患者,同时遍历到这些患者的基本信息。或者通过调用医生信息,遍历到该医生所属科室信息或该医生所诊治过的所有患者信息。总之,可以将任何节点作为起始节点,仅需通过一次调用,就可遍历整个图。
在诊疗数据中台的基础上,我们完成了CDR的构建,实现了医生电子交班、护理智慧交班、临床大数据多学科联合会诊MDT系统、医生移动查房医企微系统等多个临床应用的自主开发构建。
我们的切身感受是:给我一个支点(GraphQL),我能翘起地球(大数据)。有了全联接的诊疗数据,就能源源不断地为临床提供更多的数据服务。
一个“全联接医疗”的时代正在到来。个人就医将变得更加主动,医疗信息系统将转变为“以患者为中心”,患者、医护、医院之间将发生越来越紧密的联接,新医疗也将颠覆传统就医模式。
为了跟上时代步伐,有效缓解看病难、医疗资源不均衡等突出问题,我们必须对医疗体系进行数字化重构,应对移动医疗、远程医疗等带来的新挑战。通过对RESTful API、XML WebService等技术进行更替,无论是在接口复用,还是在数据传输效率、数据集成全联接等方面,GraphQL API方式都具有极大的技术优势,数据结构图化更使得医疗数据具有连续性和复用性,能为个人、医院、政府机构等不同服务对象提供不同维度的全联接数据查询服务。
从应用层面分析,目前国内医疗机构还鲜见基于GraphQL技术的数据开发。但在互联网创新企业,因GraphQL敏捷、快速、低成本的大数据开发服务能力,已经得到了大批量的开发部署应用。
从开发技术角度分析,由于GraphQL将数据关系视为图,所以在抽象数据时有一定难度,而且医院信息系统采用的数据库管理系统版本也各不相同,实现数据全联接的复杂程度相对较高。如果想要实现根据任意字段条件查询的接口,难度较高、工作量不小。不过,从红河州滇南中心医院的开发应用情况来看,该技术在医疗机构具有极佳的应用前景,不但能解决医疗数据的集成问题,还能解决临床实际工作缺乏数据服务的痛点问题。和其他市面大数据产品相比较,基于GraphQL技术提供的医疗数据展示功能在全面性、实时性和流畅度等方面也具有较大优势。
来源:HIT180
上一篇: 吴坤:医信工程师如何避免“堕落”