Page tree
Skip to end of metadata
Go to start of metadata

The current $care-gaps operation on Measure will be re-defined to support Gaps in Care. The updated $care-gaps operation is net yet developed as part of the IG. The page contains the current documentation about In Parameters and Out Parameter for updating the $care-gaps operation and new profiles that need to be defined to support gaps in care use cases. 

Issue Tracker: Gaps in Care Operation Issue Tracker

Reference Implementation (RI): https://github.com/DBCG/davinci-gic/blob/master/README.md  (Postman scripts available on the README page)

Touchstone: https://touchstone.aegis.net/touchstone/testdefinitions?selectedTestGrp=/FHIRSandbox/DaVinci/FHIR4-0-1-Test/Gaps-In-Care&activeOnly=true&contentEntry=TEST_SCRIPTS

Touchstone DaVinci GapsInCare-Sandbox tests: https://touchstone.aegis.net/touchstone/execution?exec=202005141733541440370232

In Parameters:

Name

Card

Type

Documentation

cqf-ruler RI Status

periodStart

1..1

date

The start of the measurement period. In keeping with the semantics of the date parameter used in the FHIR search operation, the period will start at the beginning of the period implied by the supplied timestamp. E.g. a value of 2014 would set the period start to be 2014-01-01T00:00:01 inclusive

The start of the targeted gaps through period. This maybe the start of the measurement period defined by a measure, or a customized desired performance period start date determined by a payer, a provider, a measure program, and etc.. 


periodEnd

1..1

date

The end of the measurement period. The period will end at the end of the period implied by the supplied timestamp. E.g. a value of 2014 would set the period end to be 2014-12-31T23:59:59 inclusive

The end of the targeted gaps through period (the gaps through date). The gaps through date could be a past date or a future date.  For example, today's date is 2020-06-18, 1) if periodEnd date is 2020-09-30, it returns gaps through 2020-09-30, and 2) if the periodEnd date is 2020-05-31, it returns gaps through 2020-05-31. 


topic

0..*

string



The category or domain to be used to determine which measures are considered for the care gaps report. Such as screening measures, HEDIS measure domains, chronic disease measures. For example, setting topic to be screening measures will run care gaps on all screening measures. Topic may also be a "value set" that is defined with a list of domains/categories, etc.

Topic examples: "screening", "pediatric". When multiple topics are provided, it is expected to be union of measures in those topics.


subject

0..1

