0

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

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

有任何想法吗?

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

4

2 回答 2

2

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

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

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

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

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

于 2021-09-03T12:59:29.800 回答
0

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

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

于 2021-09-02T14:16:28.497 回答