dQM QICore Content Implementation Guide
2025.0.0 - CI Build

dQM QICore Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-qicore-2025/ and changes regularly. See the Directory of published versions

Library: CMS90FHIRFSAforHeartFailure

Official URL: https://madie.cms.gov/Library/CMS90FHIRFSAforHeartFailure Version: 1.0.000
Active as of 2025-08-22 Responsible: Centers for Medicare & Medicaid Services (CMS) Computable Name: CMS90FHIRFSAforHeartFailure
Other Identifiers: https://madie.cms.gov/login#CMS90FHIRFSAforHeartFailure (use: official, )

CMS90FHIRFSAforHeartFailure

Metadata
Title CMS90FHIRFSAforHeartFailure
Version 1.0.000
Identifier CMS90FHIRFSAforHeartFailure
Steward (Publisher) Centers for Medicare & Medicaid Services (CMS)
Description CMS90FHIRFSAforHeartFailure
Type [http://terminology.hl7.org/CodeSystem/library-type#logic-library]
Data Requirement Type: Encounter
Profile(s): http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter
Must Support Elements: type
Code Filter(s):
Path: type
ValueSet: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001
Data Requirement Type: Encounter
Profile(s): http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter
Must Support Elements: type
Code Filter(s):
Path: type
ValueSet: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080
Data Requirement Type: Encounter
Profile(s): http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter
Must Support Elements: type
Code Filter(s):
Path: type
ValueSet: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089
Data Requirement Type: Observation
Profile(s): http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation-screening-assessment
Must Support Elements: value
Data Requirement Type: Condition
Profile(s): http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition-problems-health-concerns
Must Support Elements: code
Code Filter(s):
Path: code
ValueSet: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.376
Data Requirement Type: Condition
Profile(s): http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition-problems-health-concerns
Must Support Elements: code
Code Filter(s):
Path: code
Code(s): http://snomed.info/sct#702956004: 'Severe cognitive impairment (finding)'
Data Requirement Type: Condition
Profile(s): http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition-encounter-diagnosis
Must Support Elements: code
Code Filter(s):
Path: code
ValueSet: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.376
Data Requirement Type: Condition
Profile(s): http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition-encounter-diagnosis
Must Support Elements: code
Code Filter(s):
Path: code
Code(s): http://snomed.info/sct#702956004: 'Severe cognitive impairment (finding)'
Library Content
CQL Content
library CMS90FHIRFSAforHeartFailure version '1.0.000'

using QICore version '6.0.0'

include FHIRHelpers version '4.4.000' called FHIRHelpers
include QICoreCommon version '4.0.000' called QICoreCommon
include SupplementalDataElements version '5.1.000' called SDE
include Hospice version '6.18.000' called Hospice
include Status version '1.15.000' called Status

codesystem "LOINC": 'http://loinc.org'
codesystem "SNOMEDCT": 'http://snomed.info/sct'

valueset "Heart Failure": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.376'
valueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'
valueset "Virtual Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'
valueset "Telephone Visits": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'

code "Emotional score [MLHFQ]": '85609-6' from "LOINC" display 'Emotional score [MLHFQ]'
code "Kansas City Cardiomyopathy Questionnaire - 12 item [KCCQ-12]": '86923-0' from "LOINC" display 'Kansas City Cardiomyopathy Questionnaire - 12 item [KCCQ-12]'
code "Overall summary score [KCCQ-12]": '86924-8' from "LOINC" display 'Overall summary score [KCCQ-12]'
code "Overall summary score [KCCQ]": '71940-1' from "LOINC" display 'Overall summary score [KCCQ]'
code "Physical limitation score [KCCQ]": '72195-1' from "LOINC" display 'Physical limitation score [KCCQ]'
code "Physical score [MLHFQ]": '85618-7' from "LOINC" display 'Physical score [MLHFQ]'
code "PROMIS-10 Global Mental Health (GMH) score T-score": '71969-0' from "LOINC" display 'PROMIS-10 Global Mental Health (GMH) score T-score'
code "PROMIS-10 Global Physical Health (GPH) score T-score": '71971-6' from "LOINC" display 'PROMIS-10 Global Physical Health (GPH) score T-score'
code "PROMIS-29 Anxiety score T-score": '71967-4' from "LOINC" display 'PROMIS-29 Anxiety score T-score'
code "PROMIS-29 Depression score T-score": '71965-8' from "LOINC" display 'PROMIS-29 Depression score T-score'
code "PROMIS-29 Fatigue score T-score": '71963-3' from "LOINC" display 'PROMIS-29 Fatigue score T-score'
code "PROMIS-29 Pain interference score T-score": '71961-7' from "LOINC" display 'PROMIS-29 Pain interference score T-score'
code "PROMIS-29 Physical function score T-score": '71959-1' from "LOINC" display 'PROMIS-29 Physical function score T-score'
code "PROMIS-29 Satisfaction with participation in social roles score T-score": '71957-5' from "LOINC" display 'PROMIS-29 Satisfaction with participation in social roles score T-score'
code "PROMIS-29 Sleep disturbance score T-score": '71955-9' from "LOINC" display 'PROMIS-29 Sleep disturbance score T-score'
code "Quality of life score [KCCQ]": '72189-4' from "LOINC" display 'Quality of life score [KCCQ]'
code "Self-efficacy score [KCCQ]": '72190-2' from "LOINC" display 'Self-efficacy score [KCCQ]'
code "Severe cognitive impairment (finding)": '702956004' from "SNOMEDCT" display 'Severe cognitive impairment (finding)'
code "Social limitation score [KCCQ]": '72196-9' from "LOINC" display 'Social limitation score [KCCQ]'
code "Symptom stability score [KCCQ]": '72194-4' from "LOINC" display 'Symptom stability score [KCCQ]'
code "Total symptom score [KCCQ]": '72191-0' from "LOINC" display 'Total symptom score [KCCQ]'
code "VR-12 Mental component summary (MCS) score - oblique method T-score": '72026-8' from "LOINC" display 'VR-12 Mental component summary (MCS) score - oblique method T-score'
code "VR-12 Mental component summary (MCS) score - orthogonal method T-score": '72028-4' from "LOINC" display 'VR-12 Mental component summary (MCS) score - orthogonal method T-score'
code "VR-12 Physical component summary (PCS) score - oblique method T-score": '72025-0' from "LOINC" display 'VR-12 Physical component summary (PCS) score - oblique method T-score'
code "VR-12 Physical component summary (PCS) score - orthogonal method T-score": '72027-6' from "LOINC" display 'VR-12 Physical component summary (PCS) score - orthogonal method T-score'
code "VR-36 Mental component summary (MCS) score - oblique method T-score": '71990-6' from "LOINC" display 'VR-36 Mental component summary (MCS) score - oblique method T-score'
code "VR-36 Mental component summary (MCS) score - orthogonal method T-score": '72008-6' from "LOINC" display 'VR-36 Mental component summary (MCS) score - orthogonal method T-score'
code "VR-36 Physical component summary (PCS) score - oblique method T-score": '71989-8' from "LOINC" display 'VR-36 Physical component summary (PCS) score - oblique method T-score'
code "VR-36 Physical component summary (PCS) score - orthogonal method T-score": '72007-8' from "LOINC" display 'VR-36 Physical component summary (PCS) score - orthogonal method T-score'

parameter "Measurement Period" Interval<DateTime>

context Patient

define "SDE Ethnicity":
  SDE."SDE Ethnicity"

define "SDE Payer":
  SDE."SDE Payer"

define "SDE Race":
  SDE."SDE Race"

define "SDE Sex":
  SDE."SDE Sex"

define "Initial Population":
  AgeInYearsAt(date from start of "Measurement Period") >= 18
    and exists ( ( ( [ConditionProblemsHealthConcerns: "Heart Failure"]
          union [ConditionEncounterDiagnosis: "Heart Failure"]
      ).verified ( ) ) HeartFailure
        where HeartFailure.prevalenceInterval ( ) overlaps before day of "Measurement Period"
    )
    and exists ( "Outpatient Encounters with at least one subsequent Outpatient Encounter during Measurement Period" )

define "Denominator":
  "Initial Population"

define "Denominator Exclusions":
  Hospice."Has Hospice Services"
    or exists ( ( ( [ConditionProblemsHealthConcerns: "Severe cognitive impairment (finding)"]
          union [ConditionEncounterDiagnosis: "Severe cognitive impairment (finding)"]
      ).verified ( ) ) SevereCognitiveImpairment
        where SevereCognitiveImpairment.prevalenceInterval ( ) overlaps day of "Measurement Period"
    )

define "Numerator":
  ( "Has Encounter with Initial and Follow Up PROMIS10 Assessments" )
    or ( "Has Encounter with Initial and Follow Up PROMIS29 Assessments" )
    or ( "Has Encounter with Initial and Follow Up VR12 Oblique Assessments" )
    or ( "Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments" )
    or ( "Has Encounter with Initial and Follow Up VR36 Oblique Assessments" )
    or ( "Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments" )
    or ( "Has Encounter with Initial and Follow Up MLHFQ Assessments" )
    or ( "Has Encounter with Initial and Follow Up KCCQ12 Assessments" )
    or ( "Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments" )
    or ( "Has Encounter with Initial and Follow Up KCCQ Total Score Assessments" )

define "Outpatient Encounters with at least one subsequent Outpatient Encounter during Measurement Period":
  from
    "Qualifying Encounters" OfficeVisit1
    with "Qualifying Encounters" OfficeVisit2
      such that OfficeVisit2.period starts 1 day or more after day of end of OfficeVisit1.period

define "Qualifying Encounters":
  ( ( [Encounter: "Office Visit"]
      union [Encounter: "Telephone Visits"]
      union [Encounter: "Virtual Encounter"]
  ).isEncounterPerformed ( ) ) ValidEncounter
    where ValidEncounter.period during day of "Measurement Period"

define "Has Encounter with Initial and Follow Up PROMIS10 Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date PROMIS10 Total Assessment Completed" InitialPROMIS10Date,
      "Date PROMIS10 Total Assessment Completed" FollowupPROMIS10Date
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialPROMIS10Date 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupPROMIS10Date during day of Interval[date from InitialPROMIS10Date + 30 days, date from InitialPROMIS10Date + 180 days]
      return ValidEncounters
  )

