帮你快速理解、总结文档立即下载

条件更新

最近更新时间:2026-07-28 16:18:02

我的收藏

接口描述

用于在事务 Bundle 中执行条件更新操作。客户端提交资源内容时,不直接指定目标资源 ID,而是提供一段搜索条件;服务端先根据该条件查询目标资源,再决定执行更新或创建。
条件更新的处理规则通常如下:
若无匹配资源,则创建新资源
若存在匹配资源,则使用 Bundle.entry.resource 中的内容更新该资源
在事务 Bundle 中,请求方法通常为 PUT,搜索表达式放在 Bundle.entry.request.url 中。

输入参数

参数名称
类型
是否必填
说明
HTTP Method
String
固定为 POST
URL
String
Bundle 提交地址,格式为 [baseUrl]
Authorization
String
身份认证令牌,格式为 Bearer <AccessToken>,AccessToken 通过 调用方式 中的 GetAccessToken 接口获取(实例控制台场景可通过 GetWebAccessToken 接口获取)。
Content-Type
String
请求体 MIME 类型,写入类请求通常为 application/fhir+json;未指定时服务端将根据请求内容自动推断。
Request Body
JSON Object
包含条件更新条目的事务 Bundle。
请求 URL 示例
https://HOSTNAME/INSTANCE_ID/fhir
请求体主要字段说明:
字段
类型
是否必填
说明
entry[].resource
Object
待更新资源内容
entry[].request.method
String
固定为 PUT
entry[].request.url
String
条件更新搜索表达式
说明:
条件更新不直接写死资源 ID,而是通过搜索条件定位目标资源。
若匹配结果为空,则通常按创建处理。
若匹配结果唯一,则对该资源执行更新。

输出参数

接口调用成功后,返回 HTTP 状态码 200 OK,并在响应头中包含内容类型及请求追踪信息,响应体为结果 Bundle,包含各条目的执行状态与资源位置。
响应头示例说明:
参数名称
类型
说明
Status Code
Integer
成功时返回 200 OK
Location
String
结果 Bundle 的访问地址。
Content-Location
String
结果 Bundle 的内容定位地址。
Content-Type
String
响应体 MIME 类型,通常为 application/fhir+json
x-request-id
String
请求追踪 ID。
响应体主要字段说明:
字段
类型
说明
resourceType
String
返回资源类型,通常为 Bundle
id
String
结果 Bundle 的唯一 ID。
type
String
Bundle 类型,条件更新返回 transaction-response
link
Array
导航链接,包含 relationurl 字段,relationself 时指向当前请求地址。
entry
Array
条目执行结果。
entry[].response.status
String
条目执行状态。匹配到已有资源时返回 200 OK;无匹配资源导致新建时返回 201 Created
entry[].response.location
String
更新后或新建资源的位置。
entry[].response.etag
String
资源版本标识。
entry[].response.outcome
Object
条目执行详情,包含 OperationOutcome 信息。

示例

请求示例

POST /INSTANCE_ID/fhir HTTP/1.1
Host: HOSTNAME
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/fhir+json
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"fullUrl": "urn:uuid:95dbbf93-5829-46ba-9021-2545a1da3aa5",
"resource": {
"resourceType": "Patient",
"identifier": [
{
"system": "http://acme.org/mrns",
"value": "013873"
}
],
"name": [
{
"family": "Simpson",
"given": [
"Homer"
]
}
],
"gender": "male"
},
"request": {
"method": "PUT",
"url": "Patient?identifier=http://acme.org/mrns|013873"
}
},
{
"fullUrl": "urn:uuid:124ff3c8-f251-4bd9-8c44-cc6568180eae",
"resource": {
"resourceType": "Condition",
"identifier": [
{
"system": "http://acme.org/cond",
"value": "46253"
}
],
"clinicalStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
"code": "active"
}
]
},
"verificationStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
"code": "confirmed"
}
]
},
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-category",
"code": "problem-list-item",
"display": "Problem List Item"
}
]
}
],
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "59621000",
"display": "Essential hypertension"
}
]
},
"subject": {
"reference": "urn:uuid:95dbbf93-5829-46ba-9021-2545a1da3aa5"
}
},
"request": {
"method": "PUT",
"url": "Condition?identifier=http://acme.org/cond|46253"
}
}
]
}

响应示例

HTTP/1.1 200 OK
Location: https://HOSTNAME/INSTANCE_ID/fhir/Bundle/<bundle-id>
Content-Location: https://HOSTNAME/INSTANCE_ID/fhir/Bundle/<bundle-id>
Content-Type: application/fhir+json
x-request-id: <REQUEST_ID>
{
"resourceType": "Bundle",
"id": "<bundle-id>",
"type": "transaction-response",
"link": [
{
"relation": "self",
"url": "https://HOSTNAME/INSTANCE_ID/fhir"
}
],
"entry": [
{
"response": {
"status": "200 OK",
"location": "Patient/95dbbf93-5829-46ba-9021-2545a1da3aa5/_history/2",
"etag": "2"
}
},
{
"response": {
"status": "200 OK",
"location": "Condition/124ff3c8-f251-4bd9-8c44-cc6568180eae/_history/2",
"etag": "2"
}
}
]
}

错误码

常见错误码如下,更多错误码请参见 错误码
错误码
说明
400 Bad Request
条件更新表达式格式错误
401 Unauthorized
未认证,缺少有效身份凭证
403 Forbidden
已认证但无执行 Bundle 操作的权限
409 Conflict
资源状态冲突
412 Precondition Failed
条件更新搜索条件匹配到多个资源,无法确定唯一更新目标
422 Unprocessable Entity
Bundle 语法正确,但未通过业务或规则校验
500 Internal Server Error
服务端内部处理异常