PackagesCanonicalsLogsProblems
    Packages
    hl7.fhir.r2b.core@1.4.0
    http://hl7.org/fhir/StructureDefinition/Timing
description: Base StructureDefinition for Timing Type
package_name: hl7.fhir.r2b.core
derivation: specialization
name: Timing
type: null
elements:
  event:
    isModifier: false
    short: When the event occurs
    index: 0
    type: dateTime
    mustSupport: false
    array: true
    maxLength: 0
    base: {max: '*', min: 0, path: Timing.event}
    isSummary: true
  repeat:
    constraint:
      tim-3: {human: 'Either frequency or when can exist, not both', severity: error, expression: ((period.exists() or frequency.exists()) and when.exists()).not()}
      tim-1: {human: 'if there''s a duration, there needs to be duration units', severity: error, expression: duration.empty() or durationUnit.exists()}
      tim-2: {human: 'if there''s a period, there needs to be period units', severity: error, expression: period.empty() or periodUnit.exists()}
      tim-9: {human: 'If there''s an offset, there must be a when', severity: error, expression: offset.empty() or when.exists()}
      tim-6: {human: 'If there''s a periodMax, there must be a period', severity: error, expression: periodMax.empty() or period.exists()}
      tim-8: {human: 'If there''s a countMax, there must be a count', severity: error, expression: countMax.empty() or count.exists()}
      tim-7: {human: 'If there''s a durationMax, there must be a duration', severity: error, expression: durationMax.empty() or duration.exists()}
    isModifier: false
    short: When the event is to occur
    index: 1
    type: Element
    mustSupport: false
    elements:
      boundsRange:
        isModifier: false
        short: Length/Range of lengths, or (Start and/or end) limits
        index: 5
        type: Range
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: 'Timing.repeat.bounds[x]'}
        choiceOf: bounds
        isSummary: true
      frequencyMax:
        isModifier: false
        short: Event occurs up to frequencyMax times per period
        type: integer
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.frequencyMax}
        isSummary: true
        index: 13
      boundsPeriod:
        isModifier: false
        short: Length/Range of lengths, or (Start and/or end) limits
        index: 6
        type: Period
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: 'Timing.repeat.bounds[x]'}
        choiceOf: bounds
        isSummary: true
      when:
        isModifier: false
        short: Regular life events the event is tied to
        type: code
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.when}
        isSummary: true
        index: 17
      offset:
        isModifier: false
        short: Minutes from event (before or after)
        type: unsignedInt
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.offset}
        isSummary: true
        index: 18
      periodUnit:
        isModifier: false
        short: s | min | h | d | wk | mo | a - unit of time (UCUM)
        type: code
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.periodUnit}
        isSummary: true
        index: 16
      frequency:
        isModifier: false
        short: Event occurs frequency times per period
        index: 12
        type: integer
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.frequency}
        defaultValueInteger: 1
        isSummary: true
      durationMax:
        isModifier: false
        short: How long when it happens (Max)
        index: 10
        comments: For some events the duration is part of the definition of the event (e.g. IV infusions, where the duration is implicit in the specified quantity and rate). For others, it's part of the timing specification (e.g. exercise).
        type: decimal
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.durationMax}
        isSummary: true
      duration:
        constraint:
          tim-4: {human: duration SHALL be a non-negative value, severity: error, expression: duration.exists() implies duration >= 0}
          tim-5: {human: period SHALL be a non-negative value, severity: error, expression: period.exists() implies period >= 0}
        isModifier: false
        short: How long when it happens
        index: 9
        comments: For some events the duration is part of the definition of the event (e.g. IV infusions, where the duration is implicit in the specified quantity and rate). For others, it's part of the timing specification (e.g. exercise).
        type: decimal
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.duration}
        isSummary: true
      boundsQuantity:
        isModifier: false
        short: Length/Range of lengths, or (Start and/or end) limits
        index: 4
        type: Quantity
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: 'Timing.repeat.bounds[x]'}
        choiceOf: bounds
        isSummary: true
      bounds:
        isModifier: false
        short: Length/Range of lengths, or (Start and/or end) limits
        mustSupport: false
        choices: [boundsQuantity, boundsRange, boundsPeriod]
        maxLength: 0
        base: {max: '1', min: 0, path: 'Timing.repeat.bounds[x]'}
        isSummary: true
        index: 3
      durationUnit:
        isModifier: false
        short: s | min | h | d | wk | mo | a - unit of time (UCUM)
        type: code
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.durationUnit}
        isSummary: true
        index: 11
      count:
        isModifier: false
        short: Number of times to repeat
        index: 7
        comments: If you have both bounds and count, then this should be understood as within the bounds period, until count times happens.
        type: integer
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.count}
        isSummary: true
      periodMax:
        isModifier: false
        short: Upper limit of period (3-4 hours)
        type: decimal
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.periodMax}
        isSummary: true
        index: 15
      period:
        constraint:
          tim-5: {human: period SHALL be a non-negative value, severity: error, expression: period.exists() implies period >= 0}
        isModifier: false
        short: Event occurs frequency times per period
        index: 14
        type: decimal
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.period}
        isSummary: true
      countMax:
        isModifier: false
        short: Maximum number of times to repeat
        type: integer
        mustSupport: false
        maxLength: 0
        base: {max: '1', min: 0, path: Timing.repeat.countMax}
        isSummary: true
        index: 8
    maxLength: 0
    base: {max: '1', min: 0, path: Timing.repeat}
    isSummary: true
  code:
    isModifier: false
    short: QD | QOD | Q4H | Q6H | BID | TID | QID | AM | PM +
    index: 19
    comments: BID etc are defined as 'at institutionally specified times'. For example, an institution may choose that BID is "always at 7am and 6pm".  If it is inappropriate for this choice to be made, the code BID should not be used. Instead, a distinct organization-specific code should be used in place of the HL7-defined BID code and/or the a structured representation should be used (in this case, specifying the two event times).
    type: CodeableConcept
    mustSupport: false
    maxLength: 0
    base: {max: '1', min: 0, path: Timing.code}
    isSummary: true
package_version: 1.4.0
class: datatype
kind: datatype
url: http://hl7.org/fhir/StructureDefinition/Timing
base: http://hl7.org/fhir/StructureDefinition/Element
version: null