{
  "resourceType": "StructureDefinition",
  "id": "FhirDataEvaluatorContinuousVariableMeasure",
  "url": "http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorContinuousVariableMeasure",
  "name": "FhirDataEvaluatorContinuousVariableMeasure",
  "status": "draft",
  "description": "The Profile for the Measures used in the Fhir Data Evaluator",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Measure",
  "baseDefinition": "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cv-measure-cqfm",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Measure.group",
        "path": "Measure.group",
        "constraint": [
          {
            "key": "measurePopulationIdEqualsCriteriaReference",
            "severity": "error",
            "human": "The referenced population in the criteriaReference extension of the measure observation must be equal to the id of the measure population.",
            "expression": "population.where(code.coding.code = 'measure-population').id = population.where(code.coding.code = 'measure-observation').extension.where(url = 'http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-criteriaReference').valueString",
            "source": "http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorContinuousVariableMeasure"
          }
        ]
      },
      {
        "id": "Measure.group.population:initialPopulation",
        "path": "Measure.group.population",
        "sliceName": "initialPopulation"
      },
      {
        "id": "Measure.group.population:initialPopulation.criteria.language",
        "path": "Measure.group.population.criteria.language",
        "patternCode": "text/x-fhir-query"
      },
      {
        "id": "Measure.group.population:measurePopulation",
        "path": "Measure.group.population",
        "sliceName": "measurePopulation"
      },
      {
        "id": "Measure.group.population:measurePopulation.criteria.language",
        "path": "Measure.group.population.criteria.language",
        "patternCode": "text/fhirpath"
      },
      {
        "id": "Measure.group.population:measureObservation",
        "path": "Measure.group.population",
        "sliceName": "measureObservation"
      },
      {
        "id": "Measure.group.population:measureObservation.extension:aggregateMethod",
        "path": "Measure.group.population.extension",
        "sliceName": "aggregateMethod"
      },
      {
        "id": "Measure.group.population:measureObservation.extension:aggregateMethod.extension",
        "path": "Measure.group.population.extension.extension",
        "max": "0"
      },
      {
        "id": "Measure.group.population:measureObservation.extension:aggregateMethod.value[x]",
        "path": "Measure.group.population.extension.value[x]",
        "patternCode": "unique-count"
      },
      {
        "id": "Measure.group.population:measureObservation.criteria.language",
        "path": "Measure.group.population.criteria.language",
        "patternCode": "text/fhirpath"
      },
      {
        "id": "Measure.group.stratifier",
        "path": "Measure.group.stratifier",
        "constraint": [
          {
            "key": "criteriaRequiresCode",
            "severity": "error",
            "human": "If stratifier or component has criteria, it must have a coding with system and code.",
            "expression": "criteria.exists() and component.exists().not() implies code.coding.code.exists() and code.coding.system.exists()",
            "source": "http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorContinuousVariableMeasure"
          },
          {
            "key": "codeRequiresCriteria",
            "severity": "error",
            "human": "If stratifier or component has code, it must have criteria.",
            "expression": "code.exists() and component.exists().not() implies criteria.exists()",
            "source": "http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorContinuousVariableMeasure"
          }
        ]
      },
      {
        "id": "Measure.group.stratifier.criteria.language",
        "path": "Measure.group.stratifier.criteria.language",
        "patternCode": "text/fhirpath"
      },
      {
        "id": "Measure.group.stratifier.component",
        "path": "Measure.group.stratifier.component",
        "constraint": [
          {
            "key": "criteriaRequiresCode",
            "severity": "error",
            "human": "If stratifier or component has criteria, it must have a coding with system and code.",
            "expression": "criteria.exists() and component.exists().not() implies code.coding.code.exists() and code.coding.system.exists()",
            "source": "http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorContinuousVariableMeasure"
          }
        ]
      },
      {
        "id": "Measure.group.stratifier.component.criteria.language",
        "path": "Measure.group.stratifier.component.criteria.language",
        "patternCode": "text/fhirpath"
      }
    ]
  }
}