{
  "resourceType": "StructureDefinition",
  "id": "spark1577",
  "meta": {
    "versionId": "spark1877",
    "lastUpdated": "2015-10-18T16:23:07.495+00:00"
  },
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
      "valueInteger": 3
    }
  ],
  "url": "http://chftews-fusefhir.rhcloud.com/StructureDefinition/Bundle-Condition",
  "name": "Bundle-Condition",
  "status": "draft",
  "date": "2015-09-22T10:02:49+00:00",
  "description": "Base StructureDefinition for Bundle Resource",
  "fhirVersion": "1.0.1",
  "kind": "resource",
  "constrainedType": "Bundle",
  "abstract": false,
  "base": "http://hl7.org/fhir/StructureDefinition/Bundle",
  "snapshot": {
    "element": [
      {
        "path": "Bundle",
        "short": "Contains a collection of resources",
        "definition": "A container for a collection of resources.",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Bundle"
          }
        ],
        "constraint": [
          {
            "key": "bdl-7",
            "severity": "error",
            "human": "FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId",
            "xpath": "count(for $entry in f:entry[f:resource] return $entry[count(parent::f:Bundle/f:entry[f:fullUrl/@value=$entry/f:fullUrl/@value and ((not(f:resource/*/f:meta/f:versionId/@value) and not($entry/f:resource/*/f:meta/f:versionId/@value)) or f:resource/*/f:meta/f:versionId/@value=$entry/f:resource/*/f:meta/f:versionId/@value)])!=1])=0"
          },
          {
            "key": "bdl-3",
            "severity": "error",
            "human": "entry.transaction when (and only when) a transaction",
            "xpath": "not(f:entry/f:request) or (f:type/@value = 'batch') or (f:type/@value = 'transaction') or (f:type/@value = 'history')"
          },
          {
            "key": "bdl-4",
            "severity": "error",
            "human": "entry.transactionResponse when (and only when) a transaction-response",
            "xpath": "not(f:entry/f:response) or (f:type/@value = 'batch-response') or (f:type/@value = 'transaction-response')"
          },
          {
            "key": "bdl-1",
            "severity": "error",
            "human": "total only when a search or history",
            "xpath": "not(f:total) or (f:type/@value = 'searchset') or (f:type/@value = 'history')"
          },
          {
            "key": "bdl-2",
            "severity": "error",
            "human": "entry.search only when a search",
            "xpath": "not(f:entry/f:search) or (f:type/@value = 'searchset')"
          }
        ],
        "isSummary": true,
        "mapping": [
          {
            "identity": "v2",
            "map": "N/A"
          },
          {
            "identity": "rim",
            "map": "N/A"
          },
          {
            "identity": "w5",
            "map": "infrastructure.structure"
          }
        ]
      },
      {
        "path": "Bundle.type",
        "short": "document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection",
        "definition": "Indicates the purpose of this bundle- how it was intended to be used.",
        "comments": "It's possible to use a bundle for other purposes (e.g. a document can be accepted as a transaction). This is primarily defined so that there can be specific rules for some of the bundle types.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.type",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "isSummary": true,
        "binding": {
          "strength": "required",
          "description": "Indicates the purpose of a bundle - how it was intended to be used.",
          "valueSetReference": {
            "reference": "http://hl7.org/fhir/ValueSet/bundle-type"
          }
        },
        "mapping": [
          {
            "identity": "w5",
            "map": "class"
          }
        ]
      },
      {
        "path": "Bundle.total",
        "short": "If search, the total number of matches",
        "definition": "If a set of search matches, this is the total number of matches for the search (as opposed to the number of results in this bundle).",
        "comments": "Only used if the bundle is a search result set.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.total",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "unsignedInt"
          }
        ],
        "condition": [
          "bdl-1"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.link",
        "name": "link",
        "short": "Links related to this Bundle",
        "definition": "A series of links that provide context to this bundle.",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle.link",
          "min": 0,
          "max": "*"
        },
        "isSummary": true
      },
      {
        "path": "Bundle.link.relation",
        "short": "http://www.iana.org/assignments/link-relations/link-relations.xhtml",
        "definition": "A name which details the functional use for this link - see [[http://www.iana.org/assignments/link-relations/link-relations.xhtml]].",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.link.relation",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.link.url",
        "short": "Reference details for the link",
        "definition": "The reference details for the link.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.link.url",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry",
        "slicing": {
          "rules": "openAtEnd"
        },
        "short": "Entry in the bundle - will have a resource, or information",
        "definition": "An entry in a bundle resource - will either contain a resource, or information about a resource (transactions and history only).",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle.entry",
          "min": 0,
          "max": "*"
        },
        "constraint": [
          {
            "key": "bdl-5",
            "severity": "error",
            "human": "must be a resource unless there's a transaction or transaction response",
            "xpath": "f:resource or f:request or f:response"
          },
          {
            "key": "bdl-6",
            "severity": "error",
            "human": "The fullUrl element must be present when a resource is present, and not present otherwise",
            "xpath": "(not(exists(f:fullUrl)) and not(exists(f:resource))) or (exists(f:fullUrl) and exists(f:resource))"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.link",
        "short": "Links related to this entry",
        "definition": "A series of links that provide context to this entry.",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle.entry.link",
          "min": 0,
          "max": "*"
        },
        "nameReference": "link",
        "isSummary": true
      },
      {
        "path": "Bundle.entry.fullUrl",
        "short": "Absolute URL for resource (server address, or UUID/OID)",
        "definition": "The Absolute URL for the resource. This must be provided for all resources. The fullUrl SHALL not disagree with the id in the resource. The fullUrl is a version independent reference to the resource.",
        "comments": "fullUrl may not be [unique in the context of a resource](bundle.html#bundle-unique). Note that since [FHIR resources do not need to be served through the FHIR API](references.html), the absolute URL may not end with the logical id of the resource (Resource.id), but if the fullUrl does look like a RESTful server URL (e.g. meets the [regex](references.html#regex), then it SHALL end with the Resource.id.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.fullUrl",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.resource",
        "short": "A resource in the bundle",
        "definition": "The Resources for the entry.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.resource",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "Resource"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.search",
        "short": "Search related information",
        "definition": "Information about the search process that lead to the creation of this entry.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.search",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-2"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.search.mode",
        "short": "match | include | outcome - why this is in the result set",
        "definition": "Why this entry is in the result set - whether it's included as a match or because of an _include requirement.",
        "comments": "There is only one mode. In some corner cases, a resource may be included because it is both a match and an include. In these circumstances, 'match' takes precedence.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.search.mode",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "isSummary": true,
        "binding": {
          "strength": "required",
          "description": "Why an entry is in the result set - whether it's included as a match or because of an _include requirement.",
          "valueSetReference": {
            "reference": "http://hl7.org/fhir/ValueSet/search-entry-mode"
          }
        }
      },
      {
        "path": "Bundle.entry.search.score",
        "short": "Search ranking (between 0 and 1)",
        "definition": "When searching, the server's search ranking score for the entry.",
        "comments": "Servers are not required to return a ranking score. 1 is most relevant, and 0 is least relevant. Often, search results are sorted by score, but the client may specify a different sort order.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.search.score",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "decimal"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request",
        "short": "Transaction Related Information",
        "definition": "Additional information about how this entry should be processed as part of a transaction.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.request",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-3"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.method",
        "short": "GET | POST | PUT | DELETE",
        "definition": "The HTTP verb for this entry in either a update history, or a transaction/ transaction response.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.method",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "isSummary": true,
        "binding": {
          "strength": "required",
          "description": "HTTP verbs (in the HTTP command line).",
          "valueSetReference": {
            "reference": "http://hl7.org/fhir/ValueSet/http-verb"
          }
        }
      },
      {
        "path": "Bundle.entry.request.url",
        "short": "URL for HTTP equivalent of this entry",
        "definition": "The URL for this entry, relative to the root (the address to which the request is posted).",
        "comments": "E.g. for a Patient Create, the method would be \"POST\" and the URL would be \"Patient\". For a Patient Update, the method would be PUT, and the URL would be \"Patient/[id]\".",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.url",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.ifNoneMatch",
        "short": "For managing cache currency",
        "definition": "If the ETag values match, return a 304 Not modified status. See the API documentation for [\"Conditional Read\"](http.html#cread).",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.ifNoneMatch",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.ifModifiedSince",
        "short": "For managing update contention",
        "definition": "Only perform the operation if the last updated date matches. See the API documentation for [\"Conditional Read\"](http.html#cread).",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.ifModifiedSince",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "instant"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.ifMatch",
        "short": "For managing update contention",
        "definition": "Only perform the operation if the Etag value matches. For more information, see the API section [\"Managing Resource Contention\"](http.html#concurrency).",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.ifMatch",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.ifNoneExist",
        "short": "For conditional creates",
        "definition": "Instruct the server not to perform the create if a specified resource already exists. For further information, see the API documentation for [\"Conditional Create\"](http.html#ccreate). This is just the query portion of the URL - what follows the \"?\" (not including the \"?\").",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.ifNoneExist",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response",
        "short": "Transaction Related Information",
        "definition": "Additional information about how this entry should be processed as part of a transaction.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.response",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-4"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response.status",
        "short": "Status return code for entry",
        "definition": "The status code returned by processing this entry.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.entry.response.status",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response.location",
        "short": "The location, if the operation returns a location",
        "definition": "The location header created by processing this operation.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.response.location",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response.etag",
        "short": "The etag for the resource (if relevant)",
        "definition": "The etag for the resource, it the operation for the entry produced a versioned resource.",
        "comments": "This has to match the version id in the header if a resource is included.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.response.etag",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response.lastModified",
        "short": "Server's date time modified",
        "definition": "The date/time that the resource was modified on the server.",
        "comments": "This has to match the same time in the meta header if a resource is included.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.response.lastModified",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "instant"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry",
        "name": "Condition",
        "short": "Entry in the bundle - will have a resource, or information",
        "definition": "An entry in a bundle resource - will either contain a resource, or information about a resource (transactions and history only).",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle.entry",
          "min": 0,
          "max": "*"
        },
        "nameReference": "Condition",
        "constraint": [
          {
            "key": "bdl-5",
            "severity": "error",
            "human": "must be a resource unless there's a transaction or transaction response",
            "xpath": "f:resource or f:request or f:response"
          },
          {
            "key": "bdl-6",
            "severity": "error",
            "human": "The fullUrl element must be present when a resource is present, and not present otherwise",
            "xpath": "(not(exists(f:fullUrl)) and not(exists(f:resource))) or (exists(f:fullUrl) and exists(f:resource))"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.link",
        "short": "Links related to this entry",
        "definition": "A series of links that provide context to this entry.",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle.entry.link",
          "min": 0,
          "max": "*"
        },
        "nameReference": "link",
        "isSummary": true
      },
      {
        "path": "Bundle.entry.fullUrl",
        "short": "Absolute URL for resource (server address, or UUID/OID)",
        "definition": "The Absolute URL for the resource. This must be provided for all resources. The fullUrl SHALL not disagree with the id in the resource. The fullUrl is a version independent reference to the resource.",
        "comments": "fullUrl may not be [unique in the context of a resource](bundle.html#bundle-unique). Note that since [FHIR resources do not need to be served through the FHIR API](references.html), the absolute URL may not end with the logical id of the resource (Resource.id), but if the fullUrl does look like a RESTful server URL (e.g. meets the [regex](references.html#regex), then it SHALL end with the Resource.id.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.fullUrl",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.resource",
        "short": "A resource in the bundle",
        "definition": "The Resources for the entry.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.resource",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "Resource"
          },
          {
            "code": "Reference",
            "profile": [
              "http://hl7.org/fhir/Condition"
            ]
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.search",
        "short": "Search related information",
        "definition": "Information about the search process that lead to the creation of this entry.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.search",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-2"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.search.mode",
        "short": "match | include | outcome - why this is in the result set",
        "definition": "Why this entry is in the result set - whether it's included as a match or because of an _include requirement.",
        "comments": "There is only one mode. In some corner cases, a resource may be included because it is both a match and an include. In these circumstances, 'match' takes precedence.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.search.mode",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "isSummary": true,
        "binding": {
          "strength": "required",
          "description": "Why an entry is in the result set - whether it's included as a match or because of an _include requirement.",
          "valueSetReference": {
            "reference": "http://hl7.org/fhir/ValueSet/search-entry-mode"
          }
        }
      },
      {
        "path": "Bundle.entry.search.score",
        "short": "Search ranking (between 0 and 1)",
        "definition": "When searching, the server's search ranking score for the entry.",
        "comments": "Servers are not required to return a ranking score. 1 is most relevant, and 0 is least relevant. Often, search results are sorted by score, but the client may specify a different sort order.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.search.score",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "decimal"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request",
        "short": "Transaction Related Information",
        "definition": "Additional information about how this entry should be processed as part of a transaction.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.request",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-3"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.method",
        "short": "GET | POST | PUT | DELETE",
        "definition": "The HTTP verb for this entry in either a update history, or a transaction/ transaction response.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.method",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "isSummary": true,
        "binding": {
          "strength": "required",
          "description": "HTTP verbs (in the HTTP command line).",
          "valueSetReference": {
            "reference": "http://hl7.org/fhir/ValueSet/http-verb"
          }
        }
      },
      {
        "path": "Bundle.entry.request.url",
        "short": "URL for HTTP equivalent of this entry",
        "definition": "The URL for this entry, relative to the root (the address to which the request is posted).",
        "comments": "E.g. for a Patient Create, the method would be \"POST\" and the URL would be \"Patient\". For a Patient Update, the method would be PUT, and the URL would be \"Patient/[id]\".",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.url",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.ifNoneMatch",
        "short": "For managing cache currency",
        "definition": "If the ETag values match, return a 304 Not modified status. See the API documentation for [\"Conditional Read\"](http.html#cread).",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.ifNoneMatch",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.ifModifiedSince",
        "short": "For managing update contention",
        "definition": "Only perform the operation if the last updated date matches. See the API documentation for [\"Conditional Read\"](http.html#cread).",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.ifModifiedSince",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "instant"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.ifMatch",
        "short": "For managing update contention",
        "definition": "Only perform the operation if the Etag value matches. For more information, see the API section [\"Managing Resource Contention\"](http.html#concurrency).",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.ifMatch",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request.ifNoneExist",
        "short": "For conditional creates",
        "definition": "Instruct the server not to perform the create if a specified resource already exists. For further information, see the API documentation for [\"Conditional Create\"](http.html#ccreate). This is just the query portion of the URL - what follows the \"?\" (not including the \"?\").",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.request.ifNoneExist",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response",
        "short": "Transaction Related Information",
        "definition": "Additional information about how this entry should be processed as part of a transaction.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.response",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-4"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response.status",
        "short": "Status return code for entry",
        "definition": "The status code returned by processing this entry.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Bundle.entry.response.status",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response.location",
        "short": "The location, if the operation returns a location",
        "definition": "The location header created by processing this operation.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.response.location",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response.etag",
        "short": "The etag for the resource (if relevant)",
        "definition": "The etag for the resource, it the operation for the entry produced a versioned resource.",
        "comments": "This has to match the version id in the header if a resource is included.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.response.etag",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response.lastModified",
        "short": "Server's date time modified",
        "definition": "The date/time that the resource was modified on the server.",
        "comments": "This has to match the same time in the meta header if a resource is included.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.response.lastModified",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "instant"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.signature",
        "short": "Digital Signature",
        "definition": "Digital Signature - base64 encoded. XML DigSIg or a JWT.",
        "comments": "The signature could be created by the \"author\" of the bundle or by the originating device.   Requirements around inclusion of a signature, verification of signatures and treatment of signed/non-signed bundles is implementation-environment specific.",
        "requirements": "This element allows capturing signatures on documents. It also allows signatures on messages, transactions or even query responses. It may support content-authentication, non-repudiation or other business cases. This is primarily relevant where the bundle may travel through multiple hops or via other mechanisms where HTTPS non-repudiation is insufficient.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.signature",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "Signature"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.signature.type",
        "short": "Indication of the reason the entity signed the object(s)",
        "definition": "An indication of the reason that the entity signed this document. This may be explicitly included as part of the signature information and can be used when determining accountability for various actions concerning the document.",
        "comments": "Examples include attesting to: authorship, correct transcription, and witness of specific event. Also known as a &quot;Commitment Type Indication&quot;.",
        "min": 1,
        "max": "*",
        "base": {
          "path": "Signature.type",
          "min": 1,
          "max": "*"
        },
        "type": [
          {
            "code": "Coding"
          }
        ],
        "isSummary": true,
        "binding": {
          "strength": "preferred",
          "description": "An indication of the reason that an entity signed the object",
          "valueSetReference": {
            "reference": "http://hl7.org/fhir/ValueSet/signature-type"
          }
        }
      },
      {
        "path": "Bundle.signature.type.system",
        "short": "Identity of the terminology system",
        "definition": "The identification of the code system that defines the meaning of the symbol in the code.",
        "comments": "The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...).  OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should de-reference to some definition that establish the system clearly and unambiguously.",
        "requirements": "Need to be unambiguous about the source of the definition of the symbol.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Coding.system",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "isSummary": true,
        "mapping": [
          {
            "identity": "v2",
            "map": "C*E.3"
          },
          {
            "identity": "rim",
            "map": "./codeSystem"
          },
          {
            "identity": "orim",
            "map": "fhir:Coding.system rdfs:subPropertyOf dt:CDCoding.codeSystem"
          }
        ]
      },
      {
        "path": "Bundle.signature.type.version",
        "short": "Version of the system - if relevant",
        "definition": "The version of the code system which was used when choosing this code. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured. and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.",
        "comments": "Where the terminology does not clearly define what string should be used to identify code system versions, the recommendation is to use the date (expressed in FHIR date format) on which that version was officially published as the version date.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Coding.version",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true,
        "mapping": [
          {
            "identity": "v2",
            "map": "C*E.7"
          },
          {
            "identity": "rim",
            "map": "./codeSystemVersion"
          },
          {
            "identity": "orim",
            "map": "fhir:Coding.version rdfs:subPropertyOf dt:CDCoding.codeSystemVersion"
          }
        ]
      },
      {
        "path": "Bundle.signature.type.code",
        "short": "Symbol in syntax defined by the system",
        "definition": "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).",
        "requirements": "Need to refer to a particular code in the system.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Coding.code",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "isSummary": true,
        "mapping": [
          {
            "identity": "v2",
            "map": "C*E.1"
          },
          {
            "identity": "rim",
            "map": "./code"
          },
          {
            "identity": "orim",
            "map": "fhir:Coding.code rdfs:subPropertyOf dt:CDCoding.code"
          }
        ]
      },
      {
        "path": "Bundle.signature.type.display",
        "short": "Representation defined by the system",
        "definition": "A representation of the meaning of the code in the system, following the rules of the system.",
        "requirements": "Need to be able to carry a human-readable meaning of the code for readers that do not know  the system.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Coding.display",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isSummary": true,
        "mapping": [
          {
            "identity": "v2",
            "map": "C*E.2 - but note this is not well followed"
          },
          {
            "identity": "rim",
            "map": "CV.displayName"
          },
          {
            "identity": "orim",
            "map": "fhir:Coding.display rdfs:subPropertyOf dt:CDCoding.displayName"
          }
        ]
      },
      {
        "path": "Bundle.signature.type.userSelected",
        "short": "If this coding was chosen directly by the user",
        "definition": "Indicates that this coding was chosen by a user directly - i.e. off a pick list of available items (codes or displays).",
        "comments": "Amongst a set of alternatives, a directly chosen code is the most appropriate starting point for new translations. There is some ambiguity about what exactly 'directly chosen' implies, and trading partner agreement may be needed to clarify the use of this element and its consequences more completely.",
        "requirements": "This has been identified as a clinical safety criterium - that this exact system/code pair was chosen explicitly, rather than inferred by the system based on some rules or language processing.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Coding.userSelected",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "boolean"
          }
        ],
        "isSummary": true,
        "mapping": [
          {
            "identity": "v2",
            "map": "Sometimes implied by being first"
          },
          {
            "identity": "rim",
            "map": "CD.codingRationale"
          },
          {
            "identity": "orim",
            "map": "fhir:Coding.userSelected fhir:mapsTo dt:CDCoding.codingRationale. fhir:Coding.userSelected fhir:hasMap fhir:Coding.userSelected.map. fhir:Coding.userSelected.map a fhir:Map;   fhir:target dt:CDCoding.codingRationale. fhir:Coding.userSelected\\#true a [     fhir:source \"true\";     fhir:target dt:CDCoding.codingRationale\\#O   ]"
          }
        ]
      },
      {
        "path": "Bundle.signature.when",
        "short": "When the signature was created",
        "definition": "When the digital signature was signed.",
        "comments": "This should agree with the information in the signature.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Signature.when",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "instant"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.signature.who[x]",
        "short": "Who signed the signature",
        "definition": "A reference to an application-usable description of the person that signed the certificate (e.g. the signature used their private key).",
        "comments": "This should agree with the information in the signature.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Signature.who[x]",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          },
          {
            "code": "Reference",
            "profile": [
              "http://hl7.org/fhir/StructureDefinition/Practitioner"
            ]
          },
          {
            "code": "Reference",
            "profile": [
              "http://hl7.org/fhir/StructureDefinition/RelatedPerson"
            ]
          },
          {
            "code": "Reference",
            "profile": [
              "http://hl7.org/fhir/StructureDefinition/Patient"
            ]
          },
          {
            "code": "Reference",
            "profile": [
              "http://hl7.org/fhir/StructureDefinition/Device"
            ]
          },
          {
            "code": "Reference",
            "profile": [
              "http://hl7.org/fhir/StructureDefinition/Organization"
            ]
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.signature.contentType",
        "short": "The technical format of the signature",
        "definition": "A mime type that indicates the technical format of the signature. Important mime types are application/signature+xml for X ML DigSig, application/jwt for JWT, and image/* for a graphical image of a signature.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Signature.contentType",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "isSummary": true,
        "binding": {
          "strength": "required",
          "description": "The mime type of an attachment. Any valid mime type is allowed.",
          "valueSetUri": "http://www.rfc-editor.org/bcp/bcp13.txt"
        }
      },
      {
        "path": "Bundle.signature.blob",
        "short": "The actual signature content (XML DigSig. JWT, picture, etc.)",
        "definition": "The base64 encoding of the Signature content.",
        "comments": "Where the signature type is an XML DigSig, the signed content is a FHIR Resource(s), the signature is of the XML form of the Resource(s) using  XML-Signature (XMLDIG) \"Detached Signature\" form.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Signature.blob",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "base64Binary"
          }
        ],
        "isSummary": true
      }
    ]
  },
  "differential": {
    "element": [
      {
        "path": "Bundle",
        "short": "Contains a collection of resources",
        "definition": "A container for a collection of resources.",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Bundle"
          }
        ],
        "constraint": [
          {
            "key": "bdl-7",
            "severity": "error",
            "human": "FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId",
            "xpath": "count(for $entry in f:entry[f:resource] return $entry[count(parent::f:Bundle/f:entry[f:fullUrl/@value=$entry/f:fullUrl/@value and ((not(f:resource/*/f:meta/f:versionId/@value) and not($entry/f:resource/*/f:meta/f:versionId/@value)) or f:resource/*/f:meta/f:versionId/@value=$entry/f:resource/*/f:meta/f:versionId/@value)])!=1])=0"
          },
          {
            "key": "bdl-3",
            "severity": "error",
            "human": "entry.transaction when (and only when) a transaction",
            "xpath": "not(f:entry/f:request) or (f:type/@value = 'batch') or (f:type/@value = 'transaction') or (f:type/@value = 'history')"
          },
          {
            "key": "bdl-4",
            "severity": "error",
            "human": "entry.transactionResponse when (and only when) a transaction-response",
            "xpath": "not(f:entry/f:response) or (f:type/@value = 'batch-response') or (f:type/@value = 'transaction-response')"
          },
          {
            "key": "bdl-1",
            "severity": "error",
            "human": "total only when a search or history",
            "xpath": "not(f:total) or (f:type/@value = 'searchset') or (f:type/@value = 'history')"
          },
          {
            "key": "bdl-2",
            "severity": "error",
            "human": "entry.search only when a search",
            "xpath": "not(f:entry/f:search) or (f:type/@value = 'searchset')"
          }
        ],
        "isSummary": true,
        "mapping": [
          {
            "identity": "v2",
            "map": "N/A"
          },
          {
            "identity": "rim",
            "map": "N/A"
          },
          {
            "identity": "w5",
            "map": "infrastructure.structure"
          }
        ]
      },
      {
        "path": "Bundle.entry",
        "slicing": {
          "rules": "openAtEnd"
        },
        "short": "Entry in the bundle - will have a resource, or information",
        "definition": "An entry in a bundle resource - will either contain a resource, or information about a resource (transactions and history only).",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle.entry",
          "min": 0,
          "max": "*"
        },
        "constraint": [
          {
            "key": "bdl-5",
            "severity": "error",
            "human": "must be a resource unless there's a transaction or transaction response",
            "xpath": "f:resource or f:request or f:response"
          },
          {
            "key": "bdl-6",
            "severity": "error",
            "human": "The fullUrl element must be present when a resource is present, and not present otherwise",
            "xpath": "(not(exists(f:fullUrl)) and not(exists(f:resource))) or (exists(f:fullUrl) and exists(f:resource))"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.search",
        "short": "Search related information",
        "definition": "Information about the search process that lead to the creation of this entry.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.search",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-2"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request",
        "short": "Transaction Related Information",
        "definition": "Additional information about how this entry should be processed as part of a transaction.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.request",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-3"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response",
        "short": "Transaction Related Information",
        "definition": "Additional information about how this entry should be processed as part of a transaction.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.response",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-4"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry",
        "name": "Condition",
        "short": "Entry in the bundle - will have a resource, or information",
        "definition": "An entry in a bundle resource - will either contain a resource, or information about a resource (transactions and history only).",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Bundle.entry",
          "min": 0,
          "max": "*"
        },
        "nameReference": "Condition",
        "constraint": [
          {
            "key": "bdl-5",
            "severity": "error",
            "human": "must be a resource unless there's a transaction or transaction response",
            "xpath": "f:resource or f:request or f:response"
          },
          {
            "key": "bdl-6",
            "severity": "error",
            "human": "The fullUrl element must be present when a resource is present, and not present otherwise",
            "xpath": "(not(exists(f:fullUrl)) and not(exists(f:resource))) or (exists(f:fullUrl) and exists(f:resource))"
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.resource",
        "short": "A resource in the bundle",
        "definition": "The Resources for the entry.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Bundle.entry.resource",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "Resource"
          },
          {
            "code": "Reference",
            "profile": [
              "http://hl7.org/fhir/Condition"
            ]
          }
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.search",
        "short": "Search related information",
        "definition": "Information about the search process that lead to the creation of this entry.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.search",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-2"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.request",
        "short": "Transaction Related Information",
        "definition": "Additional information about how this entry should be processed as part of a transaction.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.request",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-3"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.entry.response",
        "short": "Transaction Related Information",
        "definition": "Additional information about how this entry should be processed as part of a transaction.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.entry.response",
          "min": 0,
          "max": "1"
        },
        "condition": [
          "bdl-4"
        ],
        "isSummary": true
      },
      {
        "path": "Bundle.signature",
        "short": "Digital Signature",
        "definition": "Digital Signature - base64 encoded. XML DigSIg or a JWT.",
        "comments": "The signature could be created by the \"author\" of the bundle or by the originating device.   Requirements around inclusion of a signature, verification of signatures and treatment of signed/non-signed bundles is implementation-environment specific.",
        "requirements": "This element allows capturing signatures on documents. It also allows signatures on messages, transactions or even query responses. It may support content-authentication, non-repudiation or other business cases. This is primarily relevant where the bundle may travel through multiple hops or via other mechanisms where HTTPS non-repudiation is insufficient.",
        "min": 0,
        "max": "0",
        "base": {
          "path": "Bundle.signature",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "Signature"
          }
        ],
        "isSummary": true
      }
    ]
  }
}