TriggerDefinition
type: StructureDefinition
node role: treeRoot
id:
  v: TriggerDefinition
text:
  status:
    v: generated
  div:
    v: Name Flags Card. Type Description & Constraints<img src="[binary]" alt="doco" style="background-color: inherit"/> <img src="[binary]" alt="." style="background-color: white; background-color: inherit" title="Element" class="hierarchy"/> TriggerDefinition ΣN Element Defines an expected trigger for a module + Rule: Either timing, or a data requirement, but not both + Rule: A named event requires a name or code, a periodic event requires timing, a data event requires data, and a subscription topic requires a reference to a subscription topic Elements defined in Ancestors: id, <a href="types.html#Element" title="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 managable, 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.">extension #xD; type ΣC 1..1 code named-event | periodic | data-changed | data-added | data-modified | data-removed | data-accessed | data-access-ended | subscription-topic Binding: TriggerType (Required) #xD; name ΣC 0..1 string Name or URI that identifies the event #xD; <img src="[binary]" alt="." style="background-color: #F7F7F7; background-color: inherit" title="Data Type" class="hierarchy"/> code ΣC 0..1 CodeableConcept Coded definition of the event #xD; <img src="[binary]" alt="." style="background-color: white; background-color: inherit" title="Reference to another Resource" class="hierarchy"/> subscriptionTopic ΣC 0..1 canonical(SubscriptionTopic) What event #xD; <img src="[binary]" alt="." style="background-color: #F7F7F7; background-color: inherit" title="Choice of Types" class="hierarchy"/> timing[x] ΣC 0..1 Timing of the event #xD; <img src="[binary]" alt="." style="background-color: white; background-color: inherit" title="Data Type" class="hierarchy"/> timingTiming Timing #x…
extension:
  url:
    v: http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status
    l: structuredefinition-standards-status
  value: Code
    v: normative
extension:
  url:
    v: http://hl7.org/fhir/StructureDefinition/structuredefinition-wg
    l: structuredefinition-wg
  value: Code
    v: fhir
url:
  v: http://hl7.org/fhir/StructureDefinition/TriggerDefinition
  l: TriggerDefinition
version:
  v: 6.0.0-ballot4
name:
  v: TriggerDefinition
status:
  v: active
experimental:
  v: false
date:
  v: 2026-06-25T21:05:08+00:00
publisher:
  v: HL7 International / FHIR Infrastructure
contact:
  telecom:
    system:
      v: url
    value:
      v: http://hl7.org/fhir
contact:
  telecom:
    system:
      v: url
    value:
      v: http://www.hl7.org/Special/committees/fiwg
description:
  v: TriggerDefinition Type: A description of a triggering event. Triggering events can be named events, data events, or periodic, as determined by the type element.
jurisdiction:
  coding:
    system:
      v: http://unstats.un.org/unsd/methods/m49/m49.htm
      l: m49.htm
    code:
      v: 001
    display:
      v: World
fhir version:
  v: 6.0.0-ballot4
mapping:
  identity:
    v: rim
  uri:
    v: http://hl7.org/v3
    l: v3
  name:
    v: RIM Mapping
kind:
  v: complex-type
abstract:
  v: false
type:
  v: TriggerDefinition
  l: TriggerDefinition
base definition:
  v: http://hl7.org/fhir/StructureDefinition/DataType
  l: DataType
derivation:
  v: specialization
