Draft dQM CMS Content Implementation Guide
2025.1.0 - CI Build

Draft dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.1.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-cms-2025/ and changes regularly. See the Directory of published versions

: CMS156FHIRHighRiskMedsElderly - XML Representation

Draft as of 2026-09-19

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="CMS156FHIRHighRiskMedsElderly"/>
  <text>
    <status value="extensions"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
  <table class="narrative-table">
    <tbody>
<tr>


<th colspan="2" scope="row" class="row-header"><a name="metadata"> </a>Metadata</th>


</tr>







<tr>


<th scope="row" class="row-header">Version</th>



<td class="content-container">1.1.000</td>


</tr>
















<tr>


<th scope="row" class="row-header">Status</th>



<td class="content-container">Draft</td>


</tr>







































<tr>


<th scope="row" class="row-header">Type</th>



<td class="content-container">
    <a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library


</td>


</tr>













<tr>


<th colspan="2" scope="row" class="row-header"><a name="parameters"> </a>Parameters</th>


</tr>


<tr>


<th scope="row" class="row-header">Parameter</th>



<td class="content-container">None</td>


</tr>








  <tr>


<th colspan="2" scope="row" class="row-header">Library Content</th>


</tr>
  
    
    <tr>
      <th scope="row" class="row-header">CQL Content</th>
      <td>
        <a name="cql-content"> </a>
        <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
NOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.
*/
library CMS156FHIRHighRiskMedsElderly version '1.1.000'

using USQualityCore version '0.1.0-cibuild'
using USCore version '6.1.0-derived'
using FHIR version '4.0.1'

include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon
include hl7.fhir.us.cql.CumulativeMedicationDuration version '2.0.0-ballot' called CMD
include hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon
include hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements

include Hospice version '7.1.000' called Hospice
include PalliativeCare version '2.1.000' called PalliativeCare
include CQMCommon version '5.1.000' called CQMCommon
include USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon
include SupplementalDataElements version '6.1.000' called SDE
include Status version '2.1.000' called Status

codesystem &quot;RXNORM&quot;: 'http://www.nlm.nih.gov/research/umls/rxnorm'
codesystem &quot;CPT&quot;: 'http://www.ama-assn.org/go/cpt'

valueset &quot;Alcohol Withdrawal&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1209'
valueset &quot;Annual Wellness Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240'
valueset &quot;Benzodiazepine Withdrawal&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1208'
valueset &quot;Bipolar Disorder&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.128'
valueset &quot;Care Services in Long Term Residential Facility&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014'
valueset &quot;Desiccated Thyroid Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1060'
valueset &quot;Digoxin Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1065'
valueset &quot;Dipyridamole Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1051'
valueset &quot;Discharge Services Nursing Facility&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1013'
valueset &quot;Doxepin Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1067'
valueset &quot;Generalized Anxiety Disorder&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1210'
valueset &quot;Guanfacine Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.11.1252'
valueset &quot;Home Healthcare Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016'
valueset &quot;Megestrol Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1247'
valueset &quot;Meperidine Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1248'
valueset &quot;Meprobamate Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1057'
valueset &quot;Nifedipine Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1053'
valueset &quot;Nursing Facility Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012'
valueset &quot;Office Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'
valueset &quot;Ophthalmological Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1285'
valueset &quot;Potentially Harmful Antidepressants for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1054'
valueset &quot;Potentially Harmful Antihistamines for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1043'
valueset &quot;Potentially Harmful Antiinfectives for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1481'
valueset &quot;Potentially Harmful Antiparkinsonian Agents for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1049'
valueset &quot;Potentially Harmful Antipsychotics for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1523'
valueset &quot;Potentially Harmful Barbiturates for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1055'
valueset &quot;Potentially Harmful Benzodiazepines for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1522'
valueset &quot;Potentially Harmful Estrogens for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1058'
valueset &quot;Potentially Harmful Gastrointestinal Antispasmodics for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1050'
valueset &quot;Potentially Harmful Nonbenzodiazepine Hypnotics for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1480'
valueset &quot;Potentially Harmful Pain Medications for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1063'
valueset &quot;Potentially Harmful Skeletal Muscle Relaxants for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1062'
valueset &quot;Potentially Harmful Sulfonylureas for Older Adults&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1059'
valueset &quot;Preventive Care Services Established Office Visit, 18 and Up&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025'
valueset &quot;Preventive Care Services Initial Office Visit, 18 and Up&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023'
valueset &quot;REM Sleep Behavior Disorder&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1207'
valueset &quot;Schizophrenia&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1205'
valueset &quot;Seizure Disorder&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1206'
valueset &quot;Telephone Visits&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'
valueset &quot;Virtual Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'

code &quot;1 ML digoxin 0.1 MG/ML Injection&quot;: '204504' from &quot;RXNORM&quot; display '1 ML digoxin 0.1 MG/ML Injection'
code &quot;2 ML digoxin 0.25 MG/ML Injection&quot;: '104208' from &quot;RXNORM&quot; display '2 ML digoxin 0.25 MG/ML Injection'
code &quot;digoxin 0.05 MG/ML Oral Solution&quot;: '393245' from &quot;RXNORM&quot; display 'digoxin 0.05 MG/ML Oral Solution'
code &quot;digoxin 0.0625 MG Oral Tablet&quot;: '245273' from &quot;RXNORM&quot; display 'digoxin 0.0625 MG Oral Tablet'
code &quot;digoxin 0.125 MG Oral Tablet&quot;: '197604' from &quot;RXNORM&quot; display 'digoxin 0.125 MG Oral Tablet'
code &quot;digoxin 0.25 MG Oral Tablet&quot;: '197606' from &quot;RXNORM&quot; display 'digoxin 0.25 MG Oral Tablet'
code &quot;doxepin 10 MG Oral Capsule&quot;: '1000048' from &quot;RXNORM&quot; display 'doxepin 10 MG Oral Capsule'
code &quot;doxepin 10 MG/ML Oral Solution&quot;: '1000054' from &quot;RXNORM&quot; display 'doxepin 10 MG/ML Oral Solution'
code &quot;doxepin 100 MG Oral Capsule&quot;: '1000058' from &quot;RXNORM&quot; display 'doxepin 100 MG Oral Capsule'
code &quot;doxepin 150 MG Oral Capsule&quot;: '1000064' from &quot;RXNORM&quot; display 'doxepin 150 MG Oral Capsule'
code &quot;doxepin 25 MG Oral Capsule&quot;: '1000070' from &quot;RXNORM&quot; display 'doxepin 25 MG Oral Capsule'
code &quot;doxepin 3 MG Oral Tablet&quot;: '966787' from &quot;RXNORM&quot; display 'doxepin 3 MG Oral Tablet'
code &quot;doxepin 50 MG Oral Capsule&quot;: '1000076' from &quot;RXNORM&quot; display 'doxepin 50 MG Oral Capsule'
code &quot;doxepin 6 MG Oral Tablet&quot;: '966793' from &quot;RXNORM&quot; display 'doxepin 6 MG Oral Tablet'
code &quot;doxepin 75 MG Oral Capsule&quot;: '1000097' from &quot;RXNORM&quot; display 'doxepin 75 MG Oral Capsule'
code &quot;ergoloid mesylates, USP 1 MG Oral Tablet&quot;: '318179' from &quot;RXNORM&quot; display 'ergoloid mesylates, USP 1 MG Oral Tablet'
code &quot;Office or other outpatient visit for the evaluation and management of an established patient that may not require the presence of a physician or other qualified health care professional&quot;: '99211' from &quot;CPT&quot; display 'Office or other outpatient visit for the evaluation and management of an established patient that may not require the presence of a physician or other qualified health care professional'

parameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;
  default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)

context Patient

define &quot;Initial Population&quot;:
  AgeInYearsAt(date from 
    end of &quot;Measurement Period&quot;
  ) &gt;= 65
    and exists &quot;Qualifying Encounters&quot;

