The project that I'm looking at is how to create a Measure Specification in FHIR. Interestingly, some of the available components I need are already present in the specification.
Looking over the HQMF Release 2 Standard, I need resources to support the following major components of a measure definition:
HQMF Measure Document | FHIR Resource of Resource Component |
---|---|
/QualityMeasureDocument | Composition |
./author ./custodian ./verifier ./participant | Composition.author Composition.custodian Composition.attester N/A |
./controlVariable/measurePeriod ./subjectOf/measureAttribute | Observation Observation |
./definition/ValueSet | ValueSet |
/QualityMeasureDocument//MeasureDescriptionSection | Composition.section |
/QualityMeasureDocument.//DataCriteriaSection | Composition.section |
./definition | N/A |
./*Criteria | Query |
/QualityMeasureDocument//Population Criteria Section | Composition.section |
Numerator, Denomonator ... Criteria | N/A |
/QualityMeasureDocument/MeasureObservationSection | Composition.section |
./measureObservationDefinition | N/A |
The four missing pieces deserve some discussion.
./participant is a way in HQMF to describe the contributions of a participant that aren't in the role of author, verifier or custodian. I'd handle that as an extension.
./definition isn't needed because of the way that Query works. A criterion in HQMF uses Query By Example. In FHIR, we'd simply describe the query that was supposed to be executed using the Query resource. Because of the way that resource works, model defintions aren't necessarily needed, or can be virtualized in the way that the Query URI is specified to be indicative of what set of resources are being queried. Each query results in the production of a list of resources which is used on either the PopulationCriteriaSection or the MeasureObservationSection.
The various ways to configure counters like InitialPopulationCriteria needs a new resource to perform AND/OR/NOT Boolean operations over the results of executing the various Query resources to produce a count. These are essentially set operations, like union, intersection and difference. There are a couple of ways to approach this. Today, I could cheat this using the List resource and specifying codes that indicate how to compute a count using codes like Union, Intersection, and Difference, with the list references pointing to the queries to be performed. In fact, there's no reason NOT to do this since, as far as I can tell, List codes aren't fixed by FHIR.
Finally, we come to the tricky bit, MeasureObservationDefinition, which specifies how to compute a measure such as average wait time in the ED. There's no existing way in FHIR to specify computations, which is the same problem we had in HQMF Release 2.0, and sort of punted on it by adding Appendix C on Expression Languages to HQMF R2. I'm going to take a pass on figuring that out right now, as it may require a FHIR-based RESTful service or a Computation resource or something else to do that.
What this tells me is that I could build an implementation guide today to express MOST of what would show up in an HQMF Release 2.0 based measure definition TODAY.
I also think it would be possible to build a transform from an existing HQMF R2 measure into that. It might not handle every last bit, and transforming from Data Criterion into Query resources would be the hardest part, so probably worth investigating first.
Oh, and BTW, this also means that FHIR could be used to support Query Health.
So the surprising answer is yes, we probably could do at least 80%.
Keith
P.S. One caveat is that the code:valueset=[id|uri] would need to be supported by a FHIR server. This capability isn't in the DSTU, but I've asked for it.