diff --git a/.github/workflows/ghbuild.yml b/.github/workflows/ghbuild.yml
index 575defd4e17..4d31dfcfe7d 100644
--- a/.github/workflows/ghbuild.yml
+++ b/.github/workflows/ghbuild.yml
@@ -20,4 +20,4 @@ on:
jobs:
# This workflow contains a single job called "build"
call_build:
- uses: WorldHealthOrganization/smart-base/.github/workflows/ghbuild.yml@main
+ uses: WorldHealthOrganization/smart-base/.github/workflows/ghbuild.yml@a5205e9416c55c11b7ef986931b28fcfe574657e
diff --git a/input/cql/cql-options.json b/input/cql/cql-options.json
new file mode 100644
index 00000000000..f2c5335a3b8
--- /dev/null
+++ b/input/cql/cql-options.json
@@ -0,0 +1,17 @@
+{
+ "options":[
+ "EnableAnnotations",
+ "EnableResultTypes",
+ "EnableLocators",
+ "DisableListDemotion",
+ "DisableListPromotion"
+ ],
+ "formats":[
+ ],
+ "validateUnits":true,
+ "verifyOnly":false,
+ "errorLevel":"Info",
+ "signatureLevel":"All",
+ "analyzeDataRequirements":true,
+ "collapseDataRequirements":true
+}
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND01Logic b/input/tests/measures/IMMZIND01Logic
deleted file mode 120000
index eddf21224e9..00000000000
--- a/input/tests/measures/IMMZIND01Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTBCGLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND03Logic b/input/tests/measures/IMMZIND03Logic
deleted file mode 120000
index d0cc6014eea..00000000000
--- a/input/tests/measures/IMMZIND03Logic
+++ /dev/null
@@ -1 +0,0 @@
-IMMZIND02Logic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND04Logic b/input/tests/measures/IMMZIND04Logic
deleted file mode 120000
index d0cc6014eea..00000000000
--- a/input/tests/measures/IMMZIND04Logic
+++ /dev/null
@@ -1 +0,0 @@
-IMMZIND02Logic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND05Logic b/input/tests/measures/IMMZIND05Logic
deleted file mode 120000
index 347336c736f..00000000000
--- a/input/tests/measures/IMMZIND05Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTHepatitisBBirthLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND06Logic b/input/tests/measures/IMMZIND06Logic
deleted file mode 120000
index c41c2552c3d..00000000000
--- a/input/tests/measures/IMMZIND06Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPoliobOPVIPVLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND07Logic b/input/tests/measures/IMMZIND07Logic
deleted file mode 120000
index c41c2552c3d..00000000000
--- a/input/tests/measures/IMMZIND07Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPoliobOPVIPVLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND08Logic b/input/tests/measures/IMMZIND08Logic
deleted file mode 120000
index c41c2552c3d..00000000000
--- a/input/tests/measures/IMMZIND08Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPoliobOPVIPVLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND09Logic b/input/tests/measures/IMMZIND09Logic
deleted file mode 120000
index c41c2552c3d..00000000000
--- a/input/tests/measures/IMMZIND09Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPoliobOPVIPVLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND10Logic b/input/tests/measures/IMMZIND10Logic
deleted file mode 120000
index c41c2552c3d..00000000000
--- a/input/tests/measures/IMMZIND10Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPoliobOPVIPVLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND11Logic b/input/tests/measures/IMMZIND11Logic
deleted file mode 120000
index dd3d6d5941f..00000000000
--- a/input/tests/measures/IMMZIND11Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPolioIPVLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND12Logic b/input/tests/measures/IMMZIND12Logic
deleted file mode 120000
index 73715af2309..00000000000
--- a/input/tests/measures/IMMZIND12Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTMeaslesOngoingTxLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND13Logic b/input/tests/measures/IMMZIND13Logic
deleted file mode 120000
index 32005780470..00000000000
--- a/input/tests/measures/IMMZIND13Logic
+++ /dev/null
@@ -1 +0,0 @@
-IMMZIND12Logic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND14Logic b/input/tests/measures/IMMZIND14Logic
deleted file mode 120000
index 66a14a3d7f2..00000000000
--- a/input/tests/measures/IMMZIND14Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTHPV2DoseLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND15Logic b/input/tests/measures/IMMZIND15Logic
deleted file mode 120000
index 66a14a3d7f2..00000000000
--- a/input/tests/measures/IMMZIND15Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTHPV2DoseLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND16Logic b/input/tests/measures/IMMZIND16Logic
deleted file mode 120000
index 33bcac32c09..00000000000
--- a/input/tests/measures/IMMZIND16Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTMeningococcalMenA1Logic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND17Logic b/input/tests/measures/IMMZIND17Logic
deleted file mode 120000
index 0d21e644e83..00000000000
--- a/input/tests/measures/IMMZIND17Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPneumococcal3p0bLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND18Logic b/input/tests/measures/IMMZIND18Logic
deleted file mode 120000
index 0d21e644e83..00000000000
--- a/input/tests/measures/IMMZIND18Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPneumococcal3p0bLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND19Logic b/input/tests/measures/IMMZIND19Logic
deleted file mode 120000
index 0d21e644e83..00000000000
--- a/input/tests/measures/IMMZIND19Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTPneumococcal3p0bLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND20Logic b/input/tests/measures/IMMZIND20Logic
deleted file mode 120000
index 0ec6641fb29..00000000000
--- a/input/tests/measures/IMMZIND20Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTRotavirusLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND21Logic b/input/tests/measures/IMMZIND21Logic
deleted file mode 120000
index 0ec6641fb29..00000000000
--- a/input/tests/measures/IMMZIND21Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTRotavirusLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND22Logic b/input/tests/measures/IMMZIND22Logic
deleted file mode 120000
index 0ec6641fb29..00000000000
--- a/input/tests/measures/IMMZIND22Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTRotavirusLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND23Logic b/input/tests/measures/IMMZIND23Logic
deleted file mode 120000
index 632f2925192..00000000000
--- a/input/tests/measures/IMMZIND23Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTDTPOnTimeLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND24Logic b/input/tests/measures/IMMZIND24Logic
deleted file mode 120000
index 632f2925192..00000000000
--- a/input/tests/measures/IMMZIND24Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTDTPOnTimeLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND25Logic b/input/tests/measures/IMMZIND25Logic
deleted file mode 120000
index 632f2925192..00000000000
--- a/input/tests/measures/IMMZIND25Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTDTPOnTimeLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND26Logic b/input/tests/measures/IMMZIND26Logic
deleted file mode 120000
index 784498fab35..00000000000
--- a/input/tests/measures/IMMZIND26Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTYellowfeverLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND27Logic b/input/tests/measures/IMMZIND27Logic
deleted file mode 120000
index c2f77c9ba80..00000000000
--- a/input/tests/measures/IMMZIND27Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTJEIVLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND28Logic b/input/tests/measures/IMMZIND28Logic
deleted file mode 120000
index 0600dd3a4e2..00000000000
--- a/input/tests/measures/IMMZIND28Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTTyphoidTCVLogic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND29Logic b/input/tests/measures/IMMZIND29Logic
deleted file mode 120000
index 88a59419ef6..00000000000
--- a/input/tests/measures/IMMZIND29Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTSeasonalinfluenza2DoseLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND31Logic b/input/tests/measures/IMMZIND31Logic
deleted file mode 120000
index 1059b1c25fa..00000000000
--- a/input/tests/measures/IMMZIND31Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTMalaria4DoseLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND32Logic b/input/tests/measures/IMMZIND32Logic
deleted file mode 120000
index 1059b1c25fa..00000000000
--- a/input/tests/measures/IMMZIND32Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTMalaria4DoseLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND33Logic b/input/tests/measures/IMMZIND33Logic
deleted file mode 120000
index 1059b1c25fa..00000000000
--- a/input/tests/measures/IMMZIND33Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTMalaria4DoseLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND34Logic b/input/tests/measures/IMMZIND34Logic
deleted file mode 120000
index 1059b1c25fa..00000000000
--- a/input/tests/measures/IMMZIND34Logic
+++ /dev/null
@@ -1 +0,0 @@
-../plandefinition/IMMZD2DTMalaria4DoseLogic/
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND37Logic b/input/tests/measures/IMMZIND37Logic
deleted file mode 120000
index fed2eab5fa1..00000000000
--- a/input/tests/measures/IMMZIND37Logic
+++ /dev/null
@@ -1 +0,0 @@
-IMMZIND13Logic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND38Logic b/input/tests/measures/IMMZIND38Logic
deleted file mode 120000
index 1bce861dc5f..00000000000
--- a/input/tests/measures/IMMZIND38Logic
+++ /dev/null
@@ -1 +0,0 @@
-IMMZIND34Logic
\ No newline at end of file
diff --git a/input/tests/measures/IMMZIND39Logic b/input/tests/measures/IMMZIND39Logic
deleted file mode 120000
index 1bce861dc5f..00000000000
--- a/input/tests/measures/IMMZIND39Logic
+++ /dev/null
@@ -1 +0,0 @@
-IMMZIND34Logic
\ No newline at end of file
diff --git a/publication-request.json b/publication-request.json
new file mode 100644
index 00000000000..8f69608e966
--- /dev/null
+++ b/publication-request.json
@@ -0,0 +1,14 @@
+{
+ "package-id" : "smart.who.int.immunizations",
+ "title" : "Immunizations",
+ "category" : "base",
+ "introduction" : "SMART Immunization Implementation Guide",
+ "version" : "1.0.0",
+ "desc" : "1.0.0 release",
+ "mode" : "milestone",
+ "path" : "http://smart.who.int/immunizations/v1.0.0",
+ "ci-build": "http://worldhealthorganization.github.io/smart-immunizations",
+ "first": true,
+ "status" : "release",
+ "sequence" : "Releases"
+ }
\ No newline at end of file
diff --git a/sushi-config.yaml b/sushi-config.yaml
index 141fc7e8ca8..39995964e36 100644
--- a/sushi-config.yaml
+++ b/sushi-config.yaml
@@ -2,14 +2,13 @@ id: smart.who.int.immunizations
canonical: http://smart.who.int/immunizations
name: Immunizations
title: "WHO Immunization Implementation Guide"
-description: WHO Immunization Implementaiton Guide
-status: draft # draft | active | retired | unknown
-version: 0.2.0
+description: WHO Immunization Implementation Guide
+status: active # draft | active | retired | unknown
+version: 1.0.0
fhirVersion: 4.0.1 # https://www.hl7.org/fhir/valueset-FHIR-version.html
copyrightYear: 2023+
-releaseLabel: ci-build # ci-build | draft | qa-preview | ballot | trial-use | release | update | normative+trial-use
+releaseLabel: release # ci-build | draft | qa-preview | ballot | trial-use | release | update | normative+trial-use
license: CC0-1.0 # https://www.hl7.org/fhir/valueset-spdx-license.html
-date: 2024-12-06
# jurisdiction: urn:iso:std:iso:3166#US "United States of America" # https://www.hl7.org/fhir/valueset-jurisdiction.html
publisher:
name: WHO
@@ -257,12 +256,12 @@ menu:
#
# setId: always # always | standalone-only
dependencies:
- smart.who.int.base: current
+ smart.who.int.base: 0.2.0
hl7.fhir.uv.extensions.r4: 5.1.0
hl7.fhir.uv.cql: 1.0.0
hl7.fhir.uv.crmi: 1.0.0
hl7.fhir.uv.sdc: 3.0.0
- hl7.fhir.uv.cpg: current
+ hl7.fhir.uv.cpg: 2.0.0
hl7.fhir.us.cqfmeasures: 5.0.0
fhir.cqf.common: 4.0.1
@@ -275,6 +274,8 @@ parameters:
- input/cql
path-pages:
- input/cql
+ path-liquid:
+ - templates/liquid
special-url:
- http://id.who.int/icd/release/11/mms
- http://hl7.org/fhir/ValueSet/immunization-status
diff --git a/templates/liquid/ActivityDefinition.liquid b/templates/liquid/ActivityDefinition.liquid
new file mode 100644
index 00000000000..f97df24ab4a
--- /dev/null
+++ b/templates/liquid/ActivityDefinition.liquid
@@ -0,0 +1,5 @@
+{%include narrative-start.html %}
+{%include activitydefinition-metadata.html activitydefinition=ActivityDefinition %}
+{%include activitydefinition-logic.html activitydefinition=ActivityDefinition %}
+{%include version.html %}
+{%include narrative-end.html %}
\ No newline at end of file
diff --git a/templates/liquid/Library.liquid b/templates/liquid/Library.liquid
new file mode 100644
index 00000000000..822f9b5092d
--- /dev/null
+++ b/templates/liquid/Library.liquid
@@ -0,0 +1,5 @@
+{%include narrative-start.html %}
+{%include library-metadata.html library=Library %}
+{%include library-content.html library=Library %}
+{%include version.html %}
+{%include narrative-end.html %}
\ No newline at end of file
diff --git a/templates/liquid/Measure.liquid b/templates/liquid/Measure.liquid
new file mode 100644
index 00000000000..e03093f80c8
--- /dev/null
+++ b/templates/liquid/Measure.liquid
@@ -0,0 +1,12 @@
+{%include narrative-start.html %}
+{%include measure-metadata.html measure=Measure %}
+{%include measure-group.html measure=Measure %}
+{%include measure-supplementaldata.html measure=Measure %}
+{%include measure-logic.html measure=Measure %}
+{%include measure-logic-populationcriteria.html measure=Measure %}
+{%include measure-logic-definitions.html measure=Measure %}
+{%include measure-logic-terminology.html measure=Measure %}
+{%include measure-logic-dependencies.html measure=Measure %}
+{%include measure-logic-datarequirements.html measure=Measure %}
+{%include version.html %}
+{%include narrative-end.html %}
\ No newline at end of file
diff --git a/templates/liquid/MeasureOld.liquid b/templates/liquid/MeasureOld.liquid
new file mode 100644
index 00000000000..2b607f7dec8
--- /dev/null
+++ b/templates/liquid/MeasureOld.liquid
@@ -0,0 +1,1028 @@
+
+
+
+ {% if Measure.title.exists() %}
+
+ | Title: |
+ {{Measure.title}} |
+
+ {% endif %}
+
+ {% if Measure.subtitle.exists() %}
+
+ | Subtitle: |
+ {{Measure.subtitle}} |
+
+ {% endif %}
+
+ {% if Measure.id.exists() %}
+
+ | Id: |
+ {{Measure.id}} |
+
+ {% endif %}
+
+ {% if Measure.version.exists() %}
+
+ | Version: |
+ {{Measure.version}} |
+
+ {% endif %}
+
+ {% if Measure.url.exists() %}
+
+ | Url: |
+ {{Measure.url}} |
+
+ {% endif %}
+
+ {% for identifier in Measure.identifier %}
+
+ |
+
+ {% if identifier.type.coding.exists() %}
+ {% if identifier.type.coding.display.exists() %}
+ {{identifier.type.coding.display}}{% if identifier.assigner.display.exists() %} ({{identifier.assigner.display}}){% endif %} Identifier:
+ {% else %}
+ {{identifier.type.coding.code}}{% if identifier.assigner.display.exists() %} ({{identifier.assigner.display}}){% endif %} identifier:
+ {% endif %}
+ {% else %}
+ {{identifier.use}}
+ {% endif %}
+
+ |
+
+
+ {% if identifier.value.exists() %}
+
+ {{identifier.value}}
+
+ {% endif %}
+ |
+
+ {% endfor %}
+
+ {% if Measure.effectivePeriod.exists() %}
+
+ | Effective Period: |
+ {{Measure.effectivePeriod.start}}..{{Measure.effectivePeriod.end}} |
+
+ {% endif %}
+
+ {% if Measure.status.exists() and Measure.status.value != 'active' %}
+
+ | Status: |
+ {{Measure.status.value}} |
+
+ {% endif %}
+
+ {% if Measure.experimental.exists() and Measure.experimental.value = 'true' %}
+
+ | Experimental: |
+ {{Measure.experimental.value}} |
+
+ {% endif %}
+
+ {% if Measure.publisher.exists() %}
+
+ | Publisher: |
+ {{Measure.publisher}} |
+
+ {% endif %}
+
+ {% if Measure.author.exists() and Measure.author.name.exists() %}
+
+ | Author: |
+ {{Measure.author.name}} |
+
+ {% endif %}
+
+ {% if Measure.endorser.exists() and Measure.endorser.name.exists() %}
+
+ | Endorser: |
+ {{Measure.endorser.name}} |
+
+ {% endif %}
+
+ {% if Measure.description.exists() %}
+
+ | Description: |
+ {{Measure.description}} |
+
+ {% endif %}
+
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability').exists() %}
+
+ | Knowledge Capability: |
+
+ {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability') %}{{extension.value}} {% endfor %}
+ |
+
+ {% endif %}
+
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeRepresentationLevel').exists() %}
+
+ | Knowledge Representation Level: |
+
+ {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeRepresentationLevel') %}{{extension.value}}{% endfor %}
+ |
+
+ {% endif %}
+
+ {% if Measure.useContext.exists() %}
+
+ | Use Context: |
+
+
+
+ | code |
+ value |
+
+ {% for useContext in Measure.useContext %}
+
+ | {{useContext.code.code}} |
+ {{useContext.value.text}} |
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+
+ {% if Measure.jurisdiction.exists() %}
+
+ | Jurisdiction: |
+ {{Measure.jurisdiction.first().coding.first().code}} |
+
+ {% endif %}
+
+ {% if Measure.topic.exists() %}
+
+ | Topic: |
+ {{Measure.topic.first().coding.first().code}} |
+
+ {% endif %}
+
+ {% if Measure.purpose.exists() %}
+
+ | Purpose: |
+ {{Measure.purpose}} |
+
+ {% endif %}
+
+ {% if Measure.copyright.exists() %}
+
+ | Copyright: |
+ {{Measure.copyright}} |
+
+ {% endif %}
+
+ {% if Measure.disclaimer.exists() %}
+
+ | Disclaimer: |
+ {{Measure.disclaimer}} |
+
+ {% endif %}
+
+ {% if Measure.subject.exists() %}
+
+ | Subject: |
+ {% if Measure.subject is CodeableConcept %}
+
+ {% if Measure.subject.coding.exists() %}
+ {% for coding in Measure.subject.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system.exists(), '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if Measure.subject.coding.exists().not() and Measure.subject.text.exists() %}
+ {{Measure.subject.text}}
+ {% endif %}
+ |
+ {% endif %}
+ {% if Measure.subject is Reference %}
+
+ {% if Measure.subject.reference.exists() %}
+
+ reference: {{Measure.subject.reference}}
+
+ {% endif %}
+ {% if Measure.subject.type.exists() %}
+
+ type: {{Measure.subject.type}}
+
+ {% endif %}
+ {% if Measure.subject.display.exists() %}
+
+ code: {{Measure.subject.display}}
+
+ {% endif %}
+ |
+ {% endif %}
+
+ {% endif %}
+
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-populationBasis').exists() %}
+
+ | Basis: |
+
+ {{Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-populationBasis').first().value}}
+ |
+
+ {% endif %}
+
+ {% if Measure.scoring.exists() %}
+
+ | Scoring: |
+
+ {% if Measure.scoring.coding.exists() %}
+ {% for coding in Measure.scoring.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system != 'http://terminology.hl7.org/CodeSystem/measure-scoring', '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if Measure.scoring.coding.exists().not() and Measure.scoring.text.exists() %}
+ {{Measure.scoring.text}}
+ {% endif %}
+ |
+
+ {% endif %}
+
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit').exists() %}
+
+ | Scoring unit: |
+
+ {% for scoringUnit in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit') %}
+ {% if scoringUnit.coding.exists() %}
+ {% for coding in scoringUnit.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system != 'http://unitsofmeasure.org', '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if scoringUnit.coding.exists().not() and scoringUnit.text.exists() %}
+ {{scoringUnit.text}}
+ {% endif %}
+ {% endfor %}
+ |
+
+ {% endif %}
+
+ {% if Measure.type.exists() %}
+
+ | Type: |
+
+ {% if Measure.type.coding.exists() %}
+ {% for coding in Measure.type.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system != 'http://terminology.hl7.org/CodeSystem/measure-type', '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if Measure.type.coding.exists().not() and Measure.type.text.exists() %}
+ {{Measure.type.text}}
+ {% endif %}
+ |
+
+ {% endif %}
+
+ {% if Measure.riskAdjustment.exists() %}
+
+ | Risk Adjustment: |
+ {{Measure.riskAdjustment}} |
+
+ {% endif %}
+
+ {% if Measure.rateAggregation.exists() %}
+
+ | Rate Aggregation: |
+ {{Measure.rateAggregation}} |
+
+ {% endif %}
+
+ {% if Measure.rationale.exists() %}
+
+ | Rationale: |
+ {{Measure.rationale}} |
+
+ {% endif %}
+
+ {% if Measure.clinicalRecommendationStatement.exists() %}
+
+ | Clinical recommendation statement: |
+ {{Measure.clinicalRecommendationStatement}} |
+
+ {% endif %}
+
+ {% if Measure.improvementNotation.exists() %}
+
+ | Improvement Notation: |
+
+ {% if Measure.improvementNotation.coding.exists() %}
+ {% for coding in Measure.improvementNotation.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system != 'http://terminology.hl7.org/CodeSystem/measure-improvement-notation', '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if Measure.improvementNotation.coding.exists().not() and Measure.improvementNotation.text.exists() %}
+ {{Measure.improvementNotation.text}}
+ {% endif %}
+ |
+
+ {% endif %}
+
+ {% if Measure.usage.exists() %}
+
+ | Guidance (Usage): |
+ {{Measure.usage}} |
+
+ {% endif %}
+
+ {% if Measure.group.exists() %}
+ {% if Measure.group[0].population.description.exists() %}
+
+ | Population Criteria: |
+
+ {% for group in Measure.group %}
+
+ {% if group.id.exists() %}
+
+ | {{group.id}} |
+
+ {% endif %}
+ {% for population in group.population %}
+
+ | {{population.code.coding[0].display}}: |
+
+ {% if population.criteria.expression.exists().not() %}
+ None |
+ {% else %}
+ {% if population.description.exists() %}
+ {{population.description}} |
+ {% else %}
+ None |
+ {% endif %}
+ {% endif %}
+
+
+ {% endfor %}
+ {% if group.stratifier.exists() %}
+ Stratifier Criteria:
+ {% for stratifier in group.stratifier %}
+
+ {% if stratifier.code.coding[0].display.exists() %}
+ | {{stratifier.code.coding[0].display}}: |
+ {% elsif stratifier.code.coding[0].code.exists() %}
+ {{stratifier.code.coding[0].code}}: |
+ {% else %}
+ Stratum: |
+ {% endif %}
+
+ {% if stratifier.description.exists() %}
+ {{stratifier.description}} |
+ {% else %}
+ None |
+ {% endif %}
+
+ {% endfor %}
+ {% endif %}
+
+ {% endfor %}
+ |
+
+ {% endif %}
+ {% endif %}
+
+ {% if Measure.supplementalData.usage.coding.where(code = 'supplemental-data').exists() %}
+
+ | Supplemental Data Elements: |
+
+ {% for supplementalData in Measure.supplementalData.where(usage.coding.where(code = 'supplemental-data').exists()) %}
+ {% if supplementalData.code.exists() %}
+ {{iif(supplementalData.code.text.exists(), supplementalData.code.text, iif(supplementalData.code.coding.first().display.exists(), supplementalData.code.coding.first().display, supplementalData.code.coding.first().code))}}
+ {% else %}
+ {% if supplementalData.description.exists() %}
+ {{supplementalData.description}}
+ {% else %}
+ {% if supplementalData.criteria.description.exists() %}
+ {{supplementalData.criteria.description}}
+ {% else %}
+ {{supplementalData.criteria.expression}}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ |
+
+ {% endif %}
+
+ {% if Measure.supplementalData.usage.coding.where(code = 'risk-adjustment-factor').exists() %}
+
+ | Risk Adjustment Variable: |
+
+ {% for supplementalData in Measure.supplementalData.where(usage.coding.where(code = 'risk-adjustment-factor').exists()) %}
+ {% if supplementalData.code.exists() %}
+ {{iif(supplementalData.code.text.exists(), supplementalData.code.text, iif(supplementalData.code.coding.first().display.exists(), supplementalData.code.coding.first().display, supplementalData.code.coding.first().code))}}
+ {% else %}
+ {% if supplementalData.description.exists() %}
+ {{supplementalData.description}}
+ {% else %}
+ {% if supplementalData.criteria.description.exists() %}
+ {{supplementalData.criteria.description}}
+ {% else %}
+ {{supplementalData.criteria.expression}}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ |
+
+ {% endif %}
+
+ {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-supplementalDataGuidance') %}
+
+ |
+ {{iif(extension.extension.where(url = 'usage').value.text.exists(), extension.extension.where(url = 'usage').value.text, iif(extension.extension.where(url = 'usage').coding.first().display.exists(), extension.extension.where(url = 'usage').coding.first().display, extension.extension.where(url = 'usage').coding.first().code))}}
+ : |
+ {{extension.extension.where(url = 'guidance').value}} |
+
+ {% endfor %}
+
+ {% if Measure.library.exists() %}
+
+ | Libraries: |
+
+
+ {% for library in Measure.library %}
+
+ | {{library}} |
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+
+ {% if Measure.relatedArtifact.exists() %}
+
+ | Related Artifacts: |
+
+ {% if Measure.relatedArtifact.where(type = 'documentation' or type = 'justification').exists() %}
+ Documentation
+
+ {% endif %}
+ {% if Measure.relatedArtifact.where(type = 'citation').exists() %}
+ References
+
+ {% for artifact in Measure.relatedArtifact.where(type = 'citation') %}
+ - {{artifact.citation}}
{{artifact.url}}
+ {% endfor %}
+
+ {% endif %}
+ {% if Measure.relatedArtifact.where(type = 'depends-on').exists() and
+ Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements').exists().not() and
+ Measure.extension.where(url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists().not() %}
+ Dependencies
+
+ {% for artifact in Measure.relatedArtifact.where(type = 'depends-on') %}
+ - {{artifact.display}}
+ {% endfor %}
+
+ {% endif %}
+ {% if Measure.relatedArtifact.where(type = 'composed-of').exists() %}
+ Components
+
+ {% for artifact in Measure.relatedArtifact.where(type = 'composed-of') %}
+ - {{artifact.resource}}
+ {% endfor %}
+
+ {% endif %}
+ {% if Measure.relatedArtifact.where(type = 'derived-from').exists() %}
+ Derived From
+
+ {% for artifact in Measure.relatedArtifact.where(type = 'derived-from') %}
+ - {{artifact.resource}}
+ {% endfor %}
+
+ {% endif %}
+ {% if Measure.relatedArtifact.where(type = 'successor').exists() %}
+ Successor
+
+ {% for artifact in Measure.relatedArtifact.where(type = 'successor') %}
+ - {{artifact.resource}}
+ {% endfor %}
+
+ {% endif %}
+ {% if Measure.relatedArtifact.where(type = 'predecessor').exists() %}
+ Predecessor
+
+ {% for artifact in Measure.relatedArtifact.where(type = 'predecessor') %}
+ - {{artifact.resource}}
+ {% endfor %}
+
+ {% endif %}
+ |
+
+ {% endif %}
+
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements').exists() or
+ Measure.extension.where(url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists() %}
+ {% for contained in Measure.contained.where(id.contains('effective-data-requirements')) %}
+
+ | Terminology and Other Dependencies: |
+
+ {% for relatedArtifact in contained.relatedArtifact.where(type = 'depends-on') %}
+ {{relatedArtifact.resource}}
+ {% endfor %}
+ |
+
+
+ | Parameters: |
+
+
+
+ | name |
+ use |
+ min |
+ max |
+ type |
+
+ {% for parameter in contained.parameter %}
+
+ | {{parameter.name}} |
+ {{parameter.use}} |
+ {{parameter.min}} |
+ {{parameter.max}} |
+ {{parameter.type}} |
+
+ {% endfor %}
+
+ |
+
+
+
+ | DataRequirements: |
+
+
+
+ | Resource Type |
+ Resource Elements |
+ Valueset Name |
+ Valueset |
+
+ {% for dataRequirement in contained.dataRequirement %}
+
+ | {{dataRequirement.type}}{% if dataRequirement.profile.exists() %}({{dataRequirement.profile.first()}}){% endif %} |
+
+ {% for mustSupport in dataRequirement.mustSupport %}
+ {{mustSupport}}
+ {% endfor %}
+ |
+
+ {% for relatedArtifact in contained.relatedArtifact.where(resource = dataRequirement.codeFilter.first().valueSet) %}
+ {% if relatedArtifact.display.startsWith('Value set ') %}
+ {{relatedArtifact.display.substring(9).replace(' &', ',')}}
+ {% else %}
+ {{relatedArtifact.display.replace(' &', ',')}}
+ {% endif %}
+ {% endfor %}
+ |
+ {{dataRequirement.codeFilter.first().valueSet}} |
+
+ {% endfor %}
+
+ |
+
+
+ {% if contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode').exists() %}
+
+ | Direct Reference Codes: |
+
+
+
+ | display |
+ code |
+ system |
+
+ {% for extension in contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode') %}
+
+ | {{extension.value.display}} |
+ {{extension.value.code}} |
+ {{extension.value.system}} |
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+
+ {% if contained.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode').exists() %}
+
+ | Direct Reference Codes: |
+
+
+
+ | display |
+ code |
+ system |
+
+ {% for extension in contained.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode') %}
+
+ | {{extension.value.display}} |
+ {{extension.value.code}} |
+ {{extension.value.system}} |
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+
+ {% if contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition').exists() or
+ contained.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition').exists() %}
+
+ | Logic Definitions: |
+
+ {% if Measure.group.exists() %}
+
+
+ | Group |
+ Scoring |
+ Population Criteria |
+ Expression |
+
+
+ {% for group in Measure.group %}
+ | {{group.id}} |
+
+ {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoring').exists() %}
+ Group scoring:
+ {% for extension in group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoring') %}
+ {{extension.value.coding.code}}
+ {% endfor %}
+ {% endif %}
+
+ {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit').exists() %}
+ |
+ | Scoring unit: |
+
+ {% for scoringUnit in group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit') %}
+ {% if scoringUnit.coding.exists() %}
+ {% for coding in scoringUnit.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system != 'http://unitsofmeasure.org', '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if scoringUnit.coding.exists().not() and scoringUnit.text.exists() %}
+ {% endif %}
+ {% endfor %}
+ |
+
+ {% endif %}
+
+ {% if Measure.scoring.exists() %}
+ Measure scoring:
+ {% for coding in Measure.scoring.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}}
+
+ {% endfor %}
+ {% endif %}
+
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit').exists() %}
+
+ | Scoring unit: |
+
+ {% for scoringUnit in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit') %}
+ {% if scoringUnit.coding.exists() %}
+ {% for coding in scoringUnit.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system != 'http://unitsofmeasure.org', '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if scoringUnit.coding.exists().not() and scoringUnit.text.exists() %}
+ {% endif %}
+ {% endfor %}
+ |
+
+ {% endif %}
+
+ {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-type').exists() %}
+
+ {% for extension in group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-type') %}
+ | Type: |
+
+ {% if extension.value.coding.exists() %}
+ {% for coding in extension.value.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system != 'http://terminology.hl7.org/CodeSystem/measure-type', '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if extension.value.coding.exists().not() and extension.text.exists() %}
+ {{extension.text}}
+ {% endif %}
+ |
+ {% endfor %}
+
+ {% endif %}
+
+ {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-riskAdjustment').exists() %}
+
+ | Risk Adjustment: |
+ {{group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-riskAdjustment').value}} |
+
+ {% endif %}
+
+ {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-rateAggregation').exists() %}
+
+ | Rate Aggregation: |
+ {{group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-rateAggregation').value}} |
+
+ {% endif %}
+
+ {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-improvementNotation').exists() %}
+
+ | Improvement Notation: |
+
+ {% for extension in group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-improvementNotation') %}
+ {% if extension.value.coding.exists() %}
+ {% for coding in extension.value.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}} {{iif(coding.system != 'http://terminology.hl7.org/CodeSystem/measure-improvement-notation', '(' + coding.system + ')', '')}}
+
+ {% endfor %}
+ {% endif %}
+ {% if extension.value.coding.exists().not() and extension.text.exists() %}
+ {{extension.text}}
+ {% endif %}
+ {% endfor %}
+ |
+
+ {% endif %}
+
+ {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-appliesTo').exists() %}
+
+ | Applies To: |
+ {{group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-appliesTo').value}} |
+
+ {% endif %}
+
+
+ {% for population in group.population %}
+
+ |
+ |
+ {{population.code.first().coding.first().display}} |
+
+ {% if population.criteria.expression %}
+ {{(Measure.contained.where(id.contains('effective-data-requirements')).extension.where((url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition') and extension.where(url = 'name' and value = population.criteria.expression)).extension.where(url = 'statement').value)}}
+ {% else %}
+ None
+ {% endif %}
+ |
+
+ {% endfor %}
+ {% for stratifier in group.stratifier %}
+
+ |
+ |
+ {{stratifier.code.first().coding.first().display}} |
+
+ {% if stratifier.criteria.expression %}
+ {{(Measure.contained.where(id.contains('effective-data-requirements')).extension.where((url = 'http://http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition') and extension.where(url = 'name' and value = stratifier.criteria.expression)).extension.where(url = 'statement').value)}}
+ {% else %}
+ None
+ {% endif %}
+ |
+
+ {% endfor %}
+ {% endfor %}
+
+
+ {% endif %}
+
+
+ {% for extension in contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition') %}
+
+ | Library Name |
+ Name |
+
+
+ {% for lNameExtension in extension.extension.where(url = 'libraryName') %}
+ | {{lNameExtension.value}} |
+ {% endfor %}
+ {% for nameExtension in extension.extension.where(url = 'name') %}
+ {{nameExtension.value}} |
+ {% endfor %}
+
+
+ {% for statementExtension in extension.extension.where(url = 'statement') %}
+ |
+
+ {{statementExtension.value}}
+ |
+ {% endfor %}
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+ {% endfor %}
+ {% else %}
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-dataRequirement').exists() %}
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-parameter').exists() %}
+
+ | Parameters: |
+
+
+ | name | use | min | max | type |
+ {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-parameter') %}
+
+ | {{extension.value.name}} |
+ {{extension.value.use}} |
+ {{extension.value.min}} |
+ {{extension.value.max}} |
+ {{extension.value.type}} |
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-dataRequirement').exists() %}
+
+ | Data Requirements: |
+
+
+ | type | path | valueSet or system | code |
+ {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-dataRequirement') %}
+
+ | {{extension.value.type}} |
+ {{extension.value.codeFilter.first().path}} |
+ {% if extension.value.codeFilter.first().valueSet.exists() %}
+ {{extension.value.codeFilter.first().valueSet}} |
+ |
+ {% endif %}
+ {% if extension.value.codeFilter.first().code.exists() %}
+ {{extension.value.codeFilter.first().code.first().system}} |
+ {{extension.value.codeFilter.first().code.first().code}} |
+ {% endif %}
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode').exists() %}
+
+ | Direct Reference Codes: |
+
+
+ | display | code | system |
+ {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode') %}
+
+ | {{extension.value.display}} |
+ {{extension.value.code}} |
+ {{extension.value.system}} |
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+ {% if Measure.group.exists() %}
+
+ | Populations: |
+
+
+ | Group | Population | Description |
+ {% for group in Measure.group %}
+
+ | {{group.id}} |
+ {% for population in group.population %}
+
+ |
+ {{population.code.first().coding.first().display}} |
+
+ {% if population.description %}
+ {{(population.description)}}
+ {% endif %}
+ |
+
+ {% endfor %}
+ {% for stratifier in group.stratifier %}
+
+ |
+ {{stratifier.code.first().coding.first().display}} |
+
+ {% if stratifier.description %}
+ {{(stratifier.description)}}
+ {% endif %}
+ |
+
+ {% endfor %}
+
+ {% endfor %}
+
+ |
+
+ {% endif %}
+ {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition').exists() %}
+
+ | Logic Definitions: |
+
+ {% if Measure.group.exists() %}
+
+
+ | Group | Scoring | Population Criteria | Expression |
+
+
+ {% for group in Measure.group %}
+ | {{group.id}} |
+
+ {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoring').exists() %}
+ Group scoring:
+ {% for extension in group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoring') %}
+ {{extension.value.coding.code}}
+ {% endfor %}
+ {% endif %}
+ {% if Measure.scoring.exists() %}
+ Measure scoring:
+ {% for coding in Measure.scoring.coding %}
+
+ {{iif(coding.display.exists(), coding.display, coding.code)}}
+
+ {% endfor %}
+ {% endif %}
+ |
+ {% for population in group.population %}
+
+ | Should be empty |
+ |
+ |
+ {{population.code.first().coding.first().display}} |
+
+ {% if population.criteria.expression %}
+ {{(Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' and extension.where(url = 'name' and value = population.criteria.expression)).extension.where(url = 'statement').value)}}
+ {% else %}
+ None
+ {% endif %}
+ |
+
+ {% endfor %}
+ {% for stratifier in group.stratifier %}
+
+ | Should be empty |
+ |
+ |
+ {{stratifier.code.first().coding.first().display}} |
+
+ {% if stratifier.criteria.expression %}
+ {{(Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' and extension.where(url = 'name' and value = stratifier.criteria.expression)).extension.where(url = 'statement').value)}}
+ {% else %}
+ None
+ {% endif %}
+ |
+
+ {% endfor %}
+ {% endfor %}
+
+
+ {% endif %}
+ {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition') %}
+
+ | Library Name | Name |
+
+ {% for lNameExtension in extension.extension.where(url = 'libraryName') %}
+ | {{lNameExtension.value}} |
+ {% endfor %}
+ {% for nameExtension in extension.extension.where(url = 'name') %}
+ {{nameExtension.value}} |
+ {% endfor %}
+
+
+ {% for statementExtension in extension.extension.where(url = 'statement') %}
+ {{statementExtension.value}}
+ {% endfor %}
+
+ {% endfor %}
+ |
+
+ {% endif %}
+ {% endif %}
+ {% endif %}
+
+
+
\ No newline at end of file
diff --git a/templates/liquid/PlanDefinition.liquid b/templates/liquid/PlanDefinition.liquid
new file mode 100644
index 00000000000..165b6ea81bd
--- /dev/null
+++ b/templates/liquid/PlanDefinition.liquid
@@ -0,0 +1,6 @@
+{%include narrative-start.html %}
+{%include plandefinition-metadata.html plandefinition=PlanDefinition %}
+{%include plandefinition-actions.html plandefinition=PlanDefinition %}
+{%include plandefinition-logic.html plandefinition=PlanDefinition %}
+{%include version.html %}
+{%include narrative-end.html %}
\ No newline at end of file
diff --git a/templates/liquid/activitydefinition-logic.html b/templates/liquid/activitydefinition-logic.html
new file mode 100644
index 00000000000..c783c809e8f
--- /dev/null
+++ b/templates/liquid/activitydefinition-logic.html
@@ -0,0 +1,20 @@
+{% if include.activitydefinition.library.exists() %}
+{%include section-header.html header='ActivityDefinition Logic' %}
+{%include default.html header='Primary Library' content=include.activitydefinition.library %}
+{% endif %}
+
+{%include default.html header='Resource Kind' content=include.activitydefinition.kind %}
+{%include default.html header='Resource Profile' content=include.activitydefinition.profile %}
+{%include default.html header='Code' content=include.activitydefinition.code %}
+{%include default.html header='Intent' content=include.activitydefinition.intent %}
+{%include default.html header='Priority' content=include.activitydefinition.priority %}
+{%include default.html header='Timing' content=include.activitydefinition.timing %}
+{%include default.html header='Product' content=include.activitydefinition.product %}
+{%include default.html header='Quantity' content=include.activitydefinition.quantity %}
+{%include default-list.html header='Dosage' content=include.activitydefinition.dosage %}
+{%include default-list.html header='Body Site' content=include.activitydefinition.bodySite %}
+{%include default-list.html header='Specimen Requirement' content=include.activitydefinition.specimenRequirement %}
+{%include default-list.html header='Observation Requirement' content=include.activitydefinition.observationRequirement %}
+{%include default-list.html header='Observation Result Requirement' content=include.activitydefinition.observationResultRequirement %}
+{%include default.html header='Transform' content=include.activitydefinition.transform %}
+{%include dynamicvalue-noref.html dynamicvalue=include.activitydefinition.dynamicValue %}
\ No newline at end of file
diff --git a/templates/liquid/activitydefinition-metadata.html b/templates/liquid/activitydefinition-metadata.html
new file mode 100644
index 00000000000..226a526bd12
--- /dev/null
+++ b/templates/liquid/activitydefinition-metadata.html
@@ -0,0 +1 @@
+{%include knowledge-artifact-metadata.html resource=include.activitydefinition %}
diff --git a/templates/liquid/contactdetail-list.html b/templates/liquid/contactdetail-list.html
new file mode 100644
index 00000000000..f24fc33a566
--- /dev/null
+++ b/templates/liquid/contactdetail-list.html
@@ -0,0 +1,3 @@
+{% for contactdetail in include.contactdetails %}
+{%include contactdetail.html header=include.header contactdetail=contactdetail %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/contactdetail.html b/templates/liquid/contactdetail.html
new file mode 100644
index 00000000000..1510cd1eb01
--- /dev/null
+++ b/templates/liquid/contactdetail.html
@@ -0,0 +1 @@
+{%include default.html header=include.header content=include.contactdetail.name %}
\ No newline at end of file
diff --git a/templates/liquid/datarequirement.html b/templates/liquid/datarequirement.html
new file mode 100644
index 00000000000..b9fe613cf7d
--- /dev/null
+++ b/templates/liquid/datarequirement.html
@@ -0,0 +1,50 @@
+{% for dataRequirement in include.dataRequirement.distinct() %}
+
+
+
+ Type: {{dataRequirement.type}}
+
+ {% if dataRequirement.profile.exists() %}
+ Profile(s):
+ {% for profile in dataRequirement.profile %}
+ {{profile}}
+
+ {% endfor %}
+ {% endif %}
+ {% if dataRequirement.mustSupport.exists() %}
+ Must Support Elements: {{dataRequirement.mustSupport.join(', ')}}
+
+ {% endif %}
+ {% if dataRequirement.codeFilter.exists() %}
+ Code Filter(s):
+
+ {% for codeFilter in dataRequirement.codeFilter %}
+ {% if codeFilter.path.exists() %}
+ Path: {{codeFilter.path}}
+
+ {% endif %}
+ {% if codeFilter.searchParam.exists() %}
+ Search Parameter: {{codeFilter.searchParam}}
+
+ {% endif %}
+ {% if codeFilter.valueSet.exists() %}
+ ValueSet: {{codeFilter.valueSet}}
+
+ {% endif %}
+ {% if codeFilter.code.exists() %}
+ Code(s):
+ {% for code in codeFilter.code %}
+ {% if code.code != codeFilter.code.last().code %}
+ {{code}},
+ {% else %}
+ {{code}}
+ {% endif %}
+ {% endfor %}
+
+
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ |
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/default-list.html b/templates/liquid/default-list.html
new file mode 100644
index 00000000000..e0c30ae707e
--- /dev/null
+++ b/templates/liquid/default-list.html
@@ -0,0 +1,3 @@
+{% for item in include.content %}
+{%include row-new.html header=include.header content=item %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/default.html b/templates/liquid/default.html
new file mode 100644
index 00000000000..0222ce65745
--- /dev/null
+++ b/templates/liquid/default.html
@@ -0,0 +1,3 @@
+{% if include.content.exists() %}
+{%include row-new.html header=include.header content=include.content %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/direct-reference-code.html b/templates/liquid/direct-reference-code.html
new file mode 100644
index 00000000000..4c6a0005dce
--- /dev/null
+++ b/templates/liquid/direct-reference-code.html
@@ -0,0 +1,14 @@
+{% for directReferenceCode in include.contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode') %}
+
+
+
+ {% if directReferenceCode.value.display.exists() %}
+ Display: {{directReferenceCode.value.display}}
+
+ {% endif %}
+ Code: {{directReferenceCode.value.code}}
+
+ System: {{directReferenceCode.value.system.toString()}}
+ |
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/dynamicvalue-noref.html b/templates/liquid/dynamicvalue-noref.html
new file mode 100644
index 00000000000..e4f4019f1e6
--- /dev/null
+++ b/templates/liquid/dynamicvalue-noref.html
@@ -0,0 +1,14 @@
+{% for dynamicvalue in include.dynamicvalue %}
+
+
+
+ {% if dynamicvalue.path.exists() %}
+ Path: {{dynamicvalue.path}}
+ {% endif %}
+ {% if dynamicvalue.expression.exists() and dynamicvalue.path.exists() %}
+
+ Expression: {{dynamicvalue.expression.expression}}
+ {% endif %}
+ |
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/dynamicvalue.html b/templates/liquid/dynamicvalue.html
new file mode 100644
index 00000000000..9ebe801fcf9
--- /dev/null
+++ b/templates/liquid/dynamicvalue.html
@@ -0,0 +1,21 @@
+{% for dynamicvalue in include.dynamicvalue %}
+
+
+
+ {% if dynamicvalue.path.exists() %}
+ Path: {{dynamicvalue.path}}
+ {% endif %}
+ {% if dynamicvalue.expression.exists() and dynamicvalue.path.exists() %}
+ {% if dynamicvalue.path.exists() %}
+
+ {% endif %}
+
+ {% if dynamicvalue.expression.language.startsWith('text/cql') %}
+ {% assign logicDefAnchor = '#' + include.library.first().replaceMatches('.*/Library/', '').lower().replace(' ', '-')
+ + '-' + dynamicvalue.expression.expression.lower().replace(' ', '-') %}
+ Logic Definition: {{dynamicvalue.expression.expression}}
+ {% endif %}
+ {% endif %}
+ |
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/knowledge-artifact-capability.html b/templates/liquid/knowledge-artifact-capability.html
new file mode 100644
index 00000000000..afdf23a7b4a
--- /dev/null
+++ b/templates/liquid/knowledge-artifact-capability.html
@@ -0,0 +1,12 @@
+{% for cqfKnowledgeCap in include.resource.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability') %}
+ {%include default.html header='Knowledge Capability' content=cqfKnowledgeCap.value %}
+{% endfor %}
+{% for cpgKnowledgeCap in include.resource.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability') %}
+ {%include default.html header='Knowledge Capability' content=cpgKnowledgeCap.value %}
+{% endfor %}
+{% for cpgKnowledgeRepLevel in include.resource.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeRepresentationLevel') %}
+ {%include default.html header='Knowledge Representation Level' content=cpgKnowledgeRepLevel.value %}
+{% endfor %}
+{% for cqfKnowledgeRepLevel in include.resource.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-knowledgeRepresentationLevel') %}
+ {%include default.html header='Knowledge Representation Level' content=cqfKnowledgeRepLevel.value %}
+{% endfor %}
diff --git a/templates/liquid/knowledge-artifact-comment.html b/templates/liquid/knowledge-artifact-comment.html
new file mode 100644
index 00000000000..d627dc27c03
--- /dev/null
+++ b/templates/liquid/knowledge-artifact-comment.html
@@ -0,0 +1,10 @@
+{% for cqfmComment in include.resource.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-artifactComment') %}
+ {% if cqfmComment.extension.where(url = 'text').exists() %}
+ {%include default.html header='Comment' content=cqfmComment.extension.where(url = 'text').value %}
+ {% endif %}
+{% endfor %}
+{% for cqfComment in include.resource.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-artifactComment') %}
+ {% if cqfComment.extension.where(url = 'text').exists() %}
+ {%include default.html header='Comment' content=cqfComment.extension.where(url = 'text').value %}
+ {% endif %}
+{% endfor %}
diff --git a/templates/liquid/knowledge-artifact-guidance.html b/templates/liquid/knowledge-artifact-guidance.html
new file mode 100644
index 00000000000..e5dba4cb388
--- /dev/null
+++ b/templates/liquid/knowledge-artifact-guidance.html
@@ -0,0 +1,7 @@
+{%include related-artifact.html relatedArtifact=include.resource.relatedArtifact %}
+{%include knowledge-artifact-comment.html include.resource=include.resource %}
+{% for definitionTerm in include.resource.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-definitionTerm') %}
+ {%assign termvalue = definitionTerm.extension.where(url = 'term').value + ': ' + definitionTerm.extension.where(url = 'definition').value %}
+ {%include default.html header='Definition' content=termvalue %}
+{% endfor %}
+{%include default.html header='Guidance (Usage)' content=include.resource.usage %}
\ No newline at end of file
diff --git a/templates/liquid/knowledge-artifact-identifier.html b/templates/liquid/knowledge-artifact-identifier.html
new file mode 100644
index 00000000000..278aea3254d
--- /dev/null
+++ b/templates/liquid/knowledge-artifact-identifier.html
@@ -0,0 +1,28 @@
+{% for identifier in include.resource.identifier.where(type.coding.where(code = 'short-name').exists()) %}
+ {%include default.html header='Short Name' content=identifier.value %}
+{% endfor %}
+{% for identifier in include.resource.identifier.where(type.coding.where(code = 'version-independent').exists()) %}
+ {%include default.html header='GUID (Version Independent)' content=identifier.value %}
+{% endfor %}
+{% for identifier in include.resource.identifier.where(type.coding.where(code = 'version-specific').exists()) %}
+ {%include default.html header='GUID (Version Specific)' content=identifier.value %}
+{% endfor %}
+{% for identifier in include.resource.identifier.where(type.coding.where(code = 'publisher').exists()) %}
+ {% if identifier.assigner.display.exists() %}
+ {%assign pheader = identifier.assigner.display.value + ' Identifier' %}
+ {%include default.html header=pheader content=identifier.value %}
+ {% else %}
+ {%include default.html header='Publisher Identifier' content=identifier.value %}
+ {% endif %}
+{% endfor %}
+{% for identifier in include.resource.identifier.where(type.coding.where(code = 'endorser').exists()) %}
+ {% if identifier.assigner.display.exists() %}
+ {%assign pheader = identifier.assigner.display.value + ' Identifier' %}
+ {%include default.html header=pheader content=identifier.value %}
+ {% else %}
+ {%include default.html header='Endorser Identifier' content=identifier.value %}
+ {% endif %}
+{% endfor %}
+{% for identifier in include.resource.identifier.where(type.exists().not() or type.coding.where(code != 'short-name' and code != 'version-independent' and code != 'version-specific' and code != 'publisher' and code != 'endorser').exists()) %}
+ {%include default.html header='Identifier' content=identifier.value %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/knowledge-artifact-metadata.html b/templates/liquid/knowledge-artifact-metadata.html
new file mode 100644
index 00000000000..76b1569d9eb
--- /dev/null
+++ b/templates/liquid/knowledge-artifact-metadata.html
@@ -0,0 +1,31 @@
+{%include section-header.html header='Metadata' %}
+{%include default.html header='Title' content=include.resource.title %}
+{%include default.html header='Subtitle' content=include.resource.subtitle %}
+{%include default.html header='Version' content=include.resource.version %}
+{%include knowledge-artifact-identifier.html resource=include.resource %}
+{%include period.html header='Effective Period' period=include.resource.effectivePeriod %}
+{%include default.html header='Approval Date' content=include.resource.approvalDate %}
+{%include default.html header='Last Review Date' content=include.resource.lastReviewDate %}
+{% if include.resource.status != 'active' %}
+{%include default.html header='Status' content=include.resource.status %}
+{% endif %}
+{% if include.resource.experimental = true %}
+{%include default.html header='Experimental' content=include.resource.experimental %}
+{% endif %}
+{%include default.html header='Subject Type' content=include.resource.subject %}
+{%include default-list.html header='Use Context' content=include.resource.useContext %}
+{%include default-list.html header='Jurisdiction' content=include.resource.jurisdiction %}
+{%include default-list.html header='Topic' content=include.resource.topic %}
+{%include knowledge-artifact-capability.html include.resource=include.resource %}
+{%include default.html header='Steward (Publisher)' content=include.resource.publisher %}
+{%include contactdetail-list.html header='Steward Contact' contactdetails=include.resource.contact %}
+{%include contactdetail-list.html header='Developer' contactdetails=include.resource.author %}
+{%include contactdetail-list.html header='Editor' contactdetails=include.resource.editor %}
+{%include contactdetail-list.html header='Reviewer' contactdetails=include.resource.reviewer %}
+{%include contactdetail-list.html header='Endorsed By' contactdetails=include.resource.endorser %}
+{%include default.html header='Description' content=include.resource.description %}
+{% if include.resource.purpose.exists() and include.resource.purpose != 'UNKNOWN' %}
+{%include default.html header='Purpose' content=include.resource.purpose %}
+{% endif %}
+{%include default.html header='Copyright' content=include.resource.copyright %}
+{%include default.html header='Disclaimer' content=include.resource.disclaimer %}
diff --git a/templates/liquid/library-content.html b/templates/liquid/library-content.html
new file mode 100644
index 00000000000..174f1eb8179
--- /dev/null
+++ b/templates/liquid/library-content.html
@@ -0,0 +1,31 @@
+{% if include.library.content.exists() %}
+ {%include section-header.html header='Library Content' %}
+ {% for content in Library.content %}
+ {% if content.contentType = 'text/cql' %}
+
+
+
+ {{content.data.decode('base64')}}
+ |
+
+ {% endif %}
+ {% if content.contentType = 'application/elm+xml' %}
+
+
+
+ {{'Encoded data (' + content.data.length().toString() + ' characters)'}}
+ |
+
+ {% endif %}
+ {% if content.contentType = 'application/elm+json' %}
+
+
+
+ {{'Encoded data (' + content.data.length().toString() + ' characters)'}}
+ |
+
+ {% endif %}
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/library-metadata.html b/templates/liquid/library-metadata.html
new file mode 100644
index 00000000000..a20270506b3
--- /dev/null
+++ b/templates/liquid/library-metadata.html
@@ -0,0 +1,4 @@
+{%include knowledge-artifact-metadata.html resource=include.library %}
+{%include default.html header='Type' content=include.library.type %}
+{%include parameter.html header='Parameter' parameter=include.library.parameter %}
+{%include datarequirement.html header='Data Requirement' dataRequirement=include.library.dataRequirement %}
\ No newline at end of file
diff --git a/templates/liquid/logic-definition-primary.html b/templates/liquid/logic-definition-primary.html
new file mode 100644
index 00000000000..fb0f43d0da9
--- /dev/null
+++ b/templates/liquid/logic-definition-primary.html
@@ -0,0 +1,20 @@
+
+
+
+
+{% for statementExtension in include.extension.extension.where(url = 'statement') %}
+
+ {{statementExtension.value}}
+ |
+{% endfor %}
+
diff --git a/templates/liquid/logic-definition.html b/templates/liquid/logic-definition.html
new file mode 100644
index 00000000000..8b3b120ac27
--- /dev/null
+++ b/templates/liquid/logic-definition.html
@@ -0,0 +1,19 @@
+
+
+{% for lNameExtension in include.extension.extension.where(url = 'libraryName') %}
+ | Library Name: {{lNameExtension.value}} |
+{% endfor %}
+
+
+{% for statementExtension in include.extension.extension.where(url = 'statement') %}
+
+ {{statementExtension.value}}
+ |
+{% endfor %}
+
diff --git a/templates/liquid/logic-definitions-by-library.html b/templates/liquid/logic-definitions-by-library.html
new file mode 100644
index 00000000000..89b0b17617f
--- /dev/null
+++ b/templates/liquid/logic-definitions-by-library.html
@@ -0,0 +1,3 @@
+{% for libraryName in include.contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition').extension.where(url = 'libraryName').value.distinct() %}
+{%include logic-definitions.html header=include.header contained=include.contained library=libraryName %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/logic-definitions.html b/templates/liquid/logic-definitions.html
new file mode 100644
index 00000000000..67f88bdd7eb
--- /dev/null
+++ b/templates/liquid/logic-definitions.html
@@ -0,0 +1,9 @@
+{% for extension in include.contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition') %}
+{% if include.library.exists() %}
+{% if extension.extension.where(url = 'libraryName').value = include.library %}
+{%include logic-definition.html extension=extension %}
+{%endif %}
+{% else %}
+{%include logic-definition.html extension=extension %}
+{% endif %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/measure-group-definitions.html b/templates/liquid/measure-group-definitions.html
new file mode 100644
index 00000000000..8c18e40a40d
--- /dev/null
+++ b/templates/liquid/measure-group-definitions.html
@@ -0,0 +1,12 @@
+{% for group in include.measure.group %}
+ {% if group.id.exists() %}
+ {%assign groupid = 'Measure Group (Rate)' + ' (ID: ' + group.id + ')' %}
+ {%include section-header.html header=groupid %}
+ {% else %}
+ {%include section-header.html header='Measure Group (Rate)' %}
+ {% endif %}
+ {% for contained in include.measure.contained.where(id.contains('effective-data-requirements')) %}
+ {%include measure-group-population-definitions.html group=group contained=contained %}
+ {%include measure-group-stratifier-definitions.html group=group contained=contained %}
+ {% endfor %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/measure-group-population-definitions.html b/templates/liquid/measure-group-population-definitions.html
new file mode 100644
index 00000000000..2bab5f7b2c4
--- /dev/null
+++ b/templates/liquid/measure-group-population-definitions.html
@@ -0,0 +1,48 @@
+{% for population in include.group.population %}
+ {% if population.code.exists() and population.code.coding.exists() %}
+ {% if population.criteria.exists() %}
+ {% if population.criteria.language.startsWith('text/cql') %}
+ {% for extension in include.contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition') %}
+ {% if extension.extension.where(url = 'name').value = population.criteria.expression %}
+ {% if population.code.coding.first().display.exists() %}
+ {% assign aheader = population.code.coding.first().display %}
+ {% else %}
+ {% if population.code.coding.where(code = 'initial-population') or population.code.coding.where(code = 'numerator') or population.code.coding.where(code = 'numerator-exclusion') or population.code.coding.where(code = 'denominator') or population.code.coding.where(code = 'denominator-exclusion') or population.code.coding.where(code = 'denominator-exception') or population.code.coding.where(code = 'measure-population') or population.code.coding.where(code = 'measure-population-exclusion') or population.code.coding.where(code = 'measure-observation') %}
+ {% if population.code.coding.where(code = 'initial-population') %}
+ {% assign aheader = 'Initial Population' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'numerator') %}
+ {% assign aheader = 'Numerator' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'numerator-exclusion') %}
+ {% assign aheader = 'Numerator Exclusion' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'denominator') %}
+ {% assign aheader = 'Denominator' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'denominator-exclusion') %}
+ {% assign aheader = 'Denominator Exclusion' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'denominator-exception') %}
+ {% assign aheader = 'Denominator Exception' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'measure-population') %}
+ {% assign aheader = 'Measure Population' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'measure-population-exclusion') %}
+ {% assign aheader = 'Measure Population Exclusion' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'measure-observation') %}
+ {% assign aheader = 'Measure Observation' %}
+ {% endif %}
+ {% else %}
+ {% assign aheader = 'Unknown Population Type' %}
+ {% endif %}
+ {% endif %}
+ {%include logic-definition-primary.html extension=extension header=aheader %}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/measure-group-population.html b/templates/liquid/measure-group-population.html
new file mode 100644
index 00000000000..3652297eb20
--- /dev/null
+++ b/templates/liquid/measure-group-population.html
@@ -0,0 +1,63 @@
+{% for population in include.group.population %}
+ {% if population.code.exists() and population.code.coding.exists() %}
+
+ {% if population.code.coding.first().display.exists() %}
+ {%include row-header.html header=population.code.coding.first().display %}
+ {% else %}
+ {% if population.code.coding.where(code = 'initial-population') or population.code.coding.where(code = 'numerator') or population.code.coding.where(code = 'numerator-exclusion') or population.code.coding.where(code = 'denominator') or population.code.coding.where(code = 'denominator-exclusion') or population.code.coding.where(code = 'denominator-exception') or population.code.coding.where(code = 'measure-population') or population.code.coding.where(code = 'measure-population-exclusion') or population.code.coding.where(code = 'measure-observation') %}
+ {% if population.code.coding.where(code = 'initial-population') %}
+ {%include row-header.html header='Initial Population' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'numerator') %}
+ {%include row-header.html header='Numerator' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'numerator-exclusion') %}
+ {%include row-header.html header='Numerator Exclusion' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'denominator') %}
+ {%include row-header.html header='Denominator' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'denominator-exclusion') %}
+ {%include row-header.html header='Denominator Exclusion' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'denominator-exception') %}
+ {%include row-header.html header='Denominator Exception' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'measure-population') %}
+ {%include row-header.html header='Measure Population' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'measure-population-exclusion') %}
+ {%include row-header.html header='Measure Population Exclusion' %}
+ {% endif %}
+ {% if population.code.coding.where(code = 'measure-observation') %}
+ {%include row-header.html header='Measure Observation' %}
+ {% endif %}
+ {% else %}
+ {%include row-header.html header='Unknown Population Type' %}
+ {% endif %}
+ {% endif %}
+
+ {% if population.id.exists() %}
+ ID: {{population.id}}
+
+ {% endif %}
+ {% if population.description.exists() %}
+ Description:
+ {{population.description}}
+ {% else %}
+ Description: No description provided
+ {% endif %}
+ {% if population.criteria.exists() %}
+ {% if population.criteria.language.startsWith('text/cql') and population.criteria.expression.exists() %}
+ {% if include.library.exists() and include.contained.where(id.contains('effective-data-requirements')).exists() %}
+ {% assign logicDefAnchor = '#primary-' + include.library.first().replaceMatches('.*/Library/', '').lower().replace(' ', '-') + '-' + population.criteria.expression.lower().replace(' ', '-') %}
+ Logic Definition: {{population.criteria.expression}}
+ {% else %}
+ Logic Definition: {{population.criteria.expression}}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+ |
+
+ {% endif %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/measure-group-scoring.html b/templates/liquid/measure-group-scoring.html
new file mode 100644
index 00000000000..d25c5412bf7
--- /dev/null
+++ b/templates/liquid/measure-group-scoring.html
@@ -0,0 +1,26 @@
+{% for populationBasis in include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-populationBasis' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-populationBasis') %}
+ {%include default.html header='Basis' content=populationBasis.value %}
+{% endfor %}
+{% for scoring in include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoring' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-scoring') %}
+ {%include default.html header='Scoring' content=scoring.value %}
+{% endfor %}
+{% for scoringUnit in include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-scoringUnit') %}
+ {%include default.html header='Scoring Unit' content=scoringUnit.value %}
+{% endfor %}
+{% for scoringPrecision in include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringPrecision' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-scoringPrecision') %}
+ {%include default.html header='Scoring Precision' content=scoringPrecision.value %}
+{% endfor %}
+{% for compositeScoring in include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-compositeScoring' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-compositeScoring') %}
+ {%include default.html header='Composite Scoring' content=compositeScoring.value %}
+{% endfor %}
+{%include related-artifact.html relatedArtifact=include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-component' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-component').value %}
+{%include default-list.html header='Type' content=include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-type' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-type').value %}
+{% for riskAdjustment in include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-riskAdjustment' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-riskAdjustment') %}
+ {%include default.html header='Risk Adjustment' content=riskAdjustment.value %}
+{% endfor %}
+{% for rateAggregation in include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-rateAggregation' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-rateAggregation') %}
+ {%include default.html header='Rate Aggregation' content=rateAggregation.value %}
+{% endfor %}
+{% for improvementNotation in include.group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-improvementNotation' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-improvementNotation') %}
+ {%include default.html header='Improvement Notation' content=improvementNotation.value %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/measure-group-stratifier-definitions.html b/templates/liquid/measure-group-stratifier-definitions.html
new file mode 100644
index 00000000000..d6b6f8ee487
--- /dev/null
+++ b/templates/liquid/measure-group-stratifier-definitions.html
@@ -0,0 +1,11 @@
+{% for stratifier in include.group.stratifier %}
+ {% if stratifier.criteria.exists() %}
+ {% if stratifier.criteria.language.startsWith('text/cql') %}
+ {% for extension in include.contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition') %}
+ {% if extension.extension.where(url = 'name').value = stratifier.criteria.expression %}
+ {%include logic-definition-primary.html extension=extension header='Stratifier' %}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ {% endif %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/measure-group-stratifier.html b/templates/liquid/measure-group-stratifier.html
new file mode 100644
index 00000000000..93140cc96a9
--- /dev/null
+++ b/templates/liquid/measure-group-stratifier.html
@@ -0,0 +1,26 @@
+{% for stratifier in include.group.stratifier %}
+
+ {%include row-header.html header='Stratifier' %}
+
+ {% if stratifier.id.exists() %}
+ ID: {{stratifier.id}}
+ {% if stratifier.code.exists() or stratifier.description.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if stratifier.code.exists() %}
+ {% if stratifier.code.coding.first().display.exists() %}
+ Code: {{stratifier.code.coding.first().display}}
+ {% else %}
+ Code: {{stratifier.code}}
+ {% endif %}
+ {% if stratifier.description.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if stratifier.description.exists() %}
+ Description: {{stratifier.description}}
+ {% endif %}
+ |
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/measure-group.html b/templates/liquid/measure-group.html
new file mode 100644
index 00000000000..d414bff264f
--- /dev/null
+++ b/templates/liquid/measure-group.html
@@ -0,0 +1,14 @@
+{% for group in include.measure.group %}
+ {% if group.id.exists() %}
+ {%assign groupid = 'Measure Group (Rate)' + ' (ID: ' + group.id + ')' %}
+ {%include section-header.html header=groupid %}
+ {% else %}
+ {%include section-header.html header='Measure Group (Rate)' %}
+ {% endif %}
+ {% if group.description.exists() %}
+ {%include default.html header='Summary' content=group.description %}
+ {% endif %}
+ {%include measure-group-scoring.html group=group %}
+ {%include measure-group-population.html group=group library=include.measure.library %}
+ {%include measure-group-stratifier.html group=group %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/measure-logic-datarequirements.html b/templates/liquid/measure-logic-datarequirements.html
new file mode 100644
index 00000000000..99520cfcef5
--- /dev/null
+++ b/templates/liquid/measure-logic-datarequirements.html
@@ -0,0 +1,10 @@
+{% if include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements' or url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists() %}
+ {%include section-header.html header='Data Requirements' link='data-requirements' %}
+ {% for contained in include.measure.contained.where(id.contains('effective-data-requirements')) %}
+ {% if contained.dataRequirement.exists() %}
+ {%include datarequirement.html header='Data Requirement' dataRequirement=contained.dataRequirement %}
+ {% else %}
+ {%include default.html header='Data Requirement' content='None' %}
+ {% endif %}
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/measure-logic-definitions.html b/templates/liquid/measure-logic-definitions.html
new file mode 100644
index 00000000000..4534f4da3f6
--- /dev/null
+++ b/templates/liquid/measure-logic-definitions.html
@@ -0,0 +1,10 @@
+{% if include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements' or url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists() %}
+ {%include section-header.html header='Logic Definitions' link='definitions' %}
+ {% for contained in include.measure.contained.where(id.contains('effective-data-requirements')) %}
+ {% if contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition').exists() %}
+ {%include logic-definitions-by-library.html header='Logic Definition' contained=contained %}
+ {% else %}
+ {%include default.html header='Logic Definition' content='None' %}
+ {% endif %}
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/measure-logic-dependencies.html b/templates/liquid/measure-logic-dependencies.html
new file mode 100644
index 00000000000..0309dcd763c
--- /dev/null
+++ b/templates/liquid/measure-logic-dependencies.html
@@ -0,0 +1,10 @@
+{% if include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements' or url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists() %}
+ {%include section-header.html header='Dependencies' link='dependencies' %}
+ {% for contained in include.measure.contained.where(id.contains('effective-data-requirements')) %}
+ {% if contained.relatedArtifact.where(type = 'depends-on' and ((display.lower().contains('value') or resource.lower().contains('value')) or (display.lower().contains('code') or resource.lower().contains('code'))).not()).exists() %}
+ {%include related-artifact-dependency.html relatedArtifact=contained.relatedArtifact %}
+ {% else %}
+ {%include default.html header='Dependency' content='None' %}
+ {% endif %}
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/measure-logic-populationcriteria.html b/templates/liquid/measure-logic-populationcriteria.html
new file mode 100644
index 00000000000..d0358e64271
--- /dev/null
+++ b/templates/liquid/measure-logic-populationcriteria.html
@@ -0,0 +1,10 @@
+{% if include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements' or url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists() %}
+ {%include section-header.html header='Population Criteria' link='population-criteria' %}
+ {% for contained in include.measure.contained.where(id.contains('effective-data-requirements')) %}
+ {% if contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition').exists() %}
+ {%include measure-group-definitions.html measure=include.measure contained=contained %}
+ {% else %}
+ {%include default.html header='Criteria' content='None' %}
+ {% endif %}
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/measure-logic-terminology.html b/templates/liquid/measure-logic-terminology.html
new file mode 100644
index 00000000000..f8afa8d7f5d
--- /dev/null
+++ b/templates/liquid/measure-logic-terminology.html
@@ -0,0 +1,11 @@
+{% if include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements' or url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists() %}
+ {%include section-header.html header='Terminology' link='terminology' %}
+ {% for contained in include.measure.contained.where(id.contains('effective-data-requirements')) %}
+ {% if contained.relatedArtifact.where(type = 'depends-on' and ((display.lower().contains('value') or resource.lower().contains('value')) or (display.lower().contains('code') or resource.lower().contains('code')))).exists() or contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode').exists() %}
+ {%include related-artifact-terminology.html relatedArtifact=contained.relatedArtifact %}
+ {%include direct-reference-code.html contained=contained %}
+ {% else %}
+ {%include default.html header='Terminology' content='None' %}
+ {% endif %}
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/measure-logic.html b/templates/liquid/measure-logic.html
new file mode 100644
index 00000000000..33fd49c37ba
--- /dev/null
+++ b/templates/liquid/measure-logic.html
@@ -0,0 +1,22 @@
+{% if include.measure.library.exists() %}
+{%include section-header.html header='Measure Logic' %}
+{%include default.html header='Primary Library' content=include.measure.library %}
+{% endif %}
+
+{% if include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements' or url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists() %}
+
+
+
+ Population Criteria
+
+ Logic Definitions
+
+ Terminology
+
+ Dependencies
+
+ Data Requirements
+
+ |
+
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/measure-metadata.html b/templates/liquid/measure-metadata.html
new file mode 100644
index 00000000000..ca276e0bf6d
--- /dev/null
+++ b/templates/liquid/measure-metadata.html
@@ -0,0 +1,19 @@
+{%include knowledge-artifact-metadata.html resource=include.measure %}
+{% for populationBasis in include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-populationBasis' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-populationBasis') %}
+ {%include default.html header='Measure Basis' content=populationBasis.value %}
+{% endfor %}
+{%include default.html header='Measure Scoring' content=include.measure.scoring %}
+{% for scoringUnit in include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-scoringUnit') %}
+ {%include default.html header='Measure Scoring Unit' content=scoringUnit.value %}
+{% endfor %}
+{% for scoringPrecision in include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringPrecision' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-scoringPrecision') %}
+ {%include default.html header='Measure Scoring Precision' content=scoringPrecision.value %}
+{% endfor %}
+{%include default.html header='Measure Composite Scoring' content=include.measure.compositeScoring %}
+{%include default-list.html header='Measure Type' content=include.measure.type %}
+{%include default.html header='Risk Adjustment' content=include.measure.riskAdjustment %}
+{%include default.html header='Rate Aggregation' content=include.measure.rateAggregation %}
+{%include default.html header='Rationale' content=include.measure.rationale %}
+{%include default.html header='Clinical Recommendation Statement' content=include.measure.clinicalRecommendationStatement %}
+{%include default.html header='Improvement Notation' content=include.measure.improvementNotation %}
+{%include knowledge-artifact-guidance.html resource=include.measure %}
diff --git a/templates/liquid/measure-supplementaldata.html b/templates/liquid/measure-supplementaldata.html
new file mode 100644
index 00000000000..3fcd8aece9d
--- /dev/null
+++ b/templates/liquid/measure-supplementaldata.html
@@ -0,0 +1,47 @@
+{% for supplementalDataGuidance in include.measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-supplementalDataGuidance' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-supplementalDataGuidance') %}
+ {% if supplementalDataGuidance.extension.where(url = 'guidance').exists() %}
+ {%include default.html header='Supplemental Data Guidance' content=supplementalDataGuidance.extension.where(url = 'guidance').value %}
+ {% endif %}
+{% endfor %}
+{% if include.measure.supplementalData.exists() %}
+ {%include section-header.html header='Supplemental Data Elements' %}
+{% endif %}
+{% for sde in include.measure.supplementalData %}
+
+ {%include row-header.html header='Supplemental Data Element' %}
+
+ {% if sde.id.exists() %}
+ ID: {{sde.id}}
+ {% if sde.usage.exists() or sde.description.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if sde.usage.exists() %}
+ {% for usage in sde.usage %}
+ {% if usage.coding.first().display.exists() %}
+ Usage Code: {{usage.coding.first().display}}
+ {% else %}
+ Usage Code: {{usage}}
+ {% endif %}
+
+ {% endfor %}
+ {% endif %}
+ {% if sde.description.exists() %}
+ Description: {{sde.description}}
+ {% else %}
+ Description: No description provided
+ {% endif %}
+ {% if sde.criteria.exists() %}
+ {% if sde.criteria.language.startsWith('text/cql') and sde.criteria.expression.exists() %}
+
+ {% if include.measure.library.exists() and include.measure.contained.where(id.contains('effective-data-requirements')).exists() %}
+ {% assign logicDefAnchor = '#' + include.measure.library.first().replaceMatches('.*/Library/', '').lower().replace(' ', '-') + '-' + sde.criteria.expression.lower().replace(' ', '-') %}
+ Logic Definition: {{sde.criteria.expression}}
+ {% else %}
+ Logic Definition: {{sde.criteria.expression}}
+ {% endif %}
+ {% endif %}
+ {% endif %}
+ |
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/narrative-end.html b/templates/liquid/narrative-end.html
new file mode 100644
index 00000000000..173b6e02894
--- /dev/null
+++ b/templates/liquid/narrative-end.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/templates/liquid/narrative-start.html b/templates/liquid/narrative-start.html
new file mode 100644
index 00000000000..851e8583964
--- /dev/null
+++ b/templates/liquid/narrative-start.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/templates/liquid/parameter.html b/templates/liquid/parameter.html
new file mode 100644
index 00000000000..f9d77cedb64
--- /dev/null
+++ b/templates/liquid/parameter.html
@@ -0,0 +1,34 @@
+{% for parameter in include.parameter.distinct() %}
+
+ {%include row-header.html header=include.header %}
+
+ {% if parameter.name.exists() %}
+ Name: {{parameter.name}}
+ {% endif %}
+ {% if parameter.use.exists() or parameter.min.exists() or parameter.max.exists() or parameter.type.exists() %}
+
+ {% endif %}
+ {% if parameter.use.exists() %}
+ Use: {{parameter.use}}
+ {% endif %}
+ {% if parameter.min.exists() or parameter.max.exists() or parameter.type.exists() %}
+
+ {% endif %}
+ {% if parameter.min.exists() %}
+ Min Cardinality: {{parameter.min}}
+ {% endif %}
+ {% if parameter.max.exists() or parameter.type.exists() %}
+
+ {% endif %}
+ {% if parameter.max.exists() %}
+ Max Cardinality: {{parameter.max}}
+ {% endif %}
+ {% if parameter.type.exists() %}
+
+ {% endif %}
+ {% if parameter.type.exists() %}
+ Type: {{parameter.type}}
+ {% endif %}
+ |
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/period.html b/templates/liquid/period.html
new file mode 100644
index 00000000000..606f280981f
--- /dev/null
+++ b/templates/liquid/period.html
@@ -0,0 +1,12 @@
+{% if include.period.exists() %}
+ {% if include.period.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectivePeriodAnchor' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-effectivePeriodAnchor').exists()
+ and include.period.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectivePeriodDuration' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-effectivePeriodDuration').exists() %}
+ {%assign anchor = include.period.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectivePeriodAnchor' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-effectivePeriodAnchor').value %}
+ {%assign duration = include.period.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectivePeriodDuration' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-effectivePeriodDuration').value %}
+ {%assign pcontent = anchor.toString() + (anchor + duration).toString() %}
+ {%include default.html header=include.header content=pcontent %}
+ {% else %}
+ {%assign period = include.period.start.toString() + ' through ' + include.period.end.toString() %}
+ {%include default.html header=include.header content=period %}
+ {% endif %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/plandefinition-action-extensions.html b/templates/liquid/plandefinition-action-extensions.html
new file mode 100644
index 00000000000..0e0e5233839
--- /dev/null
+++ b/templates/liquid/plandefinition-action-extensions.html
@@ -0,0 +1,6 @@
+{% if include.action.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-strengthOfRecommendation').exists() %}
+ {%include default.html header='Strength of Recommendation' content=include.action.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-strengthOfRecommendation').value %}
+{% endif %}
+{% if include.action.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-qualityOfEvidence').exists() %}
+ {%include default.html header='Quality of Evidence' content=include.action.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-qualityOfEvidence').value %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/plandefinition-action.html b/templates/liquid/plandefinition-action.html
new file mode 100644
index 00000000000..71fa8dcf345
--- /dev/null
+++ b/templates/liquid/plandefinition-action.html
@@ -0,0 +1,52 @@
+{% if include.action.id.exists() or include.action.title.exists() or
+include.action.description.exists() or include.action.textEquivalent.exists() or
+include.action.priority.exists() or include.action.code.exists() or
+include.action.reason.exists() or include.action.documentation.exists() or
+include.action.subject.exists() or include.action.trigger.exists() or
+include.action.condition.exists() or include.action.input.exists() or
+include.action.output.exists() or include.action.relatedAction.exists() or
+include.action.timing.exists() or include.action.groupingBehavior.exists() or
+include.action.selectionBehavior.exists() or include.action.requiredBehavior.exists() or
+include.action.precheckBehavior.exists() or include.action.cardinalityBehavior.exists() or
+include.action.definition.exists() or include.action.transform.exists() or
+include.action.dynamicValue.exists() %}
+{%include section-header.html header=include.header %}
+{%include default.html header='Id' content=include.action.id %}
+{%include plandefinition-action-extensions.html action=include.action %}
+{%include default.html header='Title' content=include.action.title %}
+{%include default.html header='Description' content=include.action.description %}
+{%include default.html header='Human-interpretable Description' content=include.action.textEquivalent %}
+{%include default.html header='Priority' content=include.action.priority %}
+{%include default-list.html header='Code' content=include.action.code %}
+{%include default-list.html header='Reason' content=include.action.reason %}
+{%include related-artifact.html content=include.action.documentation %}
+{%include default.html header='Subject' content=include.action.subject %}
+{%include plandefinition-trigger.html trigger=include.action.trigger %}
+{%include plandefinition-condition.html condition=include.action.condition library=include.library %}
+{%include datarequirement.html header='Input Data Requirement' dataRequirement=include.action.input %}
+{%include datarequirement.html header='Output Data Requirement' dataRequirement=include.action.output %}
+{%include default.html header='Timing' content=include.action.timing %}
+{%include default.html header='Type' content=include.action.type %}
+{%include default.html header='Grouping Behavior' content=include.action.groupingBehavior %}
+{%include default.html header='Selection Behavior' content=include.action.selectionBehavior %}
+{%include default.html header='Required Behavior' content=include.action.requiredBehavior %}
+{%include default.html header='Pre-check Behavior' content=include.action.precheckBehavior %}
+{%include default.html header='Cardinality Behavior' content=include.action.cardinalityBehavior %}
+{%include default.html header='Definition' content=include.action.definition %}
+{%include default.html header='Transform' content=include.action.transform %}
+{%include dynamicvalue.html dynamicvalue=include.action.dynamicValue library=include.library %}
+{% endif %}
+{% if include.action.action.exists() %}
+ {% for subaction in include.action.action %}
+ {% if include.action.id.exists() %}
+ {%assign containingactionid = 'PlanDefinition Sub-Action' + ' (Parent Action ID: ' + include.action.id + ')' %}
+ {%include plandefinition-action.html header=containingactionid action=subaction library=include.library %}
+ {% endif %}
+ {% if include.action.id.exists().not() and include.action.title.exists() %}
+ {%assign containingactiontitle = 'PlanDefinition Sub-Action' + ' (Parent Action Title: ' + include.action.title + ')' %}
+ {%include plandefinition-action.html header=containingactiontitle action=subaction library=include.library %}
+ {% else %}
+ {%include plandefinition-action.html header='PlanDefinition Sub-Action' action=subaction library=include.library %}
+ {% endif %}
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/plandefinition-actions.html b/templates/liquid/plandefinition-actions.html
new file mode 100644
index 00000000000..87019e2a6fb
--- /dev/null
+++ b/templates/liquid/plandefinition-actions.html
@@ -0,0 +1,3 @@
+{% for action in include.plandefinition.action %}
+{%include plandefinition-action.html header='PlanDefinition Action' action=action library=include.plandefinition.library %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/plandefinition-condition.html b/templates/liquid/plandefinition-condition.html
new file mode 100644
index 00000000000..18a1e8498f8
--- /dev/null
+++ b/templates/liquid/plandefinition-condition.html
@@ -0,0 +1,15 @@
+{% for condition in include.condition %}
+
+
+
+ Kind: {{condition.kind}}
+ {% if condition.expression.exists() %}
+
+ {% if condition.expression.expression.exists() and condition.expression.language.startsWith('text/cql') %}
+ {% assign logicDefAnchor = '#' + include.library.first().replaceMatches('.*/Library/', '').lower().replace(' ', '-') + '-' + condition.expression.expression.lower().replace(' ', '-') %}
+ Logic Definition: {{condition.expression.expression}}
+ {% endif %}
+ {% endif %}
+ |
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/plandefinition-logic.html b/templates/liquid/plandefinition-logic.html
new file mode 100644
index 00000000000..147ddae479d
--- /dev/null
+++ b/templates/liquid/plandefinition-logic.html
@@ -0,0 +1,24 @@
+{% if include.plandefinition.library.exists() %}
+{%include section-header.html header='PlanDefinition Logic' %}
+{%include default.html header='Primary Library' content=include.plandefinition.library %}
+{% endif %}
+
+{% if include.plandefinition.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements' or url = 'http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements').exists() %}
+ {% for contained in include.plandefinition.contained.where(id.contains('effective-data-requirements')) %}
+ {%include related-artifact.html relatedArtifact=contained.relatedArtifact %}
+ {%include direct-reference-code.html contained=contained %}
+ {% if contained.parameter.exists() %}
+ {%include parameter.html header='Parameter' parameter=contained.parameter %}
+ {% endif %}
+ {% if contained.dataRequirement.exists() %}
+
+
+
+ {% endif %}
+ {%include datarequirement.html header='Data Requirement' dataRequirement=contained.dataRequirement %}
+ {% if contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition' or url = 'http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition').exists() %}
+ {%include section-header.html header='PlanDefinition Logic Definitions' %}
+ {% endif %}
+ {%include logic-definition.html header='Data Requirement' contained=contained %}
+ {% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/plandefinition-metadata.html b/templates/liquid/plandefinition-metadata.html
new file mode 100644
index 00000000000..dafa5227218
--- /dev/null
+++ b/templates/liquid/plandefinition-metadata.html
@@ -0,0 +1,2 @@
+{%include knowledge-artifact-metadata.html resource=include.plandefinition %}
+{%include default.html header='Type' content=include.plandefinition.type %}
diff --git a/templates/liquid/plandefinition-trigger.html b/templates/liquid/plandefinition-trigger.html
new file mode 100644
index 00000000000..8353cc2ec59
--- /dev/null
+++ b/templates/liquid/plandefinition-trigger.html
@@ -0,0 +1,4 @@
+{% for trigger in include.trigger %}
+{%include default.html header='Trigger Type' content=trigger.type %}
+{%include default.html header='Trigger Name' content=trigger.name %}
+{% endfor %}
\ No newline at end of file
diff --git a/templates/liquid/related-artifact-dependency.html b/templates/liquid/related-artifact-dependency.html
new file mode 100644
index 00000000000..151b4c401be
--- /dev/null
+++ b/templates/liquid/related-artifact-dependency.html
@@ -0,0 +1,38 @@
+{% if include.relatedArtifact.exists() %}
+{% for relatedArtifact in include.relatedArtifact %}
+{% if relatedArtifact.type = 'depends-on' and ((relatedArtifact.display.lower().contains('value') or relatedArtifact.resource.lower().contains('value')) or (relatedArtifact.display.lower().contains('code') or relatedArtifact.resource.lower().contains('code'))).not() %}
+
+ {%include row-header.html header='Dependency' %}
+
+ {% if relatedArtifact.display.exists() %}
+ Description: {{relatedArtifact.display}}
+ {% if relatedArtifact.citation.exists() or relatedArtifact.url.exists() or relatedArtifact.document.exists() or
+ relatedArtifact.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.citation.exists() %}
+ Citation: {{relatedArtifact.citation}}
+ {% endif %}
+ {% if relatedArtifact.url.exists() %}
+ Content URL: {{relatedArtifact.url}}
+ {% if relatedArtifact.document.exists() or relatedArtifact.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.document.exists() %}
+ Document: {{relatedArtifact.document}}
+ {% if relatedArtifact.citation.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.resource.exists() %}
+ Resource: {{relatedArtifact.resource}}
+
+ Canonical URL: {{relatedArtifact.resource.toString()}}
+ {% endif %}
+ |
+
+{% endif %}
+{% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/related-artifact-terminology.html b/templates/liquid/related-artifact-terminology.html
new file mode 100644
index 00000000000..f96dc45946d
--- /dev/null
+++ b/templates/liquid/related-artifact-terminology.html
@@ -0,0 +1,43 @@
+{% if include.relatedArtifact.exists() %}
+{% for relatedArtifact in include.relatedArtifact %}
+{% if relatedArtifact.type = 'depends-on' and (relatedArtifact.display.lower().contains('value') or relatedArtifact.resource.lower().contains('value')) or (relatedArtifact.display.lower().contains('code') or relatedArtifact.resource.lower().contains('code')) %}
+
+ {% if relatedArtifact.display.lower().contains('value') or relatedArtifact.resource.lower().contains('value') %}
+ {%include row-header.html header='Value Set' %}
+ {% endif %}
+ {% if relatedArtifact.display.lower().contains('code') or relatedArtifact.resource.lower().contains('code') %}
+ {%include row-header.html header='Code System' %}
+ {% endif %}
+
+ {% if relatedArtifact.display.exists() %}
+ Description: {{relatedArtifact.display}}
+ {% if relatedArtifact.citation.exists() or relatedArtifact.url.exists() or relatedArtifact.document.exists() or
+ relatedArtifact.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.citation.exists() %}
+ Citation: {{relatedArtifact.citation}}
+ {% endif %}
+ {% if relatedArtifact.url.exists() %}
+ Content URL: {{relatedArtifact.url}}
+ {% if relatedArtifact.document.exists() or relatedArtifact.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.document.exists() %}
+ Document: {{relatedArtifact.document}}
+ {% if relatedArtifact.citation.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.resource.exists() %}
+ Resource: {{relatedArtifact.resource}}
+
+ Canonical URL: {{relatedArtifact.resource.toString()}}
+ {% endif %}
+ |
+
+{% endif %}
+{% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/related-artifact.html b/templates/liquid/related-artifact.html
new file mode 100644
index 00000000000..7f78c2afe2f
--- /dev/null
+++ b/templates/liquid/related-artifact.html
@@ -0,0 +1,57 @@
+{% if include.relatedArtifact.exists() %}
+{% for relatedArtifact in include.relatedArtifact %}
+
+ {% if relatedArtifact.where(type = 'documentation').exists() %}
+ {%include row-header.html header='Documentation' %}
+ {% endif %}
+ {% if relatedArtifact.where(type = 'justification').exists() %}
+ {%include row-header.html header='Justification' %}
+ {% endif %}
+ {% if relatedArtifact.where(type = 'citation').exists() %}
+ {%include row-header.html header='Citation' %}
+ {% endif %}
+ {% if relatedArtifact.where(type = 'depends-on').exists() %}
+ {%include row-header.html header='Dependency' %}
+ {% endif %}
+
+ {% if relatedArtifact.display.exists() %}
+ Description: {{relatedArtifact.display}}
+ {% if relatedArtifact.citation.exists() or relatedArtifact.url.exists() or relatedArtifact.document.exists() or
+ relatedArtifact.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.citation.exists() %}
+ {% if relatedArtifact.type = 'citation' %}
+ {{relatedArtifact.citation}}
+ {% else %}
+ Citation: {{relatedArtifact.citation}}
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.url.exists() %}
+ Content URL: {{relatedArtifact.url}}
+ {% if relatedArtifact.document.exists() or relatedArtifact.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.document.exists() %}
+ Document: {{relatedArtifact.document}}
+ {% if relatedArtifact.citation.resource.exists() %}
+
+ {% endif %}
+ {% endif %}
+ {% if relatedArtifact.resource.exists() %}
+ Resource: {{relatedArtifact.resource}}
+
+ Canonical URL: {{relatedArtifact.resource.toString()}}
+ {% endif %}
+ {% for group in extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-groupId' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-groupId') %}
+ Group Id: {{group.value}}
+ {% endfor %}
+ {% for weight in extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-weight' or url = 'http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-weight') %}
+ Weight: {{weight.value}}
+ {% endfor %}
+ |
+
+{% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/row-content.html b/templates/liquid/row-content.html
new file mode 100644
index 00000000000..d12db8a3164
--- /dev/null
+++ b/templates/liquid/row-content.html
@@ -0,0 +1 @@
+{{include.content}} |
\ No newline at end of file
diff --git a/templates/liquid/row-end.html b/templates/liquid/row-end.html
new file mode 100644
index 00000000000..943be33ff87
--- /dev/null
+++ b/templates/liquid/row-end.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/templates/liquid/row-header.html b/templates/liquid/row-header.html
new file mode 100644
index 00000000000..d580ba0f3d4
--- /dev/null
+++ b/templates/liquid/row-header.html
@@ -0,0 +1,13 @@
+{% if include.colspan.exists() %}
+{% if include.link.exists() %}
+
+{% else %}
+
+{% endif %}
+{% else %}
+{% if include.link.exists() %}
+
+{% else %}
+
+{% endif %}
+{% endif %}
\ No newline at end of file
diff --git a/templates/liquid/row-new.html b/templates/liquid/row-new.html
new file mode 100644
index 00000000000..00f5535a926
--- /dev/null
+++ b/templates/liquid/row-new.html
@@ -0,0 +1,4 @@
+{%include row-start.html %}
+{%include row-header.html header=include.header %}
+{%include row-content.html content=include.content %}
+{%include row-end.html %}
\ No newline at end of file
diff --git a/templates/liquid/row-start.html b/templates/liquid/row-start.html
new file mode 100644
index 00000000000..6e37a639f0b
--- /dev/null
+++ b/templates/liquid/row-start.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/templates/liquid/section-header.html b/templates/liquid/section-header.html
new file mode 100644
index 00000000000..e9192aab5e2
--- /dev/null
+++ b/templates/liquid/section-header.html
@@ -0,0 +1,3 @@
+{%include row-start.html %}
+{%include row-header.html colspan='2' header=include.header link=include.link %}
+{%include row-end.html %}
\ No newline at end of file
diff --git a/templates/liquid/type-primitive.html b/templates/liquid/type-primitive.html
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/templates/liquid/version.html b/templates/liquid/version.html
new file mode 100644
index 00000000000..e20858f35e2
--- /dev/null
+++ b/templates/liquid/version.html
@@ -0,0 +1,3 @@
+
+
+