{
  "resourceType": "StructureDefinition",
  "id": "nexus-summary-payload",
  "url": "https://fhir.apps.health/StructureDefinition/nexus-summary-payload",
  "name": "NexusSummaryPayload",
  "title": "Summary Payload Extension",
  "status": "draft",
  "description": "A generated summary's structured result, as a JSON string, on the `Composition` that files it.\n\n**THE CARRIER IS WRONG, AND THIS GUIDE SAYS SO ELSEWHERE IN THE SAME RELEASE. It should be an\n`Attachment` with `contentType = application/json`, not a `valueString`.** The composition-block\npayload extension states the rule plainly: *\"A JSON string in a `valueString` is self-describing to\nnobody: a reader cannot tell what it holds without recognising the render kind first, and no\npublished international IG carries editor state that way. `Attachment` is what R4 already provides\nfor an opaque payload, and `contentType` makes the envelope readable even where the contents are\nnot.\"*\n\nEvery word of that applies here. This payload is opaque by design -- its keys are the producing\ncapability's own and are explicitly not specified below -- so a consumer that does not recognise the\nsummary kind cannot tell a JSON object from a sentence, and nothing in the element says which it is.\n`Attachment` answers that without saying anything about the contents: `contentType` declares the\nenvelope, `data` carries the bytes, and `language` and `creation` are there if ever wanted.\n\nOne release, one question, two answers. The other one is right, and it was argued at length forty\nlines away from this file.\n\n**Transitional.** It carries no fact the summary's own narrative and its `nexus-attributed-fact`\ncitations do not also carry. It exists because this guide does not yet specify a structured read\nmodel for a generated summary, and it is withdrawn once one is declared. A new consumer should read\n`section.text` -- which is complete on its own -- and the per-claim citation trail on the summary's\n`Provenance`, and should reach for this only where a field-by-field structured view is needed today.\n\n**The object's shape is not specified here.** Its keys are the summary type's own fields, they\ndiffer between summary kinds, and they move with the producing capability rather than with this\nguide. Parse defensively, tolerate unknown keys, and fall back to the narrative when the value is\nmissing or unparsable rather than failing.\n\n**It is not an AI-attribution signal.** Whether a machine produced the content is the `AIAST`\nsecurity label in `meta.security`; which graph produced it is the logical `Device` on `author`.\nPresence or absence of this extension says nothing about either.\n\n**Readers should expect two canonicals.** This publishes under this guide's base; Nexus EMR writes\nit today at `https://nexus.awaremd.com/summary-id/StructureDefinition/summary-payload` (FHIR-377),\nan address this specification does not publish. It is live in stored `Composition.extension` values\nand in code, and is under migration to the canonical declared here. Match both addresses exactly.\nThe two do not share a final segment, so a suffix rule does not reach the pre-migration one and a\nreader built on it misses every summary written before the writer moves.",
  "fhirVersion": "4.0.1",
  "mapping": [
    {
      "identity": "rim",
      "uri": "http://hl7.org/v3",
      "name": "RIM Mapping"
    }
  ],
  "kind": "complex-type",
  "abstract": false,
  "context": [
    {
      "type": "element",
      "expression": "Composition"
    }
  ],
  "type": "Extension",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Extension",
  "derivation": "constraint",
  "snapshot": {
    "element": [
      {
        "id": "Extension",
        "path": "Extension",
        "short": "Summary Payload Extension",
        "definition": "A generated summary's structured result, as a JSON string, on the `Composition` that files it.\n\n**THE CARRIER IS WRONG, AND THIS GUIDE SAYS SO ELSEWHERE IN THE SAME RELEASE. It should be an\n`Attachment` with `contentType = application/json`, not a `valueString`.** The composition-block\npayload extension states the rule plainly: *\"A JSON string in a `valueString` is self-describing to\nnobody: a reader cannot tell what it holds without recognising the render kind first, and no\npublished international IG carries editor state that way. `Attachment` is what R4 already provides\nfor an opaque payload, and `contentType` makes the envelope readable even where the contents are\nnot.\"*\n\nEvery word of that applies here. This payload is opaque by design -- its keys are the producing\ncapability's own and are explicitly not specified below -- so a consumer that does not recognise the\nsummary kind cannot tell a JSON object from a sentence, and nothing in the element says which it is.\n`Attachment` answers that without saying anything about the contents: `contentType` declares the\nenvelope, `data` carries the bytes, and `language` and `creation` are there if ever wanted.\n\nOne release, one question, two answers. The other one is right, and it was argued at length forty\nlines away from this file.\n\n**Transitional.** It carries no fact the summary's own narrative and its `nexus-attributed-fact`\ncitations do not also carry. It exists because this guide does not yet specify a structured read\nmodel for a generated summary, and it is withdrawn once one is declared. A new consumer should read\n`section.text` -- which is complete on its own -- and the per-claim citation trail on the summary's\n`Provenance`, and should reach for this only where a field-by-field structured view is needed today.\n\n**The object's shape is not specified here.** Its keys are the summary type's own fields, they\ndiffer between summary kinds, and they move with the producing capability rather than with this\nguide. Parse defensively, tolerate unknown keys, and fall back to the narrative when the value is\nmissing or unparsable rather than failing.\n\n**It is not an AI-attribution signal.** Whether a machine produced the content is the `AIAST`\nsecurity label in `meta.security`; which graph produced it is the logical `Device` on `author`.\nPresence or absence of this extension says nothing about either.\n\n**Readers should expect two canonicals.** This publishes under this guide's base; Nexus EMR writes\nit today at `https://nexus.awaremd.com/summary-id/StructureDefinition/summary-payload` (FHIR-377),\nan address this specification does not publish. It is live in stored `Composition.extension` values\nand in code, and is under migration to the canonical declared here. Match both addresses exactly.\nThe two do not share a final segment, so a suffix rule does not reach the pre-migration one and a\nreader built on it misses every summary written before the writer moves.",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Extension",
          "min": 0,
          "max": "*"
        },
        "condition": [
          "ele-1"
        ],
        "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": "http://hl7.org/fhir/StructureDefinition/Element"
          },
          {
            "key": "ext-1",
            "severity": "error",
            "human": "Must have either extensions or value[x], not both",
            "expression": "extension.exists() != value.exists()",
            "xpath": "exists(f:extension)!=exists(f:*[starts-with(local-name(.), 'value')])"
          }
        ],
        "isModifier": false,
        "mapping": [
          {
            "identity": "rim",
            "map": "n/a"
          },
          {
            "identity": "rim",
            "map": "N/A"
          }
        ]
      },
      {
        "id": "Extension.id",
        "path": "Extension.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": "http://hl7.org/fhirpath/System.String",
            "extension": [
              {
                "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
                "valueUrl": "string"
              }
            ]
          }
        ],
        "isModifier": false,
        "isSummary": false,
        "mapping": [
          {
            "identity": "rim",
            "map": "n/a"
          }
        ]
      },
      {
        "id": "Extension.extension",
        "path": "Extension.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "description": "Extensions are always sliced by (at least) url",
          "rules": "open"
        },
        "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": "0",
        "base": {
          "path": "Element.extension",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Extension"
          }
        ],
        "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": "http://hl7.org/fhir/StructureDefinition/Element"
          },
          {
            "key": "ext-1",
            "severity": "error",
            "human": "Must have either extensions or value[x], not both",
            "expression": "extension.exists() != value.exists()",
            "xpath": "exists(f:extension)!=exists(f:*[starts-with(local-name(.), \"value\")])",
            "source": "http://hl7.org/fhir/StructureDefinition/Extension"
          }
        ],
        "isModifier": false,
        "isSummary": false,
        "mapping": [
          {
            "identity": "rim",
            "map": "n/a"
          }
        ]
      },
      {
        "id": "Extension.url",
        "path": "Extension.url",
        "representation": [
          "xmlAttr"
        ],
        "short": "identifies the meaning of the extension",
        "definition": "Source of the definition for the extension code - a logical name or a URL.",
        "comment": "The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Extension.url",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "http://hl7.org/fhirpath/System.String",
            "extension": [
              {
                "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
                "valueUrl": "uri"
              }
            ]
          }
        ],
        "fixedUri": "https://fhir.apps.health/StructureDefinition/nexus-summary-payload",
        "isModifier": false,
        "isSummary": false,
        "mapping": [
          {
            "identity": "rim",
            "map": "N/A"
          }
        ]
      },
      {
        "id": "Extension.value[x]",
        "path": "Extension.value[x]",
        "short": "The summary's structured result, as a JSON object serialized to a string",
        "definition": "The producing capability's own summary object, serialized as JSON. Keys are the summary type's own fields and are not specified by this guide. Not base64, not a pointer -- the JSON text itself.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "Extension.value[x]",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "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": "http://hl7.org/fhir/StructureDefinition/Element"
          }
        ],
        "mustSupport": true,
        "isModifier": false,
        "isSummary": false,
        "mapping": [
          {
            "identity": "rim",
            "map": "N/A"
          }
        ]
      }
    ]
  },
  "differential": {
    "element": [
      {
        "id": "Extension",
        "path": "Extension",
        "short": "Summary Payload Extension",
        "definition": "A generated summary's structured result, as a JSON string, on the `Composition` that files it.\n\n**THE CARRIER IS WRONG, AND THIS GUIDE SAYS SO ELSEWHERE IN THE SAME RELEASE. It should be an\n`Attachment` with `contentType = application/json`, not a `valueString`.** The composition-block\npayload extension states the rule plainly: *\"A JSON string in a `valueString` is self-describing to\nnobody: a reader cannot tell what it holds without recognising the render kind first, and no\npublished international IG carries editor state that way. `Attachment` is what R4 already provides\nfor an opaque payload, and `contentType` makes the envelope readable even where the contents are\nnot.\"*\n\nEvery word of that applies here. This payload is opaque by design -- its keys are the producing\ncapability's own and are explicitly not specified below -- so a consumer that does not recognise the\nsummary kind cannot tell a JSON object from a sentence, and nothing in the element says which it is.\n`Attachment` answers that without saying anything about the contents: `contentType` declares the\nenvelope, `data` carries the bytes, and `language` and `creation` are there if ever wanted.\n\nOne release, one question, two answers. The other one is right, and it was argued at length forty\nlines away from this file.\n\n**Transitional.** It carries no fact the summary's own narrative and its `nexus-attributed-fact`\ncitations do not also carry. It exists because this guide does not yet specify a structured read\nmodel for a generated summary, and it is withdrawn once one is declared. A new consumer should read\n`section.text` -- which is complete on its own -- and the per-claim citation trail on the summary's\n`Provenance`, and should reach for this only where a field-by-field structured view is needed today.\n\n**The object's shape is not specified here.** Its keys are the summary type's own fields, they\ndiffer between summary kinds, and they move with the producing capability rather than with this\nguide. Parse defensively, tolerate unknown keys, and fall back to the narrative when the value is\nmissing or unparsable rather than failing.\n\n**It is not an AI-attribution signal.** Whether a machine produced the content is the `AIAST`\nsecurity label in `meta.security`; which graph produced it is the logical `Device` on `author`.\nPresence or absence of this extension says nothing about either.\n\n**Readers should expect two canonicals.** This publishes under this guide's base; Nexus EMR writes\nit today at `https://nexus.awaremd.com/summary-id/StructureDefinition/summary-payload` (FHIR-377),\nan address this specification does not publish. It is live in stored `Composition.extension` values\nand in code, and is under migration to the canonical declared here. Match both addresses exactly.\nThe two do not share a final segment, so a suffix rule does not reach the pre-migration one and a\nreader built on it misses every summary written before the writer moves."
      },
      {
        "id": "Extension.extension",
        "path": "Extension.extension",
        "max": "0"
      },
      {
        "id": "Extension.url",
        "path": "Extension.url",
        "fixedUri": "https://fhir.apps.health/StructureDefinition/nexus-summary-payload"
      },
      {
        "id": "Extension.value[x]",
        "path": "Extension.value[x]",
        "short": "The summary's structured result, as a JSON object serialized to a string",
        "definition": "The producing capability's own summary object, serialized as JSON. Keys are the summary type's own fields and are not specified by this guide. Not base64, not a pointer -- the JSON text itself.",
        "min": 1,
        "type": [
          {
            "code": "string"
          }
        ],
        "mustSupport": true
      }
    ]
  }
}
