You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无$events操作的FHIR订阅错误恢复标准方案问询

FHIR主题式订阅错误恢复的标准方案探讨

针对主题式订阅模型下的错误恢复需求(排除$events操作),目前FHIR规范并未定义专门的标准操作,但可以通过以下更贴合FHIR设计规范的方式实现,替代自定义命名查询:

1. 为Subscription资源添加恢复查询扩展

服务器可以在Subscription资源中定义自定义扩展,直接暴露用于错误恢复的查询规则或入口,让客户端通过读取订阅资源本身获取恢复方式,无需硬编码命名查询。

示例扩展结构:

{
  "resourceType": "Subscription",
  "id": "123",
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/subscription-recovery-search",
      "valueString": "?_query=subscriptionRecovery&subscriptionId=123&_since="
    }
  ],
  // 其他订阅字段...
}

客户端只需读取该扩展值,拼接上lastNotified时间参数即可发起恢复查询,这种方式符合FHIR扩展的标准模式,具备可发现性。

2. 复用FHIR $export批量导出操作

如果服务器支持FHIR的$export操作(属于标准批量操作),客户端可以结合_since参数,请求导出指定时间范围内符合订阅主题条件的资源。服务器内部将订阅主题的封装逻辑映射到导出过滤规则,客户端无需知晓主题内部的查询细节。

示例请求:

GET /Patient/$export?_since=2024-01-01T00:00:00Z&subscription=123 HTTP/1.1
Accept: application/fhir+json
Prefer: respond-async

这种方式复用FHIR现有标准操作,无需自定义新的查询或操作类型,兼容性更好。

3. 在SubscriptionTopic中定义恢复逻辑扩展

对于基于SubscriptionTopic的订阅模型,可以在主题资源中添加扩展,明确该主题对应的恢复查询规则,比如指定对应的命名查询名称、搜索参数组合等。客户端通过查询SubscriptionTopic资源,获取恢复所需的查询模板。

示例扩展:

{
  "resourceType": "SubscriptionTopic",
  "id": "patient-updates",
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/topic-recovery-query",
      "valueCode": "subscriptionRecovery"
    }
  ],
  // 其他主题字段...
}

客户端据此调用对应的命名查询,同时携带subscriptionId和_since参数,这种方式将恢复逻辑与订阅主题绑定,更符合主题式模型的设计理念。

关于自定义命名查询的补充

你提到的命名查询方案(http://fhir.example.com/?_query=subscriptionRecovery&subscriptionId=123&_since=:lastNotified)是当前实践中常用的自定义实现方式,但不属于FHIR标准操作。如果选择这种方式,建议通过上述扩展方式将命名查询的入口暴露给客户端,而非让客户端硬编码查询路径,提升可维护性和规范性。

目前FHIR规范尚未针对主题式订阅的错误恢复定义专门的标准操作,因此基于FHIR扩展机制的实现是当前最贴近标准的解决方案。

内容的提问来源于stack exchange,提问作者Zoltan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:23:17