IXML QRDA III
  • 18 Aug 2023
  • 7 Minutes to read
  • Dark
    Light

IXML QRDA III

  • Dark
    Light

Article summary

POJO ClassesIXML Elements
Address<address>
Ethnicity<ethnicity>
Gender<sex>
Measure<measure>
Participant<participant>
Payer<payer>
PerformerEntity<performerentity>
Race<race>
ReportingPeriod<reportingperiod>
Sex<sex>
Stratum<stratum>
Population Inclusion POJOs:
Denex<denex>
Denexcep<denexcep>
Denom<denom>
Ipop<ipop>
Ippop<ippop>
Msrpopl<msrpopl>
Msrpoplex<msrpoplex>
Numer<numer>
Numex<numex>

Intermediate XML is used in the process of creating CCDs. It's what mdht-restlet needs to generate on-demand CCDs, QRDA I, QRDA III, and FHIR records. This document covers QRDA III and is an appendage to the larger IXML Documentation which contains definitions common to both CCDA and QRDA. 

Documents (Implementation Guides)

These are used primarily in creating the POJOs and populating the CCD using MDHT APIs.

TitleHL7 Implementation Guide for CDA® Release 2: Quality Reporting Document Architecture—Category III, STU Release 2.1—(US Realm) Standard for Trial Use June 2017
FilenameCDAR2_IG_QRDAIII_R1_STU_R2.1_2017JUL.pdf, 147 pages
 
TitleCMS Implementation Guide for Quality Reporting Document Architecture Category III Eligible Clinicians and Eligible Professionals Programs Implementation Guide for 2022 Version 1.1 12/16/2021
Filename2022-CMS-QRDA-III-Eligible-Clinicians-and-EP-IG-V1.1-508.pdf, 94 pages

Simple POJOs

For Pojo see IXML Documentation.

Address is used occasionally in the QRDA III header. PerformerEntity provides information to the <assignedEntity ... /> and <representedOrganization ... /> elements of the <documentationOf ... /> section of the QRDA III header. There may be as many of those as desired in Header.

Source CodeIXML Sample
Address
class Address extends Pojo
{
  String         use;
  List< String > line;
  String         city;
  String         state;
  String         zipcode;
  String         country;
}
		
<address>
  <line>5242 Broadway Avenue</line>
  <line>#538</line>
  <city>New York</city>
  <state>NY</state>
  <zipcode>10001</zipcode>
  <country>US</country>
</address>
		
Location Participant
PerformerEntity
class PerformerEntity extends Pojo
{
  String name;
  String npi;
  String tin;
}
		
<header>
  ...
  <performerentity name="IMAT Solutions"  npi="2589654740" tin="990000999" />
  <performerentity name="Bronze Bell"     npi="2672223897" tin="990000998" />
  <performerentity name="Cream o' Weber"  npi="5698322118" tin="990000997" />
  ...
</header>
		
ReportingPeriod
class ReportingPeriod extends Pojo
{
  String name;        // optional
  String startdate;
  String enddate;
}
		
<header>
  ...
  <reportingperiod startdate="20190101" enddate="20191231" />
  ...
</header>
		
Reporting Parameters

Common (evolved) POJOs

For CommonPojo see IXML Documentation.

Source CodeIXML Sample
Measure
class Measure extends CommonPojo
{
  String            measurename;
  String            version;
  String            performancerate;
  List< Denex >     denexList;
  List< Denexcep >  denexcepList;
  List< Denom >     denomList;
  List< Ipop >      ipopList;
  List< Ippop >     ippopList;
  List< Msrpopl >   msrpoplList;
  List< Msrpoplex > msrpoplexList;
  List< Numer >     numerList;
  List< Numex >     numexList;
}
		
<measures>
  <measure version="40280382-6258-7581-0162-9253847b1483"
           measurename="Childhood Immunization Status - NCQA"
           performancerate="0.75">
    <ipop count="533" referenceid="126CEE42-1754-49E3-AE45-8F5AA850C4B5" ...>
    <denom count="551" referenceid="D4D2DEE7-385A-4C28-A09C-884A062A97AA" ... />
    <numer count="114" referenceid="4E058941-CA3D-48BF-BABC-358F3A9FE2AF" ... />
    ...
<measures>
		
Measure Section
Measure Reference

