Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quality Measure IG Updates #90

Merged
merged 22 commits into from
Sep 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
e724f99
FHIR-31940 - Corrected spelling error
mholck Jun 28, 2021
6c1cfd6
FHIR-32748 - Made group cardinality 1..* for Cohort, proportion, rati…
mholck Jun 28, 2021
2da52e6
FHIR-32741 - Added and to first sentence as described in ticket
mholck Jun 28, 2021
b68abad
FHIR-32742 - Added paragraph suggested after the use cases in 10.1.1
mholck Jun 29, 2021
7987856
FHIR-32738 - Added introduction text to explain the roles and the bas…
mholck Jun 29, 2021
9318834
FHIR-31680 - Added appliesTo extension to Measure.group.stratifier wi…
mholck Jul 8, 2021
377ef34
FHIR-32334 - Created extension for defaultValue on ParameterDefinitio…
mholck Jul 12, 2021
8baabab
FHIR-32686 - Added isSelective extension to DataRequirement on module…
mholck Aug 6, 2021
d792467
FHIR-32884 - Updated test case measurereport profile spreadsheet to c…
mholck Aug 9, 2021
1f40f7f
FHIR-32372 - Added valueFilter extension for DataRequirement
mholck Aug 11, 2021
7be4c00
FHIR-32969 - Added derived-from slice to relatedArtifact and provided…
mholck Aug 16, 2021
895bbcf
FHIR-32046 - Created a new CQFMMeasureType valueset including the Obs…
mholck Aug 17, 2021
591d3d5
FHIR-32687 - Added text to explain the expansion capability in the do…
mholck Aug 19, 2021
bd00418
FHIR-32651 - Added quality programs examples to the Examples page
mholck Aug 19, 2021
3582749
FHIR-32231 - Reordered the parameters, data requirements, and logic d…
mholck Aug 20, 2021
36c8651
FHIR-33178 - Changed the CQFM Measure library to canonical(CQFMLibrary)
mholck Aug 24, 2021
c6ee0fd
FHIR-33045 - Added cqfm-populationBasis to initial population slice
mholck Aug 27, 2021
5c71508
FHIR-33016 - Documented UCOM Best Practices in the using CQL page
mholck Aug 27, 2021
7548b22
FHIR-32675 - Created profile for CapabilityStatement and added suppor…
mholck Aug 31, 2021
df9ec57
FHIR-32675 - Updated terminology page to reflect new code system and …
mholck Sep 1, 2021
298bb46
FHIR-32688 - Added guidance in the using CQL page and updated example…
mholck Sep 1, 2021
04409c3
Merge branch 'master' into master
mholck Sep 20, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions input/cqfmeasures.xml
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,11 @@
<title value="CQFM Computable Library"/>
<generation value="generated"/>
</page>
<page>
<nameUrl value="StructureDefinition-capability-statement-cqfm.html"/>
<title value="CQFM Computable Library"/>
<generation value="generated"/>
</page>
<page>
<nameUrl value="StructureDefinition-cohort-measure-cqfm.html"/>
<title value="CQFM Cohort Measure"/>
Expand Down Expand Up @@ -508,6 +513,11 @@
<title value="Measure Usage Warning Extension"/>
<generation value="generated"/>
</page>
<page>
<nameUrl value="StructureDefinition-cqfm-supportedCqlVersion.html"/>
<title value="CQL Version extension"/>
<generation value="generated"/>
</page>
</page>
<page>
<nameUrl value="terminology.html"/>
Expand Down
15 changes: 15 additions & 0 deletions input/pages/capabilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,21 @@

<div class="new-content" markdown="1">

The following sequence diagram depicts a data element submission scenario. The roles depicted are:

* Submitting System - This would be either a hospital, physician practice, or any organization that wants to submit the relevant eCQM data to a receiving system
* Knowledge Repository - This would be a FHIR server that has the eCQMs loaded and is the source of truth for those eCQMS and can provide the required data elements for each measure
* Terminology Service - This can be any valid FHIR terminology service that has the appropriate valuesets used in the eCQMs and can provide the expansion of those valuesets
* Receiving System - This would be the system that will receive all of the relevant clinical data for a given eCQM and be able to perform the evaluation of that measure

There are 5 workflows depicted using the swimlanes.

1. Setup - The setup workflow is used by the submitting system to identify what data elements are required for a given measure by calling to the Knowledge Repository to get the data requirements and then getting the appropriate valuesets for the measure from the Terminology Service
2. Attribution/Selection - This workflow determines the attribution for the measure and determines the patients that would be in the initial population that will need to be submitted to the Receiving System
3. Submission - This workflow submits the required data elements per patient for the given measure to the Receiving System. Note that this could also potentially be done using a bulk data operation rather than individual submission calls for each element
4. Evaluation (individual/group) - This workflow represents the actual evaluation of the measure by the Receiving System after it has all the required data elements for the patients and generates the measure report back to the Submitting System
5. Care Gaps - This workflow is the generation of the gaps in care document from the Receiving System back to the Submitting System based on the results of the measure evaluation

{% include img.html img="Data_Element_Submission_Scenario.png" %}

## Capability Statements
Expand Down
11 changes: 11 additions & 0 deletions input/pages/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,14 @@ Interpretation: For each Eligible Clinician (EC), percentage of patients who rec
[Preventive Care and Wellness (Component-level weighted)](Measure-PreventiveCareandWellnessWeightedComposite.html)

</div>

### Quality Programs

<div class="new-content" markdown="1">

This section provides examples of all three ways to represent a Quality Program

* [eCQM Quality Program Example](Library-ecqm-quality-program.html) an overall quality program that contains multiple version manifests and releases over time
* [eCQM Version Manifest (Expansion Profile), 2020](Library-ecqm-update-2020.html) a version manifest (or expansion profile) that is a draft of a quality program release used to provide expansion rules while the artifacts for a program are being authored
* [eCQM Release, 2020-05-07](Library-ecqm-update-2020-05-07.html) a program release that is an active instance of a quality program release used to provide stable extensions for the released artifacts in a quality program
</div>
1 change: 1 addition & 0 deletions input/pages/extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- {:.new-content} [Composite Scoring](StructureDefinition-cqfm-compositeScoring.html)
- [Criteria Reference](StructureDefinition-cqfm-criteriaReference.html)
- {:.new-content} [Data Requirement](StructureDefinition-cqfm-dataRequirement.html)
- {:.new-content} [Default Value](StructureDefinition-cqfm-defaultValue.html)
- [Definition Term](StructureDefinition-cqfm-definitionTerm.html)
- {:.new-content} [Direct Reference Code](StructureDefinition-cqfm-directReferenceCode.html)
- [Duration](StructureDefinition-cqfm-effectivePeriodDuration.html)
Expand Down
2 changes: 1 addition & 1 deletion input/pages/measure-conformance.md
Original file line number Diff line number Diff line change
Expand Up @@ -887,7 +887,7 @@ The population types for a Proportion measure are "Initial Population", "Denomin