string (reference

(Patient | Group)

The patient or the patients of interest for which the gaps in care report will be created. Reference can reference either Patient or Group. If Group, it must be a group of Patient.

A group of patients could be defined by the attribution list generated from the Attribution IG, but this is not the only way to define a group of patients.

(We would like to answer the question: reference a Group or a Group id on the server?)

5/19/2020:  subject will be a reference to either Patient or Group. Must provide either Patient/123 or Group/123, cannot simply provide 123. If only provide 123, then the operation would not know if it is a Patient reference or a Group reference. 


program

0..*

string

The programs that a provider (either practitioner or provider organization) participates in, e.g., risk based, value based, or other performance program such as CMS MIPS, HQR programs.

5/26/2020: program is represented in Measure using element useContext (useageContext). When code attribute of useContext is "program" ("program" is a code in the UsageContextType value set),  then the value attribute of useContext would be a specific program. useContext is 0..*, multiple programs could be specified for a measure.


practitioner


0..1

string (reference)

Practitioner

Reference to a practitioner for which the gaps in care report will be created. For a practitioner focused gaps in care report, this is a required In Parameter. Need to make sure that practitioner is authorized to get the care-gaps report for. What measures the practitioner are eligible or qualified.


organization

0..1

string (reference)

Organization

Provider organization for which the gaps in care report will be created. For a provider organization focused gaps in care report, this is a required In Parameter.

5/19/2020: renamed the parameter from providerOrganization to organization.


status

0..1

code

(open-gaps | closed-gaps)

If no status is provided, default is "all"

The status of gaps for a measure or measures, whether the gaps is an open gap or a closed gap. For a positive proportion measure, gap means it is not being in the numerator. For an inverse (negative) proportion measure [e.g., Diabetes: Hemoglobin A1c (HbA1c) Poor Control (> 9%)], gap means it is being in the numerator.


measure

0..*

string (reference)

Measure

What measure(s) the gaps in care are for. E.g., CMS125v8 (Breast Cancer Screening), CMS130v8 (Colorectal Cancer Screening)


Notes:  

The following lists the minimum In Parameters must be provided when call the $care-gaps operations:

  • periodStart
  • periodStop
  • subject | provider | organization   - must provide either a subject, or an organization (e.g., TIN), or a provider + organization combination (e.g., NPI + TIN)

Out Parameter:

Returns a Bundle of document Composition (bundle type "document")

Question: Should the return parameter be re-defined as 0..* or 1..*? E.g., if a $care-gaps operation asks for open gaps for a list of measures, and there are no patients that have any open gaps for the measures, should we return nothing (cardinality 0..*) or always return a bunlde to indicate no gap (cardinality 1..*)? 

Name

Cardinality

Type

Binding

Profile

Documentation

return

0..*

Bundle



The result of the care gaps report will be returned as a document bundle with a MeasureReport entry for each included measure

Note: This is the only out parameter

Returned Bundle structure:

Bundle (type  - value "document")

entry  (the first entry is a Composition)

Composition  

subject - reference Patient

section

focus - reference MeasureReport (for colorectal cancer screening). The focus always references a patient specific MeasureReport. This is only the reference (a pointer), the actual MeasureReport content is included in another entry in this Bundle (bundle/entry)

entry - reference DetectedIssue  (Likely need a Care Gap DetectedIssue Profile) (Entered a FHIR tracker was entered  FHIR-27043) (See notes for DetectedIssue from Connectathon at the bottom of the page)

section

focus - reference MeasureReport (for cervical cancer screening)

entry - reference DetectedIssue  (Likely need a Care Gap DetectedIssue Profile)

entry 

MeasureReport  

(This is an individual MeasureReport for the patient for a specific measure, which uses DEQM Individual MeasureReport ProfileThis contains the actual content that is referenced in composition/section/focus above, e.g., Colorectal Cancer Screening measure)

entry

MeasureReport  

(This is an individual MeasureReport for the patient for a specific measure, which uses DEQM Individual MeasureReport ProfileThis contains the actual content that is referenced in composition/section/focus above, e.g., Cervical Cancer Screening measure)

Gaps in Care Bundle Profile

Need to define a Gaps In Care Bundle Profile

Name

Flags

Card.

Type

Description & Constraints

Notes 

cqf-ruler RI Status

Bundle

ΣIN


Resource

Contains a collection of resources

.........

+ Rule: A document must have an identifier with a system and a value

+ Rule: A document must have a date

+ Rule: A document must have a Composition as the first resource



   identifier

Σ

0..1

Identifier

Persistent identifier for the bundle



   type

Σ

1..1

code

document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection

BundleType (Required)

constrain type code:

code="document"


   timestamp

Σ

0..1

instant

When the bundle was assembled

The system timestamp of when the bundle was generated


   total

ΣI

0..1

unsignedInt

If search, the total number of matches



   link

Σ

0..*

BackboneElement

Links related to this Bundle



      relation

Σ

1..1

string

See http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1



      url

Σ

1..1

uri

Reference details for the link



   entry

ΣI

0..*

1..*

BackboneElement

Entry in the bundle - will have a resource or information

+ Rule: must be a resource unless there's a request or response

+ Rule: fullUrl cannot be a version specific reference

This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type

constrain cardinality to 1..*

1st entry must be a Composition (GIC Composition Profile)

additional entries that reference MeasureReport


      link

Σ

0..*

see link

Links related to this entry



      fullUrl

Σ

0..1

uri

URI for resource (Absolute URL server address or URI for UUID/OID)



       resource

Σ

0..1

Resource

A resource in the bundle



Gaps in Care Composition Profile

Name

Flags

Card.

Type

Description & Constraints

Notescqf-ruler RI Status

 Composition

TU


DomainResource

A set of resources composed into a single coherent clinical statement with clinical attestation

Elements defined in Ancestors: idmetaimplicitRuleslanguagetextcontainedextensionmodifierExtension



 identifier

Σ

0..1

Identifier

Version-independent identifier for the Composition



 status

?!Σ

1..1

code

preliminary | final | amended | entered-in-error

CompositionStatus (Required)




 type

Σ

1..1

CodeableConcept

Kind of composition (LOINC if possible)

FHIR Document Type Codes (Preferred)

For the September ballot, will define a FHIR code system with 

"system": "http://hl7.org/fhir/us/davinci-deqm/CodeSystem/deqm-document-type",

"code": "care-gap-report"

Will request a LOINC code in the meantime


 category

Σ

0..*

CodeableConcept

Categorization of Composition Document Class Value Set (Example)



 subject

Σ

0..1

1..1

Reference(Any)

Who and/or what the composition is about

Constrain to Reference (QI-Core Patient) only

 encounter

Σ

0..1

Reference(Encounter)

Context of the Composition



 date

Σ

1..1

dateTime

Composition editing time

The time the Care Gaps Report was run. 

(missing from the RI returned bundle)


 author

Σ

1..*

Reference(Practitioner | PractitionerRole | 

Device | Patient | RelatedPerson | Organization)

Who and/or what authored the composition

(missing from the RI returned bundle)

6/4: device (e.g., system generates the report)

organization (Producer that generates the report)


 title

Σ

1..1

string

Human Readable name/title

E.g., "Care Gap Report"

 confidentiality

Σ

0..1

code

As defined by affinity domain V3 Value SetConfidentialityClassification (Required)



 attester


0..*

BackboneElement

Attests to accuracy of composition



    mode


1..1

code

personal | professional | legal | official

CompositionAttestationMode (Required)



    time


0..1

dateTime

When the composition was attested



    party


0..1

Reference(Patient | RelatedPerson | 

Practitioner | PractitionerRole | Organization)

Who attested the composition



 custodian

Σ

0..1

Reference(Organization)

Organization which maintains the composition

Producers have the obligations to either keep the care gaps report for future reference or have the capability to reproduce (exact time stamps as it was originally generated) for auditing purpose.

In an ideal FHIR environment, you would be able to use version histories to recreate a snapshot at a point in time when the report was generated, but not sure how it runs and will be challenging in real world..

From providers perspective, archiving things, because memberships could change. Cannot necessarily re-generate the exact same report at the time it was originally created. 

Keeping the custodian is useful to support the use cases, but not making it required in the spec. Since different states may have different regulations. E.g., CA has a stricter regulation. 


 relatesTo


0..*

BackboneElement

Relationships to other compositions/documents



    code


1..1

code

replaces | transforms | signs | appends DocumentRelationshipType (Required)



    target[x]


1..1


Target of the relationship



 event

Σ

0..*

BackboneElement

The clinical service(s) being documented



     code

Σ

0..*

CodeableConcept

Code(s) that apply to the event being documented v3 Code System ActCode (Example)



     period

Σ

0..1

Period

The period covered by the documentation



     detail

Σ

0..*

Reference(Any)

The event(s) being documented



 section

I

0..*

1..*

BackboneElement

Composition is broken into sections

+ Rule: A section must contain at least one of text, entries, or sub-sections

+ Rule: A section can only have an emptyReason if it is empty

Must contain at least one section, each section corresponds to a measure

      title


0..1

string

Label for section (e.g. for ToC)

The would be the measure name (referenced in focus)

      code


0..1

CodeableConcept

Classification of section (recommended)

Document Section Codes (Example)



      author


0..*

Reference(Practitioner | PractitionerRole | Device 

Patient | RelatedPerson | Organization)

Who and/or what authored the section



      focus


0..1

1..1

Reference(Any)

Who/what the section is about, when it is not about the subject of composition

Constrain to Reference (DEQM Gaps Individual MeasureReport) only, 

http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/gaps-indv-measurereport-deqm

      text

I

0..1

Narrative

Text summary of the section, for human interpretation



      mode


0..1

code

working | snapshot | changes ListMode (Required)



      orderedBy


0..1

CodeableConcept

Order of section entries List Order Codes (Preferred)



      entry

I

0..*

Reference(Any)

A reference to data that supports this section

Constrain this to Reference (Gaps in Care DetectedIssue) 

The entry is optional. Will only return DetectedIssue when there is an open gap. 


     emptyReason

I

0..1

CodeableConcept

Why the section is empty List Empty Reasons (Preferred)



     section

I

0..*

see section

Nested Section



Gaps in Care DetectedIssue Profile

Need to define a  profile on DetectedIssue to support Gaps in Care 

Scope for the September ballot: will not consider life cycle of a detected issue, for example, a previously open gaps is now closed, or a previously open gaps is still open, etc. Will only address whether there is an open or closed gap at a given moment (e.g., report run time). 

Questions:

  • Should a DetectedIssue be returned for a measure in the return Bundle only when there is an open gap for that measure?  
    • 5/28 WG call: DetectedIssue be 0..1, will only return DetectedIssue when there is an open gap. 

Name

Flags

Card.

Type

Description & Constraints

Notes

cqf-ruler RI Status

DetectedIssue

TU


DomainResource

Clinical issue with action

Elements defined in Ancestors: idmetaimplicitRuleslanguagetextcontainedextensionmodifierExtension



   identifier

Σ

0..*

Identifier

Unique id for the detected issue



   status

?!Σ

1..1

code

registered | preliminary | final | amended + ObservationStatus (Required)

5/28 WG call: "registered" is more appropriate. When there is a gap, it is considered as "registered" by payer, it is not "final". For the Sept. ballot, will provide guidance to use "registered", but do not constrain it to "registered" only. As other status codes may be needed for future. 


   code

Σ

0..1

1..1

CodeableConcept

Issue Category, e.g. drug-drug, duplicate therapy, etc.

Detected Issue Category (Preferred)

system = "http://hl7.org/fhir/us/davinci-deqm/CodeSystem/detectedissue-category"

code = "care-gap"

5/28 WG call: The code will be "care-gap". Since the $care-gap operation will only return DetectedIssue when there is a gap, the code here serves as a flag to indicate there is an detectedIssue and the issue is a care gap.

7/2: tracker to add care-gap to detectedissue-category

FHIR-27910


   severity

Σ

0..1

code

high | moderate | low DetectedIssueSeverity (Required)

5/28 WG call: The current severity code high/moderate/low seems sufficient. Will keep as it is for the Sept ballot. 

Will look into "priority" (review past documentation about priority and may need to define priority and add to glossary) and consider for future.


   patient

Σ

0..1

Reference(Patient)

Associated patient

Gaps in Care Composition that contains DetectedIssue required subject (Patient), this could leave it as optional.


   identified[x]

Σ

0..1


When identified

Time of the gaps in care report is run?

5/28 WG call: need analyze and discuss how various types of time used by gaps in care be mapped to data elements in gaps in care related profiles


identifiedDateTime



dateTime




identifiedPeriod



Period




   author

Σ

0..1

Reference(Practitioner | PractitionerRole | Device)

The provider or device that identified the issue

device from the evaluation server


   implicated

Σ

0..*

Reference(Any)

Problem resource



   evidence


0..*

BackboneElement

Supporting evidence

6/4: make evidence 1..*, if there is a gap, then must provide an evidence (identified by a measure report)


       code


0..*

CodeableConcept

Manifestation Manifestation and Symptom Codes (Example)



       detail


0..*

Reference(Any)

Supporting information



    detail


0..1

string

Description and context

Reference(MeasureReport).

Question: Since the return Bundle contains focus that points to the MeasureReport already, is there still a need to reference the MeasureReport?

6/4: yes, will always reference the evidence (measure report)


    reference


0..1

uri

Authority for issue



    mitigation


0..*

BackboneElement

Step taken to address



        action


1..1

CodeableConcept

What mitigation? Detected Issue Mitigation Action (Preferred)



        date


0..1

dateTime

Date committed



        author


0..1

Reference(Practitioner | PractitionerRole)

Who is committing?



DEQM Individual MeasureReport Profile  

The existing DEQM Individual MeasureReport Profile supports the Gaps in Care use cases. There is no need to define a new Gaps in Care MeasureReport profile. 

Name

Flags

Card.

Type

Description & Constraints

Example

Notes

MeasureReport

I

0..*

MeasureReport

Results of a measure evaluation


One MeasureReport contains data for one measure

To include multiple measures, it will be a Bundle of MeasureReport

extension-reportingVendor

SI

0..1

Reference(DEQMOrganizationProfile)

Vendor information

URL: http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-reportingVendor



extension-certificationIdentifier

SI

0..1

Identifier

CMS EHR Certifciation ID

URL: http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-certificationIdentifier



identifier

ΣI

0..*

Identifier

Additional identifier for the MeasureReport



status

?!SΣI

1..1

code

complete | pending | error

Binding: MeasureReportStatus (required)

complete


type

SΣI

1..1

code

individual | subject-list | summary | data-collection

Binding: MeasureReportType (required)

Fixed Value: individual

individual

The MeasureReport that is returned in the Bundle is always for a single patient.

(So do not get confused that this needs to be a subject-list, a group of patients)

measure

SΣI

1..1

canonical(Measure)

What measure was calculated

A Reference to the "Colorectal screening measure" Measure resource


subject

SΣI

1..1

Reference(QICorePatient)

What the patient the report is for

Patient_123

The MeasureReport that is returned in the Bundle is always for a single patient. So this is a reference to a patient.

date

SΣI

1..1

dateTime

When the report was generated

2020-05-07


reporter

SΣI

1..1

Reference(DEQMOrganizationProfile)

The organization where the measure was completed

Organization of the practitioner who runs the gaps in care report


period

SΣI

1..1

Period

What period the report covers

deqm-1: Date precision SHALL be at least to day ( YYYY-MM-DD )

2020-04-01 to 2020-04-30

This would be reporting/performance period

6/4: This would be the periodStart and periodEnd in parameters for gaps in care report

improvementNotation

?!ΣI

0..1

1..1

CodeableConcept

increase | decrease

Binding: MeasureImprovementNotation (required)

increase

Making it a required 1..1 and must support

(Entered a FHIR tracker FHIR-27044 to request to change the cardinality of improvementNotation from 0..1 to 1..1)

group

SI

0..*

BackboneElement

Measure results for each group


In Gaps in Care, add description about how group is 0..*, but is required through content driven validation (required specifically by a particular measure)

http://hl7.org/fhir/clinicalreasoning-quality-reporting.html#reporting-population-data

    code

ΣI

0..1

CodeableConcept

Meaning of the group



    population

SI

1..*

BackboneElement

The populations in the group



        code

SΣI

1..1

CodeableConcept

initial-population | numerator | numerator-exclusion | denominator | denominator-exclusion | denominator-exception | measure-population | measure-population-exclusion | measure-observation 

Binding: MeasurePopulationType (extensible)

numerator

Considered whether to add a new code like "gap", but by adding a new code we would not be able to re-use the the same machinery (e.g., $evaluate-measure). 

        count

I

0..1

integer

Size of the population



    measureScore

SΣI

1..1

Quantity

What score this group achieved

1

measureScore is the field that $evalaute-measure operation is based on to determine gap.

If patient is in numerator; 0 indicates not

  • For positive measure (improvementNotation is increase), numerator (inclusion) - numerator exclusion is the gap
    • Current logic: if measureScore is 0 (< 1.0) then there is a gap  (is implemented as <1.0 to be generic)
  • For inverse (negative) measure (improvementNotation is decrease), denominator (inclusion) - denominator exclusion - denominator exception is the gap
    • Current logic: if measureScore is 1 (> 0) then there is a gap (is implemented as > 0 to be generic)
  • Then the $care-gap operation would base on measureScore to populate the gap-status information in Composition in the returned Bundle.

    stratifier

I

0..*

BackboneElement

Stratification results



        code

I

0..*

CodeableConcept

What stratifier of the group



        stratum

I

0..*

BackboneElement

Stratum results, one for each unique value, or set of values, in the stratifier, or stratifier components



            value

I

0..1

CodeableConcept

The stratum value, e.g. male



            component

I

0..*

BackboneElement

Stratifier component values



                 code

I

1..1

CodeableConcept

What stratifier component of the group



                 value

I

1..1

CodeableConcept

The stratum component value, e.g. male



            population

I

0..*

BackboneElement

Population results in this stratum



                 code

I

0..1

CodeableConcept

initial-population | numerator | numerator-exclusion | denominator | denominator-exclusion | denominator-exception | measure-population | measure-population-exclusion | measure-observation

Binding: MeasurePopulationType (extensible)



                 count

I

0..1

integer

Size of the population



            measureScore

I

0..1

Quantity

What score this stratum achieved



evaluatedResource

SI

0..*

Reference(Resource)

What data was used to calculate the measure score



Potential Use Cases/Items for Future Ballot Considerations

This is to track some of the uses cases/items discussed. These will not be part of the September 2020 ballot, but maybe for consideration for future ballots. 

  • Care Gap Report creation date time - this is covered in the September ballot
  • Report Date Range  
    • Period of time this report covers- different from reporting period – may be wider range than the reporting period.
    • e.g Colonoscopy – look back is 10 years
    • From is: a determined relevant period – per measure (eg 10 years back for a colonoscopy
    • To is:
    • Final: Need “Report date range” in the report but is not a “filter”

(6/2: Evaluated the event/period element in Composition, but do not think it is the correct use for this. Propose to leave this out for the September ballot, until there is a clear use case.)

6/4: Producer (payer) only cares about the time period the care gaps they are looking for 

  • As-of Date 
    • Running report today but data is only from a week ago = as-of date
    • “When data was crunched”
    • “to and from” dates (different from measurement period)
    • Would this be a “search field”
    • Final: Need “as-of” in the report but is not a “filter”

(6/2: Propose to leave this out of scope from the September ballot and potentially consider it in future development phases)

"As of" indicates when the last data was loaded by the system supporting the $care-gaps

As an gap analyst for the provider, I need to know what gaps exist in my provider's patients for the next quarter.  Today is 6/2/2020 but I am running for Q3 (July 1, 2020 to September 30, 2020). I need the date I ran the report as well as the period I ran it for on the GIC report.

The report would show me all gaps that would be open or are already closed during Q3. 

6/4: some producers (payer) run care gaps prospectively, some producers may not have the capability to run it prospectively, they can only show you what gaps in care they have as of today but not prospectively. Need to be clear on this, so it is not misleading, and expectations are clear. 


  • No labels