### ----------------------------------------------------
### -- FHIR
### -- Licenses: Artistic-2.0
### -- Authors: Hugh Simpson
### -- File: t/resources/structureDefinition/StructureDefinition.json
### ----------------------------------------------------
### -- Chunk 8 of 10
path" : "StructureDefinition.purpose",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "markdown"
      }],
      "isModifier" : false,
      "isSummary" : false,
      "mapping" : [{
        "identity" : "workflow",
        "map" : "Definition.purpose"
      },
      {
        "identity" : "w5",
        "map" : "FiveWs.why[x]"
      },
      {
        "identity" : "objimpl",
        "map" : "no-gen-base"
      }]
    },
    {
      "id" : "StructureDefinition.copyright",
      "path" : "StructureDefinition.copyright",
      "short" : "Use and/or publishing restrictions",
      "definition" : "A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition.",
      "requirements" : "Consumers must be able to determine any legal restrictions on the use of the structure definition and/or its content.",
      "alias" : ["License",
      "Restrictions"],
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.copyright",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "markdown"
      }],
      "isModifier" : false,
      "isSummary" : false,
      "mapping" : [{
        "identity" : "workflow",
        "map" : "Definition.copyright"
      },
      {
        "identity" : "objimpl",
        "map" : "no-gen-base"
      }]
    },
    {
      "id" : "StructureDefinition.keyword",
      "path" : "StructureDefinition.keyword",
      "short" : "Assist with indexing and finding",
      "definition" : "A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templates nby describing the use of this structure definition, or the content it describes.",
      "requirements" : "Assist in searching for appropriate StructureDefinitions.",
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "StructureDefinition.keyword",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "Coding"
      }],
      "isModifier" : false,
      "isSummary" : true,
      "binding" : {
        "extension" : [{
          "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
          "valueString" : "StructureDefinitionKeyword"
        }],
        "strength" : "extensible",
        "description" : "Codes for the meaning of the defined structure (SNOMED CT and LOINC codes, as an example).",
        "valueSet" : "http://hl7.org/fhir/ValueSet/definition-use"
      },
      "mapping" : [{
        "identity" : "iso11179",
        "map" : "keywords"
      }]
    },
    {
      "id" : "StructureDefinition.fhirVersion",
      "path" : "StructureDefinition.fhirVersion",
      "short" : "FHIR Version this StructureDefinition targets",
      "definition" : "The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version.",
      "comment" : "A StructureDefinition does not need to specify the target it applies to as StructureDefinitions will often be valid across multiple versions of FHIR. FHIR tooling can determine whether a StructureDefinition is consistent with a particular StructureDefinition if desired.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.fhirVersion",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "code"
      }],
      "isModifier" : false,
      "isSummary" : true,
      "binding" : {
        "extension" : [{
          "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
          "valueString" : "FHIRVersion"
        },
        {
          "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-isCommonBinding",
          "valueBoolean" : true
        }],
        "strength" : "required",
        "description" : "All published FHIR Versions.",
        "valueSet" : "http://hl7.org/fhir/ValueSet/FHIR-version|4.0.0"
      }
    },
    {
      "id" : "StructureDefinition.mapping",
      "path" : "StructureDefinition.mapping",
      "short" : "External specification that the content is mapped to",
      "definition" : "An external specification that the content is mapped to.",
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "StructureDefinition.mapping",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "BackboneElement"
      }],
      "constraint" : [{
        "key" : "ele-1",
        "severity" : "error",
        "human" : "All FHIR elements must have a @value or children",
        "expression" : "hasValue() or (children().count() > id.count())",
        "xpath" : "@value|f:*|h:div",
        "source" : "Element"
      },
      {
        "key" : "sdf-2",
        "severity" : "error",
        "human" : "Must have at least a name or a uri (or both)",
        "expression" : "name.exists() or uri.exists()",
        "xpath" : "exists(f:uri) or exists(f:name)"
      }],
      "isModifier" : false,
      "isSummary" : false
    },
    {
      "id" : "StructureDefinition.mapping.id",
      "path" : "StructureDefinition.mapping.id",
      "representation" : ["xmlAttr"],
      "short" : "Unique id for inter-element referencing",
      "definition" : "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "Element.id",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "string"
      }],
      "isModifier" : false,
      "isSummary" : false,
      "mapping" : [{
        "identity" : "rim",
        "map" : "n/a"
      }]
    },
    {
      "id" : "StructureDefinition.mapping.extension",
      "path" : "StructureDefinition.mapping.extension",
      "short" : "Additional content defined by implementations",
      "definition" : "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.",
      "comment" : "There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.",
      "alias" : ["extensions",
      "user content"],
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "Element.extension",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "Extension"
      }],
      "isModifier" : false,
      "isSummary" : false,
      "mapping" : [{
        "identity" : "rim",
        "map" : "n/a"
      }]
    },
    {
      "id" : "StructureDefinition.mapping.modifierExtension",
      "path" : "StructureDefinition.mapping.modifierExtension",
      "short" : "Extensions that cannot be ignored even if unrecognized",
      "definition" : "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).",
      "comment" : "There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.",
      "requirements" : "Modifier extensions allow for extensions that *cannot* be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored.  This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the [definition of modifier extensions](extensibility.html#modifierExtension).",
      "alias" : ["extensions",
      "user content",
      "modifiers"],
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "BackboneElement.modifierExtension",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "Extension"
      }],
      "isModifier" : true,
      "isModifierReason" : "Modifier extensions are expected to modify the meaning or interpretation of the element that contains them",
      "isSummary" : true,
      "mapping" : [{
        "identity" : "rim",
        "map" : "N/A"
      }]
    },
    {
      "id" : "StructureDefinition.mapping.identity",
      "path" : "StructureDefinition.mapping.identity",
      "short" : "Internal id when this mapping is used",
      "definition" : "An Internal id that is used to identify this mapping set when specific mappings are made.",
      "comment" : "The specification is described once, with general comments, and then specific mappings are made that reference this declaration.",
      "min" : 1,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.mapping.identity",
        "min" : 1,
        "max" : "1"
      },
      "type" : [{
        "code" : "id"
      }],
      "isModifier" : false,
      "isSummary" : false
    },
    {
      "id" : "StructureDefinition.mapping.uri",
      "path" : "StructureDefinition.mapping.uri",
      "short" : "Identifies what this mapping refers to",
      "definition" : "An absolute URI that identifies the specification that this mapping is expressed to.",
      "comment" : "A formal identity for the specification being mapped to helps with identifying maps consistently.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.mapping.uri",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "uri"
      }],
      "condition" : ["sdf-2"],
      "isModifier" : false,
      "isSummary" : false
    },
    {
      "id" : "StructureDefinition.mapping.name",
      "path" : "StructureDefinition.mapping.name",
      "short" : "Names what this mapping refers to",
      "definition" : "A name for the specification that is being mapped to.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.mapping.name",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "string"
      }],
      "condition" : ["sdf-2"],
      "isModifier" : false,
      "isSummary" : false
    },
    {
      "id" : "StructureDefinition.mapping.comment",
      "path" : "StructureDefinition.mapping.comment",
      "short" : "Versions, Issues, Scope limitations etc.",
      "definition" : "Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.mapping.comment",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "string"
      }],
      "isModifier" : false,
      "isSummary" : false
    },
    {
      "id" : "StructureDefinition.kind",
      "path" : "StructureDefinition.kind",
      "short" : "primitive-type | complex-type | resource | logical",
      "definition" : "Defines the kind of structure that this definition is describing.",
      "min" : 1,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.kind",
        "min" : 1,
        "max" : "1"
      },
      "type" : [{
        "code" : "code"
      }],
      "isModifier" : false,
      "isSummary" : true,
      "binding" : {
        "extension" : [{
          "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
          "valueString" : "StructureDefinitionKind"
        }],
        "strength" : "required",
        "description" : "Defines the type of structure that a definition is describing.",
        "valueSet" : "http://hl7.org/fhir/ValueSet/structure-definition-kind|4.0.0"
      }
    },
    {
      "id" : "StructureDefinition.abstract",
      "path" : "StructureDefinition.abstract",
      "short" : "Whether the structure is abstract",
      "definition" : "Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems.",
      "comment" : "Abstract Resources cannot be instantiated - a concrete sub-type must be used. Abstract datatypes and extensions cannot be used in an instance. For logical models, the exact implication of \"abstract\" will rest with the author, depending how the logical model is used. Flagging a constraint structure as abstract conveys design intent but makes no difference to how the structure definition is handled. Note that inline declared elements that are given the type \"Element\" in the StructureDefinition, but have children described, are anonymous concrete types that specialize Element.",
      "min" : 1,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.abstract",
        "min" : 1,
        "max" : "1"
      },
      "type" : [{
        "code" : "boolean"
      }],
      "isModifier" : false,
      "isSummary" : true
    },
    {
      "id" : "StructureDefinition.context",
      "path" : "StructureDefinition.context",
      "short" : "If an extension, where it can be used in instances",
      "definition" : "Identifies the types of resource or data type elements to which the extension can be applied.",
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "StructureDefinition.context",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "BackboneElement"
      }],
      "condition" : ["sdf-5"],
      "constraint" : [{
        "key" : "ele-1",
        "severity" : "error",
        "human" : "All FHIR elements must have a @value or children",
        "expression" : "hasValue() or (children().count() > id.count())",
        "xpath" : "@value|f:*|h:div",
        "source" : "Element"
      }],
      "isModifier" : false,
      "isSummary" : true
    },
    {
      "id" : "StructureDefinition.context.id",
      "path" : "StructureDefinition.context.id",
      "representation" : ["xmlAttr"],
      "short" : "Unique id for inter-element referencing",
      "definition" : "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "Element.id",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "string"
      }],
      "isModifier" : false,
      "isSummary" : false,
      "mapping" : [{
        "identity" : "rim",
        "map" : "n/a"
      }]
    },
    {
      "id" : "StructureDefinition.context.extension",
      "path" : "StructureDefinition.context.extension",
      "short" : "Additional content defined by implementations",
      "definition" : "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.",
      "comment" : "There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.",
      "alias" : ["extensions",
      "user content"],
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "Element.extension",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "Extension"
      }],
      "isModifier" : false,
      "isSummary" : false,
      "mapping" : [{
        "identity" : "rim",
        "map" : "n/a"
      }]
    },
    {
      "id" : "StructureDefinition.context.modifierExtension",
      "path" : "StructureDefinition.context.modifierExtension",
      "short" : "Extensions that cannot be ignored even if unrecognized",
      "definition" : "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).",
      "comment" : "There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.",
      "requirements" : "Modifier extensions allow for extensions that *cannot* be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored.  This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the [definition of modifier extensions](extensibility.html#modifierExtension).",
      "alias" : ["extensions",
      "user content",
      "modifiers"],
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "BackboneElement.modifierExtension",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "Extension"
      }],
      "isModifier" : true,
      "isModifierReason" : "Modifier extensions are expected to modify the meaning or interpretation of the element that contains them",
      "isSummary" : true,
      "mapping" : [{
        "identity" : "rim",
        "map" : "N/A"
      }]
    },
    {
      "id" : "StructureDefinition.context.type",
      "path" : "StructureDefinition.context.type",
      "short" : "fhirpath | element | extension",
      "definition" : "Defines how to interpret the expression that defines what the context of the extension is.",
      "min" : 1,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.context.type",
        "min" : 1,
        "max" : "1"
      },
      "type" : [{
        "code" : "code"
      }],
      "isModifier" : false,
      "isSummary" : true,
      "binding" : {
        "extension" : [{
          "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
          "valueString" : "ExtensionContextType"
        }],
        "strength" : "required",
        "description" : "How an extension context is interpreted.",
        "valueSet" : "http://hl7.org/fhir/ValueSet/extension-context-type|4.0.0"
      }
    },
    {
      "id" : "StructureDefinition.context.expression",
      "path" : "StructureDefinition.context.expression",
      "short" : "Where the extension can be used in instances",
      "definition" : "An expression that defines where an extension can be used in resources.",
      "min" : 1,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.context.expression",
        "min" : 1,
        "max" : "1"
      },
      "type" : [{
        "code" : "string"
      }],
      "isModifier" : false,
      "isSummary" : true
    },
    {
      "id" : "StructureDefinition.contextInvariant",
      "path" : "StructureDefinition.contextInvariant",
      "short" : "FHIRPath invariants - when the extension can be used",
      "definition" : "A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true.",
      "comment" : "The rules are only evaluated when the extension is present. When evaluating the invariant, the FHIRPath focus is the element that holds the extension, and %extension refers to the extension itself.",
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "StructureDefinition.contextInvariant",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "string"
      }],
      "condition" : ["sdf-18"],
      "isModifier" : false,
      "isSummary" : true
    },
    {
      "id" : "StructureDefinition.type",
      "path" : "StructureDefinition.type",
      "short" : "Type defined or constrained by this structure",
      "definition" : "The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. \"string\" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.",
      "comment" : "Note that in the case of constraints, the type could be determined by chasing through the baseDefinition references until a concrete structure (derivation = specialization) is reached, or by looking at the path of the first element in the snapshot - if present - but providing the type directly makes for simpler tooling and indexing. \n\nThe type must match the elements defined in the differential and the snapshot. For all FHIR defined types, the path name of the element will start with the type name. For logical models, where the type is a URL, the type name SHOULD start with the tail of the type URL where required.",
      "min" : 1,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.type",
        "min" : 1,
        "max" : "1"
      },
      "type" : [{
        "code" : "uri"
      }],
      "condition" : ["sdf-11"],
      "isModifier" : false,
      "isSummary" : true,
      "binding" : {
        "extension" : [{
          "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
          "valueString" : "FHIRDefinedTypeExt"
        }],
        "strength" : "extensible",
        "description" : "Either a resource or a data type, including logical model types.",
        "valueSet" : "http://hl7.org/fhir/ValueSet/defined-types"
      }
    },
    {
      "id" : "StructureDefinition.baseDefinition",
      "path" : "StructureDefinition.baseDefinition",
      "short" : "Definition that this type is constrained/specialized from",
      "definition" : "An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.",
      "comment" : "If differential constraints are specified in this structure, they are applied to the base in a \"differential\" fashion. If there is no base, then the differential constraints cannot be provided (snapshot only). Differential structures are useful for the editing perspective, and snapshot structures are suitable for operational use. The FHIR Project provides a number of tools/services to populate snapshots from differential constraints. Logical Models have a base of \"Element\" or another logical model.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.baseDefinition",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "extension" : [{
          "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-hierarchy",
          "valueBoolean" : true
        }],
        "code" : "canonical",
        "targetProfile" : ["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]
      }],
      "condition" : ["sdf-4"],
      "isModifier" : false,
      "isSummary" : true
    },
    {
      "id" : "StructureDefinition.derivation",
      "path" : "StructureDefinition.derivation",
      "short" : "specialization | constraint - How relates to base definition",
      "definition" : "How the type relates to the baseDefinition.",
      "comment" : "If the definition is a specialization, then it adds new elements in the differential, and the snapshot includes the inherited elements.  If the definition is a constraint, then it cannot define new elements, it can only make new rules about existing content (see [Profiling Resources](profiling.html#resources)).",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.derivation",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "code"
      }],
      "isModifier" : false,
      "isSummary" : true,
      "binding" : {
        "extension" : [{
          "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
          "valueString" : "TypeDerivationRule"
        }],
        "strength" : "required",
        "description" : "How a type relates to its baseDefinition.",
        "valueSet" : "http://hl7.org/fhir/ValueSet/type-derivation-rule|4.0.0"
      }
    },
    {
      "id" : "StructureDefinition.snapshot",
      "path" : "StructureDefinition.snapshot",
      "short" : "Snapshot view of the structure",
      "definition" : "A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "StructureDefinition.snapshot",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "BackboneElement"
      }],
      "condition" : ["sdf-6"],
      "constraint" : [{
        "key" : "ele-1",
        "severity" : "error",
        "human" : "All FHIR elements must have a @value or children",
        "expression" : "hasValue() or (children().count() > id.count())",
        "xpath" : "@value|f:*|h:div",
        "source" : "Element"
      },
      {
        "key" : "sdf-8",
        "severity" : "error",
        "human" : "All snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models",
        "expression" : "(%resource.kind = 'logical' or element.first().path = %resource.type) and element.tail().all(path.startsWith(%resource.snapshot.element.first().path&'.'))",
        "xpath" : "f:element[1]/f:path/@value=parent::f:StructureDefinition/f:type/@value and count(f:element[position()!=1])=count(f:element[position()!=1][starts-with(f:path/@value, concat(ancestor::f:StructureDefinition/f:type/@value, '.'))])"
      },
      {
        "key" : "sdf-3",
        "severity" : "error",
        "human" : "Each element definition in a snapshot must have a formal definition and cardinalities",
        "expression" : "element.all(definition.exists() and min.exists() and max.exists())",
        "xpath" : "count(f:element) = count(f:element[exists(f:definition) and exists(f:min) and exists(f:max)])"
      },
      {
        "key" : "sdf-8b",
        "severity" : "error",
        "human" : "All snapshot elements must have a base definition",
        "expression" : "element.all(base.exists())",
        "xpath" : "count(f:element) = count(f:element/f:base)"
      }],
      "isModifier" : false,
      "isSummary" : false
    },
    {
      "id" : "StructureDefinition.snapshot.id",
      "path" : "StructureDefinition.snapshot.id",
      "representation" : ["xmlAttr"],
      "short" : "Unique id for inter-element referencing",
      "definition" : "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.",
      "min" : 0,
      "max" : "1",
      "base" : {
        "path" : "Element.id",
        "min" : 0,
        "max" : "1"
      },
      "type" : [{
        "code" : "string"
      }],
      "isModifier" : false,
      "isSummary" : false,
      "mapping" : [{
        "identity" : "rim",
        "map" : "n/a"
      }]
    },
    {
      "id" : "StructureDefinition.snapshot.extension",
      "path" : "StructureDefinition.snapshot.extension",
      "short" : "Additional content defined by implementations",
      "definition" : "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.",
      "comment" : "There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.",
      "alias" : ["extensions",
      "user content"],
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "Element.extension",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "Extension"
      }],
      "isModifier" : false,
      "isSummary" : false,
      "mapping" : [{
        "identity" : "rim",
        "map" : "n/a"
      }]
    },
    {
      "id" : "StructureDefinition.snapshot.modifierExtension",
      "path" : "StructureDefinition.snapshot.modifierExtension",
      "short" : "Extensions that cannot be ignored even if unrecognized",
      "definition" : "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).",
      "comment" : "There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.",
      "requirements" : "Modifier extensions allow for extensions that *cannot* be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored.  This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the [definition of modifier extensions](extensibility.html#modifierExtension).",
      "alias" : ["extensions",
      "user content",
      "modifiers"],
      "min" : 0,
      "max" : "*",
      "base" : {
        "path" : "BackboneElement.modifierExtension",
        "min" : 0,
        "max" : "*"
      },
      "type" : [{
        "code" : "Extension"
      }],
      "isModifier" : true,
      "isModifierReason" : "Modifier extensions are expected to modify the meaning or interpretation of the element that contains them",
      "isSummary" : true,
      "mapping" : [{
        "identity" : "rim",
        "map" : "N/A"
      }]
    },
    {
      "id" : "StructureDefinition.snapshot.element",
      "path" : "StructureDefinition.snapshot.element",
      "short" : "Definition of elements in the resource (if no StructureDefinition)",
      "definition" : "Captures constraints on each element within the resource.",
      "min" : 1,
      "max" : "*",
      "base" : {
        "path" : "StructureDefinition.snapshot.element",
        "min" : 1,
        "max" : "*"
      },
      "type" : [{
        "code" : "ElementDefinition"
      }],
      "condition" : ["sdf-3"],
      "constraint" : [{
        "key" : "sdf-10",
        "requirements" : "binding is required",
        "severity" :