| Population | Definition |
|:----|:----|
| Initial Population | The initial population criteria refers to all patients, subjects, or events to be evaluated by a quality measure involving patients or subjects who share a common set of specified characterstics. All patients, subjects, or events counted (for example, as numerator, as denominator) are drawn from the initial population. |
| Initial Population | The initial population criteria refers to all patients, subjects, or events to be evaluated by a quality measure involving patients or subjects who share a common set of specified characteristics. All patients, subjects, or events counted (for example, as numerator, as denominator) are drawn from the initial population. |
| Denominator | Denominator criteria define the patients, subjects, or events that should be included in the lower portion of a fraction used to calculate a rate, proportion, or ratio. The denominator can be the same as the initial population, or a subset of the initial population to further constrain the population for the purpose of the measure. |
| Denominator Exclusion | Denominator exclusion criteria define patients, subjects, or events that should be excluded from the denominator. Denominator exclusions are used in proportion and ratio measures to help narrow the denominator. For example, patients with bilateral lower extremity amputations would be listed as a denominator exclusion for a measure requiring foot exams. |
| Numerator | Numerator criteria define the patients, subjects, or events that should be included in the upper portion of a fraction used to calculate a rate, proportion, or ratio. Also called the measure focus, it is the target process, condition, event, or outcome. Numerator criteria are the processes or outcomes expected for each patient, subject, or event defined in the denominator. A numerator statement describes the clinical action that satisfies the conditions of the measure. |
Expand Down
4 changes: 3 additions & 1 deletion input/pages/measure-terminology-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<div class="new-content" markdown="1">

## Overview
This page describes documents the use cases and conformance expectations of a terminology service to support authoring, distribution, and implementation of FHIR-based quality measure specifications as described in this implementation guide.
This page describes and documents the use cases and conformance expectations of a terminology service to support authoring, distribution, and evaluation of FHIR-based quality measure specifications as described in this implementation guide.

This implementation guide is not advocating for any particular central authority for terminology content, rather the intent is to propose a capability statement that enables publishers to build consistent and interoperable terminology services that support authoring, distribution, and implementation of FHIR-based knowledge artifacts.

Expand All @@ -15,6 +15,8 @@ Beyond the basic required use cases of searching, retrieving, and expanding valu
1. Supporting the authoring of a collection of related artifacts that make use of a shared pool of value sets
2. Supporting the stable expansion of value sets referenced in a _release_ of those artifacts.

Note that during the authoring phase, the value sets referenced by artifacts will change, but once released, the set is stable. Throughout this process, the focus of the capabilities supported by this service description are intended to ensure stable expansion of the value sets referenced by the artifacts.

#### Quality Program Version Manifest (Expansion Profile)
The first use case is used while the collection of related artifacts is being authored. During this period, the set of code system versions that will be used by value sets referenced by the artifacts is selected and identified in a quality program version manifest (sometimes referred to as an "expansion profile" because it provides expansion rules for expanding value sets used by the artifacts). When authoring value sets and the artifacts that make use of them, this version manifest can be used to ensure stable expansions. Note that this definition will often evolve over the course of the development of collection of artifacts. Quality programs in this state are indicated with a status of _draft_.

Expand Down
2 changes: 2 additions & 0 deletions input/pages/profiles.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ To support packaging, testing, and distribution of measure and library artifacts

<table>
<tr><th>Profile</th><th>Description</th></tr>
<tr><td><a href="StructureDefinition-capability-statement-cqfm.html">CQFMCapabilityStatement</a></td><td>A system capability statement that can express which version of CQL is supported</td></tr>
<tr><td><a href="StructureDefinition-device-softwaresystem-cqfm.html">CQFMDevice</a></td><td>A software device used in the creation, validation, evaluation, packaging, and/or testing of a library or measure artifact.</td></tr>
<tr><td><a href="StructureDefinition-modelinfo-library-cqfm.html">CQFMModelInfoLibrary</a></td><td>A library profile used to distribute model information libraries used in quality measurement.</td></tr>
<tr><td><a href="StructureDefinition-module-definition-library-cqfm.html">CQFMModuleDefinitionLibrary</a></td><td>A library profile used to define and exchange effective data requirements and usage information for an artifact (or collection of artifacts) used in quality measurement.</td></tr>
Expand All @@ -37,6 +38,7 @@ To support packaging, testing, and distribution of measure and library artifacts

## Alphabetical Listing

