HL7中国表单填报实施指南
2025.03.11 - release

HL7中国表单填报实施指南 - Local Development build (v2025.03.11) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

交易

在本交互规范的当前版本定义了如下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>