Showing posts with label xml. Show all posts
Showing posts with label xml. Show all posts

December 16, 2014

Health IT's journey from messages... to documents... to APIs

The latest JASON report "Data for Individual Health" released last month continues to make the case for the adoption of open APIs to better support the interoperability of healthcare data.  When I think back on the past ~25 years in Health IT, the story that this is painting feels like the gradual evolution of electronic health data from messages, to documents to APIs.

Clinical messages have always been an incomplete "soda straw" perspective of a very small amount of patient's clinical information.  Messages are designed for communicating current information about a patient from one software system to another.  HL7 v2 is the dominant industry standard used for expressing clinical messages.

HL7 v2 messages can be used to express different types of messages including Admissions and Discharges (ADT), Observation Result (ORU), Order Message (ORM).  Additionally, HL7 v2 is a very old data standard, using a "pipe and hat format" approach to encoding the patient's clinical data.  In order to parse an HL7 v2 message, you need to know the offset of data within an HL7 v2 message separated by "|" and "^" characters.  For example, below is an example HL7 v2 message for a glucose reading.

MSH|^~\&|GHH LAB|ELAB-3|GHH OE|BLDG4|200202150930|
|ORU^R01|CNTRL-3456|P|2.4|PID|||555-44-4444|
|EVERYWOMAN^EVE^E^^^^L|JONES|19620320|F|||
153 FERNWOOD DR.^^STATESVILLE^OH^35292||(206)3345232
|(206)752-121||||AC555444444||67-A4335^OH^20030520
|OBR|1|845439^GHH OE|1045813^GHH LAB|15545^GLUCOSE||
|200202150730||||||||
|555-55-5555^PRIMARY^PATRICIA P^^^^MD^^|||||||||F||
||||444-44-4444^HIPPOCRATES^HOWARD H^^^^MD|OBX|1|SN
|1554-5^GLUCOSE^POST 12H CFST:MCNC:PT:SER/PLAS:QN||^182|mg/dl|70_105|H|||F

This makes for a very brittle standard, that is machine interpretable, but not very easy to work with.  By design, you probably would not want to persist HL7 v2 messages as the authoritative source of the clinical information about a patient.  It is not going to be anything more than a soda straw of a few data points.  To this end, moving forward to the turn of the 21st century... clinical documents could help... a little.

Clinical documents are designed to express a more complete picture of a patient's healthcare information at a specific date and point in time.  Notable clinical document standards have included the ASTM CCR.  HL7's CCD, CCDA, and QRDA Category I.  MITRE also developed a standard for both representing and exchanging clinical documents called hData.  Clinical documents differ from clinical messages in that documents are designed to contain more information extracted from an EHR system at a specific date and possibly a timestamp.

An example of an old CCR XML document representing a patient with hypertension and height/weight vitals follows:

