July 23, 2014

Open Source Licenses for Healthcare Information Technology

Noticing that I have not been blogging as much, I want to share some perspectives on open source distribution licenses within the domain of healthcare information technology.

If well-designed, healthcare information technology solutions can improve the patient-clinician relationship, the accuracy of the patient’s health data, the diagnosis and management the patient’s health, and the efficiency and job satisfaction of clinicians.


Open source software (OSS) can play a foundational role in realizing digital healthcare delivery.  Open source software communities are intrinsically better positioned to support collaborative, community-driven demonstration of novel concepts.

Additionally, open source software lowers the barrier of entry for individuals and organizations to contribute and adopt vendor-neutral solutions in healthcare information technology.

Some of the most popular open source licenses that are used in industry are:
  • Apache License 2.0 - A permissive license that provides an express grant of patent rights from contributors to users.  The Apache Software Foundation (ASF) developed the license prose, and ASF adopted the Apache License version 2.0 in January 2004.  Similar to the MIT license, the Apache 2.0 license is compatible with version 3 of the GNU General Public License (GPL) also detailed in this table. 
  • GNU General Public License (GPL) v3 - A “copyleft” license that requires anyone who distributes the software source code or a derivative work to make the source available under the same terms.   Formally introduced in 2007, the Free Software Foundation (FSF) upgraded the GPL v2 with the GPL v3.  The most important changes introduced were in relation to software patents, free software license compatibility, the definition of "source code", and hardware restrictions on software modification. It is considered “viral” and negatively by some for-profit organizations.  I am not a fan of the GPL license because I feel it is too opinionated and tends to scare for-profit organizations away from open source.
  • MIT License - Another permissive license that is similar to the Apache 2.0 license, and very short and loose regarding requirements.  The MIT license allows users to use, copy, and modify the software source code.  As the name would imply... this distribution license originates at the Massachusetts Institute of Technology... duh.  The MIT license is GPL-compatible, meaning that it can be combined with a program under the GPL license without conflict.  The MIT license is very similar to the BSD license.  The primary difference from the BSD license is that the BSD license contains a notice prohibiting the use of the name of the copyright holder in promotion.
  • BSD License 2.0 - A permissive, free software license imposing minimal restrictions on the redistribution of covered software.  The BSD allows proprietary use and allows the software released under the license to be incorporated into proprietary products.  Similar to Apache 2.0 but lacks a patent grant, which means that the authors of the code are not giving rights needed for the authors' patents, which might happen to be in the code being used.  
My preferred open source license for use in the domain of healthcare information technology is the Apache 2.0 license.

For 7 years, I have successfully used the Apache 2.0 license for numerous healthcare projects that I have led.  The Apache 2.0 license is arguably the most commercial-friendly of all of these options due to wide adoption by industry, its permissive nature avoiding of “viral” requirements upon redistribution of derivative works, and the broad adoption of the associated Apache web server software which is used by most of commercial industry.

From my experience, one of the most important aspects of the Apache 2.0 license is the Apache brand.

Whenever I am telling a healthcare CIO about one of our open source projects licensed under the Apache 2.0 open source license, if they do not know the details of open source, I can usually talk them away from the ledge with Apache.  Talking about if they have/use an Apache web server, they usually they say "yes, I use an Apache web server".  At that point it is easier to explain that other software made available under an Apache 2.0 open source distribution license would represent no greater risk to viral release of an enterprise's intellectual property than using an Apache web server.

With the big disclaimer that I am not a lawyer... 

I also feel that the Apache 2.0 license is the superior distribution license to use in healthcare information technology because allows for software that is free to download, use, re-purpose, re-distribute, or even sell.  Yes, you are even allowed to sell someone else's software that is distributed via an Apache 2.0 license.  The only really hard requirements are attribution back to the copyright owner, and you cannot sue the original author if something bad happens.  That responsibility is on you, the user of the software.


By only requiring attribution, there is flexibility in the way that anyone would like use a derivative work.  If a healthcare open source project were to be better positioned as a paid commercial product, the Apache license provides for an immediate technology transfer mechanism to that market with no barriers... none.  Such a decision could even be made with or without agreement from all the open source project community that created the original project.  

