Data Exchange For Quality Measures Implementation Guide
5.0.0 - STU5 United States of America flag

This page is part of the Da Vinci Data Exchange for Quality Measures (DEQM) FHIR IG (v5.0.0: STU5 (v5.0.0)) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version in its permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions

: Additional Supplemental Data Example - Artifact Bundle - XML Representation

Raw xml | Download


<Bundle xmlns="http://hl7.org/fhir">
  <id value="sde-example-artifact-bundle"/>
  <type value="transaction"/>
  <entry>
    <fullUrl value="urn:uuid:31244296-3e84-4e17-94b1-4159d64e41db"/>
    <resource>
      <Library>
        <id value="FHIRHelpers"/>
        <text>
          <status value="extensions"/>
          <div xmlns="http://www.w3.org/1999/xhtml"><a name="Library_FHIRHelpers"> </a>
<div>
    <table class="grid dict">
        
        
        <tr>
            <th scope="row"><b>Title: </b></th>
            <td style="padding-left: 4px;">FHIR Helpers</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">FHIRHelpers</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Version: </b></th>
            <td style="padding-left: 4px;">4.0.1</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="http://fhir.org/guides/cqf/common/4.0.1/Library-FHIRHelpers.html">http://fhir.org/guides/cqf/common/Library/FHIRHelpers</a></td>
        </tr>
        

        

        

        
        <tr>
            <th scope="row"><b>Status: </b></th>
            <td style="padding-left: 4px;">draft</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Experimental: </b></th>
            <td style="padding-left: 4px;">true</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Type: </b></th>
            <td style="padding-left: 4px;">
                
                    
                        
                        <p style="margin-bottom: 5px;">
                            <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>code: </b> <span>logic-library</span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>display: </b> <span>Logic Library</span>
                        </p>
                        
                    
                
                
            </td>
        </tr>
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        
        <tr>
            <th scope="row"><b>Related Artifacts: </b></th>
            <td style="padding-left: 4px;">
                
                
                
                <p><b>Dependencies</b></p>
                <ul>
                  
                    <li><a href="http://fhir.org/guides/cqf/common/4.0.1/4.0.1/Library-FHIR-ModelInfo.html">http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1</a></li>
                  
                </ul>
                
                
                
                
                
            </td>
        </tr>
        

        

        

        
        
        <tr>
          <td colspan="2">
            <table>
              <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
              <tr><td><pre><code class="language-cql">/*
@author: Bryn Rhodes
@description: This library defines functions to convert between FHIR
 data types and CQL system-defined types, as well as functions to support
 FHIRPath implementation. For more information, see the FHIRHelpers wiki page:
 https://github.com/cqframework/clinical_quality_language/wiki/FHIRHelpers
@allowFluent: true
*/
library FHIRHelpers version '4.0.1'

using FHIR version '4.0.1'

define function ToInterval(period FHIR.Period):
    if period is null then
        null
    else
        if period.&quot;start&quot; is null then
            Interval(period.&quot;start&quot;.value, period.&quot;end&quot;.value]
        else
            Interval[period.&quot;start&quot;.value, period.&quot;end&quot;.value]

define function ToCalendarUnit(unit System.String):
    case unit
        when 'ms' then 'millisecond'
        when 's' then 'second'
        when 'min' then 'minute'
        when 'h' then 'hour'
        when 'd' then 'day'
        when 'wk' then 'week'
        when 'mo' then 'month'
        when 'a' then 'year'
        else unit
    end

define function ToQuantity(quantity FHIR.Quantity):
    case
        when quantity is null then null
        when quantity.value is null then null
        when quantity.comparator is not null then
            Message(null, true, 'FHIRHelpers.ToQuantity.ComparatorQuantityNotSupported', 'Error', 'FHIR Quantity value has a comparator and cannot be converted to a System.Quantity value.')
        when quantity.system is null or quantity.system.value = 'http://unitsofmeasure.org'
              or quantity.system.value = 'http://hl7.org/fhirpath/CodeSystem/calendar-units' then
            System.Quantity { value: quantity.value.value, unit: ToCalendarUnit(Coalesce(quantity.code.value, quantity.unit.value, '1')) }
        else
            Message(null, true, 'FHIRHelpers.ToQuantity.InvalidFHIRQuantity', 'Error', 'Invalid FHIR Quantity code: ' &amp; quantity.unit.value &amp; ' (' &amp; quantity.system.value &amp; '|' &amp; quantity.code.value &amp; ')')
    end

define function ToQuantityIgnoringComparator(quantity FHIR.Quantity):
    case
        when quantity is null then null
        when quantity.value is null then null
        when quantity.system is null or quantity.system.value = 'http://unitsofmeasure.org'
              or quantity.system.value = 'http://hl7.org/fhirpath/CodeSystem/calendar-units' then
            System.Quantity { value: quantity.value.value, unit: ToCalendarUnit(Coalesce(quantity.code.value, quantity.unit.value, '1')) }
        else
            Message(null, true, 'FHIRHelpers.ToQuantity.InvalidFHIRQuantity', 'Error', 'Invalid FHIR Quantity code: ' &amp; quantity.unit.value &amp; ' (' &amp; quantity.system.value &amp; '|' &amp; quantity.code.value &amp; ')')
    end

define function ToInterval(quantity FHIR.Quantity):
    if quantity is null then null else
        case quantity.comparator.value
            when '&lt;' then
                Interval[
                    null,
                    ToQuantityIgnoringComparator(quantity)
                )
            when '&lt;=' then
                Interval[
                    null,
                    ToQuantityIgnoringComparator(quantity)
                ]
            when '&gt;=' then
                Interval[
                    ToQuantityIgnoringComparator(quantity),
                    null
                ]
            when '&gt;' then
                Interval(
                    ToQuantityIgnoringComparator(quantity),
                    null
                ]
            else
                Interval[ToQuantity(quantity), ToQuantity(quantity)]
        end

define function ToRatio(ratio FHIR.Ratio):
    if ratio is null then
        null
    else
        System.Ratio { numerator: ToQuantity(ratio.numerator), denominator: ToQuantity(ratio.denominator) }

define function ToInterval(range FHIR.Range):
    if range is null then
        null
    else
        Interval[ToQuantity(range.low), ToQuantity(range.high)]

define function ToCode(coding FHIR.Coding):
    if coding is null then
        null
    else
        System.Code {
          code: coding.code.value,
          system: coding.system.value,
          version: coding.version.value,
          display: coding.display.value
        }

define function ToConcept(concept FHIR.CodeableConcept):
    if concept is null then
        null
    else
        System.Concept {
            codes: concept.coding C return ToCode(C),
            display: concept.text.value
        }

define function reference(reference String):
    if reference is null then
        null
    else
        Reference { reference: string { value: reference } }

define function resolve(reference String) returns Resource: external
define function resolve(reference Reference) returns Resource: external
define function reference(resource Resource) returns Reference: external
define function extension(element Element, url String) returns List&lt;Element&gt;: external
define function extension(resource Resource, url String) returns List&lt;Element&gt;: external
define function hasValue(element Element) returns Boolean: external
define function getValue(element Element) returns Any: external
define function ofType(identifier String) returns List&lt;Any&gt;: external
define function is(identifier String) returns Boolean: external
define function as(identifier String) returns Any: external
define function elementDefinition(element Element) returns ElementDefinition: external
define function slice(element Element, url String, name String) returns List&lt;Element&gt;: external
define function checkModifiers(resource Resource) returns Resource: external
define function checkModifiers(resource Resource, modifier String) returns Resource: external
define function checkModifiers(element Element) returns Element: external
define function checkModifiers(element Element, modifier String) returns Element: external
define function conformsTo(resource Resource, structure String) returns Boolean: external
define function memberOf(code code, valueSet String) returns Boolean: external
define function memberOf(coding Coding, valueSet String) returns Boolean: external
define function memberOf(concept CodeableConcept, valueSet String) returns Boolean: external
define function subsumes(coding Coding, subsumedCoding Coding) returns Boolean: external
define function subsumes(concept CodeableConcept, subsumedConcept CodeableConcept) returns Boolean: external
define function subsumedBy(coding Coding, subsumingCoding Coding) returns Boolean: external
define function subsumedBy(concept CodeableConcept, subsumingConcept CodeableConcept) returns Boolean: external
define function htmlChecks(element Element) returns Boolean: external

define function ToString(value AccountStatus): value.value
define function ToString(value ActionCardinalityBehavior): value.value
define function ToString(value ActionConditionKind): value.value
define function ToString(value ActionGroupingBehavior): value.value
define function ToString(value ActionParticipantType): value.value
define function ToString(value ActionPrecheckBehavior): value.value
define function ToString(value ActionRelationshipType): value.value
define function ToString(value ActionRequiredBehavior): value.value
define function ToString(value ActionSelectionBehavior): value.value
define function ToString(value ActivityDefinitionKind): value.value
define function ToString(value ActivityParticipantType): value.value
define function ToString(value AddressType): value.value
define function ToString(value AddressUse): value.value
define function ToString(value AdministrativeGender): value.value
define function ToString(value AdverseEventActuality): value.value
define function ToString(value AggregationMode): value.value
define function ToString(value AllergyIntoleranceCategory): value.value
define function ToString(value AllergyIntoleranceCriticality): value.value
define function ToString(value AllergyIntoleranceSeverity): value.value
define function ToString(value AllergyIntoleranceType): value.value
define function ToString(value AppointmentStatus): value.value
define function ToString(value AssertionDirectionType): value.value
define function ToString(value AssertionOperatorType): value.value
define function ToString(value AssertionResponseTypes): value.value
define function ToString(value AuditEventAction): value.value
define function ToString(value AuditEventAgentNetworkType): value.value
define function ToString(value AuditEventOutcome): value.value
define function ToString(value BindingStrength): value.value
define function ToString(value BiologicallyDerivedProductCategory): value.value
define function ToString(value BiologicallyDerivedProductStatus): value.value
define function ToString(value BiologicallyDerivedProductStorageScale): value.value
define function ToString(value BundleType): value.value
define function ToString(value CapabilityStatementKind): value.value
define function ToString(value CarePlanActivityKind): value.value
define function ToString(value CarePlanActivityStatus): value.value
define function ToString(value CarePlanIntent): value.value
define function ToString(value CarePlanStatus): value.value
define function ToString(value CareTeamStatus): value.value
define function ToString(value CatalogEntryRelationType): value.value
define function ToString(value ChargeItemDefinitionPriceComponentType): value.value
define function ToString(value ChargeItemStatus): value.value
define function ToString(value ClaimResponseStatus): value.value
define function ToString(value ClaimStatus): value.value
define function ToString(value ClinicalImpressionStatus): value.value
define function ToString(value CodeSearchSupport): value.value
define function ToString(value CodeSystemContentMode): value.value
define function ToString(value CodeSystemHierarchyMeaning): value.value
define function ToString(value CommunicationPriority): value.value
define function ToString(value CommunicationRequestStatus): value.value
define function ToString(value CommunicationStatus): value.value
define function ToString(value CompartmentCode): value.value
define function ToString(value CompartmentType): value.value
define function ToString(value CompositionAttestationMode): value.value
define function ToString(value CompositionStatus): value.value
define function ToString(value ConceptMapEquivalence): value.value
define function ToString(value ConceptMapGroupUnmappedMode): value.value
define function ToString(value ConditionalDeleteStatus): value.value
define function ToString(value ConditionalReadStatus): value.value
define function ToString(value ConsentDataMeaning): value.value
define function ToString(value ConsentProvisionType): value.value
define function ToString(value ConsentState): value.value
define function ToString(value ConstraintSeverity): value.value
define function ToString(value ContactPointSystem): value.value
define function ToString(value ContactPointUse): value.value
define function ToString(value ContractPublicationStatus): value.value
define function ToString(value ContractStatus): value.value
define function ToString(value ContributorType): value.value
define function ToString(value CoverageStatus): value.value
define function ToString(value CurrencyCode): value.value
define function ToString(value DayOfWeek): value.value
define function ToString(value DaysOfWeek): value.value
define function ToString(value DetectedIssueSeverity): value.value
define function ToString(value DetectedIssueStatus): value.value
define function ToString(value DeviceMetricCalibrationState): value.value
define function ToString(value DeviceMetricCalibrationType): value.value
define function ToString(value DeviceMetricCategory): value.value
define function ToString(value DeviceMetricColor): value.value
define function ToString(value DeviceMetricOperationalStatus): value.value
define function ToString(value DeviceNameType): value.value
define function ToString(value DeviceRequestStatus): value.value
define function ToString(value DeviceUseStatementStatus): value.value
define function ToString(value DiagnosticReportStatus): value.value
define function ToString(value DiscriminatorType): value.value
define function ToString(value DocumentConfidentiality): value.value
define function ToString(value DocumentMode): value.value
define function ToString(value DocumentReferenceStatus): value.value
define function ToString(value DocumentRelationshipType): value.value
define function ToString(value EligibilityRequestPurpose): value.value
define function ToString(value EligibilityRequestStatus): value.value
define function ToString(value EligibilityResponsePurpose): value.value
define function ToString(value EligibilityResponseStatus): value.value
define function ToString(value EnableWhenBehavior): value.value
define function ToString(value EncounterLocationStatus): value.value
define function ToString(value EncounterStatus): value.value
define function ToString(value EndpointStatus): value.value
define function ToString(value EnrollmentRequestStatus): value.value
define function ToString(value EnrollmentResponseStatus): value.value
define function ToString(value EpisodeOfCareStatus): value.value
define function ToString(value EventCapabilityMode): value.value
define function ToString(value EventTiming): value.value
define function ToString(value EvidenceVariableType): value.value
define function ToString(value ExampleScenarioActorType): value.value
define function ToString(value ExplanationOfBenefitStatus): value.value
define function ToString(value ExposureState): value.value
define function ToString(value ExtensionContextType): value.value
define function ToString(value FHIRAllTypes): value.value
define function ToString(value FHIRDefinedType): value.value
define function ToString(value FHIRDeviceStatus): value.value
define function ToString(value FHIRResourceType): value.value
define function ToString(value FHIRSubstanceStatus): value.value
define function ToString(value FHIRVersion): value.value
define function ToString(value FamilyHistoryStatus): value.value
define function ToString(value FilterOperator): value.value
define function ToString(value FlagStatus): value.value
define function ToString(value GoalLifecycleStatus): value.value
define function ToString(value GraphCompartmentRule): value.value
define function ToString(value GraphCompartmentUse): value.value
define function ToString(value GroupMeasure): value.value
define function ToString(value GroupType): value.value
define function ToString(value GuidanceResponseStatus): value.value
define function ToString(value GuidePageGeneration): value.value
define function ToString(value GuideParameterCode): value.value
define function ToString(value HTTPVerb): value.value
define function ToString(value IdentifierUse): value.value
define function ToString(value IdentityAssuranceLevel): value.value
define function ToString(value ImagingStudyStatus): value.value
define function ToString(value ImmunizationEvaluationStatus): value.value
define function ToString(value ImmunizationStatus): value.value
define function ToString(value InvoicePriceComponentType): value.value
define function ToString(value InvoiceStatus): value.value
define function ToString(value IssueSeverity): value.value
define function ToString(value IssueType): value.value
define function ToString(value LinkType): value.value
define function ToString(value LinkageType): value.value
define function ToString(value ListMode): value.value
define function ToString(value ListStatus): value.value
define function ToString(value LocationMode): value.value
define function ToString(value LocationStatus): value.value
define function ToString(value MeasureReportStatus): value.value
define function ToString(value MeasureReportType): value.value
define function ToString(value MediaStatus): value.value
define function ToString(value MedicationAdministrationStatus): value.value
define function ToString(value MedicationDispenseStatus): value.value
define function ToString(value MedicationKnowledgeStatus): value.value
define function ToString(value MedicationRequestIntent): value.value
define function ToString(value MedicationRequestPriority): value.value
define function ToString(value MedicationRequestStatus): value.value
define function ToString(value MedicationStatementStatus): value.value
define function ToString(value MedicationStatus): value.value
define function ToString(value MessageSignificanceCategory): value.value
define function ToString(value Messageheader_Response_Request): value.value
define function ToString(value MimeType): value.value
define function ToString(value NameUse): value.value
define function ToString(value NamingSystemIdentifierType): value.value
define function ToString(value NamingSystemType): value.value
define function ToString(value NarrativeStatus): value.value
define function ToString(value NoteType): value.value
define function ToString(value NutritiionOrderIntent): value.value
define function ToString(value NutritionOrderStatus): value.value
define function ToString(value ObservationDataType): value.value
define function ToString(value ObservationRangeCategory): value.value
define function ToString(value ObservationStatus): value.value
define function ToString(value OperationKind): value.value
define function ToString(value OperationParameterUse): value.value
define function ToString(value OrientationType): value.value
define function ToString(value ParameterUse): value.value
define function ToString(value ParticipantRequired): value.value
define function ToString(value ParticipantStatus): value.value
define function ToString(value ParticipationStatus): value.value
define function ToString(value PaymentNoticeStatus): value.value
define function ToString(value PaymentReconciliationStatus): value.value
define function ToString(value ProcedureStatus): value.value
define function ToString(value PropertyRepresentation): value.value
define function ToString(value PropertyType): value.value
define function ToString(value ProvenanceEntityRole): value.value
define function ToString(value PublicationStatus): value.value
define function ToString(value QualityType): value.value
define function ToString(value QuantityComparator): value.value
define function ToString(value QuestionnaireItemOperator): value.value
define function ToString(value QuestionnaireItemType): value.value
define function ToString(value QuestionnaireResponseStatus): value.value
define function ToString(value ReferenceHandlingPolicy): value.value
define function ToString(value ReferenceVersionRules): value.value
define function ToString(value ReferredDocumentStatus): value.value
define function ToString(value RelatedArtifactType): value.value
define function ToString(value RemittanceOutcome): value.value
define function ToString(value RepositoryType): value.value
define function ToString(value RequestIntent): value.value
define function ToString(value RequestPriority): value.value
define function ToString(value RequestStatus): value.value
define function ToString(value ResearchElementType): value.value
define function ToString(value ResearchStudyStatus): value.value
define function ToString(value ResearchSubjectStatus): value.value
define function ToString(value ResourceType): value.value
define function ToString(value ResourceVersionPolicy): value.value
define function ToString(value ResponseType): value.value
define function ToString(value RestfulCapabilityMode): value.value
define function ToString(value RiskAssessmentStatus): value.value
define function ToString(value SPDXLicense): value.value
define function ToString(value SearchComparator): value.value
define function ToString(value SearchEntryMode): value.value
define function ToString(value SearchModifierCode): value.value
define function ToString(value SearchParamType): value.value
define function ToString(value SectionMode): value.value
define function ToString(value SequenceType): value.value
define function ToString(value ServiceRequestIntent): value.value
define function ToString(value ServiceRequestPriority): value.value
define function ToString(value ServiceRequestStatus): value.value
define function ToString(value SlicingRules): value.value
define function ToString(value SlotStatus): value.value
define function ToString(value SortDirection): value.value
define function ToString(value SpecimenContainedPreference): value.value
define function ToString(value SpecimenStatus): value.value
define function ToString(value Status): value.value
define function ToString(value StrandType): value.value
define function ToString(value StructureDefinitionKind): value.value
define function ToString(value StructureMapContextType): value.value
define function ToString(value StructureMapGroupTypeMode): value.value
define function ToString(value StructureMapInputMode): value.value
define function ToString(value StructureMapModelMode): value.value
define function ToString(value StructureMapSourceListMode): value.value
define function ToString(value StructureMapTargetListMode): value.value
define function ToString(value StructureMapTransform): value.value
define function ToString(value SubscriptionChannelType): value.value
define function ToString(value SubscriptionStatus): value.value
define function ToString(value SupplyDeliveryStatus): value.value
define function ToString(value SupplyRequestStatus): value.value
define function ToString(value SystemRestfulInteraction): value.value
define function ToString(value TaskIntent): value.value
define function ToString(value TaskPriority): value.value
define function ToString(value TaskStatus): value.value
define function ToString(value TestReportActionResult): value.value
define function ToString(value TestReportParticipantType): value.value
define function ToString(value TestReportResult): value.value
define function ToString(value TestReportStatus): value.value
define function ToString(value TestScriptRequestMethodCode): value.value
define function ToString(value TriggerType): value.value
define function ToString(value TypeDerivationRule): value.value
define function ToString(value TypeRestfulInteraction): value.value
define function ToString(value UDIEntryType): value.value
define function ToString(value UnitsOfTime): value.value
define function ToString(value Use): value.value
define function ToString(value VariableType): value.value
define function ToString(value VisionBase): value.value
define function ToString(value VisionEyes): value.value
define function ToString(value VisionStatus): value.value
define function ToString(value XPathUsageType): value.value
define function ToString(value base64Binary): value.value
define function ToBoolean(value boolean): value.value
define function ToDate(value date): value.value
define function ToDateTime(value dateTime): value.value
define function ToDecimal(value decimal): value.value
define function ToDateTime(value instant): value.value
define function ToInteger(value integer): value.value
define function ToString(value string): value.value
define function ToTime(value time): value.value
define function ToString(value uri): value.value
define function ToString(value xhtml): value.value
</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
        </text>
        <url value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers"/>
        <version value="4.0.1"/>
        <name value="FHIRHelpers"/>
        <title value="FHIR Helpers"/>
        <status value="draft"/>
        <experimental value="true"/>
        <type>
          <coding>
            <system
                    value="http://terminology.hl7.org/CodeSystem/library-type"/>
            <code value="logic-library"/>
            <display value="Logic Library"/>
          </coding>
        </type>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="FHIR model information"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"/>
        </relatedArtifact>
        <content>
          <contentType value="text/cql"/>
          <data
                value="LyoNCkBhdXRob3I6IEJyeW4gUmhvZGVzDQpAZGVzY3JpcHRpb246IFRoaXMgbGlicmFyeSBkZWZpbmVzIGZ1bmN0aW9ucyB0byBjb252ZXJ0IGJldHdlZW4gRkhJUg0KIGRhdGEgdHlwZXMgYW5kIENRTCBzeXN0ZW0tZGVmaW5lZCB0eXBlcywgYXMgd2VsbCBhcyBmdW5jdGlvbnMgdG8gc3VwcG9ydA0KIEZISVJQYXRoIGltcGxlbWVudGF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBGSElSSGVscGVycyB3aWtpIHBhZ2U6DQogaHR0cHM6Ly9naXRodWIuY29tL2NxZnJhbWV3b3JrL2NsaW5pY2FsX3F1YWxpdHlfbGFuZ3VhZ2Uvd2lraS9GSElSSGVscGVycw0KQGFsbG93Rmx1ZW50OiB0cnVlDQoqLw0KbGlicmFyeSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScNCg0KdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvSW50ZXJ2YWwocGVyaW9kIEZISVIuUGVyaW9kKToNCiAgICBpZiBwZXJpb2QgaXMgbnVsbCB0aGVuDQogICAgICAgIG51bGwNCiAgICBlbHNlDQogICAgICAgIGlmIHBlcmlvZC4ic3RhcnQiIGlzIG51bGwgdGhlbg0KICAgICAgICAgICAgSW50ZXJ2YWwocGVyaW9kLiJzdGFydCIudmFsdWUsIHBlcmlvZC4iZW5kIi52YWx1ZV0NCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgSW50ZXJ2YWxbcGVyaW9kLiJzdGFydCIudmFsdWUsIHBlcmlvZC4iZW5kIi52YWx1ZV0NCg0KZGVmaW5lIGZ1bmN0aW9uIFRvQ2FsZW5kYXJVbml0KHVuaXQgU3lzdGVtLlN0cmluZyk6DQogICAgY2FzZSB1bml0DQogICAgICAgIHdoZW4gJ21zJyB0aGVuICdtaWxsaXNlY29uZCcNCiAgICAgICAgd2hlbiAncycgdGhlbiAnc2Vjb25kJw0KICAgICAgICB3aGVuICdtaW4nIHRoZW4gJ21pbnV0ZScNCiAgICAgICAgd2hlbiAnaCcgdGhlbiAnaG91cicNCiAgICAgICAgd2hlbiAnZCcgdGhlbiAnZGF5Jw0KICAgICAgICB3aGVuICd3aycgdGhlbiAnd2VlaycNCiAgICAgICAgd2hlbiAnbW8nIHRoZW4gJ21vbnRoJw0KICAgICAgICB3aGVuICdhJyB0aGVuICd5ZWFyJw0KICAgICAgICBlbHNlIHVuaXQNCiAgICBlbmQNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvUXVhbnRpdHkocXVhbnRpdHkgRkhJUi5RdWFudGl0eSk6DQogICAgY2FzZQ0KICAgICAgICB3aGVuIHF1YW50aXR5IGlzIG51bGwgdGhlbiBudWxsDQogICAgICAgIHdoZW4gcXVhbnRpdHkudmFsdWUgaXMgbnVsbCB0aGVuIG51bGwNCiAgICAgICAgd2hlbiBxdWFudGl0eS5jb21wYXJhdG9yIGlzIG5vdCBudWxsIHRoZW4NCiAgICAgICAgICAgIE1lc3NhZ2UobnVsbCwgdHJ1ZSwgJ0ZISVJIZWxwZXJzLlRvUXVhbnRpdHkuQ29tcGFyYXRvclF1YW50aXR5Tm90U3VwcG9ydGVkJywgJ0Vycm9yJywgJ0ZISVIgUXVhbnRpdHkgdmFsdWUgaGFzIGEgY29tcGFyYXRvciBhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIFN5c3RlbS5RdWFudGl0eSB2YWx1ZS4nKQ0KICAgICAgICB3aGVuIHF1YW50aXR5LnN5c3RlbSBpcyBudWxsIG9yIHF1YW50aXR5LnN5c3RlbS52YWx1ZSA9ICdodHRwOi8vdW5pdHNvZm1lYXN1cmUub3JnJw0KICAgICAgICAgICAgICBvciBxdWFudGl0eS5zeXN0ZW0udmFsdWUgPSAnaHR0cDovL2hsNy5vcmcvZmhpcnBhdGgvQ29kZVN5c3RlbS9jYWxlbmRhci11bml0cycgdGhlbg0KICAgICAgICAgICAgU3lzdGVtLlF1YW50aXR5IHsgdmFsdWU6IHF1YW50aXR5LnZhbHVlLnZhbHVlLCB1bml0OiBUb0NhbGVuZGFyVW5pdChDb2FsZXNjZShxdWFudGl0eS5jb2RlLnZhbHVlLCBxdWFudGl0eS51bml0LnZhbHVlLCAnMScpKSB9DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIE1lc3NhZ2UobnVsbCwgdHJ1ZSwgJ0ZISVJIZWxwZXJzLlRvUXVhbnRpdHkuSW52YWxpZEZISVJRdWFudGl0eScsICdFcnJvcicsICdJbnZhbGlkIEZISVIgUXVhbnRpdHkgY29kZTogJyAmIHF1YW50aXR5LnVuaXQudmFsdWUgJiAnICgnICYgcXVhbnRpdHkuc3lzdGVtLnZhbHVlICYgJ3wnICYgcXVhbnRpdHkuY29kZS52YWx1ZSAmICcpJykNCiAgICBlbmQNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvUXVhbnRpdHlJZ25vcmluZ0NvbXBhcmF0b3IocXVhbnRpdHkgRkhJUi5RdWFudGl0eSk6DQogICAgY2FzZQ0KICAgICAgICB3aGVuIHF1YW50aXR5IGlzIG51bGwgdGhlbiBudWxsDQogICAgICAgIHdoZW4gcXVhbnRpdHkudmFsdWUgaXMgbnVsbCB0aGVuIG51bGwNCiAgICAgICAgd2hlbiBxdWFudGl0eS5zeXN0ZW0gaXMgbnVsbCBvciBxdWFudGl0eS5zeXN0ZW0udmFsdWUgPSAnaHR0cDovL3VuaXRzb2ZtZWFzdXJlLm9yZycNCiAgICAgICAgICAgICAgb3IgcXVhbnRpdHkuc3lzdGVtLnZhbHVlID0gJ2h0dHA6Ly9obDcub3JnL2ZoaXJwYXRoL0NvZGVTeXN0ZW0vY2FsZW5kYXItdW5pdHMnIHRoZW4NCiAgICAgICAgICAgIFN5c3RlbS5RdWFudGl0eSB7IHZhbHVlOiBxdWFudGl0eS52YWx1ZS52YWx1ZSwgdW5pdDogVG9DYWxlbmRhclVuaXQoQ29hbGVzY2UocXVhbnRpdHkuY29kZS52YWx1ZSwgcXVhbnRpdHkudW5pdC52YWx1ZSwgJzEnKSkgfQ0KICAgICAgICBlbHNlDQogICAgICAgICAgICBNZXNzYWdlKG51bGwsIHRydWUsICdGSElSSGVscGVycy5Ub1F1YW50aXR5LkludmFsaWRGSElSUXVhbnRpdHknLCAnRXJyb3InLCAnSW52YWxpZCBGSElSIFF1YW50aXR5IGNvZGU6ICcgJiBxdWFudGl0eS51bml0LnZhbHVlICYgJyAoJyAmIHF1YW50aXR5LnN5c3RlbS52YWx1ZSAmICd8JyAmIHF1YW50aXR5LmNvZGUudmFsdWUgJiAnKScpDQogICAgZW5kDQoNCmRlZmluZSBmdW5jdGlvbiBUb0ludGVydmFsKHF1YW50aXR5IEZISVIuUXVhbnRpdHkpOg0KICAgIGlmIHF1YW50aXR5IGlzIG51bGwgdGhlbiBudWxsIGVsc2UNCiAgICAgICAgY2FzZSBxdWFudGl0eS5jb21wYXJhdG9yLnZhbHVlDQogICAgICAgICAgICB3aGVuICc8JyB0aGVuDQogICAgICAgICAgICAgICAgSW50ZXJ2YWxbDQogICAgICAgICAgICAgICAgICAgIG51bGwsDQogICAgICAgICAgICAgICAgICAgIFRvUXVhbnRpdHlJZ25vcmluZ0NvbXBhcmF0b3IocXVhbnRpdHkpDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgd2hlbiAnPD0nIHRoZW4NCiAgICAgICAgICAgICAgICBJbnRlcnZhbFsNCiAgICAgICAgICAgICAgICAgICAgbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgVG9RdWFudGl0eUlnbm9yaW5nQ29tcGFyYXRvcihxdWFudGl0eSkNCiAgICAgICAgICAgICAgICBdDQogICAgICAgICAgICB3aGVuICc+PScgdGhlbg0KICAgICAgICAgICAgICAgIEludGVydmFsWw0KICAgICAgICAgICAgICAgICAgICBUb1F1YW50aXR5SWdub3JpbmdDb21wYXJhdG9yKHF1YW50aXR5KSwNCiAgICAgICAgICAgICAgICAgICAgbnVsbA0KICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgIHdoZW4gJz4nIHRoZW4NCiAgICAgICAgICAgICAgICBJbnRlcnZhbCgNCiAgICAgICAgICAgICAgICAgICAgVG9RdWFudGl0eUlnbm9yaW5nQ29tcGFyYXRvcihxdWFudGl0eSksDQogICAgICAgICAgICAgICAgICAgIG51bGwNCiAgICAgICAgICAgICAgICBdDQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgSW50ZXJ2YWxbVG9RdWFudGl0eShxdWFudGl0eSksIFRvUXVhbnRpdHkocXVhbnRpdHkpXQ0KICAgICAgICBlbmQNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvUmF0aW8ocmF0aW8gRkhJUi5SYXRpbyk6DQogICAgaWYgcmF0aW8gaXMgbnVsbCB0aGVuDQogICAgICAgIG51bGwNCiAgICBlbHNlDQogICAgICAgIFN5c3RlbS5SYXRpbyB7IG51bWVyYXRvcjogVG9RdWFudGl0eShyYXRpby5udW1lcmF0b3IpLCBkZW5vbWluYXRvcjogVG9RdWFudGl0eShyYXRpby5kZW5vbWluYXRvcikgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9JbnRlcnZhbChyYW5nZSBGSElSLlJhbmdlKToNCiAgICBpZiByYW5nZSBpcyBudWxsIHRoZW4NCiAgICAgICAgbnVsbA0KICAgIGVsc2UNCiAgICAgICAgSW50ZXJ2YWxbVG9RdWFudGl0eShyYW5nZS5sb3cpLCBUb1F1YW50aXR5KHJhbmdlLmhpZ2gpXQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9Db2RlKGNvZGluZyBGSElSLkNvZGluZyk6DQogICAgaWYgY29kaW5nIGlzIG51bGwgdGhlbg0KICAgICAgICBudWxsDQogICAgZWxzZQ0KICAgICAgICBTeXN0ZW0uQ29kZSB7DQogICAgICAgICAgY29kZTogY29kaW5nLmNvZGUudmFsdWUsDQogICAgICAgICAgc3lzdGVtOiBjb2Rpbmcuc3lzdGVtLnZhbHVlLA0KICAgICAgICAgIHZlcnNpb246IGNvZGluZy52ZXJzaW9uLnZhbHVlLA0KICAgICAgICAgIGRpc3BsYXk6IGNvZGluZy5kaXNwbGF5LnZhbHVlDQogICAgICAgIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIFRvQ29uY2VwdChjb25jZXB0IEZISVIuQ29kZWFibGVDb25jZXB0KToNCiAgICBpZiBjb25jZXB0IGlzIG51bGwgdGhlbg0KICAgICAgICBudWxsDQogICAgZWxzZQ0KICAgICAgICBTeXN0ZW0uQ29uY2VwdCB7DQogICAgICAgICAgICBjb2RlczogY29uY2VwdC5jb2RpbmcgQyByZXR1cm4gVG9Db2RlKEMpLA0KICAgICAgICAgICAgZGlzcGxheTogY29uY2VwdC50ZXh0LnZhbHVlDQogICAgICAgIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIHJlZmVyZW5jZShyZWZlcmVuY2UgU3RyaW5nKToNCiAgICBpZiByZWZlcmVuY2UgaXMgbnVsbCB0aGVuDQogICAgICAgIG51bGwNCiAgICBlbHNlDQogICAgICAgIFJlZmVyZW5jZSB7IHJlZmVyZW5jZTogc3RyaW5nIHsgdmFsdWU6IHJlZmVyZW5jZSB9IH0NCg0KZGVmaW5lIGZ1bmN0aW9uIHJlc29sdmUocmVmZXJlbmNlIFN0cmluZykgcmV0dXJucyBSZXNvdXJjZTogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiByZXNvbHZlKHJlZmVyZW5jZSBSZWZlcmVuY2UpIHJldHVybnMgUmVzb3VyY2U6IGV4dGVybmFsDQpkZWZpbmUgZnVuY3Rpb24gcmVmZXJlbmNlKHJlc291cmNlIFJlc291cmNlKSByZXR1cm5zIFJlZmVyZW5jZTogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiBleHRlbnNpb24oZWxlbWVudCBFbGVtZW50LCB1cmwgU3RyaW5nKSByZXR1cm5zIExpc3Q8RWxlbWVudD46IGV4dGVybmFsDQpkZWZpbmUgZnVuY3Rpb24gZXh0ZW5zaW9uKHJlc291cmNlIFJlc291cmNlLCB1cmwgU3RyaW5nKSByZXR1cm5zIExpc3Q8RWxlbWVudD46IGV4dGVybmFsDQpkZWZpbmUgZnVuY3Rpb24gaGFzVmFsdWUoZWxlbWVudCBFbGVtZW50KSByZXR1cm5zIEJvb2xlYW46IGV4dGVybmFsDQpkZWZpbmUgZnVuY3Rpb24gZ2V0VmFsdWUoZWxlbWVudCBFbGVtZW50KSByZXR1cm5zIEFueTogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiBvZlR5cGUoaWRlbnRpZmllciBTdHJpbmcpIHJldHVybnMgTGlzdDxBbnk+OiBleHRlcm5hbA0KZGVmaW5lIGZ1bmN0aW9uIGlzKGlkZW50aWZpZXIgU3RyaW5nKSByZXR1cm5zIEJvb2xlYW46IGV4dGVybmFsDQpkZWZpbmUgZnVuY3Rpb24gYXMoaWRlbnRpZmllciBTdHJpbmcpIHJldHVybnMgQW55OiBleHRlcm5hbA0KZGVmaW5lIGZ1bmN0aW9uIGVsZW1lbnREZWZpbml0aW9uKGVsZW1lbnQgRWxlbWVudCkgcmV0dXJucyBFbGVtZW50RGVmaW5pdGlvbjogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiBzbGljZShlbGVtZW50IEVsZW1lbnQsIHVybCBTdHJpbmcsIG5hbWUgU3RyaW5nKSByZXR1cm5zIExpc3Q8RWxlbWVudD46IGV4dGVybmFsDQpkZWZpbmUgZnVuY3Rpb24gY2hlY2tNb2RpZmllcnMocmVzb3VyY2UgUmVzb3VyY2UpIHJldHVybnMgUmVzb3VyY2U6IGV4dGVybmFsDQpkZWZpbmUgZnVuY3Rpb24gY2hlY2tNb2RpZmllcnMocmVzb3VyY2UgUmVzb3VyY2UsIG1vZGlmaWVyIFN0cmluZykgcmV0dXJucyBSZXNvdXJjZTogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiBjaGVja01vZGlmaWVycyhlbGVtZW50IEVsZW1lbnQpIHJldHVybnMgRWxlbWVudDogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiBjaGVja01vZGlmaWVycyhlbGVtZW50IEVsZW1lbnQsIG1vZGlmaWVyIFN0cmluZykgcmV0dXJucyBFbGVtZW50OiBleHRlcm5hbA0KZGVmaW5lIGZ1bmN0aW9uIGNvbmZvcm1zVG8ocmVzb3VyY2UgUmVzb3VyY2UsIHN0cnVjdHVyZSBTdHJpbmcpIHJldHVybnMgQm9vbGVhbjogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiBtZW1iZXJPZihjb2RlIGNvZGUsIHZhbHVlU2V0IFN0cmluZykgcmV0dXJucyBCb29sZWFuOiBleHRlcm5hbA0KZGVmaW5lIGZ1bmN0aW9uIG1lbWJlck9mKGNvZGluZyBDb2RpbmcsIHZhbHVlU2V0IFN0cmluZykgcmV0dXJucyBCb29sZWFuOiBleHRlcm5hbA0KZGVmaW5lIGZ1bmN0aW9uIG1lbWJlck9mKGNvbmNlcHQgQ29kZWFibGVDb25jZXB0LCB2YWx1ZVNldCBTdHJpbmcpIHJldHVybnMgQm9vbGVhbjogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiBzdWJzdW1lcyhjb2RpbmcgQ29kaW5nLCBzdWJzdW1lZENvZGluZyBDb2RpbmcpIHJldHVybnMgQm9vbGVhbjogZXh0ZXJuYWwNCmRlZmluZSBmdW5jdGlvbiBzdWJzdW1lcyhjb25jZXB0IENvZGVhYmxlQ29uY2VwdCwgc3Vic3VtZWRDb25jZXB0IENvZGVhYmxlQ29uY2VwdCkgcmV0dXJucyBCb29sZWFuOiBleHRlcm5hbA0KZGVmaW5lIGZ1bmN0aW9uIHN1YnN1bWVkQnkoY29kaW5nIENvZGluZywgc3Vic3VtaW5nQ29kaW5nIENvZGluZykgcmV0dXJucyBCb29sZWFuOiBleHRlcm5hbA0KZGVmaW5lIGZ1bmN0aW9uIHN1YnN1bWVkQnkoY29uY2VwdCBDb2RlYWJsZUNvbmNlcHQsIHN1YnN1bWluZ0NvbmNlcHQgQ29kZWFibGVDb25jZXB0KSByZXR1cm5zIEJvb2xlYW46IGV4dGVybmFsDQpkZWZpbmUgZnVuY3Rpb24gaHRtbENoZWNrcyhlbGVtZW50IEVsZW1lbnQpIHJldHVybnMgQm9vbGVhbjogZXh0ZXJuYWwNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFjY291bnRTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFjdGlvbkNhcmRpbmFsaXR5QmVoYXZpb3IpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFjdGlvbkNvbmRpdGlvbktpbmQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFjdGlvbkdyb3VwaW5nQmVoYXZpb3IpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFjdGlvblBhcnRpY2lwYW50VHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQWN0aW9uUHJlY2hlY2tCZWhhdmlvcik6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQWN0aW9uUmVsYXRpb25zaGlwVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQWN0aW9uUmVxdWlyZWRCZWhhdmlvcik6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQWN0aW9uU2VsZWN0aW9uQmVoYXZpb3IpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFjdGl2aXR5RGVmaW5pdGlvbktpbmQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFjdGl2aXR5UGFydGljaXBhbnRUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBBZGRyZXNzVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQWRkcmVzc1VzZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQWRtaW5pc3RyYXRpdmVHZW5kZXIpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFkdmVyc2VFdmVudEFjdHVhbGl0eSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQWdncmVnYXRpb25Nb2RlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBBbGxlcmd5SW50b2xlcmFuY2VDYXRlZ29yeSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQWxsZXJneUludG9sZXJhbmNlQ3JpdGljYWxpdHkpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEFsbGVyZ3lJbnRvbGVyYW5jZVNldmVyaXR5KTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBBbGxlcmd5SW50b2xlcmFuY2VUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBBcHBvaW50bWVudFN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQXNzZXJ0aW9uRGlyZWN0aW9uVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQXNzZXJ0aW9uT3BlcmF0b3JUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBBc3NlcnRpb25SZXNwb25zZVR5cGVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBBdWRpdEV2ZW50QWN0aW9uKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBBdWRpdEV2ZW50QWdlbnROZXR3b3JrVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQXVkaXRFdmVudE91dGNvbWUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEJpbmRpbmdTdHJlbmd0aCk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQmlvbG9naWNhbGx5RGVyaXZlZFByb2R1Y3RDYXRlZ29yeSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQmlvbG9naWNhbGx5RGVyaXZlZFByb2R1Y3RTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEJpb2xvZ2ljYWxseURlcml2ZWRQcm9kdWN0U3RvcmFnZVNjYWxlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBCdW5kbGVUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDYXBhYmlsaXR5U3RhdGVtZW50S2luZCk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ2FyZVBsYW5BY3Rpdml0eUtpbmQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENhcmVQbGFuQWN0aXZpdHlTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENhcmVQbGFuSW50ZW50KTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDYXJlUGxhblN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ2FyZVRlYW1TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENhdGFsb2dFbnRyeVJlbGF0aW9uVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ2hhcmdlSXRlbURlZmluaXRpb25QcmljZUNvbXBvbmVudFR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENoYXJnZUl0ZW1TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENsYWltUmVzcG9uc2VTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENsYWltU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDbGluaWNhbEltcHJlc3Npb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENvZGVTZWFyY2hTdXBwb3J0KTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb2RlU3lzdGVtQ29udGVudE1vZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENvZGVTeXN0ZW1IaWVyYXJjaHlNZWFuaW5nKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb21tdW5pY2F0aW9uUHJpb3JpdHkpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENvbW11bmljYXRpb25SZXF1ZXN0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb21tdW5pY2F0aW9uU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb21wYXJ0bWVudENvZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENvbXBhcnRtZW50VHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ29tcG9zaXRpb25BdHRlc3RhdGlvbk1vZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENvbXBvc2l0aW9uU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb25jZXB0TWFwRXF1aXZhbGVuY2UpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENvbmNlcHRNYXBHcm91cFVubWFwcGVkTW9kZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ29uZGl0aW9uYWxEZWxldGVTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENvbmRpdGlvbmFsUmVhZFN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ29uc2VudERhdGFNZWFuaW5nKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb25zZW50UHJvdmlzaW9uVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ29uc2VudFN0YXRlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb25zdHJhaW50U2V2ZXJpdHkpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIENvbnRhY3RQb2ludFN5c3RlbSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ29udGFjdFBvaW50VXNlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb250cmFjdFB1YmxpY2F0aW9uU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb250cmFjdFN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ29udHJpYnV0b3JUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBDb3ZlcmFnZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgQ3VycmVuY3lDb2RlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBEYXlPZldlZWspOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIERheXNPZldlZWspOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIERldGVjdGVkSXNzdWVTZXZlcml0eSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRGV0ZWN0ZWRJc3N1ZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRGV2aWNlTWV0cmljQ2FsaWJyYXRpb25TdGF0ZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRGV2aWNlTWV0cmljQ2FsaWJyYXRpb25UeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBEZXZpY2VNZXRyaWNDYXRlZ29yeSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRGV2aWNlTWV0cmljQ29sb3IpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIERldmljZU1ldHJpY09wZXJhdGlvbmFsU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBEZXZpY2VOYW1lVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRGV2aWNlUmVxdWVzdFN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRGV2aWNlVXNlU3RhdGVtZW50U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBEaWFnbm9zdGljUmVwb3J0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBEaXNjcmltaW5hdG9yVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRG9jdW1lbnRDb25maWRlbnRpYWxpdHkpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIERvY3VtZW50TW9kZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRG9jdW1lbnRSZWZlcmVuY2VTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIERvY3VtZW50UmVsYXRpb25zaGlwVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRWxpZ2liaWxpdHlSZXF1ZXN0UHVycG9zZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRWxpZ2liaWxpdHlSZXF1ZXN0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBFbGlnaWJpbGl0eVJlc3BvbnNlUHVycG9zZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRWxpZ2liaWxpdHlSZXNwb25zZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRW5hYmxlV2hlbkJlaGF2aW9yKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBFbmNvdW50ZXJMb2NhdGlvblN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRW5jb3VudGVyU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBFbmRwb2ludFN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRW5yb2xsbWVudFJlcXVlc3RTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEVucm9sbG1lbnRSZXNwb25zZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRXBpc29kZU9mQ2FyZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRXZlbnRDYXBhYmlsaXR5TW9kZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRXZlbnRUaW1pbmcpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEV2aWRlbmNlVmFyaWFibGVUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBFeGFtcGxlU2NlbmFyaW9BY3RvclR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEV4cGxhbmF0aW9uT2ZCZW5lZml0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBFeHBvc3VyZVN0YXRlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBFeHRlbnNpb25Db250ZXh0VHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUkFsbFR5cGVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSRGVmaW5lZFR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVJEZXZpY2VTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVJSZXNvdXJjZVR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVJTdWJzdGFuY2VTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVJWZXJzaW9uKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGYW1pbHlIaXN0b3J5U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGaWx0ZXJPcGVyYXRvcik6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRmxhZ1N0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgR29hbExpZmVjeWNsZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgR3JhcGhDb21wYXJ0bWVudFJ1bGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEdyYXBoQ29tcGFydG1lbnRVc2UpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEdyb3VwTWVhc3VyZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgR3JvdXBUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBHdWlkYW5jZVJlc3BvbnNlU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBHdWlkZVBhZ2VHZW5lcmF0aW9uKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBHdWlkZVBhcmFtZXRlckNvZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEhUVFBWZXJiKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBJZGVudGlmaWVyVXNlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBJZGVudGl0eUFzc3VyYW5jZUxldmVsKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBJbWFnaW5nU3R1ZHlTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEltbXVuaXphdGlvbkV2YWx1YXRpb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEltbXVuaXphdGlvblN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgSW52b2ljZVByaWNlQ29tcG9uZW50VHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgSW52b2ljZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgSXNzdWVTZXZlcml0eSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgSXNzdWVUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBMaW5rVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTGlua2FnZVR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIExpc3RNb2RlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBMaXN0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBMb2NhdGlvbk1vZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIExvY2F0aW9uU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBNZWFzdXJlUmVwb3J0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBNZWFzdXJlUmVwb3J0VHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTWVkaWFTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE1lZGljYXRpb25BZG1pbmlzdHJhdGlvblN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTWVkaWNhdGlvbkRpc3BlbnNlU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBNZWRpY2F0aW9uS25vd2xlZGdlU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBNZWRpY2F0aW9uUmVxdWVzdEludGVudCk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTWVkaWNhdGlvblJlcXVlc3RQcmlvcml0eSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTWVkaWNhdGlvblJlcXVlc3RTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE1lZGljYXRpb25TdGF0ZW1lbnRTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE1lZGljYXRpb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE1lc3NhZ2VTaWduaWZpY2FuY2VDYXRlZ29yeSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTWVzc2FnZWhlYWRlcl9SZXNwb25zZV9SZXF1ZXN0KTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBNaW1lVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTmFtZVVzZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTmFtaW5nU3lzdGVtSWRlbnRpZmllclR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE5hbWluZ1N5c3RlbVR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE5hcnJhdGl2ZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTm90ZVR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE51dHJpdGlpb25PcmRlckludGVudCk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgTnV0cml0aW9uT3JkZXJTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE9ic2VydmF0aW9uRGF0YVR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE9ic2VydmF0aW9uUmFuZ2VDYXRlZ29yeSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgT2JzZXJ2YXRpb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE9wZXJhdGlvbktpbmQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIE9wZXJhdGlvblBhcmFtZXRlclVzZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgT3JpZW50YXRpb25UeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBQYXJhbWV0ZXJVc2UpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFBhcnRpY2lwYW50UmVxdWlyZWQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFBhcnRpY2lwYW50U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBQYXJ0aWNpcGF0aW9uU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBQYXltZW50Tm90aWNlU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBQYXltZW50UmVjb25jaWxpYXRpb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFByb2NlZHVyZVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUHJvcGVydHlSZXByZXNlbnRhdGlvbik6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUHJvcGVydHlUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBQcm92ZW5hbmNlRW50aXR5Um9sZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUHVibGljYXRpb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFF1YWxpdHlUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBRdWFudGl0eUNvbXBhcmF0b3IpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFF1ZXN0aW9ubmFpcmVJdGVtT3BlcmF0b3IpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFF1ZXN0aW9ubmFpcmVJdGVtVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUXVlc3Rpb25uYWlyZVJlc3BvbnNlU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBSZWZlcmVuY2VIYW5kbGluZ1BvbGljeSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUmVmZXJlbmNlVmVyc2lvblJ1bGVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBSZWZlcnJlZERvY3VtZW50U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBSZWxhdGVkQXJ0aWZhY3RUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBSZW1pdHRhbmNlT3V0Y29tZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUmVwb3NpdG9yeVR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFJlcXVlc3RJbnRlbnQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFJlcXVlc3RQcmlvcml0eSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUmVxdWVzdFN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUmVzZWFyY2hFbGVtZW50VHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUmVzZWFyY2hTdHVkeVN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUmVzZWFyY2hTdWJqZWN0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBSZXNvdXJjZVR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFJlc291cmNlVmVyc2lvblBvbGljeSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgUmVzcG9uc2VUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBSZXN0ZnVsQ2FwYWJpbGl0eU1vZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFJpc2tBc3Nlc3NtZW50U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTUERYTGljZW5zZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgU2VhcmNoQ29tcGFyYXRvcik6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgU2VhcmNoRW50cnlNb2RlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTZWFyY2hNb2RpZmllckNvZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFNlYXJjaFBhcmFtVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgU2VjdGlvbk1vZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFNlcXVlbmNlVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgU2VydmljZVJlcXVlc3RJbnRlbnQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFNlcnZpY2VSZXF1ZXN0UHJpb3JpdHkpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFNlcnZpY2VSZXF1ZXN0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTbGljaW5nUnVsZXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFNsb3RTdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFNvcnREaXJlY3Rpb24pOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFNwZWNpbWVuQ29udGFpbmVkUHJlZmVyZW5jZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgU3BlY2ltZW5TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgU3RyYW5kVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgU3RydWN0dXJlRGVmaW5pdGlvbktpbmQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFN0cnVjdHVyZU1hcENvbnRleHRUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTdHJ1Y3R1cmVNYXBHcm91cFR5cGVNb2RlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTdHJ1Y3R1cmVNYXBJbnB1dE1vZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFN0cnVjdHVyZU1hcE1vZGVsTW9kZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgU3RydWN0dXJlTWFwU291cmNlTGlzdE1vZGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFN0cnVjdHVyZU1hcFRhcmdldExpc3RNb2RlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTdHJ1Y3R1cmVNYXBUcmFuc2Zvcm0pOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFN1YnNjcmlwdGlvbkNoYW5uZWxUeXBlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTdWJzY3JpcHRpb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFN1cHBseURlbGl2ZXJ5U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTdXBwbHlSZXF1ZXN0U3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBTeXN0ZW1SZXN0ZnVsSW50ZXJhY3Rpb24pOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFRhc2tJbnRlbnQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFRhc2tQcmlvcml0eSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVGFza1N0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVGVzdFJlcG9ydEFjdGlvblJlc3VsdCk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVGVzdFJlcG9ydFBhcnRpY2lwYW50VHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVGVzdFJlcG9ydFJlc3VsdCk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVGVzdFJlcG9ydFN0YXR1cyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVGVzdFNjcmlwdFJlcXVlc3RNZXRob2RDb2RlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBUcmlnZ2VyVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVHlwZURlcml2YXRpb25SdWxlKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBUeXBlUmVzdGZ1bEludGVyYWN0aW9uKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBVRElFbnRyeVR5cGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFVuaXRzT2ZUaW1lKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBVc2UpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIFZhcmlhYmxlVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVmlzaW9uQmFzZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVmlzaW9uRXllcyk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgVmlzaW9uU3RhdHVzKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBYUGF0aFVzYWdlVHlwZSk6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgYmFzZTY0QmluYXJ5KTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb0Jvb2xlYW4odmFsdWUgYm9vbGVhbik6IHZhbHVlLnZhbHVlDQpkZWZpbmUgZnVuY3Rpb24gVG9EYXRlKHZhbHVlIGRhdGUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvRGF0ZVRpbWUodmFsdWUgZGF0ZVRpbWUpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvRGVjaW1hbCh2YWx1ZSBkZWNpbWFsKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb0RhdGVUaW1lKHZhbHVlIGluc3RhbnQpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvSW50ZWdlcih2YWx1ZSBpbnRlZ2VyKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBzdHJpbmcpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvVGltZSh2YWx1ZSB0aW1lKTogdmFsdWUudmFsdWUNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSB1cmkpOiB2YWx1ZS52YWx1ZQ0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIHhodG1sKTogdmFsdWUudmFsdWUNCg=="/>
        </content>
      </Library>
    </resource>
    <request>
      <method value="PUT"/>
      <url value="Library/FHIRHelpers"/>
    </request>
  </entry>
  <entry>
    <fullUrl value="urn:uuid:aa99c584-12e5-46bb-8b30-ab10cfe26471"/>
    <resource>
      <Library>
        <id value="FHIRCommon"/>
        <text>
          <status value="extensions"/>
          <div xmlns="http://www.w3.org/1999/xhtml"><a name="Library_FHIRCommon"> </a>
