query health technical wg 2/2/2012. agenda topictime slot administrative stuff and reminders2:00 –...

16
Query Health Technical WG 2/2/2012

Upload: nickolas-tate

Post on 20-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

Query HealthTechnical WG

2/2/2012

Page 2: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

Agenda

Topic Time Slot

Administrative stuff and reminders 2:00 – 2:05 pm

HQMF Progress 2:05 – 2:30 pm

QRDA Update 2:30 – 2:45 pm

RI Update• PopMedNet• i2B2• hQuery

2:45 – 2:55 pm

Page 3: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

Administrative Reminders

• None

Page 4: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

• HQMF

• HQMF++ models and schemas posted in the Google Code Repository• Thanks to Keith for all the terrific work

• Issues being tracked in the Issue Tracker

• Marc Hadley has been implementing a translator for the hQuery Gateway to convert HQMF++ to Java Script

• Identified multiple items of interest for the HQMF++ improvement

• Will be posting each item and discussion topic as a thread.

Page 5: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question: (i) Code set identifier location

In the dataCriteriaSection it seems like the valueSet code can be in one of three places depending on the type of entry:

    ./cda:*Criteria/cda:participant/cda:roleParticipant/cda:code/@valueSet (medication, rx)    ./cda:*Criteria/cda:value/@valueSet (problem)    ./cda:*Criteria/cda:code/@valueSet (everything else)

Its not clear to me why you sometimes find the valueSet in code/@valueSet and other times in value/@valueSet. Its also not clear why, in the case of medication and rx, the valueSet id is nested inside the participant/roleParticipant element.

Keith’s Response:

Where the code goes depends on the representation of the information in the model.  For example, the medication is a participant in a medication act, the code being on the substance administered, not describing the act performed, so it codes on the entity in the role.    Similarly, the problem (or allergy) is what you observed (the result of a kind of observation) and goes in value, while observation/code is how you observed it.  Encounters and procedures are actions, and the code for those goes in procedure/code or encounter/code.

Page 6: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question:

(ii)Stratifier preconditions

Stratifier preconditions all use substanceAdministrationReference even when the thing they are referencing isn't a medication.

(iii) Measure variables within the dataCriteriaSection (e.g. StartDate) don't have identifiers but all the other entries do.

Keith’s Response:

(ii)That's a copy/paste error.  All of those should probably be ObservationReference, and I need an appropriate key/keyref pair in the schema to check conformance.  I will fix that shortly.

(iii) This is also an error, but this time due to the fact that I really didn't do a lot with these.  They still need to be made into parameters on the Measure Description, rather than criteria in the population measure.

Page 7: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question:

(iv) the default conjunctions for each population criteria,

IPP - AllTrueDENOM - AllTrueNUMER - AllTrueEXCL - AtLeastOneTrue

Keith’s Response:

(iv) – That is accurate

Page 8: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question:

(v) effectiveTime Many of these don't look right when compared to the corresponding NQF specification, e.g. the measure numerator looks for "Laboratory test result: HbA1c test, MOST RECENT value during the measurement period > 9.0%". The HQMF for this is: <entry>  <localVariableName>HbA1C</localVariableName>  <subsetCode code="RECENT"/>  <observationCriteria>    <id root="0" extension="HbA1C"/>    <code valueSet="2.16.840.1.113883.3.464.1.72"/>    <statusCode code="completed"/>    <value xsi:type="IVL_PQ">      <low value="9" unit="%"/>    </value>    <definition>      <observationReference moodCode="DEF">        <id root="0" extension="LabResults"/>      </observationReference>    </definition>  </observationCriteria></entry> I'd expect to see an effectiveTime element in there to restrict the dates to the measurement period like this

    <effectiveTime>       <low nullFlavor="DER">        <expression>StartDate</expression>      </low>      <high nullFlavor="DER">        <expression>EndDate</expression>      </high>    </effectiveTime>

Keith’s Response: Marc’s change is correct and he will make changes to reflect that

 

Page 9: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question:

