接口描述
用于基于日期或时间字段对资源进行条件检索。客户端可通过 HTTP
GET 方法,在 URL 中传入日期类搜索参数,以筛选满足指定日期、年份、时间范围或更新时间条件的资源记录。本示例展示了常见的日期时间搜索场景,包括:
按指定生日检索患者。
按指定年份检索患者。
按日期范围检索就诊记录。
按资源最后更新时间检索数据。
输入参数
参数名称 | 类型 | 是否必填 | 说明 |
HTTP Method | String | 是 | 固定为 GET。 |
URL | String | 是 | 搜索地址,格式为 [baseUrl]/[resourceType]?[searchParams]。 |
Authorization | String | 是 | |
Accept | String | 否 | 响应格式,建议使用 application/fhir+json。 |
birthdate | String | 否 | 按出生日期检索,支持完整日期(如 1974-02-13)或部分日期(如仅传年份 1974)。 |
date | String | 否 | 按日期字段检索,可与 ge、le 等比较前缀组合。 |
_lastUpdated | String | 否 | 按资源最后更新时间检索,取值通常为 ISO 8601 日期时间。 |
subject | String | 否 | 引用搜索参数,可与日期参数组合使用,如 Patient/{id}。 |
说明:
日期参数支持完整日期,也支持部分日期,例如仅传年份。
日期范围通常通过多个带比较前缀的同名参数组合实现。
_lastUpdated 可用于任意资源类型,筛选在指定时间点之后或之前更新的数据。常见比较前缀包括
ge、gt、le、lt、eq 等。输出参数
接口调用成功后,通常返回 HTTP 状态码
200 OK,响应体一般为 Bundle 资源,其中包含符合条件的资源列表及分页信息。响应体主要字段说明:
字段 | 类型 | 说明 |
resourceType | String | 返回资源类型,通常为 Bundle。 |
id | String | Bundle 资源的唯一 ID,通常为 UUID。 |
meta | Object | Bundle 元数据,包含 lastUpdated 等字段。 |
meta.lastUpdated | String | Bundle 生成时间。 |
type | String | Bundle 类型,搜索场景通常为 searchset。 |
total | Integer | 命中的总记录数。仅在请求中传入 _total=accurate 时返回;未传该参数时可能不包含此字段。 |
link | Array | 分页链接信息,包含 relation 与 url。 |
link[].relation | String | 链接关系类型,如 self、next、previous。 |
link[].url | String | 对应分页的完整请求地址。 |
entry | Array | 搜索结果列表。 |
entry[].fullUrl | String | 资源的完整访问地址。 |
entry[].resource | Object | 匹配到的资源内容。 |
entry[].resource.id | String | 资源的唯一 ID。 |
entry[].resource.meta | Object | 资源元数据,包含 versionId、lastUpdated 等。 |
entry[].search.mode | String | 搜索命中模式,如 match。 |
说明:
total 字段默认可能不返回。若需获取命中总数,请在请求参数中传入 _total=accurate;此时服务端会统计并返回 total。未传入 _total 参数时,响应体中可能不包含 total 字段。示例
请求示例
示例一:查询生日为指定日期的患者。
GET /INSTANCE_ID/fhir/Patient?birthdate=1974-02-13 HTTP/1.1Host: HOSTNAMEAuthorization: Bearer <AccessToken>Accept: application/fhir+json
示例二:查询出生于指定年份的患者。
GET /INSTANCE_ID/fhir/Patient?birthdate=1974 HTTP/1.1Host: HOSTNAMEAuthorization: Bearer <AccessToken>Accept: application/fhir+json
示例三:查询指定日期范围内的就诊记录。
GET /INSTANCE_ID/fhir/Encounter?subject=Patient/ef2c19c4-ea06-473d-8781-368e4441c5c0&date=ge2009-06-01&date=le2009-07-31 HTTP/1.1Host: HOSTNAMEAuthorization: Bearer <AccessToken>Accept: application/fhir+json
示例四:查询在指定时间点之后更新的患者资源。
GET /INSTANCE_ID/fhir/Patient?_lastUpdated=ge2017-01-01T00:00:00Z HTTP/1.1Host: HOSTNAMEAuthorization: Bearer <AccessToken>Accept: application/fhir+json
响应示例
{"resourceType": "Bundle","id": "180f7368-790e-4f2b-b24a-550eb027d747","meta": {"lastUpdated": "2022-10-10T07:07:33.086-04:00"},"type": "searchset","link": [{"relation": "self","url": "https://HOSTNAME/INSTANCE_ID/fhir/Patient?birthdate=1974-02-13"}],"entry": [{"fullUrl": "https://HOSTNAME/INSTANCE_ID/fhir/Patient/199963","resource": {"resourceType": "Patient","id": "199963","meta": {"versionId": "1","lastUpdated": "2022-10-10T07:07:33.086-04:00"},"birthDate": "1974-02-13"},"search": {"mode": "match"}}]}
错误码
错误码 | 说明 |
400 Bad Request | 日期参数格式错误,或比较前缀使用不合法 |
401 Unauthorized | 未认证,缺少有效身份凭证 |
403 Forbidden | 已认证但无搜索该资源的权限 |
404 Not Found | 指定资源类型不存在 |
422 Unprocessable Entity | 搜索参数语法正确,但未通过业务或规则校验 |
500 Internal Server Error | 服务端内部处理异常 |