define "Date PROMIS10 Total Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "PROMIS-10 Global Mental Health (GMH) score T-score"] ).isAssessmentPerformed ( ) ) PROMIS10MentalScore,
    ( ( [ObservationScreeningAssessment: "PROMIS-10 Global Physical Health (GPH) score T-score"] ).isAssessmentPerformed ( ) ) PROMIS10PhysicalScore
    let PROMIS10MentalScoreDate: date from start of PROMIS10MentalScore.effective.toInterval ( ),
    PROMIS10PhysicalScoreDate: date from start of PROMIS10PhysicalScore.effective.toInterval ( )
    where PROMIS10MentalScoreDate same day as PROMIS10PhysicalScoreDate
      and ( PROMIS10MentalScore as ObservationScreeningAssessment ).value is not null
      and ( PROMIS10PhysicalScore as ObservationScreeningAssessment ).value is not null
    return PROMIS10MentalScoreDate

define "Has Encounter with Initial and Follow Up PROMIS29 Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date PROMIS29 Total Assessment Completed" InitialPROMIS29Date,
      "Date PROMIS29 Total Assessment Completed" FollowupPROMIS29Date
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialPROMIS29Date 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupPROMIS29Date during day of Interval[date from InitialPROMIS29Date + 30 days, date from InitialPROMIS29Date + 180 days]
      return ValidEncounters
  )