<div>
    <table class="grid dict">
        
        
        <tr>
            <th scope="row"><b>Title: </b></th>
            <td style="padding-left: 4px;">FHIRCommon</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">FHIRCommon</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Version: </b></th>
            <td style="padding-left: 4px;">4.0.1</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="Bundle-sde-example-artifact-bundle.html">FHIRCommon</a></td>
        </tr>
        

        

        

        
        <tr>
            <th scope="row"><b>Status: </b></th>
            <td style="padding-left: 4px;">draft</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Experimental: </b></th>
            <td style="padding-left: 4px;">true</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Type: </b></th>
            <td style="padding-left: 4px;">
                
                    
                        
                        <p style="margin-bottom: 5px;">
                            <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>code: </b> <span>logic-library</span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>display: </b> <span>Logic Library</span>
                        </p>
                        
                    
                
                
            </td>
        </tr>
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        
        <tr>
            <th scope="row"><b>Related Artifacts: </b></th>
            <td style="padding-left: 4px;">
                
                
                
                <p><b>Dependencies</b></p>
                <ul>
                  
                    <li><a href="http://fhir.org/guides/cqf/common/4.0.1/4.0.1/Library-FHIR-ModelInfo.html">http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1</a></li>
                  
                    <li><a href="Bundle-sde-example-artifact-bundle.html">FHIR Helpersversion: null4.0.1)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">Logical Observation Identifiers, Names and Codes (LOINC)</a></li>
                  
                    <li><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">SNOMED CT (all versions)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-RoleCode.html">RoleCode</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-diagnosis-role.html">Diagnosis Role</a></li>
                  
                    <li><a href="http://hl7.org/fhir/R4/codesystem-request-intent.html">RequestIntent</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-medicationrequest-category.html">MedicationRequest Category Codes</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-condition-clinical.html">Condition Clinical Status Codes</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-condition-ver-status.html">ConditionVerificationStatus</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-allergyintolerance-clinical.html">AllergyIntolerance Clinical Status Codes</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-allergyintolerance-verification.html">AllergyIntolerance Verification Status</a></li>
                  
                    <li><a href="http://fhir.org/guides/cqf/common/4.0.1/ValueSet-active-condition.html">CQF Active Condition</a></li>
                  
                    <li><a href="http://fhir.org/guides/cqf/common/4.0.1/ValueSet-inactive-condition.html">CQF Inactive Condition</a></li>
                  
                </ul>
                
                
                
                
                
            </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Parameters: </b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>
              
                <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
            </table>
          </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Data Requirements:</b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>
              
                <tr>
                  <th>Patient</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Patient</th>
                  <th/>
                  <th>
                    
                  </th>
                </tr>
              
            </table>
          </td>
        </tr>
        

        
        
        <tr>
          <td colspan="2">
            <table>
              <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
              <tr><td><pre><code class="language-cql">/*
@author: Bryn Rhodes
@description: Common terminologies and functions used in FHIR-based CQL artifacts
*/
library FHIRCommon version '4.0.1'

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.1'

codesystem &quot;LOINC&quot;: 'http://loinc.org'
codesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'
codesystem &quot;RoleCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-RoleCode'
codesystem &quot;Diagnosis Role&quot;: 'http://terminology.hl7.org/CodeSystem/diagnosis-role'
codesystem &quot;RequestIntent&quot;: 'http://terminology.hl7.org/CodeSystem/request-intent'
codesystem &quot;MedicationRequestCategory&quot;: 'http://terminology.hl7.org/CodeSystem/medicationrequest-category'
codesystem &quot;ConditionClinicalStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/condition-clinical'
codesystem &quot;ConditionVerificationStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/condition-ver-status'
codesystem &quot;AllergyIntoleranceClinicalStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical'
codesystem &quot;AllergyIntoleranceVerificationStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/allergyintolerance-verification'

valueset &quot;Active Condition&quot;: 'http://fhir.org/guides/cqf/common/ValueSet/active-condition'
valueset &quot;Inactive Condition&quot;: 'http://fhir.org/guides/cqf/common/ValueSet/inactive-condition'

code &quot;Birthdate&quot;: '21112-8' from &quot;LOINC&quot; display 'Birth date'
code &quot;Dead&quot;: '419099009' from &quot;SNOMEDCT&quot; display 'Dead'
code &quot;ER&quot;: 'ER' from &quot;RoleCode&quot; display 'Emergency room'
code &quot;ICU&quot;: 'ICU' from &quot;RoleCode&quot; display 'Intensive care unit'
code &quot;Billing&quot;: 'billing' from &quot;Diagnosis Role&quot; display 'Billing'

// Condition Clinical Status Codes - Consider value sets for these
code &quot;active&quot;: 'active' from &quot;ConditionClinicalStatusCodes&quot;
code &quot;recurrence&quot;: 'recurrence' from &quot;ConditionClinicalStatusCodes&quot;
code &quot;relapse&quot;: 'relapse' from &quot;ConditionClinicalStatusCodes&quot;
code &quot;inactive&quot;: 'inactive' from &quot;ConditionClinicalStatusCodes&quot;
code &quot;remission&quot;: 'remission' from &quot;ConditionClinicalStatusCodes&quot;
code &quot;resolved&quot;: 'resolved' from &quot;ConditionClinicalStatusCodes&quot;

// Condition Verification Status Codes - Consider value sets for these
code &quot;unconfirmed&quot;: 'unconfirmed' from ConditionVerificationStatusCodes
code &quot;provisional&quot;: 'provisional' from ConditionVerificationStatusCodes
code &quot;differential&quot;: 'differential' from ConditionVerificationStatusCodes
code &quot;confirmed&quot;: 'confirmed' from ConditionVerificationStatusCodes
code &quot;refuted&quot;: 'refuted' from ConditionVerificationStatusCodes
code &quot;entered-in-error&quot;: 'entered-in-error' from ConditionVerificationStatusCodes

code &quot;allergy-active&quot;: 'active' from &quot;AllergyIntoleranceClinicalStatusCodes&quot;
code &quot;allergy-inactive&quot;: 'inactive' from &quot;AllergyIntoleranceClinicalStatusCodes&quot;
code &quot;allergy-resolved&quot;: 'resolved' from &quot;AllergyIntoleranceClinicalStatusCodes&quot;

// Allergy/Intolerance Verification Status Codes - Consider value sets for these
code &quot;allergy-unconfirmed&quot;: 'unconfirmed' from AllergyIntoleranceVerificationStatusCodes
code &quot;allergy-confirmed&quot;: 'confirmed' from AllergyIntoleranceVerificationStatusCodes
code &quot;allergy-refuted&quot;: 'refuted' from AllergyIntoleranceVerificationStatusCodes

// MedicationRequest Category Codes
code &quot;Community&quot;: 'community' from &quot;MedicationRequestCategory&quot; display 'Community'
code &quot;Discharge&quot;: 'discharge' from &quot;MedicationRequestCategory&quot; display 'Discharge'

// Diagnosis Role Codes
code &quot;AD&quot;: 'AD' from &quot;Diagnosis Role&quot; display 'Admission diagnosis'
code &quot;DD&quot;: 'DD' from &quot;Diagnosis Role&quot; display 'Discharge diagnosis'
code &quot;CC&quot;: 'CC' from &quot;Diagnosis Role&quot; display 'Chief complaint'
code &quot;CM&quot;: 'CM' from &quot;Diagnosis Role&quot; display 'Comorbidity diagnosis'
code &quot;pre-op&quot;: 'pre-op' from &quot;Diagnosis Role&quot; display 'pre-op diagnosis'
code &quot;post-op&quot;: 'post-op' from &quot;Diagnosis Role&quot; display 'post-op diagnosis'
code &quot;billing&quot;: 'billing' from &quot;Diagnosis Role&quot; display 'billing diagnosis'

context Patient

/*
@description: Normalizes a value that is a choice of timing-valued types to an equivalent interval
@comment: Normalizes a choice type of FHIR.dateTime, FHIR.Period, FHIR.Timing, FHIR.instance, FHIR.string, FHIR.Age, or FHIR.Range types
to an equivalent interval. This selection of choice types is a superset of the majority of choice types that are used as possible
representations for timing-valued elements in FHIR, allowing this function to be used across any resource. NOTE: Due to the
complexity of determining a single interval from a Timing or String type, this function will throw a run-time exception if it is used
with a Timing or String.
*/
define function ToInterval(choice Choice&lt;FHIR.dateTime, FHIR.Period, FHIR.Timing, FHIR.instant, FHIR.string, FHIR.Age, FHIR.Range&gt;):
  case
	  when choice is FHIR.dateTime then
    	Interval[FHIRHelpers.ToDateTime(choice as FHIR.dateTime), FHIRHelpers.ToDateTime(choice as FHIR.dateTime)]
		when choice is FHIR.Period then
  		FHIRHelpers.ToInterval(choice as FHIR.Period)
		when choice is FHIR.instant then
			Interval[FHIRHelpers.ToDateTime(choice as FHIR.instant), FHIRHelpers.ToDateTime(choice as FHIR.instant)]
		when choice is FHIR.Age then
		  Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(choice as FHIR.Age),
			  FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(choice as FHIR.Age) + 1 year)
		when choice is FHIR.Range then
		  Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((choice as FHIR.Range).low),
			  FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((choice as FHIR.Range).high) + 1 year)
		when choice is FHIR.Timing then
		  Message(null as Interval&lt;DateTime&gt;, true, '1', 'Error', 'Cannot compute a single interval from a Timing type')
    when choice is FHIR.string then
      Message(null as Interval&lt;DateTime&gt;, true, '1', 'Error', 'Cannot compute an interval from a String value')
		else
			null as Interval&lt;DateTime&gt;
	end

/*
@description: Returns an interval representing the normalized Abatement of a given Condition resource.
@comment: NOTE: Due to the complexity of determining an interval from a String, this function will throw
a run-time exception if used with a Condition instance that has a String as the abatement value.
*/
define function ToAbatementInterval(condition Condition):
	if condition.abatement is FHIR.dateTime then
	  Interval[FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime), FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime)]
	else if condition.abatement is FHIR.Period then
	  FHIRHelpers.ToInterval(condition.abatement as FHIR.Period)
	else if condition.abatement is FHIR.string then
    Message(null as Interval&lt;DateTime&gt;, true, '1', 'Error', 'Cannot compute an interval from a String value')
	else if condition.abatement is FHIR.Age then
		Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age),
			FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age) + 1 year)
	else if condition.abatement is FHIR.Range then
	  Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).low),
		  FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).high) + 1 year)
	else if condition.abatement is FHIR.boolean then
	  Interval[end of ToInterval(condition.onset), condition.recordedDate)
	else null

/*
@description: Returns an interval representing the normalized prevalence period of a given Condition resource.
@comment: Uses the ToInterval and ToAbatementInterval functions to determine the widest potential interval from
onset to abatement as specified in the given Condition.
*/
define function ToPrevalenceInterval(condition Condition):
if condition.clinicalStatus ~ &quot;active&quot;
  or condition.clinicalStatus ~ &quot;recurrence&quot;
  or condition.clinicalStatus ~ &quot;relapse&quot; then
  Interval[start of ToInterval(condition.onset), end of ToAbatementInterval(condition)]
else
  Interval[start of ToInterval(condition.onset), end of ToAbatementInterval(condition))

/*
@description: Returns any extensions defined on the given resource with the specified url.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the
CQL model info.
*/
define function Extensions(domainResource DomainResource, url String):
  domainResource.extension E
	  where E.url = url
		return E

/*
@description: Returns the single extension (if present) on the given resource with the specified url.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function Extension(domainResource DomainResource, url String):
  singleton from &quot;Extensions&quot;(domainResource, url)

/*
@description: Returns any extensions defined on the given element with the specified url.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the CQL model info.
*/
define function Extensions(element Element, url String):
  element.extension E
	  where E.url = url
		return E

/*
@description: Returns the single extension (if present) on the given element with the specified url.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function Extension(element Element, url String):
  singleton from Extensions(element, url)

/*
@description: Returns any modifier extensions defined on the given resource with the specified url.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the
CQL model info.
*/
define function ModifierExtensions(domainResource DomainResource, url String):
  domainResource.modifierExtension E
	  where E.url = url
		return E

/*
@description: Returns the single modifier extension (if present) on the given resource with the specified url.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function ModifierExtension(domainResource DomainResource, url String):
  singleton from ModifierExtensions(domainResource, url)

/*
@description: Returns any modifier extensions defined on the given element with the specified url.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the CQL model info.
*/
define function ModifierExtensions(element BackboneElement, url String):
  element.modifierExtension E
	  where E.url = url
		return E

/*
@description: Returns the single modifier extension (if present) on the given element with the specified url.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function ModifierExtension(element BackboneElement, url String):
  singleton from ModifierExtensions(element, url)

/*
@description: Returns any base-FHIR extensions defined on the given resource with the specified id.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the CQL model info.
*/
define function BaseExtensions(domainResource DomainResource, id String):
  domainResource.extension E
	  where E.url = ('http://hl7.org/fhir/StructureDefinition/' + id)
		return E

/*
@description: Returns the single base-FHIR extension (if present) on the given resource with the specified id.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function BaseExtension(domainResource DomainResource, id String):
  singleton from BaseExtensions(domainResource, id)

/*
@description: Returns any base-FHIR extensions defined on the given element with the specified id.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the CQL model info.
*/
define function BaseExtensions(element Element, id String):
  element.extension E
	  where E.url = ('http://hl7.org/fhir/StructureDefinition/' + id)
		return E

/*
@description: Returns the single base-FHIR extension (if present) on the given element with the specified id.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function BaseExtension(element Element, id String):
  singleton from BaseExtensions(element, id)

/*
@description: Returns any base-FHIR modifier extensions defined on the given resource with the specified id.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the CQL model info.
*/
define function BaseModifierExtensions(domainResource DomainResource, id String):
  domainResource.modifierExtension E
	  where E.url = ('http://hl7.org/fhir/StructureDefinition/' + id)
		return E

/*
@description: Returns the single base-FHIR modifier extension (if present) on the given resource with the specified id.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function BaseModifierExtension(domainResource DomainResource, id String):
  singleton from BaseModifierExtensions(domainResource, id)

/*
@description: Returns any base-FHIR modifier extensions defined on the given element with the specified id.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the CQL model info.
*/
define function BaseModifierExtensions(element BackboneElement, id String):
  element.modifierExtension E
	  where E.url = ('http://hl7.org/fhir/StructureDefinition/' + id)
		return E

