Convert your FHIR JSON -> XML and back here. The CDA Book is sometimes listed for Kindle here and it is also SHIPPING from Amazon! See here for Errata.

Monday, August 13, 2012

Moving on from C32: Lab Results

The Lab Results section is required to demonstrate compliance with Meaningful Use requirements for both Ambulatory and Inpatient settings.  However, there’s always been some question what to do when no Labs were performed during a visit. In CCD 1.1, the Results section is required, so that question has been answered.  It’s not the answer that I would have given, but there you have it.  Include a results section, whether you have any or not.  I’ll address what an Empty results section should look like below.

<section>
  <templateId root="2.16.840.1.113883.3.88.11.83.122"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.28"/>
<templateId root="2.16.840.1.113883.10.20.22.2.3"/>
  <templateId root="2.16.840.1.113883.10.20.22.2.3.1"/>
  <code code="30954-2" codeSystem="2.16.840.1.113883.6.1"
        codeSystemName="LOINC" displayName="Results"/>
  <title>Diagnostic Results</title>
  <text>…</text>
    …
  <entry> … See Results Organizer Below … </entry>
</section>


Results Organizer

The major change in this section is that we dropped the requirement for the <procedure> in the organizer. This was always confusing and appeared in IHE and HITSP part as a result of my inaccurate understanding of HL7 classes back in 2005.  I could never get the intent corrected, as much as I tried, until now.  In the RIM, procedure brings about a change in the patient, an observation doesn’t.  In medical documents, a procedure (note) documents an observation (class), and an operative (note) documents a procedure (class).  Confused?  I was.

Again, for this, the big change is the template Identifier.  The vocabulary that CCD 1.1 allows for on <code> is to identify the type of panel or test ordered, and could be the code for the panel, a category of tests, or a specific result.  I would recommend the LOINC code for the test being ordered.  Meaningful test methods will make it clear what is required here.  Stage 2 requires LOINC to identify lab results, but the <code> on organizer classifies the results beneath it.  So it isn’t totally clear this must be LOINC for Meaningful Use Stage 2, but using LOINC is probably the safest bet here.

<entry>
       <organizer classCode="BATTERY" moodCode="EVN">
              <templateId root="2.16.840.1.113883.10.20.22.4.1"/>
              <templateId root="2.16.840.1.113883.10.20.1.32"/>
              <id root="7d5a02b0-67a4-11db-bd13-0800200c9a66"/>
              <code code="58410-2" codeSystem="2.16.840.1.113883.6.1"
                     displayName="CBC" codeSystemName="LOINC"/>
              <statusCode code="completed"/>
              <effectiveTime value="200003231430"/>
              <!-- This can be removed -->
              <component>
                     <procedure classCode="PROC" moodCode="EVN">
                            <templateId root="2.16.840.1.113883.3.88.11.83.17"/>
                            <templateId root="2.16.840.1.113883.10.20.1.29"/>
                            <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.19"/>
                                  …
                     </procedure>
              </component>
              <component> … See Results Observation Below … </component>
       </organizer>
</entry>


Results Observation

For the results observation, mostly you just need to swap out templateId values.  Note that if you have local codes, they go into the <translation> now.  While CCD 1.1 allows for other vocabulary in the <code> element, you’ll need to use LOINC for the actual <code>, at least according to the proposed Meaningful Use rules.  NOTE:  If you include <referenceRange> and had a <code> element in it, it must be removed according to CCDA.

<component>
       <observation classCode="OBS" moodCode="EVN">
              <templateId root="2.16.840.1.113883.10.20.22.4.2"/>
              <templateId root="2.16.840.1.113883.3.88.11.83.15.1"/>
              <templateId root="2.16.840.1.113883.10.20.1.31"/>
              <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.13"/>
              <id root="107c2dc0-67a5-11db-bd13-0800200c9a66"/>
              <code code="30313-1" codeSystem="2.16.840.1.113883.6.1" 
                   displayName="HGB">
                <translation code="…" codeSystem="…" codeSystemName="LOCAL"/>
              </code>
              <text><reference value="#TESTSUMMARY_1"/></text>
              <statusCode code="completed"/>
              <effectiveTime value="200003231430"/>
              <value xsi:type="PQ" value="13.2" unit="g/dl"/>
              <interpretationCode code="N" codeSystem="2.16.840.1.113883.5.83"/>
              <referenceRange>
                  <code ... />
                  <observationRange>
                     <text>M 13-18 g/dl; F 12-16 g/dl</text>
                  </observationRange>
              </referenceRange>
       </observation>
</component>


No Results to Report

OK.  This isn’t pretty.  I’m sorry.  All I can say is that it isn’t my fault. 

The CCD 1.1 requires a Lab Results section.  The organizer needs to be present in the section according to the Result Section rules.

But: We don’t give it a code because we don’t have to, nor does it have an identifier.  The organizer represents an event that occurred (you cannot negate the act of organizing), so you can say when you created the organizer (e.g., the date of the encounter you are building the CCD for).

Inside the organizer is an observation that negates the code for Laboratory Studies.  That basically says “I did no laboratory studies”.  Adding effectiveTime limits the negation to the specified date. 


<section>
<templateId root="2.16.840.1.113883.10.20.22.2.3"/>
   <templateId root="2.16.840.1.113883.10.20.22.2.3.1"/>
   <code code="30954-2" codeSystem="2.16.840.1.113883.6.1"
         codeSystemName="LOINC" displayName="Results"/>
   <title>Diagnostic Results</title>
   <text>No Laboratory Tests Performed</text>
   <entry>
      <organizer classCode="CLUSTER" moodCode="EVN">
         <templateId root="2.16.840.1.113883.10.20.22.4.1"/>
         <id nullFlavor="NA"/>
         <code nullFlavor="NA"/>
         <statusCode code="completed"/>
         <effectiveTime value="200003231430"/>
         <component>
            <observation classCode="OBS" moodCode="EVN" negationInd="true">
                <templateId root="2.16.840.1.113883.10.20.22.4.2"/>
                <id nullFlavor="NA"/>
                <code code="26436-6" codeSystem="2.16.840.1.113883.6.1"
                      displayName="Laboratory Studies" codeSystemName="LOINC"/>
                <statusCode code="completed"/>
                <effectiveTime value="200003231430"/>
            </observation>
          </component>
      </organizer>
   </entry>
</section>

I don’t like this. It would have been vastly simpler to allow the section to be omitted in its entirety, or to specify a much simpler observation that indicated that no lab results were performed, but at least this should work.

3 comments:

  1. Hi Keith, Would the same scenario for - No Results To Report - hold also for Vital Signs Section of the CCDA?
    Thank you in advance

    ReplyDelete
  2. @Anonymous: Unlike Lab Results section, Vital Signs section is not a required entry in any of the commonly used CCDA templates (except History & Physical Note). Feel free to skip the Vital Signs section altogether if you do not have data. If you must create a blank Vital Sections, I would imagine the same technique should work - setting the negationInd to true in the observation. The Vitals section's observation is pretty much the same as Lab Result section's, with some vocabulary constraints. For instance, the LOINC code for "Laboratory Studies" may not cut here.

    @Keith: This post was useful - was stuck with the Lab Results part for a while. Thanks a bunch!

    ReplyDelete
  3. Is there a difference between how to indicate no labs to report, and a purposely empty results section?

    ReplyDelete