{
  "resourceType" : "Library",
  "id" : "CMS645FHIRBoneDensityPCADTherapy",
  "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 CMS645FHIRBoneDensityPCADTherapy 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 CQMCommon version '5.1.000' called CQMCommon\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\n\ncodesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'\n\nvalueset &quot;Androgen Deprivation Therapy for Urology Care&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1248.352'\nvalueset &quot;DEXA Bone Density for Urology Care&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1248.359'\nvalueset &quot;Office Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset &quot;Patient Declined&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1582'\nvalueset &quot;Prostate Cancer&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.319'\n\ncode &quot;Injection of leuprolide acetate for twelve month period (regime/therapy)&quot;: '456381000124102' from &quot;SNOMEDCT&quot; display 'Injection of leuprolide acetate for twelve month period (regime/therapy)'\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;Initial Population&quot;:\n  &quot;Has Qualifying Encounter&quot;\n    and exists &quot;Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period&quot;\n\ndefine &quot;Denominator&quot;:\n  &quot;Initial Population&quot;\n\ndefine &quot;Numerator&quot;:\n  &quot;Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT&quot;\n\ndefine &quot;Denominator Exception&quot;:\n  exists ( &quot;No Bone Density Scan Ordered Due to Patient Refusal&quot; )\n    or exists ( &quot;No Bone Density Scan Performed Due to Patient Refusal&quot; )\n\ndefine &quot;SDE Ethnicity&quot;:\n  SDE.&quot;SDE Ethnicity&quot;\n\ndefine &quot;SDE Payer&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;Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT&quot;:\n  exists ( ( [ServiceRequest: &quot;DEXA Bone Density for Urology Care&quot;] DEXAOrdered\n        with &quot;Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period&quot; OrderTwelveMonthsADT\n          such that DEXAOrdered.authoredOn 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn\n            or DEXAOrdered.authoredOn 2 years or less before day of OrderTwelveMonthsADT.authoredOn\n        where DEXAOrdered.status in { 'active', 'completed' }\n          and DEXAOrdered.intent = 'order'\n    )\n      union ( [ObservationClinicalResult: &quot;DEXA Bone Density for Urology Care&quot;] DEXAPerformed\n          with &quot;Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period&quot; OrderTwelveMonthsADT\n            such that DEXAPerformed.effective.toInterval ( ) 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn\n              or DEXAPerformed.effective.toInterval ( ) 2 years or less before day of OrderTwelveMonthsADT.authoredOn\n          where DEXAPerformed.status in { 'final', 'amended', 'corrected' }\n      )\n  )\n\ndefine &quot;No Bone Density Scan Ordered Due to Patient Refusal&quot;:\n  [ServiceNotRequested: &quot;DEXA Bone Density for Urology Care&quot;] DEXANotOrdered\n    with &quot;Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period&quot; OrderTwelveMonthsADT\n      such that DEXANotOrdered.authoredOn 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn\n        and DEXANotOrdered.reasonRefused ( ) in &quot;Patient Declined&quot;\n\ndefine &quot;No Bone Density Scan Performed Due to Patient Refusal&quot;:\n  [ObservationCancelled: &quot;DEXA Bone Density for Urology Care&quot;] DEXANotPerformed\n    with &quot;Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period&quot; OrderTwelveMonthsADT\n      such that DEXANotPerformed.issued 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn\n        and DEXANotPerformed.notDoneReason ( ) in &quot;Patient Declined&quot;\n\ndefine &quot;First ADT in 3 Months Before to 9 Months After Start of Measurement Period&quot;:\n  First((&quot;Androgen Deprivation Therapy for Urology Care Medication Active Start Dates&quot;\n      union &quot;Androgen Deprivation Therapy for Urology Care Medication Order Start Dates&quot;) ADTDateTime\n      with &quot;Prostate Cancer Diagnosis&quot; ProstateCancer\n        such that ADTDateTime during day of ProstateCancer.prevalenceInterval ( )\n          and ADTDateTime during day of Interval[start of &quot;Measurement Period&quot; - 3 months, start of &quot;Measurement Period&quot; + 9 months]\n      sort ascending\n  )\n\ndefine &quot;Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period&quot;:\n  [ServiceRequest: &quot;Injection of leuprolide acetate for twelve month period (regime/therapy)&quot;] OrderTwelveMonthADT\n    with &quot;First ADT in 3 Months Before to 9 Months After Start of Measurement Period&quot; FirstADTMP\n      such that OrderTwelveMonthADT.authoredOn on or after day of FirstADTMP\n        and OrderTwelveMonthADT.authoredOn during day of Interval[start of &quot;Measurement Period&quot; - 3 months, start of &quot;Measurement Period&quot; + 9 months]\n        and OrderTwelveMonthADT.status in { 'active', 'completed' }\n        and OrderTwelveMonthADT.intent = 'order'\n\ndefine &quot;Androgen Deprivation Therapy for Urology Care Medication Active Start Dates&quot;:\n  [MedicationRequest: &quot;Androgen Deprivation Therapy for Urology Care&quot;] ADTActive\n    let firstMedicationPeriod: First((collapse(ADTActive.dosageInstruction.timing.repeat.bounds DoseTime\n          return DoseTime.toInterval()\n      )) DrugPeriods\n        sort by start of $this\n    ),\n\n    //get the very first event as interval\n    \n    firstMedicationEvent: First((ADTActive.dosageInstruction.timing dosageTiming\n        //returns first event for the specific dosageTiming\n        \n        return First(dosageTiming.event.value dosageTimingEvents\n            sort ascending\n        )) firstEvents\n        sort ascending\n    ),\n    medicationDateTime: Min({ firstMedicationEvent, start of firstMedicationPeriod, \n      end of firstMedicationPeriod }\n    )\n    where ADTActive.status in { 'active', 'completed' }\n      and ADTActive.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n    return medicationDateTime\n\ndefine &quot;Androgen Deprivation Therapy for Urology Care Medication Order Start Dates&quot;:\n  [MedicationRequest: &quot;Androgen Deprivation Therapy for Urology Care&quot;] ADTOrder\n    let firstMedicationPeriod: First((collapse(ADTOrder.dosageInstruction.timing.repeat.bounds DoseTime\n          return DoseTime.toInterval()\n      )) DrugPeriods\n        sort by start of $this\n    ),\n    medicationDateTime: Min({ ADTOrder.authoredOn, start of firstMedicationPeriod, \n      end of firstMedicationPeriod }\n    )\n    where ADTOrder.status in { 'active', 'completed' }\n      and ADTOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n    return medicationDateTime\n\ndefine &quot;Has Qualifying Encounter&quot;:\n  exists ( [&quot;Encounter&quot;: &quot;Office Visit&quot;] OfficeVisit\n      where OfficeVisit.period during day of &quot;Measurement Period&quot;\n        and OfficeVisit.status = 'finished'\n  )\n\ndefine &quot;Prostate Cancer Diagnosis&quot;:\n  (\n    // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n    // Original:\n    //   ( [ConditionProblemsHealthConcerns: &quot;Prostate Cancer&quot;]\n    //     union [ConditionEncounterDiagnosis: &quot;Prostate Cancer&quot;] )\n    [FHIR.Condition: &quot;Prostate Cancer&quot;] ) ProstateCancer\n    where ProstateCancer.prevalenceInterval ( ) overlaps day of &quot;Measurement Period&quot;\n      and ProstateCancer.isVerified ( )\n\n/*      \n@description: Returns true if the given condition either has no verification status or has a verification status of confirmed, unconfirmed, provisional, or differential\n*/\n\n\ndefine fluent function isVerified(condition Choice&lt;ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns&gt;):\n  condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status.&quot;confirmed&quot;\n      or condition.verificationStatus ~ Status.&quot;unconfirmed&quot;\n      or condition.verificationStatus ~ Status.&quot;provisional&quot;\n      or condition.verificationStatus ~ Status.&quot;differential&quot;\n  )</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/CMS645FHIRBoneDensityPCADTherapy",
  "version" : "1.1.000",
  "name" : "CMS645FHIRBoneDensityPCADTherapy",
  "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" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVM2NDVGSElSQm9uZURlbnNpdHlQQ0FEVGhlcmFweSB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0JwoKdmFsdWVzZXQgIkFuZHJvZ2VuIERlcHJpdmF0aW9uIFRoZXJhcHkgZm9yIFVyb2xvZ3kgQ2FyZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyNDguMzUyJwp2YWx1ZXNldCAiREVYQSBCb25lIERlbnNpdHkgZm9yIFVyb2xvZ3kgQ2FyZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyNDguMzU5Jwp2YWx1ZXNldCAiT2ZmaWNlIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDAxJwp2YWx1ZXNldCAiUGF0aWVudCBEZWNsaW5lZCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xNTgyJwp2YWx1ZXNldCAiUHJvc3RhdGUgQ2FuY2VyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjMxOScKCmNvZGUgIkluamVjdGlvbiBvZiBsZXVwcm9saWRlIGFjZXRhdGUgZm9yIHR3ZWx2ZSBtb250aCBwZXJpb2QgKHJlZ2ltZS90aGVyYXB5KSI6ICc0NTYzODEwMDAxMjQxMDInIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdJbmplY3Rpb24gb2YgbGV1cHJvbGlkZSBhY2V0YXRlIGZvciB0d2VsdmUgbW9udGggcGVyaW9kIChyZWdpbWUvdGhlcmFweSknCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+CiAgZGVmYXVsdCBJbnRlcnZhbFtAMjAyNi0wMS0wMVQwMDowMDowMC4wMDBaLCBAMjAyNy0wMS0wMVQwMDowMDowMC4wMDBaKQoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgIkhhcyBRdWFsaWZ5aW5nIEVuY291bnRlciIKICAgIGFuZCBleGlzdHMgIk9yZGVyIGZvciAxMiBNb250aHMgb2YgQURUIGluIDMgTW9udGhzIEJlZm9yZSB0byA5IE1vbnRocyBBZnRlciBTdGFydCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgoKZGVmaW5lICJOdW1lcmF0b3IiOgogICJIYXMgQmFzZWxpbmUgREVYQSBTY2FuIFR3byBZZWFycyBQcmlvciB0byB0aGUgU3RhcnQgb2Ygb3IgTGVzcyB0aGFuIFRocmVlIE1vbnRocyBBZnRlciB0aGUgU3RhcnQgb2YgQURUIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNlcHRpb24iOgogIGV4aXN0cyAoICJObyBCb25lIERlbnNpdHkgU2NhbiBPcmRlcmVkIER1ZSB0byBQYXRpZW50IFJlZnVzYWwiICkKICAgIG9yIGV4aXN0cyAoICJObyBCb25lIERlbnNpdHkgU2NhbiBQZXJmb3JtZWQgRHVlIHRvIFBhdGllbnQgUmVmdXNhbCIgKQoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciI6CiAgU0RFLiJTREUgUGF5ZXIiCgpkZWZpbmUgIlNERSBSYWNlIjoKICBTREUuIlNERSBSYWNlIgoKZGVmaW5lICJTREUgU2V4IjoKICBTREUuIlNERSBTZXgiCgpkZWZpbmUgIkhhcyBCYXNlbGluZSBERVhBIFNjYW4gVHdvIFllYXJzIFByaW9yIHRvIHRoZSBTdGFydCBvZiBvciBMZXNzIHRoYW4gVGhyZWUgTW9udGhzIEFmdGVyIHRoZSBTdGFydCBvZiBBRFQiOgogIGV4aXN0cyAoICggW1NlcnZpY2VSZXF1ZXN0OiAiREVYQSBCb25lIERlbnNpdHkgZm9yIFVyb2xvZ3kgQ2FyZSJdIERFWEFPcmRlcmVkCiAgICAgICAgd2l0aCAiT3JkZXIgZm9yIDEyIE1vbnRocyBvZiBBRFQgaW4gMyBNb250aHMgQmVmb3JlIHRvIDkgTW9udGhzIEFmdGVyIFN0YXJ0IG9mIE1lYXN1cmVtZW50IFBlcmlvZCIgT3JkZXJUd2VsdmVNb250aHNBRFQKICAgICAgICAgIHN1Y2ggdGhhdCBERVhBT3JkZXJlZC5hdXRob3JlZE9uIDMgbW9udGhzIG9yIGxlc3Mgb24gb3IgYWZ0ZXIgZGF5IG9mIE9yZGVyVHdlbHZlTW9udGhzQURULmF1dGhvcmVkT24KICAgICAgICAgICAgb3IgREVYQU9yZGVyZWQuYXV0aG9yZWRPbiAyIHllYXJzIG9yIGxlc3MgYmVmb3JlIGRheSBvZiBPcmRlclR3ZWx2ZU1vbnRoc0FEVC5hdXRob3JlZE9uCiAgICAgICAgd2hlcmUgREVYQU9yZGVyZWQuc3RhdHVzIGluIHsgJ2FjdGl2ZScsICdjb21wbGV0ZWQnIH0KICAgICAgICAgIGFuZCBERVhBT3JkZXJlZC5pbnRlbnQgPSAnb3JkZXInCiAgICApCiAgICAgIHVuaW9uICggW09ic2VydmF0aW9uQ2xpbmljYWxSZXN1bHQ6ICJERVhBIEJvbmUgRGVuc2l0eSBmb3IgVXJvbG9neSBDYXJlIl0gREVYQVBlcmZvcm1lZAogICAgICAgICAgd2l0aCAiT3JkZXIgZm9yIDEyIE1vbnRocyBvZiBBRFQgaW4gMyBNb250aHMgQmVmb3JlIHRvIDkgTW9udGhzIEFmdGVyIFN0YXJ0IG9mIE1lYXN1cmVtZW50IFBlcmlvZCIgT3JkZXJUd2VsdmVNb250aHNBRFQKICAgICAgICAgICAgc3VjaCB0aGF0IERFWEFQZXJmb3JtZWQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIDMgbW9udGhzIG9yIGxlc3Mgb24gb3IgYWZ0ZXIgZGF5IG9mIE9yZGVyVHdlbHZlTW9udGhzQURULmF1dGhvcmVkT24KICAgICAgICAgICAgICBvciBERVhBUGVyZm9ybWVkLmVmZmVjdGl2ZS50b0ludGVydmFsICggKSAyIHllYXJzIG9yIGxlc3MgYmVmb3JlIGRheSBvZiBPcmRlclR3ZWx2ZU1vbnRoc0FEVC5hdXRob3JlZE9uCiAgICAgICAgICB3aGVyZSBERVhBUGVyZm9ybWVkLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICApCiAgKQoKZGVmaW5lICJObyBCb25lIERlbnNpdHkgU2NhbiBPcmRlcmVkIER1ZSB0byBQYXRpZW50IFJlZnVzYWwiOgogIFtTZXJ2aWNlTm90UmVxdWVzdGVkOiAiREVYQSBCb25lIERlbnNpdHkgZm9yIFVyb2xvZ3kgQ2FyZSJdIERFWEFOb3RPcmRlcmVkCiAgICB3aXRoICJPcmRlciBmb3IgMTIgTW9udGhzIG9mIEFEVCBpbiAzIE1vbnRocyBCZWZvcmUgdG8gOSBNb250aHMgQWZ0ZXIgU3RhcnQgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIiBPcmRlclR3ZWx2ZU1vbnRoc0FEVAogICAgICBzdWNoIHRoYXQgREVYQU5vdE9yZGVyZWQuYXV0aG9yZWRPbiAzIG1vbnRocyBvciBsZXNzIG9uIG9yIGFmdGVyIGRheSBvZiBPcmRlclR3ZWx2ZU1vbnRoc0FEVC5hdXRob3JlZE9uCiAgICAgICAgYW5kIERFWEFOb3RPcmRlcmVkLnJlYXNvblJlZnVzZWQgKCApIGluICJQYXRpZW50IERlY2xpbmVkIgoKZGVmaW5lICJObyBCb25lIERlbnNpdHkgU2NhbiBQZXJmb3JtZWQgRHVlIHRvIFBhdGllbnQgUmVmdXNhbCI6CiAgW09ic2VydmF0aW9uQ2FuY2VsbGVkOiAiREVYQSBCb25lIERlbnNpdHkgZm9yIFVyb2xvZ3kgQ2FyZSJdIERFWEFOb3RQZXJmb3JtZWQKICAgIHdpdGggIk9yZGVyIGZvciAxMiBNb250aHMgb2YgQURUIGluIDMgTW9udGhzIEJlZm9yZSB0byA5IE1vbnRocyBBZnRlciBTdGFydCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiIE9yZGVyVHdlbHZlTW9udGhzQURUCiAgICAgIHN1Y2ggdGhhdCBERVhBTm90UGVyZm9ybWVkLmlzc3VlZCAzIG1vbnRocyBvciBsZXNzIG9uIG9yIGFmdGVyIGRheSBvZiBPcmRlclR3ZWx2ZU1vbnRoc0FEVC5hdXRob3JlZE9uCiAgICAgICAgYW5kIERFWEFOb3RQZXJmb3JtZWQubm90RG9uZVJlYXNvbiAoICkgaW4gIlBhdGllbnQgRGVjbGluZWQiCgpkZWZpbmUgIkZpcnN0IEFEVCBpbiAzIE1vbnRocyBCZWZvcmUgdG8gOSBNb250aHMgQWZ0ZXIgU3RhcnQgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICBGaXJzdCgoIkFuZHJvZ2VuIERlcHJpdmF0aW9uIFRoZXJhcHkgZm9yIFVyb2xvZ3kgQ2FyZSBNZWRpY2F0aW9uIEFjdGl2ZSBTdGFydCBEYXRlcyIKICAgICAgdW5pb24gIkFuZHJvZ2VuIERlcHJpdmF0aW9uIFRoZXJhcHkgZm9yIFVyb2xvZ3kgQ2FyZSBNZWRpY2F0aW9uIE9yZGVyIFN0YXJ0IERhdGVzIikgQURURGF0ZVRpbWUKICAgICAgd2l0aCAiUHJvc3RhdGUgQ2FuY2VyIERpYWdub3NpcyIgUHJvc3RhdGVDYW5jZXIKICAgICAgICBzdWNoIHRoYXQgQURURGF0ZVRpbWUgZHVyaW5nIGRheSBvZiBQcm9zdGF0ZUNhbmNlci5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApCiAgICAgICAgICBhbmQgQURURGF0ZVRpbWUgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiAtIDMgbW9udGhzLCBzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiArIDkgbW9udGhzXQogICAgICBzb3J0IGFzY2VuZGluZwogICkKCmRlZmluZSAiT3JkZXIgZm9yIDEyIE1vbnRocyBvZiBBRFQgaW4gMyBNb250aHMgQmVmb3JlIHRvIDkgTW9udGhzIEFmdGVyIFN0YXJ0IG9mIE1lYXN1cmVtZW50IFBlcmlvZCI6CiAgW1NlcnZpY2VSZXF1ZXN0OiAiSW5qZWN0aW9uIG9mIGxldXByb2xpZGUgYWNldGF0ZSBmb3IgdHdlbHZlIG1vbnRoIHBlcmlvZCAocmVnaW1lL3RoZXJhcHkpIl0gT3JkZXJUd2VsdmVNb250aEFEVAogICAgd2l0aCAiRmlyc3QgQURUIGluIDMgTW9udGhzIEJlZm9yZSB0byA5IE1vbnRocyBBZnRlciBTdGFydCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiIEZpcnN0QURUTVAKICAgICAgc3VjaCB0aGF0IE9yZGVyVHdlbHZlTW9udGhBRFQuYXV0aG9yZWRPbiBvbiBvciBhZnRlciBkYXkgb2YgRmlyc3RBRFRNUAogICAgICAgIGFuZCBPcmRlclR3ZWx2ZU1vbnRoQURULmF1dGhvcmVkT24gZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiAtIDMgbW9udGhzLCBzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiArIDkgbW9udGhzXQogICAgICAgIGFuZCBPcmRlclR3ZWx2ZU1vbnRoQURULnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgICAgYW5kIE9yZGVyVHdlbHZlTW9udGhBRFQuaW50ZW50ID0gJ29yZGVyJwoKZGVmaW5lICJBbmRyb2dlbiBEZXByaXZhdGlvbiBUaGVyYXB5IGZvciBVcm9sb2d5IENhcmUgTWVkaWNhdGlvbiBBY3RpdmUgU3RhcnQgRGF0ZXMiOgogIFtNZWRpY2F0aW9uUmVxdWVzdDogIkFuZHJvZ2VuIERlcHJpdmF0aW9uIFRoZXJhcHkgZm9yIFVyb2xvZ3kgQ2FyZSJdIEFEVEFjdGl2ZQogICAgbGV0IGZpcnN0TWVkaWNhdGlvblBlcmlvZDogRmlyc3QoKGNvbGxhcHNlKEFEVEFjdGl2ZS5kb3NhZ2VJbnN0cnVjdGlvbi50aW1pbmcucmVwZWF0LmJvdW5kcyBEb3NlVGltZQogICAgICAgICAgcmV0dXJuIERvc2VUaW1lLnRvSW50ZXJ2YWwoKQogICAgICApKSBEcnVnUGVyaW9kcwogICAgICAgIHNvcnQgYnkgc3RhcnQgb2YgJHRoaXMKICAgICksCgogICAgLy9nZXQgdGhlIHZlcnkgZmlyc3QgZXZlbnQgYXMgaW50ZXJ2YWwKICAgIAogICAgZmlyc3RNZWRpY2F0aW9uRXZlbnQ6IEZpcnN0KChBRFRBY3RpdmUuZG9zYWdlSW5zdHJ1Y3Rpb24udGltaW5nIGRvc2FnZVRpbWluZwogICAgICAgIC8vcmV0dXJucyBmaXJzdCBldmVudCBmb3IgdGhlIHNwZWNpZmljIGRvc2FnZVRpbWluZwogICAgICAgIAogICAgICAgIHJldHVybiBGaXJzdChkb3NhZ2VUaW1pbmcuZXZlbnQudmFsdWUgZG9zYWdlVGltaW5nRXZlbnRzCiAgICAgICAgICAgIHNvcnQgYXNjZW5kaW5nCiAgICAgICAgKSkgZmlyc3RFdmVudHMKICAgICAgICBzb3J0IGFzY2VuZGluZwogICAgKSwKICAgIG1lZGljYXRpb25EYXRlVGltZTogTWluKHsgZmlyc3RNZWRpY2F0aW9uRXZlbnQsIHN0YXJ0IG9mIGZpcnN0TWVkaWNhdGlvblBlcmlvZCwgCiAgICAgIGVuZCBvZiBmaXJzdE1lZGljYXRpb25QZXJpb2QgfQogICAgKQogICAgd2hlcmUgQURUQWN0aXZlLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBBRFRBY3RpdmUuaW50ZW50IGluIHsgJ29yZGVyJywgJ29yaWdpbmFsLW9yZGVyJywgJ3JlZmxleC1vcmRlcicsICdmaWxsZXItb3JkZXInLCAnaW5zdGFuY2Utb3JkZXInIH0KICAgIHJldHVybiBtZWRpY2F0aW9uRGF0ZVRpbWUKCmRlZmluZSAiQW5kcm9nZW4gRGVwcml2YXRpb24gVGhlcmFweSBmb3IgVXJvbG9neSBDYXJlIE1lZGljYXRpb24gT3JkZXIgU3RhcnQgRGF0ZXMiOgogIFtNZWRpY2F0aW9uUmVxdWVzdDogIkFuZHJvZ2VuIERlcHJpdmF0aW9uIFRoZXJhcHkgZm9yIFVyb2xvZ3kgQ2FyZSJdIEFEVE9yZGVyCiAgICBsZXQgZmlyc3RNZWRpY2F0aW9uUGVyaW9kOiBGaXJzdCgoY29sbGFwc2UoQURUT3JkZXIuZG9zYWdlSW5zdHJ1Y3Rpb24udGltaW5nLnJlcGVhdC5ib3VuZHMgRG9zZVRpbWUKICAgICAgICAgIHJldHVybiBEb3NlVGltZS50b0ludGVydmFsKCkKICAgICAgKSkgRHJ1Z1BlcmlvZHMKICAgICAgICBzb3J0IGJ5IHN0YXJ0IG9mICR0aGlzCiAgICApLAogICAgbWVkaWNhdGlvbkRhdGVUaW1lOiBNaW4oeyBBRFRPcmRlci5hdXRob3JlZE9uLCBzdGFydCBvZiBmaXJzdE1lZGljYXRpb25QZXJpb2QsIAogICAgICBlbmQgb2YgZmlyc3RNZWRpY2F0aW9uUGVyaW9kIH0KICAgICkKICAgIHdoZXJlIEFEVE9yZGVyLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBBRFRPcmRlci5pbnRlbnQgaW4geyAnb3JkZXInLCAnb3JpZ2luYWwtb3JkZXInLCAncmVmbGV4LW9yZGVyJywgJ2ZpbGxlci1vcmRlcicsICdpbnN0YW5jZS1vcmRlcicgfQogICAgcmV0dXJuIG1lZGljYXRpb25EYXRlVGltZQoKZGVmaW5lICJIYXMgUXVhbGlmeWluZyBFbmNvdW50ZXIiOgogIGV4aXN0cyAoIFsiRW5jb3VudGVyIjogIk9mZmljZSBWaXNpdCJdIE9mZmljZVZpc2l0CiAgICAgIHdoZXJlIE9mZmljZVZpc2l0LnBlcmlvZCBkdXJpbmcgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIE9mZmljZVZpc2l0LnN0YXR1cyA9ICdmaW5pc2hlZCcKICApCgpkZWZpbmUgIlByb3N0YXRlIENhbmNlciBEaWFnbm9zaXMiOgogICgKICAgIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogICAgLy8gT3JpZ2luYWw6CiAgICAvLyAgICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJQcm9zdGF0ZSBDYW5jZXIiXQogICAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJQcm9zdGF0ZSBDYW5jZXIiXSApCiAgICBbRkhJUi5Db25kaXRpb246ICJQcm9zdGF0ZSBDYW5jZXIiXSApIFByb3N0YXRlQ2FuY2VyCiAgICB3aGVyZSBQcm9zdGF0ZUNhbmNlci5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBhbmQgUHJvc3RhdGVDYW5jZXIuaXNWZXJpZmllZCAoICkKCi8qICAgICAgCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb25kaXRpb24gZWl0aGVyIGhhcyBubyB2ZXJpZmljYXRpb24gc3RhdHVzIG9yIGhhcyBhIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgY29uZmlybWVkLCB1bmNvbmZpcm1lZCwgcHJvdmlzaW9uYWwsIG9yIGRpZmZlcmVudGlhbAoqLwoKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNWZXJpZmllZChjb25kaXRpb24gQ2hvaWNlPENvbmRpdGlvbkVuY291bnRlckRpYWdub3NpcywgQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucz4pOgogIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgaXMgbm90IG51bGwgaW1wbGllcyAoIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuImNvbmZpcm1lZCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4idW5jb25maXJtZWQiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuInByb3Zpc2lvbmFsIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJkaWZmZXJlbnRpYWwiCiAgKQ==",
    "url" : "https://madie.cms.gov/Library-CMS645FHIRBoneDensityPCADTherapy.cql"
  }]
}