snapshot:
  element:
    id:
      v: TriggerDefinition
    path:
      v: TriggerDefinition
    short:
      v: Defines an expected trigger for a module
    definition:
      v: A description of a triggering event. Triggering events can be named events, data events, or periodic, as determined by the type element.
    comment:
      v: If an event is a named-event, it means the event is completely pre-coordinated, and no other information can be specified for the event. If the event is one of the data- events, the data and condition elements specify the triggering criteria. The data element specifies the structured component, and the condition element provides additional optional refinement of that structured component. If the event is periodic, the timing element defines when the event is triggered. For both data- and periodic events, a name can be provided as a shorthand for the formal semantics provided by the other elements.
    min:
      v: 0
    max:
      v: *
    base:
      path:
        v: TriggerDefinition
      min:
        v: 0
      max:
        v: *
    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())
      source:
        v: http://hl7.org/fhir/StructureDefinition/Element
        l: Element
    constraint:
      key:
        v: trd-1
      severity:
        v: error
      human:
        v: Either timing, or a data requirement, but not both
      expression:
        v: data.empty() or timing.empty()
      source:
        v: http://hl7.org/fhir/StructureDefinition/TriggerDefinition
        l: TriggerDefinition
    constraint:
      key:
        v: trd-3
      severity:
        v: error
      human:
        v: A named event requires a name or code, a periodic event requires timing, a data event requires data, and a subscription topic requires a reference to a subscription topic
      expression:
        v: (type = 'named-event' implies (name.exists() or code.exists())) and (type = 'periodic' implies timing.exists()) and (type.startsWith('data-') implies data.exists()) and (type = 'subscription-topic' implies subscriptionTopic.exists())
      source:
        v: http://hl7.org/fhir/StructureDefinition/TriggerDefinition
        l: TriggerDefinition
    is modifier:
      v: false
    mapping:
      identity:
        v: rim
      map:
        v: n/a
  element:
    id:
      v: TriggerDefinition.id
    path:
      v: TriggerDefinition.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
    condition:
      v: ele-1
    is modifier:
      v: false
    is summary:
      v: false
    mapping:
      identity:
        v: rim
      map:
        v: n/a
  element:
    id:
      v: TriggerDefinition.extension
    path:
      v: TriggerDefinition.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 managable, 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.

Url
v: string
l: string

v: value

v: url

v: extensions

v: user content

v: 0

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())
source:
  v: http://hl7.org/fhir/StructureDefinition/Element
  l: Element

v: false

v: false

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

id:
  v: TriggerDefinition.type
path:
  v: TriggerDefinition.type
short:
  v: named-event | periodic | data-changed | data-added | data-modified | data-removed | data-accessed | data-access-ended | subscription-topic
definition:
  v: The type of triggering event.
min:
  v: 1
max:
  v: 1
base:
  path:
    v: TriggerDefinition.type
  min:
    v: 1
  max:
    v: 1
type:
  code:
    v: code
    l: code
condition:
  v: trd-3
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())
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
is modifier:
  v: false
is summary:
  v: true
binding:
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/binding-definition
      l: binding-definition
    value: Markdown
      v: The type of trigger.
  extension:
    url:
      v: http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName
      l: elementdefinition-bindingName
    value: String
      v: TriggerType
  strength:
    v: required
  description:
    v: The type of trigger.
  value set:
    v: http://hl7.org/fhir/ValueSet/trigger-type|6.0.0-ballot4
    l: http://hl7.org/fhir/ValueSet/trigger-type

id:
  v: TriggerDefinition.name
path:
  v: TriggerDefinition.name
short:
  v: Name or URI that identifies the event
definition:
  v: A formal name for the event. This may be an absolute URI that identifies the event formally (e.g. from a trigger registry), or a simple relative URI that identifies the event in a local context.
comment:
  v: An event name can be provided for all event types, but is required for named events. If a name is provided for a type other than named events, it is considered to be a shorthand for the semantics described by the formal description of the event.
min:
  v: 0
max:
  v: 1
base:
  path:
    v: TriggerDefinition.name
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: string
    l: string
condition:
  v: trd-3
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())
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
is modifier:
  v: false
is summary:
  v: true

id:
  v: TriggerDefinition.code
path:
  v: TriggerDefinition.code
short:
  v: Coded definition of the event
definition:
  v: A code that identifies the event.
min:
  v: 0
max:
  v: 1
base:
  path:
    v: TriggerDefinition.code
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: CodeableConcept
    l: CodeableConcept
condition:
  v: trd-3
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())
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
is modifier:
  v: false
is summary:
  v: true

id:
  v: TriggerDefinition.subscriptionTopic
path:
  v: TriggerDefinition.subscriptionTopic
short:
  v: What event
definition:
  v: A reference to a SubscriptionTopic resource that defines the event. If this element is provided, no other information about the trigger definition may be supplied.
min:
  v: 0
max:
  v: 1
base:
  path:
    v: TriggerDefinition.subscriptionTopic
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: canonical
    l: canonical
  target profile:
    v: http://hl7.org/fhir/StructureDefinition/SubscriptionTopic
    l: SubscriptionTopic