Another example is the exclusions which looks for "Diagnosis active: steroid induced diabetes <=2 years before or simultaneously to “measurement end date". The HQMF for this is: <entry>  <localVariableName>HasSteroidInducedDiabetes</localVariableName>  <observationCriteria>    <id root="0" extension="HasSteroidInducedDiabetes"/>    <effectiveTime>      <low nullFlavor="DER">        <expression>StartDate</expression>      </low>      <high nullFlavor="DER">        <expression>EndDate</expression>      </high>    </effectiveTime>    <value xsi:type="CD" valueSet="2.16.840.1.113883.3.464.1.113"/>    <definition>      <observationReference moodCode="DEF">        <id root="0" extension="Problem"/>      </observationReference>    </definition>  </observationCriteria></entry> Here we have an effectiveDate but its start and end are only one year apart (StartDate=20100101, EndDate=20101231). Shouldn't the effectiveTime look like this instead:

    <effectiveTime>      <low nullFlavor="DER">        <expression>StartDate.add(new PQ(-1,"a"))</expression>      </low>      <high nullFlavor="DER">        <expression>EndDate</expression>      </high>    </effectiveTime>

Keith’s Response: Marc’s change is correct and he will make changes to reflect that

 

Page 10: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question:

The ones that are really confusing me though are, e.g., Medication dispensed: medications indicative of diabetes” <=2 years before or simultaneously to “measurement end date”; for which the HQMF is: <entry>  <localVariableName>DiabetesMedSupplied</localVariableName>  <supplyCriteria>    <id root="0" extension="DiabetesMedSupplied"/>    <effectiveTime xsi:type="IVL_TS">      <high nullFlavor="DER">        <expression>EndDate.add(new PQ(-2,"a"))</expression>      </high>    </effectiveTime>    <participant typeCode="PRD">      <roleParticipant classCode="THER">        <code valueSet="2.16.840.1.113883.3.464.1.94"/>      </roleParticipant>    </participant>    <definition>      <supplyReference moodCode="DEF">        <id root="0" extension="RX"/>      </supplyReference>    </definition>  </supplyCriteria></entry> 

I think the measure is looking for meds dispensed (EndDate-2y <= date <= EndDate). I think the markup above specifies meds dispensed 2 years or more before the EndDate. IOW, I think the above should be:This one seems right <entry>  <localVariableName>DiabetesMedSupplied</localVariableName>  <supplyCriteria>    <id root="0" extension="DiabetesMedSupplied"/>    <effectiveTime xsi:type="IVL_TS">      <low nullFlavor="DER">        <expression>EndDate.add(new PQ(-2,"a"))</expression>      </low>      <high nullFlavor="DER">        <expression>EndDate</expression>      </high>    </effectiveTime>    <participant typeCode="PRD">      <roleParticipant classCode="THER">        <code valueSet="2.16.840.1.113883.3.464.1.94"/>      </roleParticipant>    </participant>    <definition>      <supplyReference moodCode="DEF">        <id root="0" extension="RX"/>      </supplyReference>    </definition>  </supplyCriteria></entry>

Keith’s Response: Marc’s change is correct and he will make changes to reflect that

Page 11: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question:

(vi) Reference dates We have some age based criteria, e.g.: <entry>  <localVariableName>ageBetween17and64</localVariableName>  <observationCriteria>    <id root="0" extension="ageBetween17and64"/>    <code code="424144002" codeSystem="2.16.840.1.113883.6.96"      displayName="Age"/>    <value xsi:type="IVL_PQ">      <low value="17" unit="a"/>      <high value="64" unit="a"/>    </value>    <definition>      <observationReference moodCode="DEF">        <id root="0" extension="Demographics"/>      </observationReference>    </definition>  </observationCriteria></entry> However a patient's age depends on having a reference date on which the age is measured, we don't appear to have specified one here. I can see a couple of approaches to this:  

(a) We fix the reference date and define the value in our spec, e.g. we could use the end of the measurement period but that requires us always to specify an EndDate variable.(b) We use birthdate and dates instead, e.g. <entry>  <localVariableName>ageBetween17and64</localVariableName>  <observationCriteria>    <id root="0" extension="ageBetween17and64"/>    <code code="code_for_birthdate" codeSystem="2.16.840.1.113883.6.96"      displayName="Birthdate"/>    <value xsi:type="IVL_PQ">      <low nullFlavor="DER">        <expression>EndDate.add(new PQ(-64,"a"))</expression>      </low>      <high nullFlavor="DER">        <expression>EndDate.add(new PQ(-17,"a"))</expression>      </high>    </value>    <definition>      <observationReference moodCode="DEF">        <id root="0" extension="Demographics"/>      </observationReference>    </definition>  </observationCriteria></entry>