define "Date PROMIS29 Total Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "PROMIS-29 Sleep disturbance score T-score"] ).isAssessmentPerformed ( ) ) Promis29Sleep,
    ( ( [ObservationScreeningAssessment: "PROMIS-29 Satisfaction with participation in social roles score T-score"] ).isAssessmentPerformed ( ) ) Promis29SocialRoles,
    ( ( [ObservationScreeningAssessment: "PROMIS-29 Physical function score T-score"] ).isAssessmentPerformed ( ) ) Promis29Physical,
    ( ( [ObservationScreeningAssessment: "PROMIS-29 Pain interference score T-score"] ).isAssessmentPerformed ( ) ) Promis29Pain,
    ( ( [ObservationScreeningAssessment: "PROMIS-29 Fatigue score T-score"] ).isAssessmentPerformed ( ) ) Promis29Fatigue,
    ( ( [ObservationScreeningAssessment: "PROMIS-29 Depression score T-score"] ).isAssessmentPerformed ( ) ) Promis29Depression,
    ( ( [ObservationScreeningAssessment: "PROMIS-29 Anxiety score T-score"] ).isAssessmentPerformed ( ) ) Promis29Anxiety
    let Promis29SleepDate: date from start of Promis29Sleep.effective.toInterval ( ),
    Promis29SocialRolesDate: date from start of Promis29SocialRoles.effective.toInterval ( ),
    Promis29PhysicalDate: date from start of Promis29Physical.effective.toInterval ( ),
    Promis29PainDate: date from start of Promis29Pain.effective.toInterval ( ),
    Promis29FatigueDate: date from start of Promis29Fatigue.effective.toInterval ( ),
    Promis29DepressionDate: date from start of Promis29Depression.effective.toInterval ( ),
    Promis29AnxietyDate: date from start of Promis29Anxiety.effective.toInterval ( )
    where Promis29SleepDate same day as Promis29SocialRolesDate
      and Promis29SocialRoles.value is not null
      and Promis29SleepDate same day as Promis29PhysicalDate
      and Promis29Physical.value is not null
      and Promis29SleepDate same day as Promis29PainDate
      and Promis29Pain.value is not null
      and Promis29SleepDate same day as Promis29FatigueDate
      and Promis29Fatigue.value is not null
      and Promis29SleepDate same day as Promis29DepressionDate
      and Promis29Depression.value is not null
      and Promis29SleepDate same day as Promis29AnxietyDate
      and Promis29Anxiety.value is not null
      and Promis29Sleep.value is not null
    return Promis29SleepDate

