HL7中国FHIR Connectathon测试实施指南
2024.5.5 - release

本指南适用于HL7中国的FHIR Connectathon测试。

表单填报服务规范

概述

医疗保健领域的许多组织对表单填报功能非常感兴趣。本实施指南提供了有关在医疗保健领域如何定义和完成问卷的指导,包括表单定义、填报、提取等能力。

表单填报服务交互规范定义了一个基于FHIR规范的有关问卷调查的交互接口。

在交互规范中定义的交易参考了HL7的SDC规范。

本规范基于FHIR R5版本进行设计。

角色与交易

角色

在本文档中包括如下角色:

  • 表单存储库: 提供对资源QuestionnaireQuestionnaireResponse的存储
  • 表单设计器: 用于生成和编辑表单定义的工具
  • 表单填充器: 显示QuestionnaireQuestionnaireResponse的用户界面,允许用户填写表单并提交答案。
  • 表单提取器: 从QuestionnaireResponse中提取数据到其它资源中。

角色与交易

下图描述了角色以及角色之间的交易服务:

这里有张用例图

交易如下表所示:

角色 标识 交易描述 可选性
表单存储库 IST-FRM-001 提交调查问卷 R
表单存储库 IST-FRM-002 更新调查问卷 R
表单存储库 IST-FRM-003 查询调查问卷 R
表单存储库 IST-FRM-004 读取调查问卷 R
表单存储库 IST-FRM-005 提交调查问卷应答 R
表单存储库 IST-FRM-006 查询调查问卷应答 R
表单存储库 IST-FRM-007 提取观察数据 R
表单设计器 IST-FRM-001 提交调查问卷 R
表单设计器 IST-FRM-002 更新调查问卷 R
表单设计器 IST-FRM-003 查询调查问卷 R
表单设计器 IST-FRM-004 读取调查问卷 R
表单填充器 IST-FRM-003 查询调查问卷 R
表单填充器 IST-FRM-004 读取调查问卷 R
表单填充器 IST-FRM-005 提交调查问卷应答 R
表单提取器 IST-FRM-006 查询调查问卷应答 R
表单提取器 IST-FRM-007 提取观察数据 R

交易

在本交互规范的当前版本定义了如下7个交易:

提交调查问卷(IST-FRM-001)

本交易由表单设计器角色和表单存储库角色使用。提交问卷调查(IST-FRM-001)交易用于向表单存储库角色提交问卷调查的内容。

调用地址:

POST http://[ip]:[port]/[form]/Questionnaire
请求消息

此消息使用POST方法将问卷调查的内容作为Questionnaire资源进行传输。

请求消息体的Content-Type应为application/fhir+jsonapplication/fhir+xml

消息体定义参见问卷调查的结构说明

这里提供了一个参考示例,具体格式和内容参见新冠病毒感染状况问卷调查资源示例页面

响应消息

响应消息反馈了提交调查问卷请求的处理结果,应遵循如下约束条件:

  • 使用状态码201 Create标识整个请求处理成功。
  • 无响应消息体。 处理失败:
  • 使用状态码400500标识整个请求处理失败;
  • 如果执行失败,则应返回OperationOutcome资源。具体内容参见后面的异常处理章节。

更新调查问卷(IST-FRM-002)

本交易由表单设计器角色和表单存储库角色使用。更新调查问卷(IST-FRM-002)交易用于向表单存储库角色发起更新指定调查问卷的请求。

调用地址:

PUT http://[ip]:[port]/[form]/Questionnaire/[id]
请求消息

此消息使用PUT方法将问卷调查的内容作为Questionnaire资源进行传输。

请求消息体的Content-Type应为application/fhir+jsonapplication/fhir+xml

消息体定义参见调查问卷的结构说明

这里提供了一个参考示例,具体格式和内容参见新冠病毒感染状况问卷调查资源示例页面

响应消息

响应消息应返回符合查询条件的资源结果集,应遵循如下约束条件:

  • 使用状态码200 OK标识整个请求处理成功。
  • 无响应消息体。 处理失败:
  • 使用状态码400500标识整个请求处理失败;
  • 如果执行失败,则应返回OperationOutcome资源。具体内容参见后面的异常处理章节。

查询调查问卷(IST-FRM-003)

本交易由表单设计器表单填充器角色和表单存储库角色使用。查询问卷调查(IST-FRM-003)交易用于向表单存储库角色进行有关调查问卷的查询。

调用地址:

GET http://[ip]:[port]/[form]/Questionnaire?[param=value]
请求消息

查询参数表示为一系列的name-value对,这些name-value对表示查询的筛选器,在本规范中需支持:

Parameter Type Description Element
status token 调查问卷的状态 status
title string 调查问卷的标题 title
date date 调查问卷的发布时间 date
响应消息

响应消息应返回符合查询条件的资源结果集,应遵循如下约束条件:

  • 使用状态码200 OK标识整个请求处理成功。
  • 返回Bundle资源,其中包含零到多个Questionnaire资源。 处理失败:
  • 如果执行失败,则应返回OperationOutcome资源。具体内容参见后面的“异常处理”章节。

