FHIR © HL7.org  |  FHIRsmith 4.0.1  |  Server Home  |  XIG Home  |  XIG Stats  | 

FHIR IG analytics

Packagesmart.who.int.base
Resource TypeStructureDefinition
IdStructureDefinition-Requirements.json
FHIR VersionR4
Sourcehttps://build.fhir.org/ig/WorldHealthOrganization/smart-base/StructureDefinition-Requirements.html
URLhttp://smart.who.int/base/StructureDefinition/Requirements
Version0.2.0
Statusactive
Date2026-01-19T10:55:40+00:00
NameRequirements
TitleFunctional and Non-Functional Requirements (DAK)
Authoritywho
DescriptionLogical Model for representing Functional and Non-Functional Requirements from a DAK. A high-level list of core functions and capabilities that the system must have to meet the end users' needs.
Typehttp://smart.who.int/base/StructureDefinition/Requirements
Kindlogical

Resources that use this resource

StructureDefinition
RequirementsSourceRequirements Source

Resources that this resource uses

StructureDefinition
FunctionalRequirementFunctional Requirement (DAK)
NonFunctionalRequirementNon-Functional Requirement (DAK)

Narrative

Note: links and images are rebased to the (stated) source

Generated Narrative: StructureDefinition Requirements

NameFlagsCard.TypeDescription & Constraintsdoco
.. Requirements 0..*BaseFunctional and Non-Functional Requirements (DAK)
... description[x] 0..1Description
.... descriptionStringstring
.... descriptionUriuri
... functional 0..*BackboneElementFunctional Requirements
.... canonical 0..1canonical(Functional Requirement (DAK))Canonical
.... instance 0..1FunctionalRequirementInstance
... nonfunctional 0..*BackboneElementNon-Functional Requirements
.... canonical 0..1canonical(Non-Functional Requirement (DAK))Canonical
.... instance 0..1NonFunctionalRequirementInstance

doco Documentation for this format

Source1