Specialized POJOs (including AdminPojos)

Note:
To pass QRDA III validation, you must provide every ethnicity, every race, both genders and every payer method on every population identifier (IPOP, DENEX, NUMER, etc.) even if the count for one or more of the methods was 0.


For each of these, there is a count which you must use in generating QRDA III.

Source CodeIXML Sample
Ethnicity
class Ethnicity extends AdminPojo { }
		
<ethnicity code="2135-2"
           codesystem="2.16.840.1.113883.6.238"
           codesystemname="Race & Ethnicity - CDC Ethnicity group"
           displayname="Hispanic or Latino"
           count="250" />
<ethnicity code="2186-5"
           codesystem="2.16.840.1.113883.6.238"
           codesystemname="Race & Ethnicity - CDC Ethnicity group"
           displayname="Not Hispanic or Latino"
           count="816" />
		
Race & Ethnicity
Participant
class Participant extends CommonPojo
{
  String  typecode;    // "LOC", "DEV", etc.
  String  classcode;
  String  idroot;
  String  idextension;
  Address address;
}
		
<participant typecode="DEV"
             classcode="RGPR"
             idextension="0015E181NBE3YEG"
             idroot="2.16.840.1.113883.3.2074.1">
  <address ... />
</participant>
		
Participant
Location Participant
Payer
class Payer extends AdminPojo
{
  EffectiveTime effectivetime;
}
		
<!-- for code you must use one of {A|B|C|D} and not numbers -->
<payer code="A" count="300" displayname="Medicare" />
<payer code="B" count="66"  displayname="Medicaid" />
<payer code="C" count="700" displayname="Private Health Insurance" />
<payer code="D" count="0"   displayname="Other" />
		
Payer Supplemental Data Element (V2)
Aggregate Count
Race
class Race extends AdminPojo { }
		
<race code="1002-5"
      codesystem="2.16.840.1.113883.6.238"
      codesystemname="Race & Ethnicity - CDC"
      displayname="American Indian or Alaska Native"
      count="0" />
<race code="2028-9"
      codesystem="2.16.840.1.113883.6.238"
      codesystemname="Race & Ethnicity - CDC"
      displayname="Asian"
      count="66" />
<race code="2054-5"
      codesystem="2.16.840.1.113883.6.238"
      codesystemname="Race & Ethnicity - CDC"
      displayname="Black or African American"
      count="344" />
<race code="2076-8"
      codesystem="2.16.840.1.113883.6.238"
      codesystemname="Race & Ethnicity - CDC"
      displayname="Native Hawaiian or Other Pacific Islander"
      count="6" />
<race code="2106-3"
      codesystem="2.16.840.1.113883.6.238"
      codesystemname="Race & Ethnicity - CDC"
      displayname="White"
      count="650" />
<race code="2131-1"
      codesystem="2.16.840.1.113883.6.238"
      codesystemname="Race & Ethnicity - CDC"
      displayname="Other Race"
      count="0" />
		
Race & Ethnicity
Sex
class Sex extends AdminPojo { }
		
<sex code="M"
     codesystem="2.16.840.1.113883.5.1"
     codesystemname="HL7AdministrativeGenderCode"
     displayname="Male"
     count="643" />
<sex code="F"
     codesystem="2.16.840.1.113883.5.1"
     codesystemname="HL7AdministrativeGenderCode"
     displayname="Female"
     count="423" />
		
Administrative Sex
Stratum
class Stratum extends Pojo
{
  String count;
  String referenceid;
  String statuscode;
}
		
<stratum"
  count="813"
  referenceid="F9617BDD-16F0-4CF1"
  statuscode="complete" />       // (if missing, a default is calculated)
		
Reporting Stratum

Measures POJO

(Not to be confused with Measure.)

MeasuresPojo doesn't appear in the IXML, but its instance variable, count, appears as an attribute on XML elements. Its other instance variables (races, ethnicities, etc.) appear as XML elements with plural names to create repeating collections of subordinate XML elements (in the singular). See example for Denex.

MeasuresPojo
class MeasuresPojo extends Pojo
{
  String            count;        // attribute
  String            referenceid;  // ibid, from IXML
  List< Race >      races;        // subelement collection
  List< Ethnicity > ethnicities;  // ibid
  List< Sex >       genders;      // ibid
  List< Payer >     payers;       // ibid
  List< Stratum >   strata;       // ibid
}
		