/*
@description: Returns the single base-FHIR extension (if present) on the given element with the specified id.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function BaseModifierExtension(element BackboneElement, id String):
  singleton from BaseModifierExtensions(element, id)
</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
        </text>
        <url value="http://fhir.org/guides/cqf/Library/FHIRCommon"/>
        <version value="4.0.1"/>
        <name value="FHIRCommon"/>
        <title value="FHIRCommon"/>
        <status value="draft"/>
        <experimental value="true"/>
        <type>
          <coding>
            <system
                    value="http://terminology.hl7.org/CodeSystem/library-type"/>
            <code value="logic-library"/>
            <display value="Logic Library"/>
          </coding>
        </type>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="FHIR model information"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Library FHIRHelpers"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system LOINC"/>
          <resource value="http://loinc.org"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system SNOMEDCT"/>
          <resource value="http://snomed.info/sct"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system RoleCode"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/v3-RoleCode"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system Diagnosis Role"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/diagnosis-role"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system RequestIntent"/>
          <resource value="http://hl7.org/fhir/request-intent"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system MedicationRequestCategory"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/medicationrequest-category"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system ConditionClinicalStatusCodes"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/condition-clinical"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system ConditionVerificationStatusCodes"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/condition-ver-status"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system AllergyIntoleranceClinicalStatusCodes"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display
                   value="Code system AllergyIntoleranceVerificationStatusCodes"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/allergyintolerance-verification"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Active Condition"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/ValueSet/active-condition"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Inactive Condition"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/ValueSet/inactive-condition"/>
        </relatedArtifact>
        <parameter>
          <name value="Patient"/>
          <use value="out"/>
          <min value="0"/>
          <max value="1"/>
          <type value="Patient"/>
        </parameter>
        <dataRequirement>
          <type value="Patient"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
        </dataRequirement>
        <content>
          <contentType value="text/cql"/>
          <data
                value="LyoNCkBhdXRob3I6IEJyeW4gUmhvZGVzDQpAZGVzY3JpcHRpb246IENvbW1vbiB0ZXJtaW5vbG9naWVzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbiBGSElSLWJhc2VkIENRTCBhcnRpZmFjdHMNCiovDQpsaWJyYXJ5IEZISVJDb21tb24gdmVyc2lvbiAnNC4wLjEnDQoNCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnDQoNCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnDQoNCmNvZGVzeXN0ZW0gIkxPSU5DIjogJ2h0dHA6Ly9sb2luYy5vcmcnDQpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0Jw0KY29kZXN5c3RlbSAiUm9sZUNvZGUiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS92My1Sb2xlQ29kZScNCmNvZGVzeXN0ZW0gIkRpYWdub3NpcyBSb2xlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vZGlhZ25vc2lzLXJvbGUnDQpjb2Rlc3lzdGVtICJSZXF1ZXN0SW50ZW50IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vcmVxdWVzdC1pbnRlbnQnDQpjb2Rlc3lzdGVtICJNZWRpY2F0aW9uUmVxdWVzdENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vbWVkaWNhdGlvbnJlcXVlc3QtY2F0ZWdvcnknDQpjb2Rlc3lzdGVtICJDb25kaXRpb25DbGluaWNhbFN0YXR1c0NvZGVzIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vY29uZGl0aW9uLWNsaW5pY2FsJw0KY29kZXN5c3RlbSAiQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jb25kaXRpb24tdmVyLXN0YXR1cycNCmNvZGVzeXN0ZW0gIkFsbGVyZ3lJbnRvbGVyYW5jZUNsaW5pY2FsU3RhdHVzQ29kZXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9hbGxlcmd5aW50b2xlcmFuY2UtY2xpbmljYWwnDQpjb2Rlc3lzdGVtICJBbGxlcmd5SW50b2xlcmFuY2VWZXJpZmljYXRpb25TdGF0dXNDb2RlcyI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2FsbGVyZ3lpbnRvbGVyYW5jZS12ZXJpZmljYXRpb24nDQoNCnZhbHVlc2V0ICJBY3RpdmUgQ29uZGl0aW9uIjogJ2h0dHA6Ly9maGlyLm9yZy9ndWlkZXMvY3FmL2NvbW1vbi9WYWx1ZVNldC9hY3RpdmUtY29uZGl0aW9uJw0KdmFsdWVzZXQgIkluYWN0aXZlIENvbmRpdGlvbiI6ICdodHRwOi8vZmhpci5vcmcvZ3VpZGVzL2NxZi9jb21tb24vVmFsdWVTZXQvaW5hY3RpdmUtY29uZGl0aW9uJw0KDQpjb2RlICJCaXJ0aGRhdGUiOiAnMjExMTItOCcgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ0JpcnRoIGRhdGUnDQpjb2RlICJEZWFkIjogJzQxOTA5OTAwOScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0RlYWQnDQpjb2RlICJFUiI6ICdFUicgZnJvbSAiUm9sZUNvZGUiIGRpc3BsYXkgJ0VtZXJnZW5jeSByb29tJw0KY29kZSAiSUNVIjogJ0lDVScgZnJvbSAiUm9sZUNvZGUiIGRpc3BsYXkgJ0ludGVuc2l2ZSBjYXJlIHVuaXQnDQpjb2RlICJCaWxsaW5nIjogJ2JpbGxpbmcnIGZyb20gIkRpYWdub3NpcyBSb2xlIiBkaXNwbGF5ICdCaWxsaW5nJw0KDQovLyBDb25kaXRpb24gQ2xpbmljYWwgU3RhdHVzIENvZGVzIC0gQ29uc2lkZXIgdmFsdWUgc2V0cyBmb3IgdGhlc2UNCmNvZGUgImFjdGl2ZSI6ICdhY3RpdmUnIGZyb20gIkNvbmRpdGlvbkNsaW5pY2FsU3RhdHVzQ29kZXMiDQpjb2RlICJyZWN1cnJlbmNlIjogJ3JlY3VycmVuY2UnIGZyb20gIkNvbmRpdGlvbkNsaW5pY2FsU3RhdHVzQ29kZXMiDQpjb2RlICJyZWxhcHNlIjogJ3JlbGFwc2UnIGZyb20gIkNvbmRpdGlvbkNsaW5pY2FsU3RhdHVzQ29kZXMiDQpjb2RlICJpbmFjdGl2ZSI6ICdpbmFjdGl2ZScgZnJvbSAiQ29uZGl0aW9uQ2xpbmljYWxTdGF0dXNDb2RlcyINCmNvZGUgInJlbWlzc2lvbiI6ICdyZW1pc3Npb24nIGZyb20gIkNvbmRpdGlvbkNsaW5pY2FsU3RhdHVzQ29kZXMiDQpjb2RlICJyZXNvbHZlZCI6ICdyZXNvbHZlZCcgZnJvbSAiQ29uZGl0aW9uQ2xpbmljYWxTdGF0dXNDb2RlcyINCg0KLy8gQ29uZGl0aW9uIFZlcmlmaWNhdGlvbiBTdGF0dXMgQ29kZXMgLSBDb25zaWRlciB2YWx1ZSBzZXRzIGZvciB0aGVzZQ0KY29kZSAidW5jb25maXJtZWQiOiAndW5jb25maXJtZWQnIGZyb20gQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMNCmNvZGUgInByb3Zpc2lvbmFsIjogJ3Byb3Zpc2lvbmFsJyBmcm9tIENvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzDQpjb2RlICJkaWZmZXJlbnRpYWwiOiAnZGlmZmVyZW50aWFsJyBmcm9tIENvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzDQpjb2RlICJjb25maXJtZWQiOiAnY29uZmlybWVkJyBmcm9tIENvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzDQpjb2RlICJyZWZ1dGVkIjogJ3JlZnV0ZWQnIGZyb20gQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMNCmNvZGUgImVudGVyZWQtaW4tZXJyb3IiOiAnZW50ZXJlZC1pbi1lcnJvcicgZnJvbSBDb25kaXRpb25WZXJpZmljYXRpb25TdGF0dXNDb2Rlcw0KDQpjb2RlICJhbGxlcmd5LWFjdGl2ZSI6ICdhY3RpdmUnIGZyb20gIkFsbGVyZ3lJbnRvbGVyYW5jZUNsaW5pY2FsU3RhdHVzQ29kZXMiDQpjb2RlICJhbGxlcmd5LWluYWN0aXZlIjogJ2luYWN0aXZlJyBmcm9tICJBbGxlcmd5SW50b2xlcmFuY2VDbGluaWNhbFN0YXR1c0NvZGVzIg0KY29kZSAiYWxsZXJneS1yZXNvbHZlZCI6ICdyZXNvbHZlZCcgZnJvbSAiQWxsZXJneUludG9sZXJhbmNlQ2xpbmljYWxTdGF0dXNDb2RlcyINCg0KLy8gQWxsZXJneS9JbnRvbGVyYW5jZSBWZXJpZmljYXRpb24gU3RhdHVzIENvZGVzIC0gQ29uc2lkZXIgdmFsdWUgc2V0cyBmb3IgdGhlc2UNCmNvZGUgImFsbGVyZ3ktdW5jb25maXJtZWQiOiAndW5jb25maXJtZWQnIGZyb20gQWxsZXJneUludG9sZXJhbmNlVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMNCmNvZGUgImFsbGVyZ3ktY29uZmlybWVkIjogJ2NvbmZpcm1lZCcgZnJvbSBBbGxlcmd5SW50b2xlcmFuY2VWZXJpZmljYXRpb25TdGF0dXNDb2Rlcw0KY29kZSAiYWxsZXJneS1yZWZ1dGVkIjogJ3JlZnV0ZWQnIGZyb20gQWxsZXJneUludG9sZXJhbmNlVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMNCg0KLy8gTWVkaWNhdGlvblJlcXVlc3QgQ2F0ZWdvcnkgQ29kZXMNCmNvZGUgIkNvbW11bml0eSI6ICdjb21tdW5pdHknIGZyb20gIk1lZGljYXRpb25SZXF1ZXN0Q2F0ZWdvcnkiIGRpc3BsYXkgJ0NvbW11bml0eScNCmNvZGUgIkRpc2NoYXJnZSI6ICdkaXNjaGFyZ2UnIGZyb20gIk1lZGljYXRpb25SZXF1ZXN0Q2F0ZWdvcnkiIGRpc3BsYXkgJ0Rpc2NoYXJnZScNCg0KLy8gRGlhZ25vc2lzIFJvbGUgQ29kZXMNCmNvZGUgIkFEIjogJ0FEJyBmcm9tICJEaWFnbm9zaXMgUm9sZSIgZGlzcGxheSAnQWRtaXNzaW9uIGRpYWdub3NpcycNCmNvZGUgIkREIjogJ0REJyBmcm9tICJEaWFnbm9zaXMgUm9sZSIgZGlzcGxheSAnRGlzY2hhcmdlIGRpYWdub3NpcycNCmNvZGUgIkNDIjogJ0NDJyBmcm9tICJEaWFnbm9zaXMgUm9sZSIgZGlzcGxheSAnQ2hpZWYgY29tcGxhaW50Jw0KY29kZSAiQ00iOiAnQ00nIGZyb20gIkRpYWdub3NpcyBSb2xlIiBkaXNwbGF5ICdDb21vcmJpZGl0eSBkaWFnbm9zaXMnDQpjb2RlICJwcmUtb3AiOiAncHJlLW9wJyBmcm9tICJEaWFnbm9zaXMgUm9sZSIgZGlzcGxheSAncHJlLW9wIGRpYWdub3NpcycNCmNvZGUgInBvc3Qtb3AiOiAncG9zdC1vcCcgZnJvbSAiRGlhZ25vc2lzIFJvbGUiIGRpc3BsYXkgJ3Bvc3Qtb3AgZGlhZ25vc2lzJw0KY29kZSAiYmlsbGluZyI6ICdiaWxsaW5nJyBmcm9tICJEaWFnbm9zaXMgUm9sZSIgZGlzcGxheSAnYmlsbGluZyBkaWFnbm9zaXMnDQoNCmNvbnRleHQgUGF0aWVudA0KDQovKg0KQGRlc2NyaXB0aW9uOiBOb3JtYWxpemVzIGEgdmFsdWUgdGhhdCBpcyBhIGNob2ljZSBvZiB0aW1pbmctdmFsdWVkIHR5cGVzIHRvIGFuIGVxdWl2YWxlbnQgaW50ZXJ2YWwNCkBjb21tZW50OiBOb3JtYWxpemVzIGEgY2hvaWNlIHR5cGUgb2YgRkhJUi5kYXRlVGltZSwgRkhJUi5QZXJpb2QsIEZISVIuVGltaW5nLCBGSElSLmluc3RhbmNlLCBGSElSLnN0cmluZywgRkhJUi5BZ2UsIG9yIEZISVIuUmFuZ2UgdHlwZXMNCnRvIGFuIGVxdWl2YWxlbnQgaW50ZXJ2YWwuIFRoaXMgc2VsZWN0aW9uIG9mIGNob2ljZSB0eXBlcyBpcyBhIHN1cGVyc2V0IG9mIHRoZSBtYWpvcml0eSBvZiBjaG9pY2UgdHlwZXMgdGhhdCBhcmUgdXNlZCBhcyBwb3NzaWJsZQ0KcmVwcmVzZW50YXRpb25zIGZvciB0aW1pbmctdmFsdWVkIGVsZW1lbnRzIGluIEZISVIsIGFsbG93aW5nIHRoaXMgZnVuY3Rpb24gdG8gYmUgdXNlZCBhY3Jvc3MgYW55IHJlc291cmNlLiBOT1RFOiBEdWUgdG8gdGhlDQpjb21wbGV4aXR5IG9mIGRldGVybWluaW5nIGEgc2luZ2xlIGludGVydmFsIGZyb20gYSBUaW1pbmcgb3IgU3RyaW5nIHR5cGUsIHRoaXMgZnVuY3Rpb24gd2lsbCB0aHJvdyBhIHJ1bi10aW1lIGV4Y2VwdGlvbiBpZiBpdCBpcyB1c2VkDQp3aXRoIGEgVGltaW5nIG9yIFN0cmluZy4NCiovDQpkZWZpbmUgZnVuY3Rpb24gVG9JbnRlcnZhbChjaG9pY2UgQ2hvaWNlPEZISVIuZGF0ZVRpbWUsIEZISVIuUGVyaW9kLCBGSElSLlRpbWluZywgRkhJUi5pbnN0YW50LCBGSElSLnN0cmluZywgRkhJUi5BZ2UsIEZISVIuUmFuZ2U+KToNCiAgY2FzZQ0KCSAgd2hlbiBjaG9pY2UgaXMgRkhJUi5kYXRlVGltZSB0aGVuDQogICAgCUludGVydmFsW0ZISVJIZWxwZXJzLlRvRGF0ZVRpbWUoY2hvaWNlIGFzIEZISVIuZGF0ZVRpbWUpLCBGSElSSGVscGVycy5Ub0RhdGVUaW1lKGNob2ljZSBhcyBGSElSLmRhdGVUaW1lKV0NCgkJd2hlbiBjaG9pY2UgaXMgRkhJUi5QZXJpb2QgdGhlbg0KICAJCUZISVJIZWxwZXJzLlRvSW50ZXJ2YWwoY2hvaWNlIGFzIEZISVIuUGVyaW9kKQ0KCQl3aGVuIGNob2ljZSBpcyBGSElSLmluc3RhbnQgdGhlbg0KCQkJSW50ZXJ2YWxbRkhJUkhlbHBlcnMuVG9EYXRlVGltZShjaG9pY2UgYXMgRkhJUi5pbnN0YW50KSwgRkhJUkhlbHBlcnMuVG9EYXRlVGltZShjaG9pY2UgYXMgRkhJUi5pbnN0YW50KV0NCgkJd2hlbiBjaG9pY2UgaXMgRkhJUi5BZ2UgdGhlbg0KCQkgIEludGVydmFsW0ZISVJIZWxwZXJzLlRvRGF0ZShQYXRpZW50LmJpcnRoRGF0ZSkgKyBGSElSSGVscGVycy5Ub1F1YW50aXR5KGNob2ljZSBhcyBGSElSLkFnZSksDQoJCQkgIEZISVJIZWxwZXJzLlRvRGF0ZShQYXRpZW50LmJpcnRoRGF0ZSkgKyBGSElSSGVscGVycy5Ub1F1YW50aXR5KGNob2ljZSBhcyBGSElSLkFnZSkgKyAxIHllYXIpDQoJCXdoZW4gY2hvaWNlIGlzIEZISVIuUmFuZ2UgdGhlbg0KCQkgIEludGVydmFsW0ZISVJIZWxwZXJzLlRvRGF0ZShQYXRpZW50LmJpcnRoRGF0ZSkgKyBGSElSSGVscGVycy5Ub1F1YW50aXR5KChjaG9pY2UgYXMgRkhJUi5SYW5nZSkubG93KSwNCgkJCSAgRkhJUkhlbHBlcnMuVG9EYXRlKFBhdGllbnQuYmlydGhEYXRlKSArIEZISVJIZWxwZXJzLlRvUXVhbnRpdHkoKGNob2ljZSBhcyBGSElSLlJhbmdlKS5oaWdoKSArIDEgeWVhcikNCgkJd2hlbiBjaG9pY2UgaXMgRkhJUi5UaW1pbmcgdGhlbg0KCQkgIE1lc3NhZ2UobnVsbCBhcyBJbnRlcnZhbDxEYXRlVGltZT4sIHRydWUsICcxJywgJ0Vycm9yJywgJ0Nhbm5vdCBjb21wdXRlIGEgc2luZ2xlIGludGVydmFsIGZyb20gYSBUaW1pbmcgdHlwZScpDQogICAgd2hlbiBjaG9pY2UgaXMgRkhJUi5zdHJpbmcgdGhlbg0KICAgICAgTWVzc2FnZShudWxsIGFzIEludGVydmFsPERhdGVUaW1lPiwgdHJ1ZSwgJzEnLCAnRXJyb3InLCAnQ2Fubm90IGNvbXB1dGUgYW4gaW50ZXJ2YWwgZnJvbSBhIFN0cmluZyB2YWx1ZScpDQoJCWVsc2UNCgkJCW51bGwgYXMgSW50ZXJ2YWw8RGF0ZVRpbWU+DQoJZW5kDQoNCi8qDQpAZGVzY3JpcHRpb246IFJldHVybnMgYW4gaW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBub3JtYWxpemVkIEFiYXRlbWVudCBvZiBhIGdpdmVuIENvbmRpdGlvbiByZXNvdXJjZS4NCkBjb21tZW50OiBOT1RFOiBEdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YgZGV0ZXJtaW5pbmcgYW4gaW50ZXJ2YWwgZnJvbSBhIFN0cmluZywgdGhpcyBmdW5jdGlvbiB3aWxsIHRocm93DQphIHJ1bi10aW1lIGV4Y2VwdGlvbiBpZiB1c2VkIHdpdGggYSBDb25kaXRpb24gaW5zdGFuY2UgdGhhdCBoYXMgYSBTdHJpbmcgYXMgdGhlIGFiYXRlbWVudCB2YWx1ZS4NCiovDQpkZWZpbmUgZnVuY3Rpb24gVG9BYmF0ZW1lbnRJbnRlcnZhbChjb25kaXRpb24gQ29uZGl0aW9uKToNCglpZiBjb25kaXRpb24uYWJhdGVtZW50IGlzIEZISVIuZGF0ZVRpbWUgdGhlbg0KCSAgSW50ZXJ2YWxbRkhJUkhlbHBlcnMuVG9EYXRlVGltZShjb25kaXRpb24uYWJhdGVtZW50IGFzIEZISVIuZGF0ZVRpbWUpLCBGSElSSGVscGVycy5Ub0RhdGVUaW1lKGNvbmRpdGlvbi5hYmF0ZW1lbnQgYXMgRkhJUi5kYXRlVGltZSldDQoJZWxzZSBpZiBjb25kaXRpb24uYWJhdGVtZW50IGlzIEZISVIuUGVyaW9kIHRoZW4NCgkgIEZISVJIZWxwZXJzLlRvSW50ZXJ2YWwoY29uZGl0aW9uLmFiYXRlbWVudCBhcyBGSElSLlBlcmlvZCkNCgllbHNlIGlmIGNvbmRpdGlvbi5hYmF0ZW1lbnQgaXMgRkhJUi5zdHJpbmcgdGhlbg0KICAgIE1lc3NhZ2UobnVsbCBhcyBJbnRlcnZhbDxEYXRlVGltZT4sIHRydWUsICcxJywgJ0Vycm9yJywgJ0Nhbm5vdCBjb21wdXRlIGFuIGludGVydmFsIGZyb20gYSBTdHJpbmcgdmFsdWUnKQ0KCWVsc2UgaWYgY29uZGl0aW9uLmFiYXRlbWVudCBpcyBGSElSLkFnZSB0aGVuDQoJCUludGVydmFsW0ZISVJIZWxwZXJzLlRvRGF0ZShQYXRpZW50LmJpcnRoRGF0ZSkgKyBGSElSSGVscGVycy5Ub1F1YW50aXR5KGNvbmRpdGlvbi5hYmF0ZW1lbnQgYXMgRkhJUi5BZ2UpLA0KCQkJRkhJUkhlbHBlcnMuVG9EYXRlKFBhdGllbnQuYmlydGhEYXRlKSArIEZISVJIZWxwZXJzLlRvUXVhbnRpdHkoY29uZGl0aW9uLmFiYXRlbWVudCBhcyBGSElSLkFnZSkgKyAxIHllYXIpDQoJZWxzZSBpZiBjb25kaXRpb24uYWJhdGVtZW50IGlzIEZISVIuUmFuZ2UgdGhlbg0KCSAgSW50ZXJ2YWxbRkhJUkhlbHBlcnMuVG9EYXRlKFBhdGllbnQuYmlydGhEYXRlKSArIEZISVJIZWxwZXJzLlRvUXVhbnRpdHkoKGNvbmRpdGlvbi5hYmF0ZW1lbnQgYXMgRkhJUi5SYW5nZSkubG93KSwNCgkJICBGSElSSGVscGVycy5Ub0RhdGUoUGF0aWVudC5iaXJ0aERhdGUpICsgRkhJUkhlbHBlcnMuVG9RdWFudGl0eSgoY29uZGl0aW9uLmFiYXRlbWVudCBhcyBGSElSLlJhbmdlKS5oaWdoKSArIDEgeWVhcikNCgllbHNlIGlmIGNvbmRpdGlvbi5hYmF0ZW1lbnQgaXMgRkhJUi5ib29sZWFuIHRoZW4NCgkgIEludGVydmFsW2VuZCBvZiBUb0ludGVydmFsKGNvbmRpdGlvbi5vbnNldCksIGNvbmRpdGlvbi5yZWNvcmRlZERhdGUpDQoJZWxzZSBudWxsDQoNCi8qDQpAZGVzY3JpcHRpb246IFJldHVybnMgYW4gaW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBub3JtYWxpemVkIHByZXZhbGVuY2UgcGVyaW9kIG9mIGEgZ2l2ZW4gQ29uZGl0aW9uIHJlc291cmNlLg0KQGNvbW1lbnQ6IFVzZXMgdGhlIFRvSW50ZXJ2YWwgYW5kIFRvQWJhdGVtZW50SW50ZXJ2YWwgZnVuY3Rpb25zIHRvIGRldGVybWluZSB0aGUgd2lkZXN0IHBvdGVudGlhbCBpbnRlcnZhbCBmcm9tDQpvbnNldCB0byBhYmF0ZW1lbnQgYXMgc3BlY2lmaWVkIGluIHRoZSBnaXZlbiBDb25kaXRpb24uDQoqLw0KZGVmaW5lIGZ1bmN0aW9uIFRvUHJldmFsZW5jZUludGVydmFsKGNvbmRpdGlvbiBDb25kaXRpb24pOg0KaWYgY29uZGl0aW9uLmNsaW5pY2FsU3RhdHVzIH4gImFjdGl2ZSINCiAgb3IgY29uZGl0aW9uLmNsaW5pY2FsU3RhdHVzIH4gInJlY3VycmVuY2UiDQogIG9yIGNvbmRpdGlvbi5jbGluaWNhbFN0YXR1cyB+ICJyZWxhcHNlIiB0aGVuDQogIEludGVydmFsW3N0YXJ0IG9mIFRvSW50ZXJ2YWwoY29uZGl0aW9uLm9uc2V0KSwgZW5kIG9mIFRvQWJhdGVtZW50SW50ZXJ2YWwoY29uZGl0aW9uKV0NCmVsc2UNCiAgSW50ZXJ2YWxbc3RhcnQgb2YgVG9JbnRlcnZhbChjb25kaXRpb24ub25zZXQpLCBlbmQgb2YgVG9BYmF0ZW1lbnRJbnRlcnZhbChjb25kaXRpb24pKQ0KDQovKg0KQGRlc2NyaXB0aW9uOiBSZXR1cm5zIGFueSBleHRlbnNpb25zIGRlZmluZWQgb24gdGhlIGdpdmVuIHJlc291cmNlIHdpdGggdGhlIHNwZWNpZmllZCB1cmwuDQpAY29tbWVudDogTk9URTogRXh0ZW5zaW9ucyBhcmUgbm90IHRoZSBwcmVmZXJyZWQgYXBwcm9hY2gsIGJ1dCBhcmUgdXNlZCBhcyBhIHdheSB0byBhY2Nlc3MNCmNvbnRlbnQgdGhhdCBpcyBkZWZpbmVkIGJ5IGV4dGVuc2lvbnMgYnV0IG5vdCB5ZXQgc3VyZmFjZWQgaW4gdGhlDQpDUUwgbW9kZWwgaW5mby4NCiovDQpkZWZpbmUgZnVuY3Rpb24gRXh0ZW5zaW9ucyhkb21haW5SZXNvdXJjZSBEb21haW5SZXNvdXJjZSwgdXJsIFN0cmluZyk6DQogIGRvbWFpblJlc291cmNlLmV4dGVuc2lvbiBFDQoJICB3aGVyZSBFLnVybCA9IHVybA0KCQlyZXR1cm4gRQ0KDQovKg0KQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRoZSBzaW5nbGUgZXh0ZW5zaW9uIChpZiBwcmVzZW50KSBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVybC4NCkBjb21tZW50OiBUaGlzIGZ1bmN0aW9uIHVzZXMgc2luZ2xldG9uIGZyb20gdG8gZW5zdXJlIHRoYXQgYSBydW4tdGltZSBleGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZXJlDQppcyBtb3JlIHRoYW4gb25lIGV4dGVuc2lvbiBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVybC4NCiovDQpkZWZpbmUgZnVuY3Rpb24gRXh0ZW5zaW9uKGRvbWFpblJlc291cmNlIERvbWFpblJlc291cmNlLCB1cmwgU3RyaW5nKToNCiAgc2luZ2xldG9uIGZyb20gIkV4dGVuc2lvbnMiKGRvbWFpblJlc291cmNlLCB1cmwpDQoNCi8qDQpAZGVzY3JpcHRpb246IFJldHVybnMgYW55IGV4dGVuc2lvbnMgZGVmaW5lZCBvbiB0aGUgZ2l2ZW4gZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgdXJsLg0KQGNvbW1lbnQ6IE5PVEU6IEV4dGVuc2lvbnMgYXJlIG5vdCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoLCBidXQgYXJlIHVzZWQgYXMgYSB3YXkgdG8gYWNjZXNzDQpjb250ZW50IHRoYXQgaXMgZGVmaW5lZCBieSBleHRlbnNpb25zIGJ1dCBub3QgeWV0IHN1cmZhY2VkIGluIHRoZSBDUUwgbW9kZWwgaW5mby4NCiovDQpkZWZpbmUgZnVuY3Rpb24gRXh0ZW5zaW9ucyhlbGVtZW50IEVsZW1lbnQsIHVybCBTdHJpbmcpOg0KICBlbGVtZW50LmV4dGVuc2lvbiBFDQoJICB3aGVyZSBFLnVybCA9IHVybA0KCQlyZXR1cm4gRQ0KDQovKg0KQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRoZSBzaW5nbGUgZXh0ZW5zaW9uIChpZiBwcmVzZW50KSBvbiB0aGUgZ2l2ZW4gZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgdXJsLg0KQGNvbW1lbnQ6IFRoaXMgZnVuY3Rpb24gdXNlcyBzaW5nbGV0b24gZnJvbSB0byBlbnN1cmUgdGhhdCBhIHJ1bi10aW1lIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlcmUNCmlzIG1vcmUgdGhhbiBvbmUgZXh0ZW5zaW9uIG9uIHRoZSBnaXZlbiByZXNvdXJjZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXJsLg0KKi8NCmRlZmluZSBmdW5jdGlvbiBFeHRlbnNpb24oZWxlbWVudCBFbGVtZW50LCB1cmwgU3RyaW5nKToNCiAgc2luZ2xldG9uIGZyb20gRXh0ZW5zaW9ucyhlbGVtZW50LCB1cmwpDQoNCi8qDQpAZGVzY3JpcHRpb246IFJldHVybnMgYW55IG1vZGlmaWVyIGV4dGVuc2lvbnMgZGVmaW5lZCBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVybC4NCkBjb21tZW50OiBOT1RFOiBFeHRlbnNpb25zIGFyZSBub3QgdGhlIHByZWZlcnJlZCBhcHByb2FjaCwgYnV0IGFyZSB1c2VkIGFzIGEgd2F5IHRvIGFjY2Vzcw0KY29udGVudCB0aGF0IGlzIGRlZmluZWQgYnkgZXh0ZW5zaW9ucyBidXQgbm90IHlldCBzdXJmYWNlZCBpbiB0aGUNCkNRTCBtb2RlbCBpbmZvLg0KKi8NCmRlZmluZSBmdW5jdGlvbiBNb2RpZmllckV4dGVuc2lvbnMoZG9tYWluUmVzb3VyY2UgRG9tYWluUmVzb3VyY2UsIHVybCBTdHJpbmcpOg0KICBkb21haW5SZXNvdXJjZS5tb2RpZmllckV4dGVuc2lvbiBFDQoJICB3aGVyZSBFLnVybCA9IHVybA0KCQlyZXR1cm4gRQ0KDQovKg0KQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRoZSBzaW5nbGUgbW9kaWZpZXIgZXh0ZW5zaW9uIChpZiBwcmVzZW50KSBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVybC4NCkBjb21tZW50OiBUaGlzIGZ1bmN0aW9uIHVzZXMgc2luZ2xldG9uIGZyb20gdG8gZW5zdXJlIHRoYXQgYSBydW4tdGltZSBleGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZXJlDQppcyBtb3JlIHRoYW4gb25lIGV4dGVuc2lvbiBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVybC4NCiovDQpkZWZpbmUgZnVuY3Rpb24gTW9kaWZpZXJFeHRlbnNpb24oZG9tYWluUmVzb3VyY2UgRG9tYWluUmVzb3VyY2UsIHVybCBTdHJpbmcpOg0KICBzaW5nbGV0b24gZnJvbSBNb2RpZmllckV4dGVuc2lvbnMoZG9tYWluUmVzb3VyY2UsIHVybCkNCg0KLyoNCkBkZXNjcmlwdGlvbjogUmV0dXJucyBhbnkgbW9kaWZpZXIgZXh0ZW5zaW9ucyBkZWZpbmVkIG9uIHRoZSBnaXZlbiBlbGVtZW50IHdpdGggdGhlIHNwZWNpZmllZCB1cmwuDQpAY29tbWVudDogTk9URTogRXh0ZW5zaW9ucyBhcmUgbm90IHRoZSBwcmVmZXJyZWQgYXBwcm9hY2gsIGJ1dCBhcmUgdXNlZCBhcyBhIHdheSB0byBhY2Nlc3MNCmNvbnRlbnQgdGhhdCBpcyBkZWZpbmVkIGJ5IGV4dGVuc2lvbnMgYnV0IG5vdCB5ZXQgc3VyZmFjZWQgaW4gdGhlIENRTCBtb2RlbCBpbmZvLg0KKi8NCmRlZmluZSBmdW5jdGlvbiBNb2RpZmllckV4dGVuc2lvbnMoZWxlbWVudCBCYWNrYm9uZUVsZW1lbnQsIHVybCBTdHJpbmcpOg0KICBlbGVtZW50Lm1vZGlmaWVyRXh0ZW5zaW9uIEUNCgkgIHdoZXJlIEUudXJsID0gdXJsDQoJCXJldHVybiBFDQoNCi8qDQpAZGVzY3JpcHRpb246IFJldHVybnMgdGhlIHNpbmdsZSBtb2RpZmllciBleHRlbnNpb24gKGlmIHByZXNlbnQpIG9uIHRoZSBnaXZlbiBlbGVtZW50IHdpdGggdGhlIHNwZWNpZmllZCB1cmwuDQpAY29tbWVudDogVGhpcyBmdW5jdGlvbiB1c2VzIHNpbmdsZXRvbiBmcm9tIHRvIGVuc3VyZSB0aGF0IGEgcnVuLXRpbWUgZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGVyZQ0KaXMgbW9yZSB0aGFuIG9uZSBleHRlbnNpb24gb24gdGhlIGdpdmVuIHJlc291cmNlIHdpdGggdGhlIHNwZWNpZmllZCB1cmwuDQoqLw0KZGVmaW5lIGZ1bmN0aW9uIE1vZGlmaWVyRXh0ZW5zaW9uKGVsZW1lbnQgQmFja2JvbmVFbGVtZW50LCB1cmwgU3RyaW5nKToNCiAgc2luZ2xldG9uIGZyb20gTW9kaWZpZXJFeHRlbnNpb25zKGVsZW1lbnQsIHVybCkNCg0KLyoNCkBkZXNjcmlwdGlvbjogUmV0dXJucyBhbnkgYmFzZS1GSElSIGV4dGVuc2lvbnMgZGVmaW5lZCBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGlkLg0KQGNvbW1lbnQ6IE5PVEU6IEV4dGVuc2lvbnMgYXJlIG5vdCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoLCBidXQgYXJlIHVzZWQgYXMgYSB3YXkgdG8gYWNjZXNzDQpjb250ZW50IHRoYXQgaXMgZGVmaW5lZCBieSBleHRlbnNpb25zIGJ1dCBub3QgeWV0IHN1cmZhY2VkIGluIHRoZSBDUUwgbW9kZWwgaW5mby4NCiovDQpkZWZpbmUgZnVuY3Rpb24gQmFzZUV4dGVuc2lvbnMoZG9tYWluUmVzb3VyY2UgRG9tYWluUmVzb3VyY2UsIGlkIFN0cmluZyk6DQogIGRvbWFpblJlc291cmNlLmV4dGVuc2lvbiBFDQoJICB3aGVyZSBFLnVybCA9ICgnaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uLycgKyBpZCkNCgkJcmV0dXJuIEUNCg0KLyoNCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0aGUgc2luZ2xlIGJhc2UtRkhJUiBleHRlbnNpb24gKGlmIHByZXNlbnQpIG9uIHRoZSBnaXZlbiByZXNvdXJjZSB3aXRoIHRoZSBzcGVjaWZpZWQgaWQuDQpAY29tbWVudDogVGhpcyBmdW5jdGlvbiB1c2VzIHNpbmdsZXRvbiBmcm9tIHRvIGVuc3VyZSB0aGF0IGEgcnVuLXRpbWUgZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGVyZQ0KaXMgbW9yZSB0aGFuIG9uZSBleHRlbnNpb24gb24gdGhlIGdpdmVuIHJlc291cmNlIHdpdGggdGhlIHNwZWNpZmllZCB1cmwuDQoqLw0KZGVmaW5lIGZ1bmN0aW9uIEJhc2VFeHRlbnNpb24oZG9tYWluUmVzb3VyY2UgRG9tYWluUmVzb3VyY2UsIGlkIFN0cmluZyk6DQogIHNpbmdsZXRvbiBmcm9tIEJhc2VFeHRlbnNpb25zKGRvbWFpblJlc291cmNlLCBpZCkNCg0KLyoNCkBkZXNjcmlwdGlvbjogUmV0dXJucyBhbnkgYmFzZS1GSElSIGV4dGVuc2lvbnMgZGVmaW5lZCBvbiB0aGUgZ2l2ZW4gZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgaWQuDQpAY29tbWVudDogTk9URTogRXh0ZW5zaW9ucyBhcmUgbm90IHRoZSBwcmVmZXJyZWQgYXBwcm9hY2gsIGJ1dCBhcmUgdXNlZCBhcyBhIHdheSB0byBhY2Nlc3MNCmNvbnRlbnQgdGhhdCBpcyBkZWZpbmVkIGJ5IGV4dGVuc2lvbnMgYnV0IG5vdCB5ZXQgc3VyZmFjZWQgaW4gdGhlIENRTCBtb2RlbCBpbmZvLg0KKi8NCmRlZmluZSBmdW5jdGlvbiBCYXNlRXh0ZW5zaW9ucyhlbGVtZW50IEVsZW1lbnQsIGlkIFN0cmluZyk6DQogIGVsZW1lbnQuZXh0ZW5zaW9uIEUNCgkgIHdoZXJlIEUudXJsID0gKCdodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vJyArIGlkKQ0KCQlyZXR1cm4gRQ0KDQovKg0KQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRoZSBzaW5nbGUgYmFzZS1GSElSIGV4dGVuc2lvbiAoaWYgcHJlc2VudCkgb24gdGhlIGdpdmVuIGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGlkLg0KQGNvbW1lbnQ6IFRoaXMgZnVuY3Rpb24gdXNlcyBzaW5nbGV0b24gZnJvbSB0byBlbnN1cmUgdGhhdCBhIHJ1bi10aW1lIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlcmUNCmlzIG1vcmUgdGhhbiBvbmUgZXh0ZW5zaW9uIG9uIHRoZSBnaXZlbiByZXNvdXJjZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXJsLg0KKi8NCmRlZmluZSBmdW5jdGlvbiBCYXNlRXh0ZW5zaW9uKGVsZW1lbnQgRWxlbWVudCwgaWQgU3RyaW5nKToNCiAgc2luZ2xldG9uIGZyb20gQmFzZUV4dGVuc2lvbnMoZWxlbWVudCwgaWQpDQoNCi8qDQpAZGVzY3JpcHRpb246IFJldHVybnMgYW55IGJhc2UtRkhJUiBtb2RpZmllciBleHRlbnNpb25zIGRlZmluZWQgb24gdGhlIGdpdmVuIHJlc291cmNlIHdpdGggdGhlIHNwZWNpZmllZCBpZC4NCkBjb21tZW50OiBOT1RFOiBFeHRlbnNpb25zIGFyZSBub3QgdGhlIHByZWZlcnJlZCBhcHByb2FjaCwgYnV0IGFyZSB1c2VkIGFzIGEgd2F5IHRvIGFjY2Vzcw0KY29udGVudCB0aGF0IGlzIGRlZmluZWQgYnkgZXh0ZW5zaW9ucyBidXQgbm90IHlldCBzdXJmYWNlZCBpbiB0aGUgQ1FMIG1vZGVsIGluZm8uDQoqLw0KZGVmaW5lIGZ1bmN0aW9uIEJhc2VNb2RpZmllckV4dGVuc2lvbnMoZG9tYWluUmVzb3VyY2UgRG9tYWluUmVzb3VyY2UsIGlkIFN0cmluZyk6DQogIGRvbWFpblJlc291cmNlLm1vZGlmaWVyRXh0ZW5zaW9uIEUNCgkgIHdoZXJlIEUudXJsID0gKCdodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vJyArIGlkKQ0KCQlyZXR1cm4gRQ0KDQovKg0KQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRoZSBzaW5nbGUgYmFzZS1GSElSIG1vZGlmaWVyIGV4dGVuc2lvbiAoaWYgcHJlc2VudCkgb24gdGhlIGdpdmVuIHJlc291cmNlIHdpdGggdGhlIHNwZWNpZmllZCBpZC4NCkBjb21tZW50OiBUaGlzIGZ1bmN0aW9uIHVzZXMgc2luZ2xldG9uIGZyb20gdG8gZW5zdXJlIHRoYXQgYSBydW4tdGltZSBleGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZXJlDQppcyBtb3JlIHRoYW4gb25lIGV4dGVuc2lvbiBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVybC4NCiovDQpkZWZpbmUgZnVuY3Rpb24gQmFzZU1vZGlmaWVyRXh0ZW5zaW9uKGRvbWFpblJlc291cmNlIERvbWFpblJlc291cmNlLCBpZCBTdHJpbmcpOg0KICBzaW5nbGV0b24gZnJvbSBCYXNlTW9kaWZpZXJFeHRlbnNpb25zKGRvbWFpblJlc291cmNlLCBpZCkNCg0KLyoNCkBkZXNjcmlwdGlvbjogUmV0dXJucyBhbnkgYmFzZS1GSElSIG1vZGlmaWVyIGV4dGVuc2lvbnMgZGVmaW5lZCBvbiB0aGUgZ2l2ZW4gZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgaWQuDQpAY29tbWVudDogTk9URTogRXh0ZW5zaW9ucyBhcmUgbm90IHRoZSBwcmVmZXJyZWQgYXBwcm9hY2gsIGJ1dCBhcmUgdXNlZCBhcyBhIHdheSB0byBhY2Nlc3MNCmNvbnRlbnQgdGhhdCBpcyBkZWZpbmVkIGJ5IGV4dGVuc2lvbnMgYnV0IG5vdCB5ZXQgc3VyZmFjZWQgaW4gdGhlIENRTCBtb2RlbCBpbmZvLg0KKi8NCmRlZmluZSBmdW5jdGlvbiBCYXNlTW9kaWZpZXJFeHRlbnNpb25zKGVsZW1lbnQgQmFja2JvbmVFbGVtZW50LCBpZCBTdHJpbmcpOg0KICBlbGVtZW50Lm1vZGlmaWVyRXh0ZW5zaW9uIEUNCgkgIHdoZXJlIEUudXJsID0gKCdodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vJyArIGlkKQ0KCQlyZXR1cm4gRQ0KDQovKg0KQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRoZSBzaW5nbGUgYmFzZS1GSElSIGV4dGVuc2lvbiAoaWYgcHJlc2VudCkgb24gdGhlIGdpdmVuIGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGlkLg0KQGNvbW1lbnQ6IFRoaXMgZnVuY3Rpb24gdXNlcyBzaW5nbGV0b24gZnJvbSB0byBlbnN1cmUgdGhhdCBhIHJ1bi10aW1lIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlcmUNCmlzIG1vcmUgdGhhbiBvbmUgZXh0ZW5zaW9uIG9uIHRoZSBnaXZlbiByZXNvdXJjZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXJsLg0KKi8NCmRlZmluZSBmdW5jdGlvbiBCYXNlTW9kaWZpZXJFeHRlbnNpb24oZWxlbWVudCBCYWNrYm9uZUVsZW1lbnQsIGlkIFN0cmluZyk6DQogIHNpbmdsZXRvbiBmcm9tIEJhc2VNb2RpZmllckV4dGVuc2lvbnMoZWxlbWVudCwgaWQpDQo="/>
        </content>
      </Library>
    </resource>
    <request>
      <method value="PUT"/>
      <url value="Library/FHIRCommon"/>
    </request>
  </entry>
  <entry>
    <fullUrl value="urn:uuid:b3463968-f67d-42ef-8494-cd4ea42e87b9"/>
    <resource>
      <Library>
        <id value="MATGlobalCommonFunctionsFHIR4"/>
        <text>
          <status value="extensions"/>
          <div xmlns="http://www.w3.org/1999/xhtml"><a name="Library_MATGlobalCommonFunctionsFHIR4"> </a>
<div>
    <table class="grid dict">
        
        
        <tr>
            <th scope="row"><b>Title: </b></th>
            <td style="padding-left: 4px;">MAT Global Common Functions FHIRR4</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">MATGlobalCommonFunctionsFHIR4</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Version: </b></th>
            <td style="padding-left: 4px;">6.1.000</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="Bundle-sde-example-artifact-bundle.html">MAT Global Common Functions FHIRR4</a></td>
        </tr>
        

        

        

        
        <tr>
            <th scope="row"><b>Status: </b></th>
            <td style="padding-left: 4px;">draft</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Experimental: </b></th>
            <td style="padding-left: 4px;">true</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Type: </b></th>
            <td style="padding-left: 4px;">
                
                    
                        
                        <p style="margin-bottom: 5px;">
                            <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>code: </b> <span>logic-library</span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>display: </b> <span>Logic Library</span>
                        </p>
                        
                    
                
                
            </td>
        </tr>
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        
        <tr>
            <th scope="row"><b>Related Artifacts: </b></th>
            <td style="padding-left: 4px;">
                
                
                
                <p><b>Dependencies</b></p>
                <ul>
                  
                    <li><a href="http://fhir.org/guides/cqf/common/4.0.1/4.0.1/Library-FHIR-ModelInfo.html">http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1</a></li>
                  
                    <li><a href="Bundle-sde-example-artifact-bundle.html">FHIR Helpersversion: null4.0.1)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-condition-clinical.html">Condition Clinical Status Codes</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-allergyintolerance-clinical.html">AllergyIntolerance Clinical Status Codes</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-allergyintolerance-verification.html">AllergyIntolerance Verification Status</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-diagnosis-role.html">Diagnosis Role</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">Logical Observation Identifiers, Names and Codes (LOINC)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-medicationrequest-category.html">MedicationRequest Category Codes</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-condition-ver-status.html">ConditionVerificationStatus</a></li>
                  
                    <li><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">SNOMED CT (all versions)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-RoleCode.html">RoleCode</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.117.1.7.1.292/expansion">Emergency Department Visit</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion">Encounter Inpatient</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1111.143/expansion">Observation Services</a></li>
                  
                </ul>
                
                
                
                
                
            </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Parameters: </b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>
              
                <tr><th>Measurement Period</th><th>Period</th><th>0</th><th>1</th><th>In</th></tr>
              
                <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Inpatient Encounter</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
            </table>
          </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Data Requirements:</b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>
              
                <tr>
                  <th>Patient</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Patient</th>
                  <th/>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Condition</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Condition</th>
                  <th>;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Location</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Location</th>
                  <th>;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Provenance</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Provenance</th>
                  <th>;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>target</span>
                      </span>
                      
                      
                      
                      
                    
                  </th>
                </tr>
              
            </table>
          </td>
        </tr>
        

        
        
        <tr>
          <td colspan="2">
            <table>
              <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
              <tr><td><pre><code class="language-cql">library MATGlobalCommonFunctionsFHIR4 version '6.1.000'

/*@update: BTR 2020-03-31 -&gt;
Incremented version to 5.0.000
Updated FHIR version to 4.0.1
Changed timezone keyword to timezoneoffset for use with CQL 1.4
Removed Normalize Onset in favor of more general Normalize Interval
Updated CodeSystems for ConditionVerificationStatusCodes and RoleCodes

@update: BTR 2021-05-13 -&gt;
Added ActiveCondition Codes and Inactive Condition Codes value sets
Added function documentation throughout
Fixed EDVisit not using Last
Updated prevalence period to use an inclusive boundary if the condition is active
Added HasStart, HasEnd, Earliest, and Latest functions
Removed ToDate and Age calculation functions

@update: BTR 2021-06-25 -&gt;
Added GetBaseExtension overloads for Element*/

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.1' called FHIRHelpers

