接口描述
用于在 FHIR 数据服务中创建新的资源实例。该接口遵循标准 FHIR
Create 操作,客户端通过 HTTP POST 方法向指定资源类型端点提交符合 FHIR 规范的资源内容,服务端完成资源落库后返回新建资源及其元数据。本示例展示了创建
Patient 资源的调用方式。输入参数
参数名称 | 类型 | 是否必填 | 说明 |
HTTP Method | String | 是 | 固定为 POST |
URL | String | 是 | 资源创建地址,格式为 [baseUrl]/[resourceType] |
Authorization | String | 是 | 身份认证令牌,格式为 Bearer <AccessToken>,AccessToken 通过 调用方式 中的 GetAccessToken 接口获取(实例控制台场景可通过 GetWebAccessToken 接口获取) |
Content-Type | String | 否 | 请求体 MIME 类型,写入类请求通常为 application/fhir+json;未指定时服务端将根据请求内容自动推断 |
Request Body | JSON Object | 是 | 待创建的 FHIR 资源内容,需符合对应资源类型的 FHIR 结构定义 |
请求 URL 示例:
https://HOSTNAME/INSTANCE_ID/fhir/Patient
请求体示例字段说明:
字段 | 类型 | 是否必填 | 说明 |
resourceType | String | 是 | FHIR 资源类型,本示例为 Patient。当前实例实际支持的全部资源类型,请通过 GET /INSTANCE_ID/fhir/metadata 调用 CapabilityStatement 接口,在返回的 rest[].resource[].type 中查看(实例支持的资源类型可在创建时通过 supported_resource_types 配置裁剪,不同实例可能不同)。各资源类型的字段定义可参见 FHIR Resource Types |
identifier | Array | 否 | 患者标识信息 |
identifier[].system | String | 否 | 标识体系,如 urn:oid:1.2.36.146.595.217.0.1 |
identifier[].value | String | 否 | 标识值,如 12345 |
name | Array | 否 | 姓名信息 |
name[].family | String | 否 | 姓 |
name[].given | Array | 否 | 名 |
gender | String | 否 | |
birthDate | String | 否 | 出生日期,格式为 YYYY-MM-DD |
输出参数
接口调用成功后,返回 HTTP 状态码
201 Created,并在响应头中包含新创建资源的位置及版本信息,响应体中返回创建后的完整资源内容。部分实例可能配置为创建时不返回响应体,此时可通过响应头中的 Location 地址调用 Read 接口获取完整资源内容。响应头示例说明:
参数名称 | 类型 | 说明 |
Status Code | Integer | 成功时返回 201 Created |
ETag | String | 资源版本标识,例如 W/"1" |
Location | String | 新建资源地址及历史版本地址 |
Content-Location | String | 当前资源版本地址,格式为 [baseUrl]/[resourceType]/[id]/_history/[versionId] |
x-request-id | String | 请求追踪 ID |
响应体主要字段说明:
字段 | 类型 | 说明 |
resourceType | String | 资源类型 |
id | String | 新创建资源的唯一 ID |
meta.versionId | String | 当前资源版本号 |
meta.lastUpdated | String | 资源最后更新时间 |
meta.source | String | |
meta.profile | Array | 资源遵循的 FHIR StructureDefinition profile 列表 |
identifier | Array | 资源标识信息 |
name | Array | 资源姓名信息 |
gender | String | 性别 |
birthDate | String | 出生日期 |
说明:
text 为 FHIR 资源的 Narrative(人类可读摘要)字段,包含 status 和 div 两个子字段。服务端默认不自动生成 Narrative,响应体中通常不包含 text 字段;仅当客户端在请求体中主动提供 text 字段时,服务端会将其保留并返回。text.status 的合法取值为 generated(由系统生成)、extensions(仅包含扩展信息)和 additional(包含额外内容),详情请参见 FHIR NarrativeStatus。示例
请求示例
POST /INSTANCE_ID/fhir/Patient HTTP/1.1Host: HOSTNAMEAuthorization: Bearer YOUR_ACCESS_TOKENContent-Type: application/fhir+json
{"resourceType": "Patient","identifier": [{"system": "urn:oid:1.2.36.146.595.217.0.1","value": "12345"}],"name": [{"family": "Chalmers","given": ["Peter","James"]}],"gender": "male","birthDate": "1974-12-25"}
响应示例
HTTP/1.1 201 CreatedETag: W/"1"Location: https://HOSTNAME/INSTANCE_ID/fhir/Patient/199963/_history/1Content-Location: https://HOSTNAME/INSTANCE_ID/fhir/Patient/199963/_history/1x-request-id: ENqsVXqc5SeqLOfU
{"resourceType": "Patient","id": "199963","meta": {"versionId": "1","lastUpdated": "2022-10-10T07:07:33.086-04:00","source": "#oYcdS7hlfUBnsSlX","profile": ["http://hl7.org/fhir/StructureDefinition/Patient"]},"identifier": [{"system": "urn:oid:1.2.36.146.595.217.0.1","value": "12345"}],"name": [{"family": "Chalmers","given": ["Peter","James"]}],"gender": "male","birthDate": "1974-12-25"}
错误码
错误码 | 说明 |
400 Bad Request | 请求参数错误,或提交的资源内容不符合 JSON/FHIR 结构要求 |
401 Unauthorized | 未认证,缺少有效身份凭证 |
403 Forbidden | 已认证但无创建该资源的权限 |
404 Not Found | 目标资源类型端点不存在 |
415 Unsupported Media Type | Content-Type 不受支持,例如未使用 application/fhir+json |
422 Unprocessable Entity | 资源内容通过语法校验但未通过业务或 FHIR 规则校验 |
500 Internal Server Error | 服务端内部处理异常 |