define "Has Encounter with Initial and Follow Up VR12 Oblique Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date VR12 Oblique Total Assessment Completed" InitialVR12ObliqueDate,
      "Date VR12 Oblique Total Assessment Completed" FollowupVR12ObliqueDate
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialVR12ObliqueDate 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupVR12ObliqueDate during day of Interval[date from InitialVR12ObliqueDate + 30 days, date from InitialVR12ObliqueDate + 180 days]
      return ValidEncounters
  )

define "Date VR12 Oblique Total Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "VR-12 Mental component summary (MCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR12MentalAssessment,
    ( ( [ObservationScreeningAssessment: "VR-12 Physical component summary (PCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR12PhysicalAssessment
    let VR12MentalAssessmentDate: date from start of VR12MentalAssessment.effective.toInterval ( ),
    VR12PhysicalAssessmentDate: date from start of VR12PhysicalAssessment.effective.toInterval ( )
    where VR12MentalAssessmentDate same day as VR12PhysicalAssessmentDate
      and ( VR12MentalAssessment as ObservationScreeningAssessment ).value is not null
      and ( VR12PhysicalAssessment as ObservationScreeningAssessment ).value is not null
    return VR12MentalAssessmentDate

define "Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date VR12 Orthogonal Total Assessment Completed" InitialVR12OrthogonalDate,
      "Date VR12 Orthogonal Total Assessment Completed" FollowupVR12OrthogonalDate
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialVR12OrthogonalDate 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupVR12OrthogonalDate during day of Interval[date from InitialVR12OrthogonalDate + 30 days, date from InitialVR12OrthogonalDate + 180 days]
      return ValidEncounters
  )

define "Date VR12 Orthogonal Total Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "VR-12 Mental component summary (MCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR12MentalAssessment,
    ( ( [ObservationScreeningAssessment: "VR-12 Physical component summary (PCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR12PhysicalAssessment
    let VR12MentalAssessmentDate: date from start of VR12MentalAssessment.effective.toInterval ( ),
    VR12PhysicalAssessmentDate: date from start of VR12PhysicalAssessment.effective.toInterval ( )
    where VR12MentalAssessmentDate same day as VR12PhysicalAssessmentDate
      and ( VR12MentalAssessment as ObservationScreeningAssessment ).value is not null
      and ( VR12PhysicalAssessment as ObservationScreeningAssessment ).value is not null
    return VR12MentalAssessmentDate

define "Has Encounter with Initial and Follow Up VR36 Oblique Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date VR36 Oblique Total Assessment Completed" InitialVR36ObliqueDate,
      "Date VR36 Oblique Total Assessment Completed" FollowupVR36ObliqueDate
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialVR36ObliqueDate 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupVR36ObliqueDate during day of Interval[date from InitialVR36ObliqueDate + 30 days, date from InitialVR36ObliqueDate + 180 days]
      return ValidEncounters
  )

define "Date VR36 Oblique Total Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "VR-36 Mental component summary (MCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR36MentalAssessment,
    ( ( [ObservationScreeningAssessment: "VR-36 Physical component summary (PCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR36PhysicalAssessment
    let VR36MentalAssessmentDate: date from start of VR36MentalAssessment.effective.toInterval ( ),
    VR36PhysicalAssessmentDate: date from start of VR36PhysicalAssessment.effective.toInterval ( )
    where VR36MentalAssessmentDate same day as VR36PhysicalAssessmentDate
      and ( VR36MentalAssessment as ObservationScreeningAssessment ).value is not null
      and ( VR36PhysicalAssessment as ObservationScreeningAssessment ).value is not null
    return VR36MentalAssessmentDate

define "Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date VR36 Orthogonal Total Assessment Completed" InitialVR36OrthogonalDate,
      "Date VR36 Orthogonal Total Assessment Completed" FollowupVR36OrthogonalDate
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialVR36OrthogonalDate 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupVR36OrthogonalDate during day of Interval[date from InitialVR36OrthogonalDate + 30 days, date from InitialVR36OrthogonalDate + 180 days]
      return ValidEncounters
  )

define "Date VR36 Orthogonal Total Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "VR-36 Mental component summary (MCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR36MentalAssessment,
    ( ( [ObservationScreeningAssessment: "VR-36 Physical component summary (PCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR36PhysicalAssessment
    let VR36MentalAssessmentDate: date from start of VR36MentalAssessment.effective.toInterval ( ),
    VR36PhysicalAssessmentDate: date from start of VR36PhysicalAssessment.effective.toInterval ( )
    where VR36MentalAssessmentDate same day as VR36PhysicalAssessmentDate
      and ( VR36MentalAssessment as ObservationScreeningAssessment ).value is not null
      and ( VR36PhysicalAssessment as ObservationScreeningAssessment ).value is not null
    return VR36MentalAssessmentDate

define "Has Encounter with Initial and Follow Up MLHFQ Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date MLHFQ Total Assessment Completed" InitialMLHFQDate,
      "Date MLHFQ Total Assessment Completed" FollowupMLHFQDate
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialMLHFQDate 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupMLHFQDate during day of Interval[date from InitialMLHFQDate + 30 days, date from InitialMLHFQDate + 180 days]
      return ValidEncounters
  )

define "Date MLHFQ Total Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "Physical score [MLHFQ]"] ).isAssessmentPerformed ( ) ) MLHFQPhysical,
    ( ( [ObservationScreeningAssessment: "Emotional score [MLHFQ]"] ).isAssessmentPerformed ( ) ) MLHFQEmotional
    let MLHFQPhysicalDate: date from start of MLHFQPhysical.effective.toInterval ( ),
    MLHFQEmotionalDate: date from start of MLHFQEmotional.effective.toInterval ( )
    where MLHFQPhysicalDate same day as MLHFQEmotionalDate
      and ( MLHFQPhysical as ObservationScreeningAssessment ).value is not null
      and ( MLHFQEmotional as ObservationScreeningAssessment ).value is not null
    return MLHFQPhysicalDate

define "Has Encounter with Initial and Follow Up KCCQ12 Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date KCCQ12 Total Assessment Completed" InitialKCCQ12Date,
      "Date KCCQ12 Total Assessment Completed" FollowupKCCQ12Date
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialKCCQ12Date 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupKCCQ12Date during day of Interval[date from InitialKCCQ12Date + 30 days, date from InitialKCCQ12Date + 180 days]
      return ValidEncounters
  )

define "Date KCCQ12 Total Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "Kansas City Cardiomyopathy Questionnaire - 12 item [KCCQ-12]"] ).isAssessmentPerformed ( ) ) KCCQ12Item,
    ( ( [ObservationScreeningAssessment: "Overall summary score [KCCQ-12]"] ).isAssessmentPerformed ( ) ) KCCQ12Summary
    let KCCQ12ItemDate: date from start of KCCQ12Item.effective.toInterval ( ),
    KCCQ12SummaryDate: date from start of KCCQ12Summary.effective.toInterval ( )
    where KCCQ12ItemDate same day as KCCQ12SummaryDate
      and ( KCCQ12Item as ObservationScreeningAssessment ).value is not null
      and ( KCCQ12Summary as ObservationScreeningAssessment ).value is not null
    return KCCQ12ItemDate

define "Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date KCCQ Domain Assessment Completed" InitialKCCQAssessmentDate,
      "Date KCCQ Domain Assessment Completed" FollowupKCCQAssessmentDate
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialKCCQAssessmentDate 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupKCCQAssessmentDate during day of Interval[date from InitialKCCQAssessmentDate + 30 days, date from InitialKCCQAssessmentDate + 180 days]
      return ValidEncounters
  )

define "Date KCCQ Domain Assessment Completed":
  from
    ( ( [ObservationScreeningAssessment: "Quality of life score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQLifeQuality,
    ( ( [ObservationScreeningAssessment: "Symptom stability score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSymptomStability,
    ( ( [ObservationScreeningAssessment: "Self-efficacy score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSelfEfficacy,
    ( ( [ObservationScreeningAssessment: "Total symptom score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSymptoms,
    ( ( [ObservationScreeningAssessment: "Physical limitation score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQPhysicalLimits,
    ( ( [ObservationScreeningAssessment: "Social limitation score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSocialLimits
    let KCCQLifeQualityDate: date from start of KCCQLifeQuality.effective.toInterval ( ),
    KCCQSymptomStabilityDate: date from start of KCCQSymptomStability.effective.toInterval ( ),
    KCCQSelfEfficacyDate: date from start of KCCQSelfEfficacy.effective.toInterval ( ),
    KCCQSymptomsDate: date from start of KCCQSymptoms.effective.toInterval ( ),
    KCCQPhysicalLimitsDate: date from start of KCCQPhysicalLimits.effective.toInterval ( ),
    KCCQSocialLimitsDate: date from start of KCCQSocialLimits.effective.toInterval ( )
    where KCCQLifeQualityDate same day as KCCQSymptomStabilityDate
      and ( KCCQSymptomStability as ObservationScreeningAssessment ).value is not null
      and KCCQLifeQualityDate same day as KCCQSelfEfficacyDate
      and ( KCCQSelfEfficacy as ObservationScreeningAssessment ).value is not null
      and KCCQLifeQualityDate same day as KCCQSymptomsDate
      and ( KCCQSymptoms as ObservationScreeningAssessment ).value is not null
      and KCCQLifeQualityDate same day as KCCQPhysicalLimitsDate
      and ( KCCQPhysicalLimits as ObservationScreeningAssessment ).value is not null
      and KCCQLifeQualityDate same day as KCCQSocialLimitsDate
      and ( KCCQSocialLimits as ObservationScreeningAssessment ).value is not null
      and ( KCCQLifeQuality as ObservationScreeningAssessment ).value is not null
    return KCCQLifeQualityDate

define "Date KCCQ Total Assessment Completed":
  ( ( [ObservationScreeningAssessment: "Overall summary score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSummaryScore
    where ( KCCQSummaryScore as ObservationScreeningAssessment ).value is not null
    return date from start of KCCQSummaryScore.effective.toInterval ( )

define "Has Encounter with Initial and Follow Up KCCQ Total Score Assessments":
  exists ( from
      "Qualifying Encounters" ValidEncounters,
      "Date KCCQ Total Assessment Completed" InitialKCCQTotalScore,
      "Date KCCQ Total Assessment Completed" FollowupKCCQTotalScore
      where ValidEncounters.period ends 180 days or more before day of end of "Measurement Period"
        and InitialKCCQTotalScore 14 days or less on or before day of end of ValidEncounters.period
        and date from FollowupKCCQTotalScore during day of Interval[date from InitialKCCQTotalScore + 30 days, date from InitialKCCQTotalScore + 180 days]
      return ValidEncounters
  )
Generated using version 0.4.8 of the sample-content-ig Liquid templates