codesystem &quot;ConditionClinicalStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/condition-clinical' 
codesystem &quot;AllergyIntoleranceClinicalStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical' 
codesystem &quot;AllergyIntoleranceVerificationStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/allergyintolerance-verification' 
codesystem &quot;Diagnosis Role&quot;: 'http://terminology.hl7.org/CodeSystem/diagnosis-role' 
codesystem &quot;LOINC&quot;: 'http://loinc.org' 
codesystem &quot;MedicationRequestCategory&quot;: 'http://terminology.hl7.org/CodeSystem/medicationrequest-category' 
codesystem &quot;ConditionVerificationStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/condition-ver-status' 
codesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct' 
codesystem &quot;RoleCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-RoleCode' 

valueset &quot;Emergency Department Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292' 
valueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307' 
valueset &quot;Observation Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143' 

code &quot;active&quot;: 'active' from &quot;ConditionClinicalStatusCodes&quot; display 'active'
code &quot;allergy-active&quot;: 'active' from &quot;AllergyIntoleranceClinicalStatusCodes&quot; display 'allergy-active'
code &quot;allergy-confirmed&quot;: 'confirmed' from &quot;AllergyIntoleranceVerificationStatusCodes&quot; display 'allergy-confirmed'
code &quot;allergy-inactive&quot;: 'inactive' from &quot;AllergyIntoleranceClinicalStatusCodes&quot; display 'allergy-inactive'
code &quot;allergy-refuted&quot;: 'refuted' from &quot;AllergyIntoleranceVerificationStatusCodes&quot; display 'allergy-refuted'
code &quot;allergy-resolved&quot;: 'resolved' from &quot;AllergyIntoleranceClinicalStatusCodes&quot; display 'allergy-resolved'
code &quot;allergy-unconfirmed&quot;: 'unconfirmed' from &quot;AllergyIntoleranceVerificationStatusCodes&quot; display 'allergy-unconfirmed'
code &quot;Billing&quot;: 'billing' from &quot;Diagnosis Role&quot; display 'Billing'
code &quot;Birthdate&quot;: '21112-8' from &quot;LOINC&quot; display 'Birth date'
code &quot;Community&quot;: 'community' from &quot;MedicationRequestCategory&quot; display 'Community'
code &quot;confirmed&quot;: 'confirmed' from &quot;ConditionVerificationStatusCodes&quot; display 'confirmed'
code &quot;Dead&quot;: '419099009' from &quot;SNOMEDCT&quot; display 'Dead'
code &quot;differential&quot;: 'differential' from &quot;ConditionVerificationStatusCodes&quot; display 'differential'
code &quot;Discharge&quot;: 'discharge' from &quot;MedicationRequestCategory&quot; display 'Discharge'
code &quot;entered-in-error&quot;: 'entered-in-error' from &quot;ConditionVerificationStatusCodes&quot; display 'entered-in-error'
code &quot;ER&quot;: 'ER' from &quot;RoleCode&quot; display 'Emergency room'
code &quot;ICU&quot;: 'ICU' from &quot;RoleCode&quot; display 'Intensive care unit'
code &quot;inactive&quot;: 'inactive' from &quot;ConditionClinicalStatusCodes&quot; display 'inactive'
code &quot;provisional&quot;: 'provisional' from &quot;ConditionVerificationStatusCodes&quot; display 'provisional'
code &quot;recurrence&quot;: 'recurrence' from &quot;ConditionClinicalStatusCodes&quot; display 'recurrence'
code &quot;refuted&quot;: 'refuted' from &quot;ConditionVerificationStatusCodes&quot; display 'refuted'
code &quot;relapse&quot;: 'relapse' from &quot;ConditionClinicalStatusCodes&quot; display 'relapse'
code &quot;remission&quot;: 'remission' from &quot;ConditionClinicalStatusCodes&quot; display 'remission'
code &quot;resolved&quot;: 'resolved' from &quot;ConditionClinicalStatusCodes&quot; display 'resolved'
code &quot;unconfirmed&quot;: 'unconfirmed' from &quot;ConditionVerificationStatusCodes&quot; display 'unconfirmed'

parameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;
  default Interval[@2019-01-01T00:00:00.0, @2020-01-01T00:00:00.0)

context Patient

define &quot;Inpatient Encounter&quot;:
  [Encounter: &quot;Encounter Inpatient&quot;] EncounterInpatient
      		where EncounterInpatient.status = 'finished'
      		    and &quot;LengthInDays&quot;(EncounterInpatient.period) &lt;= 120
      			and EncounterInpatient.period ends during &quot;Measurement Period&quot;

/*Calculates the difference in calendar days between the start and end of the given interval.*/
define function &quot;LengthInDays&quot;(Value Interval&lt;DateTime&gt; ):
  difference in days between start of Value and end of Value

/*Returns the most recent emergency department visit, if any, that occurs 1 hour or less prior to the given encounter.*/
define function &quot;ED Visit&quot;(TheEncounter FHIR.Encounter ):
  Last(
    [Encounter: &quot;Emergency Department Visit&quot;] EDVisit
      where EDVisit.status = 'finished'
        and EDVisit.period ends 1 hour or less on or before start of FHIRHelpers.ToInterval(TheEncounter.period)
      sort by end of period
    )

/*Hospitalization returns the total interval for admission to discharge for the given encounter, or for the admission of any immediately prior emergency department visit to the discharge of the given encounter.*/
define function &quot;Hospitalization&quot;(TheEncounter FHIR.Encounter ):
  ( &quot;ED Visit&quot;(TheEncounter) ) X
    return
        if X is null then TheEncounter.period
        else Interval[start of FHIRHelpers.ToInterval(X.period), end of FHIRHelpers.ToInterval(TheEncounter.period)]

/*Returns list of all locations within an encounter, including locations for immediately prior ED visit.*/
define function &quot;Hospitalization Locations&quot;(TheEncounter FHIR.Encounter ):
  ( &quot;ED Visit&quot;(TheEncounter) ) EDEncounter
    return
        if EDEncounter is null then TheEncounter.location
        else flatten { EDEncounter.location, TheEncounter.location }

/*Returns the length of stay in days (i.e. the number of days between admission and discharge) for the given encounter, or from the admission of any immediately prior emergency department visit to the discharge of the encounter*/
define function &quot;Hospitalization Length of Stay&quot;(TheEncounter FHIR.Encounter ):
  LengthInDays(&quot;Hospitalization&quot;(TheEncounter))

/*Returns admission time for an encounter or for immediately prior emergency department visit.*/
define function &quot;Hospital Admission Time&quot;(TheEncounter FHIR.Encounter ):
  start of &quot;Hospitalization&quot;(TheEncounter)

/*Hospital Discharge Time returns the discharge time for an encounter*/
define function &quot;Hospital Discharge Time&quot;(TheEncounter FHIR.Encounter ):
  end of FHIRHelpers.ToInterval(TheEncounter.period)

/*Returns earliest arrival time for an encounter including any prior ED visit.*/
define function &quot;Hospital Arrival Time&quot;(TheEncounter FHIR.Encounter ):
  start of FHIRHelpers.ToInterval(First(
  	    ( &quot;Hospitalization Locations&quot;(TheEncounter) ) HospitalLocation
  			sort by start of FHIRHelpers.ToInterval(period)
  	).period)
  
  // TODO - fix these (must fetch Location resources and compare id to reference)
  /*Returns the latest departure time for encounter including any prior ED visit. */
  /*
  define function &quot;Hospital Departure Time&quot;(TheEncounter FHIR.Encounter):
  	end of FHIRHelpers.ToInterval(Last(
  	    ( &quot;Hospitalization Locations&quot;(TheEncounter) ) HospitalLocation
  			sort by start of FHIRHelpers.ToInterval(period)
  	).period)
  
  define function &quot;Emergency Department Arrival Time&quot;(TheEncounter FHIR.Encounter):
  	start of FHIRHelpers.ToInterval((
  	    singleton from (
  	        ( &quot;Hospitalization Locations&quot;(TheEncounter) ) HospitalLocation
  				where HospitalLocation.type ~ &quot;ER&quot;
  		)
  	).period)
  
  define function &quot;First Inpatient Intensive Care Unit&quot;(TheEncounter FHIR.Encounter):
  	First(
  	    ( TheEncounter.location ) HospitalLocation
  			where HospitalLocation.type ~ &quot;ICU&quot;
  				and HospitalLocation.period during TheEncounter.period
  			sort by start of FHIRHelpers.ToInterval(period)
  	)
  */
  
  /*Hospitalization with Observation and Outpatient Surgery Service returns the total interval from the start of any immediately prior emergency department visit, outpatient surgery visit or observation visit to the discharge of the given encounter.*/
  /* TODO:
  define function &quot;HospitalizationWithObservationAndOutpatientSurgeryService&quot;(Encounter &quot;Encounter, Performed&quot; ):
  Encounter Visit
  	let ObsVisit: Last([&quot;Encounter, Performed&quot;: &quot;Observation Services&quot;] LastObs
  			where LastObs.relevantPeriod ends 1 hour or less on or before start of Visit.relevantPeriod
  			sort by
  			end of relevantPeriod
  	),
  	VisitStart: Coalesce(start of ObsVisit.relevantPeriod, start of Visit.relevantPeriod),
  	EDVisit: Last([&quot;Encounter, Performed&quot;: &quot;Emergency Department Visit&quot;] LastED
  			where LastED.relevantPeriod ends 1 hour or less on or before VisitStart
  			sort by
  			end of relevantPeriod
  	),
  	VisitStartWithED: Coalesce(start of EDVisit.relevantPeriod, VisitStart),
  	OutpatientSurgeryVisit: Last([&quot;Encounter, Performed&quot;: &quot;Outpatient Surgery Service&quot;] LastSurgeryOP
  			where LastSurgeryOP.relevantPeriod ends 1 hour or less on or before VisitStartWithED
  			sort by
  			end of relevantPeriod
  	)
  	return Interval[Coalesce(start of OutpatientSurgeryVisit.relevantPeriod, VisitStartWithED),
  	end of Visit.relevantPeriod]
  */

/*Hospitalization with Observation returns the total interval from the start of any immediately prior emergency department visit through the observation visit to the discharge of the given encounter*/
define function &quot;HospitalizationWithObservation&quot;(TheEncounter FHIR.Encounter ):
  TheEncounter Visit
  		let ObsVisit: Last([Encounter: &quot;Observation Services&quot;] LastObs
  				where LastObs.period ends 1 hour or less on or before start of Visit.period
  				sort by end of period
  			),
  			VisitStart: Coalesce(start of ObsVisit.period, start of Visit.period),
  			EDVisit: Last([Encounter: &quot;Emergency Department Visit&quot;] LastED
  				where LastED.period ends 1 hour or less on or before VisitStart
  				sort by end of period
  			)
  		return Interval[Coalesce(start of EDVisit.period, VisitStart), end of Visit.period]

/**
* Normalizes the input argument to an interval representation.
* The input can be provided as a dateTime, Period, Timing, instant, string, Age, or Range.
* The intent of this function is to provide a clear and concise mechanism to treat single
* elements that have multiple possible representations as intervals so that logic doesn't have to account
* for the variability. More complex calculations (such as medication request period or dispense period
* calculation) need specific guidance and consideration. That guidance may make use of this function, but
* the focus of this function is on single element calculations where the semantics are unambiguous.
* If the input is a dateTime, the result a DateTime Interval beginning and ending on that dateTime.
* If the input is a Period, the result is a DateTime Interval.
* If the input is a Timing, an error is raised indicating a single interval cannot be computed from a Timing.
* If the input is an instant, the result is a DateTime Interval beginning and ending on that instant.
* If the input is a string, an error is raised indicating a single interval cannot be computed from a string.
* If the input is an Age, the result is a DateTime Interval beginning when the patient was the given Age,
and ending immediately prior to when the patient was the given Age plus one year.
* If the input is a Range, the result is a DateTime Interval beginning when the patient was the Age given
by the low end of the Range, and ending immediately prior to when the patient was the Age given by the
high end of the Range plus one year.*/
define function &quot;Normalize Interval&quot;(choice Choice&lt;FHIR.dateTime, FHIR.Period, FHIR.Timing, FHIR.instant, FHIR.string, FHIR.Age, FHIR.Range&gt; ):
  case
  	  when choice is FHIR.dateTime then
  	Interval[FHIRHelpers.ToDateTime(choice as FHIR.dateTime), FHIRHelpers.ToDateTime(choice as FHIR.dateTime)]
  		when choice is FHIR.Period then
  		FHIRHelpers.ToInterval(choice as FHIR.Period)
  		when choice is FHIR.instant then
  			Interval[FHIRHelpers.ToDateTime(choice as FHIR.instant), FHIRHelpers.ToDateTime(choice as FHIR.instant)]
  		when choice is FHIR.Age then
  		  Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(choice as FHIR.Age),
  			  FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(choice as FHIR.Age) + 1 year)
  		when choice is FHIR.Range then
  		  Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((choice as FHIR.Range).low),
  			  FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((choice as FHIR.Range).high) + 1 year)
  		when choice is FHIR.Timing then
  		  Message(null as Interval&lt;DateTime&gt;, true, '1', 'Error', 'Cannot compute a single interval from a Timing type')
    when choice is FHIR.string then
      Message(null as Interval&lt;DateTime&gt;, true, '1', 'Error', 'Cannot compute an interval from a String value')
  		else
  			null as Interval&lt;DateTime&gt;
  	end

/**
* Returns an interval representing the abatement of the given condition, if an
abatement element is present, null otherwise.
This function uses the semantics of Normalize Interval to interpret the abatement
element.*/
define function &quot;Normalize Abatement&quot;(condition Condition ):
  if condition.abatement is FHIR.dateTime then
  	  Interval[FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime), FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime)]
  	else if condition.abatement is FHIR.Period then
  	  FHIRHelpers.ToInterval(condition.abatement as FHIR.Period)
  	else if condition.abatement is FHIR.string then
  Message(null as Interval&lt;DateTime&gt;, true, '1', 'Error', 'Cannot compute an interval from a String value')
  	else if condition.abatement is FHIR.Age then
  		Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age),
  			FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age) + 1 year)
  	else if condition.abatement is FHIR.Range then
  	  Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).low),
  		  FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).high) + 1 year)
  	else if condition.abatement is FHIR.boolean then
  	  Interval[end of &quot;Normalize Interval&quot;(condition.onset), condition.recordedDate)
  	else null

/*Returns an interval representing the period during which the condition was prevalent (i.e. onset to abatement)
If the condition is &quot;active&quot;, then abatement being unknown
would indicate the condition is ongoing, and the ending boundary of the prevalence
period is inclusive, otherwise, the abatement is considered unknown and the ending boundary
of the prevalence period is exclusive.
Note that when using this function it should be noted that many clinical systems
do not actually capture abatement, so care should be taken when using this function
to meet clinical intent.*/
define function &quot;Prevalence Period&quot;(condition Condition ):
  if condition.clinicalStatus ~ &quot;active&quot;
    or condition.clinicalStatus ~ &quot;recurrence&quot;
    or condition.clinicalStatus ~ &quot;relapse&quot; then
    Interval[start of &quot;Normalize Interval&quot;(condition.onset), end of &quot;Normalize Abatement&quot;(condition)]
  else
    Interval[start of &quot;Normalize Interval&quot;(condition.onset), end of &quot;Normalize Abatement&quot;(condition))

/*Returns the tail of the given uri (i.e. everything after the last slash in the URI).*/
define function &quot;GetId&quot;(uri String ):
  Last(Split(uri, '/'))

/*Returns the Condition resources referenced by the diagnosis element of the Encounter*/
define function &quot;EncounterDiagnosis&quot;(Encounter Encounter ):
  Encounter.diagnosis D
    return singleton from ([Condition] C where C.id = &quot;GetId&quot;(D.condition.reference))
  
  // Returns the condition that is specified as the principal diagnosis for the encounter
  // TODO: BTR 2019-07-30: Shouldn't need the FHIRHelpers reference here, investigate

define function &quot;PrincipalDiagnosis&quot;(Encounter Encounter ):
  (singleton from (Encounter.diagnosis D where FHIRHelpers.ToInteger(D.rank) = 1)) PD
  		return singleton from ([Condition] C where C.id = &quot;GetId&quot;(PD.condition.reference))
  // Returns the location for the given location reference

/*Returns the Location resource specified by the given reference*/
define function &quot;GetLocation&quot;(reference Reference ):
  singleton from (
    [Location] L where L.id = GetId(reference.reference)
  )

/*NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the
CQL model info.*/
define function &quot;GetExtensions&quot;(domainResource DomainResource, url String ):
  domainResource.extension E
  	  where E.url = ('http://hl7.org/fhir/us/qicore/StructureDefinition/' + url)
  		return E

define function &quot;GetExtension&quot;(domainResource DomainResource, url String ):
  singleton from &quot;GetExtensions&quot;(domainResource, url)

/*NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the
CQL model info.*/
define function &quot;GetExtensions&quot;(element Element, url String ):
  element.extension E
  	  where E.url = (url)
  		return E

define function &quot;GetExtension&quot;(element Element, url String ):
  singleton from &quot;GetExtensions&quot;(element, url)

/*NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the
CQL model info.*/
define function &quot;GetBaseExtensions&quot;(domainResource DomainResource, url String ):
  domainResource.extension E
  	  where E.url = ('http://hl7.org/fhir/StructureDefinition/' + url)
  		return E

define function &quot;GetBaseExtension&quot;(domainResource DomainResource, url String ):
  singleton from &quot;GetBaseExtensions&quot;(domainResource, url)

/*@description: Returns any base-FHIR extensions defined on the given element with the specified id.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the CQL model info.*/
define function &quot;BaseExtensions&quot;(element Element, id String ):
  element.extension E
  	  where E.url = ('http://hl7.org/fhir/StructureDefinition/' + id)
  		return E

/*@description: Returns the single base-FHIR extension (if present) on the given element with the specified id.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.*/
define function &quot;BaseExtension&quot;(element Element, id String ):
  singleton from BaseExtensions(element, id)

/*NOTE: Provenance is not the preferred approach, this is provided only as an illustration
for what using Provenance could look like, and is not a tested pattern*/
define function &quot;GetProvenance&quot;(resource Resource ):
  singleton from ([Provenance: target in resource.id])

define function &quot;GetMedicationCode&quot;(request MedicationRequest ):
  if request.medication is CodeableConcept then
  	  request.medication as CodeableConcept
  	else
  	  (singleton from ([Medication] M where M.id = GetId((request.medication as Reference).reference))).code

/*Given an interval, return true if the interval has a starting boundary specified (i.e. the start of the interval is not null and not the minimum DateTime value)*/
define function &quot;HasStart&quot;(period Interval&lt;DateTime&gt; ):
  not ( start of period is null
      or start of period = minimum DateTime
  )

/*Given an interval, return true if the interval has an ending boundary specified (i.e. the end of the interval is not null and not the maximum DateTime value)*/
define function &quot;HasEnd&quot;(period Interval&lt;DateTime&gt; ):
  not (
    end of period is null
      or
      end of period = maximum DateTime
  )

/*Given an interval, return the ending point if the interval has an ending boundary specified, otherwise, return the starting point*/
define function &quot;Latest&quot;(choice Choice&lt;FHIR.dateTime, FHIR.Period, FHIR.Timing, FHIR.instant, FHIR.string, FHIR.Age, FHIR.Range&gt; ):
  (&quot;Normalize Interval&quot;(choice)) period
    return
      if ( HasEnd(period)) then end of period
      else start of period

/*Given an interval, return the starting point if the interval has a starting boundary specified, otherwise, return the ending point*/
define function &quot;Earliest&quot;(choice Choice&lt;FHIR.dateTime, FHIR.Period, FHIR.Timing, FHIR.instant, FHIR.string, FHIR.Age, FHIR.Range&gt; ):
  (&quot;Normalize Interval&quot;(choice)) period
    return
      if (HasStart(period)) then start of period
      else end of period

