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

: CMS986FHIRMalnutritionScore - JSON Representation

Draft as of 2026-09-19

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "CMS986FHIRMalnutritionScore",
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n  <table class=\"narrative-table\">\n    <tbody>\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"metadata\"> </a>Metadata</th>\n\n\n</tr>\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Version</th>\n\n\n\n<td class=\"content-container\">1.1.000</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Status</th>\n\n\n\n<td class=\"content-container\">Draft</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Type</th>\n\n\n\n<td class=\"content-container\">\n    <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library\n\n\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"parameters\"> </a>Parameters</th>\n\n\n</tr>\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Parameter</th>\n\n\n\n<td class=\"content-container\">None</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n  <tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\">Library Content</th>\n\n\n</tr>\n  \n    \n    <tr>\n      <th scope=\"row\" class=\"row-header\">CQL Content</th>\n      <td>\n        <a name=\"cql-content\"> </a>\n        <pre style=\"border: none;\" class=\"content-container highlight language-cql\"><code class=\"language-cql\">/*\nNOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.\n*/\nlibrary CMS986FHIRMalnutritionScore version '1.1.000'\n\nusing USQualityCore version '0.1.0-cibuild'\nusing USCore version '6.1.0-derived'\nusing FHIR version '4.0.1'\n\ninclude hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers\ninclude hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon\ninclude hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon\ninclude hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements\n\ninclude USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon\ninclude SupplementalDataElements version '6.1.000' called SDE\ninclude Status version '2.1.000' called Status\ninclude CQMCommon version '5.1.000' called CQMCommon\n\nvalueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'\nvalueset &quot;Hospice Status&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.101'\nvalueset &quot;Hospice Care Referral or Admission&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1116.365'\nvalueset &quot;Dietitian Referral&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.91'\nvalueset &quot;Malnutrition Diagnosis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.55'\nvalueset &quot;Malnutrition Risk Screening&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.92'\nvalueset &quot;Malnutrition Screening Finding of At Risk Result&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.89'\nvalueset &quot;Malnutrition Screening Finding of Not At Risk Result&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.34'\nvalueset &quot;Nutrition Assessment&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.21'\nvalueset &quot;Nutrition Assessment Status Finding of Moderately Malnourished&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.47'\nvalueset &quot;Nutrition Assessment Status Finding of Well Nourished or Not Malnourished or Mildly Malnourished&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.96'\nvalueset &quot;Nutrition Assessment Status Finding of Severely Malnourished&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.43'\nvalueset &quot;Nutrition Care Plan&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1095.93'\n\nparameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;\n  default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\ndefine &quot;SDE Ethnicity&quot;:\n  SDE.&quot;SDE Ethnicity&quot;\n\ndefine &quot;SDE Payer Type&quot;:\n  SDE.&quot;SDE Payer&quot;\n\ndefine &quot;SDE Race&quot;:\n  SDE.&quot;SDE Race&quot;\n\ndefine &quot;SDE Sex&quot;:\n  SDE.&quot;SDE Sex&quot;\n\ndefine &quot;Measure Population&quot;:\n  &quot;Initial Population&quot;\n\ndefine &quot;Initial Population&quot;:\n  [Encounter: &quot;Encounter Inpatient&quot;] EncounterInpatient\n    where EncounterInpatient.period ends during day of &quot;Measurement Period&quot;\n      and AgeInYearsAt(date from start of EncounterInpatient.period) &gt;= 18\n      and ( duration in hours of EncounterInpatient.period &gt;= 24 )\n      and EncounterInpatient.status = 'finished'\n\ndefine &quot;Measure Population Exclusion&quot;:\n  &quot;Encounters with Discharge for Hospice Care&quot;\n    union &quot;Encounters with Hospice during Eligible Encounter&quot;\n\ndefine &quot;Encounters with Discharge for Hospice Care&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    where QualifyingEncounter.hospitalization.dischargeDisposition in &quot;Hospice Care Referral or Admission&quot;\n\n/*define &quot;Intervention Hospice Care&quot;:\n    ( [&quot;ServiceRequest&quot;: &quot;Hospice Status&quot;] HospiceStatusOrder\n    where HospiceStatusOrder.status in { 'active', 'completed', 'on-hold' }\n        and HospiceStatusOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n  )\n    union ( [&quot;Procedure&quot;: &quot;Hospice Status&quot;] HospiceStatusPerformed\n            where HospiceStatusPerformed.status in { 'completed', 'in-progress' } \n           )\n\ndefine &quot;Encounters with Hospice during Eligible Encounter&quot;:\n    &quot;Measure Population&quot; QualifyingEncounter\n    with &quot;Intervention Hospice Care&quot; HospiceStatus\n            such that Coalesce (start of HospiceStatus.performed.toInterval(), HospiceStatus.authoredOn) during day of QualifyingEncounter.hospitalizationWithObservation ( )\n*/\n//Testing definitions based on Codev comment\n\n\n\ndefine &quot;Intervention Hospice Care&quot;:\n  ( [&quot;ServiceRequest&quot;: &quot;Hospice Status&quot;] HospiceStatusOrder\n      where HospiceStatusOrder.status in { 'active', 'completed', 'on-hold' }\n        and HospiceStatusOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n      return HospiceStatusOrder.authoredOn\n  )\n    union ( [&quot;Procedure&quot;: &quot;Hospice Status&quot;] HospiceStatusPerformed\n        where HospiceStatusPerformed.status in { 'completed', 'in-progress' }\n        return start of HospiceStatusPerformed.performed.toInterval ( )\n    )\n\ndefine &quot;Encounters with Hospice during Eligible Encounter&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    with &quot;Intervention Hospice Care&quot; HospiceStatusDate\n      such that HospiceStatusDate during day of QualifyingEncounter.hospitalizationWithObservation ( )\n\n/*define &quot;Intervention Dietitian Referral&quot;:\n( [&quot;ServiceRequest&quot;: &quot;Dietitian Referral&quot;] DietitianReferralOrder\n    where DietitianReferralOrder.status in { 'active', 'completed', 'on-hold' }\n        and DietitianReferralOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n  \n  )\n    union ( [&quot;Procedure&quot;: &quot;Dietitian Referral&quot;] DietitianReferralPerformed\n            where DietitianReferralPerformed.status in { 'completed', 'in-progress' } \n           )\n\ndefine &quot;Encounters with Dietitian Referral&quot;:\n    &quot;Measure Population&quot; QualifyingEncounter\n    with &quot;Intervention Dietitian Referral&quot; DietitianReferral\n            such that Coalesce (start of DietitianReferral.performed.toInterval(), DietitianReferral.authoredOn) during day of QualifyingEncounter.hospitalizationWithObservation ( )\n*/\n//New definition from Codev comments\n\n\n\ndefine &quot;Intervention Dietitian Referral&quot;:\n  ( [&quot;ServiceRequest&quot;: &quot;Dietitian Referral&quot;] DietitianReferralOrder\n      where DietitianReferralOrder.status in { 'active', 'completed', 'on-hold' }\n        and DietitianReferralOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n      return DietitianReferralOrder.authoredOn\n  )\n    union ( [&quot;Procedure&quot;: &quot;Dietitian Referral&quot;] DietitianReferralPerformed\n        where DietitianReferralPerformed.status in { 'completed', 'in-progress' }\n        return start of DietitianReferralPerformed.performed.toInterval ( )\n    )\n\ndefine &quot;Encounters with Dietitian Referral&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    with &quot;Intervention Dietitian Referral&quot; DietitianReferralDate\n      such that DietitianReferralDate during day of QualifyingEncounter.hospitalizationWithObservation ( )\n\ndefine &quot;Encounters with Malnutrition Risk Screening&quot;:\n  &quot;Encounters with Malnutrition Risk Screening Not At Risk&quot;\n    union &quot;Encounters with Malnutrition Risk Screening At Risk&quot;\n\ndefine &quot;Encounters with Malnutrition Risk Screening or with Dietitian Referral&quot;:\n  &quot;Encounters with Malnutrition Risk Screening&quot;\n    union &quot;Encounters with Dietitian Referral&quot;\n\ndefine &quot;Encounters with Malnutrition Risk Screening Not At Risk&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    with [&quot;ObservationScreeningAssessment&quot;: &quot;Malnutrition Risk Screening&quot;] MalnutritionRiskScreening\n      such that MalnutritionRiskScreening.status in { 'final', 'amended', 'corrected' }\n        and MalnutritionRiskScreening.effective.toInterval ( ) during QualifyingEncounter.hospitalizationWithObservation ( )\n        and ( MalnutritionRiskScreening.value as FHIR.CodeableConcept in &quot;Malnutrition Screening Finding of Not At Risk Result&quot; )\n\ndefine &quot;Encounters with Malnutrition Not At Risk Screening and without Dietitian Referral&quot;:\n  &quot;Encounters with Malnutrition Risk Screening Not At Risk&quot;\n    except &quot;Encounters with Dietitian Referral&quot;\n\ndefine &quot;Encounters with Malnutrition Risk Screening At Risk&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    with [&quot;ObservationScreeningAssessment&quot;: &quot;Malnutrition Risk Screening&quot;] MalnutritionRiskScreening\n      such that MalnutritionRiskScreening.status in { 'final', 'amended', 'corrected' }\n        and MalnutritionRiskScreening.effective.toInterval ( ) during QualifyingEncounter.hospitalizationWithObservation ( )\n        and ( MalnutritionRiskScreening.value as FHIR.CodeableConcept in &quot;Malnutrition Screening Finding of At Risk Result&quot; )\n\ndefine &quot;Encounters with Malnutrition Risk Screening At Risk or with Dietitian Referral&quot;:\n  &quot;Encounters with Malnutrition Risk Screening At Risk&quot;\n    union &quot;Encounters with Dietitian Referral&quot;\n   \n\n/*define function &quot;Last Nutrition Assessment Day During Encounter&quot;(QualifyingEncounter Encounter):\n  Max(&quot;Nutrition Assessment Performed&quot; NutritionAssessmentTuple\n    where NutritionAssessmentTuple.HospEncId = QualifyingEncounter.id\n    return NutritionAssessmentTuple.NutrAssessTimingLatest\n  )\n\ndefine &quot;Nutrition Assessment Performed&quot;:\n    from\n    &quot;Measure Population&quot; QualifyingEncounter,\n    [&quot;ObservationScreeningAssessment&quot;: &quot;Nutrition Assessment&quot;] NutritionAssessment\n        where NutritionAssessment.status in { 'final', 'amended', 'corrected' }\n            and NutritionAssessment.effective.toInterval ( ) during QualifyingEncounter.hospitalizationWithObservation ( )\n            and NutritionAssessment.value is not null\n            return Tuple {\n        HospEncId: QualifyingEncounter.id,\n        NutrAssessTimingLatest: NutritionAssessment.effective.latest()\n        }\n*/\n//Test definition per CODev feedback\n\n\n\ndefine function &quot;Last Nutrition Assessment Day During Encounter&quot;(QualifyingEncounter Encounter):\n  Max([&quot;ObservationScreeningAssessment&quot;: &quot;Nutrition Assessment&quot;] NutritionAssessment\n      where NutritionAssessment.status in { 'final', 'amended', 'corrected' }\n        and NutritionAssessment.effective.toInterval() during QualifyingEncounter.hospitalizationWithObservation()\n        and NutritionAssessment.value is not null\n      return NutritionAssessment.effective.latest()\n  )\n\ndefine &quot;Encounter With Most Recent Nutrition Assessment And Identified Status&quot;:\n  &quot;Encounters with Malnutrition Risk Screening At Risk or with Dietitian Referral&quot; QualifyingEncounter\n    with [&quot;ObservationScreeningAssessment&quot;: &quot;Nutrition Assessment&quot;] NutritionAssessment\n      such that ( NutritionAssessment.status in { 'final', 'amended', 'corrected' }\n          and NutritionAssessment.effective.toInterval ( ) during QualifyingEncounter.hospitalizationWithObservation ( )\n          and ( NutritionAssessment.value as FHIR.CodeableConcept in &quot;Nutrition Assessment Status Finding of Well Nourished or Not Malnourished or Mildly Malnourished&quot;\n              or ( NutritionAssessment.value as FHIR.CodeableConcept in &quot;Nutrition Assessment Status Finding of Moderately Malnourished&quot; )\n              or ( NutritionAssessment.value as FHIR.CodeableConcept in &quot;Nutrition Assessment Status Finding of Severely Malnourished&quot; )\n          )\n          and NutritionAssessment.effective.latest ( ) same day as &quot;Last Nutrition Assessment Day During Encounter&quot;(QualifyingEncounter)\n      )\n\ndefine &quot;Encounter With Most Recent Nutrition Assessment Status of Moderately Or Severely Malnourished&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    with [&quot;ObservationScreeningAssessment&quot;: &quot;Nutrition Assessment&quot;] NutritionAssessment\n      such that NutritionAssessment.status in { 'final', 'amended', 'corrected' }\n        and NutritionAssessment.effective.toInterval ( ) during QualifyingEncounter.hospitalizationWithObservation ( )\n        and ( NutritionAssessment.value as FHIR.CodeableConcept in &quot;Nutrition Assessment Status Finding of Moderately Malnourished&quot;\n            or NutritionAssessment.value as FHIR.CodeableConcept in &quot;Nutrition Assessment Status Finding of Severely Malnourished&quot;\n        )\n        and NutritionAssessment.effective.latest ( ) same day as &quot;Last Nutrition Assessment Day During Encounter&quot;(QualifyingEncounter)\n\ndefine &quot;Encounter With Most Recent Nutrition Assessment Status of Not or Mildly Malnourished&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    with [&quot;ObservationScreeningAssessment&quot;: &quot;Nutrition Assessment&quot;] NutritionAssessment\n      such that ( NutritionAssessment.status in { 'final', 'amended', 'corrected' }\n          and NutritionAssessment.effective.toInterval ( ) during QualifyingEncounter.hospitalizationWithObservation ( )\n          and ( NutritionAssessment.value as FHIR.CodeableConcept in &quot;Nutrition Assessment Status Finding of Well Nourished or Not Malnourished or Mildly Malnourished&quot; )\n          and NutritionAssessment.effective.latest ( ) same day as &quot;Last Nutrition Assessment Day During Encounter&quot;(QualifyingEncounter)\n      )\n\ndefine &quot;Encounters with Malnutrition Diagnosis&quot;:\n  ( &quot;Measure Population&quot; QualifyingEncounter\n      where exists ( &quot;Has Malnutrition Diagnosis&quot; MalnutritionDiagnosis\n          where MalnutritionDiagnosis.prevalenceInterval ( ) overlaps day of QualifyingEncounter.hospitalizationWithObservation ( )\n      )\n  )\n    union &quot;Encounters With Encounter Diagnosis Of Malnutrition Diagnosis&quot;\n\ndefine &quot;Has Malnutrition Diagnosis&quot;:\n  [ConditionProblemsHealthConcerns: &quot;Malnutrition Diagnosis&quot;] MalnutritionDiagnosis\n    where MalnutritionDiagnosis.prevalenceInterval ( ) overlaps &quot;Measurement Period&quot;\n      and MalnutritionDiagnosis.isVerified ( )\n\ndefine &quot;Encounters With Encounter Diagnosis Of Malnutrition Diagnosis&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    where QualifyingEncounter.reasonCode in &quot;Malnutrition Diagnosis&quot;\n      or QualifyingEncounter.encounterDiagnosis ( ).verified ( ).code in &quot;Malnutrition Diagnosis&quot;\n\ndefine &quot;Encounters with Nutrition Care Plan&quot;:\n  &quot;Measure Population&quot; QualifyingEncounter\n    with [&quot;Procedure&quot;: &quot;Nutrition Care Plan&quot;] NutritionCarePlan\n      such that NutritionCarePlan.status in { 'completed', 'in-progress' }\n        and NutritionCarePlan.performed.earliest ( ) during QualifyingEncounter.hospitalizationWithObservation ( )\n\ndefine function &quot;Measure Observation 1&quot;(MalnutritionRiskScreening Encounter):\n  if &quot;Encounters with Malnutrition Risk Screening or with Dietitian Referral&quot; contains MalnutritionRiskScreening then 1 \n    else 0\n\ndefine function &quot;Measure Observation 2&quot;(NutritionAssessment Encounter):\n  if &quot;Encounters with Malnutrition Not At Risk Screening and without Dietitian Referral&quot; contains NutritionAssessment then 0 \n    else if &quot;Encounters with Malnutrition Risk Screening At Risk or with Dietitian Referral&quot; contains NutritionAssessment then \n      if &quot;Encounter With Most Recent Nutrition Assessment And Identified Status&quot; contains NutritionAssessment then 1 \n      else 0 \n    else 0\n\ndefine function &quot;Measure Observation 3&quot;(MalnutritionDiagnosis Encounter):\n  if &quot;Encounters with Malnutrition Not At Risk Screening and without Dietitian Referral&quot; contains MalnutritionDiagnosis then 0 \n    else if &quot;Encounters with Malnutrition Risk Screening At Risk or with Dietitian Referral&quot; contains MalnutritionDiagnosis then \n      if &quot;Encounters with Malnutrition Diagnosis&quot; contains MalnutritionDiagnosis then \n        if &quot;Encounter With Most Recent Nutrition Assessment Status of Not or Mildly Malnourished&quot; contains MalnutritionDiagnosis then 0 \n        else if &quot;Encounter With Most Recent Nutrition Assessment Status of Moderately Or Severely Malnourished&quot; contains MalnutritionDiagnosis then 1 \n      else 0 \n    else 0 \n  else 0\n\ndefine function &quot;Measure Observation 4&quot;(NutritionCarePlan Encounter):\n  if &quot;Encounters with Malnutrition Not At Risk Screening and without Dietitian Referral&quot; contains NutritionCarePlan then 0 \n    else if &quot;Encounters with Malnutrition Risk Screening At Risk or with Dietitian Referral&quot; contains NutritionCarePlan then \n      if &quot;Encounters with Nutrition Care Plan&quot; contains NutritionCarePlan then \n        if &quot;Encounter With Most Recent Nutrition Assessment Status of Not or Mildly Malnourished&quot; contains NutritionCarePlan then 0 \n        else if &quot;Encounter With Most Recent Nutrition Assessment Status of Moderately Or Severely Malnourished&quot; contains NutritionCarePlan then 1 \n        else 0 \n      else 0 \n    else 0\n\ndefine function &quot;Total Malnutrition Care Score Eligible Occurrences&quot;(QualifyingEncounter Encounter):\n  if &quot;Encounters with Malnutrition Risk Screening or with Dietitian Referral&quot; contains QualifyingEncounter\n    and &quot;Encounters with Malnutrition Risk Screening Not At Risk&quot; contains QualifyingEncounter\n    and not ( &quot;Encounters with Dietitian Referral&quot; contains QualifyingEncounter ) then 1 \n    else if ( &quot;Encounters with Malnutrition Risk Screening or with Dietitian Referral&quot; contains QualifyingEncounter\n      and &quot;Encounters with Malnutrition Risk Screening At Risk&quot; contains QualifyingEncounter\n      or &quot;Encounters with Dietitian Referral&quot; contains QualifyingEncounter\n  )\n    and &quot;Encounter With Most Recent Nutrition Assessment Status of Not or Mildly Malnourished&quot; contains QualifyingEncounter\n    or not ( &quot;Encounter With Most Recent Nutrition Assessment And Identified Status&quot; contains QualifyingEncounter ) then 2 \n    else 4\n\ndefine function &quot;Measure Observation Total Malnutrition Components Score&quot;(QualifyingEncounter Encounter):\n  Sum({ &quot;Measure Observation 1&quot;(QualifyingEncounter), &quot;Measure Observation 2&quot;(QualifyingEncounter), &quot;Measure Observation 3&quot;(QualifyingEncounter), &quot;Measure Observation 4&quot;(QualifyingEncounter) })\n\ndefine function &quot;Measure Observation Total Malnutrition Care Score as Percentage&quot;(QualifyingEncounter Encounter):\n  100 * ( &quot;Measure Observation Total Malnutrition Components Score&quot;(QualifyingEncounter) / &quot;Total Malnutrition Care Score Eligible Occurrences&quot;(QualifyingEncounter) )</code></pre>\n      </td>\n    </tr>\n    \n  \n\n\n\n<tr>\n  <th colspan=\"2\" scope=\"row\" class=\"row-header\">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>\n</tr>\n\n    </tbody>\n  </table>\n</div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem",
      "valueReference" : {
        "reference" : "Device/cqf-tooling"
      }
    }
  ],
  "url" : "https://madie.cms.gov/Library/CMS986FHIRMalnutritionScore",
  "version" : "1.1.000",
  "name" : "CMS986FHIRMalnutritionScore",
  "status" : "draft",
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2026-09-19T16:31:14+00:00",
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVM5ODZGSElSTWFsbnV0cml0aW9uU2NvcmUgdmVyc2lvbiAnMS4xLjAwMCcKCnVzaW5nIFVTUXVhbGl0eUNvcmUgdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcKdXNpbmcgVVNDb3JlIHZlcnNpb24gJzYuMS4wLWRlcml2ZWQnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJDb21tb24gdmVyc2lvbiAnMi4wLjAnIGNhbGxlZCBGSElSQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUNvbW1vbiB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlRWxlbWVudHMgdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlRWxlbWVudHMKCmluY2x1ZGUgVVNRdWFsaXR5Q29yZUNvbW1vbiB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJyBjYWxsZWQgVVNRdWFsaXR5Q29yZUNvbW1vbgppbmNsdWRlIFN1cHBsZW1lbnRhbERhdGFFbGVtZW50cyB2ZXJzaW9uICc2LjEuMDAwJyBjYWxsZWQgU0RFCmluY2x1ZGUgU3RhdHVzIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBTdGF0dXMKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgoKdmFsdWVzZXQgIkVuY291bnRlciBJbnBhdGllbnQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjY2LjUuMzA3Jwp2YWx1ZXNldCAiSG9zcGljZSBTdGF0dXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDk1LjEwMScKdmFsdWVzZXQgIkhvc3BpY2UgQ2FyZSBSZWZlcnJhbCBvciBBZG1pc3Npb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTE2LjM2NScKdmFsdWVzZXQgIkRpZXRpdGlhbiBSZWZlcnJhbCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwOTUuOTEnCnZhbHVlc2V0ICJNYWxudXRyaXRpb24gRGlhZ25vc2lzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTA5NS41NScKdmFsdWVzZXQgIk1hbG51dHJpdGlvbiBSaXNrIFNjcmVlbmluZyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwOTUuOTInCnZhbHVlc2V0ICJNYWxudXRyaXRpb24gU2NyZWVuaW5nIEZpbmRpbmcgb2YgQXQgUmlzayBSZXN1bHQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDk1Ljg5Jwp2YWx1ZXNldCAiTWFsbnV0cml0aW9uIFNjcmVlbmluZyBGaW5kaW5nIG9mIE5vdCBBdCBSaXNrIFJlc3VsdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwOTUuMzQnCnZhbHVlc2V0ICJOdXRyaXRpb24gQXNzZXNzbWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwOTUuMjEnCnZhbHVlc2V0ICJOdXRyaXRpb24gQXNzZXNzbWVudCBTdGF0dXMgRmluZGluZyBvZiBNb2RlcmF0ZWx5IE1hbG5vdXJpc2hlZCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwOTUuNDcnCnZhbHVlc2V0ICJOdXRyaXRpb24gQXNzZXNzbWVudCBTdGF0dXMgRmluZGluZyBvZiBXZWxsIE5vdXJpc2hlZCBvciBOb3QgTWFsbm91cmlzaGVkIG9yIE1pbGRseSBNYWxub3VyaXNoZWQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDk1Ljk2Jwp2YWx1ZXNldCAiTnV0cml0aW9uIEFzc2Vzc21lbnQgU3RhdHVzIEZpbmRpbmcgb2YgU2V2ZXJlbHkgTWFsbm91cmlzaGVkIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTA5NS40MycKdmFsdWVzZXQgIk51dHJpdGlvbiBDYXJlIFBsYW4iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDk1LjkzJwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciBUeXBlIjoKICBTREUuIlNERSBQYXllciIKCmRlZmluZSAiU0RFIFJhY2UiOgogIFNERS4iU0RFIFJhY2UiCgpkZWZpbmUgIlNERSBTZXgiOgogIFNERS4iU0RFIFNleCIKCmRlZmluZSAiTWVhc3VyZSBQb3B1bGF0aW9uIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIFtFbmNvdW50ZXI6ICJFbmNvdW50ZXIgSW5wYXRpZW50Il0gRW5jb3VudGVySW5wYXRpZW50CiAgICB3aGVyZSBFbmNvdW50ZXJJbnBhdGllbnQucGVyaW9kIGVuZHMgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBhbmQgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZiBFbmNvdW50ZXJJbnBhdGllbnQucGVyaW9kKSA+PSAxOAogICAgICBhbmQgKCBkdXJhdGlvbiBpbiBob3VycyBvZiBFbmNvdW50ZXJJbnBhdGllbnQucGVyaW9kID49IDI0ICkKICAgICAgYW5kIEVuY291bnRlcklucGF0aWVudC5zdGF0dXMgPSAnZmluaXNoZWQnCgpkZWZpbmUgIk1lYXN1cmUgUG9wdWxhdGlvbiBFeGNsdXNpb24iOgogICJFbmNvdW50ZXJzIHdpdGggRGlzY2hhcmdlIGZvciBIb3NwaWNlIENhcmUiCiAgICB1bmlvbiAiRW5jb3VudGVycyB3aXRoIEhvc3BpY2UgZHVyaW5nIEVsaWdpYmxlIEVuY291bnRlciIKCmRlZmluZSAiRW5jb3VudGVycyB3aXRoIERpc2NoYXJnZSBmb3IgSG9zcGljZSBDYXJlIjoKICAiTWVhc3VyZSBQb3B1bGF0aW9uIiBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICB3aGVyZSBRdWFsaWZ5aW5nRW5jb3VudGVyLmhvc3BpdGFsaXphdGlvbi5kaXNjaGFyZ2VEaXNwb3NpdGlvbiBpbiAiSG9zcGljZSBDYXJlIFJlZmVycmFsIG9yIEFkbWlzc2lvbiIKCi8qZGVmaW5lICJJbnRlcnZlbnRpb24gSG9zcGljZSBDYXJlIjoKICAgICggWyJTZXJ2aWNlUmVxdWVzdCI6ICJIb3NwaWNlIFN0YXR1cyJdIEhvc3BpY2VTdGF0dXNPcmRlcgogICAgd2hlcmUgSG9zcGljZVN0YXR1c09yZGVyLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJywgJ29uLWhvbGQnIH0KICAgICAgICBhbmQgSG9zcGljZVN0YXR1c09yZGVyLmludGVudCBpbiB7ICdvcmRlcicsICdvcmlnaW5hbC1vcmRlcicsICdyZWZsZXgtb3JkZXInLCAnZmlsbGVyLW9yZGVyJywgJ2luc3RhbmNlLW9yZGVyJyB9CiAgKQogICAgdW5pb24gKCBbIlByb2NlZHVyZSI6ICJIb3NwaWNlIFN0YXR1cyJdIEhvc3BpY2VTdGF0dXNQZXJmb3JtZWQKICAgICAgICAgICAgd2hlcmUgSG9zcGljZVN0YXR1c1BlcmZvcm1lZC5zdGF0dXMgaW4geyAnY29tcGxldGVkJywgJ2luLXByb2dyZXNzJyB9IAogICAgICAgICAgICkKCmRlZmluZSAiRW5jb3VudGVycyB3aXRoIEhvc3BpY2UgZHVyaW5nIEVsaWdpYmxlIEVuY291bnRlciI6CiAgICAiTWVhc3VyZSBQb3B1bGF0aW9uIiBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICB3aXRoICJJbnRlcnZlbnRpb24gSG9zcGljZSBDYXJlIiBIb3NwaWNlU3RhdHVzCiAgICAgICAgICAgIHN1Y2ggdGhhdCBDb2FsZXNjZSAoc3RhcnQgb2YgSG9zcGljZVN0YXR1cy5wZXJmb3JtZWQudG9JbnRlcnZhbCgpLCBIb3NwaWNlU3RhdHVzLmF1dGhvcmVkT24pIGR1cmluZyBkYXkgb2YgUXVhbGlmeWluZ0VuY291bnRlci5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb24gKCApCiovCi8vVGVzdGluZyBkZWZpbml0aW9ucyBiYXNlZCBvbiBDb2RldiBjb21tZW50CgoKCmRlZmluZSAiSW50ZXJ2ZW50aW9uIEhvc3BpY2UgQ2FyZSI6CiAgKCBbIlNlcnZpY2VSZXF1ZXN0IjogIkhvc3BpY2UgU3RhdHVzIl0gSG9zcGljZVN0YXR1c09yZGVyCiAgICAgIHdoZXJlIEhvc3BpY2VTdGF0dXNPcmRlci5zdGF0dXMgaW4geyAnYWN0aXZlJywgJ2NvbXBsZXRlZCcsICdvbi1ob2xkJyB9CiAgICAgICAgYW5kIEhvc3BpY2VTdGF0dXNPcmRlci5pbnRlbnQgaW4geyAnb3JkZXInLCAnb3JpZ2luYWwtb3JkZXInLCAncmVmbGV4LW9yZGVyJywgJ2ZpbGxlci1vcmRlcicsICdpbnN0YW5jZS1vcmRlcicgfQogICAgICByZXR1cm4gSG9zcGljZVN0YXR1c09yZGVyLmF1dGhvcmVkT24KICApCiAgICB1bmlvbiAoIFsiUHJvY2VkdXJlIjogIkhvc3BpY2UgU3RhdHVzIl0gSG9zcGljZVN0YXR1c1BlcmZvcm1lZAogICAgICAgIHdoZXJlIEhvc3BpY2VTdGF0dXNQZXJmb3JtZWQuc3RhdHVzIGluIHsgJ2NvbXBsZXRlZCcsICdpbi1wcm9ncmVzcycgfQogICAgICAgIHJldHVybiBzdGFydCBvZiBIb3NwaWNlU3RhdHVzUGVyZm9ybWVkLnBlcmZvcm1lZC50b0ludGVydmFsICggKQogICAgKQoKZGVmaW5lICJFbmNvdW50ZXJzIHdpdGggSG9zcGljZSBkdXJpbmcgRWxpZ2libGUgRW5jb3VudGVyIjoKICAiTWVhc3VyZSBQb3B1bGF0aW9uIiBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICB3aXRoICJJbnRlcnZlbnRpb24gSG9zcGljZSBDYXJlIiBIb3NwaWNlU3RhdHVzRGF0ZQogICAgICBzdWNoIHRoYXQgSG9zcGljZVN0YXR1c0RhdGUgZHVyaW5nIGRheSBvZiBRdWFsaWZ5aW5nRW5jb3VudGVyLmhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbiAoICkKCi8qZGVmaW5lICJJbnRlcnZlbnRpb24gRGlldGl0aWFuIFJlZmVycmFsIjoKKCBbIlNlcnZpY2VSZXF1ZXN0IjogIkRpZXRpdGlhbiBSZWZlcnJhbCJdIERpZXRpdGlhblJlZmVycmFsT3JkZXIKICAgIHdoZXJlIERpZXRpdGlhblJlZmVycmFsT3JkZXIuc3RhdHVzIGluIHsgJ2FjdGl2ZScsICdjb21wbGV0ZWQnLCAnb24taG9sZCcgfQogICAgICAgIGFuZCBEaWV0aXRpYW5SZWZlcnJhbE9yZGVyLmludGVudCBpbiB7ICdvcmRlcicsICdvcmlnaW5hbC1vcmRlcicsICdyZWZsZXgtb3JkZXInLCAnZmlsbGVyLW9yZGVyJywgJ2luc3RhbmNlLW9yZGVyJyB9CiAgCiAgKQogICAgdW5pb24gKCBbIlByb2NlZHVyZSI6ICJEaWV0aXRpYW4gUmVmZXJyYWwiXSBEaWV0aXRpYW5SZWZlcnJhbFBlcmZvcm1lZAogICAgICAgICAgICB3aGVyZSBEaWV0aXRpYW5SZWZlcnJhbFBlcmZvcm1lZC5zdGF0dXMgaW4geyAnY29tcGxldGVkJywgJ2luLXByb2dyZXNzJyB9IAogICAgICAgICAgICkKCmRlZmluZSAiRW5jb3VudGVycyB3aXRoIERpZXRpdGlhbiBSZWZlcnJhbCI6CiAgICAiTWVhc3VyZSBQb3B1bGF0aW9uIiBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICB3aXRoICJJbnRlcnZlbnRpb24gRGlldGl0aWFuIFJlZmVycmFsIiBEaWV0aXRpYW5SZWZlcnJhbAogICAgICAgICAgICBzdWNoIHRoYXQgQ29hbGVzY2UgKHN0YXJ0IG9mIERpZXRpdGlhblJlZmVycmFsLnBlcmZvcm1lZC50b0ludGVydmFsKCksIERpZXRpdGlhblJlZmVycmFsLmF1dGhvcmVkT24pIGR1cmluZyBkYXkgb2YgUXVhbGlmeWluZ0VuY291bnRlci5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb24gKCApCiovCi8vTmV3IGRlZmluaXRpb24gZnJvbSBDb2RldiBjb21tZW50cwoKCgpkZWZpbmUgIkludGVydmVudGlvbiBEaWV0aXRpYW4gUmVmZXJyYWwiOgogICggWyJTZXJ2aWNlUmVxdWVzdCI6ICJEaWV0aXRpYW4gUmVmZXJyYWwiXSBEaWV0aXRpYW5SZWZlcnJhbE9yZGVyCiAgICAgIHdoZXJlIERpZXRpdGlhblJlZmVycmFsT3JkZXIuc3RhdHVzIGluIHsgJ2FjdGl2ZScsICdjb21wbGV0ZWQnLCAnb24taG9sZCcgfQogICAgICAgIGFuZCBEaWV0aXRpYW5SZWZlcnJhbE9yZGVyLmludGVudCBpbiB7ICdvcmRlcicsICdvcmlnaW5hbC1vcmRlcicsICdyZWZsZXgtb3JkZXInLCAnZmlsbGVyLW9yZGVyJywgJ2luc3RhbmNlLW9yZGVyJyB9CiAgICAgIHJldHVybiBEaWV0aXRpYW5SZWZlcnJhbE9yZGVyLmF1dGhvcmVkT24KICApCiAgICB1bmlvbiAoIFsiUHJvY2VkdXJlIjogIkRpZXRpdGlhbiBSZWZlcnJhbCJdIERpZXRpdGlhblJlZmVycmFsUGVyZm9ybWVkCiAgICAgICAgd2hlcmUgRGlldGl0aWFuUmVmZXJyYWxQZXJmb3JtZWQuc3RhdHVzIGluIHsgJ2NvbXBsZXRlZCcsICdpbi1wcm9ncmVzcycgfQogICAgICAgIHJldHVybiBzdGFydCBvZiBEaWV0aXRpYW5SZWZlcnJhbFBlcmZvcm1lZC5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkKICAgICkKCmRlZmluZSAiRW5jb3VudGVycyB3aXRoIERpZXRpdGlhbiBSZWZlcnJhbCI6CiAgIk1lYXN1cmUgUG9wdWxhdGlvbiIgUXVhbGlmeWluZ0VuY291bnRlcgogICAgd2l0aCAiSW50ZXJ2ZW50aW9uIERpZXRpdGlhbiBSZWZlcnJhbCIgRGlldGl0aWFuUmVmZXJyYWxEYXRlCiAgICAgIHN1Y2ggdGhhdCBEaWV0aXRpYW5SZWZlcnJhbERhdGUgZHVyaW5nIGRheSBvZiBRdWFsaWZ5aW5nRW5jb3VudGVyLmhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbiAoICkKCmRlZmluZSAiRW5jb3VudGVycyB3aXRoIE1hbG51dHJpdGlvbiBSaXNrIFNjcmVlbmluZyI6CiAgIkVuY291bnRlcnMgd2l0aCBNYWxudXRyaXRpb24gUmlzayBTY3JlZW5pbmcgTm90IEF0IFJpc2siCiAgICB1bmlvbiAiRW5jb3VudGVycyB3aXRoIE1hbG51dHJpdGlvbiBSaXNrIFNjcmVlbmluZyBBdCBSaXNrIgoKZGVmaW5lICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIFJpc2sgU2NyZWVuaW5nIG9yIHdpdGggRGlldGl0aWFuIFJlZmVycmFsIjoKICAiRW5jb3VudGVycyB3aXRoIE1hbG51dHJpdGlvbiBSaXNrIFNjcmVlbmluZyIKICAgIHVuaW9uICJFbmNvdW50ZXJzIHdpdGggRGlldGl0aWFuIFJlZmVycmFsIgoKZGVmaW5lICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIFJpc2sgU2NyZWVuaW5nIE5vdCBBdCBSaXNrIjoKICAiTWVhc3VyZSBQb3B1bGF0aW9uIiBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICB3aXRoIFsiT2JzZXJ2YXRpb25TY3JlZW5pbmdBc3Nlc3NtZW50IjogIk1hbG51dHJpdGlvbiBSaXNrIFNjcmVlbmluZyJdIE1hbG51dHJpdGlvblJpc2tTY3JlZW5pbmcKICAgICAgc3VjaCB0aGF0IE1hbG51dHJpdGlvblJpc2tTY3JlZW5pbmcuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CiAgICAgICAgYW5kIE1hbG51dHJpdGlvblJpc2tTY3JlZW5pbmcuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIGR1cmluZyBRdWFsaWZ5aW5nRW5jb3VudGVyLmhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbiAoICkKICAgICAgICBhbmQgKCBNYWxudXRyaXRpb25SaXNrU2NyZWVuaW5nLnZhbHVlIGFzIEZISVIuQ29kZWFibGVDb25jZXB0IGluICJNYWxudXRyaXRpb24gU2NyZWVuaW5nIEZpbmRpbmcgb2YgTm90IEF0IFJpc2sgUmVzdWx0IiApCgpkZWZpbmUgIkVuY291bnRlcnMgd2l0aCBNYWxudXRyaXRpb24gTm90IEF0IFJpc2sgU2NyZWVuaW5nIGFuZCB3aXRob3V0IERpZXRpdGlhbiBSZWZlcnJhbCI6CiAgIkVuY291bnRlcnMgd2l0aCBNYWxudXRyaXRpb24gUmlzayBTY3JlZW5pbmcgTm90IEF0IFJpc2siCiAgICBleGNlcHQgIkVuY291bnRlcnMgd2l0aCBEaWV0aXRpYW4gUmVmZXJyYWwiCgpkZWZpbmUgIkVuY291bnRlcnMgd2l0aCBNYWxudXRyaXRpb24gUmlzayBTY3JlZW5pbmcgQXQgUmlzayI6CiAgIk1lYXN1cmUgUG9wdWxhdGlvbiIgUXVhbGlmeWluZ0VuY291bnRlcgogICAgd2l0aCBbIk9ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudCI6ICJNYWxudXRyaXRpb24gUmlzayBTY3JlZW5pbmciXSBNYWxudXRyaXRpb25SaXNrU2NyZWVuaW5nCiAgICAgIHN1Y2ggdGhhdCBNYWxudXRyaXRpb25SaXNrU2NyZWVuaW5nLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgIGFuZCBNYWxudXRyaXRpb25SaXNrU2NyZWVuaW5nLmVmZmVjdGl2ZS50b0ludGVydmFsICggKSBkdXJpbmcgUXVhbGlmeWluZ0VuY291bnRlci5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb24gKCApCiAgICAgICAgYW5kICggTWFsbnV0cml0aW9uUmlza1NjcmVlbmluZy52YWx1ZSBhcyBGSElSLkNvZGVhYmxlQ29uY2VwdCBpbiAiTWFsbnV0cml0aW9uIFNjcmVlbmluZyBGaW5kaW5nIG9mIEF0IFJpc2sgUmVzdWx0IiApCgpkZWZpbmUgIkVuY291bnRlcnMgd2l0aCBNYWxudXRyaXRpb24gUmlzayBTY3JlZW5pbmcgQXQgUmlzayBvciB3aXRoIERpZXRpdGlhbiBSZWZlcnJhbCI6CiAgIkVuY291bnRlcnMgd2l0aCBNYWxudXRyaXRpb24gUmlzayBTY3JlZW5pbmcgQXQgUmlzayIKICAgIHVuaW9uICJFbmNvdW50ZXJzIHdpdGggRGlldGl0aWFuIFJlZmVycmFsIgogICAKCi8qZGVmaW5lIGZ1bmN0aW9uICJMYXN0IE51dHJpdGlvbiBBc3Nlc3NtZW50IERheSBEdXJpbmcgRW5jb3VudGVyIihRdWFsaWZ5aW5nRW5jb3VudGVyIEVuY291bnRlcik6CiAgTWF4KCJOdXRyaXRpb24gQXNzZXNzbWVudCBQZXJmb3JtZWQiIE51dHJpdGlvbkFzc2Vzc21lbnRUdXBsZQogICAgd2hlcmUgTnV0cml0aW9uQXNzZXNzbWVudFR1cGxlLkhvc3BFbmNJZCA9IFF1YWxpZnlpbmdFbmNvdW50ZXIuaWQKICAgIHJldHVybiBOdXRyaXRpb25Bc3Nlc3NtZW50VHVwbGUuTnV0ckFzc2Vzc1RpbWluZ0xhdGVzdAogICkKCmRlZmluZSAiTnV0cml0aW9uIEFzc2Vzc21lbnQgUGVyZm9ybWVkIjoKICAgIGZyb20KICAgICJNZWFzdXJlIFBvcHVsYXRpb24iIFF1YWxpZnlpbmdFbmNvdW50ZXIsCiAgICBbIk9ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudCI6ICJOdXRyaXRpb24gQXNzZXNzbWVudCJdIE51dHJpdGlvbkFzc2Vzc21lbnQKICAgICAgICB3aGVyZSBOdXRyaXRpb25Bc3Nlc3NtZW50LnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgICAgICBhbmQgTnV0cml0aW9uQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgZHVyaW5nIFF1YWxpZnlpbmdFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uICggKQogICAgICAgICAgICBhbmQgTnV0cml0aW9uQXNzZXNzbWVudC52YWx1ZSBpcyBub3QgbnVsbAogICAgICAgICAgICByZXR1cm4gVHVwbGUgewogICAgICAgIEhvc3BFbmNJZDogUXVhbGlmeWluZ0VuY291bnRlci5pZCwKICAgICAgICBOdXRyQXNzZXNzVGltaW5nTGF0ZXN0OiBOdXRyaXRpb25Bc3Nlc3NtZW50LmVmZmVjdGl2ZS5sYXRlc3QoKQogICAgICAgIH0KKi8KLy9UZXN0IGRlZmluaXRpb24gcGVyIENPRGV2IGZlZWRiYWNrCgoKCmRlZmluZSBmdW5jdGlvbiAiTGFzdCBOdXRyaXRpb24gQXNzZXNzbWVudCBEYXkgRHVyaW5nIEVuY291bnRlciIoUXVhbGlmeWluZ0VuY291bnRlciBFbmNvdW50ZXIpOgogIE1heChbIk9ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudCI6ICJOdXRyaXRpb24gQXNzZXNzbWVudCJdIE51dHJpdGlvbkFzc2Vzc21lbnQKICAgICAgd2hlcmUgTnV0cml0aW9uQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgICBhbmQgTnV0cml0aW9uQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGR1cmluZyBRdWFsaWZ5aW5nRW5jb3VudGVyLmhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbigpCiAgICAgICAgYW5kIE51dHJpdGlvbkFzc2Vzc21lbnQudmFsdWUgaXMgbm90IG51bGwKICAgICAgcmV0dXJuIE51dHJpdGlvbkFzc2Vzc21lbnQuZWZmZWN0aXZlLmxhdGVzdCgpCiAgKQoKZGVmaW5lICJFbmNvdW50ZXIgV2l0aCBNb3N0IFJlY2VudCBOdXRyaXRpb24gQXNzZXNzbWVudCBBbmQgSWRlbnRpZmllZCBTdGF0dXMiOgogICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIFJpc2sgU2NyZWVuaW5nIEF0IFJpc2sgb3Igd2l0aCBEaWV0aXRpYW4gUmVmZXJyYWwiIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgIHdpdGggWyJPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQiOiAiTnV0cml0aW9uIEFzc2Vzc21lbnQiXSBOdXRyaXRpb25Bc3Nlc3NtZW50CiAgICAgIHN1Y2ggdGhhdCAoIE51dHJpdGlvbkFzc2Vzc21lbnQuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CiAgICAgICAgICBhbmQgTnV0cml0aW9uQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgZHVyaW5nIFF1YWxpZnlpbmdFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uICggKQogICAgICAgICAgYW5kICggTnV0cml0aW9uQXNzZXNzbWVudC52YWx1ZSBhcyBGSElSLkNvZGVhYmxlQ29uY2VwdCBpbiAiTnV0cml0aW9uIEFzc2Vzc21lbnQgU3RhdHVzIEZpbmRpbmcgb2YgV2VsbCBOb3VyaXNoZWQgb3IgTm90IE1hbG5vdXJpc2hlZCBvciBNaWxkbHkgTWFsbm91cmlzaGVkIgogICAgICAgICAgICAgIG9yICggTnV0cml0aW9uQXNzZXNzbWVudC52YWx1ZSBhcyBGSElSLkNvZGVhYmxlQ29uY2VwdCBpbiAiTnV0cml0aW9uIEFzc2Vzc21lbnQgU3RhdHVzIEZpbmRpbmcgb2YgTW9kZXJhdGVseSBNYWxub3VyaXNoZWQiICkKICAgICAgICAgICAgICBvciAoIE51dHJpdGlvbkFzc2Vzc21lbnQudmFsdWUgYXMgRkhJUi5Db2RlYWJsZUNvbmNlcHQgaW4gIk51dHJpdGlvbiBBc3Nlc3NtZW50IFN0YXR1cyBGaW5kaW5nIG9mIFNldmVyZWx5IE1hbG5vdXJpc2hlZCIgKQogICAgICAgICAgKQogICAgICAgICAgYW5kIE51dHJpdGlvbkFzc2Vzc21lbnQuZWZmZWN0aXZlLmxhdGVzdCAoICkgc2FtZSBkYXkgYXMgIkxhc3QgTnV0cml0aW9uIEFzc2Vzc21lbnQgRGF5IER1cmluZyBFbmNvdW50ZXIiKFF1YWxpZnlpbmdFbmNvdW50ZXIpCiAgICAgICkKCmRlZmluZSAiRW5jb3VudGVyIFdpdGggTW9zdCBSZWNlbnQgTnV0cml0aW9uIEFzc2Vzc21lbnQgU3RhdHVzIG9mIE1vZGVyYXRlbHkgT3IgU2V2ZXJlbHkgTWFsbm91cmlzaGVkIjoKICAiTWVhc3VyZSBQb3B1bGF0aW9uIiBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICB3aXRoIFsiT2JzZXJ2YXRpb25TY3JlZW5pbmdBc3Nlc3NtZW50IjogIk51dHJpdGlvbiBBc3Nlc3NtZW50Il0gTnV0cml0aW9uQXNzZXNzbWVudAogICAgICBzdWNoIHRoYXQgTnV0cml0aW9uQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgICBhbmQgTnV0cml0aW9uQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgZHVyaW5nIFF1YWxpZnlpbmdFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uICggKQogICAgICAgIGFuZCAoIE51dHJpdGlvbkFzc2Vzc21lbnQudmFsdWUgYXMgRkhJUi5Db2RlYWJsZUNvbmNlcHQgaW4gIk51dHJpdGlvbiBBc3Nlc3NtZW50IFN0YXR1cyBGaW5kaW5nIG9mIE1vZGVyYXRlbHkgTWFsbm91cmlzaGVkIgogICAgICAgICAgICBvciBOdXRyaXRpb25Bc3Nlc3NtZW50LnZhbHVlIGFzIEZISVIuQ29kZWFibGVDb25jZXB0IGluICJOdXRyaXRpb24gQXNzZXNzbWVudCBTdGF0dXMgRmluZGluZyBvZiBTZXZlcmVseSBNYWxub3VyaXNoZWQiCiAgICAgICAgKQogICAgICAgIGFuZCBOdXRyaXRpb25Bc3Nlc3NtZW50LmVmZmVjdGl2ZS5sYXRlc3QgKCApIHNhbWUgZGF5IGFzICJMYXN0IE51dHJpdGlvbiBBc3Nlc3NtZW50IERheSBEdXJpbmcgRW5jb3VudGVyIihRdWFsaWZ5aW5nRW5jb3VudGVyKQoKZGVmaW5lICJFbmNvdW50ZXIgV2l0aCBNb3N0IFJlY2VudCBOdXRyaXRpb24gQXNzZXNzbWVudCBTdGF0dXMgb2YgTm90IG9yIE1pbGRseSBNYWxub3VyaXNoZWQiOgogICJNZWFzdXJlIFBvcHVsYXRpb24iIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgIHdpdGggWyJPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQiOiAiTnV0cml0aW9uIEFzc2Vzc21lbnQiXSBOdXRyaXRpb25Bc3Nlc3NtZW50CiAgICAgIHN1Y2ggdGhhdCAoIE51dHJpdGlvbkFzc2Vzc21lbnQuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CiAgICAgICAgICBhbmQgTnV0cml0aW9uQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgZHVyaW5nIFF1YWxpZnlpbmdFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uICggKQogICAgICAgICAgYW5kICggTnV0cml0aW9uQXNzZXNzbWVudC52YWx1ZSBhcyBGSElSLkNvZGVhYmxlQ29uY2VwdCBpbiAiTnV0cml0aW9uIEFzc2Vzc21lbnQgU3RhdHVzIEZpbmRpbmcgb2YgV2VsbCBOb3VyaXNoZWQgb3IgTm90IE1hbG5vdXJpc2hlZCBvciBNaWxkbHkgTWFsbm91cmlzaGVkIiApCiAgICAgICAgICBhbmQgTnV0cml0aW9uQXNzZXNzbWVudC5lZmZlY3RpdmUubGF0ZXN0ICggKSBzYW1lIGRheSBhcyAiTGFzdCBOdXRyaXRpb24gQXNzZXNzbWVudCBEYXkgRHVyaW5nIEVuY291bnRlciIoUXVhbGlmeWluZ0VuY291bnRlcikKICAgICAgKQoKZGVmaW5lICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIERpYWdub3NpcyI6CiAgKCAiTWVhc3VyZSBQb3B1bGF0aW9uIiBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICAgIHdoZXJlIGV4aXN0cyAoICJIYXMgTWFsbnV0cml0aW9uIERpYWdub3NpcyIgTWFsbnV0cml0aW9uRGlhZ25vc2lzCiAgICAgICAgICB3aGVyZSBNYWxudXRyaXRpb25EaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgUXVhbGlmeWluZ0VuY291bnRlci5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb24gKCApCiAgICAgICkKICApCiAgICB1bmlvbiAiRW5jb3VudGVycyBXaXRoIEVuY291bnRlciBEaWFnbm9zaXMgT2YgTWFsbnV0cml0aW9uIERpYWdub3NpcyIKCmRlZmluZSAiSGFzIE1hbG51dHJpdGlvbiBEaWFnbm9zaXMiOgogIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiTWFsbnV0cml0aW9uIERpYWdub3NpcyJdIE1hbG51dHJpdGlvbkRpYWdub3NpcwogICAgd2hlcmUgTWFsbnV0cml0aW9uRGlhZ25vc2lzLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgYW5kIE1hbG51dHJpdGlvbkRpYWdub3Npcy5pc1ZlcmlmaWVkICggKQoKZGVmaW5lICJFbmNvdW50ZXJzIFdpdGggRW5jb3VudGVyIERpYWdub3NpcyBPZiBNYWxudXRyaXRpb24gRGlhZ25vc2lzIjoKICAiTWVhc3VyZSBQb3B1bGF0aW9uIiBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICB3aGVyZSBRdWFsaWZ5aW5nRW5jb3VudGVyLnJlYXNvbkNvZGUgaW4gIk1hbG51dHJpdGlvbiBEaWFnbm9zaXMiCiAgICAgIG9yIFF1YWxpZnlpbmdFbmNvdW50ZXIuZW5jb3VudGVyRGlhZ25vc2lzICggKS52ZXJpZmllZCAoICkuY29kZSBpbiAiTWFsbnV0cml0aW9uIERpYWdub3NpcyIKCmRlZmluZSAiRW5jb3VudGVycyB3aXRoIE51dHJpdGlvbiBDYXJlIFBsYW4iOgogICJNZWFzdXJlIFBvcHVsYXRpb24iIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgIHdpdGggWyJQcm9jZWR1cmUiOiAiTnV0cml0aW9uIENhcmUgUGxhbiJdIE51dHJpdGlvbkNhcmVQbGFuCiAgICAgIHN1Y2ggdGhhdCBOdXRyaXRpb25DYXJlUGxhbi5zdGF0dXMgaW4geyAnY29tcGxldGVkJywgJ2luLXByb2dyZXNzJyB9CiAgICAgICAgYW5kIE51dHJpdGlvbkNhcmVQbGFuLnBlcmZvcm1lZC5lYXJsaWVzdCAoICkgZHVyaW5nIFF1YWxpZnlpbmdFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uICggKQoKZGVmaW5lIGZ1bmN0aW9uICJNZWFzdXJlIE9ic2VydmF0aW9uIDEiKE1hbG51dHJpdGlvblJpc2tTY3JlZW5pbmcgRW5jb3VudGVyKToKICBpZiAiRW5jb3VudGVycyB3aXRoIE1hbG51dHJpdGlvbiBSaXNrIFNjcmVlbmluZyBvciB3aXRoIERpZXRpdGlhbiBSZWZlcnJhbCIgY29udGFpbnMgTWFsbnV0cml0aW9uUmlza1NjcmVlbmluZyB0aGVuIDEgCiAgICBlbHNlIDAKCmRlZmluZSBmdW5jdGlvbiAiTWVhc3VyZSBPYnNlcnZhdGlvbiAyIihOdXRyaXRpb25Bc3Nlc3NtZW50IEVuY291bnRlcik6CiAgaWYgIkVuY291bnRlcnMgd2l0aCBNYWxudXRyaXRpb24gTm90IEF0IFJpc2sgU2NyZWVuaW5nIGFuZCB3aXRob3V0IERpZXRpdGlhbiBSZWZlcnJhbCIgY29udGFpbnMgTnV0cml0aW9uQXNzZXNzbWVudCB0aGVuIDAgCiAgICBlbHNlIGlmICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIFJpc2sgU2NyZWVuaW5nIEF0IFJpc2sgb3Igd2l0aCBEaWV0aXRpYW4gUmVmZXJyYWwiIGNvbnRhaW5zIE51dHJpdGlvbkFzc2Vzc21lbnQgdGhlbiAKICAgICAgaWYgIkVuY291bnRlciBXaXRoIE1vc3QgUmVjZW50IE51dHJpdGlvbiBBc3Nlc3NtZW50IEFuZCBJZGVudGlmaWVkIFN0YXR1cyIgY29udGFpbnMgTnV0cml0aW9uQXNzZXNzbWVudCB0aGVuIDEgCiAgICAgIGVsc2UgMCAKICAgIGVsc2UgMAoKZGVmaW5lIGZ1bmN0aW9uICJNZWFzdXJlIE9ic2VydmF0aW9uIDMiKE1hbG51dHJpdGlvbkRpYWdub3NpcyBFbmNvdW50ZXIpOgogIGlmICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIE5vdCBBdCBSaXNrIFNjcmVlbmluZyBhbmQgd2l0aG91dCBEaWV0aXRpYW4gUmVmZXJyYWwiIGNvbnRhaW5zIE1hbG51dHJpdGlvbkRpYWdub3NpcyB0aGVuIDAgCiAgICBlbHNlIGlmICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIFJpc2sgU2NyZWVuaW5nIEF0IFJpc2sgb3Igd2l0aCBEaWV0aXRpYW4gUmVmZXJyYWwiIGNvbnRhaW5zIE1hbG51dHJpdGlvbkRpYWdub3NpcyB0aGVuIAogICAgICBpZiAiRW5jb3VudGVycyB3aXRoIE1hbG51dHJpdGlvbiBEaWFnbm9zaXMiIGNvbnRhaW5zIE1hbG51dHJpdGlvbkRpYWdub3NpcyB0aGVuIAogICAgICAgIGlmICJFbmNvdW50ZXIgV2l0aCBNb3N0IFJlY2VudCBOdXRyaXRpb24gQXNzZXNzbWVudCBTdGF0dXMgb2YgTm90IG9yIE1pbGRseSBNYWxub3VyaXNoZWQiIGNvbnRhaW5zIE1hbG51dHJpdGlvbkRpYWdub3NpcyB0aGVuIDAgCiAgICAgICAgZWxzZSBpZiAiRW5jb3VudGVyIFdpdGggTW9zdCBSZWNlbnQgTnV0cml0aW9uIEFzc2Vzc21lbnQgU3RhdHVzIG9mIE1vZGVyYXRlbHkgT3IgU2V2ZXJlbHkgTWFsbm91cmlzaGVkIiBjb250YWlucyBNYWxudXRyaXRpb25EaWFnbm9zaXMgdGhlbiAxIAogICAgICBlbHNlIDAgCiAgICBlbHNlIDAgCiAgZWxzZSAwCgpkZWZpbmUgZnVuY3Rpb24gIk1lYXN1cmUgT2JzZXJ2YXRpb24gNCIoTnV0cml0aW9uQ2FyZVBsYW4gRW5jb3VudGVyKToKICBpZiAiRW5jb3VudGVycyB3aXRoIE1hbG51dHJpdGlvbiBOb3QgQXQgUmlzayBTY3JlZW5pbmcgYW5kIHdpdGhvdXQgRGlldGl0aWFuIFJlZmVycmFsIiBjb250YWlucyBOdXRyaXRpb25DYXJlUGxhbiB0aGVuIDAgCiAgICBlbHNlIGlmICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIFJpc2sgU2NyZWVuaW5nIEF0IFJpc2sgb3Igd2l0aCBEaWV0aXRpYW4gUmVmZXJyYWwiIGNvbnRhaW5zIE51dHJpdGlvbkNhcmVQbGFuIHRoZW4gCiAgICAgIGlmICJFbmNvdW50ZXJzIHdpdGggTnV0cml0aW9uIENhcmUgUGxhbiIgY29udGFpbnMgTnV0cml0aW9uQ2FyZVBsYW4gdGhlbiAKICAgICAgICBpZiAiRW5jb3VudGVyIFdpdGggTW9zdCBSZWNlbnQgTnV0cml0aW9uIEFzc2Vzc21lbnQgU3RhdHVzIG9mIE5vdCBvciBNaWxkbHkgTWFsbm91cmlzaGVkIiBjb250YWlucyBOdXRyaXRpb25DYXJlUGxhbiB0aGVuIDAgCiAgICAgICAgZWxzZSBpZiAiRW5jb3VudGVyIFdpdGggTW9zdCBSZWNlbnQgTnV0cml0aW9uIEFzc2Vzc21lbnQgU3RhdHVzIG9mIE1vZGVyYXRlbHkgT3IgU2V2ZXJlbHkgTWFsbm91cmlzaGVkIiBjb250YWlucyBOdXRyaXRpb25DYXJlUGxhbiB0aGVuIDEgCiAgICAgICAgZWxzZSAwIAogICAgICBlbHNlIDAgCiAgICBlbHNlIDAKCmRlZmluZSBmdW5jdGlvbiAiVG90YWwgTWFsbnV0cml0aW9uIENhcmUgU2NvcmUgRWxpZ2libGUgT2NjdXJyZW5jZXMiKFF1YWxpZnlpbmdFbmNvdW50ZXIgRW5jb3VudGVyKToKICBpZiAiRW5jb3VudGVycyB3aXRoIE1hbG51dHJpdGlvbiBSaXNrIFNjcmVlbmluZyBvciB3aXRoIERpZXRpdGlhbiBSZWZlcnJhbCIgY29udGFpbnMgUXVhbGlmeWluZ0VuY291bnRlcgogICAgYW5kICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIFJpc2sgU2NyZWVuaW5nIE5vdCBBdCBSaXNrIiBjb250YWlucyBRdWFsaWZ5aW5nRW5jb3VudGVyCiAgICBhbmQgbm90ICggIkVuY291bnRlcnMgd2l0aCBEaWV0aXRpYW4gUmVmZXJyYWwiIGNvbnRhaW5zIFF1YWxpZnlpbmdFbmNvdW50ZXIgKSB0aGVuIDEgCiAgICBlbHNlIGlmICggIkVuY291bnRlcnMgd2l0aCBNYWxudXRyaXRpb24gUmlzayBTY3JlZW5pbmcgb3Igd2l0aCBEaWV0aXRpYW4gUmVmZXJyYWwiIGNvbnRhaW5zIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgICAgYW5kICJFbmNvdW50ZXJzIHdpdGggTWFsbnV0cml0aW9uIFJpc2sgU2NyZWVuaW5nIEF0IFJpc2siIGNvbnRhaW5zIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgICAgb3IgIkVuY291bnRlcnMgd2l0aCBEaWV0aXRpYW4gUmVmZXJyYWwiIGNvbnRhaW5zIFF1YWxpZnlpbmdFbmNvdW50ZXIKICApCiAgICBhbmQgIkVuY291bnRlciBXaXRoIE1vc3QgUmVjZW50IE51dHJpdGlvbiBBc3Nlc3NtZW50IFN0YXR1cyBvZiBOb3Qgb3IgTWlsZGx5IE1hbG5vdXJpc2hlZCIgY29udGFpbnMgUXVhbGlmeWluZ0VuY291bnRlcgogICAgb3Igbm90ICggIkVuY291bnRlciBXaXRoIE1vc3QgUmVjZW50IE51dHJpdGlvbiBBc3Nlc3NtZW50IEFuZCBJZGVudGlmaWVkIFN0YXR1cyIgY29udGFpbnMgUXVhbGlmeWluZ0VuY291bnRlciApIHRoZW4gMiAKICAgIGVsc2UgNAoKZGVmaW5lIGZ1bmN0aW9uICJNZWFzdXJlIE9ic2VydmF0aW9uIFRvdGFsIE1hbG51dHJpdGlvbiBDb21wb25lbnRzIFNjb3JlIihRdWFsaWZ5aW5nRW5jb3VudGVyIEVuY291bnRlcik6CiAgU3VtKHsgIk1lYXN1cmUgT2JzZXJ2YXRpb24gMSIoUXVhbGlmeWluZ0VuY291bnRlciksICJNZWFzdXJlIE9ic2VydmF0aW9uIDIiKFF1YWxpZnlpbmdFbmNvdW50ZXIpLCAiTWVhc3VyZSBPYnNlcnZhdGlvbiAzIihRdWFsaWZ5aW5nRW5jb3VudGVyKSwgIk1lYXN1cmUgT2JzZXJ2YXRpb24gNCIoUXVhbGlmeWluZ0VuY291bnRlcikgfSkKCmRlZmluZSBmdW5jdGlvbiAiTWVhc3VyZSBPYnNlcnZhdGlvbiBUb3RhbCBNYWxudXRyaXRpb24gQ2FyZSBTY29yZSBhcyBQZXJjZW50YWdlIihRdWFsaWZ5aW5nRW5jb3VudGVyIEVuY291bnRlcik6CiAgMTAwICogKCAiTWVhc3VyZSBPYnNlcnZhdGlvbiBUb3RhbCBNYWxudXRyaXRpb24gQ29tcG9uZW50cyBTY29yZSIoUXVhbGlmeWluZ0VuY291bnRlcikgLyAiVG90YWwgTWFsbnV0cml0aW9uIENhcmUgU2NvcmUgRWxpZ2libGUgT2NjdXJyZW5jZXMiKFF1YWxpZnlpbmdFbmNvdW50ZXIpICk=",
      "url" : "https://madie.cms.gov/Library-CMS986FHIRMalnutritionScore.cql"
    }
  ]
}