define &quot;Qualifying Encounters&quot;:
  ( ( [Encounter: &quot;Office Visit&quot;]
      union [Encounter: &quot;Ophthalmological Services&quot;]
      union [Encounter: &quot;Preventive Care Services Established Office Visit, 18 and Up&quot;]
      union [Encounter: &quot;Discharge Services Nursing Facility&quot;]
      union [Encounter: &quot;Nursing Facility Visit&quot;]
      union [Encounter: &quot;Care Services in Long Term Residential Facility&quot;]
      union [Encounter: &quot;Preventive Care Services Initial Office Visit, 18 and Up&quot;]
      union [Encounter: &quot;Annual Wellness Visit&quot;]
      union [Encounter: &quot;Home Healthcare Services&quot;]
      union [Encounter: &quot;Telephone Visits&quot;]
      union [Encounter: &quot;Virtual Encounter&quot;]
      union ( [Encounter] E
          where exists ( ( E.type ) T
              where T ~ &quot;Office or other outpatient visit for the evaluation and management of an established patient that may not require the presence of a physician or other qualified health care professional&quot;
          )
      )
  ).isEncounterPerformed ( ) ) ValidEncounters
    where ValidEncounters.period during &quot;Measurement Period&quot;

define &quot;Denominator&quot;:
  &quot;Initial Population&quot;

define &quot;Denominator Exclusions&quot;:
  Hospice.&quot;Has Hospice Services&quot;
    or PalliativeCare.&quot;Has Palliative Care in the Measurement Period&quot;

define &quot;Numerator 1&quot;:
  exists &quot;Same High Risk Medications Ordered on Different Days&quot;
    or &quot;Two High Risk Medications with Prolonged Duration&quot;
    or &quot;High Risk Medications with Average Daily Dose Criteria&quot;

define &quot;Same High Risk Medications Ordered on Different Days&quot;:
  ( [MedicationRequest: &quot;Potentially Harmful Antihistamines for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Antiparkinsonian Agents for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Gastrointestinal Antispasmodics for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Dipyridamole Medications&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Guanfacine Medications&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Nifedipine Medications&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Antidepressants for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Barbiturates for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;ergoloid mesylates, USP 1 MG Oral Tablet&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Meprobamate Medications&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Estrogens for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Sulfonylureas for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Desiccated Thyroid Medications&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Nonbenzodiazepine Hypnotics for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Skeletal Muscle Relaxants for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Potentially Harmful Pain Medications for Older Adults&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Megestrol Medications&quot;] ).moreThanOneOrder ( )
    union ( [MedicationRequest: &quot;Meperidine Medications&quot;] ).moreThanOneOrder ( )

define &quot;Two High Risk Medications with Prolonged Duration&quot;:
  Sum((([MedicationRequest: &quot;Potentially Harmful Antiinfectives for Older Adults&quot;]).moreThanOneOrder()) AntiInfectives
      let DaysSupply: AntiInfectives.medicationRequestPeriodInDays()
      return all DaysSupply
  ) &gt; 90

define &quot;High Risk Medications with Average Daily Dose Criteria&quot;:
  exists ( ( [MedicationRequest: &quot;Digoxin Medications&quot;] DigoxinOrdered
        where DigoxinOrdered.averageDailyDose ( ) &gt; 0.125 'mg/d'
    ).moreThanOneOrder ( )
  )
    or exists ( ( [MedicationRequest: &quot;Doxepin Medications&quot;] DoxepinOrdered
          where DoxepinOrdered.averageDailyDose ( ) &gt; 6 'mg/d'
      ).moreThanOneOrder ( )
    )

define &quot;Numerator 2&quot;:
  ( &quot;More than One Antipsychotic Order&quot;
      and ( not exists ( ( &quot;Schizophrenia Diagnosis&quot;
            union &quot;Bipolar Disorder Diagnosis&quot; ) AntipsychoticTreatedDiagnoses
            where AntipsychoticTreatedDiagnoses.prevalenceInterval ( ) overlaps Interval[start of &quot;Measurement Period&quot; - 1 year, &quot;Antipsychotic Index Prescription Start Date&quot;]
        )
      )
  )
    or ( &quot;More than One Benzodiazepine Order&quot;
        and ( not exists ( ( &quot;Seizure Disorder Diagnosis&quot;
              union &quot;REM Sleep Behavior Disorder Diagnosis&quot;
              union &quot;Benzodiazepine Withdrawal Diagnosis&quot;
              union &quot;Alcohol Withdrawal Diagnosis&quot;
              union &quot;Generalized Anxiety Disorder Diagnosis&quot; ) BenzodiazepineTreatedDiagnoses
              where BenzodiazepineTreatedDiagnoses.prevalenceInterval ( ) overlaps Interval[start of &quot;Measurement Period&quot; - 1 year, &quot;Benzodiazepine Index Prescription Start Date&quot;]
          )
        )
    )

define &quot;More than One Antipsychotic Order&quot;:
  exists ( [MedicationRequest: &quot;Potentially Harmful Antipsychotics for Older Adults&quot;] ).moreThanOneOrder ( )

define &quot;More than One Benzodiazepine Order&quot;:
  exists ( [MedicationRequest: &quot;Potentially Harmful Benzodiazepines for Older Adults&quot;] ).moreThanOneOrder ( )

define &quot;Bipolar Disorder Diagnosis&quot;:
  ( [ConditionProblemsHealthConcerns: &quot;Bipolar Disorder&quot;]
      union [ConditionEncounterDiagnosis: &quot;Bipolar Disorder&quot;]
  ).verified ( )

define &quot;Schizophrenia Diagnosis&quot;:
  // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
  // Original:
  // ( [ConditionProblemsHealthConcerns: &quot;Schizophrenia&quot;]
  //     union [ConditionEncounterDiagnosis: &quot;Schizophrenia&quot;]
  ( [Condition: &quot;Schizophrenia&quot;]
  ).verified ( )

define &quot;Seizure Disorder Diagnosis&quot;:
  // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
  // Original:
  // ( [ConditionProblemsHealthConcerns: &quot;Seizure Disorder&quot;]
  //     union [ConditionEncounterDiagnosis: &quot;Seizure Disorder&quot;]
  ( [Condition: &quot;Seizure Disorder&quot;]
  ).verified ( )

define &quot;REM Sleep Behavior Disorder Diagnosis&quot;:
  ( [ConditionProblemsHealthConcerns: &quot;REM Sleep Behavior Disorder&quot;]
      union [ConditionEncounterDiagnosis: &quot;REM Sleep Behavior Disorder&quot;]
  ).verified ( )

define &quot;Benzodiazepine Withdrawal Diagnosis&quot;:
  ( [ConditionProblemsHealthConcerns: &quot;Benzodiazepine Withdrawal&quot;]
      union [ConditionEncounterDiagnosis: &quot;Benzodiazepine Withdrawal&quot;]
  ).verified ( )

define &quot;Alcohol Withdrawal Diagnosis&quot;:
  ( [ConditionProblemsHealthConcerns: &quot;Alcohol Withdrawal&quot;]
      union [ConditionEncounterDiagnosis: &quot;Alcohol Withdrawal&quot;]
  ).verified ( )

define &quot;Generalized Anxiety Disorder Diagnosis&quot;:
  ( [ConditionProblemsHealthConcerns: &quot;Generalized Anxiety Disorder&quot;]
      union [ConditionEncounterDiagnosis: &quot;Generalized Anxiety Disorder&quot;]
  ).verified ( )

define &quot;Antipsychotic Index Prescription Start Date&quot;:
  First((([MedicationRequest: &quot;Potentially Harmful Antipsychotics for Older Adults&quot;]).isMedicationOrder()) AntipsychoticMedication
      where AntipsychoticMedication.authoredOn during &quot;Measurement Period&quot;
      return FHIRHelpers.ToDateTime(AntipsychoticMedication.authoredOn)
      sort asc
  )

define &quot;Benzodiazepine Index Prescription Start Date&quot;:
  First((([MedicationRequest: &quot;Potentially Harmful Benzodiazepines for Older Adults&quot;]).isMedicationOrder()) BenzodiazepineMedication
      where BenzodiazepineMedication.authoredOn during &quot;Measurement Period&quot;
      return FHIRHelpers.ToDateTime(BenzodiazepineMedication.authoredOn)
      sort asc
  )

define &quot;Numerator 3&quot;:
  &quot;Numerator 2&quot;
    or ( &quot;Numerator 1&quot;
        and not &quot;Numerator 2&quot;
    )

define &quot;SDE Ethnicity&quot;:
  SDE.&quot;SDE Ethnicity&quot;

define &quot;SDE Payer&quot;:
  SDE.&quot;SDE Payer&quot;

define &quot;SDE Race&quot;:
  SDE.&quot;SDE Race&quot;

