避免在创建资源时重复 Patient

Avoid duplicate Patient on resource create

多次发送此请求时,我创建了多个患者。

{
  "resourceType": "Patient",
  "identifier": [
    {
      "use": "usual",
      "system": "urn:oid:2.16.840.1.113883.19.5",
      "value": "12345"
    }
  ],
  "active": true,
  "name": [
    {
      "family": "Levin",
      "given": [
        "Omri"
      ]
    }
  ],
  "gender": "male",
  "birthDate": "1980-09-24"
}

我的假设是,当我提供 identifier 时,它会拒绝第二次调用,因为 PAtient 已经存在。但似乎并非如此?我如何避免这些重复?

(在 Azure 和 Google 云上都试过了 - 结果相同)

我不得不更深入地研究文档。答案就在这里 - https://www.hl7.org/fhir/http.html#ccreate

在我的例子中,添加 header If-None-Exist: identifier=urn:oid:2.16.840.1.113883.19.5|12345 在 Azure 上成功了。但是,在 Google 云上,如果尝试使用 API 的 V1,我们会收到添加 header:

的错误
{
    "issue": [
        {
            "code": "value",
            "details": {
                "text": "invalid_query"
            },
            "diagnostics": "conditional operations are not supported in API version v1",
            "severity": "error"
        }
    ],
    "resourceType": "OperationOutcome"
}

为了克服这个问题,我们需要使用 v1beta1。所以 URL 应该改变

- https://healthcare.googleapis.com/v1/projects/...
+ https://healthcare.googleapis.com/v1beta1/projects/...

详细了解“v1”和“新 v1beta1”的区别here