Giter Club home page Giter Club logo

cqf-measures's Introduction

CQF Measures

This implementation guide describes an approach to representing electronic Clinical Quality Measures (eCQMs) using the FHIR Clinical Reasoning Module and Clinical Quality Language (CQL) in the U.S. Realm. However, this Implementation Guide can be usable for multiple use cases across domains, and much of the content is likely to be usable outside the U.S. Realm.

Commits to this repository will automatically trigger a new build of the IG, which will then be published to the following location:

http://build.fhir.org/ig/HL7/cqf-measures

Build log is available here: http://ig-build.fhir.org.s3-website-us-east-1.amazonaws.com/logs/HL7/cqf-measures

Full debugging information is available here: http://build.fhir.org/ig/HL7/cqf-measures/debug.tgz

Local Build

To initially build locally, clone the repository and run the following commands in order below in the root command:

  1. _updatePublisher[.bat | .sh] - Process retrieves the current version of the IG publisher and stores it within the input-cache folder. The IG publisher is updated on a regular basis but this process does not have to be executed for every instance of the publication process.

  2. _genonce[.bat | .sh] - This initiates the publication process. Launching the .bat file (Windows) or .sh file (Unix/Mac) will launch HL7's IGPublisher program and build/publish the IG one time.

Dependencies

Before the instructions in the above "Local Build" section will work, you need to install several primary dependencies.

Java

Go to http://www.oracle.com/technetwork/java/javase/downloads/ and download the latest (version 8 or higher) JDK for your platform, and install it.

Ruby

Jekyll requires Ruby version 2.1 or greater. Depending on your operating system, you may already have Ruby bundled with it. Otherwise, or if you need a newer version, go to https://www.ruby-lang.org/en/downloads/ for directions.

Jekyll

Go to https://jekyllrb.com and follow the instructions there, for example gem install jekyll bundler. The end result of this should be that the binary "jekyll" is now in your path.

cqf-measures's People

Contributors

abdullah-git1 avatar alexanderkiel avatar bryantaustin13 avatar brynrhodes avatar c-schuler avatar dand9959 avatar ducvtran avatar grahamegrieve avatar healthedata1 avatar jpercival avatar jreyno77 avatar lmichlsen avatar mdnazmulkarim avatar mholck avatar mzuhl avatar p9g avatar pmechineniesac avatar sliver007 avatar yanheras avatar zoedalley avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cqf-measures's Issues

FHIR Valueset URLs

In CQL examples, lines of CQL like
valueset "Encounter Inpatient": 'urn:oid:2.16.840.1.113883.3.666.5.307'
should become
valueset "Encounter Inpatient": 'https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307/$expand'

Feedback on COL measure

  1.  Add to
    
// added FecalOccultResult.status in {'final', 'amended', 'corrected'}
// commented out the provenance.recorded statement - let's ignore provenance for now...
define "Fecal Occult Blood Test Performed":
               [Observation: "Fecal Occult Blood Test (FOBT)"] FecalOccultResult
                              where FecalOccultResult.status in {'final', 'amended', 'corrected'}
                                             and FecalOccultResult.value is not null
                                             // and FecalOccultResult.FHIR.provenance.recorded during "Measurement Period"

This preliminary status:

// added FecalOccultResult.status in {'final', 'amended', 'corrected'}
// commented out the provenance.recorded statement - let's ignore provenance for now...
define "Fecal Occult Blood Test Performed":
               [Observation: "Fecal Occult Blood Test (FOBT)"] FecalOccultResult
                              where FecalOccultResult.status in {'final', 'amended', 'corrected',’preliminary’}
                                             and FecalOccultResult.value is not null
                                             // and FecalOccultResult.FHIR.provenance.recorded during "Measurement Period"
  1.  With the last line commented out, how do you get timing?  We also noticed same on FITDNA.
    
  2.  We don’t think the status on the procedure is correct, we think it should be “completed” not “active”
    

packaging-tests-cases definition suggestion from Zulip

https://chat.fhir.org/#narrow/stream/406765-cds/topic/QM.3A.20test.20package/near/421519402

René Spronk
12:43 PM
https://build.fhir.org/ig/HL7/cqf-measures/packaging.html#packaging-test-cases defines a Test bundle to (mandatory) have a MeasureReport as a kind of assertion as to what the outcome of the Measure evaluation should be. This seems a kludgy way of doing things - wouldn't it be better to use TestScript - this has the advantage that we'd be using a standard FHIR mechanism for testing, and that it would also allow for the definition of assertions when testing Libraries.

Feedback on QDM measures

  1.  On below, we are wondering why the visit status is commented out – for CQL on FHIR created from QDM.
    
define "Qualifying Encounters":
    ([Encounter: "Office Visit"] visit
                 union [Encounter."Annual Wellness Visit"]
                 union [Encounter."Preventive Care Services - Established Office Visit, 18 and Up"]
                 union [Encounter."Preventive Care Services-Initial Office Visit, 18 and Up"]
                 union [Encounter."Home Healthcare Services"] ) ValidEncounter
                   where ValidEncounter.relevantPeriod during "Measurement Period"
                                // and visit.status = 'finished'
                                             Think above should be ValidEncounter.status
  1.  We also noticed that same file is calling what appears to be the library for QDM at the top
    
// changed to use STU3 FHIR model
using FHIR version '3.0.0'
 
include Adult_Outpatient_Encounters version '1.1.000' called AdultOutpatientEncounters
include MATGlobalCommonFunctions version '2.0.000' called Global
include Hospice version '1.0.000' called Hospice
// added FHIRHelpers conversion Library
include FHIRHelpers version '3.0.0' called FHIRHelpers
  1.  Should this be “Display” instead of “Code” – since it has the description? Would that change the fhirpath?
    
define "Hospice.Has Hospice":
               exists (Encounter."Encounter Inpatient"] DischargeHospice
                              where ( DischargeHospice.hospitalization.dischargeDisposition as Code ~ "Discharge to home for hospice care (procedure)"
                                                            or DischargeHospice.hospitalization.dischargeDisposition as Code ~ "Discharge to healthcare facility for hospice care (procedure)"
  1.  Should these be colons?
    
define "Qualifying Encounters":
    [Encounter: "Office Visit"] visit
                 union [Encounter."Annual Wellness Visit"]
                 union [Encounter."Preventive Care Services - Established Office Visit, 18 and Up"]
                 union [Encounter."Preventive Care Services-Initial Office Visit, 18 and Up"]
                 union [Encounter."Home Healthcare Services"] ) ValidEncounter
                   where ValidEncounter.relevantPeriod during "Measurement Period"
                                // and visit.status = 'finished'

define "Hospice.Has Hospice":
               exists (Encounter."Encounter Inpatient"] DischargeHospice
                              where ( DischargeHospice.hospitalization.dischargeDisposition as Code ~ "Discharge to home for hospice care (procedure)"
                                                            or DischargeHospice.hospitalization.dischargeDisposition as Code ~ "Discharge to healthcare facility for hospice care (procedure)"
                              )
                                             and DischargeHospice.period ends during "Measurement Period"
)
               or exists ( task."Hospice care ambulatory"] HospiceOrder
                                             where HospiceOrder.AuthoredOn during "Measurement Period"
               )
               or exists ( task."Hospice care ambulatory"] HospicePerformed
                                             where HospicePerformed.period overlaps "Measurement Period"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.