为某些资源创建子集以更好地适应现有数据模型?

Create subsets for certain Resources to better fit existing data model?

我们正在尝试为我们的应用程序实施 FHIR Rest 服务器。在我们当前的数据模型(以及实时数据)中,多个 FHIR 资源由多个 table 表示,例如观察结果存储在 tables 中,用于生命值、实验室值和诊断。每个 table 都有一个独立的、自动递增的主 ID,因此在不同的 table 中存在具有相同 ID 的条目。但是对于 FHIR 服务器的 GET 或 DELETE 调用,需要一个唯一的 ID。处理此问题最明智的方法是什么?

搜索没有揭示这样做的固有方式,所以我正在考虑这两个选项:

两者都有缺点:第一个需要 ID 解析器,第二个需要多次数据库调用才能识别正确的记录。

是否有 FHIR 方法允许将资源拆分为多个子资源,即使在 Rest URL 中也是如此?理想情况下,我会得到类似 GET server:port/Observation/laboratory/123

服务器系统在数据内部存储方式方面会有各种不同的数据划分。 FHIR 所做的是提供一个试图隐藏这些变化的接口。所以 Observation/laboratory/123 将与我们正在尝试做的事情背道而驰 - 因为每个系统都会有不同的部门,并且很难实现互操作性。

您提出的任何一个选项都可以。我稍微倾向于第一个选项,因为它不涉及更改持久层,而且它是在 external/fhir 和内部之间转换的相对直接的转换。

Is there a FHIR way that allows to split a resource into several sub-resources, even in the Rest URL? Ideally I'd get something like GET server:port/Observation/laboratory/123

这对搜索意味着什么?那么,/Obervation?code=xxx 会搜索什么?搜索实验室、Vitals 等会结合在一起,还是只允许在 /Observation/laboratory 上访问?

如果这些确实是 "silos",也许您可​​以使用 http://servername/lab/Observation(所以交换最后两个路径部分),这表明您的服务器有多个 "endpoints" 用于不同的观察。我认为比您建议的 url 更多的客户能够处理 url。

最好的是,我认为还有另外两个选项之一,第一个确实是最容易实施的。