HL7中国发布订阅框架实施指南
2025.03.10 - release

HL7中国发布订阅框架实施指南 - Local Development build (v2025.03.10) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

工作流

不同的通道类型,会导致工作流程略有不同。本实施指南目前给出基于Rest-Hook的工作流程:

工作流

注册订阅主题

订阅主题中包含了事件的处理逻辑。是发起订阅的先决条件。

一般来说,通知代理的实现系统会预置一些规范的订阅主题。如果发布he者在这些预置的订阅主题中未发现需要的,则要向通知代理注册自己使用的订阅主题。

向通知代理注册订阅主题是订阅主流程的可选前置条件。

一般来说,一些规范的订阅主题都可以在FHIR官方的注册中心找到。也强烈建议一些系统的设计者应尽可能的重用现有订阅主题,如果需要新建订阅主题,也要尽可能向FHIR官方的注册中心提交新主题以获得更好的兼容性。

创建订阅

当订阅者期望获得某个事件相关资源,或者某个资源变化时希望得到通知,则可以创建一个订阅来关注事件或者资源的变化。

订阅者在订阅时,可以确定的主要内容有:

  • 针对特定的资源,设定更加细化的过滤参数,筛选掉不敢兴趣的内容,可以仅得到关注的内容
  • 选择通道类型
  • 选择通知的内容形式,像:传输资源的全部内容,或者仅传输资源的Id

通知

系统运行引擎在启用一个订阅时,首先要向通知接收者的服务端点发送一个握手通知,探测一下对方是否在线,握手成功后,将该订阅标记为激活(active)状态,否则标记该订阅为异常(error)状态。

在一个订阅激活运行期间,由发布者推送事件通知触发,引擎按照订阅的过滤规则筛选符合条件的事件通知,并将该通知消息分发给适当的通知接收者。引擎可以按照设定的规则批量分发通知消息,例如,在订阅时有配置参数用于设定通知时每个批次可以同时转发多少通知消息。如果,实时性要求高,则要调低该配置参数,否则反之。

在一个订阅激活运行期间,服务代理按照设定的时间间隔定期发送心跳通知,以供双方确认对方都处于正常运行状态。

发布

在发布者所属的系统中,由事件发生或者资源发生变化触发,向通知代理发送事件消息。

发布者发送的事件消息从结构定义上与通知发送的事件消息保持一致。但是与通知消息不同的是,每个通知消息中仅记录一个事件。且发布者对订阅一无所知,所以SubscriptionStatus资源中的subscription元素(这是一个必选元素)不适用。

获取订阅状态

通常情况下,在通知消息中都包含了订阅的运行状态。但是,仍然可以以主动的方式来获取指定订阅的运行状态。