</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
        </text>
        <url
             value="http://fhir.org/guides/cqf/Library/MATGlobalCommonFunctionsFHIR4"/>
        <version value="6.1.000"/>
        <name value="MATGlobalCommonFunctionsFHIR4"/>
        <title value="MAT Global Common Functions FHIRR4"/>
        <status value="draft"/>
        <experimental value="true"/>
        <type>
          <coding>
            <system
                    value="http://terminology.hl7.org/CodeSystem/library-type"/>
            <code value="logic-library"/>
            <display value="Logic Library"/>
          </coding>
        </type>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="FHIR model information"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Library FHIRHelpers"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system ConditionClinicalStatusCodes"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/condition-clinical"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system AllergyIntoleranceClinicalStatusCodes"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display
                   value="Code system AllergyIntoleranceVerificationStatusCodes"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/allergyintolerance-verification"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system Diagnosis Role"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/diagnosis-role"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system LOINC"/>
          <resource value="http://loinc.org"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system MedicationRequestCategory"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/medicationrequest-category"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system ConditionVerificationStatusCodes"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/condition-ver-status"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system SNOMEDCT"/>
          <resource value="http://snomed.info/sct"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system RoleCode"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/v3-RoleCode"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Emergency Department Visit"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Encounter Inpatient"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Observation Services"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
        </relatedArtifact>
        <parameter>
          <name value="Measurement Period"/>
          <use value="in"/>
          <min value="0"/>
          <max value="1"/>
          <type value="Period"/>
        </parameter>
        <parameter>
          <name value="Patient"/>
          <use value="out"/>
          <min value="0"/>
          <max value="1"/>
          <type value="Patient"/>
        </parameter>
        <parameter>
          <name value="Inpatient Encounter"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Encounter"/>
        </parameter>
        <dataRequirement>
          <type value="Patient"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Encounter"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
          <mustSupport value="type"/>
          <mustSupport value="status"/>
          <mustSupport value="period"/>
          <codeFilter>
            <path value="type"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
          </codeFilter>
        </dataRequirement>
        <dataRequirement>
          <type value="Encounter"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
          <mustSupport value="type"/>
          <mustSupport value="period"/>
          <codeFilter>
            <path value="type"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
          </codeFilter>
        </dataRequirement>
        <dataRequirement>
          <type value="Encounter"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
          <mustSupport value="type"/>
          <mustSupport value="status"/>
          <mustSupport value="period"/>
          <codeFilter>
            <path value="type"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/>
          </codeFilter>
        </dataRequirement>
        <dataRequirement>
          <type value="Condition"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Condition"/>
          <mustSupport value="id"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Location"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Location"/>
          <mustSupport value="id"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Provenance"/>
          <profile
                   value="http://hl7.org/fhir/StructureDefinition/Provenance"/>
          <mustSupport value="target"/>
          <codeFilter>
            <path value="target"/>
          </codeFilter>
        </dataRequirement>
        <content>
          <contentType value="text/cql"/>
          <data
                value="bGlicmFyeSBNQVRHbG9iYWxDb21tb25GdW5jdGlvbnNGSElSNCB2ZXJzaW9uICc2LjEuMDAwJw0KDQovKkB1cGRhdGU6IEJUUiAyMDIwLTAzLTMxIC0+DQpJbmNyZW1lbnRlZCB2ZXJzaW9uIHRvIDUuMC4wMDANClVwZGF0ZWQgRkhJUiB2ZXJzaW9uIHRvIDQuMC4xDQpDaGFuZ2VkIHRpbWV6b25lIGtleXdvcmQgdG8gdGltZXpvbmVvZmZzZXQgZm9yIHVzZSB3aXRoIENRTCAxLjQNClJlbW92ZWQgTm9ybWFsaXplIE9uc2V0IGluIGZhdm9yIG9mIG1vcmUgZ2VuZXJhbCBOb3JtYWxpemUgSW50ZXJ2YWwNClVwZGF0ZWQgQ29kZVN5c3RlbXMgZm9yIENvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzIGFuZCBSb2xlQ29kZXMNCg0KQHVwZGF0ZTogQlRSIDIwMjEtMDUtMTMgLT4NCkFkZGVkIEFjdGl2ZUNvbmRpdGlvbiBDb2RlcyBhbmQgSW5hY3RpdmUgQ29uZGl0aW9uIENvZGVzIHZhbHVlIHNldHMNCkFkZGVkIGZ1bmN0aW9uIGRvY3VtZW50YXRpb24gdGhyb3VnaG91dA0KRml4ZWQgRURWaXNpdCBub3QgdXNpbmcgTGFzdA0KVXBkYXRlZCBwcmV2YWxlbmNlIHBlcmlvZCB0byB1c2UgYW4gaW5jbHVzaXZlIGJvdW5kYXJ5IGlmIHRoZSBjb25kaXRpb24gaXMgYWN0aXZlDQpBZGRlZCBIYXNTdGFydCwgSGFzRW5kLCBFYXJsaWVzdCwgYW5kIExhdGVzdCBmdW5jdGlvbnMNClJlbW92ZWQgVG9EYXRlIGFuZCBBZ2UgY2FsY3VsYXRpb24gZnVuY3Rpb25zDQoNCkB1cGRhdGU6IEJUUiAyMDIxLTA2LTI1IC0+DQpBZGRlZCBHZXRCYXNlRXh0ZW5zaW9uIG92ZXJsb2FkcyBmb3IgRWxlbWVudCovDQoNCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnDQoNCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnIGNhbGxlZCBGSElSSGVscGVycw0KDQpjb2Rlc3lzdGVtICJDb25kaXRpb25DbGluaWNhbFN0YXR1c0NvZGVzIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vY29uZGl0aW9uLWNsaW5pY2FsJyANCmNvZGVzeXN0ZW0gIkFsbGVyZ3lJbnRvbGVyYW5jZUNsaW5pY2FsU3RhdHVzQ29kZXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9hbGxlcmd5aW50b2xlcmFuY2UtY2xpbmljYWwnIA0KY29kZXN5c3RlbSAiQWxsZXJneUludG9sZXJhbmNlVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9hbGxlcmd5aW50b2xlcmFuY2UtdmVyaWZpY2F0aW9uJyANCmNvZGVzeXN0ZW0gIkRpYWdub3NpcyBSb2xlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vZGlhZ25vc2lzLXJvbGUnIA0KY29kZXN5c3RlbSAiTE9JTkMiOiAnaHR0cDovL2xvaW5jLm9yZycgDQpjb2Rlc3lzdGVtICJNZWRpY2F0aW9uUmVxdWVzdENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vbWVkaWNhdGlvbnJlcXVlc3QtY2F0ZWdvcnknIA0KY29kZXN5c3RlbSAiQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jb25kaXRpb24tdmVyLXN0YXR1cycgDQpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0JyANCmNvZGVzeXN0ZW0gIlJvbGVDb2RlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjMtUm9sZUNvZGUnIA0KDQp2YWx1ZXNldCAiRW1lcmdlbmN5IERlcGFydG1lbnQgVmlzaXQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjI5MicgDQp2YWx1ZXNldCAiRW5jb3VudGVyIElucGF0aWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42NjYuNS4zMDcnIA0KdmFsdWVzZXQgIk9ic2VydmF0aW9uIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xNDMnIA0KDQpjb2RlICJhY3RpdmUiOiAnYWN0aXZlJyBmcm9tICJDb25kaXRpb25DbGluaWNhbFN0YXR1c0NvZGVzIiBkaXNwbGF5ICdhY3RpdmUnDQpjb2RlICJhbGxlcmd5LWFjdGl2ZSI6ICdhY3RpdmUnIGZyb20gIkFsbGVyZ3lJbnRvbGVyYW5jZUNsaW5pY2FsU3RhdHVzQ29kZXMiIGRpc3BsYXkgJ2FsbGVyZ3ktYWN0aXZlJw0KY29kZSAiYWxsZXJneS1jb25maXJtZWQiOiAnY29uZmlybWVkJyBmcm9tICJBbGxlcmd5SW50b2xlcmFuY2VWZXJpZmljYXRpb25TdGF0dXNDb2RlcyIgZGlzcGxheSAnYWxsZXJneS1jb25maXJtZWQnDQpjb2RlICJhbGxlcmd5LWluYWN0aXZlIjogJ2luYWN0aXZlJyBmcm9tICJBbGxlcmd5SW50b2xlcmFuY2VDbGluaWNhbFN0YXR1c0NvZGVzIiBkaXNwbGF5ICdhbGxlcmd5LWluYWN0aXZlJw0KY29kZSAiYWxsZXJneS1yZWZ1dGVkIjogJ3JlZnV0ZWQnIGZyb20gIkFsbGVyZ3lJbnRvbGVyYW5jZVZlcmlmaWNhdGlvblN0YXR1c0NvZGVzIiBkaXNwbGF5ICdhbGxlcmd5LXJlZnV0ZWQnDQpjb2RlICJhbGxlcmd5LXJlc29sdmVkIjogJ3Jlc29sdmVkJyBmcm9tICJBbGxlcmd5SW50b2xlcmFuY2VDbGluaWNhbFN0YXR1c0NvZGVzIiBkaXNwbGF5ICdhbGxlcmd5LXJlc29sdmVkJw0KY29kZSAiYWxsZXJneS11bmNvbmZpcm1lZCI6ICd1bmNvbmZpcm1lZCcgZnJvbSAiQWxsZXJneUludG9sZXJhbmNlVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMiIGRpc3BsYXkgJ2FsbGVyZ3ktdW5jb25maXJtZWQnDQpjb2RlICJCaWxsaW5nIjogJ2JpbGxpbmcnIGZyb20gIkRpYWdub3NpcyBSb2xlIiBkaXNwbGF5ICdCaWxsaW5nJw0KY29kZSAiQmlydGhkYXRlIjogJzIxMTEyLTgnIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdCaXJ0aCBkYXRlJw0KY29kZSAiQ29tbXVuaXR5IjogJ2NvbW11bml0eScgZnJvbSAiTWVkaWNhdGlvblJlcXVlc3RDYXRlZ29yeSIgZGlzcGxheSAnQ29tbXVuaXR5Jw0KY29kZSAiY29uZmlybWVkIjogJ2NvbmZpcm1lZCcgZnJvbSAiQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMiIGRpc3BsYXkgJ2NvbmZpcm1lZCcNCmNvZGUgIkRlYWQiOiAnNDE5MDk5MDA5JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGVhZCcNCmNvZGUgImRpZmZlcmVudGlhbCI6ICdkaWZmZXJlbnRpYWwnIGZyb20gIkNvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzIiBkaXNwbGF5ICdkaWZmZXJlbnRpYWwnDQpjb2RlICJEaXNjaGFyZ2UiOiAnZGlzY2hhcmdlJyBmcm9tICJNZWRpY2F0aW9uUmVxdWVzdENhdGVnb3J5IiBkaXNwbGF5ICdEaXNjaGFyZ2UnDQpjb2RlICJlbnRlcmVkLWluLWVycm9yIjogJ2VudGVyZWQtaW4tZXJyb3InIGZyb20gIkNvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzIiBkaXNwbGF5ICdlbnRlcmVkLWluLWVycm9yJw0KY29kZSAiRVIiOiAnRVInIGZyb20gIlJvbGVDb2RlIiBkaXNwbGF5ICdFbWVyZ2VuY3kgcm9vbScNCmNvZGUgIklDVSI6ICdJQ1UnIGZyb20gIlJvbGVDb2RlIiBkaXNwbGF5ICdJbnRlbnNpdmUgY2FyZSB1bml0Jw0KY29kZSAiaW5hY3RpdmUiOiAnaW5hY3RpdmUnIGZyb20gIkNvbmRpdGlvbkNsaW5pY2FsU3RhdHVzQ29kZXMiIGRpc3BsYXkgJ2luYWN0aXZlJw0KY29kZSAicHJvdmlzaW9uYWwiOiAncHJvdmlzaW9uYWwnIGZyb20gIkNvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzIiBkaXNwbGF5ICdwcm92aXNpb25hbCcNCmNvZGUgInJlY3VycmVuY2UiOiAncmVjdXJyZW5jZScgZnJvbSAiQ29uZGl0aW9uQ2xpbmljYWxTdGF0dXNDb2RlcyIgZGlzcGxheSAncmVjdXJyZW5jZScNCmNvZGUgInJlZnV0ZWQiOiAncmVmdXRlZCcgZnJvbSAiQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMiIGRpc3BsYXkgJ3JlZnV0ZWQnDQpjb2RlICJyZWxhcHNlIjogJ3JlbGFwc2UnIGZyb20gIkNvbmRpdGlvbkNsaW5pY2FsU3RhdHVzQ29kZXMiIGRpc3BsYXkgJ3JlbGFwc2UnDQpjb2RlICJyZW1pc3Npb24iOiAncmVtaXNzaW9uJyBmcm9tICJDb25kaXRpb25DbGluaWNhbFN0YXR1c0NvZGVzIiBkaXNwbGF5ICdyZW1pc3Npb24nDQpjb2RlICJyZXNvbHZlZCI6ICdyZXNvbHZlZCcgZnJvbSAiQ29uZGl0aW9uQ2xpbmljYWxTdGF0dXNDb2RlcyIgZGlzcGxheSAncmVzb2x2ZWQnDQpjb2RlICJ1bmNvbmZpcm1lZCI6ICd1bmNvbmZpcm1lZCcgZnJvbSAiQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMiIGRpc3BsYXkgJ3VuY29uZmlybWVkJw0KDQpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+DQogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMTktMDEtMDFUMDA6MDA6MDAuMCwgQDIwMjAtMDEtMDFUMDA6MDA6MDAuMCkNCg0KY29udGV4dCBQYXRpZW50DQoNCmRlZmluZSAiSW5wYXRpZW50IEVuY291bnRlciI6DQogIFtFbmNvdW50ZXI6ICJFbmNvdW50ZXIgSW5wYXRpZW50Il0gRW5jb3VudGVySW5wYXRpZW50DQogICAgICAJCXdoZXJlIEVuY291bnRlcklucGF0aWVudC5zdGF0dXMgPSAnZmluaXNoZWQnDQogICAgICAJCSAgICBhbmQgIkxlbmd0aEluRGF5cyIoRW5jb3VudGVySW5wYXRpZW50LnBlcmlvZCkgPD0gMTIwDQogICAgICAJCQlhbmQgRW5jb3VudGVySW5wYXRpZW50LnBlcmlvZCBlbmRzIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIg0KDQovKkNhbGN1bGF0ZXMgdGhlIGRpZmZlcmVuY2UgaW4gY2FsZW5kYXIgZGF5cyBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBnaXZlbiBpbnRlcnZhbC4qLw0KZGVmaW5lIGZ1bmN0aW9uICJMZW5ndGhJbkRheXMiKFZhbHVlIEludGVydmFsPERhdGVUaW1lPiApOg0KICBkaWZmZXJlbmNlIGluIGRheXMgYmV0d2VlbiBzdGFydCBvZiBWYWx1ZSBhbmQgZW5kIG9mIFZhbHVlDQoNCi8qUmV0dXJucyB0aGUgbW9zdCByZWNlbnQgZW1lcmdlbmN5IGRlcGFydG1lbnQgdmlzaXQsIGlmIGFueSwgdGhhdCBvY2N1cnMgMSBob3VyIG9yIGxlc3MgcHJpb3IgdG8gdGhlIGdpdmVuIGVuY291bnRlci4qLw0KZGVmaW5lIGZ1bmN0aW9uICJFRCBWaXNpdCIoVGhlRW5jb3VudGVyIEZISVIuRW5jb3VudGVyICk6DQogIExhc3QoDQogICAgW0VuY291bnRlcjogIkVtZXJnZW5jeSBEZXBhcnRtZW50IFZpc2l0Il0gRURWaXNpdA0KICAgICAgd2hlcmUgRURWaXNpdC5zdGF0dXMgPSAnZmluaXNoZWQnDQogICAgICAgIGFuZCBFRFZpc2l0LnBlcmlvZCBlbmRzIDEgaG91ciBvciBsZXNzIG9uIG9yIGJlZm9yZSBzdGFydCBvZiBGSElSSGVscGVycy5Ub0ludGVydmFsKFRoZUVuY291bnRlci5wZXJpb2QpDQogICAgICBzb3J0IGJ5IGVuZCBvZiBwZXJpb2QNCiAgICApDQoNCi8qSG9zcGl0YWxpemF0aW9uIHJldHVybnMgdGhlIHRvdGFsIGludGVydmFsIGZvciBhZG1pc3Npb24gdG8gZGlzY2hhcmdlIGZvciB0aGUgZ2l2ZW4gZW5jb3VudGVyLCBvciBmb3IgdGhlIGFkbWlzc2lvbiBvZiBhbnkgaW1tZWRpYXRlbHkgcHJpb3IgZW1lcmdlbmN5IGRlcGFydG1lbnQgdmlzaXQgdG8gdGhlIGRpc2NoYXJnZSBvZiB0aGUgZ2l2ZW4gZW5jb3VudGVyLiovDQpkZWZpbmUgZnVuY3Rpb24gIkhvc3BpdGFsaXphdGlvbiIoVGhlRW5jb3VudGVyIEZISVIuRW5jb3VudGVyICk6DQogICggIkVEIFZpc2l0IihUaGVFbmNvdW50ZXIpICkgWA0KICAgIHJldHVybg0KICAgICAgICBpZiBYIGlzIG51bGwgdGhlbiBUaGVFbmNvdW50ZXIucGVyaW9kDQogICAgICAgIGVsc2UgSW50ZXJ2YWxbc3RhcnQgb2YgRkhJUkhlbHBlcnMuVG9JbnRlcnZhbChYLnBlcmlvZCksIGVuZCBvZiBGSElSSGVscGVycy5Ub0ludGVydmFsKFRoZUVuY291bnRlci5wZXJpb2QpXQ0KDQovKlJldHVybnMgbGlzdCBvZiBhbGwgbG9jYXRpb25zIHdpdGhpbiBhbiBlbmNvdW50ZXIsIGluY2x1ZGluZyBsb2NhdGlvbnMgZm9yIGltbWVkaWF0ZWx5IHByaW9yIEVEIHZpc2l0LiovDQpkZWZpbmUgZnVuY3Rpb24gIkhvc3BpdGFsaXphdGlvbiBMb2NhdGlvbnMiKFRoZUVuY291bnRlciBGSElSLkVuY291bnRlciApOg0KICAoICJFRCBWaXNpdCIoVGhlRW5jb3VudGVyKSApIEVERW5jb3VudGVyDQogICAgcmV0dXJuDQogICAgICAgIGlmIEVERW5jb3VudGVyIGlzIG51bGwgdGhlbiBUaGVFbmNvdW50ZXIubG9jYXRpb24NCiAgICAgICAgZWxzZSBmbGF0dGVuIHsgRURFbmNvdW50ZXIubG9jYXRpb24sIFRoZUVuY291bnRlci5sb2NhdGlvbiB9DQoNCi8qUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHN0YXkgaW4gZGF5cyAoaS5lLiB0aGUgbnVtYmVyIG9mIGRheXMgYmV0d2VlbiBhZG1pc3Npb24gYW5kIGRpc2NoYXJnZSkgZm9yIHRoZSBnaXZlbiBlbmNvdW50ZXIsIG9yIGZyb20gdGhlIGFkbWlzc2lvbiBvZiBhbnkgaW1tZWRpYXRlbHkgcHJpb3IgZW1lcmdlbmN5IGRlcGFydG1lbnQgdmlzaXQgdG8gdGhlIGRpc2NoYXJnZSBvZiB0aGUgZW5jb3VudGVyKi8NCmRlZmluZSBmdW5jdGlvbiAiSG9zcGl0YWxpemF0aW9uIExlbmd0aCBvZiBTdGF5IihUaGVFbmNvdW50ZXIgRkhJUi5FbmNvdW50ZXIgKToNCiAgTGVuZ3RoSW5EYXlzKCJIb3NwaXRhbGl6YXRpb24iKFRoZUVuY291bnRlcikpDQoNCi8qUmV0dXJucyBhZG1pc3Npb24gdGltZSBmb3IgYW4gZW5jb3VudGVyIG9yIGZvciBpbW1lZGlhdGVseSBwcmlvciBlbWVyZ2VuY3kgZGVwYXJ0bWVudCB2aXNpdC4qLw0KZGVmaW5lIGZ1bmN0aW9uICJIb3NwaXRhbCBBZG1pc3Npb24gVGltZSIoVGhlRW5jb3VudGVyIEZISVIuRW5jb3VudGVyICk6DQogIHN0YXJ0IG9mICJIb3NwaXRhbGl6YXRpb24iKFRoZUVuY291bnRlcikNCg0KLypIb3NwaXRhbCBEaXNjaGFyZ2UgVGltZSByZXR1cm5zIHRoZSBkaXNjaGFyZ2UgdGltZSBmb3IgYW4gZW5jb3VudGVyKi8NCmRlZmluZSBmdW5jdGlvbiAiSG9zcGl0YWwgRGlzY2hhcmdlIFRpbWUiKFRoZUVuY291bnRlciBGSElSLkVuY291bnRlciApOg0KICBlbmQgb2YgRkhJUkhlbHBlcnMuVG9JbnRlcnZhbChUaGVFbmNvdW50ZXIucGVyaW9kKQ0KDQovKlJldHVybnMgZWFybGllc3QgYXJyaXZhbCB0aW1lIGZvciBhbiBlbmNvdW50ZXIgaW5jbHVkaW5nIGFueSBwcmlvciBFRCB2aXNpdC4qLw0KZGVmaW5lIGZ1bmN0aW9uICJIb3NwaXRhbCBBcnJpdmFsIFRpbWUiKFRoZUVuY291bnRlciBGSElSLkVuY291bnRlciApOg0KICBzdGFydCBvZiBGSElSSGVscGVycy5Ub0ludGVydmFsKEZpcnN0KA0KICAJICAgICggIkhvc3BpdGFsaXphdGlvbiBMb2NhdGlvbnMiKFRoZUVuY291bnRlcikgKSBIb3NwaXRhbExvY2F0aW9uDQogIAkJCXNvcnQgYnkgc3RhcnQgb2YgRkhJUkhlbHBlcnMuVG9JbnRlcnZhbChwZXJpb2QpDQogIAkpLnBlcmlvZCkNCiAgDQogIC8vIFRPRE8gLSBmaXggdGhlc2UgKG11c3QgZmV0Y2ggTG9jYXRpb24gcmVzb3VyY2VzIGFuZCBjb21wYXJlIGlkIHRvIHJlZmVyZW5jZSkNCiAgLypSZXR1cm5zIHRoZSBsYXRlc3QgZGVwYXJ0dXJlIHRpbWUgZm9yIGVuY291bnRlciBpbmNsdWRpbmcgYW55IHByaW9yIEVEIHZpc2l0LiAqLw0KICAvKg0KICBkZWZpbmUgZnVuY3Rpb24gIkhvc3BpdGFsIERlcGFydHVyZSBUaW1lIihUaGVFbmNvdW50ZXIgRkhJUi5FbmNvdW50ZXIpOg0KICAJZW5kIG9mIEZISVJIZWxwZXJzLlRvSW50ZXJ2YWwoTGFzdCgNCiAgCSAgICAoICJIb3NwaXRhbGl6YXRpb24gTG9jYXRpb25zIihUaGVFbmNvdW50ZXIpICkgSG9zcGl0YWxMb2NhdGlvbg0KICAJCQlzb3J0IGJ5IHN0YXJ0IG9mIEZISVJIZWxwZXJzLlRvSW50ZXJ2YWwocGVyaW9kKQ0KICAJKS5wZXJpb2QpDQogIA0KICBkZWZpbmUgZnVuY3Rpb24gIkVtZXJnZW5jeSBEZXBhcnRtZW50IEFycml2YWwgVGltZSIoVGhlRW5jb3VudGVyIEZISVIuRW5jb3VudGVyKToNCiAgCXN0YXJ0IG9mIEZISVJIZWxwZXJzLlRvSW50ZXJ2YWwoKA0KICAJICAgIHNpbmdsZXRvbiBmcm9tICgNCiAgCSAgICAgICAgKCAiSG9zcGl0YWxpemF0aW9uIExvY2F0aW9ucyIoVGhlRW5jb3VudGVyKSApIEhvc3BpdGFsTG9jYXRpb24NCiAgCQkJCXdoZXJlIEhvc3BpdGFsTG9jYXRpb24udHlwZSB+ICJFUiINCiAgCQkpDQogIAkpLnBlcmlvZCkNCiAgDQogIGRlZmluZSBmdW5jdGlvbiAiRmlyc3QgSW5wYXRpZW50IEludGVuc2l2ZSBDYXJlIFVuaXQiKFRoZUVuY291bnRlciBGSElSLkVuY291bnRlcik6DQogIAlGaXJzdCgNCiAgCSAgICAoIFRoZUVuY291bnRlci5sb2NhdGlvbiApIEhvc3BpdGFsTG9jYXRpb24NCiAgCQkJd2hlcmUgSG9zcGl0YWxMb2NhdGlvbi50eXBlIH4gIklDVSINCiAgCQkJCWFuZCBIb3NwaXRhbExvY2F0aW9uLnBlcmlvZCBkdXJpbmcgVGhlRW5jb3VudGVyLnBlcmlvZA0KICAJCQlzb3J0IGJ5IHN0YXJ0IG9mIEZISVJIZWxwZXJzLlRvSW50ZXJ2YWwocGVyaW9kKQ0KICAJKQ0KICAqLw0KICANCiAgLypIb3NwaXRhbGl6YXRpb24gd2l0aCBPYnNlcnZhdGlvbiBhbmQgT3V0cGF0aWVudCBTdXJnZXJ5IFNlcnZpY2UgcmV0dXJucyB0aGUgdG90YWwgaW50ZXJ2YWwgZnJvbSB0aGUgc3RhcnQgb2YgYW55IGltbWVkaWF0ZWx5IHByaW9yIGVtZXJnZW5jeSBkZXBhcnRtZW50IHZpc2l0LCBvdXRwYXRpZW50IHN1cmdlcnkgdmlzaXQgb3Igb2JzZXJ2YXRpb24gdmlzaXQgdG8gdGhlIGRpc2NoYXJnZSBvZiB0aGUgZ2l2ZW4gZW5jb3VudGVyLiovDQogIC8qIFRPRE86DQogIGRlZmluZSBmdW5jdGlvbiAiSG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uQW5kT3V0cGF0aWVudFN1cmdlcnlTZXJ2aWNlIihFbmNvdW50ZXIgIkVuY291bnRlciwgUGVyZm9ybWVkIiApOg0KICBFbmNvdW50ZXIgVmlzaXQNCiAgCWxldCBPYnNWaXNpdDogTGFzdChbIkVuY291bnRlciwgUGVyZm9ybWVkIjogIk9ic2VydmF0aW9uIFNlcnZpY2VzIl0gTGFzdE9icw0KICAJCQl3aGVyZSBMYXN0T2JzLnJlbGV2YW50UGVyaW9kIGVuZHMgMSBob3VyIG9yIGxlc3Mgb24gb3IgYmVmb3JlIHN0YXJ0IG9mIFZpc2l0LnJlbGV2YW50UGVyaW9kDQogIAkJCXNvcnQgYnkNCiAgCQkJZW5kIG9mIHJlbGV2YW50UGVyaW9kDQogIAkpLA0KICAJVmlzaXRTdGFydDogQ29hbGVzY2Uoc3RhcnQgb2YgT2JzVmlzaXQucmVsZXZhbnRQZXJpb2QsIHN0YXJ0IG9mIFZpc2l0LnJlbGV2YW50UGVyaW9kKSwNCiAgCUVEVmlzaXQ6IExhc3QoWyJFbmNvdW50ZXIsIFBlcmZvcm1lZCI6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdIExhc3RFRA0KICAJCQl3aGVyZSBMYXN0RUQucmVsZXZhbnRQZXJpb2QgZW5kcyAxIGhvdXIgb3IgbGVzcyBvbiBvciBiZWZvcmUgVmlzaXRTdGFydA0KICAJCQlzb3J0IGJ5DQogIAkJCWVuZCBvZiByZWxldmFudFBlcmlvZA0KICAJKSwNCiAgCVZpc2l0U3RhcnRXaXRoRUQ6IENvYWxlc2NlKHN0YXJ0IG9mIEVEVmlzaXQucmVsZXZhbnRQZXJpb2QsIFZpc2l0U3RhcnQpLA0KICAJT3V0cGF0aWVudFN1cmdlcnlWaXNpdDogTGFzdChbIkVuY291bnRlciwgUGVyZm9ybWVkIjogIk91dHBhdGllbnQgU3VyZ2VyeSBTZXJ2aWNlIl0gTGFzdFN1cmdlcnlPUA0KICAJCQl3aGVyZSBMYXN0U3VyZ2VyeU9QLnJlbGV2YW50UGVyaW9kIGVuZHMgMSBob3VyIG9yIGxlc3Mgb24gb3IgYmVmb3JlIFZpc2l0U3RhcnRXaXRoRUQNCiAgCQkJc29ydCBieQ0KICAJCQllbmQgb2YgcmVsZXZhbnRQZXJpb2QNCiAgCSkNCiAgCXJldHVybiBJbnRlcnZhbFtDb2FsZXNjZShzdGFydCBvZiBPdXRwYXRpZW50U3VyZ2VyeVZpc2l0LnJlbGV2YW50UGVyaW9kLCBWaXNpdFN0YXJ0V2l0aEVEKSwNCiAgCWVuZCBvZiBWaXNpdC5yZWxldmFudFBlcmlvZF0NCiAgKi8NCg0KLypIb3NwaXRhbGl6YXRpb24gd2l0aCBPYnNlcnZhdGlvbiByZXR1cm5zIHRoZSB0b3RhbCBpbnRlcnZhbCBmcm9tIHRoZSBzdGFydCBvZiBhbnkgaW1tZWRpYXRlbHkgcHJpb3IgZW1lcmdlbmN5IGRlcGFydG1lbnQgdmlzaXQgdGhyb3VnaCB0aGUgb2JzZXJ2YXRpb24gdmlzaXQgdG8gdGhlIGRpc2NoYXJnZSBvZiB0aGUgZ2l2ZW4gZW5jb3VudGVyKi8NCmRlZmluZSBmdW5jdGlvbiAiSG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uIihUaGVFbmNvdW50ZXIgRkhJUi5FbmNvdW50ZXIgKToNCiAgVGhlRW5jb3VudGVyIFZpc2l0DQogIAkJbGV0IE9ic1Zpc2l0OiBMYXN0KFtFbmNvdW50ZXI6ICJPYnNlcnZhdGlvbiBTZXJ2aWNlcyJdIExhc3RPYnMNCiAgCQkJCXdoZXJlIExhc3RPYnMucGVyaW9kIGVuZHMgMSBob3VyIG9yIGxlc3Mgb24gb3IgYmVmb3JlIHN0YXJ0IG9mIFZpc2l0LnBlcmlvZA0KICAJCQkJc29ydCBieSBlbmQgb2YgcGVyaW9kDQogIAkJCSksDQogIAkJCVZpc2l0U3RhcnQ6IENvYWxlc2NlKHN0YXJ0IG9mIE9ic1Zpc2l0LnBlcmlvZCwgc3RhcnQgb2YgVmlzaXQucGVyaW9kKSwNCiAgCQkJRURWaXNpdDogTGFzdChbRW5jb3VudGVyOiAiRW1lcmdlbmN5IERlcGFydG1lbnQgVmlzaXQiXSBMYXN0RUQNCiAgCQkJCXdoZXJlIExhc3RFRC5wZXJpb2QgZW5kcyAxIGhvdXIgb3IgbGVzcyBvbiBvciBiZWZvcmUgVmlzaXRTdGFydA0KICAJCQkJc29ydCBieSBlbmQgb2YgcGVyaW9kDQogIAkJCSkNCiAgCQlyZXR1cm4gSW50ZXJ2YWxbQ29hbGVzY2Uoc3RhcnQgb2YgRURWaXNpdC5wZXJpb2QsIFZpc2l0U3RhcnQpLCBlbmQgb2YgVmlzaXQucGVyaW9kXQ0KDQovKioNCiogTm9ybWFsaXplcyB0aGUgaW5wdXQgYXJndW1lbnQgdG8gYW4gaW50ZXJ2YWwgcmVwcmVzZW50YXRpb24uDQoqIFRoZSBpbnB1dCBjYW4gYmUgcHJvdmlkZWQgYXMgYSBkYXRlVGltZSwgUGVyaW9kLCBUaW1pbmcsIGluc3RhbnQsIHN0cmluZywgQWdlLCBvciBSYW5nZS4NCiogVGhlIGludGVudCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRvIHByb3ZpZGUgYSBjbGVhciBhbmQgY29uY2lzZSBtZWNoYW5pc20gdG8gdHJlYXQgc2luZ2xlDQoqIGVsZW1lbnRzIHRoYXQgaGF2ZSBtdWx0aXBsZSBwb3NzaWJsZSByZXByZXNlbnRhdGlvbnMgYXMgaW50ZXJ2YWxzIHNvIHRoYXQgbG9naWMgZG9lc24ndCBoYXZlIHRvIGFjY291bnQNCiogZm9yIHRoZSB2YXJpYWJpbGl0eS4gTW9yZSBjb21wbGV4IGNhbGN1bGF0aW9ucyAoc3VjaCBhcyBtZWRpY2F0aW9uIHJlcXVlc3QgcGVyaW9kIG9yIGRpc3BlbnNlIHBlcmlvZA0KKiBjYWxjdWxhdGlvbikgbmVlZCBzcGVjaWZpYyBndWlkYW5jZSBhbmQgY29uc2lkZXJhdGlvbi4gVGhhdCBndWlkYW5jZSBtYXkgbWFrZSB1c2Ugb2YgdGhpcyBmdW5jdGlvbiwgYnV0DQoqIHRoZSBmb2N1cyBvZiB0aGlzIGZ1bmN0aW9uIGlzIG9uIHNpbmdsZSBlbGVtZW50IGNhbGN1bGF0aW9ucyB3aGVyZSB0aGUgc2VtYW50aWNzIGFyZSB1bmFtYmlndW91cy4NCiogSWYgdGhlIGlucHV0IGlzIGEgZGF0ZVRpbWUsIHRoZSByZXN1bHQgYSBEYXRlVGltZSBJbnRlcnZhbCBiZWdpbm5pbmcgYW5kIGVuZGluZyBvbiB0aGF0IGRhdGVUaW1lLg0KKiBJZiB0aGUgaW5wdXQgaXMgYSBQZXJpb2QsIHRoZSByZXN1bHQgaXMgYSBEYXRlVGltZSBJbnRlcnZhbC4NCiogSWYgdGhlIGlucHV0IGlzIGEgVGltaW5nLCBhbiBlcnJvciBpcyByYWlzZWQgaW5kaWNhdGluZyBhIHNpbmdsZSBpbnRlcnZhbCBjYW5ub3QgYmUgY29tcHV0ZWQgZnJvbSBhIFRpbWluZy4NCiogSWYgdGhlIGlucHV0IGlzIGFuIGluc3RhbnQsIHRoZSByZXN1bHQgaXMgYSBEYXRlVGltZSBJbnRlcnZhbCBiZWdpbm5pbmcgYW5kIGVuZGluZyBvbiB0aGF0IGluc3RhbnQuDQoqIElmIHRoZSBpbnB1dCBpcyBhIHN0cmluZywgYW4gZXJyb3IgaXMgcmFpc2VkIGluZGljYXRpbmcgYSBzaW5nbGUgaW50ZXJ2YWwgY2Fubm90IGJlIGNvbXB1dGVkIGZyb20gYSBzdHJpbmcuDQoqIElmIHRoZSBpbnB1dCBpcyBhbiBBZ2UsIHRoZSByZXN1bHQgaXMgYSBEYXRlVGltZSBJbnRlcnZhbCBiZWdpbm5pbmcgd2hlbiB0aGUgcGF0aWVudCB3YXMgdGhlIGdpdmVuIEFnZSwNCmFuZCBlbmRpbmcgaW1tZWRpYXRlbHkgcHJpb3IgdG8gd2hlbiB0aGUgcGF0aWVudCB3YXMgdGhlIGdpdmVuIEFnZSBwbHVzIG9uZSB5ZWFyLg0KKiBJZiB0aGUgaW5wdXQgaXMgYSBSYW5nZSwgdGhlIHJlc3VsdCBpcyBhIERhdGVUaW1lIEludGVydmFsIGJlZ2lubmluZyB3aGVuIHRoZSBwYXRpZW50IHdhcyB0aGUgQWdlIGdpdmVuDQpieSB0aGUgbG93IGVuZCBvZiB0aGUgUmFuZ2UsIGFuZCBlbmRpbmcgaW1tZWRpYXRlbHkgcHJpb3IgdG8gd2hlbiB0aGUgcGF0aWVudCB3YXMgdGhlIEFnZSBnaXZlbiBieSB0aGUNCmhpZ2ggZW5kIG9mIHRoZSBSYW5nZSBwbHVzIG9uZSB5ZWFyLiovDQpkZWZpbmUgZnVuY3Rpb24gIk5vcm1hbGl6ZSBJbnRlcnZhbCIoY2hvaWNlIENob2ljZTxGSElSLmRhdGVUaW1lLCBGSElSLlBlcmlvZCwgRkhJUi5UaW1pbmcsIEZISVIuaW5zdGFudCwgRkhJUi5zdHJpbmcsIEZISVIuQWdlLCBGSElSLlJhbmdlPiApOg0KICBjYXNlDQogIAkgIHdoZW4gY2hvaWNlIGlzIEZISVIuZGF0ZVRpbWUgdGhlbg0KICAJSW50ZXJ2YWxbRkhJUkhlbHBlcnMuVG9EYXRlVGltZShjaG9pY2UgYXMgRkhJUi5kYXRlVGltZSksIEZISVJIZWxwZXJzLlRvRGF0ZVRpbWUoY2hvaWNlIGFzIEZISVIuZGF0ZVRpbWUpXQ0KICAJCXdoZW4gY2hvaWNlIGlzIEZISVIuUGVyaW9kIHRoZW4NCiAgCQlGSElSSGVscGVycy5Ub0ludGVydmFsKGNob2ljZSBhcyBGSElSLlBlcmlvZCkNCiAgCQl3aGVuIGNob2ljZSBpcyBGSElSLmluc3RhbnQgdGhlbg0KICAJCQlJbnRlcnZhbFtGSElSSGVscGVycy5Ub0RhdGVUaW1lKGNob2ljZSBhcyBGSElSLmluc3RhbnQpLCBGSElSSGVscGVycy5Ub0RhdGVUaW1lKGNob2ljZSBhcyBGSElSLmluc3RhbnQpXQ0KICAJCXdoZW4gY2hvaWNlIGlzIEZISVIuQWdlIHRoZW4NCiAgCQkgIEludGVydmFsW0ZISVJIZWxwZXJzLlRvRGF0ZShQYXRpZW50LmJpcnRoRGF0ZSkgKyBGSElSSGVscGVycy5Ub1F1YW50aXR5KGNob2ljZSBhcyBGSElSLkFnZSksDQogIAkJCSAgRkhJUkhlbHBlcnMuVG9EYXRlKFBhdGllbnQuYmlydGhEYXRlKSArIEZISVJIZWxwZXJzLlRvUXVhbnRpdHkoY2hvaWNlIGFzIEZISVIuQWdlKSArIDEgeWVhcikNCiAgCQl3aGVuIGNob2ljZSBpcyBGSElSLlJhbmdlIHRoZW4NCiAgCQkgIEludGVydmFsW0ZISVJIZWxwZXJzLlRvRGF0ZShQYXRpZW50LmJpcnRoRGF0ZSkgKyBGSElSSGVscGVycy5Ub1F1YW50aXR5KChjaG9pY2UgYXMgRkhJUi5SYW5nZSkubG93KSwNCiAgCQkJICBGSElSSGVscGVycy5Ub0RhdGUoUGF0aWVudC5iaXJ0aERhdGUpICsgRkhJUkhlbHBlcnMuVG9RdWFudGl0eSgoY2hvaWNlIGFzIEZISVIuUmFuZ2UpLmhpZ2gpICsgMSB5ZWFyKQ0KICAJCXdoZW4gY2hvaWNlIGlzIEZISVIuVGltaW5nIHRoZW4NCiAgCQkgIE1lc3NhZ2UobnVsbCBhcyBJbnRlcnZhbDxEYXRlVGltZT4sIHRydWUsICcxJywgJ0Vycm9yJywgJ0Nhbm5vdCBjb21wdXRlIGEgc2luZ2xlIGludGVydmFsIGZyb20gYSBUaW1pbmcgdHlwZScpDQogICAgd2hlbiBjaG9pY2UgaXMgRkhJUi5zdHJpbmcgdGhlbg0KICAgICAgTWVzc2FnZShudWxsIGFzIEludGVydmFsPERhdGVUaW1lPiwgdHJ1ZSwgJzEnLCAnRXJyb3InLCAnQ2Fubm90IGNvbXB1dGUgYW4gaW50ZXJ2YWwgZnJvbSBhIFN0cmluZyB2YWx1ZScpDQogIAkJZWxzZQ0KICAJCQludWxsIGFzIEludGVydmFsPERhdGVUaW1lPg0KICAJZW5kDQoNCi8qKg0KKiBSZXR1cm5zIGFuIGludGVydmFsIHJlcHJlc2VudGluZyB0aGUgYWJhdGVtZW50IG9mIHRoZSBnaXZlbiBjb25kaXRpb24sIGlmIGFuDQphYmF0ZW1lbnQgZWxlbWVudCBpcyBwcmVzZW50LCBudWxsIG90aGVyd2lzZS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgc2VtYW50aWNzIG9mIE5vcm1hbGl6ZSBJbnRlcnZhbCB0byBpbnRlcnByZXQgdGhlIGFiYXRlbWVudA0KZWxlbWVudC4qLw0KZGVmaW5lIGZ1bmN0aW9uICJOb3JtYWxpemUgQWJhdGVtZW50Iihjb25kaXRpb24gQ29uZGl0aW9uICk6DQogIGlmIGNvbmRpdGlvbi5hYmF0ZW1lbnQgaXMgRkhJUi5kYXRlVGltZSB0aGVuDQogIAkgIEludGVydmFsW0ZISVJIZWxwZXJzLlRvRGF0ZVRpbWUoY29uZGl0aW9uLmFiYXRlbWVudCBhcyBGSElSLmRhdGVUaW1lKSwgRkhJUkhlbHBlcnMuVG9EYXRlVGltZShjb25kaXRpb24uYWJhdGVtZW50IGFzIEZISVIuZGF0ZVRpbWUpXQ0KICAJZWxzZSBpZiBjb25kaXRpb24uYWJhdGVtZW50IGlzIEZISVIuUGVyaW9kIHRoZW4NCiAgCSAgRkhJUkhlbHBlcnMuVG9JbnRlcnZhbChjb25kaXRpb24uYWJhdGVtZW50IGFzIEZISVIuUGVyaW9kKQ0KICAJZWxzZSBpZiBjb25kaXRpb24uYWJhdGVtZW50IGlzIEZISVIuc3RyaW5nIHRoZW4NCiAgTWVzc2FnZShudWxsIGFzIEludGVydmFsPERhdGVUaW1lPiwgdHJ1ZSwgJzEnLCAnRXJyb3InLCAnQ2Fubm90IGNvbXB1dGUgYW4gaW50ZXJ2YWwgZnJvbSBhIFN0cmluZyB2YWx1ZScpDQogIAllbHNlIGlmIGNvbmRpdGlvbi5hYmF0ZW1lbnQgaXMgRkhJUi5BZ2UgdGhlbg0KICAJCUludGVydmFsW0ZISVJIZWxwZXJzLlRvRGF0ZShQYXRpZW50LmJpcnRoRGF0ZSkgKyBGSElSSGVscGVycy5Ub1F1YW50aXR5KGNvbmRpdGlvbi5hYmF0ZW1lbnQgYXMgRkhJUi5BZ2UpLA0KICAJCQlGSElSSGVscGVycy5Ub0RhdGUoUGF0aWVudC5iaXJ0aERhdGUpICsgRkhJUkhlbHBlcnMuVG9RdWFudGl0eShjb25kaXRpb24uYWJhdGVtZW50IGFzIEZISVIuQWdlKSArIDEgeWVhcikNCiAgCWVsc2UgaWYgY29uZGl0aW9uLmFiYXRlbWVudCBpcyBGSElSLlJhbmdlIHRoZW4NCiAgCSAgSW50ZXJ2YWxbRkhJUkhlbHBlcnMuVG9EYXRlKFBhdGllbnQuYmlydGhEYXRlKSArIEZISVJIZWxwZXJzLlRvUXVhbnRpdHkoKGNvbmRpdGlvbi5hYmF0ZW1lbnQgYXMgRkhJUi5SYW5nZSkubG93KSwNCiAgCQkgIEZISVJIZWxwZXJzLlRvRGF0ZShQYXRpZW50LmJpcnRoRGF0ZSkgKyBGSElSSGVscGVycy5Ub1F1YW50aXR5KChjb25kaXRpb24uYWJhdGVtZW50IGFzIEZISVIuUmFuZ2UpLmhpZ2gpICsgMSB5ZWFyKQ0KICAJZWxzZSBpZiBjb25kaXRpb24uYWJhdGVtZW50IGlzIEZISVIuYm9vbGVhbiB0aGVuDQogIAkgIEludGVydmFsW2VuZCBvZiAiTm9ybWFsaXplIEludGVydmFsIihjb25kaXRpb24ub25zZXQpLCBjb25kaXRpb24ucmVjb3JkZWREYXRlKQ0KICAJZWxzZSBudWxsDQoNCi8qUmV0dXJucyBhbiBpbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggdGhlIGNvbmRpdGlvbiB3YXMgcHJldmFsZW50IChpLmUuIG9uc2V0IHRvIGFiYXRlbWVudCkNCklmIHRoZSBjb25kaXRpb24gaXMgImFjdGl2ZSIsIHRoZW4gYWJhdGVtZW50IGJlaW5nIHVua25vd24NCndvdWxkIGluZGljYXRlIHRoZSBjb25kaXRpb24gaXMgb25nb2luZywgYW5kIHRoZSBlbmRpbmcgYm91bmRhcnkgb2YgdGhlIHByZXZhbGVuY2UNCnBlcmlvZCBpcyBpbmNsdXNpdmUsIG90aGVyd2lzZSwgdGhlIGFiYXRlbWVudCBpcyBjb25zaWRlcmVkIHVua25vd24gYW5kIHRoZSBlbmRpbmcgYm91bmRhcnkNCm9mIHRoZSBwcmV2YWxlbmNlIHBlcmlvZCBpcyBleGNsdXNpdmUuDQpOb3RlIHRoYXQgd2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uIGl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG1hbnkgY2xpbmljYWwgc3lzdGVtcw0KZG8gbm90IGFjdHVhbGx5IGNhcHR1cmUgYWJhdGVtZW50LCBzbyBjYXJlIHNob3VsZCBiZSB0YWtlbiB3aGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24NCnRvIG1lZXQgY2xpbmljYWwgaW50ZW50LiovDQpkZWZpbmUgZnVuY3Rpb24gIlByZXZhbGVuY2UgUGVyaW9kIihjb25kaXRpb24gQ29uZGl0aW9uICk6DQogIGlmIGNvbmRpdGlvbi5jbGluaWNhbFN0YXR1cyB+ICJhY3RpdmUiDQogICAgb3IgY29uZGl0aW9uLmNsaW5pY2FsU3RhdHVzIH4gInJlY3VycmVuY2UiDQogICAgb3IgY29uZGl0aW9uLmNsaW5pY2FsU3RhdHVzIH4gInJlbGFwc2UiIHRoZW4NCiAgICBJbnRlcnZhbFtzdGFydCBvZiAiTm9ybWFsaXplIEludGVydmFsIihjb25kaXRpb24ub25zZXQpLCBlbmQgb2YgIk5vcm1hbGl6ZSBBYmF0ZW1lbnQiKGNvbmRpdGlvbildDQogIGVsc2UNCiAgICBJbnRlcnZhbFtzdGFydCBvZiAiTm9ybWFsaXplIEludGVydmFsIihjb25kaXRpb24ub25zZXQpLCBlbmQgb2YgIk5vcm1hbGl6ZSBBYmF0ZW1lbnQiKGNvbmRpdGlvbikpDQoNCi8qUmV0dXJucyB0aGUgdGFpbCBvZiB0aGUgZ2l2ZW4gdXJpIChpLmUuIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGxhc3Qgc2xhc2ggaW4gdGhlIFVSSSkuKi8NCmRlZmluZSBmdW5jdGlvbiAiR2V0SWQiKHVyaSBTdHJpbmcgKToNCiAgTGFzdChTcGxpdCh1cmksICcvJykpDQoNCi8qUmV0dXJucyB0aGUgQ29uZGl0aW9uIHJlc291cmNlcyByZWZlcmVuY2VkIGJ5IHRoZSBkaWFnbm9zaXMgZWxlbWVudCBvZiB0aGUgRW5jb3VudGVyKi8NCmRlZmluZSBmdW5jdGlvbiAiRW5jb3VudGVyRGlhZ25vc2lzIihFbmNvdW50ZXIgRW5jb3VudGVyICk6DQogIEVuY291bnRlci5kaWFnbm9zaXMgRA0KICAgIHJldHVybiBzaW5nbGV0b24gZnJvbSAoW0NvbmRpdGlvbl0gQyB3aGVyZSBDLmlkID0gIkdldElkIihELmNvbmRpdGlvbi5yZWZlcmVuY2UpKQ0KICANCiAgLy8gUmV0dXJucyB0aGUgY29uZGl0aW9uIHRoYXQgaXMgc3BlY2lmaWVkIGFzIHRoZSBwcmluY2lwYWwgZGlhZ25vc2lzIGZvciB0aGUgZW5jb3VudGVyDQogIC8vIFRPRE86IEJUUiAyMDE5LTA3LTMwOiBTaG91bGRuJ3QgbmVlZCB0aGUgRkhJUkhlbHBlcnMgcmVmZXJlbmNlIGhlcmUsIGludmVzdGlnYXRlDQoNCmRlZmluZSBmdW5jdGlvbiAiUHJpbmNpcGFsRGlhZ25vc2lzIihFbmNvdW50ZXIgRW5jb3VudGVyICk6DQogIChzaW5nbGV0b24gZnJvbSAoRW5jb3VudGVyLmRpYWdub3NpcyBEIHdoZXJlIEZISVJIZWxwZXJzLlRvSW50ZWdlcihELnJhbmspID0gMSkpIFBEDQogIAkJcmV0dXJuIHNpbmdsZXRvbiBmcm9tIChbQ29uZGl0aW9uXSBDIHdoZXJlIEMuaWQgPSAiR2V0SWQiKFBELmNvbmRpdGlvbi5yZWZlcmVuY2UpKQ0KICAvLyBSZXR1cm5zIHRoZSBsb2NhdGlvbiBmb3IgdGhlIGdpdmVuIGxvY2F0aW9uIHJlZmVyZW5jZQ0KDQovKlJldHVybnMgdGhlIExvY2F0aW9uIHJlc291cmNlIHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gcmVmZXJlbmNlKi8NCmRlZmluZSBmdW5jdGlvbiAiR2V0TG9jYXRpb24iKHJlZmVyZW5jZSBSZWZlcmVuY2UgKToNCiAgc2luZ2xldG9uIGZyb20gKA0KICAgIFtMb2NhdGlvbl0gTCB3aGVyZSBMLmlkID0gR2V0SWQocmVmZXJlbmNlLnJlZmVyZW5jZSkNCiAgKQ0KDQovKk5PVEU6IEV4dGVuc2lvbnMgYXJlIG5vdCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoLCBidXQgYXJlIHVzZWQgYXMgYSB3YXkgdG8gYWNjZXNzDQpjb250ZW50IHRoYXQgaXMgZGVmaW5lZCBieSBleHRlbnNpb25zIGJ1dCBub3QgeWV0IHN1cmZhY2VkIGluIHRoZQ0KQ1FMIG1vZGVsIGluZm8uKi8NCmRlZmluZSBmdW5jdGlvbiAiR2V0RXh0ZW5zaW9ucyIoZG9tYWluUmVzb3VyY2UgRG9tYWluUmVzb3VyY2UsIHVybCBTdHJpbmcgKToNCiAgZG9tYWluUmVzb3VyY2UuZXh0ZW5zaW9uIEUNCiAgCSAgd2hlcmUgRS51cmwgPSAoJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvcWljb3JlL1N0cnVjdHVyZURlZmluaXRpb24vJyArIHVybCkNCiAgCQlyZXR1cm4gRQ0KDQpkZWZpbmUgZnVuY3Rpb24gIkdldEV4dGVuc2lvbiIoZG9tYWluUmVzb3VyY2UgRG9tYWluUmVzb3VyY2UsIHVybCBTdHJpbmcgKToNCiAgc2luZ2xldG9uIGZyb20gIkdldEV4dGVuc2lvbnMiKGRvbWFpblJlc291cmNlLCB1cmwpDQoNCi8qTk9URTogRXh0ZW5zaW9ucyBhcmUgbm90IHRoZSBwcmVmZXJyZWQgYXBwcm9hY2gsIGJ1dCBhcmUgdXNlZCBhcyBhIHdheSB0byBhY2Nlc3MNCmNvbnRlbnQgdGhhdCBpcyBkZWZpbmVkIGJ5IGV4dGVuc2lvbnMgYnV0IG5vdCB5ZXQgc3VyZmFjZWQgaW4gdGhlDQpDUUwgbW9kZWwgaW5mby4qLw0KZGVmaW5lIGZ1bmN0aW9uICJHZXRFeHRlbnNpb25zIihlbGVtZW50IEVsZW1lbnQsIHVybCBTdHJpbmcgKToNCiAgZWxlbWVudC5leHRlbnNpb24gRQ0KICAJICB3aGVyZSBFLnVybCA9ICh1cmwpDQogIAkJcmV0dXJuIEUNCg0KZGVmaW5lIGZ1bmN0aW9uICJHZXRFeHRlbnNpb24iKGVsZW1lbnQgRWxlbWVudCwgdXJsIFN0cmluZyApOg0KICBzaW5nbGV0b24gZnJvbSAiR2V0RXh0ZW5zaW9ucyIoZWxlbWVudCwgdXJsKQ0KDQovKk5PVEU6IEV4dGVuc2lvbnMgYXJlIG5vdCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoLCBidXQgYXJlIHVzZWQgYXMgYSB3YXkgdG8gYWNjZXNzDQpjb250ZW50IHRoYXQgaXMgZGVmaW5lZCBieSBleHRlbnNpb25zIGJ1dCBub3QgeWV0IHN1cmZhY2VkIGluIHRoZQ0KQ1FMIG1vZGVsIGluZm8uKi8NCmRlZmluZSBmdW5jdGlvbiAiR2V0QmFzZUV4dGVuc2lvbnMiKGRvbWFpblJlc291cmNlIERvbWFpblJlc291cmNlLCB1cmwgU3RyaW5nICk6DQogIGRvbWFpblJlc291cmNlLmV4dGVuc2lvbiBFDQogIAkgIHdoZXJlIEUudXJsID0gKCdodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vJyArIHVybCkNCiAgCQlyZXR1cm4gRQ0KDQpkZWZpbmUgZnVuY3Rpb24gIkdldEJhc2VFeHRlbnNpb24iKGRvbWFpblJlc291cmNlIERvbWFpblJlc291cmNlLCB1cmwgU3RyaW5nICk6DQogIHNpbmdsZXRvbiBmcm9tICJHZXRCYXNlRXh0ZW5zaW9ucyIoZG9tYWluUmVzb3VyY2UsIHVybCkNCg0KLypAZGVzY3JpcHRpb246IFJldHVybnMgYW55IGJhc2UtRkhJUiBleHRlbnNpb25zIGRlZmluZWQgb24gdGhlIGdpdmVuIGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGlkLg0KQGNvbW1lbnQ6IE5PVEU6IEV4dGVuc2lvbnMgYXJlIG5vdCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoLCBidXQgYXJlIHVzZWQgYXMgYSB3YXkgdG8gYWNjZXNzDQpjb250ZW50IHRoYXQgaXMgZGVmaW5lZCBieSBleHRlbnNpb25zIGJ1dCBub3QgeWV0IHN1cmZhY2VkIGluIHRoZSBDUUwgbW9kZWwgaW5mby4qLw0KZGVmaW5lIGZ1bmN0aW9uICJCYXNlRXh0ZW5zaW9ucyIoZWxlbWVudCBFbGVtZW50LCBpZCBTdHJpbmcgKToNCiAgZWxlbWVudC5leHRlbnNpb24gRQ0KICAJICB3aGVyZSBFLnVybCA9ICgnaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uLycgKyBpZCkNCiAgCQlyZXR1cm4gRQ0KDQovKkBkZXNjcmlwdGlvbjogUmV0dXJucyB0aGUgc2luZ2xlIGJhc2UtRkhJUiBleHRlbnNpb24gKGlmIHByZXNlbnQpIG9uIHRoZSBnaXZlbiBlbGVtZW50IHdpdGggdGhlIHNwZWNpZmllZCBpZC4NCkBjb21tZW50OiBUaGlzIGZ1bmN0aW9uIHVzZXMgc2luZ2xldG9uIGZyb20gdG8gZW5zdXJlIHRoYXQgYSBydW4tdGltZSBleGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZXJlDQppcyBtb3JlIHRoYW4gb25lIGV4dGVuc2lvbiBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVybC4qLw0KZGVmaW5lIGZ1bmN0aW9uICJCYXNlRXh0ZW5zaW9uIihlbGVtZW50IEVsZW1lbnQsIGlkIFN0cmluZyApOg0KICBzaW5nbGV0b24gZnJvbSBCYXNlRXh0ZW5zaW9ucyhlbGVtZW50LCBpZCkNCg0KLypOT1RFOiBQcm92ZW5hbmNlIGlzIG5vdCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoLCB0aGlzIGlzIHByb3ZpZGVkIG9ubHkgYXMgYW4gaWxsdXN0cmF0aW9uDQpmb3Igd2hhdCB1c2luZyBQcm92ZW5hbmNlIGNvdWxkIGxvb2sgbGlrZSwgYW5kIGlzIG5vdCBhIHRlc3RlZCBwYXR0ZXJuKi8NCmRlZmluZSBmdW5jdGlvbiAiR2V0UHJvdmVuYW5jZSIocmVzb3VyY2UgUmVzb3VyY2UgKToNCiAgc2luZ2xldG9uIGZyb20gKFtQcm92ZW5hbmNlOiB0YXJnZXQgaW4gcmVzb3VyY2UuaWRdKQ0KDQpkZWZpbmUgZnVuY3Rpb24gIkdldE1lZGljYXRpb25Db2RlIihyZXF1ZXN0IE1lZGljYXRpb25SZXF1ZXN0ICk6DQogIGlmIHJlcXVlc3QubWVkaWNhdGlvbiBpcyBDb2RlYWJsZUNvbmNlcHQgdGhlbg0KICAJICByZXF1ZXN0Lm1lZGljYXRpb24gYXMgQ29kZWFibGVDb25jZXB0DQogIAllbHNlDQogIAkgIChzaW5nbGV0b24gZnJvbSAoW01lZGljYXRpb25dIE0gd2hlcmUgTS5pZCA9IEdldElkKChyZXF1ZXN0Lm1lZGljYXRpb24gYXMgUmVmZXJlbmNlKS5yZWZlcmVuY2UpKSkuY29kZQ0KDQovKkdpdmVuIGFuIGludGVydmFsLCByZXR1cm4gdHJ1ZSBpZiB0aGUgaW50ZXJ2YWwgaGFzIGEgc3RhcnRpbmcgYm91bmRhcnkgc3BlY2lmaWVkIChpLmUuIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwgaXMgbm90IG51bGwgYW5kIG5vdCB0aGUgbWluaW11bSBEYXRlVGltZSB2YWx1ZSkqLw0KZGVmaW5lIGZ1bmN0aW9uICJIYXNTdGFydCIocGVyaW9kIEludGVydmFsPERhdGVUaW1lPiApOg0KICBub3QgKCBzdGFydCBvZiBwZXJpb2QgaXMgbnVsbA0KICAgICAgb3Igc3RhcnQgb2YgcGVyaW9kID0gbWluaW11bSBEYXRlVGltZQ0KICApDQoNCi8qR2l2ZW4gYW4gaW50ZXJ2YWwsIHJldHVybiB0cnVlIGlmIHRoZSBpbnRlcnZhbCBoYXMgYW4gZW5kaW5nIGJvdW5kYXJ5IHNwZWNpZmllZCAoaS5lLiB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbCBpcyBub3QgbnVsbCBhbmQgbm90IHRoZSBtYXhpbXVtIERhdGVUaW1lIHZhbHVlKSovDQpkZWZpbmUgZnVuY3Rpb24gIkhhc0VuZCIocGVyaW9kIEludGVydmFsPERhdGVUaW1lPiApOg0KICBub3QgKA0KICAgIGVuZCBvZiBwZXJpb2QgaXMgbnVsbA0KICAgICAgb3INCiAgICAgIGVuZCBvZiBwZXJpb2QgPSBtYXhpbXVtIERhdGVUaW1lDQogICkNCg0KLypHaXZlbiBhbiBpbnRlcnZhbCwgcmV0dXJuIHRoZSBlbmRpbmcgcG9pbnQgaWYgdGhlIGludGVydmFsIGhhcyBhbiBlbmRpbmcgYm91bmRhcnkgc3BlY2lmaWVkLCBvdGhlcndpc2UsIHJldHVybiB0aGUgc3RhcnRpbmcgcG9pbnQqLw0KZGVmaW5lIGZ1bmN0aW9uICJMYXRlc3QiKGNob2ljZSBDaG9pY2U8RkhJUi5kYXRlVGltZSwgRkhJUi5QZXJpb2QsIEZISVIuVGltaW5nLCBGSElSLmluc3RhbnQsIEZISVIuc3RyaW5nLCBGSElSLkFnZSwgRkhJUi5SYW5nZT4gKToNCiAgKCJOb3JtYWxpemUgSW50ZXJ2YWwiKGNob2ljZSkpIHBlcmlvZA0KICAgIHJldHVybg0KICAgICAgaWYgKCBIYXNFbmQocGVyaW9kKSkgdGhlbiBlbmQgb2YgcGVyaW9kDQogICAgICBlbHNlIHN0YXJ0IG9mIHBlcmlvZA0KDQovKkdpdmVuIGFuIGludGVydmFsLCByZXR1cm4gdGhlIHN0YXJ0aW5nIHBvaW50IGlmIHRoZSBpbnRlcnZhbCBoYXMgYSBzdGFydGluZyBib3VuZGFyeSBzcGVjaWZpZWQsIG90aGVyd2lzZSwgcmV0dXJuIHRoZSBlbmRpbmcgcG9pbnQqLw0KZGVmaW5lIGZ1bmN0aW9uICJFYXJsaWVzdCIoY2hvaWNlIENob2ljZTxGSElSLmRhdGVUaW1lLCBGSElSLlBlcmlvZCwgRkhJUi5UaW1pbmcsIEZISVIuaW5zdGFudCwgRkhJUi5zdHJpbmcsIEZISVIuQWdlLCBGSElSLlJhbmdlPiApOg0KICAoIk5vcm1hbGl6ZSBJbnRlcnZhbCIoY2hvaWNlKSkgcGVyaW9kDQogICAgcmV0dXJuDQogICAgICBpZiAoSGFzU3RhcnQocGVyaW9kKSkgdGhlbiBzdGFydCBvZiBwZXJpb2QNCiAgICAgIGVsc2UgZW5kIG9mIHBlcmlvZA0KDQo="/>
        </content>
      </Library>
    </resource>
    <request>
      <method value="PUT"/>
      <url value="Library/MATGlobalCommonFunctionsFHIR4"/>
    </request>
  </entry>
  <entry>
    <fullUrl value="urn:uuid:c6098378-cb38-4ae2-a096-3a3cc5c620d5"/>
    <resource>
      <Library>
        <id value="SupplementalDataElementsFHIR4"/>
        <text>
          <status value="extensions"/>
          <div xmlns="http://www.w3.org/1999/xhtml"><a name="Library_SupplementalDataElementsFHIR4"> </a>