- [Capability Statement](StructureDefinition-capability-statement-cqfm.html)
- [Computable Library](StructureDefinition-computable-library-cqfm.html)
- [Cohort Measure](StructureDefinition-cohort-measure-cqfm.html)
- {:.new-content} [Composite Measure](StructureDefinition-composite-measure-cqfm.html)
Expand Down
2 changes: 2 additions & 0 deletions input/pages/terminology.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

- [Aggregate Method](CodeSystem-aggregate-method.html)
- [Artifact Comment Type](CodeSystem-artifact-comment-type.html)
- {:.new-content #FHIR-32675}[CQL Version](CodeSystem-cql-version.html)
- [Quality Programs](CodeSystem-quality-programs.html)

### ValueSet Resources
Expand All @@ -15,6 +16,7 @@
- [Aggregate Method](ValueSet-aggregate-method.html)
- [Artifact Comment Type](ValueSet-artifact-comment-type.html)
- [Quality Programs](ValueSet-quality-programs.html)
- {:.new-content #FHIR-32675}[CQL Version](ValueSet-cql-version.html)

### ConceptMap Resources
{: #conceptmap-resources}
Expand Down
42 changes: 42 additions & 0 deletions input/pages/using-cql.md
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,39 @@ using "Venous foot pump, device (physical object) SNOMED CT Code (442023007)"

The representation of code declarations in a Library is discussed in [Measure Conformance Chapter](measure-conformance.html) of this IG.

### UCUM Best Practices
{: #ucum-best-practices}

<div class="new-content" markdown="1">

Although the Unified Code for Units of Measure (UCUM) is a code system, it requires specific handling for two reasons. First, it is a grammar-based code system with an effectively infinite number of codes, so membership tests must be performed computationally, rather than just by checking for existence of a code in a list; and second, because UCUM codes are so commonly used as part of quantity values, healthcare contexts typically provide direct mechanisms for using UCUM codes.

For these reasons, within quality artifacts in general, and quality measures specifically, UCUM codes should make use of the direct mechanisms wherever possible. In CQL logic, this means using the Quantity literal, rather than declaring UCUM codes as direct-reference codes as is recommended when using codes from other code systems. For example, when accessing a Body Mass Index (BMI) observation in CQL:

```html
define "BMI in Measurement Period":
[Observation: "BMI"] BMI
where BMI.status in {'final', 'amended', 'corrected'}
and BMI.effective during "Measurement Period"
and BMI.value is not null
and BMI.value.code = 'kg/m2'
```

Notice the use of the UCUM code directly, as opposed to declaring a CQL code for the unit:

```html
codesystem UCUM: 'http://unitsofmeasure.org'
code "kg/m2": 'kg/m2' from UCUM

define "BMI in Measurement Period":
[Observation: "BMI"] BMI
where BMI.status in {'final', 'amended', 'corrected'}
and BMI.effective during "Measurement Period"
and BMI.value is not null
and BMI.value.code = "kg/m2"
```
</div>

### Concepts
{: #concepts}

Expand Down Expand Up @@ -615,6 +648,15 @@ filename = <CQL library name>.cql
|Code System|`depends-on` with `url` of the CodeSystem (e.g. `http://loing.org`)|
|Value Set|`depends-on` with `url` of the ValueSet (e.g. `http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1116.89`)|

#### MIME Type version
The version of CQL/ELM content in a library should be specified using the version parameter of the text/cql and application/elm+xml, application/elm+json media types.

* `text/cql; version=1.4`
* `application/elm+xml; version=1.4`
* `application/elm+json; version=1.4`

Resource narratives for Libraries and Measures that use CQL should include the CQL version if it is specified in the MIME type as shown above.

</div>

### Use of Terminologies
Expand Down
2 changes: 1 addition & 1 deletion input/resources/Library-EXMComputableLibrary.json
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@
],
"content": [
{
"contentType": "text/cql",
"contentType": "text/cql; version=1.4",
"data": "bGlicmFyeSBFWE1Db21wdXRhYmxlTGlicmFyeSB2ZXJzaW9uICcyLjAuMCcNCg0KLyoNClRoaXMgZXhhbXBsZSBpcyBwdXJlbHkgZm9yIGlsbHVzdHJhdGlvbiBwdXJwb3NlcyB0byBzaG93IGhvdyBhbGwgdGhlIGVsZW1lbnRzIG9mIGENCkZISVItYmFzZWQgcXVhbGl0eSBtZWFzdXJlIGFyZSByZXByZXNlbnRlZC4gSXQgaXMgaW50ZW50aW9uYWxseSBzaW1wbGlmaWVkIHRvIHNob3cNCnNwZWNpZmljIGFzcGVjdHMgb2YgYSBtZWFzdXJlLCBhbmQgaXMgbm90IGludGVuZGVkIGFzIGFuIGV4YW1wbGUgb2YgYSBjbGluaWNhbGx5DQptZWFuaW5nZnVsIG1lYXN1cmUuDQoqLw0KDQovKg0KTk9URTogVGhpcyBpcyB0aGUgc2FtZSBsaWJyYXJ5IGFzIEVYTUxvZ2ljLCBiZWluZyB1c2VkIHRvIGlsbHVzdHJhdGUgdGhlIGRpZmZlcmVudCBmbGF2b3JzIG9mIHByb2ZpbGVzOg0KKiBDb21wdXRhYmxlOiBGb2N1c2luZyBvbiBjb21wdXRhYmxlL2Rlc2lnbi10aW1lIGFzcGVjdHMNCiogRXhlY3V0YWJsZTogRm9jdXNpbmcgb24gcnVuLXRpbWUgYXNwZWN0cw0KKiBQdWJsaXNoYWJsZTogRm9jdXNpbmcgb24ga25vd2xlZGdlIG1hbmFnZW1lbnQgYXNwZWN0cw0KKi8NCg0KdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScNCg0KaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzDQoNCmNvZGVzeXN0ZW0gIkRpYWdub3NpcyBSb2xlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vZGlhZ25vc2lzLXJvbGUnDQoNCnZhbHVlc2V0ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCIgOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjI5MicNCnZhbHVlc2V0ICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTknDQp2YWx1ZXNldCAiSG9zcGl0YWwgU2V0dGluZ3MiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xMjYnDQoNCnZhbHVlc2V0ICJPTkMgQWRtaW5pc3RyYXRpdmUgU2V4IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMScNCnZhbHVlc2V0ICJSYWNlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjgzNicNCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jw0KdmFsdWVzZXQgIlBheWVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjM1OTEnDQoNCmNvZGUgIkJpbGxpbmciOiAnYmlsbGluZycgZnJvbSAiRGlhZ25vc2lzIFJvbGUiIGRpc3BsYXkgJ0JpbGxpbmcnDQoNCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlVGltZT4NCg0KY29udGV4dCBQYXRpZW50DQoNCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIiA6DQogICJJbnBhdGllbnQgRW5jb3VudGVyIiBFbmNvdW50ZXINCg0KZGVmaW5lICJNZWFzdXJlIFBvcHVsYXRpb24iIDoNCiAgIkluaXRpYWwgUG9wdWxhdGlvbiINCg0KZGVmaW5lIGZ1bmN0aW9uICJNZWFzdXJlIE9ic2VydmF0aW9uIiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBkdXJhdGlvbiBpbiBtaW51dGVzIG9mICJSZWxhdGVkIEVEIFZpc2l0IihFbmNvdW50ZXIpLnBlcmlvZA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMSIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgbm90IChQcmluY2lwYWxEaWFnbm9zaXMoRW5jb3VudGVyKS5jb2RlIGluICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiKQ0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMiIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikuY29kZSBpbiAiUHN5Y2hpYXRyaWMvTWVudGFsIEhlYWx0aCBQYXRpZW50Ig0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMyIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgNCIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIklucGF0aWVudCBFbmNvdW50ZXIiIDoNCiAgWyJFbmNvdW50ZXIiXSBFbmNvdW50ZXINCiAgICB3aGVyZSBMZW5ndGhJbkRheXMoRW5jb3VudGVyLnBlcmlvZCkgPD0gMTIwDQogICAgICBhbmQgRW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIg0KDQpkZWZpbmUgZnVuY3Rpb24gIlByaW5jaXBhbERpYWdub3NpcyIoRW5jb3VudGVyIEVuY291bnRlcik6DQoJKHNpbmdsZXRvbiBmcm9tIChFbmNvdW50ZXIuZGlhZ25vc2lzIEQgd2hlcmUgRC51c2UgfiBUb0NvbmNlcHQoIkJpbGxpbmciKSBhbmQgRC5yYW5rLnZhbHVlID0gMSkpIFBEDQoJCXJldHVybiBzaW5nbGV0b24gZnJvbSAoW0NvbmRpdGlvbjogaWQgaW4gIkdldElkIihQRC5jb25kaXRpb24ucmVmZXJlbmNlKV0pDQoNCmRlZmluZSBmdW5jdGlvbiAiTGVuZ3RoSW5EYXlzIihWYWx1ZSBJbnRlcnZhbDxEYXRlVGltZT4pOg0KCWRpZmZlcmVuY2UgaW4gZGF5cyBiZXR3ZWVuIHN0YXJ0IG9mIFZhbHVlIGFuZCBlbmQgb2YgVmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uICJHZXRJZCIodXJpIFN0cmluZyk6DQoJTGFzdChTcGxpdCh1cmksICcvJykpDQoNCi8vTWVhc3VyZSBPYnNlcnZhdGlvbg0KZGVmaW5lIGZ1bmN0aW9uICJSZWxhdGVkIEVEIFZpc2l0IiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBMYXN0KFsiRW5jb3VudGVyIiA6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdIEVEDQogICAgd2hlcmUgRUQuc3RhdHVzID0gJ2ZpbmlzaGVkJw0KICAgICAgYW5kIEVELnBlcmlvZCBlbmRzIDEgaG91ciBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBFbmNvdW50ZXIucGVyaW9kDQogICAgc29ydCBieSBzdGFydCBvZiBwZXJpb2QgKQ0KDQpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOg0KICAoZmxhdHRlbiAoDQogICAgUGF0aWVudC5leHRlbnNpb24gRXh0ZW5zaW9uDQogICAgICB3aGVyZSBFeHRlbnNpb24udXJsID0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3VzLWNvcmUtZXRobmljaXR5Jw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgUGF5ZXIiOg0KICAgIFtDb3ZlcmFnZTogdHlwZSBpbiAiUGF5ZXIiXSBQYXllcg0KICAgICAgcmV0dXJuIHsNCiAgICAgICAgY29kZTogUGF5ZXIudHlwZSwNCiAgICAgICAgcGVyaW9kOiBQYXllci5wZXJpb2QNCiAgICAgIH0NCg0KZGVmaW5lICJTREUgUmFjZSI6DQogIChmbGF0dGVuICgNCiAgICBQYXRpZW50LmV4dGVuc2lvbiBFeHRlbnNpb24NCiAgICAgIHdoZXJlIEV4dGVuc2lvbi51cmwgPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1yYWNlJw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgU2V4IjoNCiAgY2FzZQ0KICAgIHdoZW4gUGF0aWVudC5nZW5kZXIgPSAnbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ00nLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ01hbGUnIH0NCiAgICB3aGVuIFBhdGllbnQuZ2VuZGVyID0gJ2ZlbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ0YnLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ0ZlbWFsZScgfQ0KICAgIGVsc2UgbnVsbA0KICBlbmQNCg=="
}
]
Expand Down
2 changes: 1 addition & 1 deletion input/resources/Library-EXMExecutableLibrary.json

Large diffs are not rendered by default.

Loading