HL7中国FHIR Connectathon测试实施指南
2024.5.5 - release
本指南适用于HL7中国的FHIR Connectathon测试。
医疗保健领域的许多组织对表单填报功能非常感兴趣。本主题主要测试表单填报实施指南的实现,该实施指南提供了有关在医疗保健领域如何定义和完成问卷的指导,包括表单定义、填报、提取等能力。
基于FHIR R5版本。
测试系统是否支持表单填报实施指南声明的功能,包括流控制逻辑和计算
任何对表单设计或支持表单填充和使用如此收集的信息的工具感兴趣的人。
在表单设计和表单填充时,如果涉及到值域限定的话,会依赖[[术语主题]],不过这个主题需要重新设计,暂不考虑。
可以将表单填报实施指南中规定的四种角色划分为两个系统角色:
Questionnaire
和QuestionnaireResponse
的存储,以及对资源的访问端点。移动应用
、小程序
、WebApp
等形式,本主题中选用的是WebApp
形式。允许用户填写表单并提交答案。从设计角度上来说,表单提取器应是监管系统的一个后台运行模组,或者是一个独立运行、更加通用的系统。
QuestionnaireResponse
中提取数据到其它资源中。受国家疾病预防控制局委托,某主管部门开展本次调查,以了解我国新冠病毒感染情况。
本调查以匿名形式填报。
一、基本情况
1、您的性别:
○ 男
○ 女
2、您的年龄:
○ 18岁以下
○ 18-29岁
○ 30-39岁
○ 40-49岁
○ 50-59岁
○ 60-69岁
○ 70岁以上
3、您目前所在的省市:
注:可点击下拉框选择,直辖市可选择到区级。
二、健康情况
4、您疫苗接种的情况:
○ 已接种一剂次
○ 已接种两剂次
○ 已接种三剂次
○ 已接种四剂次
5、2023年3月至今,您是否再次发生过新冠病毒感染?
○ 目前检测为阳性
○ 已检测阳性已转阴
○ 有症状未检测
○ 暂未感染
主管部门工作人员登录填报系统
,进行表单设计,确认无误后保存并发布。居民登录填报系统的填报页面,如实填写调查信息,填写完毕提交内容。国家疾病预防控制局工作人员登录监管系统,
可以查看我国新冠病毒感染情况的统计信息。
目标是在表单设计器
中创建一个新表单Questionnaire
,并将其保存到表单存储库
中。
技术实现建议:
以如上的业务场景为例: 调查问卷共有 5 个条目,且分为两个组。其中有 4 个条目为单选,剩余的1个为下拉选择。其中第4个条目被标记为“导出”(observationExtract=true)。
如果表单设计器
和表单填充器
设计为同一系统,建议在登录系统时,以不同的角色身份进行登录。
设计界面中,应能够动态的增加、删减条目,最少要支持两种值类型(单选、下拉选择)。
设计期间,点击保存会设置资源的属性status=draft
, 表示目前资源处于草稿设计阶段,而点击发布会设置资源的属性stauts=active
,表示目前资源设计完成,处于激活状态。
并且发布后,不允许再修改,但是可以被废止。(这不是真实系统设计示例,只是一个模拟的近似真实示例。)
目标是在表单填充器
中填写问题答案,全部填写完成后,生成QuestionnaireResponse
,并将其保存到表单存储库
中(接收时需验证)。
技术实现建议:
如果表单设计器
和表单填充器
设计为同一系统,建议在登录系统时,以不同的角色身份进行登录。
设计界面中,单选条目应检测不可以空选或者多选。下拉选择框宜支持过滤功能。
系统应支持匿名填报。以登录用户的基本信息生成唯一UUID作为居民用户的标识。 在资源的调查对象元素中如下记录:
subject.identifier = urn::uuid::123456765432345678765434
在设计表单时,因对其中一些条目做了标记,以便提取到Observation
资源中。 使用表单提取器
进行提取。
技术实现建议:
按照正常的实现流程,填报系统
系统角色需要发送通知给监管系统
系统角色,监管系统
收到通知后,调用表单存储库
的提取接口,完成提取数据的动作。这是一个自动化的流程。
但是上述正常流程,因需要订阅通知服务
主题的支持,无法在本场景下实施。因此,本步骤暂时设计为手动触发。
监管系统
的表单提取器
界面上,提供调查报告(QuestionnaireResponse
)的列表界面,点击其中一个具体的调查报告,可以对其进行提取数据操作。
本主题测评按如下步骤进行:
工作人员以设计者(或管理员)角色进入系统,开始新建调查问卷,进入调查问卷设计界面,逐一添加条目, 内容参考上面的业务场景描述。
需要注意的是,现场测试时,调查问卷的条目数不是仅按照业务场景示例的数量,应能偶根据要求,增加或删减调查问卷条目。
触发条件
点击保存按钮触发。第一次保存,生成‘QuestionnaireResponse’资源,调用Create操作,后续保存动作调用Update操作。 点击发布按钮触发。调用Update操作。
前置条件
系统应提供不同角色用户登录的能力。 设计者角色可以看到调查问卷的设计界面,但是看不到填报页面。 填报者角色可以看到调查问卷的填报页面,但是看不到设计界面。
居民以普通用户身份登录系统,开始填报表单。
填写内容完成之后(系统检测条目不能空选或多选),点击上报,提交表单。
触发条件
点击上报按钮触发。生成‘QuestionnaireResponse’资源,调用Create操作。
前置条件
系统应提供不同角色用户登录的能力。 设计者角色可以看到调查问卷的设计界面,但是看不到填报页面。 填报者角色可以看到调查问卷的填报页面,但是看不到设计界面。
工作人员登录监管系统,进入表单提取页面,以手动方式来模拟自动数据提取功能。刷新调查问卷列表,选择指定的调查问卷条目,点击提取按钮,将调查问卷中的疫苗接种情况数据提取到Observation
资源中,并将Observation
存储。
触发条件
点击提取按钮触发。调用‘QuestionnaireResponse’资源的$extract操作。
前置条件
步骤2中居民填报的调查问卷已经提交到表单存储库
中。
要最少提供Observation
资源的Create操作和Search操作。(必选的基础模块中有硬性要求)
工作人员继续切换进入统计页面,可以查看疫苗接种的统计信息(统计数据来源是Observation资源)。
饼图,可以显示每种情况的占比、人数、以及总数。
触发条件
进入统计页面触发。
前置条件 步骤3中完成表单的手动提取动作。
仅用于测试时,监管平台前端获取统计信息.
调用地址:
GET http://[ip]:[port]/[form]/Observation/$covid19-stats
此服务请求使用GET
方法针对提取到的Observation资源来获取疫苗接种的统计信息。
请求消息体为空。
响应消息应返回针对疫苗接种的统计结果,应遵循如下条件:
200 OK
标识整个请求处理成功。Parameters
资源,记录统计信息。处理失败:
OperationOutcome
资源。具体内容参见后面的“异常处理”章节。示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<Parameters xmlns="http://hl7.org/fhir">
<!-- 参与调查问卷的总人数 -->
<parameter>
<name value="total"/>
<value value="100000" />
</parameter>
<!-- 选择选项1:接种一剂次 的人数 -->
<parameter>
<name value="option-1"/>
<value value="10000" />
</parameter>
<!-- 选择选项2:接种两剂次 的人数 -->
<parameter>
<name value="option-2"/>
<value value="40000" />
</parameter>
<!-- 选择选项3:接种三剂次 的人数 -->
<parameter>
<name value="option-3"/>
<value value="40000" />
</parameter>
<!-- 选择选项4:接种四剂次 的人数 -->
<parameter>
<name value="option-4"/>
<value value="10000" />
</parameter>
</Parameters>
表单存储器:
Questionnaire
资源的Create、Update、Delete、Search操作,满足表单设计器
的需求。QuestionnaireResponse
资源的Create、Search、Operation($extract)操作,满足表单填充器
和表单提取器
的需求。表单设计器:
表单存储器
,以符合FHIR标准的消息与表单存储器
通信。表单设计器
和表单存储器
交互的调试能力,可以直接查看服务互操作时HTTP的调用过程。例如:浏览器提供的「开发者工具」。表单填充器:
表单存储器
,以符合FHIR标准的消息与表单存储器
通信。表单填充器
和表单存储器
交互的调试能力,可以直接查看服务互操作时HTTP的调用过程。例如:浏览器提供的「开发者工具」。表单提取器:
Observation
资源的Create操作,满足数据提取后存储的功能。Observation
资源的Search操作,应能根据code
进行过滤,满足疫苗接种的统计信息展示功能。Observation
资源100条示例。Observation
资源的提取功能。表单提取器
和表单存储器
交互的调试能力,可以直接查看服务互操作时HTTP的调用过程。例如:浏览器提供的「开发者工具」。在测评环境中没有对OAuth
或TLS
的要求(尽管在生产环境中需要此类技术)。