Convert your FHIR JSON -> XML and back here. The CDA Book is sometimes listed for Kindle here and it is also SHIPPING from Amazon! See here for Errata.

Monday, March 31, 2014

Could we do HQMF Using the FHIR DSTU Today?

I struggle sometimes coming up with content to write here, especially when I'm working on internal vs. external projects.  So just for fun I've come up with a little external project for myself that I can talk about here.  We'll see how it progresses, and eventually it may become a real project in HL7.

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 DocumentFHIR Resource of Resource Component
/QualityMeasureDocument//Population Criteria SectionComposition.section
Numerator, Denomonator ... Criteria 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.  Expletive Deleted!  Did I just say that?  Yes.  I did.

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%.


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.

1 comment:

  1. Being able to use a FHIR spec for measures, or more simply cohort definitions, is really appealing. Seems like HQMF V2 has limited updake, but if FHIR streamlined the spec/process there would be more interest in standards for sharing measure specs/cohort definitions. Could you suggest resources re: progress since you wrote this last year?