define &quot;SDE Sex&quot;:
  SDE.&quot;SDE Sex&quot;

define fluent function moreThanOneOrder(Medication List&lt;MedicationRequest&gt;):
  ( Medication.isMedicationOrder ( ) ) OrderMedication1
    with ( Medication.isMedicationOrder ( ) ) OrderMedication2
      such that ( OrderMedication1.authoredOn during &quot;Measurement Period&quot;
          and OrderMedication1.dispenseRequest.numberOfRepeatsAllowed &gt;= 1
      )
        or ( date from OrderMedication1.authoredOn !~ date from OrderMedication2.authoredOn
            and OrderMedication1.authoredOn during &quot;Measurement Period&quot;
            and OrderMedication2.authoredOn during &quot;Measurement Period&quot;
        )
        or ( date from OrderMedication1.authoredOn ~ date from OrderMedication2.authoredOn
            and OrderMedication1.authoredOn during &quot;Measurement Period&quot;
            and date from start of OrderMedication1.medicationRequestPeriod ( ) !~ date from start of OrderMedication2.medicationRequestPeriod ( )
            and start of OrderMedication1.medicationRequestPeriod ( ) during &quot;Measurement Period&quot;
            and start of OrderMedication2.medicationRequestPeriod ( ) during &quot;Measurement Period&quot;
        )
    return OrderMedication1

define fluent function medicationStrengthPerUnit(Strength Concept):
  case
    when Strength ~ &quot;digoxin 0.05 MG/ML Oral Solution&quot; then 0.05 'mg/mL'
    when Strength ~ &quot;digoxin 0.0625 MG Oral Tablet&quot; then 0.0625 'mg'
    when Strength ~ &quot;1 ML digoxin 0.1 MG/ML Injection&quot; then 0.1 'mg/mL'
    when Strength ~ &quot;digoxin 0.125 MG Oral Tablet&quot; then 0.125 'mg'
    when Strength ~ &quot;digoxin 0.25 MG Oral Tablet&quot; then 0.25 'mg'
    when Strength ~ &quot;2 ML digoxin 0.25 MG/ML Injection&quot; then 0.25 'mg/mL'
    when Strength ~ &quot;doxepin 3 MG Oral Tablet&quot; then 3 'mg'
    when Strength ~ &quot;doxepin 6 MG Oral Tablet&quot; then 6 'mg'
    when Strength ~ &quot;doxepin 10 MG Oral Capsule&quot; then 10 'mg'
    when Strength ~ &quot;doxepin 10 MG/ML Oral Solution&quot; then 10 'mg/mL'
    when Strength ~ &quot;doxepin 25 MG Oral Capsule&quot; then 25 'mg'
    when Strength ~ &quot;doxepin 50 MG Oral Capsule&quot; then 50 'mg'
    when Strength ~ &quot;doxepin 75 MG Oral Capsule&quot; then 75 'mg'
    when Strength ~ &quot;doxepin 100 MG Oral Capsule&quot; then 100 'mg'
    when Strength ~ &quot;doxepin 150 MG Oral Capsule&quot; then 150 'mg' 
    else null end

define fluent function medicationRequestPeriodInDays(Request MedicationRequest):
  Request R
    let dosage: singleton from R.dosageInstruction,
    doseAndRate: singleton from dosage.doseAndRate,
    timing: dosage.timing,
    frequency: Coalesce(timing.repeat.frequencyMax, timing.repeat.frequency),
    period: CMD.&quot;Quantity&quot; ( timing.repeat.period, timing.repeat.periodUnit ),
    doseRange: doseAndRate.dose,
    doseQuantity: doseAndRate.dose,
    dose: Coalesce(
      end of doseRange, doseQuantity
    ),
    dosesPerDay: Coalesce((CMD.&quot;ToDaily&quot;(frequency, period)), Count(timing.repeat.timeOfDay), 1.0),
    boundsPeriod: timing.repeat.bounds as FHIR.Period,
    daysSupply: ( convert R.dispenseRequest.expectedSupplyDuration to days ).value,
    quantity: R.dispenseRequest.quantity,
    refills: Coalesce(R.dispenseRequest.numberOfRepeatsAllowed, 0),
    startDate: Coalesce(date from start of boundsPeriod, date from R.authoredOn, date from start of R.dispenseRequest.validityPeriod),
    totalDaysSupplied: Coalesce(daysSupply, quantity.value /(dose.value * dosesPerDay)) * ( 1 + refills )
    return totalDaysSupplied

define fluent function averageDailyDose(MedicationRequest MedicationRequest):
  MedicationRequest Order
    let MedicationStrength: Order.getMedicationCode ( ).medicationStrengthPerUnit ( ),
    DaysSupplied: Order.medicationRequestPeriodInDays ( )
    return if DaysSupplied is not null
      and ( MedicationStrength.unit = 'mg'
          or ( MedicationStrength.unit = 'mg/mL'
              and Order.dispenseRequest.quantity.unit = 'mL'
          )
      ) then ( ( Order.dispenseRequest.quantity * MedicationStrength ) / System.Quantity { value: DaysSupplied, unit: 'd' } )
      else null</code></pre>
      </td>
    </tr>
    
  



<tr>
  <th colspan="2" scope="row" class="row-header">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>
</tr>

    </tbody>
  </table>