<div>
    <table class="grid dict">
        
        
        <tr>
            <th scope="row"><b>Title: </b></th>
            <td style="padding-left: 4px;">SupplementalDataElementsFHIR4</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">SupplementalDataElementsFHIR4</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Version: </b></th>
            <td style="padding-left: 4px;">2.0.000</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="Bundle-sde-example-artifact-bundle.html">SupplementalDataElementsFHIR4</a></td>
        </tr>
        

        

        

        
        <tr>
            <th scope="row"><b>Status: </b></th>
            <td style="padding-left: 4px;">draft</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Experimental: </b></th>
            <td style="padding-left: 4px;">true</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Type: </b></th>
            <td style="padding-left: 4px;">
                
                    
                        
                        <p style="margin-bottom: 5px;">
                            <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>code: </b> <span>logic-library</span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>display: </b> <span>Logic Library</span>
                        </p>
                        
                    
                
                
            </td>
        </tr>
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        
        <tr>
            <th scope="row"><b>Related Artifacts: </b></th>
            <td style="padding-left: 4px;">
                
                
                
                <p><b>Dependencies</b></p>
                <ul>
                  
                    <li><a href="http://fhir.org/guides/cqf/common/4.0.1/4.0.1/Library-FHIR-ModelInfo.html">http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1</a></li>
                  
                    <li><a href="Bundle-sde-example-artifact-bundle.html">FHIR Helpersversion: null4.0.1)</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.114222.4.11.837/expansion">Ethnicity</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1/expansion">ONC Administrative Sex</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.114222.4.11.3591/expansion">Payer Type</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.114222.4.11.836/expansion">Race</a></li>
                  
                </ul>
                
                
                
                
                
            </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Parameters: </b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>
              
                <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>SDE Ethnicity</th><th>Coding</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Payer</th><th>Any</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Race</th><th>Coding</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Sex</th><th>Coding</th><th>0</th><th>1</th><th>Out</th></tr>
              
            </table>
          </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Data Requirements:</b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>
              
                <tr>
                  <th>Patient</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Patient</th>
                  <th>;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Coverage</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Coverage</th>
                  <th>;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
            </table>
          </td>
        </tr>
        

        
        
        <tr>
          <td colspan="2">
            <table>
              <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
              <tr><td><pre><code class="language-cql">library SupplementalDataElementsFHIR4 version '2.0.000'

/*@update: @@BTR 2020-03-31 -&gt;
Incremented version to 2.0.0
Updated FHIR version to 4.0.1
@@@*/

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.1' called FHIRHelpers

valueset &quot;Ethnicity&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837' 
valueset &quot;ONC Administrative Sex&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1' 
valueset &quot;Payer&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591' 
valueset &quot;Race&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836' 

context Patient

define &quot;SDE Ethnicity&quot;:
  (flatten (
      Patient.extension Extension
        where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'
          return Extension.extension
    )) E
      where E.url = 'ombCategory'
        or E.url = 'detailed'
      return E.value as Coding

define &quot;SDE Payer&quot;:
  [Coverage: type in &quot;Payer&quot;] Payer
        return {
          code: Payer.type,
          period: Payer.period
        }

define &quot;SDE Race&quot;:
  (flatten (
      Patient.extension Extension
        where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race'
          return Extension.extension
    )) E
      where E.url = 'ombCategory'
        or E.url = 'detailed'
      return E.value as Coding

define &quot;SDE Sex&quot;:
  case
      when Patient.gender = 'male' then Code { code: 'M', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Male' }
      when Patient.gender = 'female' then Code { code: 'F', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Female' }
      else null
    end

</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
        </text>
        <url
             value="http://fhir.org/guides/cqf/Library/SupplementalDataElementsFHIR4"/>
        <version value="2.0.000"/>
        <name value="SupplementalDataElementsFHIR4"/>
        <title value="SupplementalDataElementsFHIR4"/>
        <status value="draft"/>
        <experimental value="true"/>
        <type>
          <coding>
            <system
                    value="http://terminology.hl7.org/CodeSystem/library-type"/>
            <code value="logic-library"/>
            <display value="Logic Library"/>
          </coding>
        </type>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="FHIR model information"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Library FHIRHelpers"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Ethnicity"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set ONC Administrative Sex"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Payer"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Race"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836"/>
        </relatedArtifact>
        <parameter>
          <name value="Patient"/>
          <use value="out"/>
          <min value="0"/>
          <max value="1"/>
          <type value="Patient"/>
        </parameter>
        <parameter>
          <name value="SDE Ethnicity"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Coding"/>
        </parameter>
        <parameter>
          <name value="SDE Payer"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Any"/>
        </parameter>
        <parameter>
          <name value="SDE Race"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Coding"/>
        </parameter>
        <parameter>
          <name value="SDE Sex"/>
          <use value="out"/>
          <min value="0"/>
          <max value="1"/>
          <type value="Coding"/>
        </parameter>
        <dataRequirement>
          <type value="Patient"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
          <mustSupport value="url"/>
          <mustSupport value="extension"/>
          <mustSupport value="value"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Coverage"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Coverage"/>
          <mustSupport value="type"/>
          <mustSupport value="period"/>
          <codeFilter>
            <path value="type"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/>
          </codeFilter>
        </dataRequirement>
        <content>
          <contentType value="text/cql"/>
          <data
                value="bGlicmFyeSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHNGSElSNCB2ZXJzaW9uICcyLjAuMDAwJw0KDQovKkB1cGRhdGU6IEBAQlRSIDIwMjAtMDMtMzEgLT4NCkluY3JlbWVudGVkIHZlcnNpb24gdG8gMi4wLjANClVwZGF0ZWQgRkhJUiB2ZXJzaW9uIHRvIDQuMC4xDQpAQEAqLw0KDQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJw0KDQppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMNCg0KdmFsdWVzZXQgIkV0aG5pY2l0eSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTQyMjIuNC4xMS44MzcnIA0KdmFsdWVzZXQgIk9OQyBBZG1pbmlzdHJhdGl2ZSBTZXgiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xJyANCnZhbHVlc2V0ICJQYXllciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTQyMjIuNC4xMS4zNTkxJyANCnZhbHVlc2V0ICJSYWNlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjgzNicgDQoNCmNvbnRleHQgUGF0aWVudA0KDQpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOg0KICAoZmxhdHRlbiAoDQogICAgICBQYXRpZW50LmV4dGVuc2lvbiBFeHRlbnNpb24NCiAgICAgICAgd2hlcmUgRXh0ZW5zaW9uLnVybCA9ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NvcmUvU3RydWN0dXJlRGVmaW5pdGlvbi91cy1jb3JlLWV0aG5pY2l0eScNCiAgICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICAgICkpIEUNCiAgICAgIHdoZXJlIEUudXJsID0gJ29tYkNhdGVnb3J5Jw0KICAgICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICAgIHJldHVybiBFLnZhbHVlIGFzIENvZGluZw0KDQpkZWZpbmUgIlNERSBQYXllciI6DQogIFtDb3ZlcmFnZTogdHlwZSBpbiAiUGF5ZXIiXSBQYXllcg0KICAgICAgICByZXR1cm4gew0KICAgICAgICAgIGNvZGU6IFBheWVyLnR5cGUsDQogICAgICAgICAgcGVyaW9kOiBQYXllci5wZXJpb2QNCiAgICAgICAgfQ0KDQpkZWZpbmUgIlNERSBSYWNlIjoNCiAgKGZsYXR0ZW4gKA0KICAgICAgUGF0aWVudC5leHRlbnNpb24gRXh0ZW5zaW9uDQogICAgICAgIHdoZXJlIEV4dGVuc2lvbi51cmwgPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1yYWNlJw0KICAgICAgICAgIHJldHVybiBFeHRlbnNpb24uZXh0ZW5zaW9uDQogICAgKSkgRQ0KICAgICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICAgIG9yIEUudXJsID0gJ2RldGFpbGVkJw0KICAgICAgcmV0dXJuIEUudmFsdWUgYXMgQ29kaW5nDQoNCmRlZmluZSAiU0RFIFNleCI6DQogIGNhc2UNCiAgICAgIHdoZW4gUGF0aWVudC5nZW5kZXIgPSAnbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ00nLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ01hbGUnIH0NCiAgICAgIHdoZW4gUGF0aWVudC5nZW5kZXIgPSAnZmVtYWxlJyB0aGVuIENvZGUgeyBjb2RlOiAnRicsIHN5c3RlbTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdjMvQWRtaW5pc3RyYXRpdmVHZW5kZXInLCBkaXNwbGF5OiAnRmVtYWxlJyB9DQogICAgICBlbHNlIG51bGwNCiAgICBlbmQNCg0K"/>
        </content>
      </Library>
    </resource>
    <request>
      <method value="PUT"/>
      <url value="Library/SupplementalDataElementsFHIR4"/>
    </request>
  </entry>
  <entry>
    <fullUrl value="urn:uuid:e3b78b9e-96ee-43fb-aeea-22a7681a1538"/>
    <resource>
      <Library>
        <id value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
        <text>
          <status value="extensions"/>
          <div xmlns="http://www.w3.org/1999/xhtml"><a name="Library_NHSNGlycemicControlHypoglycemicInitialPopulation"> </a>
<div>
    <table class="grid dict">
        
        
        <tr>
            <th scope="row"><b>Title: </b></th>
            <td style="padding-left: 4px;">NHSN Glycemic Control Hypoglycemic Initial Population</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">NHSNGlycemicControlHypoglycemicInitialPopulation</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Version: </b></th>
            <td style="padding-left: 4px;">0.0.002</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="Bundle-sde-example-artifact-bundle.html">NHSN Glycemic Control Hypoglycemic Initial Population</a></td>
        </tr>
        

        

        

        
        <tr>
            <th scope="row"><b>Status: </b></th>
            <td style="padding-left: 4px;">draft</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Experimental: </b></th>
            <td style="padding-left: 4px;">true</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Type: </b></th>
            <td style="padding-left: 4px;">
                
                    
                        
                        <p style="margin-bottom: 5px;">
                            <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>code: </b> <span>logic-library</span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>display: </b> <span>Logic Library</span>
                        </p>
                        
                    
                
                
            </td>
        </tr>
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        
        <tr>
            <th scope="row"><b>Related Artifacts: </b></th>
            <td style="padding-left: 4px;">
                
                
                
                <p><b>Dependencies</b></p>
                <ul>
                  
                    <li><a href="http://fhir.org/guides/cqf/common/4.0.1/4.0.1/Library-FHIR-ModelInfo.html">http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1</a></li>
                  
                    <li><a href="Bundle-sde-example-artifact-bundle.html">FHIR Helpersversion: null4.0.1)</a></li>
                  
                    <li><a href="Bundle-sde-example-artifact-bundle.html">SupplementalDataElementsFHIR4version: null2.0.000)</a></li>
                  
                    <li><a href="Bundle-sde-example-artifact-bundle.html">MAT Global Common Functions FHIRR4version: null6.1.000)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-ActCode.html">ActCode</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-diagnosis-role.html">Diagnosis Role</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.0.0/CodeSystem-v2-0487.html">specimenType</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-observation-category.html">Observation Category Codes</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-condition-category.html">Condition Category Codes</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1190.38/expansion">Blood Glucose Laboratory and Point of Care Tests</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.265/expansion">Inpatient, Emergency, and Observation Locations</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.5.0/ValueSet-encounter-discharge-disposition.html">Discharge disposition</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1190.58/expansion">Antidiabetic Medications</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.117.1.7.1.292/expansion">Emergency Department Visit</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion">Encounter Inpatient</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1111.143/expansion">Observation Services</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.114222.4.11.3591/expansion">Payer Type</a></li>
                  
                </ul>
                
                
                
                
                
            </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Parameters: </b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>
              
                <tr><th>Measurement Period</th><th>Period</th><th>0</th><th>1</th><th>In</th></tr>
              
                <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Inpatient Encounter</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Patient Hospital Locations</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Antidiabetic Drugs Administered or Ordered</th><th>Any</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Initial Population</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Chief Complaint</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Condition during Encounter</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Encounter Discharge Dispositions</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Encounter Locations</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Medication Administration</th><th>MedicationAdministration</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Medication Request</th><th>MedicationRequest</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Blood Glucose Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Payer</th><th>Any</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Specimen</th><th>Specimen</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Minimal Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>SDE Minimal Medication Requests</th><th>MedicationRequest</th><th>0</th><th>*</th><th>Out</th></tr>
              
            </table>
          </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Data Requirements:</b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>
              
                <tr>
                  <th>Patient</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Patient</th>
                  <th/>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>class</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      
                          
                          <p style="margin-bottom: 5px;">
                              <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-ActCode.html">http://terminology.hl7.org/CodeSystem/v3-ActCode</a></span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>code: </b> <span>IMP</span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>display: </b> <span>inpatient encounter</span>
                          </p>
                          
                      
                          
                          <p style="margin-bottom: 5px;">
                              <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-ActCode.html">http://terminology.hl7.org/CodeSystem/v3-ActCode</a></span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>code: </b> <span>ACUTE</span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>display: </b> <span>inpatient acute</span>
                          </p>
                          
                      
                          
                          <p style="margin-bottom: 5px;">
                              <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-ActCode.html">http://terminology.hl7.org/CodeSystem/v3-ActCode</a></span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>code: </b> <span>NONAC</span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>display: </b> <span>inpatient non-acute</span>
                          </p>
                          
                      
                          
                          <p style="margin-bottom: 5px;">
                              <b>system: </b> <span><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-ActCode.html">http://terminology.hl7.org/CodeSystem/v3-ActCode</a></span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>code: </b> <span>SS</span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>display: </b> <span>short stay</span>
                          </p>
                          
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Location</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Location</th>
                  <th>;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Medication</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Medication</th>
                  <th>;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>MedicationAdministration</th>
                  <th>http://hl7.org/fhir/StructureDefinition/MedicationAdministration</th>
                  <th>;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>MedicationRequest</th>
                  <th>http://hl7.org/fhir/StructureDefinition/MedicationRequest</th>
                  <th>;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Specimen</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Specimen</th>
                  <th>;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Condition</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Condition</th>
                  <th>;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Observation</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Observation</th>
                  <th>;;;;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>code</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.38</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Coverage</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Coverage</th>
                  <th>;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
            </table>
          </td>
        </tr>
        

        
        
        <tr>
          <td colspan="2">
            <table>
              <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
              <tr><td><pre><code class="language-cql">library NHSNGlycemicControlHypoglycemicInitialPopulation version '0.0.002'

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.1' called FHIRHelpers
include SupplementalDataElementsFHIR4 version '2.0.000' called SDE
include MATGlobalCommonFunctionsFHIR4 version '6.1.000' called Global

codesystem &quot;ActCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-ActCode' 
codesystem &quot;Diagnosis Role&quot;: 'http://terminology.hl7.org/CodeSystem/diagnosis-role'
codesystem &quot;Specimen Type&quot;: 'http://terminology.hl7.org/CodeSystem/v2-0487'
codesystem &quot;Observation Category&quot;: 'http://terminology.hl7.org/CodeSystem/observation-category'
codesystem &quot;Condition Category&quot;: 'http://terminology.hl7.org/CodeSystem/condition-category' 

valueset &quot;Blood Glucose Laboratory and Point of Care Tests&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.38'
valueset &quot;Inpatient, Emergency, and Observation Locations&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265'
valueset &quot;Discharge Disposition&quot;: 'http://terminology.hl7.org/ValueSet/encounter-discharge-disposition'
valueset &quot;Antidiabetic Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.58'
valueset &quot;Emergency Department Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'
valueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
valueset &quot;Observation Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143'

code &quot;Chief Complaint&quot;: 'CC' from &quot;Diagnosis Role&quot; display 'Chief complaint'
code &quot;emergency&quot;: 'EMER' from &quot;ActCode&quot; display 'emergency'
code &quot;inpatient acute&quot;: 'ACUTE' from &quot;ActCode&quot; display 'inpatient acute'
code &quot;inpatient encounter&quot;: 'IMP' from &quot;ActCode&quot; display 'inpatient encounter'
code &quot;inpatient non-acute&quot;: 'NONAC' from &quot;ActCode&quot; display 'inpatient non-acute'
code &quot;observation encounter&quot;: 'OBSENC' from &quot;ActCode&quot; display 'observation encounter'
code &quot;short stay&quot;: 'SS' from &quot;ActCode&quot; display 'short stay'
code &quot;laboratory&quot;: 'laboratory' from &quot;Observation Category&quot; display 'Laboratory'
code &quot;encounter-diagnosis&quot;: 'encounter-diagnosis' from &quot;Condition Category&quot; display'encounter-diagnosis'

parameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;
 default Interval[@2022-01-01T00:00:00.0, @2022-01-31T00:00:00.0)

context Patient

define &quot;Initial Population&quot;:
  (&quot;Inpatient Encounter&quot;
  union &quot;Patient Hospital Locations&quot;) InpatientEncounters
  with &quot;Antidiabetic Drugs Administered or Ordered&quot; ADD
  such that Coalesce(start of Global.&quot;Normalize Interval&quot;(ADD.effective), ADD.authoredOn)
      during &quot;HospitalizationWithObservationOrEmergency&quot;(InpatientEncounters)
    and Coalesce(start of Global.&quot;Normalize Interval&quot;(ADD.effective), ADD.authoredOn) during &quot;Measurement Period&quot;

define &quot;Inpatient Encounter&quot;:
  [Encounter: class in {&quot;inpatient encounter&quot;, &quot;inpatient acute&quot;, &quot;inpatient non-acute&quot;, &quot;short stay&quot;}]
    union [Encounter: &quot;Encounter Inpatient&quot;] Encounters
  where Encounters.status in {'in-progress', 'finished'}
    and Encounters.period overlaps &quot;Measurement Period&quot;

define &quot;Patient Hospital Locations&quot;:
  [Encounter] Encounters
  where exists(
    Encounters.location EncounterLocation
    where Global.GetLocation(EncounterLocation.location).type in &quot;Inpatient, Emergency, and Observation Locations&quot;
      and EncounterLocation.period during Encounters.period
  )

define &quot;Antidiabetic Drugs Administered or Ordered&quot;:
  ([MedicationAdministration] ADDMedAdmin
    where GetMedicationCode(ADDMedAdmin.medication) in &quot;Antidiabetic Medications&quot;
      and ADDMedAdmin.status ~ 'completed')
  union (
    [MedicationRequest] MedicationRequests
      where GetMedicationCode(MedicationRequests.medication) in &quot;Antidiabetic Medications&quot;
  )

define function &quot;GetMedicationCode&quot;(choice Choice&lt;FHIR.CodeableConcept, FHIR.Reference&gt;):
  case
    when choice is FHIR.CodeableConcept then
      choice as FHIR.CodeableConcept
    when choice is FHIR.Reference then
      GetMedication(choice as FHIR.Reference).code
    else
      null as FHIR.CodeableConcept
  end

define function &quot;GetMedication&quot;(reference Reference ):
  singleton from (
    [Medication] M where M.id = Global.GetId(reference.reference)
  )

define function &quot;HospitalizationWithObservationOrEmergency&quot;(TheEncounter FHIR.Encounter ):
  TheEncounter Visit
    let ObsVisit: Last([Encounter: &quot;Observation Services&quot;] LastObs
        where LastObs.class ~ &quot;observation encounter&quot;
          and LastObs.period ends 1 hour or less on or before start of Visit.period
  				sort by end of period
    ),
    VisitStart: Coalesce(start of ObsVisit.period, start of Visit.period),
    EDVisit: Last([Encounter: &quot;Emergency Department Visit&quot;] LastED
        where LastED.class ~ &quot;emergency&quot;
          and LastED.period ends 1 hour or less on or before start of Visit.period
  				sort by end of period
    )
    return Interval[Coalesce(start of EDVisit.period, VisitStart), end of Visit.period]

define function &quot;GetSpecimen&quot;(reference Reference):
  singleton from (
    [Specimen] S where S.id = Global.GetId(reference.reference)
  )

define function &quot;GetPatientExtensions&quot;(domainResource DomainResource):
  domainResource.extension E
    where E.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race'
      or E.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'
      or E.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex'
      or E.url = 'https://hl7.org/fhir/us/core/StructureDefinition-us-core-genderIdentity'
    return E

define function &quot;GetPatientAddress&quot;(addresses List&lt;FHIR.Address&gt;):
  addresses address
  return FHIR.Address{
    postalCode: address.postalCode
  }

define function &quot;MedicationRequestResource&quot;(medicationRequest MedicationRequest):
  medicationRequest m
  return MedicationRequest{
    id: FHIR.id {value: 'new-' + m.id},
    medication: GetMedicationCode(m.medication),
    dosageInstruction: m.dosageInstruction
  }
  
//Supplement Data Elements
define &quot;SDE Chief Complaint&quot;:
  &quot;Initial Population&quot; IP
  with IP.diagnosis InitialPopulationDiagnosis
  such that InitialPopulationDiagnosis.use ~ &quot;Chief Complaint&quot;

define &quot;SDE Condition&quot;:
  [Condition] Conditions
  with &quot;Initial Population&quot; InitialPopulation
  such that Global.&quot;Normalize Interval&quot;(Conditions.onset) overlaps InitialPopulation.period
  
define &quot;SDE Condition during Encounter&quot;:
  [Condition] ConditionEncounterDiagnosis
  with ConditionEncounterDiagnosis.category Category
  such that Category ~ &quot;encounter-diagnosis&quot;
    and exists(&quot;Initial Population&quot;)
    
