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

时间:2016-04-07 14:46:57

标签: hl7-fhir

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

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

  • 为所有(或只是有问题的)表ID添加前缀,例如lab-123和vit-123
  • 向每个表添加UUID并将其用作逻辑标识符

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

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

2 个答案:

答案 0 :(得分:0)

服务器系统将根据内部数据的存储方式提供各种不同的数据分区。 FHIR所做的是提供一个试图隐藏这些变化的界面。因此,观察/实验室/ 123将违背我们正在尝试做的事情 - 因为每个系统都会有不同的划分,并且很难实现互操作性。

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

答案 1 :(得分:0)

  

是否存在允许将资源拆分为多个的FHIR方式   子资源,即使在Rest URL中?理想情况下,我会得到类似的东西   GET服务器:端口/观察/实验室/ 123

这对搜索意味着什么?那么,什么会/ Obervation?code = xxx搜索通过?将搜索实验室,生命体征等组合在一起,还是只允许访问/观察/实验室?

如果这些是真正的"筒仓",也许您可​​以使用http://servername/lab/Observation(因此交换最后两个路径部分),这表明您的服务器有多个"端点"对于不同的观察。我认为更多的客户将能够处理该网址而不是您建议的网址。

最好,仍然,我认为你有两个其他选择之一,第一个确实是最容易实现的。