condition:
  v: trd-3
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())
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
is modifier:
  v: false
is summary:
  v: true

id:
  v: TriggerDefinition.timing[x]
path:
  v: TriggerDefinition.timing[x]
short:
  v: Timing of the event
definition:
  v: The timing of the event (if this is a periodic trigger).
min:
  v: 0
max:
  v: 1
base:
  path:
    v: TriggerDefinition.timing[x]
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: Timing
    l: Timing
type:
  code:
    v: date
    l: date
type:
  code:
    v: dateTime
    l: dateTime
condition:
  v: trd-3
condition:
  v: trd-1
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())
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
is modifier:
  v: false
is summary:
  v: true

id:
  v: TriggerDefinition.data
path:
  v: TriggerDefinition.data
short:
  v: Triggering data of the event (multiple = 'and')
definition:
  v: The triggering data of the event (if this is a data trigger). If more than one data is requirement is specified, then all the data requirements must be true.
comment:
  v: This element shall be present for any data type trigger.
min:
  v: 0
max:
  v: *
base:
  path:
    v: TriggerDefinition.data
  min:
    v: 0
  max:
    v: *
type:
  code:
    v: DataRequirement
    l: DataRequirement
condition:
  v: trd-3
condition:
  v: trd-1
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())
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
is modifier:
  v: false
is summary:
  v: true

id:
  v: TriggerDefinition.condition
path:
  v: TriggerDefinition.condition
short:
  v: Whether the event triggers (boolean expression)
definition:
  v: A boolean-valued expression that is evaluated in the context of the container of the trigger definition and returns whether or not the trigger fires.
comment:
  v: This element can be specified for any type of trigger and provides additional criteria for the trigger. The context available within the condition is based on the type of event. For all events, the current resource will be available as context. In addition, for modification events, the previous resource will also be available. The expression may be inlined, or may be a simple absolute URI, which is a reference to a named expression within a logic library referenced by a library element or extension within the containing resource. If the expression is a FHIR Path expression, it evaluates in the context of a resource of one of the type identified in the data requirement, and may also refer to the variable %previous for delta comparisons on events of type data-changed, data-modified, and data-deleted which will always have the same type.
requirements:
  v: Need to be able to formally describe the triggering criteria.
min:
  v: 0
max:
  v: 1
base:
  path:
    v: TriggerDefinition.condition
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: Expression
    l: Expression
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())
  source:
    v: http://hl7.org/fhir/StructureDefinition/Element
    l: Element
is modifier:
  v: false
is summary:
  v: true

element:
  id:
    v: TriggerDefinition
  path:
    v: TriggerDefinition
  short:
    v: Defines an expected trigger for a module
  definition:
    v: A description of a triggering event. Triggering events can be named events, data events, or periodic, as determined by the type element.
  comment:
    v: If an event is a named-event, it means the event is completely pre-coordinated, and no other information can be specified for the event. If the event is one of the data- events, the data and condition elements specify the triggering criteria. The data element specifies the structured component, and the condition element provides additional optional refinement of that structured component. If the event is periodic, the timing element defines when the event is triggered. For both data- and periodic events, a name can be provided as a shorthand for the formal semantics provided by the other elements.
  min:
    v: 0
  max:
    v: *
  constraint:
    key:
      v: trd-3
    severity:
      v: error
    human:
      v: A named event requires a name or code, a periodic event requires timing, a data event requires data, and a subscription topic requires a reference to a subscription topic
    expression:
      v: (type = 'named-event' implies (name.exists() or code.exists())) and (type = 'periodic' implies timing.exists()) and (type.startsWith('data-') implies data.exists()) and (type = 'subscription-topic' implies subscriptionTopic.exists())
    source:
      v: http://hl7.org/fhir/StructureDefinition/TriggerDefinition
      l: TriggerDefinition
  constraint:
    key:
      v: trd-1
    severity:
      v: error
    human:
      v: Either timing, or a data requirement, but not both
    expression:
      v: data.empty() or timing.empty()
    source:
      v: http://hl7.org/fhir/StructureDefinition/TriggerDefinition
      l: TriggerDefinition
