Requirements
type: StructureDefinition
node role: treeRoot
id:
  v: Requirements
text:
  status:
    v: extensions
  div:
    v: English Generated Narrative: StructureDefinition Requirements Name Flags Card. Type Description & Constraints<img src="[binary]" alt="doco" style="background-color: inherit"/> Requirements 0..* Base Functional and Non-Functional Requirements (DAK) #xD; description[x] 0..1 Description #xD; descriptionString string #xD; descriptionUri uri #xD; functional 0..* BackboneElement Functional Requirements #xD; canonical 0..1 canonical(Functional Requirement (DAK)) Canonical #xD; instance 0..1 FunctionalRequirement Instance #xD; nonfunctional 0..* BackboneElement Non-Functional Requirements #xD; canonical 0..1 canonical(Non-Functional Requirement (DAK)) Canonical #xD; instance 0..1 NonFunctionalRequirement Instance #xD; <img src="[binary]" alt="doco" style="background-color: inherit"/> Documentation for this format French Narratif généré : DéfinitionStructure Requirements Nom Drapeaux Card. Type Description et contraintes<img src="[binary]" alt="doco" style="background-color: inherit"/> Requirements 0..* Base Functional and Non-Functional Requirements (DAK) #xD; description[x] 0..1 Description #xD; descriptionString string #xD; descriptionUri uri #xD; functional 0..* BackboneElement Functional Requirements #xD; canonical 0..1 canonical(Functional Requirement (DAK)) Canonical #xD; instance 0..1 FunctionalRequirement Instance #xD; nonfunctional 0..* BackboneElement Non-Functional Requirements #xD; canonical 0..1 canonical(Non-Functional Requirement (DAK)) Canonical #xD; instance 0..1 NonFunctionalRequirement Instance #xD; <img src="[binary]" alt="doco" style="background-color: inherit"/> Documentation pour ce format Arabic السرد المُنشأ: StructureDefinition Requirements الاسم الأعلام البطاقة. النوع الوصف والقيود<img src="[binary]" alt="doco" style="background-color: inherit"/> Requirements 0..* Base Functional and Non-Functional Requirements (DAK) #xD; description[x] 0..1 Description #xD; descriptionString string #xD; descriptionUri uri #xD; functional 0..* BackboneElement Func…
url:
  v: http://smart.who.int/base/StructureDefinition/Requirements
  l: Requirements
version:
  v: 0.2.0
name:
  v: Requirements
title:
  v: Functional and Non-Functional Requirements (DAK)
status:
  v: active
date:
  v: 2026-03-24T10:34:20+00:00
publisher:
  v: WHO
contact:
  name:
    v: WHO
  telecom:
    system:
      v: url
    value:
      v: http://who.int
description:
  v: 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.
fhir version:
  v: 4.0.1
kind:
  v: logical
abstract:
  v: false
type:
  v: http://smart.who.int/base/StructureDefinition/Requirements
  l: Requirements
base definition:
  v: http://hl7.org/fhir/StructureDefinition/Base
  l: Base
derivation:
  v: specialization
