首页> 中国专利> 基于FHIR标准的GraphQL查询方法和装置

基于FHIR标准的GraphQL查询方法和装置

摘要

本发明涉及一种基于FHIR标准的GraphQL查询方法和装置,所述查询方法包括:接收GraphQL查询请求;获取GraphQL查询请求中的参数,并对该参数进行校验;将GraphQL查询语句转换为FHIR RESTful格式的uri;利用该uri调用FHIR RESTful api;将FHIR应用服务器返回的查询结果进行格式转换,并将转换后的数据作为GraphQL查询结果进行返回。本发明利用现有FHIR应用服务器,以GraphQL对象到FHIR资源标准转换的方式,实现了FHIR协议的GraphQL查询机制;本发明能使FHIR RESTful api的调用查询更加灵活,高效,且丰富了前端开发手段。

著录项

  • 公开/公告号CN112597187A

    专利类型发明专利

  • 公开/公告日2021-04-02

    原文格式PDF

  • 申请/专利权人 北京冠新医卫软件科技有限公司;

    申请/专利号CN202110232292.1

  • 发明设计人 吴侃;包培文;杨开轶;侯文利;

    申请日2021-03-03

  • 分类号G06F16/242(20190101);G06F16/2455(20190101);G06F16/248(20190101);G06F16/25(20190101);

  • 代理机构11471 北京细软智谷知识产权代理有限责任公司;

  • 代理人牛晴

  • 地址 100089 北京市海淀区西小口路66号8幢二层201D室

  • 入库时间 2023-06-19 10:27:30

说明书

技术领域

本发明涉及软件开发技术领域,具体涉及一种基于FHIR标准的GraphQL查询方法和装置。

背景技术

FHIR(Fast Health Interoperable Resources,快速卫生信息交互资源)是由HL7提出的新一代医疗信息交换标准框架,FHIR定义了一个医疗卫生资源的集合,这些资源所表达的是一个个模块化的医学概念,通过交换它们可以实现在医疗保健及相关流程中快速高效地解决问题。这些资源涵盖了医疗卫生的基本元素,如:病人、入院、诊断报告、药物和问题列表以及其中的一些参与者的信息,同时也支持更加丰富和复杂的临床模型。

GraphQL是一种描述请求数据方法的语法,通常用于客户端从服务端加载数据。GraphQL具有以下三个主要特征:

它允许客户端指定具体所需的数据;

它让从多个数据源汇总取数据变得更简单;

它使用了类型系统来描述数据。

GraphQL提供一种全新数据查询方式,可以只获取需要的数据,使api调用更灵活、高效和低成本。

现有的FHIR RESTful api调用查询过程灵活性差,且效率低。

发明内容

有鉴于此,本发明的目的在于克服现有技术的不足,提供一种基于FHIR标准的GraphQL查询方法和装置,以使FHIR RESTful api调用查询过程更加灵活、高效和低成本,同时使前端调用的完备性更好。

为实现以上目的,本发明采用如下技术方案:一种一种基于FHIR标准的GraphQL查询方法,包括:

接收GraphQL查询请求;其中,所述GraphQL查询请求包括GraphQL查询语句;

获取所述GraphQL查询请求中的参数,并对所述参数进行校验;

将GraphQL查询语句转换为FHIR RESTful格式的资源标识符;

利用所述FHIR RESTful格式的资源标识符调用FHIR应用服务器上的RESTfulapi;

获取所述FHIR应用服务器返回的查询结果数据;

将所述查询结果数据进行格式转换,并将格式转换后的数据作为GraphQL查询结果进行返回;

其中,所述获取所述GraphQL查询请求中的参数,并对所述参数进行校验,包括:

根据FHIR协议定义查询参数的GraphQLInputObject对象,以完成对GraphQL查询参数的定义,使参数符合FHIR协议的资源标准,格式为GraphQL标准,同时完成对参数的校验约束;

所述将GraphQL查询语句转换为FHIR RESTful格式的资源标识符,包括:

构建正则表达式组件,将GraphQL查询语句转换为FHIR RESTful格式的资源标识符。

可选的,所述根据FHIR协议定义查询参数的GraphQLInputObject对象,包括:

根据FHIR协议定义查询参数的名称、数据类型以及相应的校验规则。

可选的,利用所述FHIR RESTful格式的资源标识符调用FHIR应用服务器上的RESTful api时,验证查询参数是否满足校验约束;

当查询参数满足校验约束时,执行调用操作。

可选的,所述验证查询参数是否满足校验约束,包括:

GraphQL验证所述查询参数是否为标准资源标识符。

可选的,所述FHIR应用服务器返回的查询结果数据为XML格式;

所述将所述查询结果数据进行格式转换,包括:

将所述FHIR应用服务器返回的XML格式的查询结果数据转换为JSON格式的数据。

本发明还提供了一种基于FHIR标准的GraphQL查询装置,包括:

接收模块,用于接收GraphQL查询请求;其中,所述GraphQL查询请求包括GraphQL查询语句;

校验模块,用于获取所述GraphQL查询请求中的参数,并对所述参数进行校验;

