/* This example is a work in progress and should not be considered a final specification or recommendation for guidance. This example will help guide and direct the process of finding conventions and usage patterns that meet the needs of the various stakeholders in the measure development community. */ library TSCComponent version '0.0.001' using FHIR version '4.0.1' include FHIRHelpers version '4.0.1' called FHIRHelpers include SupplementalDataElements version '2.0.000' called SDE include MATGlobalCommonFunctions version '5.0.000' called Global codesystem "LOINC": 'http://loinc.org' codesystem "CPT": 'http://www.ama-assn.org/go/cpt' valueset "Annual Wellness Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240' valueset "Face-to-Face Interaction": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1048' valueset "Home Healthcare Services": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016' valueset "Limited Life Expectancy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1259' valueset "Medical Reason": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1007' valueset "Occupational Therapy Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1011' valueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001' valueset "Ophthalmological Services": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1285' valueset "Physical Therapy Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1022' valueset "Preventive Care Services - Established Office Visit, 18 and Up": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025' valueset "Preventive Care Services - Group Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027' valueset "Preventive Care Services - Other": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1030' valueset "Preventive Care Services-Individual Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026' valueset "Preventive Care Services-Initial Office Visit, 18 and Up": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023' valueset "Psych Visit - Diagnostic Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492' valueset "Psych Visit - Psychotherapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496' valueset "Psychoanalysis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1141' valueset "Speech and Hearing Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1530' valueset "Tobacco Non-User": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1189' valueset "Tobacco Use Cessation Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.509' valueset "Tobacco Use Cessation Pharmacotherapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1190' valueset "Tobacco Use Screening": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1278' valueset "Tobacco User": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1170' code "Birth date": '21112-8' from "LOINC" display 'Birth date' code "Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)": '96156' from "CPT" display 'Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)' code "Health behavior intervention, individual, face-to-face; initial 30 minutes": '96158' from "CPT" display 'Health behavior intervention, individual, face-to-face; initial 30 minutes' parameter "Measurement Period" Interval 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 "Preventive Visit During Measurement Period": ( ["Encounter": "Annual Wellness Visit"] union ["Encounter": "Preventive Care Services - Established Office Visit, 18 and Up"] union ["Encounter": "Preventive Care Services - Group Counseling"] union ["Encounter": "Preventive Care Services - Other"] union ["Encounter": "Preventive Care Services-Individual Counseling"] union ["Encounter": "Preventive Care Services-Initial Office Visit, 18 and Up"] ) PreventiveEncounter where PreventiveEncounter.period during "Measurement Period" and PreventiveEncounter.status = 'finished' define "Denominator 1": "Initial Population" define "Denominator 3": "Initial Population" define "Initial Population": exists ( ["Patient"] BirthDate where Global."CalendarAgeInYearsAt" ( FHIRHelpers.ToDate ( BirthDate.birthDate ), start of "Measurement Period" ) >= 18 ) and ( Count("Office Based Visit During Measurement Period")>= 2 or exists "Preventive Visit During Measurement Period" ) define "Medical Reason for Not Screening for Tobacco Use": ["Observation": "Tobacco Use Screening"] NoTobaccoUseScreening where NoTobaccoUseScreening.issued during "Measurement Period" and "Not Done"(NoTobaccoUseScreening) and "Not Done Reason in Medical Reason"(NoTobaccoUseScreening) and NoTobaccoUseScreening.status = 'final' define "Medical Reason for Not Ordering Tobacco Cessation Pharmacotherapy": ["MedicationRequest": "Tobacco Use Cessation Pharmacotherapy"] NoCessationPharmacotherapyOrdered where NoCessationPharmacotherapyOrdered.authoredOn during "Measurement Period" and NoCessationPharmacotherapyOrdered.status = 'completed' and ( ( "Not Done"(NoCessationPharmacotherapyOrdered) and "Not Done Reason in Medical Reason"(NoCessationPharmacotherapyOrdered) ) or ( NoCessationPharmacotherapyOrdered.doNotPerform = true and NoCessationPharmacotherapyOrdered.statusReason in "Medical Reason" ) ) define "Medical Reason for Not Counseling Tobacco User": ["Procedure": "Tobacco Use Cessation Counseling"] NoTobaccoCessationCounseling where Global."Normalize Interval" ( NoTobaccoCessationCounseling.performed ) starts during "Measurement Period" and ( ( NoTobaccoCessationCounseling.status = 'not-done' and NoTobaccoCessationCounseling.statusReason in "Medical Reason" ) or ( "Not Done"(NoTobaccoCessationCounseling) and "Not Done Reason in Medical Reason"(NoTobaccoCessationCounseling) ) ) define "Tobacco Cessation Pharmacotherapy Ordered": ["MedicationRequest": "Tobacco Use Cessation Pharmacotherapy"] CessationPharmacotherapyOrdered where CessationPharmacotherapyOrdered.authoredOn during "Measurement Period" and CessationPharmacotherapyOrdered.status = 'active' // MedicationStatement is not available in R5, known publication issue //define "Active Pharmacotherapy for Tobacco Cessation": // ["MedicationStatement": "Tobacco Use Cessation Pharmacotherapy"] TakingCessationPharmacotherapy // where Global."Normalize Interval" ( TakingCessationPharmacotherapy.effective ) overlaps after "Measurement Period" // and TakingCessationPharmacotherapy.status in { 'active', 'completed' } define "Tobacco Cessation Counseling Given": ["Encounter": "Tobacco Use Cessation Counseling"] TobaccoCessationCounseling where TobaccoCessationCounseling.period during "Measurement Period" and TobaccoCessationCounseling.status = 'finished' define "Numerator 2": exists "Tobacco Cessation Counseling Given" or exists "Tobacco Cessation Pharmacotherapy Ordered" //or exists "Active Pharmacotherapy for Tobacco Cessation" define "Has Limited Life Expectancy": exists ( ["Condition"] LimitedLifeExpectancy where Global."Prevalence Period" ( LimitedLifeExpectancy ) overlaps after "Measurement Period" and LimitedLifeExpectancy.clinicalStatus ~ ToConcept(Global."active") ) define "Denominator Exceptions 1": exists "Medical Reason for Not Screening for Tobacco Use" or "Has Limited Life Expectancy" define "Denominator Exceptions 2": exists "Medical Reason for Not Counseling Tobacco User" or exists "Medical Reason for Not Ordering Tobacco Cessation Pharmacotherapy" or "Has Limited Life Expectancy" define "Denominator Exceptions 3": exists "Medical Reason for Not Screening for Tobacco Use" or exists "Medical Reason for Not Counseling Tobacco User" or exists "Medical Reason for Not Ordering Tobacco Cessation Pharmacotherapy" or "Has Limited Life Expectancy" define "Office Based Visit During Measurement Period": ( ["Encounter": "Health behavior intervention, individual, face-to-face; initial 30 minutes"] union ["Encounter": "Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)"] union ["Encounter": "Home Healthcare Services"] union ["Encounter": "Occupational Therapy Evaluation"] union ["Encounter": "Office Visit"] union ["Encounter": "Ophthalmological Services"] union ["Encounter": "Physical Therapy Evaluation"] union ["Encounter": "Psych Visit - Diagnostic Evaluation"] union ["Encounter": "Psych Visit - Psychotherapy"] union ["Encounter": "Psychoanalysis"] union ["Encounter": "Speech and Hearing Evaluation"] ) OfficeBasedEncounter where OfficeBasedEncounter.period during "Measurement Period" and OfficeBasedEncounter.status = 'finished' define "Most Recent Tobacco Use Screening Indicates Tobacco Non User": ( Last(["Observation": "Tobacco Use Screening"] TobaccoUseScreening where Global."Normalize Interval"(TobaccoUseScreening.effective)overlaps "Measurement Period" sort by start of Global."Normalize Interval"(effective) )) MostRecentTobaccoUseScreening where MostRecentTobaccoUseScreening.value in "Tobacco Non-User" define "Most Recent Tobacco Use Screening Indicates Tobacco User": ( Last(["Observation": "Tobacco Use Screening"] TobaccoUseScreening where Global."Normalize Interval"(TobaccoUseScreening.effective)overlaps "Measurement Period" sort by start of Global."Normalize Interval"(effective) )) MostRecentTobaccoUseScreening where MostRecentTobaccoUseScreening.value in "Tobacco User" define "Denominator 2": "Initial Population" and "Most Recent Tobacco Use Screening Indicates Tobacco User" is not null define "Numerator 1": "Most Recent Tobacco Use Screening Indicates Tobacco Non User" is not null or "Most Recent Tobacco Use Screening Indicates Tobacco User" is not null define "Numerator 3": "Most Recent Tobacco Use Screening Indicates Tobacco Non User" is not null or ( "Most Recent Tobacco Use Screening Indicates Tobacco User" is not null and ( exists "Tobacco Cessation Counseling Given" or exists "Tobacco Cessation Pharmacotherapy Ordered" //or exists "Active Pharmacotherapy for Tobacco Cessation" ) ) define function "Not Done"(res DomainResource ): if ( res R where ( "GetModiferExtension"(R, 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-notDone').value = true ) ) is not null then true else false define function "Not Done Reason in Medical Reason"(res DomainResource ): if ( res R where "GetModiferExtension"(R, 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-notDoneReason').value in "Medical Reason" ) is not null then true else false define function "GetModifierExtensions"(res DomainResource, url String ): res.modifierExtension E where E.url = ( url ) return E define function "GetModiferExtension"(res DomainResource, url String ): singleton from "GetModifierExtensions"(res, url)