<?xml version="1.0" encoding="UTF-8"?>
<ContinuityOfCareRecord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:astm-org:CCR CCR_20051109.xsd http://www.w3.org/2001/XMLSchema xmldsig-core-schema.xsd" xmlns="urn:astm-org:CCR">
    <CCRDocumentObjectID>94461c3f-7dbf-4af1-aba9-ed4aac26bea4</CCRDocumentObjectID>
    <Language>
        <Text>English</Text>
    </Language>
    <Version>V1.0</Version>
    <DateTime>
        <ExactDateTime>2010-02-01T15:52:04Z</ExactDateTime>
    </DateTime>
    <Body>
        <Problems>
            <Problem>
                <CCRDataObjectID>BB0001</CCRDataObjectID>
                <DateTime>
                    <Type>
                        <Text>Start date</Text>
                    </Type>
                    <ExactDateTime>1990-08-07T06:00:00Z</ExactDateTime>
                </DateTime>
                <Type>
                    <Text>Diagnosis</Text>
                </Type>
                <Description>
                    <Text>Hypertension</Text>
                    <Code>
                        <Value>403.10</Value>
                        <CodingSystem>ICD-9 CM</CodingSystem>
                        <Version>2005</Version>
                    </Code>
                    </Code>
                </Description>
                <Status>
                    <Text>Active</Text>
                </Status>
            </Problem>
        </Problems>
        <VitalSigns>
            <Result>
                <CCRDataObjectID>BB0009</CCRDataObjectID>
                <DateTime>
                    <Type>
                        <Text>Start date</Text>
                    </Type>
                    <ExactDateTime>2005-09-24T04:00:00Z</ExactDateTime>
                </DateTime>
                <Description>
                    <Text>Height &amp; Weight</Text>
                </Description>
                <Source>
                    <Actor>
                        <ActorID>AA0002</ActorID>
                    </Actor>
                </Source>
                <Test>
                    <CCRDataObjectID>BB0010</CCRDataObjectID>
                    <Type>
                        <Text>Observation</Text>
                    </Type>
                    <Description>
                        <Text>Height</Text>
                        <Code>
                            <Value>50373000</Value>
                            <CodingSystem>SNOMED</CodingSystem>
                            <Version>2005</Version>
                        </Code>
                    </Description>
                    <Source>
                        <Actor>
                            <ActorID>AA0002</ActorID>
                        </Actor>
                    </Source>
                    <TestResult>
                        <Value>155</Value>
                        <Units>
                            <Unit>cm</Unit>
                        </Units>
                    </TestResult>
                </Test>
                <Test>
                    <CCRDataObjectID>BB0011</CCRDataObjectID>
                    <Type>
                        <Text>Observation</Text>
                    </Type>
                    <Description>
                        <Text>Weight</Text>
                        <Code>
                            <Value>363808001</Value>
                            <CodingSystem>SNOMED</CodingSystem>
                            <Version>2005</Version>
                        </Code>
                    </Description>
                    <Source>
                        <Actor>
                            <ActorID>AA0002</ActorID>
                        </Actor>
                    </Source>
                    <TestResult>
                        <Value>55</Value>
                        <Units>
                            <Unit>kg</Unit>
                        </Units>
                    </TestResult>
                </Test>
            </Result>
        </VitalSigns>
    </Body>
    <Actors>
        <Actor>
            <ActorObjectID>AA0001</ActorObjectID>
            <Person>
                <Name>
                    <CurrentName>
                        <Given>John</Given>
                        <Middle>N</Middle>
                        <Family>Doe</Family>
                    </CurrentName>
                </Name>
                <DateOfBirth>
                    <ExactDateTime>1960-08-23T06:00:00Z</ExactDateTime>
                </DateOfBirth>
                <Gender>
                    <Text>Male</Text>
                </Gender>
            </Person>
            <IDs>
                <Type>
                    <Text>SSN</Text>
                </Type>
                <ID>555-55-5555</ID>
                <Source>
                    <Actor>
                        <ActorID></ActorID>
                    </Actor>
                </Source>
            </IDs>
            <Address>
                <Type>
                    <Text>Home</Text>
                </Type>
                <Line1>Main Street</Line1>
                <City>Fort Lauderdale</City>
                <State>FL</State>
                <PostalCode>33011</PostalCode>
            </Address>
            <Source>
                <Actor>
                    <ActorID>AA0002</ActorID>
                </Actor>
            </Source>
        </Actor>
</ContinuityOfCareRecord>

This allows for additional data to express a more complete (but admittedly incomplete) picture of that patient's health.

Fast forward to today... as laid out in the latest JASON report... the trend is less towards messages or documents, and more towards open Application Programmer Interfaces (APIs) to access and exchange a patient's data.

In the FHIR RESTful framework, transactions are performed on the server using the HyperText Transfer Protocol (HTTP) request/response.  FHIR's RESTful framework allows for services to create, read, update, and delete information exchanged from one service to another over a network.

There's levels of authentication to gate access that can be built into FHIR at various levels of a patient's record.  So, if you wanted to request all the clinical information about a patient from a service, you would simply perform a "GET" request on that patient's identifier.  Similarly, you could request a subset of finer levels of granularity for information such as that patient's conditions, medications, allergies, etc.

There are even some sexy things that you can do with FHIR's search capabilities of clinical data.  For instance, you could perform search for any patient with a gender that has a code "male" with a query like:

GET [base-url]/Patient?gender=male

The data exchanged with FHIR is still clinical documents, but there's now a shift away from the CDA-based HL7 documents that I have not been a fan of, to FHIR's own approach to expressing clinical documentation with FHIR resources within the FHIR RESTful API.  

Ultimately, I think this is where we should be going; both with focusing on how data will be accessed and exchanged while simultaneously ensuring that the clinical data used between different services is designed to be simpler and stricter.

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

October 14, 2014

Bonnie: An Open Source Clinical Quality Measure Testing Tool

Bonnie is a new open source software tool that MITRE has developed and released in April 2014 that allows Meaningful Use (MU) Clinical Quality Measure (CQM) developers to test and verify the behavior of their CQM logic.  The goal of Bonnie is to reduce the number of defects in CQMs by providing a robust and automated testing framework. Bonnie allows measure developers to independently load measures that they have constructed using the Measure Authoring Tool (MAT). Loading the measures into Bonnie converts the measures from their Extensible Markup Language (XML) eSpecifications into executable artifacts and measure metadata.