第一转换模块,用于将GraphQL查询语句转换为FHIR RESTful格式的资源标识符;

调用模块,用于利用所述FHIR RESTful格式的资源标识符调用FHIR应用服务器上的RESTful api;

获取模块,用于获取所述FHIR应用服务器返回的查询结果数据;

第二转换模块,用于将所述查询结果数据进行格式转换,并将格式转换后的数据作为GraphQL查询结果进行返回;

其中,所述获取所述GraphQL查询请求中的参数,并对所述参数进行校验,包括:

根据FHIR协议定义查询参数的GraphQLInputObject对象,以完成对GraphQL查询参数的定义,使参数符合FHIR协议的资源标准,格式为GraphQL标准,同时完成对参数的校验约束;

所述将GraphQL查询语句转换为FHIR RESTful格式的资源标识符,包括:

构建正则表达式组件,将GraphQL查询语句转换为FHIR RESTful格式的资源标识符。

本发明还提供了一种控制器,用于执行前面任一项所述的基于FHIR标准的GraphQL查询方法。

本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行一种基于FHIR标准的GraphQL查询方法,包括:

接收GraphQL查询请求;其中,所述GraphQL查询请求包括GraphQL查询语句;

获取所述GraphQL查询请求中的参数,并对所述参数进行校验;

将GraphQL查询语句转换为FHIR RESTful格式的资源标识符;

利用所述FHIR RESTful格式的资源标识符调用FHIR应用服务器上的RESTfulapi;

获取所述FHIR应用服务器返回的查询结果数据;

将所述查询结果数据进行格式转换,并将格式转换后的数据作为GraphQL查询结果进行返回;

其中,所述获取所述GraphQL查询请求中的参数,并对所述参数进行校验,包括:

根据FHIR协议定义查询参数的GraphQLInputObject对象,以完成对GraphQL查询参数的定义,使参数符合FHIR协议的资源标准,格式为GraphQL标准,同时完成对参数的校验约束;

所述将GraphQL查询语句转换为FHIR RESTful格式的资源标识符,包括:

构建正则表达式组件,将GraphQL查询语句转换为FHIR RESTful格式的资源标识符。

本发明采用以上技术方案,所述一种基于FHIR标准的GraphQL查询方法,包括:接收GraphQL查询请求;其中,所述GraphQL查询请求包括GraphQL查询语句;获取所述GraphQL查询请求中的参数,并对所述参数进行校验;将GraphQL查询语句转换为FHIR RESTful格式的资源标识符;利用所述FHIR RESTful格式的资源标识符调用FHIR应用服务器上的RESTful api;获取所述FHIR应用服务器返回的查询结果数据;将所述查询结果数据进行格式转换,并将格式转换后的数据作为GraphQL查询结果进行返回。本发明所述方法利用现有的FHIR应用服务器,以GraphQL对象到FHIR资源标准转换的方式,实现了FHIR协议GraphQL查询的实现机制;本发明所述的查询方法能够使FHIR RESTful api的调用查询更加灵活,高效,且丰富了前端开发手段。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一种基于FHIR标准的GraphQL查询方法提供的流程示意图;

图2是本发明一种基于FHIR标准的GraphQL查询装置提供的结构示意图。

图中:1、接收模块;2、校验模块;3、第一转换模块;4、调用模块;5、获取模块;6、第二转换模块。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。

图1是本发明一种基于FHIR标准的GraphQL查询方法提供的流程示意图。

如图1所示,本发明所述的一种基于FHIR标准的GraphQL查询方法,包括:

S11:接收GraphQL查询请求;其中,所述GraphQL查询请求包括GraphQL查询语句;

S12:获取所述GraphQL查询请求中的参数,并对所述参数进行校验;

其中,所述获取所述GraphQL查询请求中的参数,并对所述参数进行校验,包括:

根据FHIR协议定义查询参数的GraphQLInputObject对象,以完成对GraphQL查询参数的定义,使参数符合FHIR协议的资源标准,格式为GraphQL标准,同时完成对参数的校验约束(如,type:UriScalar指明该参数为uri);

根据FHIR协议定义所有资源的GraphQLObject对象,实现FHIR资源的GraphQLmutation对象,该对象符合FHIR标准。

进一步的,所述根据FHIR协议定义查询参数的GraphQLInputObject对象,包括:

根据FHIR协议定义查询参数的名称、数据类型以及相应的校验规则。

S13:将GraphQL查询语句转换为FHIR RESTful格式的uri;

所述uri就是资源标识符;

所述将GraphQL查询语句转换为FHIR RESTful格式的资源标识符,包括:

根据查询参数构建正则表达式组件,将GraphQL查询语句转换为FHIR RESTful格式的资源标识符。

S14:利用所述FHIR RESTful格式的uri调用FHIR应用服务器上的RESTful api;

进一步的,利用所述FHIR RESTful格式的资源标识符调用FHIR应用服务器上的RESTful api时,验证查询参数是否满足校验约束;

当查询参数满足校验约束时,执行调用操作;否则,可以直接返回,调用失败;进一步的,当调用失败时,可以给出相应的信息反馈,以通知调用者由于查询参数不满足校验约束而导致调用失败。