element:
  id:
    v: TriggerDefinition.type
  path:
    v: TriggerDefinition.type
  short:
    v: named-event | periodic | data-changed | data-added | data-modified | data-removed | data-accessed | data-access-ended | subscription-topic
  definition:
    v: The type of triggering event.
  min:
    v: 1
  max:
    v: 1
  type:
    code:
      v: code
      l: code
  condition:
    v: trd-3
  is summary:
    v: true
  binding:
    extension:
      url:
        v: http://hl7.org/fhir/tools/StructureDefinition/binding-definition
        l: binding-definition
      value: Markdown
        v: The type of trigger.
    extension:
      url:
        v: http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName
        l: elementdefinition-bindingName
      value: String
        v: TriggerType
    strength:
      v: required
    description:
      v: The type of trigger.
    value set:
      v: http://hl7.org/fhir/ValueSet/trigger-type|6.0.0-ballot4
      l: http://hl7.org/fhir/ValueSet/trigger-type
element:
  id:
    v: TriggerDefinition.name
  path:
    v: TriggerDefinition.name
  short:
    v: Name or URI that identifies the event
  definition:
    v: A formal name for the event. This may be an absolute URI that identifies the event formally (e.g. from a trigger registry), or a simple relative URI that identifies the event in a local context.
  comment:
    v: An event name can be provided for all event types, but is required for named events. If a name is provided for a type other than named events, it is considered to be a shorthand for the semantics described by the formal description of the event.
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: string
      l: string
  condition:
    v: trd-3
  is summary:
    v: true
element:
  id:
    v: TriggerDefinition.code
  path:
    v: TriggerDefinition.code
  short:
    v: Coded definition of the event
  definition:
    v: A code that identifies the event.
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: CodeableConcept
      l: CodeableConcept
  condition:
    v: trd-3
  is summary:
    v: true
element:
  id:
    v: TriggerDefinition.subscriptionTopic
  path:
    v: TriggerDefinition.subscriptionTopic
  short:
    v: What event
  definition:
    v: A reference to a SubscriptionTopic resource that defines the event. If this element is provided, no other information about the trigger definition may be supplied.
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: canonical
      l: canonical
    target profile:
      v: http://hl7.org/fhir/StructureDefinition/SubscriptionTopic
      l: SubscriptionTopic
  condition:
    v: trd-3
  is summary:
    v: true
element:
  id:
    v: TriggerDefinition.timing[x]
  path:
    v: TriggerDefinition.timing[x]
  short:
    v: Timing of the event
  definition:
    v: The timing of the event (if this is a periodic trigger).
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: Timing
      l: Timing
  type:
    code:
      v: date
      l: date
  type:
    code:
      v: dateTime
      l: dateTime
  condition:
    v: trd-3
  condition:
    v: trd-1
  is summary:
    v: true
element:
  id:
    v: TriggerDefinition.data
  path:
    v: TriggerDefinition.data
  short:
    v: Triggering data of the event (multiple = 'and')
  definition:
    v: The triggering data of the event (if this is a data trigger). If more than one data is requirement is specified, then all the data requirements must be true.
  comment:
    v: This element shall be present for any data type trigger.
  min:
    v: 0
  max:
    v: *
  type:
    code:
      v: DataRequirement
      l: DataRequirement
  condition:
    v: trd-3
  condition:
    v: trd-1

v: true

id:
  v: TriggerDefinition.condition
path:
  v: TriggerDefinition.condition
short:
  v: Whether the event triggers (boolean expression)
definition:
  v: A boolean-valued expression that is evaluated in the context of the container of the trigger definition and returns whether or not the trigger fires.
comment:
  v: This element can be specified for any type of trigger and provides additional criteria for the trigger. The context available within the condition is based on the type of event. For all events, the current resource will be available as context. In addition, for modification events, the previous resource will also be available. The expression may be inlined, or may be a simple absolute URI, which is a reference to a named expression within a logic library referenced by a library element or extension within the containing resource. If the expression is a FHIR Path expression, it evaluates in the context of a resource of one of the type identified in the data requirement, and may also refer to the variable %previous for delta comparisons on events of type data-changed, data-modified, and data-deleted which will always have the same type.
requirements:
  v: Need to be able to formally describe the triggering criteria.
min:
  v: 0
max:
  v: 1
type:
  code:
    v: Expression
    l: Expression
is summary:
  v: true