snapshot:
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/snapshot-base-version
      l: snapshot-base-version
    value: String
      v: 4.0.1
  element:
    id:
      v: Requirements
    path:
      v: Requirements
    short:
      v: Functional and Non-Functional Requirements (DAK)
    definition:
      v: 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:
      v: 0
    max:
      v: *
    base:
      path:
        v: Base
      min:
        v: 0
      max:
        v: *
    is modifier:
      v: false
  element:
    id:
      v: Requirements.description[x]
    path:
      v: Requirements.description[x]
    short:
      v: Description
    definition:
      v: Description of the requirements - either Markdown content or a URI to a Markdown file (absolute or relative to repository root)
    min:
      v: 0
    max:
      v: 1
    base:
      path:
        v: Requirements.description[x]
      min:
        v: 0
      max:
        v: 1
    type:
      code:
        v: string
        l: string
    type:
      code:
        v: uri
        l: uri
  element:
    id:
      v: Requirements.functional
    path:
      v: Requirements.functional
    short:
      v: Functional Requirements
    definition:
      v: Functional requirements for the system - can be provided as canonical reference or inline instance data
    min:
      v: 0
    max:
      v: *
    base:
      path:
        v: Requirements.functional
      min:
        v: 0
      max:
        v: *
    type:
      code:
        v: BackboneElement
        l: BackboneElement
    constraint:
      key:
        v: ele-1
      severity:
        v: error
      human:
        v: All FHIR elements must have a @value or children
      expression:
        v: hasValue() or (children().count() > id.count())
      xpath:
        v: @value|f:*|h:div
      source:
        v: http://hl7.org/fhir/StructureDefinition/Element
        l: Element
  element:
    id:
      v: Requirements.functional.id
    path:
      v: Requirements.functional.id
    representation:
      v: xmlAttr
    short:
      v: Unique id for inter-element referencing
    definition:
      v: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
    min:
      v: 0
    max:
      v: 1
    base:
      path:
        v: Element.id
      min:
        v: 0
      max:
        v: 1
    type:
      extension:
        value: Url
      code:
        v: http://hl7.org/fhirpath/System.String
        l: System.String
    is modifier:
      v: false
    is summary:
      v: false
    mapping:
      identity:
        v: rim
      map:
        v: n/a
  element:
    id:
      v: Requirements.functional.extension
    path:
      v: Requirements.functional.extension
    slicing:
      description:
        v: Extensions are always sliced by (at least) url
      rules:
        v: open
    short:
      v: Additional content defined by implementations
    definition:
      v: 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:
      v: 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:
      v: extensions
    alias:
      v: user content
    min:
      v: 0

Url
v: string
l: string

v: value

v: url

v: *

path:
  v: Element.extension
min:
  v: 0
max:
  v: *

code:
  v: Extension
  l: Extension

key:
  v: ele-1
severity:
  v: error
human:
  v: All FHIR elements must have a @value or children
expression:
  v: hasValue() or (children().count() > id.count())
xpath:
  v: @value|f:*|h:div
source:
  v: http://hl7.org/fhir/StructureDefinition/Element
  l: Element

key:
  v: ext-1
severity:
  v: error
human:
  v: Must have either extensions or value[x], not both
expression:
  v: extension.exists() != value.exists()
xpath:
  v: exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])
source:
  v: http://hl7.org/fhir/StructureDefinition/Extension
  l: Extension

v: false

v: false

identity:
  v: rim
map:
  v: n/a

id:
  v: Requirements.functional.modifierExtension
path:
  v: Requirements.functional.modifierExtension
short:
  v: Extensions that cannot be ignored even if unrecognized
definition:
  v: 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. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).
comment:
  v: 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:
  v: 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:
  v: extensions
alias:
  v: user content
alias:
  v: modifiers
min:
  v: 0
max:
  v: *
base:
  path:
    v: BackboneElement.modifierExtension
  min:
    v: 0
  max:
    v: *
type:
  code:
    v: Extension
    l: Extension
constraint:
  key:
    v: ele-1
  severity:
    v: error
  human:
    v: All FHIR elements must have a @value or children
  expression:
    v: hasValue() or (children().count() > id.count())
  xpath:
    v: @value|f:*|h:div
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
constraint:
  key:
    v: ext-1
  severity:
    v: error
  human:
    v: Must have either extensions or value[x], not both
  expression:
    v: extension.exists() != value.exists()
  xpath:
    v: exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])
  source:
    v: http://hl7.org/fhir/StructureDefinition/Extension
    l: Extension
is modifier:
  v: true
is modifier reason:
  v: Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
is summary:
  v: true
mapping:
  identity:
    v: rim
  map:
    v: N/A

id:
  v: Requirements.functional.canonical
