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

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

OperationDefinition: QuestionnaireResponse-extract

介绍

该操作是为了从答卷中提取数据所设计的提取操作定义。

从业务需求来说,表单填报完成后,需要对答卷中问题答案进行汇总、统计、分析。

本操作就是将问卷中被标记为“提取”的项目进行资源转换,转换为更利于统计的观察资源(Observation)。

URL: [base]/QuestionnaireResponse/[id]/$extract

Parameters

UseNameScopeCardinalityTypeBindingDocumentation
OUTreturn0..1Resource

提取到的资源. 可能是一个独立的资源,也可以是一个含有多个资源的Bundle资源(transaction)。

OUTissues0..1OperationOutcome

出现错误时返回的异常信息。

示例

请求

通过使用POST方法来发起从答卷中提取观察数据的能力:

POST http://[ip]:[port]/[form]/QuestionnaireResponse/[id]/$extract
[other headers]

无消息体。

响应

如果在问卷中标记为提取的项的数量大于1,则应返回包含多个ObservationBundle资源,如果数量仅有1个,则直接返回Observation资源即可。

如下示例中的观察数据的形式并不是固定这样的,仅是示例而已。要根据你的业务需要,确定需要哪些元素。

提取项数量大于1:

HTTP/1.1 200 OK
[other headers]

<?xml version="1.0" encoding="UTF-8"?>
<Bundle xmlns="http://hl7.org/fhir">
  <type value="collection"/>   
  <total value="2"/> 
  <entry> 
    <fullUrl value="urn:uuid:2866af9c-137d-4458-a8a9-eeeec0ce5583"/> 
    <resource> 
      <Observation>
        <status value="final"/> 
        <code> 
          <text value="item-04"/> 
        </code>
        <subject> 
          <identifier>
            <system value="urn:ietf:rfc:3986"/>
            <value value="urn::uuid::123456765432345678765434"/>
          </identifier>
        </subject> 
        <issued value="2013-04-03T15:30:10+01:00"/> 
        <valueInteger value="2"/> 
      </Observation>
    </resource> 
  </entry>
  <entry> 
    <fullUrl value="urn:uuid:2866af9c-137d-4458-a8a9-eeeec0ce5584"/> 
    <resource> 
      <Observation>
        <status value="final"/> 
        <code> 
          <text value="item-05"/> 
        </code>
        <subject> 
          <identifier>
            <system value="urn:ietf:rfc:3986"/>
            <value value="urn::uuid::123456765432345678765434"/>
          </identifier>
        </subject> 
        <issued value="2013-04-03T15:30:10+01:00"/> 
        <valueInteger value="1"/> 
      </Observation>
    </resource> 
  </entry>  
</Bundle>

提取项数量等于1:

HTTP/1.1 200 OK
[other headers]

<?xml version="1.0" encoding="UTF-8"?>
<Observation xmlns="http://hl7.org/fhir">
  <status value="final"/> 
  <code> 
    <text value="item-04"/> 
  </code>
  <subject> 
    <identifier>
      <system value="urn:ietf:rfc:3986"/>
      <value value="urn::uuid::123456765432345678765434"/>
    </identifier>
  </subject> 
  <issued value="2013-04-03T15:30:10+01:00"/> 
  <valueInteger value="2"/> 
</Observation>

如果在提取过程中发生错误,则应抛出异常:

HTTP/1.1 500 Internal Server Error
[other headers]

<?xml version="1.0" encoding="UTF-8"?>
<OperationOutcome xmlns="http://hl7.org/fhir">
  <id value="allok"/>
  <issue>
    <severity value="error"/>
    <code value="processing"/>
    <details>
      <coding>
        <system value="http://hl7.org.cn/fhir/CodeSystem/operationoutcome-form-code"/>
        <code value="FormError"/>
        <display value="其它的、不明确的处理错误"/>
      </coding>
    </details>
    <diagnostics value="在提取过程中出现XX问题"/>
  </issue>
</OperationOutcome>