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

条件创建

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

我的收藏

接口描述

用于在事务 Bundle 中执行条件创建操作。客户端在提交待创建资源的同时,会提供一段搜索条件,服务端会先按该条件查询是否已存在匹配资源,若不存在则创建,若已存在则不再重复创建。该机制适合避免重复写入患者、检验结果等具有自然唯一标识的数据。
在事务 Bundle 中,条件创建通过 Bundle.entry.request.ifNoneExist 指定,请求方法仍为 POST

输入参数

参数名称
类型
是否必填
说明
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。
请求体主要字段说明:
字段
类型
是否必填
说明
entry[].resource
Object
待创建资源内容。
entry[].request.method
String
固定为 POST
entry[].request.url
String
目标资源类型路径。
entry[].request.ifNoneExist
String
条件创建搜索表达式。省略时该条目退化为普通创建(POST),不进行条件匹配。
说明:
ifNoneExist 查询无匹配资源,则执行创建。
若查询已有匹配资源,则不重复创建。
条件表达式通常使用业务唯一标识字段,如 identifier

输出参数

接口调用成功后,通常返回 HTTP 状态码 200 OK201 Created,并在响应头中包含内容类型及请求追踪信息,响应体一般为结果 Bundle,包含各条目的执行结果及资源位置。
响应头示例说明:
参数名称
类型
说明
Status Code
Integer
成功时返回 200 OK201 Created
Content-Type
String
响应体 MIME 类型,通常为 application/fhir+json
x-request-id
String
请求追踪 ID。
响应体主要字段说明:
字段
类型
说明
resourceType
String
返回资源类型,通常为 Bundle
id
String
结果 Bundle 的唯一标识,由服务端分配。
type
String
结果 Bundle 类型,事务响应固定为 transaction-response
link
Array
分页相关链接信息,包含 relationurl 字段。
entry
Array
条目执行结果。
entry[].response.status
String
条目执行状态。
entry[].response.location
String
新建或匹配资源的位置。
entry[].response.etag
String
条目对应资源的版本标识。

示例

请求示例

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": "POST",
"url": "Patient",
"ifNoneExist": "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": "POST",
"url": "Condition",
"ifNoneExist": "Condition?identifier=http://acme.org/cond|46253"
}
}
]
}

响应示例

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

错误码

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