Population-identifier POJOs

DenexIXML Sample
class Denex extends MeasuresPojo { }
	
<denex count="1066" referenceid="96BF01DE-5052-480B-BA67-C74A6D4DF0A3">
  <strata>
    <stratum count="10" referenceid="483E377C-4DCD-4CDF-83F7-E85E39402511" />
    <stratum count="11" referenceid="124EF6DD-FEBC-4717-AB0F-03E9E4464EF3" />
  </strata>
  <ethnicities>
    <ethnicity code="2186-5" count="250" displayname="Not Hispanic or Latino"/>
    <ethnicity code="2135-2" count="816" displayname="Hispanic or Latino"/>
  </ethnicities>
  <races>
    <race code="1002-5" count="0"   displayname="American Indian or Alaska Native"/>
    <race code="2028-9" count="66"  displayname="Asian"/>
    <race code="2054-5" count="344" displayname="Black or African American"/>
    <race code="2076-8" count="6"   displayname="Native Hawaiian or Other Pacific Islander"/>
    <race code="2106-3" count="650" displayname="White"/>
    <race code="2131-1" count="18"  displayname="Other Race"/>
  </races>
  <sexes>
    <sex code="F" count="643" displayname="Female"/>
    <sex code="M" count="423" displayname="Male"/>
  </sexes>
  <payers>
    <payer code="A" count="300" displayname="Medicare"/>
    <payer code="B" count="66"  displayname="Medicaid"/>
    <payer code="C" count="700" displayname="Private Health Insurance"/>
    <payer code="D" count="0"   displayname="Other"/>
  </payers>
</denex>
		
Population Inclusion Observation Type
The following all work just as the example for Denex above:
class Denexcep extends MeasuresPojo  { }

class Denom extends MeasuresPojo  { }

class Ipop extends MeasuresPojo  { }

class Ippop extends MeasuresPojo  { }

class Msrpopl extends MeasuresPojo  { }

class Msrpoplex extends MeasuresPojo  { }

class Numer extends MeasuresPojo  { }

class Numex extends MeasuresPojo  { }
		

Appendix: sample IXML file (QRDA III) and format templates

Note:
While the ability for multiple measures is provided, in practice, there likely never will be more than one. Also, the field values depicted here are randomly invented and, as such, meaningless.


