<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="FhirDataEvaluatorBasicMeasure" />
  <url value="http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorBasicMeasure" />
  <name value="FhirDataEvaluatorBasicMeasure" />
  <status value="draft" />
  <description value="The Profile for the Measures used in the Fhir Data Evaluator" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Measure" />
  <baseDefinition value="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/measure-cqfm" />
  <derivation value="constraint" />
  <differential>
    <element id="Measure.group">
      <path value="Measure.group" />
      <min value="1" />
    </element>
    <element id="Measure.group.population">
      <path value="Measure.group.population" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="code.coding" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Measure.group.population:initialPopulation">
      <path value="Measure.group.population" />
      <sliceName value="initialPopulation" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Measure.group.population:initialPopulation.code.coding">
      <path value="Measure.group.population.code.coding" />
      <min value="1" />
      <patternCoding>
        <system value="http://terminology.hl7.org/CodeSystem/measure-population" />
        <code value="initial-population" />
      </patternCoding>
    </element>
    <element id="Measure.group.population:initialPopulation.criteria.language">
      <path value="Measure.group.population.criteria.language" />
      <patternCode value="text/x-fhir-query" />
    </element>
    <element id="Measure.group.stratifier">
      <path value="Measure.group.stratifier" />
      <constraint>
        <key value="criteriaRequiresCode" />
        <severity value="error" />
        <human value="If stratifier or component has criteria, it must have a coding with system and code." />
        <expression value="criteria.exists() and component.exists().not() implies code.coding.code.exists() and code.coding.system.exists()" />
        <source value="http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorBasicMeasure" />
      </constraint>
      <constraint>
        <key value="codeRequiresCriteria" />
        <severity value="error" />
        <human value="If stratifier or component has code, it must have criteria." />
        <expression value="code.exists() and component.exists().not() implies criteria.exists()" />
        <source value="http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorBasicMeasure" />
      </constraint>
    </element>
    <element id="Measure.group.stratifier.criteria.language">
      <path value="Measure.group.stratifier.criteria.language" />
      <patternCode value="text/fhirpath" />
    </element>
    <element id="Measure.group.stratifier.component">
      <path value="Measure.group.stratifier.component" />
      <constraint>
        <key value="criteriaRequiresCode" />
        <severity value="error" />
        <human value="If stratifier or component has criteria, it must have a coding with system and code." />
        <expression value="criteria.exists() and component.exists().not() implies code.coding.code.exists() and code.coding.system.exists()" />
        <source value="http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorBasicMeasure" />
      </constraint>
    </element>
    <element id="Measure.group.stratifier.component.criteria.language">
      <path value="Measure.group.stratifier.component.criteria.language" />
      <patternCode value="text/fhirpath" />
    </element>
  </differential>
</StructureDefinition>