读取问卷调查(IST-FRM-004)

本交易由表单设计器表单填充器角色和表单存储库角色使用。读取问卷调查(IST-FRM-004)交易用于向表单存储库角色发起获取指定调查问卷的请求。

调用地址:

GET http://[ip]:[port]/[form]/Questionnaire/[id]
请求消息

此服务请求使用GET方法针对指定的调查问卷进行获取操作。

请求消息体为空。

响应消息

正常情况下,响应消息应返回指定的调查问卷,应遵循如下条件:

  • 使用状态码200 OK标请求处理成功。
  • 返回消息体应为Questionnaire资源。 如果处理失败:
  • 则应返回OperationOutcome资源。具体内容参见后面的“异常处理”章节。

提交问卷调查应答(IST-FRM-005)

本交易由表单填充器角色和表单存储库角色使用。提交调查问卷应答(IST-FRM-005)交易用于向表单存储库角色提交填报完毕的调查问卷应答。

调用地址:

POST http://[ip]:[port]/[form]/QuestionnaireResponse
请求消息

此消息使用POST方法将调查问卷应答的内容作为QuestionnaireResponse资源进行传输。

请求消息体的Content-Type应为application/fhir+jsonapplication/fhir+xml

消息体内容应为QuestionnaireResponse资源,定义参见调查问卷应答的结构说明

这里提供了一个参考示例,与前面的新冠病毒感染状况调查问卷相呼应。参见新冠病毒感染状况调查问卷应答资源示例页面

响应消息

响应消息反馈了提交调查问卷应答请求的处理结果,应遵循如下约束条件:

  • 使用状态码201 Create标识请求处理成功。
  • 无响应消息体。 处理失败:
  • 使用状态码400500标识整个请求处理失败;
  • 如果执行失败,则应返回OperationOutcome资源。具体内容参见后面的异常处理章节。

查询调查问卷应答(IST-FRM-006)

本交易由表单提取器角色和表单存储库角色使用。查询调查问卷应答(IST-FRM-006)交易用于向表单存储库角色进行有关调查问卷应答的查询。

调用地址:

GET http://[ip]:[port]/[form]/QuestionnaireResponse
请求消息

此服务请求使用GET方法进行查询操作。

请求消息体为空。

查询参数表示为一系列的name-value对,这些name-value对表示查询的筛选器,在本规范中最少需支持:

Parameter Type Description Element
questionnaire token 调查问卷 questionnaire
status token 状态 type
authored date 调查问卷填写时间 date
响应消息

响应消息应返回符合查询条件的资源结果集,应遵循如下约束条件:

  • 使用状态码200 OK标识整个请求处理成功。
  • 返回Bundle资源,其中包含零到多个QuestionnaireResponse资源。 处理失败:
  • 如果执行失败,则应返回OperationOutcome资源。具体内容参见后面的“异常处理”章节。

提取观察数据(IST-FRM-007)

本交易由表单提取器角色和表单存储库角色使用。提取观察数据(IST-FRM-007)交易用于向表单存储库角色发起提取数据的请求。

此操作为满足业务需求而自定义的操作。操作的定义参见问卷调查提取数据的结构说明

调用地址:

GET http://[ip]:[port]/[form]/QuestionnaireResponse/[id]/$extract
请求消息

此服务请求使用GET方法针对指定的调查问卷应答进行数据提取操作。

请求消息体为空。

响应消息

响应消息应按照调查问卷条目中提取标记返回资源结果,应遵循如下条件:

  • 使用状态码200 OK标识整个请求处理成功。
  • 如果有多个条目被标记为提取,则返回Bundle资源,其中包含多个Observation资源。
  • 如果仅有一个条目被标记为提取,则直接返回Observation资源。 处理失败:
  • 如果执行失败,则应返回OperationOutcome资源。具体内容参见后面的“异常处理”章节。

异常处理

在进行服务交易时如果出现异常,服务端会采用统一的方式进行异常信息的反馈,也就是返回OperationOutcome资源,由该资源记录异常处理信息。

下表给出了表单填报服务中预定义的异常编码取值:

Code Description
QueryParamError 查询参数不正确
MissExtractFlag 数据提取时在调查问卷定义中不存在数据提取标记
FormError 其它的、不明确的处理错误

异常消息示例:

<OperationOutcome xmlns="http://hl7.org/fhir">
  <id value="OperationOutcomeExample01"/>
  <issue>
    <severity value="error"/>
    <code value="process"/>
    <details>
      <coding>
        <system value="http://hl7.org.cn/fhir/CodeSystem/operationoutcome-form-code"/>
        <code value="QueryParamError"/>
        <display value="查询参数不正确"/>
      </coding>
    </details>
    <diagnostics value="不支持的查询参数:[name]"/>
  </issue>
</OperationOutcome>