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
发布订阅框架是用于不同组件或服务之间异步通信的一种架构设计模式。消息的发送者不会将消息直接发送给特定的接收者,而是通过通知代理将消息广播出去,让订阅该消息主题的订阅者消费到。发布订阅模式允许在系统的不同组件之间传递消息,而这些组件之间无需知道彼此的身份(即它们是解耦的),使它更加灵活和可扩展。
基于主题的订阅使订阅者能够在事件发生时接收通知,是服务器驱动的工作流,并使客户端避免轮询数据更改。
测试系统是否支持[[发布订阅框架实施指南]]声明的功能,包括:
SubscriptionTopic
资源的创建。
SubscriptionTopic
的读取、查询和删除`。Subscription
资源的创建、查询和取消操作。$status
操作SubscriptionTopic
资源Subscription
实例$status
操作来检查/验证订阅的状态Subscription
的开发人员。可以将发布订阅框架实施指南中规定的三种角色划分为三个系统角色:
Subscription
的工具。Subscription
、SubscriptionStatus
和SubscriptionTopic
的存储以及对资源的访问端点。本主题依赖FHIR Connectathon Track Form主题的系统角色充当通知的发布者和接收者。
只有报名参加FHIR Connectathon Track Form主题或者已经测评通过该主题的厂商才能报名当前主题。另外需要注意的是,需要重新根据FHIR Connectathon Track Form进行功能完善,以支持发布订阅框架实施指南的发布和通知要求。
受国家疾病预防控制局委托,某主管部门开展本次调查,以了解我国新冠病毒感染情况。
SubscriptionTopic
注册到通知代理服务器上。SubscriptionTopic
资源。订阅代理服务
角色的系统中,应实现SubscriptionTopic
资源的增删改查等方法。发布者
角色的系统中,可以设计一个启用通知
的系统配置项。
订阅代理服务
的端点,以与订阅代理服务
进行交互。
发布者
存在多个订阅主题,可以选择需要注册的订阅主题。订阅代理服务
上是否存在要注册的订阅主题(通过url元素判定,而不是name元素)SubscriptionTopic
资源注册到订阅代理服务
上。SubscriptionTopic
创建 Subscription
。订阅代理服务
角色的系统中,应实现Subscription
资源的增删改查等方法。订阅者
角色的系统中,应提供订阅管理的菜单项。
发布者
向配置项指定的订阅代理服务
端点推送通知消息。发布者
角色的系统中,应实现:
通知接收者
。Subscription
已经激活,且发布者
已经推送了事件通知。订阅代理服务
角色的系统中,其订阅执行环境应实现:
发布者
推送的通知后,应能根据通知的主题以及更详细的过滤条件,将通知转发给通知接收者
。发布者
推送的事件通知,避免因系统崩溃导致的事件通知丢失。订阅端
从通知代理服务
上获取指定Subscription
的SubscriptionStatus
。订阅代理服务
角色的系统中,应实现:
Subscription
被激活后,会在运行时的上下文中维护当前订阅的状态,该状态中的值通常维护在内存中。订阅者
角色的系统中的订阅管理页面中:
error
时,应提供详细的错误信息本主题测评按如下步骤进行:
工作人员以管理员系统角色进入表单填报系统
的前端管理界面,跳转到系统配置管理页面,勾选启用通知
的系统配置项,并填写通知代理服务端点地址。
点击应用
或保存
按钮时触发。
订阅代理服务
应提供SubscriptionTopic
资源的Create和Search操作,满足发布者
的调用需求。发布者
应提供启用通知
的系统配置项,且允许输入订阅代理服务
的端点地址。发布者
应首先调用订阅代理服务
的SubscriptionTopic
资源的Search
操作,根据url
参数查看该主题是否已注册。发布者
应调用订阅代理服务
的SubscriptionTopic
资源的Create
操作,注册订阅主题。通知代理服务
上存在该主题且应处于激活状态。应包括 R5 约定的所有必要字段。订阅代理服务
和发布者
交互的调试能力,可以直接查看服务互操作时HTTP的调用过程。例如:浏览器提供的「开发者工具」。工作人员以管理员系统角色进行订阅服务系统
的前端管理界面,跳转到订阅管理页面,在订阅列表页面上点击新增订阅
按钮,跳转到订阅创建页面。
在填写内容时:
表单填报就绪
;Rest-Hook
,并填写通知的端点地址;(本次测评仅测试该形式)id-only
;完成之后(系统检测所有必选项是否填充),点击保存
按钮,完成订阅的创建过程。
点击保存按钮触发。生成Subscription
资源,调用Create操作。
订阅代理服务
应提供Subscription
资源的Create
、Update
、Delete
、Read
、Search
等操作,满足订阅者
的调用需求。订阅者
应调用订阅代理服务
的Subscription
资源的Create
操作,创建订阅。订阅者
应调用订阅代理服务
的Subscription
资源的Update
、Delete
、Read
、Search
操作,管理订阅。订阅代理服务
上订阅存在且处于活动状态。它包括 R5 中的所有必要字段。订阅代理服务
和订阅者
交互的调试能力,可以直接查看服务互操作时HTTP的调用过程。例如:浏览器提供的「开发者工具」。工作人员以填报者角色进入表单填报系统
的前端界面,进行新冠病毒感染情况的调查报告填写。
完成之后(系统检测所有必选项是否填充),点击保存
按钮,完成调查报告的存储。
表单填报系统存储‘QuestionnaireResponse’资源后触发。
订阅代理服务
应提供发布者
的通知接收服务,满足发布者
的调用需求。发布者
应调用订阅代理服务
的通知接收服务,推送通知消息。订阅代理服务
接收到发布者
推送的通知消息。订阅代理服务
和发布者
交互的调试能力,可以直接查看服务互操作时HTTP的调用过程。例如:浏览器提供的「开发者工具」。工作人员以监管者角色进入表单监管系统
的前端界面,可以查看疫苗接种的统计信息。以饼图显示,可以显示每种情况的占比、人数、以及总数。
订阅服务系统
接收到表单填报系统
发布的通知消息后触发。
通知接收者
应提供基于Rest的通知接收端点,满足订阅服务系统
的调用需求。订阅服务系统
应调用通知接收者
的通知接收端点,转发通知消息。通知接收者
接收到订阅服务系统
推送的通知消息。订阅代理服务
和通知接收者
交互的调试能力,可以直接查看服务互操作时HTTP的调用过程。例如:浏览器提供的「开发者工具」。工作人员以管理员系统角色进入订阅服务系统
的前端管理界面,跳转到订阅管理页面,在订阅列表中选择本次测评创建的订阅,查看该订阅的运行状态。
点击订阅列表中指定订阅,跳转到订阅状态展示页面时触发。
订阅代理服务
应提供Subscription
资源的$status
操作,满足订阅者
的调用需求。订阅者
应提供订阅状态展示页面,且应在订阅列表中点击某订阅项后跳转到该页面。订阅者
应调用订阅代理服务
的Subscription
资源的$status
操作,来获取当前订阅的运行状态。订阅代理服务
和订阅者
交互的调试能力,可以直接查看服务互操作时HTTP的调用过程。例如:浏览器提供的「开发者工具」。在测评环境中没有对OAuth
或TLS
的要求(尽管在生产环境中需要此类技术)。