define &quot;SDE Encounter Discharge Dispositions&quot;:
	&quot;Initial Population&quot; DischargeDispositions 
  where DischargeDispositions.hospitalization.dischargeDisposition in &quot;Discharge Disposition&quot;
  
define &quot;SDE Encounter Locations&quot;:
  &quot;Initial Population&quot; InitialPopulation 
  where exists ( 
    InitialPopulation.location InitialPopulationLocation
    where (Global.GetLocation(InitialPopulationLocation.location).type in &quot;Inpatient, Emergency, and Observation Locations&quot;   
      and InitialPopulationLocation.period during InitialPopulation.period)
  )

define &quot;SDE Medication Administration&quot;:
	[MedicationAdministration] MedicationAdministrations
  with &quot;Initial Population&quot; InitialPopulation
  such that start of Global.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) during &quot;HospitalizationWithObservationOrEmergency&quot;(InitialPopulation)
    and start of Global.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) during &quot;Measurement Period&quot;

define &quot;SDE Medication Request&quot;:
	[MedicationRequest] MedicationRequests
  with &quot;Initial Population&quot; InitialPopulation
	such that MedicationRequests.authoredOn during &quot;HospitalizationWithObservationOrEmergency&quot;(InitialPopulation)
    and MedicationRequests.authoredOn during &quot;Measurement Period&quot;

define &quot;SDE Blood Glucose Observation&quot;:
	[Observation: &quot;Blood Glucose Laboratory and Point of Care Tests&quot;] Observations 
  with &quot;Initial Population&quot; InitialPopulation
  such that start of Global.&quot;Normalize Interval&quot;(Observations.effective) during InitialPopulation.period
    or Global.&quot;Normalize Interval&quot;(GetSpecimen(Observations.specimen).collection.collected) during InitialPopulation.period
  with Observations.category category
  such that category ~ &quot;laboratory&quot;

define &quot;SDE Payer&quot;: 
	SDE.&quot;SDE Payer&quot; Payer
  with &quot;Initial Population&quot; InitialPopulation
  such that start of Payer.period before end of InitialPopulation.period
  
define &quot;SDE Specimen&quot;:
  [Specimen] Specimen
  with &quot;Initial Population&quot; InitialPopulation
  such that Global.&quot;Normalize Interval&quot;(Specimen.collection.collected) during InitialPopulation.period

//Change on CQF ruler happened on 8/12. Check to make sure CQF-Ruler version is dated at or after (version 2.0.0). 
//Wait 2-3 days before the changes are actually applied to the CQF-Ruler.
define &quot;SDE Minimal Patient&quot;:
  Patient{
    id: Patient.id,
    extension: GetPatientExtensions(Patient),
    identifier: Patient.identifier,
    gender: Patient.gender,
    birthDate: Patient.birthDate,
    deceased: Patient.deceased,
    address: GetPatientAddress(Patient.address)
  }
  
define &quot;SDE Minimal Medication Requests&quot;:
  [MedicationRequest] MedicationRequests
  return MedicationRequestResource(MedicationRequests)

/*define &quot;SDE Resource Construction Test Inlib&quot;:
  FHIR.Observation 
  {
    id: FHIR.id { value: 'observation-sdetestinlib-' + ToString(Now()) },
    status: FHIR.ObservationStatus { value: 'final' },
    code: FHIR.CodeableConcept { coding: { FHIR.Coding { code: FHIR.code { value: 'days-since-appointment' } } } },
    subject: FHIR.Reference { reference: FHIR.string { value: Patient.id.value }}
    //value: FHIR.integer { value: Abs(difference in days between end of SDE.&quot;Last Appointment&quot;.period and ToDateTime(Today())) }
  }*/

  define &quot;SDE Ethnicity Coding&quot;:
    SDE.&quot;SDE Ethnicity&quot;

  define &quot;SDE Race Coding&quot;:
    SDE.&quot;SDE Race&quot;</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
        </text>
        <url
             value="http://fhir.org/guides/cqf/Library/NHSNGlycemicControlHypoglycemicInitialPopulation"/>
        <version value="0.0.002"/>
        <name value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
        <title value="NHSN Glycemic Control Hypoglycemic Initial Population"/>
        <status value="draft"/>
        <experimental value="true"/>
        <type>
          <coding>
            <system
                    value="http://terminology.hl7.org/CodeSystem/library-type"/>
            <code value="logic-library"/>
            <display value="Logic Library"/>
          </coding>
        </type>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="FHIR model information"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Library FHIRHelpers"/>
          <resource
                    value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Library SDE"/>
          <resource
                    value="http://fhir.org/guides/cqf/Library/SupplementalDataElementsFHIR4|2.0.000"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Library Global"/>
          <resource
                    value="http://fhir.org/guides/cqf/Library/MATGlobalCommonFunctionsFHIR4|6.1.000"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system ActCode"/>
          <resource value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system Diagnosis Role"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/diagnosis-role"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system Specimen Type"/>
          <resource value="http://terminology.hl7.org/CodeSystem/v2-0487"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system Observation Category"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/observation-category"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Code system Condition Category"/>
          <resource
                    value="http://terminology.hl7.org/CodeSystem/condition-category"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display
                   value="Value set Blood Glucose Laboratory and Point of Care Tests"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.38"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display
                   value="Value set Inpatient, Emergency, and Observation Locations"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Discharge Disposition"/>
          <resource
                    value="http://terminology.hl7.org/ValueSet/encounter-discharge-disposition"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Antidiabetic Medications"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.58"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Emergency Department Visit"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Encounter Inpatient"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Observation Services"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
        </relatedArtifact>
        <relatedArtifact>
          <type value="depends-on"/>
          <display value="Value set Payer"/>
          <resource
                    value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/>
        </relatedArtifact>
        <parameter>
          <name value="Measurement Period"/>
          <use value="in"/>
          <min value="0"/>
          <max value="1"/>
          <type value="Period"/>
        </parameter>
        <parameter>
          <name value="Patient"/>
          <use value="out"/>
          <min value="0"/>
          <max value="1"/>
          <type value="Patient"/>
        </parameter>
        <parameter>
          <name value="Inpatient Encounter"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Encounter"/>
        </parameter>
        <parameter>
          <name value="Patient Hospital Locations"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Encounter"/>
        </parameter>
        <parameter>
          <name value="Antidiabetic Drugs Administered or Ordered"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Any"/>
        </parameter>
        <parameter>
          <name value="Initial Population"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Encounter"/>
        </parameter>
        <parameter>
          <name value="SDE Chief Complaint"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Encounter"/>
        </parameter>
        <parameter>
          <name value="SDE Condition"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Condition"/>
        </parameter>
        <parameter>
          <name value="SDE Condition during Encounter"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Condition"/>
        </parameter>
        <parameter>
          <name value="SDE Encounter Discharge Dispositions"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Encounter"/>
        </parameter>
        <parameter>
          <name value="SDE Encounter Locations"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Encounter"/>
        </parameter>
        <parameter>
          <name value="SDE Medication Administration"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="MedicationAdministration"/>
        </parameter>
        <parameter>
          <name value="SDE Medication Request"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="MedicationRequest"/>
        </parameter>
        <parameter>
          <name value="SDE Blood Glucose Observation"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Observation"/>
        </parameter>
        <parameter>
          <name value="SDE Payer"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Any"/>
        </parameter>
        <parameter>
          <name value="SDE Specimen"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="Specimen"/>
        </parameter>
        <parameter>
          <name value="SDE Minimal Patient"/>
          <use value="out"/>
          <min value="0"/>
          <max value="1"/>
          <type value="Patient"/>
        </parameter>
        <parameter>
          <name value="SDE Minimal Medication Requests"/>
          <use value="out"/>
          <min value="0"/>
          <max value="*"/>
          <type value="MedicationRequest"/>
        </parameter>
        <dataRequirement>
          <type value="Patient"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Encounter"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
          <mustSupport value="class"/>
          <codeFilter>
            <path value="class"/>
            <code>
              <system
                      value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
              <code value="IMP"/>
              <display value="inpatient encounter"/>
            </code>
            <code>
              <system
                      value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
              <code value="ACUTE"/>
              <display value="inpatient acute"/>
            </code>
            <code>
              <system
                      value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
              <code value="NONAC"/>
              <display value="inpatient non-acute"/>
            </code>
            <code>
              <system
                      value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
              <code value="SS"/>
              <display value="short stay"/>
            </code>
          </codeFilter>
        </dataRequirement>
        <dataRequirement>
          <type value="Encounter"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
          <mustSupport value="type"/>
          <mustSupport value="status"/>
          <mustSupport value="period"/>
          <codeFilter>
            <path value="type"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
          </codeFilter>
        </dataRequirement>
        <dataRequirement>
          <type value="Encounter"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
          <mustSupport value="location"/>
          <mustSupport value="period"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Encounter"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
          <mustSupport value="type"/>
          <mustSupport value="class"/>
          <mustSupport value="period"/>
          <codeFilter>
            <path value="type"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
          </codeFilter>
        </dataRequirement>
        <dataRequirement>
          <type value="Encounter"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
          <mustSupport value="type"/>
          <mustSupport value="class"/>
          <mustSupport value="period"/>
          <codeFilter>
            <path value="type"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/>
          </codeFilter>
        </dataRequirement>
        <dataRequirement>
          <type value="Location"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Location"/>
          <mustSupport value="id"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Medication"/>
          <profile
                   value="http://hl7.org/fhir/StructureDefinition/Medication"/>
          <mustSupport value="id"/>
        </dataRequirement>
        <dataRequirement>
          <type value="MedicationAdministration"/>
          <profile
                   value="http://hl7.org/fhir/StructureDefinition/MedicationAdministration"/>
          <mustSupport value="medication"/>
          <mustSupport value="status"/>
          <mustSupport value="effective"/>
        </dataRequirement>
        <dataRequirement>
          <type value="MedicationRequest"/>
          <profile
                   value="http://hl7.org/fhir/StructureDefinition/MedicationRequest"/>
          <mustSupport value="medication"/>
          <mustSupport value="authoredOn"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Specimen"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Specimen"/>
          <mustSupport value="id"/>
          <mustSupport value="collection"/>
          <mustSupport value="collection.collected"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Condition"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Condition"/>
          <mustSupport value="onset"/>
          <mustSupport value="category"/>
        </dataRequirement>
        <dataRequirement>
          <type value="Observation"/>
          <profile
                   value="http://hl7.org/fhir/StructureDefinition/Observation"/>
          <mustSupport value="code"/>
          <mustSupport value="effective"/>
          <mustSupport value="specimen"/>
          <mustSupport value="specimen.collection"/>
          <mustSupport value="specimen.collection.collected"/>
          <mustSupport value="category"/>
          <codeFilter>
            <path value="code"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.38"/>
          </codeFilter>
        </dataRequirement>
        <dataRequirement>
          <type value="Coverage"/>
          <profile value="http://hl7.org/fhir/StructureDefinition/Coverage"/>
          <mustSupport value="type"/>
          <mustSupport value="period"/>
          <codeFilter>
            <path value="type"/>
            <valueSet
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/>
          </codeFilter>
        </dataRequirement>
        <content>
          <contentType value="text/cql"/>
          <data
                value="bGlicmFyeSBOSFNOR2x5Y2VtaWNDb250cm9sSHlwb2dseWNlbWljSW5pdGlhbFBvcHVsYXRpb24gdmVyc2lvbiAnMC4wLjAwMicKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHNGSElSNCB2ZXJzaW9uICcyLjAuMDAwJyBjYWxsZWQgU0RFCmluY2x1ZGUgTUFUR2xvYmFsQ29tbW9uRnVuY3Rpb25zRkhJUjQgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIEdsb2JhbAoKY29kZXN5c3RlbSAiQWN0Q29kZSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3YzLUFjdENvZGUnIApjb2Rlc3lzdGVtICJEaWFnbm9zaXMgUm9sZSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2RpYWdub3Npcy1yb2xlJwpjb2Rlc3lzdGVtICJTcGVjaW1lbiBUeXBlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDQ4NycKY29kZXN5c3RlbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9vYnNlcnZhdGlvbi1jYXRlZ29yeScKY29kZXN5c3RlbSAiQ29uZGl0aW9uIENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vY29uZGl0aW9uLWNhdGVnb3J5JyAKCnZhbHVlc2V0ICJCbG9vZCBHbHVjb3NlIExhYm9yYXRvcnkgYW5kIFBvaW50IG9mIENhcmUgVGVzdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTkwLjM4Jwp2YWx1ZXNldCAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI2NScKdmFsdWVzZXQgIkRpc2NoYXJnZSBEaXNwb3NpdGlvbiI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9WYWx1ZVNldC9lbmNvdW50ZXItZGlzY2hhcmdlLWRpc3Bvc2l0aW9uJwp2YWx1ZXNldCAiQW50aWRpYWJldGljIE1lZGljYXRpb25zIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTE5MC41OCcKdmFsdWVzZXQgIkVtZXJnZW5jeSBEZXBhcnRtZW50IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTInCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIk9ic2VydmF0aW9uIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xNDMnCgpjb2RlICJDaGllZiBDb21wbGFpbnQiOiAnQ0MnIGZyb20gIkRpYWdub3NpcyBSb2xlIiBkaXNwbGF5ICdDaGllZiBjb21wbGFpbnQnCmNvZGUgImVtZXJnZW5jeSI6ICdFTUVSJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdlbWVyZ2VuY3knCmNvZGUgImlucGF0aWVudCBhY3V0ZSI6ICdBQ1VURScgZnJvbSAiQWN0Q29kZSIgZGlzcGxheSAnaW5wYXRpZW50IGFjdXRlJwpjb2RlICJpbnBhdGllbnQgZW5jb3VudGVyIjogJ0lNUCcgZnJvbSAiQWN0Q29kZSIgZGlzcGxheSAnaW5wYXRpZW50IGVuY291bnRlcicKY29kZSAiaW5wYXRpZW50IG5vbi1hY3V0ZSI6ICdOT05BQycgZnJvbSAiQWN0Q29kZSIgZGlzcGxheSAnaW5wYXRpZW50IG5vbi1hY3V0ZScKY29kZSAib2JzZXJ2YXRpb24gZW5jb3VudGVyIjogJ09CU0VOQycgZnJvbSAiQWN0Q29kZSIgZGlzcGxheSAnb2JzZXJ2YXRpb24gZW5jb3VudGVyJwpjb2RlICJzaG9ydCBzdGF5IjogJ1NTJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdzaG9ydCBzdGF5Jwpjb2RlICJsYWJvcmF0b3J5IjogJ2xhYm9yYXRvcnknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdMYWJvcmF0b3J5Jwpjb2RlICJlbmNvdW50ZXItZGlhZ25vc2lzIjogJ2VuY291bnRlci1kaWFnbm9zaXMnIGZyb20gIkNvbmRpdGlvbiBDYXRlZ29yeSIgZGlzcGxheSdlbmNvdW50ZXItZGlhZ25vc2lzJwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogZGVmYXVsdCBJbnRlcnZhbFtAMjAyMi0wMS0wMVQwMDowMDowMC4wLCBAMjAyMi0wMS0zMVQwMDowMDowMC4wKQoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgKCJJbnBhdGllbnQgRW5jb3VudGVyIgogIHVuaW9uICJQYXRpZW50IEhvc3BpdGFsIExvY2F0aW9ucyIpIElucGF0aWVudEVuY291bnRlcnMKICB3aXRoICJBbnRpZGlhYmV0aWMgRHJ1Z3MgQWRtaW5pc3RlcmVkIG9yIE9yZGVyZWQiIEFERAogIHN1Y2ggdGhhdCBDb2FsZXNjZShzdGFydCBvZiBHbG9iYWwuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoQURELmVmZmVjdGl2ZSksIEFERC5hdXRob3JlZE9uKQogICAgICBkdXJpbmcgIkhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbk9yRW1lcmdlbmN5IihJbnBhdGllbnRFbmNvdW50ZXJzKQogICAgYW5kIENvYWxlc2NlKHN0YXJ0IG9mIEdsb2JhbC4iTm9ybWFsaXplIEludGVydmFsIihBREQuZWZmZWN0aXZlKSwgQURELmF1dGhvcmVkT24pIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJJbnBhdGllbnQgRW5jb3VudGVyIjoKICBbRW5jb3VudGVyOiBjbGFzcyBpbiB7ImlucGF0aWVudCBlbmNvdW50ZXIiLCAiaW5wYXRpZW50IGFjdXRlIiwgImlucGF0aWVudCBub24tYWN1dGUiLCAic2hvcnQgc3RheSJ9XQogICAgdW5pb24gW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXSBFbmNvdW50ZXJzCiAgd2hlcmUgRW5jb3VudGVycy5zdGF0dXMgaW4geydpbi1wcm9ncmVzcycsICdmaW5pc2hlZCd9CiAgICBhbmQgRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiUGF0aWVudCBIb3NwaXRhbCBMb2NhdGlvbnMiOgogIFtFbmNvdW50ZXJdIEVuY291bnRlcnMKICB3aGVyZSBleGlzdHMoCiAgICBFbmNvdW50ZXJzLmxvY2F0aW9uIEVuY291bnRlckxvY2F0aW9uCiAgICB3aGVyZSBHbG9iYWwuR2V0TG9jYXRpb24oRW5jb3VudGVyTG9jYXRpb24ubG9jYXRpb24pLnR5cGUgaW4gIklucGF0aWVudCwgRW1lcmdlbmN5LCBhbmQgT2JzZXJ2YXRpb24gTG9jYXRpb25zIgogICAgICBhbmQgRW5jb3VudGVyTG9jYXRpb24ucGVyaW9kIGR1cmluZyBFbmNvdW50ZXJzLnBlcmlvZAogICkKCmRlZmluZSAiQW50aWRpYWJldGljIERydWdzIEFkbWluaXN0ZXJlZCBvciBPcmRlcmVkIjoKICAoW01lZGljYXRpb25BZG1pbmlzdHJhdGlvbl0gQURETWVkQWRtaW4KICAgIHdoZXJlIEdldE1lZGljYXRpb25Db2RlKEFERE1lZEFkbWluLm1lZGljYXRpb24pIGluICJBbnRpZGlhYmV0aWMgTWVkaWNhdGlvbnMiCiAgICAgIGFuZCBBRERNZWRBZG1pbi5zdGF0dXMgfiAnY29tcGxldGVkJykKICB1bmlvbiAoCiAgICBbTWVkaWNhdGlvblJlcXVlc3RdIE1lZGljYXRpb25SZXF1ZXN0cwogICAgICB3aGVyZSBHZXRNZWRpY2F0aW9uQ29kZShNZWRpY2F0aW9uUmVxdWVzdHMubWVkaWNhdGlvbikgaW4gIkFudGlkaWFiZXRpYyBNZWRpY2F0aW9ucyIKICApCgpkZWZpbmUgZnVuY3Rpb24gIkdldE1lZGljYXRpb25Db2RlIihjaG9pY2UgQ2hvaWNlPEZISVIuQ29kZWFibGVDb25jZXB0LCBGSElSLlJlZmVyZW5jZT4pOgogIGNhc2UKICAgIHdoZW4gY2hvaWNlIGlzIEZISVIuQ29kZWFibGVDb25jZXB0IHRoZW4KICAgICAgY2hvaWNlIGFzIEZISVIuQ29kZWFibGVDb25jZXB0CiAgICB3aGVuIGNob2ljZSBpcyBGSElSLlJlZmVyZW5jZSB0aGVuCiAgICAgIEdldE1lZGljYXRpb24oY2hvaWNlIGFzIEZISVIuUmVmZXJlbmNlKS5jb2RlCiAgICBlbHNlCiAgICAgIG51bGwgYXMgRkhJUi5Db2RlYWJsZUNvbmNlcHQKICBlbmQKCmRlZmluZSBmdW5jdGlvbiAiR2V0TWVkaWNhdGlvbiIocmVmZXJlbmNlIFJlZmVyZW5jZSApOgogIHNpbmdsZXRvbiBmcm9tICgKICAgIFtNZWRpY2F0aW9uXSBNIHdoZXJlIE0uaWQgPSBHbG9iYWwuR2V0SWQocmVmZXJlbmNlLnJlZmVyZW5jZSkKICApCgpkZWZpbmUgZnVuY3Rpb24gIkhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbk9yRW1lcmdlbmN5IihUaGVFbmNvdW50ZXIgRkhJUi5FbmNvdW50ZXIgKToKICBUaGVFbmNvdW50ZXIgVmlzaXQKICAgIGxldCBPYnNWaXNpdDogTGFzdChbRW5jb3VudGVyOiAiT2JzZXJ2YXRpb24gU2VydmljZXMiXSBMYXN0T2JzCiAgICAgICAgd2hlcmUgTGFzdE9icy5jbGFzcyB+ICJvYnNlcnZhdGlvbiBlbmNvdW50ZXIiCiAgICAgICAgICBhbmQgTGFzdE9icy5wZXJpb2QgZW5kcyAxIGhvdXIgb3IgbGVzcyBvbiBvciBiZWZvcmUgc3RhcnQgb2YgVmlzaXQucGVyaW9kCiAgCQkJCXNvcnQgYnkgZW5kIG9mIHBlcmlvZAogICAgKSwKICAgIFZpc2l0U3RhcnQ6IENvYWxlc2NlKHN0YXJ0IG9mIE9ic1Zpc2l0LnBlcmlvZCwgc3RhcnQgb2YgVmlzaXQucGVyaW9kKSwKICAgIEVEVmlzaXQ6IExhc3QoW0VuY291bnRlcjogIkVtZXJnZW5jeSBEZXBhcnRtZW50IFZpc2l0Il0gTGFzdEVECiAgICAgICAgd2hlcmUgTGFzdEVELmNsYXNzIH4gImVtZXJnZW5jeSIKICAgICAgICAgIGFuZCBMYXN0RUQucGVyaW9kIGVuZHMgMSBob3VyIG9yIGxlc3Mgb24gb3IgYmVmb3JlIHN0YXJ0IG9mIFZpc2l0LnBlcmlvZAogIAkJCQlzb3J0IGJ5IGVuZCBvZiBwZXJpb2QKICAgICkKICAgIHJldHVybiBJbnRlcnZhbFtDb2FsZXNjZShzdGFydCBvZiBFRFZpc2l0LnBlcmlvZCwgVmlzaXRTdGFydCksIGVuZCBvZiBWaXNpdC5wZXJpb2RdCgpkZWZpbmUgZnVuY3Rpb24gIkdldFNwZWNpbWVuIihyZWZlcmVuY2UgUmVmZXJlbmNlKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICBbU3BlY2ltZW5dIFMgd2hlcmUgUy5pZCA9IEdsb2JhbC5HZXRJZChyZWZlcmVuY2UucmVmZXJlbmNlKQogICkKCmRlZmluZSBmdW5jdGlvbiAiR2V0UGF0aWVudEV4dGVuc2lvbnMiKGRvbWFpblJlc291cmNlIERvbWFpblJlc291cmNlKToKICBkb21haW5SZXNvdXJjZS5leHRlbnNpb24gRQogICAgd2hlcmUgRS51cmwgPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1yYWNlJwogICAgICBvciBFLnVybCA9ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NvcmUvU3RydWN0dXJlRGVmaW5pdGlvbi91cy1jb3JlLWV0aG5pY2l0eScKICAgICAgb3IgRS51cmwgPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1iaXJ0aHNleCcKICAgICAgb3IgRS51cmwgPSAnaHR0cHM6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uLXVzLWNvcmUtZ2VuZGVySWRlbnRpdHknCiAgICByZXR1cm4gRQoKZGVmaW5lIGZ1bmN0aW9uICJHZXRQYXRpZW50QWRkcmVzcyIoYWRkcmVzc2VzIExpc3Q8RkhJUi5BZGRyZXNzPik6CiAgYWRkcmVzc2VzIGFkZHJlc3MKICByZXR1cm4gRkhJUi5BZGRyZXNzewogICAgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlCiAgfQoKZGVmaW5lIGZ1bmN0aW9uICJNZWRpY2F0aW9uUmVxdWVzdFJlc291cmNlIihtZWRpY2F0aW9uUmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdCk6CiAgbWVkaWNhdGlvblJlcXVlc3QgbQogIHJldHVybiBNZWRpY2F0aW9uUmVxdWVzdHsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ25ldy0nICsgbS5pZH0sCiAgICBtZWRpY2F0aW9uOiBHZXRNZWRpY2F0aW9uQ29kZShtLm1lZGljYXRpb24pLAogICAgZG9zYWdlSW5zdHJ1Y3Rpb246IG0uZG9zYWdlSW5zdHJ1Y3Rpb24KICB9CiAgCi8vU3VwcGxlbWVudCBEYXRhIEVsZW1lbnRzCmRlZmluZSAiU0RFIENoaWVmIENvbXBsYWludCI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICB3aXRoIElQLmRpYWdub3NpcyBJbml0aWFsUG9wdWxhdGlvbkRpYWdub3NpcwogIHN1Y2ggdGhhdCBJbml0aWFsUG9wdWxhdGlvbkRpYWdub3Npcy51c2UgfiAiQ2hpZWYgQ29tcGxhaW50IgoKZGVmaW5lICJTREUgQ29uZGl0aW9uIjoKICBbQ29uZGl0aW9uXSBDb25kaXRpb25zCiAgd2l0aCAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJbml0aWFsUG9wdWxhdGlvbgogIHN1Y2ggdGhhdCBHbG9iYWwuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoQ29uZGl0aW9ucy5vbnNldCkgb3ZlcmxhcHMgSW5pdGlhbFBvcHVsYXRpb24ucGVyaW9kCiAgCmRlZmluZSAiU0RFIENvbmRpdGlvbiBkdXJpbmcgRW5jb3VudGVyIjoKICBbQ29uZGl0aW9uXSBDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXMKICB3aXRoIENvbmRpdGlvbkVuY291bnRlckRpYWdub3Npcy5jYXRlZ29yeSBDYXRlZ29yeQogIHN1Y2ggdGhhdCBDYXRlZ29yeSB+ICJlbmNvdW50ZXItZGlhZ25vc2lzIgogICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICAgIApkZWZpbmUgIlNERSBFbmNvdW50ZXIgRGlzY2hhcmdlIERpc3Bvc2l0aW9ucyI6CgkiSW5pdGlhbCBQb3B1bGF0aW9uIiBEaXNjaGFyZ2VEaXNwb3NpdGlvbnMgCiAgd2hlcmUgRGlzY2hhcmdlRGlzcG9zaXRpb25zLmhvc3BpdGFsaXphdGlvbi5kaXNjaGFyZ2VEaXNwb3NpdGlvbiBpbiAiRGlzY2hhcmdlIERpc3Bvc2l0aW9uIgogIApkZWZpbmUgIlNERSBFbmNvdW50ZXIgTG9jYXRpb25zIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJbml0aWFsUG9wdWxhdGlvbiAKICB3aGVyZSBleGlzdHMgKCAKICAgIEluaXRpYWxQb3B1bGF0aW9uLmxvY2F0aW9uIEluaXRpYWxQb3B1bGF0aW9uTG9jYXRpb24KICAgIHdoZXJlIChHbG9iYWwuR2V0TG9jYXRpb24oSW5pdGlhbFBvcHVsYXRpb25Mb2NhdGlvbi5sb2NhdGlvbikudHlwZSBpbiAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiICAgCiAgICAgIGFuZCBJbml0aWFsUG9wdWxhdGlvbkxvY2F0aW9uLnBlcmlvZCBkdXJpbmcgSW5pdGlhbFBvcHVsYXRpb24ucGVyaW9kKQogICkKCmRlZmluZSAiU0RFIE1lZGljYXRpb24gQWRtaW5pc3RyYXRpb24iOgoJW01lZGljYXRpb25BZG1pbmlzdHJhdGlvbl0gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucwogIHdpdGggIkluaXRpYWwgUG9wdWxhdGlvbiIgSW5pdGlhbFBvcHVsYXRpb24KICBzdWNoIHRoYXQgc3RhcnQgb2YgR2xvYmFsLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE1lZGljYXRpb25BZG1pbmlzdHJhdGlvbnMuZWZmZWN0aXZlKSBkdXJpbmcgIkhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbk9yRW1lcmdlbmN5IihJbml0aWFsUG9wdWxhdGlvbikKICAgIGFuZCBzdGFydCBvZiBHbG9iYWwuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucy5lZmZlY3RpdmUpIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJTREUgTWVkaWNhdGlvbiBSZXF1ZXN0IjoKCVtNZWRpY2F0aW9uUmVxdWVzdF0gTWVkaWNhdGlvblJlcXVlc3RzCiAgd2l0aCAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJbml0aWFsUG9wdWxhdGlvbgoJc3VjaCB0aGF0IE1lZGljYXRpb25SZXF1ZXN0cy5hdXRob3JlZE9uIGR1cmluZyAiSG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uT3JFbWVyZ2VuY3kiKEluaXRpYWxQb3B1bGF0aW9uKQogICAgYW5kIE1lZGljYXRpb25SZXF1ZXN0cy5hdXRob3JlZE9uIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJTREUgQmxvb2QgR2x1Y29zZSBPYnNlcnZhdGlvbiI6CglbT2JzZXJ2YXRpb246ICJCbG9vZCBHbHVjb3NlIExhYm9yYXRvcnkgYW5kIFBvaW50IG9mIENhcmUgVGVzdHMiXSBPYnNlcnZhdGlvbnMgCiAgd2l0aCAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJbml0aWFsUG9wdWxhdGlvbgogIHN1Y2ggdGhhdCBzdGFydCBvZiBHbG9iYWwuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoT2JzZXJ2YXRpb25zLmVmZmVjdGl2ZSkgZHVyaW5nIEluaXRpYWxQb3B1bGF0aW9uLnBlcmlvZAogICAgb3IgR2xvYmFsLiJOb3JtYWxpemUgSW50ZXJ2YWwiKEdldFNwZWNpbWVuKE9ic2VydmF0aW9ucy5zcGVjaW1lbikuY29sbGVjdGlvbi5jb2xsZWN0ZWQpIGR1cmluZyBJbml0aWFsUG9wdWxhdGlvbi5wZXJpb2QKICB3aXRoIE9ic2VydmF0aW9ucy5jYXRlZ29yeSBjYXRlZ29yeQogIHN1Y2ggdGhhdCBjYXRlZ29yeSB+ICJsYWJvcmF0b3J5IgoKZGVmaW5lICJTREUgUGF5ZXIiOiAKCVNERS4iU0RFIFBheWVyIiBQYXllcgogIHdpdGggIkluaXRpYWwgUG9wdWxhdGlvbiIgSW5pdGlhbFBvcHVsYXRpb24KICBzdWNoIHRoYXQgc3RhcnQgb2YgUGF5ZXIucGVyaW9kIGJlZm9yZSBlbmQgb2YgSW5pdGlhbFBvcHVsYXRpb24ucGVyaW9kCiAgCmRlZmluZSAiU0RFIFNwZWNpbWVuIjoKICBbU3BlY2ltZW5dIFNwZWNpbWVuCiAgd2l0aCAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJbml0aWFsUG9wdWxhdGlvbgogIHN1Y2ggdGhhdCBHbG9iYWwuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoU3BlY2ltZW4uY29sbGVjdGlvbi5jb2xsZWN0ZWQpIGR1cmluZyBJbml0aWFsUG9wdWxhdGlvbi5wZXJpb2QKCi8vQ2hhbmdlIG9uIENRRiBydWxlciBoYXBwZW5lZCBvbiA4LzEyLiBDaGVjayB0byBtYWtlIHN1cmUgQ1FGLVJ1bGVyIHZlcnNpb24gaXMgZGF0ZWQgYXQgb3IgYWZ0ZXIgKHZlcnNpb24gMi4wLjApLiAKLy9XYWl0IDItMyBkYXlzIGJlZm9yZSB0aGUgY2hhbmdlcyBhcmUgYWN0dWFsbHkgYXBwbGllZCB0byB0aGUgQ1FGLVJ1bGVyLgpkZWZpbmUgIlNERSBNaW5pbWFsIFBhdGllbnQiOgogIFBhdGllbnR7CiAgICBpZDogUGF0aWVudC5pZCwKICAgIGV4dGVuc2lvbjogR2V0UGF0aWVudEV4dGVuc2lvbnMoUGF0aWVudCksCiAgICBpZGVudGlmaWVyOiBQYXRpZW50LmlkZW50aWZpZXIsCiAgICBnZW5kZXI6IFBhdGllbnQuZ2VuZGVyLAogICAgYmlydGhEYXRlOiBQYXRpZW50LmJpcnRoRGF0ZSwKICAgIGRlY2Vhc2VkOiBQYXRpZW50LmRlY2Vhc2VkLAogICAgYWRkcmVzczogR2V0UGF0aWVudEFkZHJlc3MoUGF0aWVudC5hZGRyZXNzKQogIH0KICAKZGVmaW5lICJTREUgTWluaW1hbCBNZWRpY2F0aW9uIFJlcXVlc3RzIjoKICBbTWVkaWNhdGlvblJlcXVlc3RdIE1lZGljYXRpb25SZXF1ZXN0cwogIHJldHVybiBNZWRpY2F0aW9uUmVxdWVzdFJlc291cmNlKE1lZGljYXRpb25SZXF1ZXN0cykKCi8qZGVmaW5lICJTREUgUmVzb3VyY2UgQ29uc3RydWN0aW9uIFRlc3QgSW5saWIiOgogIEZISVIuT2JzZXJ2YXRpb24gCiAgewogICAgaWQ6IEZISVIuaWQgeyB2YWx1ZTogJ29ic2VydmF0aW9uLXNkZXRlc3RpbmxpYi0nICsgVG9TdHJpbmcoTm93KCkpIH0sCiAgICBzdGF0dXM6IEZISVIuT2JzZXJ2YXRpb25TdGF0dXMgeyB2YWx1ZTogJ2ZpbmFsJyB9LAogICAgY29kZTogRkhJUi5Db2RlYWJsZUNvbmNlcHQgeyBjb2Rpbmc6IHsgRkhJUi5Db2RpbmcgeyBjb2RlOiBGSElSLmNvZGUgeyB2YWx1ZTogJ2RheXMtc2luY2UtYXBwb2ludG1lbnQnIH0gfSB9IH0sCiAgICBzdWJqZWN0OiBGSElSLlJlZmVyZW5jZSB7IHJlZmVyZW5jZTogRkhJUi5zdHJpbmcgeyB2YWx1ZTogUGF0aWVudC5pZC52YWx1ZSB9fQogICAgLy92YWx1ZTogRkhJUi5pbnRlZ2VyIHsgdmFsdWU6IEFicyhkaWZmZXJlbmNlIGluIGRheXMgYmV0d2VlbiBlbmQgb2YgU0RFLiJMYXN0IEFwcG9pbnRtZW50Ii5wZXJpb2QgYW5kIFRvRGF0ZVRpbWUoVG9kYXkoKSkpIH0KICB9Ki8KCiAgZGVmaW5lICJTREUgRXRobmljaXR5IENvZGluZyI6CiAgICBTREUuIlNERSBFdGhuaWNpdHkiCgogIGRlZmluZSAiU0RFIFJhY2UgQ29kaW5nIjoKICAgIFNERS4iU0RFIFJhY2Ui"/>
        </content>
      </Library>
    </resource>
    <request>
      <method value="PUT"/>
      <url value="Library/NHSNGlycemicControlHypoglycemicInitialPopulation"/>
    </request>
  </entry>
  <entry>
    <fullUrl value="urn:uuid:61d3ae55-c7b7-484f-96df-4f3ef8c080c0"/>
    <resource>
      <Measure>
        <id value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
        <text>
          <status value="extensions"/>
          <div xmlns="http://www.w3.org/1999/xhtml"><a name="Measure_NHSNGlycemicControlHypoglycemicInitialPopulation"> </a>
  <table class="narrative-table">
    <tbody>
<tr>

<th colspan="2" scope="row" class="row-header">Knowledge Artifact Metadata</th>

</tr>

<tr>

<th scope="row" class="row-header">Name (machine-readable)</th>

<td class="content-container">NHSNGlycemicControlHypoglycemicInitialPopulation</td>
</tr>


<tr>

<th scope="row" class="row-header">Title (human-readable)</th>

<td class="content-container">NHSN Glycemic Control, Hypoglycemia Initial Population</td>
</tr>



<tr>

<th scope="row" class="row-header">Status</th>

<td class="content-container">Draft</td>
</tr>


<tr>

<th scope="row" class="row-header">Experimental</th>

<td class="content-container">true</td>
</tr>


<tr>

<th scope="row" class="row-header">Description</th>

<td class="content-container"><div><p>All inpatient encounters (including ED/Observation visits that end within 1 hour of the start of the inpatient encounter) for patients of all ages where at least one ADD was ordered or administered during the encounter that is during the measurement period.</p>
</div></td>
</tr>


<tr>

<th scope="row" class="row-header">Purpose</th>