While I am not endorsing that open source projects be "poached" and turned into commercial for-profit services, I do like that freedom that the Apache 2.0 license provides.

I hope this is helpful.


This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. © Rob McCready, 2014.
Creative Commons License

November 22, 2013

Conceptual Hospital Dashboard Design

I have been neglecting the "design" aspect of this blog for some time.  To re-engergize the need for more engaging content, to put some eye-candy out... and have some fun on a late Friday afternoon… I thought I would share a shelved design for a dashboard that I developed for a COO at a notional hospital:

Notional Hospital COO Dashboard Design
Notional Hospital COO Dashboard Design
I have made several assumptions when coming up with this mockup.  The first is that quality and quality metrics would be of utmost importance to this user.  Maybe pay-for-performance programs have been adopted based on Clinical Quality Measures (CQMs), and quality issues have an immediate impact on the bottom line of the organization.  I included both a kiviat visualization for showing targets against measured results for CQMs, and a longitudinal trend for those CQMs over time.

With the disclaimer that I am not a clinician; I made some assumptions that knowing the types of procedures that are being performed, and when those procedures deviate from expected norms is something else that a COO would track.

Lastly, I am showing a design technique that Stephen Few will sometimes use to provide a non-white background to reduce eyestrain.  Having met him several years ago, I am a fan of Stephen's work.  I always like the muted background color that he tends to include in his works.

I welcome the feedback.

Kudos if you "get" the names of the ten physicians.

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. © Rob McCready, 2013.
Creative Commons License

November 14, 2013

Example QRDA Category 3 XML for Meaningful Use Stage 2 Clinical Quality Measure Reporting

I have been preparing to lead a summit in D.C. tomorrow to discuss versioning of the various Meaningful Use Clinical Quality Measure (CQM) standards.  During final preparation for the summit, I have been digging into the QRDA Category 3 XML specification.  As I detailed a few months ago, the QRDA Category 3 XML is used for reporting aggregate data for reporting CQMs.  The more that I go spelunking into the QRDA Category 3 standard, the more I understand the complexities associated with it.  I am hoping that providing an example QRDA Category 3 XML will be helpful to the broader community.

Detailed below is a (verbose) example QRDA Category 3 XML file for expressing the Meaningful Use Stage 2 Clinical Quality Measure for expressing the results for "NQF 0018 Controlling High Blood Pressure".  Assume that this CQM is being considered against a population of patients that would generate aggregate section results that would look like this:
  • Initial Patient Population (IPP): 3
  • Denominator: 3
  • Numerator: 1
  • Exceptions: 1
  • Exclusions: 0
Additionally, Electronic Health Record (EHR) systems are required to report on the supplemental data for sex, ethnicity, race and payer.  So for this data set, assume that there are two males that meet the IPP and only one female.  Then, assume only one of the males meets the numerator requirement.  For simplicity, assume that we do not have any information on race, ethnicity, or payers… so assume "unknown" for all the patients on those dimensions.

Scrolling below, I enumerate a valid example QRDA Category 3 XML file and the sections used to report the aggregate results via CQM QRDA Category 3.  I highlighting the aggregate section results with a yellow background, and the supplemental data with a violet background.

Similar to the QRDA Category 1, it is really difficult to understand why there is so much XML bloat here.  For expressing the CQM results I enumerated after the third paragraph of this blog entry, it takes 679 lines of XML to express these results in the QRDA Category 3!  It is a real struggle to attempt to explain why so much verbose XML is needed to convey such little aggregate information.

With a more detailed understanding of the QRDA Category 3 specification, I think it is finally time to seriously question the ongoing use of the HL7 Clinical Document Architecture (CDA) and the HL7 Reference Implementation Model (RIM) for expressing any type of healthcare data in XML.  While I appreciate what the leaders at HL7 are attempting to do, the QRDA Category 3 XML bloat is probably the best (worst?) example I have seen to support use of a simpler and less complex standard that deviates from the CDA and RIM.