</div>
  </text>
  <extension
             url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem">
    <valueReference>
      <reference value="Device/cqf-tooling"/>
    </valueReference>
  </extension>
  <url value="https://madie.cms.gov/Library/CMS156FHIRHighRiskMedsElderly"/>
  <version value="1.1.000"/>
  <name value="CMS156FHIRHighRiskMedsElderly"/>
  <status value="draft"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2026-09-19T16:31:14+00:00"/>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxNTZGSElSSGlnaFJpc2tNZWRzRWxkZXJseSB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuQ3VtdWxhdGl2ZU1lZGljYXRpb25EdXJhdGlvbiB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBDTUQKaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBIb3NwaWNlIHZlcnNpb24gJzcuMS4wMDAnIGNhbGxlZCBIb3NwaWNlCmluY2x1ZGUgUGFsbGlhdGl2ZUNhcmUgdmVyc2lvbiAnMi4xLjAwMCcgY2FsbGVkIFBhbGxpYXRpdmVDYXJlCmluY2x1ZGUgQ1FNQ29tbW9uIHZlcnNpb24gJzUuMS4wMDAnIGNhbGxlZCBDUU1Db21tb24KaW5jbHVkZSBVU1F1YWxpdHlDb3JlQ29tbW9uIHZlcnNpb24gJzAuMS4wLWNpYnVpbGQnIGNhbGxlZCBVU1F1YWxpdHlDb3JlQ29tbW9uCmluY2x1ZGUgU3VwcGxlbWVudGFsRGF0YUVsZW1lbnRzIHZlcnNpb24gJzYuMS4wMDAnIGNhbGxlZCBTREUKaW5jbHVkZSBTdGF0dXMgdmVyc2lvbiAnMi4xLjAwMCcgY2FsbGVkIFN0YXR1cwoKY29kZXN5c3RlbSAiUlhOT1JNIjogJ2h0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0nCmNvZGVzeXN0ZW0gIkNQVCI6ICdodHRwOi8vd3d3LmFtYS1hc3NuLm9yZy9nby9jcHQnCgp2YWx1ZXNldCAiQWxjb2hvbCBXaXRoZHJhd2FsIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNS4xMi4xMjA5Jwp2YWx1ZXNldCAiQW5udWFsIFdlbGxuZXNzIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEyNDAnCnZhbHVlc2V0ICJCZW56b2RpYXplcGluZSBXaXRoZHJhd2FsIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNS4xMi4xMjA4Jwp2YWx1ZXNldCAiQmlwb2xhciBEaXNvcmRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42Ny4xLjEwMS4xLjEyOCcKdmFsdWVzZXQgIkNhcmUgU2VydmljZXMgaW4gTG9uZyBUZXJtIFJlc2lkZW50aWFsIEZhY2lsaXR5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDE0Jwp2YWx1ZXNldCAiRGVzaWNjYXRlZCBUaHlyb2lkIE1lZGljYXRpb25zIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNjAnCnZhbHVlc2V0ICJEaWdveGluIE1lZGljYXRpb25zIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNjUnCnZhbHVlc2V0ICJEaXB5cmlkYW1vbGUgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTA1MScKdmFsdWVzZXQgIkRpc2NoYXJnZSBTZXJ2aWNlcyBOdXJzaW5nIEZhY2lsaXR5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDEzJwp2YWx1ZXNldCAiRG94ZXBpbiBNZWRpY2F0aW9ucyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDY3Jwp2YWx1ZXNldCAiR2VuZXJhbGl6ZWQgQW54aWV0eSBEaXNvcmRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUuMTIuMTIxMCcKdmFsdWVzZXQgIkd1YW5mYWNpbmUgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk2LjExLjEyNTInCnZhbHVlc2V0ICJIb21lIEhlYWx0aGNhcmUgU2VydmljZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMTYnCnZhbHVlc2V0ICJNZWdlc3Ryb2wgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTI0NycKdmFsdWVzZXQgIk1lcGVyaWRpbmUgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTI0OCcKdmFsdWVzZXQgIk1lcHJvYmFtYXRlIE1lZGljYXRpb25zIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNTcnCnZhbHVlc2V0ICJOaWZlZGlwaW5lIE1lZGljYXRpb25zIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNTMnCnZhbHVlc2V0ICJOdXJzaW5nIEZhY2lsaXR5IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDEyJwp2YWx1ZXNldCAiT2ZmaWNlIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDAxJwp2YWx1ZXNldCAiT3BodGhhbG1vbG9naWNhbCBTZXJ2aWNlcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMjg1Jwp2YWx1ZXNldCAiUG90ZW50aWFsbHkgSGFybWZ1bCBBbnRpZGVwcmVzc2FudHMgZm9yIE9sZGVyIEFkdWx0cyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDU0Jwp2YWx1ZXNldCAiUG90ZW50aWFsbHkgSGFybWZ1bCBBbnRpaGlzdGFtaW5lcyBmb3IgT2xkZXIgQWR1bHRzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNDMnCnZhbHVlc2V0ICJQb3RlbnRpYWxseSBIYXJtZnVsIEFudGlpbmZlY3RpdmVzIGZvciBPbGRlciBBZHVsdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk2LjEyLjE0ODEnCnZhbHVlc2V0ICJQb3RlbnRpYWxseSBIYXJtZnVsIEFudGlwYXJraW5zb25pYW4gQWdlbnRzIGZvciBPbGRlciBBZHVsdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTA0OScKdmFsdWVzZXQgIlBvdGVudGlhbGx5IEhhcm1mdWwgQW50aXBzeWNob3RpY3MgZm9yIE9sZGVyIEFkdWx0cyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTYuMTIuMTUyMycKdmFsdWVzZXQgIlBvdGVudGlhbGx5IEhhcm1mdWwgQmFyYml0dXJhdGVzIGZvciBPbGRlciBBZHVsdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTA1NScKdmFsdWVzZXQgIlBvdGVudGlhbGx5IEhhcm1mdWwgQmVuem9kaWF6ZXBpbmVzIGZvciBPbGRlciBBZHVsdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk2LjEyLjE1MjInCnZhbHVlc2V0ICJQb3RlbnRpYWxseSBIYXJtZnVsIEVzdHJvZ2VucyBmb3IgT2xkZXIgQWR1bHRzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNTgnCnZhbHVlc2V0ICJQb3RlbnRpYWxseSBIYXJtZnVsIEdhc3Ryb2ludGVzdGluYWwgQW50aXNwYXNtb2RpY3MgZm9yIE9sZGVyIEFkdWx0cyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUwJwp2YWx1ZXNldCAiUG90ZW50aWFsbHkgSGFybWZ1bCBOb25iZW56b2RpYXplcGluZSBIeXBub3RpY3MgZm9yIE9sZGVyIEFkdWx0cyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTYuMTIuMTQ4MCcKdmFsdWVzZXQgIlBvdGVudGlhbGx5IEhhcm1mdWwgUGFpbiBNZWRpY2F0aW9ucyBmb3IgT2xkZXIgQWR1bHRzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNjMnCnZhbHVlc2V0ICJQb3RlbnRpYWxseSBIYXJtZnVsIFNrZWxldGFsIE11c2NsZSBSZWxheGFudHMgZm9yIE9sZGVyIEFkdWx0cyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDYyJwp2YWx1ZXNldCAiUG90ZW50aWFsbHkgSGFybWZ1bCBTdWxmb255bHVyZWFzIGZvciBPbGRlciBBZHVsdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTA1OScKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBFc3RhYmxpc2hlZCBPZmZpY2UgVmlzaXQsIDE4IGFuZCBVcCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyNScKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBJbml0aWFsIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDIzJwp2YWx1ZXNldCAiUkVNIFNsZWVwIEJlaGF2aW9yIERpc29yZGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwNS4xMi4xMjA3Jwp2YWx1ZXNldCAiU2NoaXpvcGhyZW5pYSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUuMTIuMTIwNScKdmFsdWVzZXQgIlNlaXp1cmUgRGlzb3JkZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTA1LjEyLjEyMDYnCnZhbHVlc2V0ICJUZWxlcGhvbmUgVmlzaXRzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDgwJwp2YWx1ZXNldCAiVmlydHVhbCBFbmNvdW50ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwODknCgpjb2RlICIxIE1MIGRpZ294aW4gMC4xIE1HL01MIEluamVjdGlvbiI6ICcyMDQ1MDQnIGZyb20gIlJYTk9STSIgZGlzcGxheSAnMSBNTCBkaWdveGluIDAuMSBNRy9NTCBJbmplY3Rpb24nCmNvZGUgIjIgTUwgZGlnb3hpbiAwLjI1IE1HL01MIEluamVjdGlvbiI6ICcxMDQyMDgnIGZyb20gIlJYTk9STSIgZGlzcGxheSAnMiBNTCBkaWdveGluIDAuMjUgTUcvTUwgSW5qZWN0aW9uJwpjb2RlICJkaWdveGluIDAuMDUgTUcvTUwgT3JhbCBTb2x1dGlvbiI6ICczOTMyNDUnIGZyb20gIlJYTk9STSIgZGlzcGxheSAnZGlnb3hpbiAwLjA1IE1HL01MIE9yYWwgU29sdXRpb24nCmNvZGUgImRpZ294aW4gMC4wNjI1IE1HIE9yYWwgVGFibGV0IjogJzI0NTI3MycgZnJvbSAiUlhOT1JNIiBkaXNwbGF5ICdkaWdveGluIDAuMDYyNSBNRyBPcmFsIFRhYmxldCcKY29kZSAiZGlnb3hpbiAwLjEyNSBNRyBPcmFsIFRhYmxldCI6ICcxOTc2MDQnIGZyb20gIlJYTk9STSIgZGlzcGxheSAnZGlnb3hpbiAwLjEyNSBNRyBPcmFsIFRhYmxldCcKY29kZSAiZGlnb3hpbiAwLjI1IE1HIE9yYWwgVGFibGV0IjogJzE5NzYwNicgZnJvbSAiUlhOT1JNIiBkaXNwbGF5ICdkaWdveGluIDAuMjUgTUcgT3JhbCBUYWJsZXQnCmNvZGUgImRveGVwaW4gMTAgTUcgT3JhbCBDYXBzdWxlIjogJzEwMDAwNDgnIGZyb20gIlJYTk9STSIgZGlzcGxheSAnZG94ZXBpbiAxMCBNRyBPcmFsIENhcHN1bGUnCmNvZGUgImRveGVwaW4gMTAgTUcvTUwgT3JhbCBTb2x1dGlvbiI6ICcxMDAwMDU0JyBmcm9tICJSWE5PUk0iIGRpc3BsYXkgJ2RveGVwaW4gMTAgTUcvTUwgT3JhbCBTb2x1dGlvbicKY29kZSAiZG94ZXBpbiAxMDAgTUcgT3JhbCBDYXBzdWxlIjogJzEwMDAwNTgnIGZyb20gIlJYTk9STSIgZGlzcGxheSAnZG94ZXBpbiAxMDAgTUcgT3JhbCBDYXBzdWxlJwpjb2RlICJkb3hlcGluIDE1MCBNRyBPcmFsIENhcHN1bGUiOiAnMTAwMDA2NCcgZnJvbSAiUlhOT1JNIiBkaXNwbGF5ICdkb3hlcGluIDE1MCBNRyBPcmFsIENhcHN1bGUnCmNvZGUgImRveGVwaW4gMjUgTUcgT3JhbCBDYXBzdWxlIjogJzEwMDAwNzAnIGZyb20gIlJYTk9STSIgZGlzcGxheSAnZG94ZXBpbiAyNSBNRyBPcmFsIENhcHN1bGUnCmNvZGUgImRveGVwaW4gMyBNRyBPcmFsIFRhYmxldCI6ICc5NjY3ODcnIGZyb20gIlJYTk9STSIgZGlzcGxheSAnZG94ZXBpbiAzIE1HIE9yYWwgVGFibGV0Jwpjb2RlICJkb3hlcGluIDUwIE1HIE9yYWwgQ2Fwc3VsZSI6ICcxMDAwMDc2JyBmcm9tICJSWE5PUk0iIGRpc3BsYXkgJ2RveGVwaW4gNTAgTUcgT3JhbCBDYXBzdWxlJwpjb2RlICJkb3hlcGluIDYgTUcgT3JhbCBUYWJsZXQiOiAnOTY2NzkzJyBmcm9tICJSWE5PUk0iIGRpc3BsYXkgJ2RveGVwaW4gNiBNRyBPcmFsIFRhYmxldCcKY29kZSAiZG94ZXBpbiA3NSBNRyBPcmFsIENhcHN1bGUiOiAnMTAwMDA5NycgZnJvbSAiUlhOT1JNIiBkaXNwbGF5ICdkb3hlcGluIDc1IE1HIE9yYWwgQ2Fwc3VsZScKY29kZSAiZXJnb2xvaWQgbWVzeWxhdGVzLCBVU1AgMSBNRyBPcmFsIFRhYmxldCI6ICczMTgxNzknIGZyb20gIlJYTk9STSIgZGlzcGxheSAnZXJnb2xvaWQgbWVzeWxhdGVzLCBVU1AgMSBNRyBPcmFsIFRhYmxldCcKY29kZSAiT2ZmaWNlIG9yIG90aGVyIG91dHBhdGllbnQgdmlzaXQgZm9yIHRoZSBldmFsdWF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIGFuIGVzdGFibGlzaGVkIHBhdGllbnQgdGhhdCBtYXkgbm90IHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgcGh5c2ljaWFuIG9yIG90aGVyIHF1YWxpZmllZCBoZWFsdGggY2FyZSBwcm9mZXNzaW9uYWwiOiAnOTkyMTEnIGZyb20gIkNQVCIgZGlzcGxheSAnT2ZmaWNlIG9yIG90aGVyIG91dHBhdGllbnQgdmlzaXQgZm9yIHRoZSBldmFsdWF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIGFuIGVzdGFibGlzaGVkIHBhdGllbnQgdGhhdCBtYXkgbm90IHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgcGh5c2ljaWFuIG9yIG90aGVyIHF1YWxpZmllZCBoZWFsdGggY2FyZSBwcm9mZXNzaW9uYWwnCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+CiAgZGVmYXVsdCBJbnRlcnZhbFtAMjAyNi0wMS0wMVQwMDowMDowMC4wMDBaLCBAMjAyNy0wMS0wMVQwMDowMDowMC4wMDBaKQoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSAKICAgIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICkgPj0gNjUKICAgIGFuZCBleGlzdHMgIlF1YWxpZnlpbmcgRW5jb3VudGVycyIKCmRlZmluZSAiUXVhbGlmeWluZyBFbmNvdW50ZXJzIjoKICAoICggW0VuY291bnRlcjogIk9mZmljZSBWaXNpdCJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPcGh0aGFsbW9sb2dpY2FsIFNlcnZpY2VzIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBFc3RhYmxpc2hlZCBPZmZpY2UgVmlzaXQsIDE4IGFuZCBVcCJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJEaXNjaGFyZ2UgU2VydmljZXMgTnVyc2luZyBGYWNpbGl0eSJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJOdXJzaW5nIEZhY2lsaXR5IFZpc2l0Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkNhcmUgU2VydmljZXMgaW4gTG9uZyBUZXJtIFJlc2lkZW50aWFsIEZhY2lsaXR5Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBJbml0aWFsIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkFubnVhbCBXZWxsbmVzcyBWaXNpdCJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJIb21lIEhlYWx0aGNhcmUgU2VydmljZXMiXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiVGVsZXBob25lIFZpc2l0cyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJWaXJ0dWFsIEVuY291bnRlciJdCiAgICAgIHVuaW9uICggW0VuY291bnRlcl0gRQogICAgICAgICAgd2hlcmUgZXhpc3RzICggKCBFLnR5cGUgKSBUCiAgICAgICAgICAgICAgd2hlcmUgVCB+ICJPZmZpY2Ugb3Igb3RoZXIgb3V0cGF0aWVudCB2aXNpdCBmb3IgdGhlIGV2YWx1YXRpb24gYW5kIG1hbmFnZW1lbnQgb2YgYW4gZXN0YWJsaXNoZWQgcGF0aWVudCB0aGF0IG1heSBub3QgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgYSBwaHlzaWNpYW4gb3Igb3RoZXIgcXVhbGlmaWVkIGhlYWx0aCBjYXJlIHByb2Zlc3Npb25hbCIKICAgICAgICAgICkKICAgICAgKQogICkuaXNFbmNvdW50ZXJQZXJmb3JtZWQgKCApICkgVmFsaWRFbmNvdW50ZXJzCiAgICB3aGVyZSBWYWxpZEVuY291bnRlcnMucGVyaW9kIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJEZW5vbWluYXRvciI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiIKCmRlZmluZSAiRGVub21pbmF0b3IgRXhjbHVzaW9ucyI6CiAgSG9zcGljZS4iSGFzIEhvc3BpY2UgU2VydmljZXMiCiAgICBvciBQYWxsaWF0aXZlQ2FyZS4iSGFzIFBhbGxpYXRpdmUgQ2FyZSBpbiB0aGUgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJOdW1lcmF0b3IgMSI6CiAgZXhpc3RzICJTYW1lIEhpZ2ggUmlzayBNZWRpY2F0aW9ucyBPcmRlcmVkIG9uIERpZmZlcmVudCBEYXlzIgogICAgb3IgIlR3byBIaWdoIFJpc2sgTWVkaWNhdGlvbnMgd2l0aCBQcm9sb25nZWQgRHVyYXRpb24iCiAgICBvciAiSGlnaCBSaXNrIE1lZGljYXRpb25zIHdpdGggQXZlcmFnZSBEYWlseSBEb3NlIENyaXRlcmlhIgoKZGVmaW5lICJTYW1lIEhpZ2ggUmlzayBNZWRpY2F0aW9ucyBPcmRlcmVkIG9uIERpZmZlcmVudCBEYXlzIjoKICAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIlBvdGVudGlhbGx5IEhhcm1mdWwgQW50aWhpc3RhbWluZXMgZm9yIE9sZGVyIEFkdWx0cyJdICkubW9yZVRoYW5PbmVPcmRlciAoICkKICAgIHVuaW9uICggW01lZGljYXRpb25SZXF1ZXN0OiAiUG90ZW50aWFsbHkgSGFybWZ1bCBBbnRpcGFya2luc29uaWFuIEFnZW50cyBmb3IgT2xkZXIgQWR1bHRzIl0gKS5tb3JlVGhhbk9uZU9yZGVyICggKQogICAgdW5pb24gKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJQb3RlbnRpYWxseSBIYXJtZnVsIEdhc3Ryb2ludGVzdGluYWwgQW50aXNwYXNtb2RpY3MgZm9yIE9sZGVyIEFkdWx0cyJdICkubW9yZVRoYW5PbmVPcmRlciAoICkKICAgIHVuaW9uICggW01lZGljYXRpb25SZXF1ZXN0OiAiRGlweXJpZGFtb2xlIE1lZGljYXRpb25zIl0gKS5tb3JlVGhhbk9uZU9yZGVyICggKQogICAgdW5pb24gKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJHdWFuZmFjaW5lIE1lZGljYXRpb25zIl0gKS5tb3JlVGhhbk9uZU9yZGVyICggKQogICAgdW5pb24gKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJOaWZlZGlwaW5lIE1lZGljYXRpb25zIl0gKS5tb3JlVGhhbk9uZU9yZGVyICggKQogICAgdW5pb24gKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJQb3RlbnRpYWxseSBIYXJtZnVsIEFudGlkZXByZXNzYW50cyBmb3IgT2xkZXIgQWR1bHRzIl0gKS5tb3JlVGhhbk9uZU9yZGVyICggKQogICAgdW5pb24gKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJQb3RlbnRpYWxseSBIYXJtZnVsIEJhcmJpdHVyYXRlcyBmb3IgT2xkZXIgQWR1bHRzIl0gKS5tb3JlVGhhbk9uZU9yZGVyICggKQogICAgdW5pb24gKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJlcmdvbG9pZCBtZXN5bGF0ZXMsIFVTUCAxIE1HIE9yYWwgVGFibGV0Il0gKS5tb3JlVGhhbk9uZU9yZGVyICggKQogICAgdW5pb24gKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJNZXByb2JhbWF0ZSBNZWRpY2F0aW9ucyJdICkubW9yZVRoYW5PbmVPcmRlciAoICkKICAgIHVuaW9uICggW01lZGljYXRpb25SZXF1ZXN0OiAiUG90ZW50aWFsbHkgSGFybWZ1bCBFc3Ryb2dlbnMgZm9yIE9sZGVyIEFkdWx0cyJdICkubW9yZVRoYW5PbmVPcmRlciAoICkKICAgIHVuaW9uICggW01lZGljYXRpb25SZXF1ZXN0OiAiUG90ZW50aWFsbHkgSGFybWZ1bCBTdWxmb255bHVyZWFzIGZvciBPbGRlciBBZHVsdHMiXSApLm1vcmVUaGFuT25lT3JkZXIgKCApCiAgICB1bmlvbiAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIkRlc2ljY2F0ZWQgVGh5cm9pZCBNZWRpY2F0aW9ucyJdICkubW9yZVRoYW5PbmVPcmRlciAoICkKICAgIHVuaW9uICggW01lZGljYXRpb25SZXF1ZXN0OiAiUG90ZW50aWFsbHkgSGFybWZ1bCBOb25iZW56b2RpYXplcGluZSBIeXBub3RpY3MgZm9yIE9sZGVyIEFkdWx0cyJdICkubW9yZVRoYW5PbmVPcmRlciAoICkKICAgIHVuaW9uICggW01lZGljYXRpb25SZXF1ZXN0OiAiUG90ZW50aWFsbHkgSGFybWZ1bCBTa2VsZXRhbCBNdXNjbGUgUmVsYXhhbnRzIGZvciBPbGRlciBBZHVsdHMiXSApLm1vcmVUaGFuT25lT3JkZXIgKCApCiAgICB1bmlvbiAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIlBvdGVudGlhbGx5IEhhcm1mdWwgUGFpbiBNZWRpY2F0aW9ucyBmb3IgT2xkZXIgQWR1bHRzIl0gKS5tb3JlVGhhbk9uZU9yZGVyICggKQogICAgdW5pb24gKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJNZWdlc3Ryb2wgTWVkaWNhdGlvbnMiXSApLm1vcmVUaGFuT25lT3JkZXIgKCApCiAgICB1bmlvbiAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIk1lcGVyaWRpbmUgTWVkaWNhdGlvbnMiXSApLm1vcmVUaGFuT25lT3JkZXIgKCApCgpkZWZpbmUgIlR3byBIaWdoIFJpc2sgTWVkaWNhdGlvbnMgd2l0aCBQcm9sb25nZWQgRHVyYXRpb24iOgogIFN1bSgoKFtNZWRpY2F0aW9uUmVxdWVzdDogIlBvdGVudGlhbGx5IEhhcm1mdWwgQW50aWluZmVjdGl2ZXMgZm9yIE9sZGVyIEFkdWx0cyJdKS5tb3JlVGhhbk9uZU9yZGVyKCkpIEFudGlJbmZlY3RpdmVzCiAgICAgIGxldCBEYXlzU3VwcGx5OiBBbnRpSW5mZWN0aXZlcy5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZEluRGF5cygpCiAgICAgIHJldHVybiBhbGwgRGF5c1N1cHBseQogICkgPiA5MAoKZGVmaW5lICJIaWdoIFJpc2sgTWVkaWNhdGlvbnMgd2l0aCBBdmVyYWdlIERhaWx5IERvc2UgQ3JpdGVyaWEiOgogIGV4aXN0cyAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiRGlnb3hpbiBNZWRpY2F0aW9ucyJdIERpZ294aW5PcmRlcmVkCiAgICAgICAgd2hlcmUgRGlnb3hpbk9yZGVyZWQuYXZlcmFnZURhaWx5RG9zZSAoICkgPiAwLjEyNSAnbWcvZCcKICAgICkubW9yZVRoYW5PbmVPcmRlciAoICkKICApCiAgICBvciBleGlzdHMgKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIkRveGVwaW4gTWVkaWNhdGlvbnMiXSBEb3hlcGluT3JkZXJlZAogICAgICAgICAgd2hlcmUgRG94ZXBpbk9yZGVyZWQuYXZlcmFnZURhaWx5RG9zZSAoICkgPiA2ICdtZy9kJwogICAgICApLm1vcmVUaGFuT25lT3JkZXIgKCApCiAgICApCgpkZWZpbmUgIk51bWVyYXRvciAyIjoKICAoICJNb3JlIHRoYW4gT25lIEFudGlwc3ljaG90aWMgT3JkZXIiCiAgICAgIGFuZCAoIG5vdCBleGlzdHMgKCAoICJTY2hpem9waHJlbmlhIERpYWdub3NpcyIKICAgICAgICAgICAgdW5pb24gIkJpcG9sYXIgRGlzb3JkZXIgRGlhZ25vc2lzIiApIEFudGlwc3ljaG90aWNUcmVhdGVkRGlhZ25vc2VzCiAgICAgICAgICAgIHdoZXJlIEFudGlwc3ljaG90aWNUcmVhdGVkRGlhZ25vc2VzLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAxIHllYXIsICJBbnRpcHN5Y2hvdGljIEluZGV4IFByZXNjcmlwdGlvbiBTdGFydCBEYXRlIl0KICAgICAgICApCiAgICAgICkKICApCiAgICBvciAoICJNb3JlIHRoYW4gT25lIEJlbnpvZGlhemVwaW5lIE9yZGVyIgogICAgICAgIGFuZCAoIG5vdCBleGlzdHMgKCAoICJTZWl6dXJlIERpc29yZGVyIERpYWdub3NpcyIKICAgICAgICAgICAgICB1bmlvbiAiUkVNIFNsZWVwIEJlaGF2aW9yIERpc29yZGVyIERpYWdub3NpcyIKICAgICAgICAgICAgICB1bmlvbiAiQmVuem9kaWF6ZXBpbmUgV2l0aGRyYXdhbCBEaWFnbm9zaXMiCiAgICAgICAgICAgICAgdW5pb24gIkFsY29ob2wgV2l0aGRyYXdhbCBEaWFnbm9zaXMiCiAgICAgICAgICAgICAgdW5pb24gIkdlbmVyYWxpemVkIEFueGlldHkgRGlzb3JkZXIgRGlhZ25vc2lzIiApIEJlbnpvZGlhemVwaW5lVHJlYXRlZERpYWdub3NlcwogICAgICAgICAgICAgIHdoZXJlIEJlbnpvZGlhemVwaW5lVHJlYXRlZERpYWdub3Nlcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIEludGVydmFsW3N0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiIC0gMSB5ZWFyLCAiQmVuem9kaWF6ZXBpbmUgSW5kZXggUHJlc2NyaXB0aW9uIFN0YXJ0IERhdGUiXQogICAgICAgICAgKQogICAgICAgICkKICAgICkKCmRlZmluZSAiTW9yZSB0aGFuIE9uZSBBbnRpcHN5Y2hvdGljIE9yZGVyIjoKICBleGlzdHMgKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJQb3RlbnRpYWxseSBIYXJtZnVsIEFudGlwc3ljaG90aWNzIGZvciBPbGRlciBBZHVsdHMiXSApLm1vcmVUaGFuT25lT3JkZXIgKCApCgpkZWZpbmUgIk1vcmUgdGhhbiBPbmUgQmVuem9kaWF6ZXBpbmUgT3JkZXIiOgogIGV4aXN0cyAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIlBvdGVudGlhbGx5IEhhcm1mdWwgQmVuem9kaWF6ZXBpbmVzIGZvciBPbGRlciBBZHVsdHMiXSApLm1vcmVUaGFuT25lT3JkZXIgKCApCgpkZWZpbmUgIkJpcG9sYXIgRGlzb3JkZXIgRGlhZ25vc2lzIjoKICAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiQmlwb2xhciBEaXNvcmRlciJdCiAgICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJCaXBvbGFyIERpc29yZGVyIl0KICApLnZlcmlmaWVkICggKQoKZGVmaW5lICJTY2hpem9waHJlbmlhIERpYWdub3NpcyI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlNjaGl6b3BocmVuaWEiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiU2NoaXpvcGhyZW5pYSJdCiAgKCBbQ29uZGl0aW9uOiAiU2NoaXpvcGhyZW5pYSJdCiAgKS52ZXJpZmllZCAoICkKCmRlZmluZSAiU2VpenVyZSBEaXNvcmRlciBEaWFnbm9zaXMiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogIC8vIE9yaWdpbmFsOgogIC8vICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJTZWl6dXJlIERpc29yZGVyIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlNlaXp1cmUgRGlzb3JkZXIiXQogICggW0NvbmRpdGlvbjogIlNlaXp1cmUgRGlzb3JkZXIiXQogICkudmVyaWZpZWQgKCApCgpkZWZpbmUgIlJFTSBTbGVlcCBCZWhhdmlvciBEaXNvcmRlciBEaWFnbm9zaXMiOgogICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJSRU0gU2xlZXAgQmVoYXZpb3IgRGlzb3JkZXIiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiUkVNIFNsZWVwIEJlaGF2aW9yIERpc29yZGVyIl0KICApLnZlcmlmaWVkICggKQoKZGVmaW5lICJCZW56b2RpYXplcGluZSBXaXRoZHJhd2FsIERpYWdub3NpcyI6CiAgKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkJlbnpvZGlhemVwaW5lIFdpdGhkcmF3YWwiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQmVuem9kaWF6ZXBpbmUgV2l0aGRyYXdhbCJdCiAgKS52ZXJpZmllZCAoICkKCmRlZmluZSAiQWxjb2hvbCBXaXRoZHJhd2FsIERpYWdub3NpcyI6CiAgKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkFsY29ob2wgV2l0aGRyYXdhbCJdCiAgICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJBbGNvaG9sIFdpdGhkcmF3YWwiXQogICkudmVyaWZpZWQgKCApCgpkZWZpbmUgIkdlbmVyYWxpemVkIEFueGlldHkgRGlzb3JkZXIgRGlhZ25vc2lzIjoKICAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiR2VuZXJhbGl6ZWQgQW54aWV0eSBEaXNvcmRlciJdCiAgICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJHZW5lcmFsaXplZCBBbnhpZXR5IERpc29yZGVyIl0KICApLnZlcmlmaWVkICggKQoKZGVmaW5lICJBbnRpcHN5Y2hvdGljIEluZGV4IFByZXNjcmlwdGlvbiBTdGFydCBEYXRlIjoKICBGaXJzdCgoKFtNZWRpY2F0aW9uUmVxdWVzdDogIlBvdGVudGlhbGx5IEhhcm1mdWwgQW50aXBzeWNob3RpY3MgZm9yIE9sZGVyIEFkdWx0cyJdKS5pc01lZGljYXRpb25PcmRlcigpKSBBbnRpcHN5Y2hvdGljTWVkaWNhdGlvbgogICAgICB3aGVyZSBBbnRpcHN5Y2hvdGljTWVkaWNhdGlvbi5hdXRob3JlZE9uIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICByZXR1cm4gRkhJUkhlbHBlcnMuVG9EYXRlVGltZShBbnRpcHN5Y2hvdGljTWVkaWNhdGlvbi5hdXRob3JlZE9uKQogICAgICBzb3J0IGFzYwogICkKCmRlZmluZSAiQmVuem9kaWF6ZXBpbmUgSW5kZXggUHJlc2NyaXB0aW9uIFN0YXJ0IERhdGUiOgogIEZpcnN0KCgoW01lZGljYXRpb25SZXF1ZXN0OiAiUG90ZW50aWFsbHkgSGFybWZ1bCBCZW56b2RpYXplcGluZXMgZm9yIE9sZGVyIEFkdWx0cyJdKS5pc01lZGljYXRpb25PcmRlcigpKSBCZW56b2RpYXplcGluZU1lZGljYXRpb24KICAgICAgd2hlcmUgQmVuem9kaWF6ZXBpbmVNZWRpY2F0aW9uLmF1dGhvcmVkT24gZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgIHJldHVybiBGSElSSGVscGVycy5Ub0RhdGVUaW1lKEJlbnpvZGlhemVwaW5lTWVkaWNhdGlvbi5hdXRob3JlZE9uKQogICAgICBzb3J0IGFzYwogICkKCmRlZmluZSAiTnVtZXJhdG9yIDMiOgogICJOdW1lcmF0b3IgMiIKICAgIG9yICggIk51bWVyYXRvciAxIgogICAgICAgIGFuZCBub3QgIk51bWVyYXRvciAyIgogICAgKQoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciI6CiAgU0RFLiJTREUgUGF5ZXIiCgpkZWZpbmUgIlNERSBSYWNlIjoKICBTREUuIlNERSBSYWNlIgoKZGVmaW5lICJTREUgU2V4IjoKICBTREUuIlNERSBTZXgiCgpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIG1vcmVUaGFuT25lT3JkZXIoTWVkaWNhdGlvbiBMaXN0PE1lZGljYXRpb25SZXF1ZXN0Pik6CiAgKCBNZWRpY2F0aW9uLmlzTWVkaWNhdGlvbk9yZGVyICggKSApIE9yZGVyTWVkaWNhdGlvbjEKICAgIHdpdGggKCBNZWRpY2F0aW9uLmlzTWVkaWNhdGlvbk9yZGVyICggKSApIE9yZGVyTWVkaWNhdGlvbjIKICAgICAgc3VjaCB0aGF0ICggT3JkZXJNZWRpY2F0aW9uMS5hdXRob3JlZE9uIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgICAgYW5kIE9yZGVyTWVkaWNhdGlvbjEuZGlzcGVuc2VSZXF1ZXN0Lm51bWJlck9mUmVwZWF0c0FsbG93ZWQgPj0gMQogICAgICApCiAgICAgICAgb3IgKCBkYXRlIGZyb20gT3JkZXJNZWRpY2F0aW9uMS5hdXRob3JlZE9uICF+IGRhdGUgZnJvbSBPcmRlck1lZGljYXRpb24yLmF1dGhvcmVkT24KICAgICAgICAgICAgYW5kIE9yZGVyTWVkaWNhdGlvbjEuYXV0aG9yZWRPbiBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICAgICAgYW5kIE9yZGVyTWVkaWNhdGlvbjIuYXV0aG9yZWRPbiBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICApCiAgICAgICAgb3IgKCBkYXRlIGZyb20gT3JkZXJNZWRpY2F0aW9uMS5hdXRob3JlZE9uIH4gZGF0ZSBmcm9tIE9yZGVyTWVkaWNhdGlvbjIuYXV0aG9yZWRPbgogICAgICAgICAgICBhbmQgT3JkZXJNZWRpY2F0aW9uMS5hdXRob3JlZE9uIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgICAgICBhbmQgZGF0ZSBmcm9tIHN0YXJ0IG9mIE9yZGVyTWVkaWNhdGlvbjEubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApICF+IGRhdGUgZnJvbSBzdGFydCBvZiBPcmRlck1lZGljYXRpb24yLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKQogICAgICAgICAgICBhbmQgc3RhcnQgb2YgT3JkZXJNZWRpY2F0aW9uMS5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICkgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgICAgIGFuZCBzdGFydCBvZiBPcmRlck1lZGljYXRpb24yLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICApCiAgICByZXR1cm4gT3JkZXJNZWRpY2F0aW9uMQoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBtZWRpY2F0aW9uU3RyZW5ndGhQZXJVbml0KFN0cmVuZ3RoIENvbmNlcHQpOgogIGNhc2UKICAgIHdoZW4gU3RyZW5ndGggfiAiZGlnb3hpbiAwLjA1IE1HL01MIE9yYWwgU29sdXRpb24iIHRoZW4gMC4wNSAnbWcvbUwnCiAgICB3aGVuIFN0cmVuZ3RoIH4gImRpZ294aW4gMC4wNjI1IE1HIE9yYWwgVGFibGV0IiB0aGVuIDAuMDYyNSAnbWcnCiAgICB3aGVuIFN0cmVuZ3RoIH4gIjEgTUwgZGlnb3hpbiAwLjEgTUcvTUwgSW5qZWN0aW9uIiB0aGVuIDAuMSAnbWcvbUwnCiAgICB3aGVuIFN0cmVuZ3RoIH4gImRpZ294aW4gMC4xMjUgTUcgT3JhbCBUYWJsZXQiIHRoZW4gMC4xMjUgJ21nJwogICAgd2hlbiBTdHJlbmd0aCB+ICJkaWdveGluIDAuMjUgTUcgT3JhbCBUYWJsZXQiIHRoZW4gMC4yNSAnbWcnCiAgICB3aGVuIFN0cmVuZ3RoIH4gIjIgTUwgZGlnb3hpbiAwLjI1IE1HL01MIEluamVjdGlvbiIgdGhlbiAwLjI1ICdtZy9tTCcKICAgIHdoZW4gU3RyZW5ndGggfiAiZG94ZXBpbiAzIE1HIE9yYWwgVGFibGV0IiB0aGVuIDMgJ21nJwogICAgd2hlbiBTdHJlbmd0aCB+ICJkb3hlcGluIDYgTUcgT3JhbCBUYWJsZXQiIHRoZW4gNiAnbWcnCiAgICB3aGVuIFN0cmVuZ3RoIH4gImRveGVwaW4gMTAgTUcgT3JhbCBDYXBzdWxlIiB0aGVuIDEwICdtZycKICAgIHdoZW4gU3RyZW5ndGggfiAiZG94ZXBpbiAxMCBNRy9NTCBPcmFsIFNvbHV0aW9uIiB0aGVuIDEwICdtZy9tTCcKICAgIHdoZW4gU3RyZW5ndGggfiAiZG94ZXBpbiAyNSBNRyBPcmFsIENhcHN1bGUiIHRoZW4gMjUgJ21nJwogICAgd2hlbiBTdHJlbmd0aCB+ICJkb3hlcGluIDUwIE1HIE9yYWwgQ2Fwc3VsZSIgdGhlbiA1MCAnbWcnCiAgICB3aGVuIFN0cmVuZ3RoIH4gImRveGVwaW4gNzUgTUcgT3JhbCBDYXBzdWxlIiB0aGVuIDc1ICdtZycKICAgIHdoZW4gU3RyZW5ndGggfiAiZG94ZXBpbiAxMDAgTUcgT3JhbCBDYXBzdWxlIiB0aGVuIDEwMCAnbWcnCiAgICB3aGVuIFN0cmVuZ3RoIH4gImRveGVwaW4gMTUwIE1HIE9yYWwgQ2Fwc3VsZSIgdGhlbiAxNTAgJ21nJyAKICAgIGVsc2UgbnVsbCBlbmQKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gbWVkaWNhdGlvblJlcXVlc3RQZXJpb2RJbkRheXMoUmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdCk6CiAgUmVxdWVzdCBSCiAgICBsZXQgZG9zYWdlOiBzaW5nbGV0b24gZnJvbSBSLmRvc2FnZUluc3RydWN0aW9uLAogICAgZG9zZUFuZFJhdGU6IHNpbmdsZXRvbiBmcm9tIGRvc2FnZS5kb3NlQW5kUmF0ZSwKICAgIHRpbWluZzogZG9zYWdlLnRpbWluZywKICAgIGZyZXF1ZW5jeTogQ29hbGVzY2UodGltaW5nLnJlcGVhdC5mcmVxdWVuY3lNYXgsIHRpbWluZy5yZXBlYXQuZnJlcXVlbmN5KSwKICAgIHBlcmlvZDogQ01ELiJRdWFudGl0eSIgKCB0aW1pbmcucmVwZWF0LnBlcmlvZCwgdGltaW5nLnJlcGVhdC5wZXJpb2RVbml0ICksCiAgICBkb3NlUmFuZ2U6IGRvc2VBbmRSYXRlLmRvc2UsCiAgICBkb3NlUXVhbnRpdHk6IGRvc2VBbmRSYXRlLmRvc2UsCiAgICBkb3NlOiBDb2FsZXNjZSgKICAgICAgZW5kIG9mIGRvc2VSYW5nZSwgZG9zZVF1YW50aXR5CiAgICApLAogICAgZG9zZXNQZXJEYXk6IENvYWxlc2NlKChDTUQuIlRvRGFpbHkiKGZyZXF1ZW5jeSwgcGVyaW9kKSksIENvdW50KHRpbWluZy5yZXBlYXQudGltZU9mRGF5KSwgMS4wKSwKICAgIGJvdW5kc1BlcmlvZDogdGltaW5nLnJlcGVhdC5ib3VuZHMgYXMgRkhJUi5QZXJpb2QsCiAgICBkYXlzU3VwcGx5OiAoIGNvbnZlcnQgUi5kaXNwZW5zZVJlcXVlc3QuZXhwZWN0ZWRTdXBwbHlEdXJhdGlvbiB0byBkYXlzICkudmFsdWUsCiAgICBxdWFudGl0eTogUi5kaXNwZW5zZVJlcXVlc3QucXVhbnRpdHksCiAgICByZWZpbGxzOiBDb2FsZXNjZShSLmRpc3BlbnNlUmVxdWVzdC5udW1iZXJPZlJlcGVhdHNBbGxvd2VkLCAwKSwKICAgIHN0YXJ0RGF0ZTogQ29hbGVzY2UoZGF0ZSBmcm9tIHN0YXJ0IG9mIGJvdW5kc1BlcmlvZCwgZGF0ZSBmcm9tIFIuYXV0aG9yZWRPbiwgZGF0ZSBmcm9tIHN0YXJ0IG9mIFIuZGlzcGVuc2VSZXF1ZXN0LnZhbGlkaXR5UGVyaW9kKSwKICAgIHRvdGFsRGF5c1N1cHBsaWVkOiBDb2FsZXNjZShkYXlzU3VwcGx5LCBxdWFudGl0eS52YWx1ZSAvKGRvc2UudmFsdWUgKiBkb3Nlc1BlckRheSkpICogKCAxICsgcmVmaWxscyApCiAgICByZXR1cm4gdG90YWxEYXlzU3VwcGxpZWQKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gYXZlcmFnZURhaWx5RG9zZShNZWRpY2F0aW9uUmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdCk6CiAgTWVkaWNhdGlvblJlcXVlc3QgT3JkZXIKICAgIGxldCBNZWRpY2F0aW9uU3RyZW5ndGg6IE9yZGVyLmdldE1lZGljYXRpb25Db2RlICggKS5tZWRpY2F0aW9uU3RyZW5ndGhQZXJVbml0ICggKSwKICAgIERheXNTdXBwbGllZDogT3JkZXIubWVkaWNhdGlvblJlcXVlc3RQZXJpb2RJbkRheXMgKCApCiAgICByZXR1cm4gaWYgRGF5c1N1cHBsaWVkIGlzIG5vdCBudWxsCiAgICAgIGFuZCAoIE1lZGljYXRpb25TdHJlbmd0aC51bml0ID0gJ21nJwogICAgICAgICAgb3IgKCBNZWRpY2F0aW9uU3RyZW5ndGgudW5pdCA9ICdtZy9tTCcKICAgICAgICAgICAgICBhbmQgT3JkZXIuZGlzcGVuc2VSZXF1ZXN0LnF1YW50aXR5LnVuaXQgPSAnbUwnCiAgICAgICAgICApCiAgICAgICkgdGhlbiAoICggT3JkZXIuZGlzcGVuc2VSZXF1ZXN0LnF1YW50aXR5ICogTWVkaWNhdGlvblN0cmVuZ3RoICkgLyBTeXN0ZW0uUXVhbnRpdHkgeyB2YWx1ZTogRGF5c1N1cHBsaWVkLCB1bml0OiAnZCcgfSApCiAgICAgIGVsc2UgbnVsbA=="/>
    <url
         value="https://madie.cms.gov/Library-CMS156FHIRHighRiskMedsElderly.cql"/>
  </content>
</Library>