<td class="content-container"><div><p>The primary purpose of this site is to provide CDC’s NHSN with access to view measure specification content in the dQMs under development by Lantana Consulting Group. Please note, this site is draft and undergoes constant revision and is not intended to serve as an implementation guide.</p>
</div></td>
</tr>











<tr>

<th scope="row" class="row-header">Measure Steward</th>

<td class="content-container">NHSN</td>
</tr>



<tr>

<th scope="row" class="row-header">Copyright</th>

<td class="content-container"><div><p>This measure and specifications are subject to further revisions.      This performance measure is not a clinical guideline, does not establish a standard of medical care and has not been tested for all potential applications.        THE MEASURES AND SPECIFICATIONS ARE PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND.</p>
</div></td>
</tr>










<tr>

<th colspan="2" scope="row" class="row-header">Measure Metadata</th>

</tr>






<tr>

<th scope="row" class="row-header">Version Number</th>

<td class="content-container">0.000.01</td>
</tr>


<tr>

<th scope="row" class="row-header">Measure Scoring</th>

<td class="content-container"><span title="Codes:{http://terminology.hl7.org/CodeSystem/measure-scoring cohort}">Cohort</span></td>
</tr>



<tr>

<th scope="row" class="row-header">Measure Type</th>

<td class="content-container"><span title="Codes:{http://terminology.hl7.org/CodeSystem/measure-type outcome}">Outcome</span></td>
</tr>




<tr>

<th scope="row" class="row-header">Rationale</th>

<td class="content-container"><div><p>The NHSN Glycemic Control, Hypoglycemia module provides a mechanism for facilities to report inpatient medication-related hypoglycemia events, and to provide analytic reports based on these data to inform glycemic control quality improvement efforts and patient safety events. The primary objective of the NHSN Glycemic Control, Hypoglycemia module is to facilitate measurement and benchmarking of medication-related hypoglycemia events within a facility. As additional data are collected by NHSN, an additional objective will be to facilitate inter-facility benchmarking and evaluate national-level trends of medication-related hypoglycemia over time. The IP dQM provides the initial population and FHIR line-level data necessary for calculating the module metrics.</p>
</div></td>
</tr>




<tr>

<th scope="row" class="row-header">Definition</th>

<td class="content-container"><div><p>Antidiabetic Drug Days (ADD): Aggregate number of inpatient encounter days within the facility in which at least one injectable or oral ADD was received. All patients who received ADDs during the hospitalization contribute to the initial population regardless of whether the patient experienced a hypoglycemic event.</p>
</div>, <div><p>Emergency Department (ED) or Observation (OBS) encounters: ED or observation encounters that ended within an hour of the inpatient admission are included when calculating the start and stop times of the hospitalization. Only Metric 1 includes ED  and OBS encounters.</p>
</div>, <div><p>Hypoglycemia Day: An inpatient day with at least one documented hypoglycemia event.</p>
</div>, <div><p>Hypoglycemia Event includes the following during an inpatient hospitalization: A hypoglycemic blood glucose (BG) result during the encounter and ADD administered within 24 hours prior to the start of the hypoglycemic BG result and no subsequent test for blood glucose with a result ≥80 mg/dL within five minutes of the start of the initial low blood glucose test.</p>
</div>, <div><p>Inpatient Encounter: A hospitalization in any inpatient facility that meets the criteria for reporting to the NHSN Glycemic Control Hypoglycemia Module (refer to CDC Locations and Descriptions manual).</p>
</div>, <div><p>Measurement Period: From the first day of each calendar month through the last day of that calendar month. Mild hypoglycemia: Blood glucose 54 mg/dL to 69 mg/dL as identified on central laboratory device (CLD) or prescription point-of-care (POC) device.</p>
</div>, <div><p>Moderate hypoglycemia: Blood glucose 40 mg/dL to 53 mg/dL as identified on CLD or prescription POC device.</p>
</div>, <div><p>Severe hypoglycemia Blood glucose &lt; 40 mg/dL as identified on CLD or prescription POC device.</p>
</div></td>
</tr>







  
    <tr>

<th colspan="2" scope="row" class="row-header">Measure Population Criteria</th>

</tr>
  
  
  
  
    <tr>
      
        
<th scope="row" class="row-header">Initial Population</th>

      
      <td class="content-container">
        
        <em>ID</em>: initial-population-01
        <br/>
        
        
          <em>Description</em>:
          <p style="white-space: pre-line" class="tab-one">All inpatient encounters, as well as ED and OBS encounters that end within 1 hour of the start of the inpatient encounter, for patients of all ages where at least one antidiabetic drug (ADD) was ordered or administered during the encounter that is during the measurement period.</p>
        
        
          
            
            <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-initial-population">Initial Population</a> 
          
        
      </td>
    </tr>
  

  
  











  <tr>

<th colspan="2" scope="row" class="row-header">Supplemental Data Elements</th>

</tr>


<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-chief-complaint
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-chief-complaint">SDE Chief Complaint</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-condition
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-condition">SDE Condition</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-condition-during-encounter
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-condition-during-encounter">SDE Condition during Encounter</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-encounter-discharge-dispositions
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-encounter-discharge-dispositions">SDE Encounter Discharge Dispositions</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-encounter-locations
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-encounter-locations">SDE Encounter Locations</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-medication-administration
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-medication-administration">SDE Medication Administration</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-medication-request
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-medication-request">SDE Medication Request</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-blood-glucose-observation
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-blood-glucose-observation">SDE Blood Glucose Observation</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-payer
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-payer">SDE Payer</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-specimen
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-specimen">SDE Specimen</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-minimal-patient
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-minimal-patient">SDE Minimal Patient</a> 
      
    
  </td>
</tr>

<tr>
  
<th scope="row" class="row-header">Supplemental Data Element</th>

  <td class="content-container">
    
      <em>ID</em>: sde-minimal-medication-requests
      
    
    
    
      <em>Description</em>: No description provided
    
    
      
        <br/>
        
        <em>Logic Definition</em>: <a href="#nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-minimal-medication-requests">SDE Minimal Medication Requests</a> 
      
    
  </td>
</tr>


<tr>

<th colspan="2" scope="row" class="row-header">Measure Logic</th>

</tr>

<tr>

<th scope="row" class="row-header">Primary Library</th>

<td class="content-container"><a href="Bundle-sde-example-artifact-bundle.html">NHSN Glycemic Control Hypoglycemic Initial Population</a></td>
</tr>




  
  

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Library FHIRHelpers
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="Bundle-sde-example-artifact-bundle.html">FHIR Helpersversion: null4.0.1)</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Library Global
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="Bundle-sde-example-artifact-bundle.html">MAT Global Common Functions FHIRR4version: null6.1.000)</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://fhir.org/guides/cqf/Library/MATGlobalCommonFunctionsFHIR4|6.1.000</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Library SDE
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="Bundle-sde-example-artifact-bundle.html">SupplementalDataElementsFHIR4version: null2.0.000)</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://fhir.org/guides/cqf/Library/SupplementalDataElementsFHIR4|2.0.000</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Code system ActCode
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-ActCode.html">ActCode</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Code system Condition Category
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/5.5.0/CodeSystem-condition-category.html">Condition Category Codes</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/condition-category</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Code system Observation Category
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/5.5.0/CodeSystem-observation-category.html">Observation Category Codes</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/observation-category</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Code system Diagnosis Role
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/5.5.0/CodeSystem-diagnosis-role.html">Diagnosis Role</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/diagnosis-role</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Value set Antidiabetic Medications
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1190.58/expansion">Antidiabetic Medications</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.58</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Value set Inpatient, Emergency, and Observation Locations
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.265/expansion">Inpatient, Emergency, and Observation Locations</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Value set Blood Glucose Laboratory and Point of Care Tests
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1190.38/expansion">Blood Glucose Laboratory and Point of Care Tests</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.38</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Value set Payer
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.114222.4.11.3591/expansion">Payer Type</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</tt>
    
  </td>
</tr>

<tr>
  
  
  
  
  
<th scope="row" class="row-header">Dependency</th>

  
  <td class="content-container">
    
    <em>Description</em>: Value set Discharge Disposition
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/5.5.0/ValueSet-encounter-discharge-disposition.html">Discharge disposition</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/ValueSet/encounter-discharge-disposition</tt>
    
  </td>
</tr>


  
  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: inpatient encounter
        <br/>
      
      <em>Code</em>: IMP
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode</tt>
    </td>
  </tr>

  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: inpatient acute
        <br/>
      
      <em>Code</em>: ACUTE
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode</tt>
    </td>
  </tr>

  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: inpatient non-acute
        <br/>
      
      <em>Code</em>: NONAC
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode</tt>
    </td>
  </tr>

  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: short stay
        <br/>
      
      <em>Code</em>: SS
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode</tt>
    </td>
  </tr>

  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: observation encounter
        <br/>
      
      <em>Code</em>: OBSENC
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode</tt>
    </td>
  </tr>

  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: emergency
        <br/>
      
      <em>Code</em>: EMER
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode</tt>
    </td>
  </tr>

  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: Encounter Diagnosis
        <br/>
      
      <em>Code</em>: encounter-diagnosis
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/condition-category</tt>
    </td>
  </tr>

  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: Laboratory
        <br/>
      
      <em>Code</em>: laboratory
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/observation-category</tt>
    </td>
  </tr>

  <tr>
    <th scope="row" class="row-header">Direct Reference Code</th>
    <td class="content-container">
      
        <em>Display</em>: Chief complaint
        <br/>
      
      <em>Code</em>: CC
      <br/>
      <em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/diagnosis-role</tt>
    </td>
  </tr>

  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: Measurement Period
    <br/>
    <em>Use</em>: In
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: 1
    <br/>
    <em>Type</em>: Period
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Medication Request
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: MedicationRequest
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Encounter Locations
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Encounter
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Minimal Medication Requests
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: MedicationRequest
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Condition during Encounter
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Condition
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Medication Administration
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: MedicationAdministration
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Blood Glucose Observation
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Observation
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Condition
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Condition
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Payer
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Any
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: Initial Population
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Encounter
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Encounter Discharge Dispositions
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Encounter
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Minimal Patient
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: 1
    <br/>
    <em>Type</em>: Patient
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Specimen
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Specimen
  </td>
</tr>
  
  <tr>
  
<th scope="row" class="row-header">Parameter</th>

  <td class="content-container">
    <em>Name</em>: SDE Chief Complaint
    <br/>
    <em>Use</em>: Out
    <br/>
    <em>Min Cardinality</em>: 0
    <br/>
    <em>Max Cardinality</em>: *
    <br/>
    <em>Type</em>: Encounter
  </td>
</tr>
  
  
  <tr>
    <th colspan="2" scope="row" class="section-header"><a name="effective-data-requirements"> </a>Measure Logic Data Requirements</th>
  </tr>
  
  
<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: class, period
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: class, status, period
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: class</span>
    <br/>
  
  
  
  
    <span class="tab-one"><em>Code</em>: </span>
    <br/>
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Medication
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/medication.html">Medication</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: id
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: MedicationAdministration
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/medicationadministration.html">MedicationAdministration</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: medication, status, effective
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: MedicationRequest
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/medicationrequest.html">MedicationRequest</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: medication, authoredOn, id, dosageInstruction
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Location
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/location.html">Location</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: id
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Condition
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/condition.html">Condition</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: category, onset
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Specimen
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/specimen.html">Specimen</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: id, collection, collection.collected
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Observation
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/observation.html">Observation</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: code, effective, specimen, specimen.collection, specimen.collection.collected, category
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: code</span>
    <br/>
  
  
  
    <span class="tab-one"><em>ValueSet</em>:</span> <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1190.38/expansion">Blood Glucose Laboratory and Point of Care Tests</a>
    <br/> 
  
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Coverage
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/coverage.html">Coverage</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: type, period
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: type</span>
    <br/>
  
  
  
    <span class="tab-one"><em>ValueSet</em>:</span> <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.114222.4.11.3591/expansion">Payer Type</a>
    <br/> 
  
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Patient
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/patient.html">Patient</a>
    <br/>        
  
   
   
   
  </td>
</tr>

  
  <tr>

<th colspan="2" scope="row" class="row-header">Measure Logic Definitions</th>

</tr>
  
          
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-inpatient-encounter"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;Inpatient Encounter&quot;:   [Encounter: class in {&quot;inpatient encounter&quot;, &quot;inpatient acute&quot;, &quot;inpatient non-acute&quot;, &quot;short stay&quot;}] Encounters   where Encounters.status in {'in-progress', 'finished'}   and Encounters.period overlaps &quot;Measurement Period&quot;</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-antidiabetic-drugs-administered-or-ordered"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;Antidiabetic Drugs Administered or Ordered&quot;:   ([MedicationAdministration] ADDMedAdmin     where GetMedicationCode(ADDMedAdmin.medication) in &quot;Antidiabetic Medications&quot;       and ADDMedAdmin.status ~ 'completed')   union (     [MedicationRequest] MedicationRequests       where GetMedicationCode(MedicationRequests.medication) in &quot;Antidiabetic Medications&quot;   )</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-initial-population"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;Initial Population&quot;:   &quot;Inpatient Encounter&quot; InpatientEncounters   with &quot;Antidiabetic Drugs Administered or Ordered&quot; ADD   such that Coalesce(start of Global.&quot;Normalize Interval&quot;(ADD.effective), ADD.authoredOn)       during &quot;HospitalizationWithObservationOrEmergency&quot;(InpatientEncounters)     and Coalesce(start of Global.&quot;Normalize Interval&quot;(ADD.effective), ADD.authoredOn) during &quot;Measurement Period&quot;</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-medication-request"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Medication Request&quot;:  [MedicationRequest] MedicationRequests   with &quot;Initial Population&quot; InitialPopulation  such that MedicationRequests.authoredOn during &quot;HospitalizationWithObservationOrEmergency&quot;(InitialPopulation)     and MedicationRequests.authoredOn during &quot;Measurement Period&quot;</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-encounter-locations"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Encounter Locations&quot;:   &quot;Initial Population&quot; InitialPopulation    where exists (      InitialPopulation.location InitialPopulationLocation     where (Global.GetLocation(InitialPopulationLocation.location).type in &quot;Inpatient, Emergency, and Observation Locations&quot;          or Global.GetLocation(InitialPopulationLocation.location).physicalType in &quot;Inpatient, Emergency, and Observation Locations&quot;)       and InitialPopulationLocation.period during InitialPopulation.period   )</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-minimal-medication-requests"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Minimal Medication Requests&quot;:   [MedicationRequest] MedicationRequests   return MedicationRequest{     id: MedicationRequests.id,     medication: GetMedicationCode(MedicationRequests.medication),     dosageInstruction: MedicationRequests.dosageInstruction   }</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-condition-during-encounter"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Condition during Encounter&quot;:   [Condition] ConditionEncounterDiagnosis   with ConditionEncounterDiagnosis.category Category   such that Category ~ &quot;encounter-diagnosis&quot;     and exists(&quot;Initial Population&quot;)</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-medication-administration"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Medication Administration&quot;:  [MedicationAdministration] MedicationAdministrations   with &quot;Initial Population&quot; InitialPopulation   such that start of Global.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) during &quot;HospitalizationWithObservationOrEmergency&quot;(InitialPopulation)     and start of Global.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) during &quot;Measurement Period&quot;</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-blood-glucose-observation"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Blood Glucose Observation&quot;:  [Observation: &quot;Blood Glucose Laboratory and Point of Care Tests&quot;] Observations    with &quot;Initial Population&quot; InitialPopulation   such that start of Global.&quot;Normalize Interval&quot;(Observations.effective) during InitialPopulation.period     or Global.&quot;Normalize Interval&quot;(GetSpecimen(Observations.specimen).collection.collected) during InitialPopulation.period   with Observations.category category   such that category ~ &quot;laboratory&quot;</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-condition"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Condition&quot;:   [Condition] Conditions   with &quot;Initial Population&quot; InitialPopulation   such that Global.&quot;Normalize Interval&quot;(Conditions.onset) overlaps InitialPopulation.period</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="supplementaldataelementsfhir4-sde-payer"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> SupplementalDataElementsFHIR4</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Payer&quot;:   [Coverage: type in &quot;Payer&quot;] Payer         return {           code: Payer.type,           period: Payer.period         }</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-payer"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Payer&quot;:   SDE.&quot;SDE Payer&quot; Payer   with &quot;Initial Population&quot; InitialPopulation   such that start of Payer.period before end of InitialPopulation.period</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-encounter-discharge-dispositions"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Encounter Discharge Dispositions&quot;:  &quot;Initial Population&quot; DischargeDispositions    where DischargeDispositions.hospitalization.dischargeDisposition in &quot;Discharge Disposition&quot;</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-minimal-patient"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">//Change on CQF ruler happened on 8/12. Check to make sure CQF-Ruler version is dated at or after define &quot;SDE Minimal Patient&quot;:   Patient{     id: Patient.id,     gender: Patient.gender,     birthDate: Patient.birthDate   }</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-specimen"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define &quot;SDE Specimen&quot;:   [Specimen] Specimen   with &quot;Initial Population&quot; InitialPopulation   such that Global.&quot;Normalize Interval&quot;(Specimen.collection.collected) during InitialPopulation.period</code></pre>
  </td>

</tr>
        
<tr>
  <th scope="row" rowspan="2" class="row-header">
    
      
      <a name="nhsnglycemiccontrolhypoglycemicinitialpopulation-sde-chief-complaint"> </a>
    
    Logic Definition
  </th>

  <td class="content-container"><em>Library Name:</em> NHSNGlycemicControlHypoglycemicInitialPopulation</td>

</tr>
<tr>

  <td>
    <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">//Supplement Data Elements define &quot;SDE Chief Complaint&quot;:   &quot;Initial Population&quot; InitialPopulation   with InitialPopulation.diagnosis InitialPopulationDiagnosis   such that InitialPopulationDiagnosis.use ~ &quot;Chief Complaint&quot;</code></pre>
  </td>

</tr>

  

<tr>
  <th colspan="2" scope="row" class="row-header">Generated using version 0.4.6 of the sample-content-ig Liquid templates</th>
</tr>
    </tbody>
  </table>
</div>
        </text>
        <contained>
          <Library>
            <id value="effective-data-requirements"/>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                <code value="IMP"/>
                <display value="inpatient encounter"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                <code value="ACUTE"/>
                <display value="inpatient acute"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                <code value="NONAC"/>
                <display value="inpatient non-acute"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                <code value="SS"/>
                <display value="short stay"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                <code value="OBSENC"/>
                <display value="observation encounter"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                <code value="EMER"/>
                <display value="emergency"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/condition-category"/>
                <code value="encounter-diagnosis"/>
                <display value="Encounter Diagnosis"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/observation-category"/>
                <code value="laboratory"/>
                <display value="Laboratory"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
              <valueCoding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/diagnosis-role"/>
                <code value="CC"/>
                <display value="Chief complaint"/>
              </valueCoding>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="Inpatient Encounter"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;Inpatient Encounter&quot;:   [Encounter: class in {&quot;inpatient encounter&quot;, &quot;inpatient acute&quot;, &quot;inpatient non-acute&quot;, &quot;short stay&quot;}] Encounters   where Encounters.status in {'in-progress', 'finished'}   and Encounters.period overlaps &quot;Measurement Period&quot;"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="0"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString
                             value="Antidiabetic Drugs Administered or Ordered"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;Antidiabetic Drugs Administered or Ordered&quot;:   ([MedicationAdministration] ADDMedAdmin     where GetMedicationCode(ADDMedAdmin.medication) in &quot;Antidiabetic Medications&quot;       and ADDMedAdmin.status ~ 'completed')   union (     [MedicationRequest] MedicationRequests       where GetMedicationCode(MedicationRequests.medication) in &quot;Antidiabetic Medications&quot;   )"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="1"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="Initial Population"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;Initial Population&quot;:   &quot;Inpatient Encounter&quot; InpatientEncounters   with &quot;Antidiabetic Drugs Administered or Ordered&quot; ADD   such that Coalesce(start of Global.&quot;Normalize Interval&quot;(ADD.effective), ADD.authoredOn)       during &quot;HospitalizationWithObservationOrEmergency&quot;(InpatientEncounters)     and Coalesce(start of Global.&quot;Normalize Interval&quot;(ADD.effective), ADD.authoredOn) during &quot;Measurement Period&quot;"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="2"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Medication Request"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Medication Request&quot;:  [MedicationRequest] MedicationRequests   with &quot;Initial Population&quot; InitialPopulation  such that MedicationRequests.authoredOn during &quot;HospitalizationWithObservationOrEmergency&quot;(InitialPopulation)     and MedicationRequests.authoredOn during &quot;Measurement Period&quot;"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="3"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Encounter Locations"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Encounter Locations&quot;:   &quot;Initial Population&quot; InitialPopulation    where exists (      InitialPopulation.location InitialPopulationLocation     where (Global.GetLocation(InitialPopulationLocation.location).type in &quot;Inpatient, Emergency, and Observation Locations&quot;          or Global.GetLocation(InitialPopulationLocation.location).physicalType in &quot;Inpatient, Emergency, and Observation Locations&quot;)       and InitialPopulationLocation.period during InitialPopulation.period   )"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="4"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Minimal Medication Requests"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Minimal Medication Requests&quot;:   [MedicationRequest] MedicationRequests   return MedicationRequest{     id: MedicationRequests.id,     medication: GetMedicationCode(MedicationRequests.medication),     dosageInstruction: MedicationRequests.dosageInstruction   }"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="5"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Condition during Encounter"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Condition during Encounter&quot;:   [Condition] ConditionEncounterDiagnosis   with ConditionEncounterDiagnosis.category Category   such that Category ~ &quot;encounter-diagnosis&quot;     and exists(&quot;Initial Population&quot;)"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="6"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Medication Administration"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Medication Administration&quot;:  [MedicationAdministration] MedicationAdministrations   with &quot;Initial Population&quot; InitialPopulation   such that start of Global.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) during &quot;HospitalizationWithObservationOrEmergency&quot;(InitialPopulation)     and start of Global.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) during &quot;Measurement Period&quot;"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="7"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Blood Glucose Observation"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Blood Glucose Observation&quot;:  [Observation: &quot;Blood Glucose Laboratory and Point of Care Tests&quot;] Observations    with &quot;Initial Population&quot; InitialPopulation   such that start of Global.&quot;Normalize Interval&quot;(Observations.effective) during InitialPopulation.period     or Global.&quot;Normalize Interval&quot;(GetSpecimen(Observations.specimen).collection.collected) during InitialPopulation.period   with Observations.category category   such that category ~ &quot;laboratory&quot;"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="8"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Condition"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Condition&quot;:   [Condition] Conditions   with &quot;Initial Population&quot; InitialPopulation   such that Global.&quot;Normalize Interval&quot;(Conditions.onset) overlaps InitialPopulation.period"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="9"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString value="SupplementalDataElementsFHIR4"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Payer"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Payer&quot;:   [Coverage: type in &quot;Payer&quot;] Payer         return {           code: Payer.type,           period: Payer.period         }"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="10"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Payer"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Payer&quot;:   SDE.&quot;SDE Payer&quot; Payer   with &quot;Initial Population&quot; InitialPopulation   such that start of Payer.period before end of InitialPopulation.period"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="11"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Encounter Discharge Dispositions"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Encounter Discharge Dispositions&quot;:  &quot;Initial Population&quot; DischargeDispositions    where DischargeDispositions.hospitalization.dischargeDisposition in &quot;Discharge Disposition&quot;"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="12"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Minimal Patient"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="//Change on CQF ruler happened on 8/12. Check to make sure CQF-Ruler version is dated at or after define &quot;SDE Minimal Patient&quot;:   Patient{     id: Patient.id,     gender: Patient.gender,     birthDate: Patient.birthDate   }"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="13"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Specimen"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="define &quot;SDE Specimen&quot;:   [Specimen] Specimen   with &quot;Initial Population&quot; InitialPopulation   such that Global.&quot;Normalize Interval&quot;(Specimen.collection.collected) during InitialPopulation.period"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="14"/>
              </extension>
            </extension>
            <extension
                       url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
              <extension url="libraryName">
                <valueString
                             value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
              </extension>
              <extension url="name">
                <valueString value="SDE Chief Complaint"/>
              </extension>
              <extension url="statement">
                <valueString
                             value="//Supplement Data Elements define &quot;SDE Chief Complaint&quot;:   &quot;Initial Population&quot; InitialPopulation   with InitialPopulation.diagnosis InitialPopulationDiagnosis   such that InitialPopulationDiagnosis.use ~ &quot;Chief Complaint&quot;"/>
              </extension>
              <extension url="displaySequence">
                <valueInteger value="15"/>
              </extension>
            </extension>
            <status value="active"/>
            <type>
              <coding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/library-type"/>
                <code value="module-definition"/>
              </coding>
            </type>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Library FHIRHelpers"/>
              <resource
                        value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Library Global"/>
              <resource
                        value="http://fhir.org/guides/cqf/Library/MATGlobalCommonFunctionsFHIR4|6.1.000"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Library SDE"/>
              <resource
                        value="http://fhir.org/guides/cqf/Library/SupplementalDataElementsFHIR4|2.0.000"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Code system ActCode"/>
              <resource
                        value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Code system Condition Category"/>
              <resource
                        value="http://terminology.hl7.org/CodeSystem/condition-category"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Code system Observation Category"/>
              <resource
                        value="http://terminology.hl7.org/CodeSystem/observation-category"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Code system Diagnosis Role"/>
              <resource
                        value="http://terminology.hl7.org/CodeSystem/diagnosis-role"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Value set Antidiabetic Medications"/>
              <resource
                        value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.58"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display
                       value="Value set Inpatient, Emergency, and Observation Locations"/>
              <resource
                        value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display
                       value="Value set Blood Glucose Laboratory and Point of Care Tests"/>
              <resource
                        value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.38"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Value set Payer"/>
              <resource
                        value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/>
            </relatedArtifact>
            <relatedArtifact>
              <type value="depends-on"/>
              <display value="Value set Discharge Disposition"/>
              <resource
                        value="http://terminology.hl7.org/ValueSet/encounter-discharge-disposition"/>
            </relatedArtifact>
            <parameter>
              <name value="Measurement Period"/>
              <use value="in"/>
              <min value="0"/>
              <max value="1"/>
              <type value="Period"/>
            </parameter>
            <parameter>
              <name value="SDE Medication Request"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="MedicationRequest"/>
            </parameter>
            <parameter>
              <name value="SDE Encounter Locations"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Encounter"/>
            </parameter>
            <parameter>
              <name value="SDE Minimal Medication Requests"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="MedicationRequest"/>
            </parameter>
            <parameter>
              <name value="SDE Condition during Encounter"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Condition"/>
            </parameter>
            <parameter>
              <name value="SDE Medication Administration"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="MedicationAdministration"/>
            </parameter>
            <parameter>
              <name value="SDE Blood Glucose Observation"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Observation"/>
            </parameter>
            <parameter>
              <name value="SDE Condition"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Condition"/>
            </parameter>
            <parameter>
              <name value="SDE Payer"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Any"/>
            </parameter>
            <parameter>
              <name value="Initial Population"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Encounter"/>
            </parameter>
            <parameter>
              <name value="SDE Encounter Discharge Dispositions"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Encounter"/>
            </parameter>
            <parameter>
              <name value="SDE Minimal Patient"/>
              <use value="out"/>
              <min value="0"/>
              <max value="1"/>
              <type value="Patient"/>
            </parameter>
            <parameter>
              <name value="SDE Specimen"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Specimen"/>
            </parameter>
            <parameter>
              <name value="SDE Chief Complaint"/>
              <use value="out"/>
              <min value="0"/>
              <max value="*"/>
              <type value="Encounter"/>
            </parameter>
            <dataRequirement>
              <type value="Encounter"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
              <mustSupport value="class"/>
              <mustSupport value="status"/>
              <mustSupport value="period"/>
              <codeFilter>
                <path value="class"/>
                <code>
                  <system
                          value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                  <code value="IMP"/>
                  <display value="inpatient encounter"/>
                </code>
                <code>
                  <system
                          value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                  <code value="ACUTE"/>
                  <display value="inpatient acute"/>
                </code>
                <code>
                  <system
                          value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                  <code value="NONAC"/>
                  <display value="inpatient non-acute"/>
                </code>
                <code>
                  <system
                          value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                  <code value="SS"/>
                  <display value="short stay"/>
                </code>
              </codeFilter>
            </dataRequirement>
            <dataRequirement>
              <type value="Encounter"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
              <mustSupport value="class"/>
              <mustSupport value="period"/>
            </dataRequirement>
            <dataRequirement>
              <type value="Encounter"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
              <mustSupport value="class"/>
              <mustSupport value="status"/>
              <mustSupport value="period"/>
              <codeFilter>
                <path value="class"/>
                <code>
                  <system
                          value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                  <code value="IMP"/>
                  <display value="inpatient encounter"/>
                </code>
                <code>
                  <system
                          value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                  <code value="ACUTE"/>
                  <display value="inpatient acute"/>
                </code>
                <code>
                  <system
                          value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                  <code value="NONAC"/>
                  <display value="inpatient non-acute"/>
                </code>
                <code>
                  <system
                          value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                  <code value="SS"/>
                  <display value="short stay"/>
                </code>
              </codeFilter>
            </dataRequirement>
            <dataRequirement>
              <type value="Medication"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Medication"/>
              <mustSupport value="id"/>
            </dataRequirement>
            <dataRequirement>
              <type value="MedicationAdministration"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/MedicationAdministration"/>
              <mustSupport value="medication"/>
              <mustSupport value="status"/>
              <mustSupport value="effective"/>
            </dataRequirement>
            <dataRequirement>
              <type value="MedicationRequest"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/MedicationRequest"/>
              <mustSupport value="medication"/>
              <mustSupport value="authoredOn"/>
              <mustSupport value="id"/>
              <mustSupport value="dosageInstruction"/>
            </dataRequirement>
            <dataRequirement>
              <type value="Location"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Location"/>
              <mustSupport value="id"/>
            </dataRequirement>
            <dataRequirement>
              <type value="Condition"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Condition"/>
              <mustSupport value="category"/>
              <mustSupport value="onset"/>
            </dataRequirement>
            <dataRequirement>
              <type value="Specimen"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Specimen"/>
              <mustSupport value="id"/>
              <mustSupport value="collection"/>
              <mustSupport value="collection.collected"/>
            </dataRequirement>
            <dataRequirement>
              <type value="Observation"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Observation"/>
              <mustSupport value="code"/>
              <mustSupport value="effective"/>
              <mustSupport value="specimen"/>
              <mustSupport value="specimen.collection"/>
              <mustSupport value="specimen.collection.collected"/>
              <mustSupport value="category"/>
              <codeFilter>
                <path value="code"/>
                <valueSet
                          value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.38"/>
              </codeFilter>
            </dataRequirement>
            <dataRequirement>
              <type value="Coverage"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Coverage"/>
              <mustSupport value="type"/>
              <mustSupport value="period"/>
              <codeFilter>
                <path value="type"/>
                <valueSet
                          value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/>
              </codeFilter>
            </dataRequirement>
            <dataRequirement>
              <type value="Patient"/>
              <profile
                       value="http://hl7.org/fhir/StructureDefinition/Patient"/>
            </dataRequirement>
          </Library>
        </contained>
        <extension
                   url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements" id="effective-data-requirements">
          <valueCanonical value="#effective-data-requirements"/>
        </extension>
        <url
             value="http://nhsnlink.org/fhir/Measure/NHSNGlycemicControlHypoglycemicInitialPopulation"/>
        <identifier>
          <system value="https://nhsnlink.org"/>
          <value value="nhsnglycemiccontrolhypoglycemicinitialpopulation"/>
        </identifier>
        <version value="0.000.01"/>
        <name value="NHSNGlycemicControlHypoglycemicInitialPopulation"/>
        <title
               value="NHSN Glycemic Control, Hypoglycemia Initial Population"/>
        <status value="draft"/>
        <experimental value="true"/>
        <date value="2022-08-29T12:53:08-08:00"/>
        <publisher value="NHSN"/>
        <description
                     value="All inpatient encounters (including ED/Observation visits that end within 1 hour of the start of the inpatient encounter) for patients of all ages where at least one ADD was ordered or administered during the encounter that is during the measurement period."/>
        <purpose
                 value="The primary purpose of this site is to provide CDC’s NHSN with access to view measure specification content in the dQMs under development by Lantana Consulting Group. Please note, this site is draft and undergoes constant revision and is not intended to serve as an implementation guide."/>
        <copyright
                   value="This measure and specifications are subject to further revisions.      This performance measure is not a clinical guideline, does not establish a standard of medical care and has not been tested for all potential applications.        THE MEASURES AND SPECIFICATIONS ARE PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND."/>
        <library
                 value="http://fhir.org/guides/cqf/Library/NHSNGlycemicControlHypoglycemicInitialPopulation"/>
        <scoring>
          <coding>
            <system
                    value="http://terminology.hl7.org/CodeSystem/measure-scoring"/>
            <code value="cohort"/>
            <display value="Cohort"/>
          </coding>
        </scoring>
        <type>
          <coding>
            <system
                    value="http://terminology.hl7.org/CodeSystem/measure-type"/>
            <code value="outcome"/>
            <display value="Outcome"/>
          </coding>
        </type>
        <rationale
                   value="The NHSN Glycemic Control, Hypoglycemia module provides a mechanism for facilities to report inpatient medication-related hypoglycemia events, and to provide analytic reports based on these data to inform glycemic control quality improvement efforts and patient safety events. The primary objective of the NHSN Glycemic Control, Hypoglycemia module is to facilitate measurement and benchmarking of medication-related hypoglycemia events within a facility. As additional data are collected by NHSN, an additional objective will be to facilitate inter-facility benchmarking and evaluate national-level trends of medication-related hypoglycemia over time. The IP dQM provides the initial population and FHIR line-level data necessary for calculating the module metrics."/>
        <definition
                    value="Antidiabetic Drug Days (ADD): Aggregate number of inpatient encounter days within the facility in which at least one injectable or oral ADD was received. All patients who received ADDs during the hospitalization contribute to the initial population regardless of whether the patient experienced a hypoglycemic event."/>
        <definition
                    value="Emergency Department (ED) or Observation (OBS) encounters: ED or observation encounters that ended within an hour of the inpatient admission are included when calculating the start and stop times of the hospitalization. Only Metric 1 includes ED  and OBS encounters."/>
        <definition
                    value="Hypoglycemia Day: An inpatient day with at least one documented hypoglycemia event."/>
        <definition
                    value="Hypoglycemia Event includes the following during an inpatient hospitalization: A hypoglycemic blood glucose (BG) result during the encounter and ADD administered within 24 hours prior to the start of the hypoglycemic BG result and no subsequent test for blood glucose with a result ≥80 mg/dL within five minutes of the start of the initial low blood glucose test."/>
        <definition
                    value="Inpatient Encounter: A hospitalization in any inpatient facility that meets the criteria for reporting to the NHSN Glycemic Control Hypoglycemia Module (refer to CDC Locations and Descriptions manual)."/>
        <definition
                    value="Measurement Period: From the first day of each calendar month through the last day of that calendar month. Mild hypoglycemia: Blood glucose 54 mg/dL to 69 mg/dL as identified on central laboratory device (CLD) or prescription point-of-care (POC) device."/>
        <definition
                    value="Moderate hypoglycemia: Blood glucose 40 mg/dL to 53 mg/dL as identified on CLD or prescription POC device."/>
        <definition
                    value="Severe hypoglycemia Blood glucose &lt; 40 mg/dL as identified on CLD or prescription POC device."/>
        <group>
          <population id="initial-population-01">
            <code>
              <coding>
                <system
                        value="http://terminology.hl7.org/CodeSystem/measure-population"/>
                <code value="initial-population"/>
                <display value="Initial Population"/>
              </coding>
            </code>
            <description
                         value="All inpatient encounters, as well as ED and OBS encounters that end within 1 hour of the start of the inpatient encounter, for patients of all ages where at least one antidiabetic drug (ADD) was ordered or administered during the encounter that is during the measurement period."/>
            <criteria>
              <language value="text/cql.identifier"/>
              <expression value="Initial Population"/>
            </criteria>
          </population>
        </group>
        <supplementalData id="sde-chief-complaint">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Chief Complaint"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-condition">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Condition"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-condition-during-encounter">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Condition during Encounter"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-encounter-discharge-dispositions">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Encounter Discharge Dispositions"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-encounter-locations">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Encounter Locations"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-medication-administration">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Medication Administration"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-medication-request">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Medication Request"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-blood-glucose-observation">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Blood Glucose Observation"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-payer">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Payer"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-specimen">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Specimen"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-minimal-patient">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Minimal Patient"/>
          </criteria>
        </supplementalData>
        <supplementalData id="sde-minimal-medication-requests">
          <criteria>
            <language value="text/cql.identifier"/>
            <expression value="SDE Minimal Medication Requests"/>
          </criteria>
        </supplementalData>
      </Measure>
    </resource>
    <request>
      <method value="PUT"/>
      <url value="Measure/NHSNGlycemicControlHypoglycemicInitialPopulation"/>
    </request>
  </entry>
</Bundle>