path:
  v: Requirements.functional.canonical
short:
  v: Canonical
definition:
  v: Canonical URI pointing to the FunctionalRequirement definition
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Requirements.functional.canonical
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: canonical
    l: canonical
  target profile:
    v: http://smart.who.int/base/StructureDefinition/FunctionalRequirement
    l: FunctionalRequirement

id:
  v: Requirements.functional.instance
path:
  v: Requirements.functional.instance
short:
  v: Instance
definition:
  v: Inline FunctionalRequirement instance data
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Requirements.functional.instance
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://smart.who.int/base/StructureDefinition/FunctionalRequirement
    l: FunctionalRequirement

id:
  v: Requirements.nonfunctional
path:
  v: Requirements.nonfunctional
short:
  v: Non-Functional Requirements
definition:
  v: Non-functional requirements for the system - can be provided as canonical reference or inline instance data
min:
  v: 0
max:
  v: *
base:
  path:
    v: Requirements.nonfunctional
  min:
    v: 0
  max:
    v: *
type:
  code:
    v: BackboneElement
    l: BackboneElement
constraint:
  key:
    v: ele-1
  severity:
    v: error
  human:
    v: All FHIR elements must have a @value or children
  expression:
    v: hasValue() or (children().count() > id.count())
  xpath:
    v: @value|f:*|h:div
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element

id:
  v: Requirements.nonfunctional.id
path:
  v: Requirements.nonfunctional.id
representation:
  v: xmlAttr
short:
  v: Unique id for inter-element referencing
definition:
  v: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Element.id
  min:
    v: 0
  max:
    v: 1
type:
  extension:
    url:
      v: http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type
      l: structuredefinition-fhir-type
    value: Url
      v: string
      l: string
  code:
    v: http://hl7.org/fhirpath/System.String
    l: System.String
is modifier:
  v: false
is summary:
  v: false
mapping:
  identity:
    v: rim
  map:
    v: n/a

id:
  v: Requirements.nonfunctional.extension
path:
  v: Requirements.nonfunctional.extension
slicing:
  discriminator:
    type:
      v: value
    path:
      v: url
  description:
    v: Extensions are always sliced by (at least) url
  rules:
    v: open
short:
  v: Additional content defined by implementations
definition:
  v: 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:
  v: 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:
  v: extensions
alias:
  v: user content
min:
  v: 0
max:
  v: *
base:
  path:
    v: Element.extension
  min:
    v: 0
  max:
    v: *
type:
  code:
    v: Extension
    l: Extension
constraint:
  key:
    v: ele-1
  severity:
    v: error
  human:
    v: All FHIR elements must have a @value or children
  expression:
    v: hasValue() or (children().count() > id.count())
  xpath:
    v: @value|f:*|h:div
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
constraint:
  key:
    v: ext-1
  severity:
    v: error
  human:
    v: Must have either extensions or value[x], not both
  expression:
    v: extension.exists() != value.exists()
  xpath:
    v: exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])
  source:
    v: http://hl7.org/fhir/StructureDefinition/Extension
    l: Extension
is modifier:
  v: false
is summary:
  v: false
mapping:
  identity:
    v: rim
  map:
    v: n/a

id:
  v: Requirements.nonfunctional.modifierExtension
path:
  v: Requirements.nonfunctional.modifierExtension
short:
  v: Extensions that cannot be ignored even if unrecognized
definition:
  v: 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. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).
comment:
  v: 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:
  v: 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:
  v: extensions
alias:
  v: user content
alias:
  v: modifiers
min:
  v: 0
max:
  v: *
base:
  path:
    v: BackboneElement.modifierExtension
  min:
    v: 0
  max:
    v: *
type:
  code:
    v: Extension
    l: Extension