进一步的,所述验证查询参数是否满足校验约束,包括:

GraphQL验证所述查询参数是否为标准资源标识符(即标准uri)。

S15:获取所述FHIR应用服务器返回的查询结果数据;

S16:将所述查询结果数据进行格式转换,并将格式转换后的数据作为GraphQL查询结果进行返回;

进一步的,所述FHIR应用服务器返回的查询结果数据为XML格式;

所述将所述查询结果数据进行格式转换,包括:

将所述FHIR应用服务器返回的XML格式的查询结果数据转换为JSON格式的数据。

本发明所述的查询方法在实际应用中,先接收GraphQL查询请求;所述GraphQL查询请求包括GraphQL查询语句;获取所述GraphQL查询请求中的参数,并对所述参数进行校验;具体的,根据FHIR协议定义所有查询参数的GraphQLInputObject对象,完成对GraphQL查询输入参数的定义,参数符合FHIR协议的资源标准,格式为GraphQL标准,同时定义了参数的校验约束,如type:UriScalar指明该参数为uri,调用时GraphQL会自动验证该参数是否为标准uri。再根据查询参数构建正则表达式,并根据所述正则表达式将GraphQL查询语句转换为FHIR RESTful格式的uri;利用所述FHIR RESTful格式的uri调用FHIR应用服务器上的RESTful api;在调用时,GraphQL会自动验证该参数是否为标准uri,如果是,执行调用操作,FHIR应用服务器返回的查询结果数据;获取所述FHIR应用服务器返回的查询结果数据(XML格式);将所述查询结果数据进行格式转换,转换成JSON格式,将格式转换后的JSON格式数据作为GraphQL查询结果进行返回;至此,查询过程结束。

本发明所述方法利用现有的FHIR应用服务器,以GraphQL对象到FHIR资源标准转换的方式,实现了FHIR协议GraphQL查询的实现机制;本发明所述的查询方法能够使FHIRRESTful api的调用查询更加灵活,高效,且丰富了前端开发手段。

图2是本发明一种基于FHIR标准的GraphQL查询装置提供的结构示意图。

如图2所示,本发明所述的一种基于FHIR标准的GraphQL查询装置,包括:

接收模块1,用于接收GraphQL查询请求;其中,所述GraphQL查询请求包括GraphQL查询语句;

校验模块2,用于获取所述GraphQL查询请求中的参数,并对所述参数进行校验;

第一转换模块3,用于将GraphQL查询语句转换为FHIR RESTful格式的资源标识符;

调用模块4,用于利用所述FHIR RESTful格式的资源标识符调用FHIR应用服务器上的RESTful api;

获取模块5,用于获取所述FHIR应用服务器返回的查询结果数据;

第二转换模块6,用于将所述查询结果数据进行格式转换,并将格式转换后的数据作为GraphQL查询结果进行返回;

其中,所述获取所述GraphQL查询请求中的参数,并对所述参数进行校验,包括:

根据FHIR协议定义查询参数的GraphQLInputObject对象,以完成对GraphQL查询参数的定义,使参数符合FHIR协议的资源标准,格式为GraphQL标准,同时完成对参数的校验约束;

所述将GraphQL查询语句转换为FHIR RESTful格式的资源标识符,包括:

构建正则表达式组件,将GraphQL查询语句转换为FHIR RESTful格式的资源标识符。

本发明所述的一种基于FHIR标准的GraphQL查询装置的工作原理与前面所述的一种基于FHIR标准的GraphQL查询方法的工作原理相同,在此不再赘述。

本发明所述查询装置利用现有的FHIR应用服务器,以GraphQL对象到FHIR资源标准转换的方式,实现了FHIR协议GraphQL查询的实现机制;本发明所述的查询装置能够使FHIR RESTful api的调用查询更加灵活,高效,且丰富了前端开发手段。

本发明还提供了一种控制器,用于执行图1所述的基于FHIR标准的GraphQL查询方法。

此外,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行一种基于FHIR标准的GraphQL查询方法,包括:

接收GraphQL查询请求;其中,所述GraphQL查询请求包括GraphQL查询语句;

获取所述GraphQL查询请求中的参数,并对所述参数进行校验;

将GraphQL查询语句转换为FHIR RESTful格式的资源标识符;

利用所述FHIR RESTful格式的资源标识符调用FHIR应用服务器上的RESTfulapi;

获取所述FHIR应用服务器返回的查询结果数据;

将所述查询结果数据进行格式转换,并将格式转换后的数据作为GraphQL查询结果进行返回;

其中,所述获取所述GraphQL查询请求中的参数,并对所述参数进行校验,包括:

根据FHIR协议定义查询参数的GraphQLInputObject对象,以完成对GraphQL查询参数的定义,使参数符合FHIR协议的资源标准,格式为GraphQL标准,同时完成对参数的校验约束;

所述将GraphQL查询语句转换为FHIR RESTful格式的资源标识符,包括:

构建正则表达式组件,将GraphQL查询语句转换为FHIR RESTful格式的资源标识符。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号