Bonnie Dashboard Page
Bonnie Dashboard Page
The measure eSpecification format that Bonnie loads is Health Quality Measure Format (HQMF) XML. The HQMF specification provides the metadata and logic that describe the specifics of calculating a CQM. Bonnie can load the HQMF describing a measure and programmatically convert the HQMF specification into an executable format that allows calculating the measure directly from the specification. 

The measure metadata loaded into Bonnie is then used to allow developers to rapidly build a synthetic patient test deck for the measure using the clinical elements defined during the measure construction process. By using measure metadata as a basis for building synthetic patients, developers can rapidly and efficiently create a test deck for a measure. 

Once a CQM has been loaded into Bonnie, a user can inspect the measure logic and then build synthetic test records and set expectations on how those test records will calculate against a measure. This capability to build synthetic test patient records, set expectations against those records, and calculate the measures using those patient records provides an automated and efficient testing framework for CQMs. 

Using the Bonnie-supported CQM testing framework allows measure developers to more clearly understand the behavior of the measure logic, validate that the measure logic encodes their intent, and allows for multiple iterations of measure updates to be validated against a test deck. 

Bonnie Measure Page
Bonnie Measure Page
Additionally, the development of a test deck as part of measure development provides benefits after the measures are finalized. The test deck build as part of measure development can be used to demonstrate the intent of the measure though the use of patient examples included in the test deck. Furthermore, the test deck provides systems that implement the measures with a means to validate the development of their systems. This is provided in the form of a base set of synthetic patient records with known expectations for calculating against the implemented measures. Finally, the test deck could be used as a basis for the test deck used as part of the Meaningful Use certification program. 

Bonnie has been designed to integrate with the nationally recognized data standards used by the Meaningful Use program for expressing CQM logic for machine-to-machine interoperability. This provides enormous value to the CQM program and federal policy leaders and stakeholders: this software tool verifies that the new and evolving standards for the Meaningful Use CQM program are tractable and can be implemented in software.   

Additionally, Bonnie was designed to provide an intuitive and easy-to-use interface based on feedback from the broader measure developer community. A key goal of the Bonnie application is to deliver a user experience that provides an efficient and intuitive method for constructing synthetic patient records for testing and validating CQMs. 

The Bonnie software is freely available via an Apache 2.0 open source license. The Meaningful Use program makes all or parts of the Bonnie software available for inspection, verification, and even reuse by other government programs or federal contractors. 

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

October 8, 2014

Example of CDA limitations to interoperability: time intervals

The HL7 Clinical Document Architecture (CDA) is an XML-based markup standard intended to specify the encoding, structure and semantics of clinical documents for exchange. CDA is an ANSI-certified standard from Health Level Seven (HL7).  The CDA is highlighted as a flexible framework that can contain any type of clinical content.  Additionally, the details of the encoding of clinical data and associated aspects of that data are intentionally designed to be flexible.

That flexibility provides freedoms in various different systems' ability to export clinical data.  However, that same flexibility is an increasing barrier to the interoperability of data as systems need to import that same data.  My biggest pet peeve with the CDA and this problem is the flexibility that the CDA provides in the encoding of time intervals.

Based on clinical reason, the CDA provides the freedom to encode time intervals in eight (8) (VIII) different representations.

<low>
<width>
<high>
<low> <width>
<low> <high>
<center>
<center> <width>

This amount of flexibility in expressing something as simple as a time interval is an obstacle for any receiving system hoping to import and parse an HL7 CDA-based XML document without knowing the way that the generating system is going to express something as basic as a time interval. This permissive nature of the CDA's artifacts is common beyond this one basic example.

What is needed, and hopefully addressed in the emerging FHIR specification, is a more constrained approach to the foundational aspects of clinical data, such as how to encode time intervals.  To reach a point with more interoperability of healthcare data, analysis is needed of the presence of types of structured clinical data concepts and associated clinical codes used operationally.

I feel that the healthcare standards community ultimately needs to identify a strict and simple constrained set of ways of expressing clinical concepts that healthcare Standards Development Organizations (SDOs) like HL7 should use to constrain existing permissive and complex standards.  This could also be done to guide a stricter and simpler implementation to support interoperability via FHIR.

This could introduce significant and radical improvements in the interoperability of patient data in the US healthcare industry.  This will better enable disparate healthcare software systems to work together without requiring point-to-point coordination.  This could reduce, and eventually eliminate, these problems of point-to-point coordination that result in islands of automation.

This "loose coupler" approach will encourage HL7, or possibly new healthcare SDOs, to embrace a core set of strict and simple required attributes, over the current state of the practice using permissive and complex attributes.

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. © Rob McCready, 2014.
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