<?xml version="1.0" encoding="UTF-8"?>
<cdadoc>
  <header>
    <doctype>QRDA III</doctype>
    <vendor>Acme</vendor>
    <conformance>2018</conformance> 
    <codename>Continuity of Care Document</codename>
    <title>Good Health QRDA III Report</title>
    <hieinfo>
      <hiename>Mockingbird Heights Clinic</hiename>
      <telecom>tel:+1(213) 666-9032</telecom>
      <oid>2.16.840.1.113883.3.5785</oid>
      <address>
        <line>13 Boulevard of the Stars</line>
        <line>Suite 1A</line>
        <city>Mockingbird Heights</city>
        <state>CA</state>
        <zipcode>90210</zipcode>
        <country>US</country>
      </address>
    </hieinfo>
    <informationrecipientid>CDAC_HQR_EHR</informationrecipientid>
    <participant typeclass="LOC"
                 idextension="PCF APM Entity Identifier">
      <address>
        <line>5242 Broadway Avenue</line>
        <line>#538</line>
        <city>New York</city>
        <state>NY</state>
        <zipcode>10001</zipcode>
        <country>US</country>
      </address>
    </participant>
    <performerentity name="IMAT Solutions"  npi="2589654740" tin="990000999" />
    <performerentity name="Bronze Bell"     npi="2672223897" tin="990000998" />
    <performerentity name="Cream o' Weber"  npi="5698322118" tin="990000997" />
  </header>
  <measures>
    <measure startdate="20161212100229+0000"
             enddate="20161213100229+0000"
             version="40280382-5fa6-fe85-0160-3275a2f02cb9"
             measurename="BMI Screening"
             perfromancerate="0.25">
      <denex count="21" referenceid="9999-FFFF-EEEE-8888-000006685892">
        <strata>
          <stratum count="10" referenceid="483E377C-4DCD-4CDF-83F7-E85E39402511" />
          <stratum count="11" referenceid="124EF6DD-FEBC-4717-AB0F-03E9E4464EF3" />
        </strata>
        <races>
          <race count="21" displayname="Native Hawaiian or Other Pacific Islander" />
        </races>
        <ethnicities>
          <ethnicity count="13" displayname="Not Hispanic or Latino" />
        </ethnicities>
        <sexes>
          <sex count="11" displayname="Male" />
          <sex count="7" displayname="Female" />
        </sexes>
        <payers>
          <payer count="1" startdate="20161212100229+0000" payercode="A" displayname="Payment source for population" />
        </payers>
      </denex>
      <msrpopl count="13" referenceid="9999-FFFF-EEEE-7777-000006685892">
        <strata>
          <stratum count="10" referenceid="483E377C-4DCD-4CDF-83F7-E85E39402511" />
          <stratum count="3" referenceid="124EF6DD-FEBC-4717-AB0F-03E9E4464EF3" />
        </strata>
        <races>
          <race count="21" displayname="Native Hawaiian or Other Pacific Islander" />
        </races>
        <ethnicities>
          <ethnicity count="13" displayname="not Hispanic or Latino" />
        </ethnicities>
        <sexes>
          <sex count="11" displayname="Male" />
          <sex count="7" displayname="Female" />
        </sexes>
        <payers>
          <payer count="1" startdate="20161212100229+0000" payercode="C" displayname="Payment source for denominator" />
        </payers>
      </msrpopl>
      <numer count="11" referenceid="9999-FFFF-EEEE-6666-000006685892">
        <strata>
          <stratum count="10" referenceid="483E377C-4DCD-4CDF-83F7-E85E39402511" />
          <stratum count="1" referenceid="124EF6DD-FEBC-4717-AB0F-03E9E4464EF3" />
        </strata>
        <races>
          <race count="21" displayname="Native Hawaiian or Other Pacific Islander" />
        </races>
        <ethnicities>
          <ethnicity count="13" displayname="not Hispanic or Latino" />
        </ethnicities>
        <sexes>
          <sex count="11" displayname="Male" />
          <sex count="7" displayname="Female" />
        </sexes>
        <payers>
          <payer count="1" startdate="20161212100229+0000" payercode="B" displayname="Payment source for numerator" />
        </payers>
      </numer>
      <msrpoplex count="8" referenceid="9999-FFFF-EEEE-5555-000006685892">
        <strata>
          <stratum count="4" referenceid="483E377C-4DCD-4CDF-83F7-E85E39402511" />
          <stratum count="4" referenceid="124EF6DD-FEBC-4717-AB0F-03E9E4464EF3" />
        </strata>
        <races>
          <race count="21" displayname="Native Hawaiian or Other Pacific Islander" />
        </races>
        <ethnicities>
          <ethnicity count="13" displayname="not Hispanic or Latino" />
        </ethnicities>
        <sexes>
          <sex count="11" displayname="Male" />
          <sex count="7" displayname="Female" />
        </sexes>
        <payers>
          <payer count="1" startdate="20161212100229+0000" payercode="D" displayname="Payment source for exclusions" />
        </payers>
      </msrpoplex>
    </measure>
  </measures>
</cdadoc>


Appendix: IXML format templates

Here are some sample "railroad tracks."

Note:
The header contents are mandatory.
<cdadoc>
  <header>
    <doctype>QRDA III</doctype>
    <vendor>Acme</vendor>
    <codename />
    <title />
    <informationrecipientid />
    <participant />
  </header>
  <measures>            <!-- {0,1,+} -->
    <measure ...>
      <ipop ...>
        <strata>        <!-- {0,1,+} -->
          <stratum />
        </strata>
        <payers ...>
          <payer />     <!-- {0,1,+} -->
        </payers>
        <races>
          <race />      <!-- {0,1,+} -->
        </races>
        <sexes>
          <sex />       <!-- {0,1,+} -->
        </sexes>
        <ethnicities>
          <ethnicity /> <!-- {0,1,+} -->
        </ethnicities>
      </ipop>
      <ippop ... />     <!-- as went <ipop>, so go all of these -->
      <msrpopl ... />
      <msrpoplex ... />
      <denom ... />
      <denex />
      <denexcep />
      <numer />
      <numex />
    </measure>
  </measures>
</cdadoc>



Was this article helpful?