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() %} + + + + + {% endif %} + + {% if Measure.subtitle.exists() %} + + + + + {% endif %} + + {% if Measure.id.exists() %} + + + + + {% endif %} + + {% if Measure.version.exists() %} + + + + + {% endif %} + + {% if Measure.url.exists() %} + + + + + {% endif %} + + {% for identifier in Measure.identifier %} + + + + + + {% endfor %} + + {% if Measure.effectivePeriod.exists() %} + + + + + {% endif %} + + {% if Measure.status.exists() and Measure.status.value != 'active' %} + + + + + {% endif %} + + {% if Measure.experimental.exists() and Measure.experimental.value = 'true' %} + + + + + {% endif %} + + {% if Measure.publisher.exists() %} + + + + + {% endif %} + + {% if Measure.author.exists() and Measure.author.name.exists() %} + + + + + {% endif %} + + {% if Measure.endorser.exists() and Measure.endorser.name.exists() %} + + + + + {% endif %} + + {% if Measure.description.exists() %} + + + + + {% endif %} + + {% if Measure.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability').exists() %} + + + + + {% endif %} + + {% if Measure.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeRepresentationLevel').exists() %} + + + + + {% endif %} + + {% if Measure.useContext.exists() %} + + + + + {% endif %} + + {% if Measure.jurisdiction.exists() %} + + + + + {% endif %} + + {% if Measure.topic.exists() %} + + + + + {% endif %} + + {% if Measure.purpose.exists() %} + + + + + {% endif %} + + {% if Measure.copyright.exists() %} + + + + + {% endif %} + + {% if Measure.disclaimer.exists() %} + + + + + {% endif %} + + {% if Measure.subject.exists() %} + + + {% if Measure.subject is CodeableConcept %} + + {% endif %} + {% if Measure.subject is Reference %} + + {% endif %} + + {% endif %} + + {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-populationBasis').exists() %} + + + + + {% endif %} + + {% if Measure.scoring.exists() %} + + + + + {% endif %} + + {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoringUnit').exists() %} + + + + + {% endif %} + + {% if Measure.type.exists() %} + + + + + {% endif %} + + {% if Measure.riskAdjustment.exists() %} + + + + + {% endif %} + + {% if Measure.rateAggregation.exists() %} + + + + + {% endif %} + + {% if Measure.rationale.exists() %} + + + + + {% endif %} + + {% if Measure.clinicalRecommendationStatement.exists() %} + + + + + {% endif %} + + {% if Measure.improvementNotation.exists() %} + + + + + {% endif %} + + {% if Measure.usage.exists() %} + + + + + {% endif %} + + {% if Measure.group.exists() %} + {% if Measure.group[0].population.description.exists() %} + + + + + {% endif %} + {% endif %} + + {% if Measure.supplementalData.usage.coding.where(code = 'supplemental-data').exists() %} + + + + + {% endif %} + + {% if Measure.supplementalData.usage.coding.where(code = 'risk-adjustment-factor').exists() %} + + + + + {% endif %} + + {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-supplementalDataGuidance') %} + + + + + {% endfor %} + + {% if Measure.library.exists() %} + + + + + {% endif %} + + {% if Measure.relatedArtifact.exists() %} + + + + + {% 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')) %} + + + + + + + + + + + + + + + {% if contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode').exists() %} + + + + + {% endif %} + + {% if contained.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode').exists() %} + + + + + {% 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() %} + + + + + {% 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() %} + + + + + {% endif %} + {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-dataRequirement').exists() %} + + + + + {% endif %} + {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode').exists() %} + + + + + {% endif %} + {% if Measure.group.exists() %} + + + + + {% endif %} + {% if Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition').exists() %} + + + + + {% endif %} + {% endif %} + {% endif %} + +
Title: {{Measure.title}}
Subtitle: {{Measure.subtitle}}
Id: {{Measure.id}}
Version: {{Measure.version}}
Url: {{Measure.url}}
+ + {% 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 %} +
Effective Period: {{Measure.effectivePeriod.start}}..{{Measure.effectivePeriod.end}}
Status: {{Measure.status.value}}
Experimental: {{Measure.experimental.value}}
Publisher: {{Measure.publisher}}
Author: {{Measure.author.name}}
Endorser: {{Measure.endorser.name}}
Description: {{Measure.description}}
Knowledge Capability: + {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability') %}{{extension.value}} {% endfor %} +
Knowledge Representation Level: + {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeRepresentationLevel') %}{{extension.value}}{% endfor %} +
Use Context: + + + + + + {% for useContext in Measure.useContext %} + + + + + {% endfor %} +
codevalue
{{useContext.code.code}}{{useContext.value.text}}
+
Jurisdiction: {{Measure.jurisdiction.first().coding.first().code}}
Topic: {{Measure.topic.first().coding.first().code}}
Purpose: {{Measure.purpose}}
Copyright: {{Measure.copyright}}
Disclaimer: {{Measure.disclaimer}}
Subject: + {% 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 %} +
+ {% 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 %} +
Basis: + {{Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-populationBasis').first().value}} +
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 %} +
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 %} +
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 %} +
Risk Adjustment: {{Measure.riskAdjustment}}
Rate Aggregation: {{Measure.rateAggregation}}
Rationale: {{Measure.rationale}}
Clinical recommendation statement: {{Measure.clinicalRecommendationStatement}}
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 %} +
Guidance (Usage): {{Measure.usage}}
Population Criteria: + {% for group in Measure.group %} + + {% if group.id.exists() %} + + + + {% endif %} + {% for population in group.population %} + + + + {% if population.criteria.expression.exists().not() %} + + {% else %} + {% if population.description.exists() %} + + {% else %} + + {% endif %} + {% endif %} + + + {% endfor %} + {% if group.stratifier.exists() %} + Stratifier Criteria: + {% for stratifier in group.stratifier %} + + {% if stratifier.code.coding[0].display.exists() %} + + {% elsif stratifier.code.coding[0].code.exists() %} + + {% else %} + + {% endif %} + + {% if stratifier.description.exists() %} + + {% else %} + + {% endif %} + + {% endfor %} + {% endif %} +
{{group.id}}
{{population.code.coding[0].display}}:None{{population.description}}None
{{stratifier.code.coding[0].display}}:{{stratifier.code.coding[0].code}}:Stratum:{{stratifier.description}}None
+ {% endfor %} +
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 %} +
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 %} +
+ {{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}}
Libraries: + + {% for library in Measure.library %} + + + + {% endfor %} +
{{library}}
+
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 %} +
Terminology and Other Dependencies: + {% for relatedArtifact in contained.relatedArtifact.where(type = 'depends-on') %} +
  • {{relatedArtifact.resource}}
  • + {% endfor %} +
    Parameters: + + + + + + + + + {% for parameter in contained.parameter %} + + + + + + + + {% endfor %} +
    nameuseminmaxtype
    {{parameter.name}}{{parameter.use}}{{parameter.min}}{{parameter.max}}{{parameter.type}}
    +
    DataRequirements: + + + + + + + + {% for dataRequirement in contained.dataRequirement %} + + + + + + + {% endfor %} +
    Resource TypeResource ElementsValueset NameValueset
    {{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}}
    +
    Direct Reference Codes: + + + + + + + {% for extension in contained.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode') %} + + + + + + {% endfor %} +
    displaycodesystem
    {{extension.value.display}}{{extension.value.code}}{{extension.value.system}}
    +
    Direct Reference Codes: + + + + + + + {% for extension in contained.extension.where(url = 'http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode') %} + + + + + + {% endfor %} +
    displaycodesystem
    {{extension.value.display}}{{extension.value.code}}{{extension.value.system}}
    +
    Logic Definitions: + {% if Measure.group.exists() %} + + + + + + + + + {% for group in Measure.group %} + + + + + + {% 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() %} + + + + + {% 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') %} + + + {% endfor %} + + {% endif %} + + {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-riskAdjustment').exists() %} + + + + + {% endif %} + + {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-rateAggregation').exists() %} + + + + + {% endif %} + + {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-improvementNotation').exists() %} + + + + + {% endif %} + + {% if group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-appliesTo').exists() %} + + + + + {% endif %} + + + {% for population in group.population %} + + + + + {% endfor %} + {% for stratifier in group.stratifier %} + + + + + {% endfor %} + {% endfor %} + +
    GroupScoringPopulation CriteriaExpression
    {{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 %} +
    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 %} +
    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 %} +
    Risk Adjustment: {{group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-riskAdjustment').value}}
    Rate Aggregation: {{group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-rateAggregation').value}}
    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 %} +
    Applies To: {{group.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-appliesTo').value}}
    + + {{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 %} +
    + + {{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 %} +
    + {% 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') %} + + + + + + {% for lNameExtension in extension.extension.where(url = 'libraryName') %} + + {% endfor %} + {% for nameExtension in extension.extension.where(url = 'name') %} + + {% endfor %} + + + {% for statementExtension in extension.extension.where(url = 'statement') %} + + + {% endfor %} + + {% endfor %} +
    Library NameName
    {{lNameExtension.value}}{{nameExtension.value}}
    +
    {{statementExtension.value}}
    +
    +
    Parameters: + + + {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-parameter') %} + + + + + + + + {% endfor %} +
    nameuseminmaxtype
    {{extension.value.name}}{{extension.value.use}}{{extension.value.min}}{{extension.value.max}}{{extension.value.type}}
    +
    Data Requirements: + + + {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-dataRequirement') %} + + + + {% if extension.value.codeFilter.first().valueSet.exists() %} + + + {% endif %} + {% if extension.value.codeFilter.first().code.exists() %} + + + {% endif %} + + {% endfor %} +
    typepathvalueSet or systemcode
    {{extension.value.type}}{{extension.value.codeFilter.first().path}}{{extension.value.codeFilter.first().valueSet}}{{extension.value.codeFilter.first().code.first().system}}{{extension.value.codeFilter.first().code.first().code}}
    +
    Direct Reference Codes: + + + {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode') %} + + + + + + {% endfor %} +
    displaycodesystem
    {{extension.value.display}}{{extension.value.code}}{{extension.value.system}}
    +
    Populations: + + + {% for group in Measure.group %} + + + {% for population in group.population %} + + + + + {% endfor %} + {% for stratifier in group.stratifier %} + + + + + {% endfor %} + + {% endfor %} +
    GroupPopulationDescription
    {{group.id}}
    + {{population.code.first().coding.first().display}} + {% if population.description %} + {{(population.description)}} + {% endif %} +
    + {{stratifier.code.first().coding.first().display}} + {% if stratifier.description %} + {{(stratifier.description)}} + {% endif %} +
    +
    Logic Definitions: + {% if Measure.group.exists() %} + + + + + + {% for group in Measure.group %} + + + {% for population in group.population %} + + + + + + {% endfor %} + {% for stratifier in group.stratifier %} + + + + + + {% endfor %} + {% endfor %} + +
    GroupScoringPopulation CriteriaExpression
    {{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 %} +
    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 %} +
    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 %} +
    + {% endif %} + {% for extension in Measure.extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition') %} + + + + {% for lNameExtension in extension.extension.where(url = 'libraryName') %} + + {% endfor %} + {% for nameExtension in extension.extension.where(url = 'name') %} + + {% endfor %} + +
    Library NameName
    {{lNameExtension.value}}{{nameExtension.value}}
    + {% for statementExtension in extension.extension.where(url = 'statement') %} +
    {{statementExtension.value}}
    + {% endfor %} +

    + {% endfor %} +
    +
    \ 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() %} + + {{include.header}} + + 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') %} + + Direct Reference Code + + {% 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 %} + + Dynamic Value + + {% 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 %} + + Dynamic Value + + {% 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' %} + + CQL Content + +
    {{content.data.decode('base64')}}
    + + + {% endif %} + {% if content.contentType = 'application/elm+xml' %} + + ELM XML Content + +
    {{'Encoded data (' + content.data.length().toString() + ' characters)'}}
    + + + {% endif %} + {% if content.contentType = 'application/elm+json' %} + + ELM JSON Content + +
    {{'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 @@ + + + {% if include.extension.extension.where(url = 'name').exists() and include.extension.extension.where(url = 'libraryName') %} + {% assign logicDefUrl = 'primary-' + include.extension.extension.where(url = 'libraryName').value.lower().replace(' ', '-') + '-' + include.extension.extension.where(url = 'name').value.lower().replace(' ', '-') %} + + {% endif %} + {% if include.header.exists() %} + {{include.header}} + {% else %} + Logic Definition + {% endif %} + + + +{% 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 @@ + + + {% if include.extension.extension.where(url = 'name').exists() and include.extension.extension.where(url = 'libraryName') %} + {% assign logicDefUrl = include.extension.extension.where(url = 'libraryName').value.lower().replace(' ', '-') + '-' + include.extension.extension.where(url = 'name').value.lower().replace(' ', '-') %} + + {% endif %} + Logic Definition + +{% 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() %} + + Contents + + 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 %} + + +{% 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 %} + + + + +{% 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' %} + + +{% 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 %} + + +{% 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 %} + + +{% 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 @@ + \ 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 @@ + + +
    + {% 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 %} +
    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 %} +
    PlanDefinition Logic Data Requirements
    + {% 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 %} +
    + {% 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 %} +
    + {% 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 %} +
    {{include.content}}
    {{include.header}}{{include.header}} {{include.header}}{{include.header}}
    Generated using version 0.4.9-cibuild of the sample-content-ig Liquid templates