Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagexml
<?xml version="1.0" encoding="UTF-8"?>
<Questionnaire xmlns="http://hl7.org/fhir">
    <id value="3141"/>
    <text>
        <status value="generated"/>
        <div xmlns="http://www.w3.org/1999/xhtml">
            <pre>1.Comorbidity?
              1.1 Cardial Comorbidity
                1.1.1 Angina?
                1.1.2 MI?
              1.2 Vascular Comorbidity?
              ...
            Histopathology
              Abdominal
                pT category?
              ...
          </pre>
        </div>
    </text>
    <url value="http://hl7.org/fhir/Questionnaire/3141"/>
    <title value="Cancer Quality Forum Questionnaire 2012"/>
    <status value="draft"/>
    <subjectType value="Patient"/>
    <date value="2012-01"/>
    <item>
        <linkId value="1"/>
        <code>
            <system value="http://example.org/system/code/sections"/>
            <code value="COMORBIDITY"/>
        </code>
        <type value="group"/>
        <item>
            <linkId value="1.1"/>
            <code>
                <system value="http://example.org/system/code/questions"/>
                <code value="COMORB"/>
            </code>
            <prefix value="1"/>
            <text>Does patient have a Comorbidity?</text>
            <type value="choice"/>
            <answerValueSet value="http://hl7.org/fhir/ValueSet/yesnodontknow"/>
            <item>
                <linkId value="1.1.1"/>
                <code>
                    <system value="http://example.org/system/code/sections"/>
                    <code value="CARDIAL"/>
                </code>
                <type value="group"/>
                <enableWhen>
                    <question value="1.1"/>
                    <operator value="="/>
                    <answerCoding>
                        <system value="http://terminology.hl7.org/CodeSystem/v2-0136"/>
                        <code value="Y"/>
                    </answerCoding>
                </enableWhen>
                <item>
                    <linkId value="1.1.1.1"/>
                    <code>
                        <system value="http://example.org/system/code/questions"/>
                        <code value="COMORBCAR"/>
                    </code>
                    <prefix value="1.1"/>
                    <text>Does patient have Cardial Comorbidity?</text>
                    <type value="choice"/>
                    <answerValueSet value="http://hl7.org/fhir/ValueSet/yesnodontknow"/>
                    <item>
                        <linkId value="1.1.1.1.1"/>
                        <code>
                            <system value="http://example.org/system/code/questions"/>
                            <code value="COMCAR00"/>
                            <display value="Angina Pectoris"/>
                        </code>
                        <code>
                            <system value="http://snomed.info/sct"/>
                            <code value="194828000"/>
                            <display value="Angina (disorder)"/>
                        </code>
                        <prefix value="1.1.1"/>
                        <type value="choice"/>
                        <answerValueSet value="http://hl7.org/fhir/ValueSet/yesnodontknow"/>
                    </item>
                    <item>
                        <linkId value="1.1.1.1.2"/>
                        <code>
                            <system value="http://snomed.info/sct"/>
                            <code value="22298006"/>
                            <display value="Myocardial infarction (disorder)"/>
                        </code>
                        <prefix value="1.1.2"/>
                        <type value="choice"/>
                        <answerValueSet value="http://hl7.org/fhir/ValueSet/yesnodontknow"/>
                    </item>
                </item>
                <item>
                    <linkId value="1.1.1.2"/>
                    <code>
                        <system value="http://example.org/system/code/questions"/>
                        <code value="COMORBVAS"/>
                    </code>
                    <prefix value="1.2"/>
                    <text>Does patient have Vascular Comorbidity?</text>
                    <type value="choice"/>
                    <answerValueSet value="http://hl7.org/fhir/ValueSet/yesnodontknow"/>
                </item>
            </item>
        </item>
    </item>
    <item>
        <linkId value="2"/>
        <code>
            <system value="http://example.org/system/code/sections"/>
            <code value="HISTOPATHOLOGY"/>
        </code>
        <type value="group"/>
        <item>
            <linkId value="2.1"/>
            <code>
                <system value="http://example.org/system/code/sections"/>
                <code value="ABDOMINAL"/>
            </code>
            <type value="group"/>
            <item>
                <linkId value="2.1.2"/>
                <code>
                    <system value="http://example.org/system/code/questions"/>
                    <code value="STADPT"/>
                    <display value="pT category"/>
                </code>
                <type value="choice"/>
            </item>
        </item>
    </item>
</Questionnaire>

...

Code Block
languagexml
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xpath-default-namespace="http://hl7.org/fhir">
    <xsl:output indent="yes" omit-xml-declaration="no"/>
    <xsl:variable name="presentRange">(0,INF)</xsl:variable>
    <xsl:variable name="absentRange">[0,0]</xsl:variable>
    <xsl:variable name="indeterminateRange">[0,INF)</xsl:variable>
    <xsl:template match="/">
        <anf>
            <xsl:for-each select="//item">
                <xsl:if test="./type/@value = 'choice'">
                    <xsl:variable name="questionId" select="./linkId/@value"/>
                    <xsl:variable name="questionTopic" select="./code/code/@value"/>
                    <xsl:variable name="questionNarrative" select="./text"/>
                    <xsl:for-each select="document('questionnaireResponse.xml')//item">
                        <xsl:if test="./linkId/@value = $questionId">
                            <statement>
                                <narrative>
                                    <xsl:value-of select="$questionId$questionNarrative"/>
                                </narrative>
                                <topic>
                                    <xsl:value-of select="$questionTopic"/>
                                </topic>
                                <circumstance type="performance">
                                    <status>Complete</status>
                                    <result>
                                        <xsl:choose>
                                            <xsl:when test="./answer/valueCoding/code/@value = 1">
                                                <xsl:value-of select="$presentRange"/>
                                            </xsl:when>
                                            <xsl:when test="./answer/valueCoding/code/@value = 0">
                                                <xsl:value-of select="$absentRange"/>
                                            </xsl:when>
                                            <xsl:when test="./answer/valueCoding/code/@value = 3">
                                                <xsl:value-of select="$indeterminateRange"/>
                                            </xsl:when>
                                        </xsl:choose>
                                    </result>
                                </circumstance>
                            </statement>
                        </xsl:if>
                    </xsl:for-each>
                </xsl:if>
            </xsl:for-each>
        </anf>
    </xsl:template>
</xsl:stylesheet>

...

Code Block
languagexml
<?xml version="1.0" encoding="UTF-8"?>
<anf>
   <statement>
      <narrative>1.1<<narrative>Does patient have a Comorbidity?</narrative>
      <topic>COMORB</topic>
      <circumstance type="performance">
         <status>Complete</status>
         <result>(0,INF)</result>
      </circumstance>
   </statement>
   <statement>
      <narrative>1.1.1.1<<narrative>Does patient have Cardial Comorbidity?</narrative>
      <topic>COMORBCAR</topic>
      <circumstance type="performance">
         <status>Complete</status>
         <result>[0,0]</result>
      </circumstance>
   </statement>
   <statement>
      <narrative>Does patient  <narrative>1.1.1.2<have Vascular Comorbidity?</narrative>
      <topic>COMORBVAS</topic>
      <circumstance type="performance">
         <status>Complete</status>
         <result>[0,INF)</result>
      </circumstance>
   </statement>
</anf>