【问题标题】:Azure API for FHIR Create New Resource with Generate IdAzure API for FHIR 使用 Generate Id 创建新资源
【发布时间】:2021-09-02 13:44:11
【问题描述】:

我正在使用 Azure API for FHIR 服务,并且我想生成一个具有我自己创建的 Id 的资源。查看文档,您似乎应该能够向 / 发出 PUT 请求,但它似乎不起作用。如果我对 / 进行 POST 并指定我的 ID,它将被忽略。

将来,我希望它能够生成 Id,但对于“导入旧数据”阶段,我希望能够指定我自己的 Id,以使事情的链接方面更容易。

有什么想法吗?

更新 我要避免的问题是必须将所有数据推送到 FHIR 端点,然后再次检查所有内容以创建链接。

【问题讨论】:

  • 听起来你做错了,但也许你应该更明确一点。你到底在哪里发布/放置了什么?

标签: azure hl7-fhir fhir-server-for-azure


【解决方案1】:

如果服务器允许 upsert,您将对“/[ResourceType]/[id]”执行 PUT,而不仅仅是“/”。

例如,如果您有一个技术 ID 为“123”的患者,您可以执行以下操作: PUT [base]/Patient/123

确保 Patient 资源在资源内的“id”字段也设置为“123”。它必须与您在 url 上放置的 id 匹配。

另一种选择是构建一个事务包,您可以在其中为要更新插入的每个资源创建条目。您将再次使用 PUT 动词和 '[ResourceType]/[id]' 作为 entry.request 详细信息。构建 Bundle 后,您可以将其与 POST 一起发送到 base,因此服务器知道将其作为事务处理。

如果您有一堆相关且相互引用的资源,事务包也非常有用,因为服务器需要更新包内新资源的所有引用。有关更多信息,请参阅http://hl7.org/fhir/http.html#trules。请注意,并非所有服务器都支持事务,就像 Lloyd 在他的回答中提到的那样,并非所有服务器都允许 upserts。

【讨论】:

    【解决方案2】:

    服务器不需要允许外部系统分配 ID。许多服务器不支持“upsert”,因为它有 id 冲突的风险。那些这样做的人通常只会在某些情况下启用它。例如。所有 id 都必须是 UUID,因此不可能发生冲突;只有一个源并且它正在与目标系统同步,因此它“拥有”该 ID,并且不会发生冲突。

    如果确定这样做是安全的,某些服务器可能具有打开“更新插入”功能的配置功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      相关资源
      最近更新 更多