{
  "resourceType": "StructureDefinition",
  "id": "FhirDataEvaluatorBasicMeasure",
  "url": "http://fhir-data-evaluator/StructureDefinition/FhirDataEvaluatorBasicMeasure",
  "name": "FhirDataEvaluatorBasicMeasure",
  "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/measure-cqfm",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Measure.group",
        "path": "Measure.group",
        "min": 1
      },
      {
        "id": "Measure.group.population",
        "path": "Measure.group.population",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "code.coding"
            }
          ],
          "rules": "open",
          "ordered": false
        },
        "min": 1,
        "max": "1"
      },
      {
        "id": "Measure.group.population:initialPopulation",
        "path": "Measure.group.population",
        "sliceName": "initialPopulation",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Measure.group.population:initialPopulation.code.coding",
        "path": "Measure.group.population.code.coding",
        "min": 1,
        "patternCoding": {
          "code": "initial-population",
          "system": "http://terminology.hl7.org/CodeSystem/measure-population"
        }
      },
      {
        "id": "Measure.group.population:initialPopulation.criteria.language",
        "path": "Measure.group.population.criteria.language",
        "patternCode": "text/x-fhir-query"
      },
      {
        "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/FhirDataEvaluatorBasicMeasure"
          },
          {
            "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/FhirDataEvaluatorBasicMeasure"
          }
        ]
      },
      {
        "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/FhirDataEvaluatorBasicMeasure"
          }
        ]
      },
      {
        "id": "Measure.group.stratifier.component.criteria.language",
        "path": "Measure.group.stratifier.component.criteria.language",
        "patternCode": "text/fhirpath"
      }
    ]
  }
}