Steve Jobs quote that needs to be considered here “Simple can be harder than complex.  You have to work hard to get your thinking clean to make it simple. But it’s worth it in the end because once you get there, you can move mountains.”  See the evidence of the need for this type of change below:

<?xml version="1.0" encoding="utf-8"?>
<ClinicalDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="urn:hl7-org:v3" xmlns:cda="urn:hl7-org:v3">
<realmCode code="US"/>
<typeId root="2.16.840.1.113883.1.3" extension="POCD_HD000040"/>
<templateId root="2.16.840.1.113883.10.20.27.1.1"/>
<id root="9c9762c0-2ac3-0131-4e2f-0050560100a9"/>
<code code="55184-6" codeSystem="2.16.840.1.113883.6.1"
 codeSystemName="LOINC"
 displayName="QRDA Category 3 Summary Report"/>
<title>QRDA Category 3 Calculated Summary Report</title>
<effectiveTime value="20131108164909"/>
<confidentialityCode codeSystem="2.16.840.1.113883.5.25" code="N"/>
<languageCode code="en-US"/>
<versionNumber value="1"/>
<recordTarget>
  <patientRole>
    <id nullFlavor="NA"/>
  </patientRole>
</recordTarget>
<author>
  <time value="20131108164909"/>
  <assignedAuthor>
    <id extension="Foo" root="Bar"/>
    <assignedAuthoringDevice>
      <softwareName/>
    </assignedAuthoringDevice>
    <representedOrganization>
      <id root="root" extension="ext"/>
      <name/>
    </representedOrganization>
  </assignedAuthor>
</author>
<custodian>
  <assignedCustodian>
    <representedCustodianOrganization>
      <id root="root"/>
      <name>Some Custodian Name</name>
    </representedCustodianOrganization>
  </assignedCustodian>
</custodian>
<legalAuthenticator>
  <time value="20131108164909"/>
  <signatureCode code="S"/>
  <assignedEntity>
    <id root="root"/>
    <representedOrganization>
      <id root="root"/>
    </representedOrganization>
  </assignedEntity>
