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
| Draft as of 2026-09-19 |
{
"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 "SNOMEDCT": 'http://snomed.info/sct'\n\nvalueset "Androgen Deprivation Therapy for Urology Care": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1248.352'\nvalueset "DEXA Bone Density for Urology Care": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1248.359'\nvalueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset "Patient Declined": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1582'\nvalueset "Prostate Cancer": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.319'\n\ncode "Injection of leuprolide acetate for twelve month period (regime/therapy)": '456381000124102' from "SNOMEDCT" display 'Injection of leuprolide acetate for twelve month period (regime/therapy)'\n\nparameter "Measurement Period" Interval<DateTime>\n default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\ndefine "Initial Population":\n "Has Qualifying Encounter"\n and exists "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period"\n\ndefine "Denominator":\n "Initial Population"\n\ndefine "Numerator":\n "Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT"\n\ndefine "Denominator Exception":\n exists ( "No Bone Density Scan Ordered Due to Patient Refusal" )\n or exists ( "No Bone Density Scan Performed Due to Patient Refusal" )\n\ndefine "SDE Ethnicity":\n SDE."SDE Ethnicity"\n\ndefine "SDE Payer":\n SDE."SDE Payer"\n\ndefine "SDE Race":\n SDE."SDE Race"\n\ndefine "SDE Sex":\n SDE."SDE Sex"\n\ndefine "Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT":\n exists ( ( [ServiceRequest: "DEXA Bone Density for Urology Care"] DEXAOrdered\n with "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period" 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: "DEXA Bone Density for Urology Care"] DEXAPerformed\n with "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period" 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 "No Bone Density Scan Ordered Due to Patient Refusal":\n [ServiceNotRequested: "DEXA Bone Density for Urology Care"] DEXANotOrdered\n with "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period" OrderTwelveMonthsADT\n such that DEXANotOrdered.authoredOn 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn\n and DEXANotOrdered.reasonRefused ( ) in "Patient Declined"\n\ndefine "No Bone Density Scan Performed Due to Patient Refusal":\n [ObservationCancelled: "DEXA Bone Density for Urology Care"] DEXANotPerformed\n with "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period" OrderTwelveMonthsADT\n such that DEXANotPerformed.issued 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn\n and DEXANotPerformed.notDoneReason ( ) in "Patient Declined"\n\ndefine "First ADT in 3 Months Before to 9 Months After Start of Measurement Period":\n First(("Androgen Deprivation Therapy for Urology Care Medication Active Start Dates"\n union "Androgen Deprivation Therapy for Urology Care Medication Order Start Dates") ADTDateTime\n with "Prostate Cancer Diagnosis" ProstateCancer\n such that ADTDateTime during day of ProstateCancer.prevalenceInterval ( )\n and ADTDateTime during day of Interval[start of "Measurement Period" - 3 months, start of "Measurement Period" + 9 months]\n sort ascending\n )\n\ndefine "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period":\n [ServiceRequest: "Injection of leuprolide acetate for twelve month period (regime/therapy)"] OrderTwelveMonthADT\n with "First ADT in 3 Months Before to 9 Months After Start of Measurement Period" FirstADTMP\n such that OrderTwelveMonthADT.authoredOn on or after day of FirstADTMP\n and OrderTwelveMonthADT.authoredOn during day of Interval[start of "Measurement Period" - 3 months, start of "Measurement Period" + 9 months]\n and OrderTwelveMonthADT.status in { 'active', 'completed' }\n and OrderTwelveMonthADT.intent = 'order'\n\ndefine "Androgen Deprivation Therapy for Urology Care Medication Active Start Dates":\n [MedicationRequest: "Androgen Deprivation Therapy for Urology Care"] 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 "Androgen Deprivation Therapy for Urology Care Medication Order Start Dates":\n [MedicationRequest: "Androgen Deprivation Therapy for Urology Care"] 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 "Has Qualifying Encounter":\n exists ( ["Encounter": "Office Visit"] OfficeVisit\n where OfficeVisit.period during day of "Measurement Period"\n and OfficeVisit.status = 'finished'\n )\n\ndefine "Prostate Cancer Diagnosis":\n (\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // ( [ConditionProblemsHealthConcerns: "Prostate Cancer"]\n // union [ConditionEncounterDiagnosis: "Prostate Cancer"] )\n [FHIR.Condition: "Prostate Cancer"] ) ProstateCancer\n where ProstateCancer.prevalenceInterval ( ) overlaps day of "Measurement Period"\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<ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns>):\n condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status."confirmed"\n or condition.verificationStatus ~ Status."unconfirmed"\n or condition.verificationStatus ~ Status."provisional"\n or condition.verificationStatus ~ Status."differential"\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"
}
]
}