Keith’s Response: Either solution works.  Measure developers seem to like to work with age because it is easier to “think” about.  I think we should punt the question to NQF and others for feedback.  On codes, I have a set of codes for demographics from SNOMED.

Page 12: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question:

(vii) Cross references between data criteria.

In the stage 1 measures there are quite a few instance of data criteria being filtered based on other data criteria. E.g. procedure DURING encounter. How would this be captured ? Something like this perhaps:

<subsetCode code="DURING"> <observationReference>    <id root="0" extension="SomeEncounterID"/> </observationReference></subsetCode>

Keith’s Response: <entry>  <obsevationCriteria>    <code code="..." codeSystem="..."/>    <temporallyRelatedInformation typeCode='DURING'>      <encounterReference>       <id root="..." extension="..."/>      </encounterReference>    </temporallyRelatedInformation>  </observationCriteria></entry>   

That's actually an more implementation independent way to handle timing constraints, rather than the JavaScript derived time constraints.  That can be translated into appropriate JavaScript, SQL or other implementations.

Page 13: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

HQMF++ Progress

Marc’s Question:

(viii) Operator precedence. For HbA1C data criteria, the HQMF is:

      <entry>        <localVariableName>HbA1C</localVariableName>        <subsetCode code="RECENT"/>        <observationCriteria>          <id root="0" extension="HbA1C"/>          <code valueSet="2.16.840.1.113883.3.464.1.72"/>          <statusCode code="completed"/>          <value xsi:type="IVL_PQ">            <low value="9" unit="%"/>          </value>          <definition>            <observationReference moodCode="DEF">              <id root="0" extension="LabResults"/>            </observationReference>          </definition>        </observationCriteria>      </entry>

We have both a subset code (RECENT) and a value filtering step (result > 9%). Should this be translated to:

hba1cGreaterThanNine(RECENT(allHba1cResults)), orRECENT(hba1cGreaterThanNine(allHba1cResults))

The results could be quite different.

Marc’s Latest Suggestion:

<entry>  <localVariableName>HbA1C</localVariableName>  <observationCriteria>    <id root="0" extension="HbA1C"/>    <code valueSet="2.16.840.1.113883.3.464.1.72"/>    <definition>      <observationReference moodCode="DEF">        <id root="0" extension="LabResults"/>      </observationReference>    </definition>    <subsetting>      <statusCode code="completed"/>      <value xsi:type="IVL_PQ">        <low value="9" unit="%"/>      </value>      <subsetCode code="RECENT"/>    </subsetting>  </observationCriteria></entry>

Notice the new subsetting element that acts as a container for elements that describe addition constraints. The order of children here is significant, in the above you first reject any results whose status is not 'completed', you then reject any remaining results whose value is less than 9%, finally you reject all but the latest remaining result. If you want a different order of processing, you adjust the order of elements within the subsetting wrapper element.

Keith’s Response: …

Page 14: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

QRDA++ Specification Update

• Srinivas Velamuri created slides to share with the team

Page 15: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

RI Update

• RI Repository Link: http://code.google.com/p/query-health

• PopMedNet

• Continuing to work on the Plug-in implementation based on initial design• http://wiki.siframework.org/Query+Health+Reference+Implementation

• Staging site setup in the cloud owned by Lincoln Peak for testing plug-ins • Working with hQuery on integration • Posted Design Document for RESTful interfaces for hQuery/i2B2 integration

• i2B2• Design document in progress• Expect to be completed by Feb 20th .

• hQuery • Changes to hQuery composer (Added code to talk to PopMedNet Portal)• Working on converting HQMF to Java Script for execution

Page 16: Query Health Technical WG 2/2/2012. Agenda TopicTime Slot Administrative stuff and reminders2:00 – 2:05 pm HQMF Progress2:05 – 2:30 pm QRDA Update2:30

Next Steps

• Continue with the RI and Specification Activities• Soliciting volunteers who are experienced in R-MIM’s and XML/XSLT to help with

some of the upcoming tasks

• Volunteers who can represent queries using the proposed HQMF

• Provide comments on the Proposed changes for HQMF

• Soliciting volunteers for the QRDA Work stream

• Soliciting volunteers to help with coding and integration tasks

• Volunteers requiring access to the code repository• Please sign up for a google account at http://code.google.com• Project Repository - http://code.google.com/p/query-health/ • Sign up for the RI at http://

wiki.siframework.org/Query+Health+Reference+Implementation