hapi fhir 服务器全交钥匙实施

hapi fhir server full turn key implementation

所以我一直在使用 Hapi Fhir Server(几年)作为公开我公司专有数据的一种方式....也就是为多种资源实施 IResourceProvider。 想想这个世界"read only"

现在我正在考虑接受写入。

Hapi Fhir 服务器有这样的作用:

JPA Server

The HAPI FHIR RestfulServer module can be used to create a FHIR server endpoint against an arbitrary data source, which could be a database of your own design, an existing clinical system, a set of files, or anything else you come up with.

HAPI also provides a persistence module which can be used to provide a complete RESTful server implementation, backed by a database of your choosing. This module uses the JPA 2.0 API to store data in a database without depending on any specific database technology.

Important Note: This implementation uses a fairly simple table design, with a single table being used to hold resource bodies (which are stored as CLOBs, optionally GZipped to save space) and a set of tables to hold search indexes, tags, history details, etc. This design is only one of many possible ways of designing a FHIR server so it is worth considering whether it is appropriate for the problem you are trying to solve.

http://hapifhir.io/doc_jpa.html

所以我下载了(jpa 服务器的)并让它与真正的数据库引擎一起工作(覆盖默认的 jpa 定义)......我观察到 "fairly simple table design"。所以我感谢这个简单的演示。但是从简单的角度来看,它确实让我担心一个完整的生产设置。

如果我想设置一个 Fhir 服务器,是否有任何 "non trivial"(上面说 "fairly simple table design")……来实现一个强大的 Fhir 服务器…… 支持资源的版本控制(历史)、“引用”的验证(例如,如果有人上传 Encounter,它会检查 Encounter 负载中的 Patient(引用)和 Practitioner(引用)……等,等等?
那就是使用强大的 nosql 数据库?

或者我要实现一个非平凡的 nosql 数据库? 还是我在 JPA 上走错了路?

我可以从 "scratch"(我的 fhir-server 的一个空数据存储)开始....如果我必须导入任何数据,我明白这会带来什么。

谢谢。

问这个问题的另一种方式......是......有没有一种 hapi-fhir 方法来模拟这个库:(请不要退回到圣洁-war 之间的问题java 和点网)

但下面是我认为的 "full turn key" 解决方案。使用 NoSql (CosmoDB)。

https://github.com/Microsoft/fhir-server

A .NET Core implementation of the FHIR standard.

FHIR Server for Azure is an open-source implementation of the emerging HL7 Fast Healthcare Interoperability Resources (FHIR) specification designed for the Microsoft cloud. The FHIR specification defines how clinical health data can be made interoperable across systems, and the FHIR Server for Azure helps facilitate that interoperability in the cloud. The goal of this Microsoft Healthcare project is to enable developers to rapidly deploy a FHIR service.

With data in the FHIR format, the FHIR Server for Azure enables developers to quickly ingest and manage FHIR datasets in the cloud, track and manage data access and normalize data for machine learning workloads. FHIR Server for Azure is optimized for the Azure ecosystem:

我不知道 HAPI 服务器的任何实现都支持 NoSQL 中的完整持久层。

HAPI 已经存在了一段时间,持久层已经发展了很多,似乎适用于许多生产场景,尤其是在由高性能关系数据库支持的情况下。

维护 HAPI 的团队也将其用作商业产品的基础,Smile CDR. Many of the enhancements that went into making Smile CDR production ready are baked into the HAPI open source project. There has also been some discussion on scaling the JPA implementation

如果您认真考虑在生产中使用 HAPI,我建议您在您设置的演示服务器上做一些基准测试来模拟您的某些生产 use-cases 看看它是否能满足您的需求,你可能会感到惊讶。您还可以联系 Smile CDR 的人员,因为他们提供咨询服务,他们可能会更具体地告诉您如何调整实例以根据您的生产优先级进行扩展。

您可以使用 Firely 的 FHIR 实现。最常用的 repo 是 FHIR SDK;

https://github.com/FirelyTeam/firely-net-sdk

但是,如果您想开箱即用地为您完成更多工作,您可以使用他们的 Spark 存储库。这使用下面的 SDK 并最终为您提供一个 IAsyncFhirService,您可以将其用于 CRUD 操作;

https://github.com/FirelyTeam/spark

关于你的问题; Spark 目前仅支持 Mongo 数据库作为数据持久层,即没有像映射这样的实体在关系数据库中创建数据库模式。我认为 NoSQL 在这种情况下是有意义的。

或者,查看由 HL7 自己维护的其他语言的 FHIR 实现列表;

https://wiki.hl7.org/Open_Source_FHIR_implementations