使用 HAPI FHIR 发布资源包

Gre*_*rey 2 hapi dart hl7-fhir hapi-fhir flutter

我正在寻求有关如何将包含多个资源的包发布到 HAPI 服务器的帮助。我正在运行 [测试服务器][1],并且我尝试使用 Jetty 服务器并将其作为 Docker 容器运行。我能够成功启动服务器,转到 UI 并直接发布患者。我还可以直接从 Postman 中发布患者:

POST /hapi-fhir-jpaserver/fhir/Patient HTTP/1.1
Host: localhost:8080
Content-Type: application/fhir+json
{
  "resourceType": "Patient",
  "name": [
    {
      "use": "official",
      "family": "Solo",
      "given": [
        "Han"
      ]
    }
  ]
Run Code Online (Sandbox Code Playgroud)

这一切都很好。但是,当我尝试发布此内容时:

{
  "resourceType": "Bundle",
  "type": "transaction",
  "entry": [
    {
      "resource": {
        "resourceType": "Patient",
        "name": [
          {
            "use": "official",
            "family": "Stark",
            "given": [
              "Anthony"
            ]
          }
        ]
      },
      "request": {
        "method": "PUT",
        "url": "Patient"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我收到“OperationOutcome”错误:“无法在此服务器上存储 Bundle 资源,其 Bundle.type 值为:事务”

我从 Web UI 和邮递员处都收到此错误。我可以将 Bundle 的类型更改为“消息”之类的类型,并且不会收到相同的错误。然而,当我搜索时,虽然整个捆绑包已经发布,但里面的病人还没有。有谁知道如何让服务器独立于 Bundle 本身读取 Bundle 内的资源?

  [1]: https://github.com/hapifhir/hapi-fhir-jpaserver-starter
Run Code Online (Sandbox Code Playgroud)

Llo*_*zie 5

要执行事务或批处理,请将其 POST 到服务器的“根”端点,而不是 Bundle 端点 - 所以.../hapi-fhir-jpaserver/fhir,不是.../hapi-fhir-jpaserver/fhir/Bundle

  • 如果您使用 PUT 而不是 POST *并且*服务器支持它,它将使用您指定的 id 创建资源(如果该资源尚不存在)。然而,由于 id 冲突的可能性或者因为它们的持久层不允许外部确定的 id,并非所有服务器都允许这样做。指南在这里:http://build.fhir.org/http.html#upsert (2认同)