interop - FHIR 互操作平台选择

标签 interop hapi-fhir hl7-fhir

我想创建一个符合复杂业务逻辑的互操作平台 FHIR。

我们的客户可以将FHIR资源发送到平台。

最佳实践文档中的最佳架构是综合系统 FHIR + SOA,如 link说。

现在我写了两个我必须管理的场景示例:

第一个:

我想创建一个带有主题的 ServiceRequest 资源,其中我只知道财政代码作为标识符。如果我需要有关该主题的其他信息,我可以查询外部数据库,例如,了解姓名等。

我可以这样做,只向我的互操作平台发送如下服务请求?

"resourceType" : "ServiceRequest",
"subject" : {
     "reference" : "Patient?identifier=FISCALCODE"
 }

等等

第二个:

我想创建一个 ServiceRequest 资源,并在请求者标记中链接有相关人员。

RelatedPerson 不是一个完整的注册表,我只知道名字和姓氏以及患者的链接。

我必须创建一个 SOA 方法createServiceRequest,我必须在其中传递两个参数:ServiceRequest 和RelatedPerson?或者我可以对捆绑资源使用 CRUD 方法,将我的 ServiceRequest 和我的相关人员作为条目放入其中?

所以如果我尝试总结一下,可能的方法是:

  1. 创建方法createMyMethodName(ServiceRequest serviceRequest,RelatedPerson relatedPerson)

    • 该方法的创建和公开是否符合 FHIR 标准?
    • 如果第一个问题的答案是肯定的,在我的平台中我会有很多自定义方法,但我对输入信息有非常严格的控制
  2. 使用 CRUD Bundle 方法,将以下条目传递到 Bundle 资源中:ServiceRequest、RelatedPerson

    • 通过这种方式,我只公开了一种在我的平台上编写的方法,但我必须实现大量代码来管理具有多个不同条目的所有输入包(我假设是一个大型交换机,然后对于每个分支,我应用业务逻辑控制来完成我的业务逻辑规则)

最佳答案

此答复并非对您的问题的完整答复,而是来自美国的角度;但是,您可能会发现该观点很有用。

标识符查询的陷阱

"reference" : "Patient?identifier=FISCALCODE"

如所写,您的?identifier=FISCALCODE将查询FISCALCODE针对所有代码系统的 key 。我认为你想要的是指定一个代码系统,例如?identifier=<CodeSystem>|<FiscalCode> 这是一个隐藏在 FHIR search documentation 中的常见问题。 .

您要么必须引用现有的代码系统,例如类似于美国核心的意大利特定实现指南,其中包含 FiscalCodes 列表,或自行编写。

您使用哪种 FHIR 集成范例?

在深入探讨 createMethod 与 Bundle 问题之前,我认为退一步并选择整体 FHIR 集成方法会很有用。

我认为主要有以下三种方法:

  • 将数据加载到现有的独立 FHIR 服务器中
    • 挑战:FHIR 服务器和其他数据仓库中加载的数据之间存在偏差
  • FHIR 服务器查询非 FHIR API
    • 挑战:FHIR API 和非 FHIR API 之间的重复
    • 注意:在限制情况下,FHIR 服务器中不存储任何数据。更令人困惑的是,有些人会将此实现称为“FHIR 网关”而不是“FHIR 服务器”。
  • FHIR 服务器查询临时数据库中的 FHIR 数据
    • 挑战:必须为每个 FHIR 资源和每个数据元素编写数据访问权限。

将来,可能会出现第四种方法,即实时使用 FHIR 映射语言从中间源模型到多个目标。

您的“CRUD Bundle 方法”更符合将数据发布到独立 FHIR 服务器的要求,而您的“createMyMethodName”更符合将 DAO(数据访问对象)写入外部数据库的要求。

在不需要保持 FHIR 服务器和源数据系统之间同步的情况下,将数据导入到独立的 FHIR 服务器中的工作量要少得多。

在您已经拥有到中间数据模型的映射的情况下(在美国,许多大型服务提供商将拥有到 USCDI 或通用临床数据集的映射),您将可以更轻松地在针对现有数据库的 FHIR 服务器。

要进行更深入的讨论,请在 2018 年 FHIR 开发日上进行 FHIR 集成模式演讲,starting at Slide 21 。请注意,作者假设熟悉架构模式,例如外观模式。

选择独立服务器或库

除非您有迫切的要求或者是一家大公司,否则建议使用现有的开源独立服务器或库实现。最受欢迎的三个是:

  • HAPI-FHIR(Java)
  • 微软 (.NET)
  • IBM(Java)

如果采用独立选项,流行的商业 FHIR 服务器

  • Microsoft(托管在 Azure 中)
  • Smile CDR(HAPI-FHIR 商业版)
  • 火焰冯克

关于interop - FHIR 互操作平台选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61951059/

相关文章:

dstu2-fhir - 如何根据扩展值搜索 fhir 资源?

dstu2-fhir - Smart On FHIR 和 FHIR-NET-API 的目的

azure - 架构/蓝图是否可用于 Azure 上的开源 FHIR 实现?

dstu2-fhir - 设置 HAPI FHIR IGenericClient 的超时时间

C# Com Interop 与 Windows Media Player 可视化(带有示例代码)

javascript - 如何在 javascript 中使用 clojurescript 的复杂返回对象

c# - 如何按单元格值查找列 ID?

c# - 我如何为 shdocvw.dll 创建一个强命名的互操作 dll