我想创建一个符合复杂业务逻辑的互操作平台 FHIR。
我们的客户可以将FHIR资源发送到平台。
最佳实践文档中的最佳架构是综合系统 FHIR + SOA,如 link说。
现在我写了两个我必须管理的场景示例:
第一个:
我想创建一个带有主题的 ServiceRequest 资源,其中我只知道财政代码作为标识符。如果我需要有关该主题的其他信息,我可以查询外部数据库,例如,了解姓名等。
我可以这样做,只向我的互操作平台发送如下服务请求?
"resourceType" : "ServiceRequest",
"subject" : {
"reference" : "Patient?identifier=FISCALCODE"
}
等等
第二个:
我想创建一个 ServiceRequest 资源,并在请求者标记中链接有相关人员。
RelatedPerson 不是一个完整的注册表,我只知道名字和姓氏以及患者的链接。
我必须创建一个 SOA 方法createServiceRequest
,我必须在其中传递两个参数:ServiceRequest 和RelatedPerson?或者我可以对捆绑资源使用 CRUD 方法,将我的 ServiceRequest 和我的相关人员作为条目放入其中?
所以如果我尝试总结一下,可能的方法是:
创建方法createMyMethodName(ServiceRequest serviceRequest,RelatedPerson relatedPerson)
- 该方法的创建和公开是否符合 FHIR 标准?
- 如果第一个问题的答案是肯定的,在我的平台中我会有很多自定义方法,但我对输入信息有非常严格的控制
使用 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/