{
  "resourceType": "StructureDefinition",
  "id": "Requirements",
  "text": {
    "status": "extensions",
    "div": "<!-- snip (see above) -->"
  },
  "url": "http://smart.who.int/base/StructureDefinition/Requirements",
  "version": "0.2.0",
  "name": "Requirements",
  "title": "Functional and Non-Functional Requirements (DAK)",
  "status": "active",
  "date": "2026-01-19T10:55:40+00:00",
  "publisher": "WHO",
  "contact": [
    {
      "name": "WHO",
      "telecom": [
        {
          "system": "url",
          "value": "http://who.int"
        }
      ]
    }
  ],
  "description": "Logical Model for representing Functional and Non-Functional Requirements from a DAK. A high-level list of core functions and capabilities that the system must have to meet the end users' needs.",
  "fhirVersion": "4.0.1",
  "kind": "logical",
  "abstract": false,
  "type": "http://smart.who.int/base/StructureDefinition/Requirements",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Base",
  "derivation": "specialization",
  "snapshot": {
    "extension": [
      {
        "url": "http://hl7.org/fhir/tools/StructureDefinition/snapshot-base-version",
        "valueString": "4.0.1"
      }
    ],
    "element": [
      {
        "id": "Requirements",
        "path": "Requirements",
        "short": "Functional and Non-Functional Requirements (DAK)",
        "definition": "Logical Model for representing Functional and Non-Functional Requirements from a DAK. A high-level list of core functions and capabilities that the system must have to meet the end users' needs.",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Base",
          "min": 0,
          "max": "*"
        },
        "isModifier": false
      },
      {
        "id": "Requirements.description[x]",
        "path": "Requirements.description[x]",
        "short": "Description",
        "definition": "Description of the requirements - either Markdown content or a URI to a Markdown file (absolute or relative to repository root)",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Requirements.description[x]",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          },
          {
            "code": "uri"
          }
        ]
      },
      {
        "id": "Requirements.functional",
        "path": "Requirements.functional",
        "short": "Functional Requirements",
        "definition": "Functional requirements for the system - can be provided as canonical reference or inline instance data",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Requirements.functional",
          "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": "http://hl7.org/fhir/StructureDefinition/Element"
          }
        ]
      },
      {
        "id": "Requirements.functional.id",
        "path": "Requirements.functional.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": [
          {
            "extension": [
              {
                "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
                "valueUrl": "string"
              }
            ],
            "code": "http://hl7.org/fhirpath/System.String"
          }
        ],
        "isModifier": false,
        "isSummary": false,
        "mapping": [
          {
            "identity": "rim",
            "map": "n/a"
          }
        ]
      },
      {
        "id": "Requirements.functional.extension",
        "path": "Requirements.functional.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": "*",
        "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": "Requirements.functional.modifierExtension",
        "path": "Requirements.functional.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](http://hl7.org/fhir/R4/extensibility.html#modifierExtension).",
        "alias": [
          "extensions",
          "user content",
          "modifiers"
        ],
        "min": 0,
        "max": "*",
        "base": {
          "path": "BackboneElement.modifierExtension",
          "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": 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": "Requirements.functional.canonical",
        "path": "Requirements.functional.canonical",
        "short": "Canonical",
        "definition": "Canonical URI pointing to the FunctionalRequirement definition",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Requirements.functional.canonical",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "canonical",
            "targetProfile": [
              "http://smart.who.int/base/StructureDefinition/FunctionalRequirement"
            ]
          }
        ]
      },
      {
        "id": "Requirements.functional.instance",
        "path": "Requirements.functional.instance",
        "short": "Instance",
        "definition": "Inline FunctionalRequirement instance data",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Requirements.functional.instance",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "http://smart.who.int/base/StructureDefinition/FunctionalRequirement"
          }
        ]
      },
      {
        "id": "Requirements.nonfunctional",
        "path": "Requirements.nonfunctional",
        "short": "Non-Functional Requirements",
        "definition": "Non-functional requirements for the system - can be provided as canonical reference or inline instance data",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Requirements.nonfunctional",
          "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": "http://hl7.org/fhir/StructureDefinition/Element"
          }
        ]
      },
      {
        "id": "Requirements.nonfunctional.id",
        "path": "Requirements.nonfunctional.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": [
          {
            "extension": [
              {
                "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
                "valueUrl": "string"
              }
            ],
            "code": "http://hl7.org/fhirpath/System.String"
          }
        ],
        "isModifier": false,
        "isSummary": false,
        "mapping": [
          {
            "identity": "rim",
            "map": "n/a"
          }
        ]
      },
      {
        "id": "Requirements.nonfunctional.extension",
        "path": "Requirements.nonfunctional.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": "*",
        "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": "Requirements.nonfunctional.modifierExtension",
        "path": "Requirements.nonfunctional.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](http://hl7.org/fhir/R4/extensibility.html#modifierExtension).",
        "alias": [
          "extensions",
          "user content",
          "modifiers"
        ],
        "min": 0,
        "max": "*",
        "base": {
          "path": "BackboneElement.modifierExtension",
          "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": 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": "Requirements.nonfunctional.canonical",
        "path": "Requirements.nonfunctional.canonical",
        "short": "Canonical",
        "definition": "Canonical URI pointing to the NonFunctionalRequirement definition",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Requirements.nonfunctional.canonical",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "canonical",
            "targetProfile": [
              "http://smart.who.int/base/StructureDefinition/NonFunctionalRequirement"
            ]
          }
        ]
      },
      {
        "id": "Requirements.nonfunctional.instance",
        "path": "Requirements.nonfunctional.instance",
        "short": "Instance",
        "definition": "Inline NonFunctionalRequirement instance data",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Requirements.nonfunctional.instance",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "http://smart.who.int/base/StructureDefinition/NonFunctionalRequirement"
          }
        ]
      }
    ]
  },
  "differential": {
    "element": [
      {
        "id": "Requirements",
        "path": "Requirements",
        "short": "Functional and Non-Functional Requirements (DAK)",
        "definition": "Logical Model for representing Functional and Non-Functional Requirements from a DAK. A high-level list of core functions and capabilities that the system must have to meet the end users' needs."
      },
      {
        "id": "Requirements.description[x]",
        "path": "Requirements.description[x]",
        "short": "Description",
        "definition": "Description of the requirements - either Markdown content or a URI to a Markdown file (absolute or relative to repository root)",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          },
          {
            "code": "uri"
          }
        ]
      },
      {
        "id": "Requirements.functional",
        "path": "Requirements.functional",
        "short": "Functional Requirements",
        "definition": "Functional requirements for the system - can be provided as canonical reference or inline instance data",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "BackboneElement"
          }
        ]
      },
      {
        "id": "Requirements.functional.canonical",
        "path": "Requirements.functional.canonical",
        "short": "Canonical",
        "definition": "Canonical URI pointing to the FunctionalRequirement definition",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "canonical",
            "targetProfile": [
              "http://smart.who.int/base/StructureDefinition/FunctionalRequirement"
            ]
          }
        ]
      },
      {
        "id": "Requirements.functional.instance",
        "path": "Requirements.functional.instance",
        "short": "Instance",
        "definition": "Inline FunctionalRequirement instance data",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "http://smart.who.int/base/StructureDefinition/FunctionalRequirement"
          }
        ]
      },
      {
        "id": "Requirements.nonfunctional",
        "path": "Requirements.nonfunctional",
        "short": "Non-Functional Requirements",
        "definition": "Non-functional requirements for the system - can be provided as canonical reference or inline instance data",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "BackboneElement"
          }
        ]
      },
      {
        "id": "Requirements.nonfunctional.canonical",
        "path": "Requirements.nonfunctional.canonical",
        "short": "Canonical",
        "definition": "Canonical URI pointing to the NonFunctionalRequirement definition",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "canonical",
            "targetProfile": [
              "http://smart.who.int/base/StructureDefinition/NonFunctionalRequirement"
            ]
          }
        ]
      },
      {
        "id": "Requirements.nonfunctional.instance",
        "path": "Requirements.nonfunctional.instance",
        "short": "Instance",
        "definition": "Inline NonFunctionalRequirement instance data",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "http://smart.who.int/base/StructureDefinition/NonFunctionalRequirement"
          }
        ]
      }
    ]
  }
}