constraint:
  key:
    v: ele-1
  severity:
    v: error
  human:
    v: All FHIR elements must have a @value or children
  expression:
    v: hasValue() or (children().count() > id.count())
  xpath:
    v: @value|f:*|h:div
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
constraint:
  key:
    v: ext-1
  severity:
    v: error
  human:
    v: Must have either extensions or value[x], not both
  expression:
    v: extension.exists() != value.exists()
  xpath:
    v: exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])
  source:
    v: http://hl7.org/fhir/StructureDefinition/Extension
    l: Extension
is modifier:
  v: true
is modifier reason:
  v: Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
is summary:
  v: true
mapping:
  identity:
    v: rim
  map:
    v: N/A

id:
  v: Requirements.nonfunctional.canonical
path:
  v: Requirements.nonfunctional.canonical
short:
  v: Canonical
definition:
  v: Canonical URI pointing to the NonFunctionalRequirement definition
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Requirements.nonfunctional.canonical
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: canonical
    l: canonical
  target profile:
    v: http://smart.who.int/base/StructureDefinition/NonFunctionalRequirement
    l: NonFunctionalRequirement

id:
  v: Requirements.nonfunctional.instance
path:
  v: Requirements.nonfunctional.instance
short:
  v: Instance
definition:
  v: Inline NonFunctionalRequirement instance data
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Requirements.nonfunctional.instance
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://smart.who.int/base/StructureDefinition/NonFunctionalRequirement
    l: NonFunctionalRequirement

element:
  id:
    v: Requirements
  path:
    v: Requirements
  short:
    v: Functional and Non-Functional Requirements (DAK)
  definition:
    v: 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.
element:
  id:
    v: Requirements.description[x]
  path:
    v: Requirements.description[x]
  short:
    v: Description
  definition:
    v: Description of the requirements - either Markdown content or a URI to a Markdown file (absolute or relative to repository root)
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: string
      l: string
  type:
    code:
      v: uri
      l: uri
element:
  id:
    v: Requirements.functional
  path:
    v: Requirements.functional
  short:
    v: Functional Requirements
  definition:
    v: Functional requirements for the system - can be provided as canonical reference or inline instance data
  min:
    v: 0
  max:
    v: *
  type:
    code:
      v: BackboneElement
      l: BackboneElement
element:
  id:
    v: Requirements.functional.canonical
  path:
    v: Requirements.functional.canonical
  short:
    v: Canonical
  definition:
    v: Canonical URI pointing to the FunctionalRequirement definition
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: canonical
      l: canonical
    target profile:
      v: http://smart.who.int/base/StructureDefinition/FunctionalRequirement
      l: FunctionalRequirement
element:
  id:
    v: Requirements.functional.instance
  path:
    v: Requirements.functional.instance
  short:
    v: Instance
  definition:
    v: Inline FunctionalRequirement instance data
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: http://smart.who.int/base/StructureDefinition/FunctionalRequirement
      l: FunctionalRequirement
element:
  id:
    v: Requirements.nonfunctional
  path:
    v: Requirements.nonfunctional
  short:
    v: Non-Functional Requirements
  definition:
    v: Non-functional requirements for the system - can be provided as canonical reference or inline instance data
  min:
    v: 0
  max:
    v: *
  type:
    code:
      v: BackboneElement
      l: BackboneElement
element:
  id:
    v: Requirements.nonfunctional.canonical
  path:
    v: Requirements.nonfunctional.canonical
  short:
    v: Canonical
  definition:
    v: Canonical URI pointing to the NonFunctionalRequirement definition
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: canonical
      l: canonical
    target profile:
      v: http://smart.who.int/base/StructureDefinition/NonFunctionalRequirement
      l: NonFunctionalRequirement
element:
  id:
    v: Requirements.nonfunctional.instance
  path:
    v: Requirements.nonfunctional.instance
  short:
    v: Instance
  definition:
    v: Inline NonFunctionalRequirement instance data
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: http://smart.who.int/base/StructureDefinition/NonFunctionalRequirement
      l: NonFunctionalRequirement