</legalAuthenticator>
<component>
  <structuredBody>
    <component>
      <section>
        <templateId root="2.16.840.1.113883.10.20.17.2.1"/>
        <templateId root="2.16.840.1.113883.10.20.27.2.2"/>
        <code code="55187-9" codeSystem="2.16.840.1.113883.6.1"/>
        <title>Reporting Parameters</title>
        <text>
          <list>
            <item>Reporting period Dec 31 2011 - 
                  Dec 31 2012</item>
          </list>
        </text>
        <entry typeCode="DRIV">
          <act classCode="ACT" moodCode="EVN">
            <templateId root="2.16.840.1.113883.10.20.17.3.8"/>
            <code code="252116004"
             codeSystem="2.16.840.1.113883.6.96"
             displayName="Observation Parameters"/>
            <effectiveTime>
              <low value="20111231120000"/>
              <high value="20121231120000"/>
            </effectiveTime>
          </act>
        </entry>
      </section>
    </component>
    <component>
      <section>
        <templateId root="2.16.840.1.113883.10.20.24.2.2"/>
        <templateId root="2.16.840.1.113883.10.20.27.2.1"/>
        <code code="55186-1" codeSystem="2.16.840.1.113883.6.1"/>
        <title>Measure Section</title>
        <text></text>
        <entry>
          <organizer classCode="CLUSTER" moodCode="EVN">
            <templateId root="2.16.840.1.113883.10.20.24.3.98"/>
            <templateId root="2.16.840.1.113883.10.20.27.3.1"/>
            <statusCode code="completed"/>
            <reference typeCode="REFR">
              <externalDocument classCode="DOC" moodCode="EVN">
                <id root="40280381-3D61-56A7-013E-66BC02DA4DEE"/>
                <text>Controlling High Blood Pressure</text>
                <setId
                 root="ABDC37CC-BAC6-4156-9B91-D1BE2C8B7268"/>
                <versionNumber value="1"/>
              </externalDocument>
            </reference>
            <component>
              <observation classCode="OBS" moodCode="EVN">
                <templateId
                 root="2.16.840.1.113883.10.20.27.3.14"/>
                <code code="72510-1"
                 codeSystem="2.16.840.1.113883.6.1"
                 displayName="Performance Rate"
                 codeSystemName="2.16.840.1.113883.6.1"/>
                <statusCode code="completed"/>
                <value xsi:type="REAL" value="0.5"/>
                <reference typeCode="REFR">
                  <externalObservation classCode="OBS" 
                   moodCode="EVN">
                    <id 
                     root="5EE417A9-32DB-452F-BAA0-74C5831A4457"/>
                    <code code="NUMER" displayName="Numerator"
                     codeSystem="2.16.840.1.113883.5.1063"
                     codeSystemName="ObservationValue"/>
                  </externalObservation>
                </reference>
              </observation>
            </component>
            <component>
              <!-- DATA FOR IPP B936D6B5-151F-47FB-97D8-A5AB9AB00656 -->
              <observation classCode="OBS" moodCode="EVN">
                <templateId root="2.16.840.1.113883.10.20.27.3.5"/>
                <code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4"
                 displayName="Assertion" codeSystemName="ActCode"/>
                <statusCode code="completed"/>
                <value xsi:type="CD" code="IPP"
                 codeSystem="2.16.840.1.113883.5.1063"
                 codeSystemName="ObservationValue"/>
                <entryRelationship typeCode="SUBJ" inversionInd="true">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                      <code code="MSRAGG" displayName="rate aggregation"
                       codeSystem="2.16.840.1.113883.5.4"
                       codeSystemName="ActCode"/>
                      <value xsi:type="INT" value="3"/>
                      <methodCode code="COUNT" displayName="Count"
                       codeSystem="2.16.840.1.113883.5.84"
                       codeSystemName="ObservationMethod"/>
                  </observation>
                </entryRelationship>
                <!-- SEX Supplemental Data for IPP
                     B936D6B5-151F-47FB-97D8-A5AB9AB00656 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId
                root="2.16.840.1.113883.10.20.27.3.6"/>
                    <id nullFlavor="NA"/>
                    <code code="184100006"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" code="F"
                     codeSystem="2.16.840.1.113883.5.1"/>
                    <entryRelationship typeCode="SUBJ"
                     inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- SEX Supplemental Data Reporting for IPP
                     B936D6B5-151F-47FB-97D8-A5AB9AB00656 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.6"/>
                    <id nullFlavor="NA"/>
                    <code code="184100006"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" code="M"
                     codeSystem="2.16.840.1.113883.5.1"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="2"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- ETHNICITY Supplemental Data Reporting for IPP
                     B936D6B5-151F-47FB-97D8-A5AB9AB00656 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.7"/>
                    <id nullFlavor="NA"/>
                    <code code="364699009"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="3"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- RACE Supplemental Data Reporting for IPP
                     B936D6B5-151F-47FB-97D8-A5AB9AB00656 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.8"/>
                    <id nullFlavor="NA"/>
                    <code code="103579009"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="3"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- PAYER Supplemental Data Reporting for IPP
                     B936D6B5-151F-47FB-97D8-A5AB9AB00656 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.9"/>
                    <id nullFlavor="NA"/>
                    <code code="48768-6" codeSystem="2.16.840.1.113883.6.1"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="3"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <reference typeCode="REFR">
                  <externalObservation classCode="OBS" moodCode="EVN">
                    <id root="B936D6B5-151F-47FB-97D8-A5AB9AB00656"/>
                  </externalObservation>
                </reference>
              </observation>
            </component>
            <component>
              <!-- MEASURE DATA REPORTING FOR DENOM
                   2A53CBF0-510A-429D-814D-CBCA4DC0E2A8 -->
              <observation classCode="OBS" moodCode="EVN">
                <templateId root="2.16.840.1.113883.10.20.27.3.5"/>
                <code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4"
                 displayName="Assertion" codeSystemName="ActCode"/>
                <statusCode code="completed"/>
                <value xsi:type="CD" code="DENOM"
                 codeSystem="2.16.840.1.113883.5.1063"
                 codeSystemName="ObservationValue"/>
                <entryRelationship typeCode="SUBJ" inversionInd="true">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                    <code code="MSRAGG" displayName="rate aggregation"
                     codeSystem="2.16.840.1.113883.5.4"
                     codeSystemName="ActCode"/>
                    <value xsi:type="INT" value="3"/>
                    <methodCode code="COUNT" displayName="Count"
                     codeSystem="2.16.840.1.113883.5.84"
                     codeSystemName="ObservationMethod"/>
                  </observation>
                </entryRelationship>
                <!-- SEX Supplemental Data Reporting for DENOM
                     2A53CBF0-510A-429D-814D-CBCA4DC0E2A8 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.6"/>
                    <id nullFlavor="NA"/>
                    <code code="184100006"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" code="F"
                     codeSystem="2.16.840.1.113883.5.1"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- SEX Supplemental Data Reporting for DENOM
                     2A53CBF0-510A-429D-814D-CBCA4DC0E2A8 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.6"/>
                    <id nullFlavor="NA"/>
                    <code code="184100006"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" code="M"
                     codeSystem="2.16.840.1.113883.5.1"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="2"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- ETHNICITY Supplemental Data Reporting for DENOM
                     2A53CBF0-510A-429D-814D-CBCA4DC0E2A8 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.7"/>
                    <id nullFlavor="NA"/>
                    <code code="364699009"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="3"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- RACE Supplemental Data Reporting for DENOM
                     2A53CBF0-510A-429D-814D-CBCA4DC0E2A8 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.8"/>
                    <id nullFlavor="NA"/>
                    <code code="103579009"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="3"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- PAYER Supplemental Data for DENOM
                     2A53CBF0-510A-429D-814D-CBCA4DC0E2A8 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.9"/>
                    <id nullFlavor="NA"/>
                    <code code="48768-6" codeSystem="2.16.840.1.113883.6.1"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="3"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <reference typeCode="REFR">
                  <externalObservation classCode="OBS" moodCode="EVN">
                    <id root="2A53CBF0-510A-429D-814D-CBCA4DC0E2A8"/>
                  </externalObservation>
                </reference>
              </observation>
            </component>
            <component>
              <!-- MEASURE DATA FOR NUMER
                   5EE417A9-32DB-452F-BAA0-74C5831A4457 -->
              <observation classCode="OBS" moodCode="EVN">
                <templateId root="2.16.840.1.113883.10.20.27.3.5"/>
                <code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4"
                 displayName="Assertion" codeSystemName="ActCode"/>
                <statusCode code="completed"/>
                <value xsi:type="CD" code="NUMER"
                 codeSystem="2.16.840.1.113883.5.1063"
                 codeSystemName="ObservationValue"/>
                <entryRelationship typeCode="SUBJ" inversionInd="true">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                    <code code="MSRAGG" displayName="rate aggregation"
                     codeSystem="2.16.840.1.113883.5.4"
                     codeSystemName="ActCode"/>
                    <value xsi:type="INT" value="1"/>
                    <methodCode code="COUNT" displayName="Count"
                     codeSystem="2.16.840.1.113883.5.84"
                     codeSystemName="ObservationMethod"/>
                  </observation>
                </entryRelationship>
                <!-- SEX Supplemental Data for NUMER
                     5EE417A9-32DB-452F-BAA0-74C5831A4457 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.6"/>
                    <id nullFlavor="NA"/>
                    <code code="184100006"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" code="M"
                     codeSystem="2.16.840.1.113883.5.1"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- ETHNICITY Supplemental Data for NUMER
                     5EE417A9-32DB-452F-BAA0-74C5831A4457 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.7"/>
                    <id nullFlavor="NA"/>
                    <code code="364699009"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- RACE Supplemental Data for NUMER
                     5EE417A9-32DB-452F-BAA0-74C5831A4457 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.8"/>
                    <id nullFlavor="NA"/>
                    <code code="103579009"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- PAYER Supplemental Data for NUMER
                     5EE417A9-32DB-452F-BAA0-74C5831A4457 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.9"/>
                    <id nullFlavor="NA"/>
                    <code code="48768-6" codeSystem="2.16.840.1.113883.6.1"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <reference typeCode="REFR">
                    <externalObservation classCode="OBS" moodCode="EVN">
                        <id root="5EE417A9-32DB-452F-BAA0-74C5831A4457"/>
                    </externalObservation>
                </reference>
              </observation>
            </component>
            <component>
              <!-- MEASURE DATA REPORTING FOR DENEX
                   57F3D1D7-F9FA-437F-A2B9-406A1498E8C0 -->
              <observation classCode="OBS" moodCode="EVN">
                <templateId root="2.16.840.1.113883.10.20.27.3.5"/>
                <code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4"
                 displayName="Assertion" codeSystemName="ActCode"/>
                <statusCode code="completed"/>
                <value xsi:type="CD" code="DENEX"
                 codeSystem="2.16.840.1.113883.5.1063"
                 codeSystemName="ObservationValue"/>
                <entryRelationship typeCode="SUBJ" inversionInd="true">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                    <code code="MSRAGG" displayName="rate aggregation"
                     codeSystem="2.16.840.1.113883.5.4"
                     codeSystemName="ActCode"/>
                    <value xsi:type="INT" value="1"/>
                    <methodCode code="COUNT" displayName="Count"
                     codeSystem="2.16.840.1.113883.5.84"
                     codeSystemName="ObservationMethod"/>
                  </observation>
                </entryRelationship>
                <!-- SEX Supplemental Data Reporting for DENEX
                     57F3D1D7-F9FA-437F-A2B9-406A1498E8C0 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.6"/>
                    <id nullFlavor="NA"/>
                    <code code="184100006"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" code="F"
                     codeSystem="2.16.840.1.113883.5.1"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- ETHNICITY Supplemental Data Reporting for
                     DENEX 57F3D1D7-F9FA-437F-A2B9-406A1498E8C0 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.7"/>
                    <id nullFlavor="NA"/>
                    <code code="364699009"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- RACE Supplemental Data for DENEX
                     57F3D1D7-F9FA-437F-A2B9-406A1498E8C0 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">=
                    <templateId root="2.16.840.1.113883.10.20.27.3.8"/>
                    <id nullFlavor="NA"/>
                    <code code="103579009"
                     codeSystem="2.16.840.1.113883.6.96"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <!-- PAYER Supplemental Data for DENEX
                     57F3D1D7-F9FA-437F-A2B9-406A1498E8C0 -->
                <entryRelationship typeCode="COMP">
                  <observation classCode="OBS" moodCode="EVN">
                    <templateId root="2.16.840.1.113883.10.20.27.3.9"/>
                    <id nullFlavor="NA"/>
                    <code code="48768-6" codeSystem="2.16.840.1.113883.6.1"/>
                    <statusCode code="completed"/>
                    <value xsi:type="CD" nullFlavor="UNK"/>
                    <entryRelationship typeCode="SUBJ" inversionInd="true">
                      <observation classCode="OBS" moodCode="EVN">
                        <templateId root="2.16.840.1.113883.10.20.27.3.3"/>
                        <code code="MSRAGG" displayName="rate aggregation"
                         codeSystem="2.16.840.1.113883.5.4"
                         codeSystemName="ActCode"/>
                        <value xsi:type="INT" value="1"/>
                        <methodCode code="COUNT" displayName="Count"
                         codeSystem="2.16.840.1.113883.5.84"
                         codeSystemName="ObservationMethod"/>
                      </observation>
                    </entryRelationship>
                  </observation>
                </entryRelationship>
                <reference typeCode="REFR">
                  <externalObservation classCode="OBS" moodCode="EVN">
                    <id root="57F3D1D7-F9FA-437F-A2B9-406A1498E8C0"/>
                  </externalObservation>
                </reference>
              </observation>
            </component>
          </organizer>
        </entry>
      </section>
    </component>
  </structuredBody>
</component>
</ClinicalDocument> 

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. © Rob McCready, 2013.
Creative Commons License