PackagesCanonicalsLogsProblems
    Packages
    de.fhir.medication@1.0.0
    http://ig.fhir.de/igs/medication/StructureDefinition/TimingDE
description: Beschreibt ein Ereignis, das mehrfach auftreten kann. Zeitpläne werden verwendet, um festzuhalten, wann etwas geplant, erwartet oder angefordert ist. Die häufigste Anwendung ist in Dosierungsanweisungen für Medikamente. Sie werden aber auch für die Planung verschiedener Versorgungsleistungen genutzt und können zur Dokumentation von bereits erfolgten oder laufenden Aktivitäten verwendet werden.
package_name: de.fhir.medication
derivation: constraint
name: TimingDE
type: Timing
elements:
  repeat:
    short: Wann das Ereignis stattfinden soll
    constraint:
      TimingSingleDosageForTimeOfDay:
        human: Wenn nur timeOfDay verwendet wird und täglich dosiert wird, ist die Angabe in einem einzigen Dosage-Element zu modellieren. Mehrere Dosage-Elemente sind nur zulässig, wenn sich die Dosis (Wert) unterscheidet.
        source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDE
        severity: error
        expression: |
          (
            %resource.ofType(MedicationRequest).dosageInstruction
            | %resource.ofType(MedicationDispense).dosageInstruction
            | %resource.ofType(MedicationStatement).dosage
          ).all(
            (
              timing.repeat.dayOfWeek.empty() and
              timing.repeat.timeOfDay.exists() and
              timing.repeat.when.empty() and
              (timing.repeat.period.exists() and timing.repeat.period = 1) and
              (timing.repeat.periodUnit.exists() and timing.repeat.periodUnit = 'd')
            )
            implies
            (
              (
                (
                  %resource.ofType(MedicationRequest).dosageInstruction
                  | %resource.ofType(MedicationDispense).dosageInstruction
                  | %resource.ofType(MedicationStatement).dosage
                ).where(
                  timing.repeat.dayOfWeek.empty() and timing.repeat.timeOfDay.exists() and timing.repeat.when.empty() and (timing.repeat.period.exists() and timing.repeat.period = 1) and (timing.repeat.periodUnit.exists() and timing.repeat.periodUnit = 'd')
                ).count() = 1
              )
              or
              (
                (
                  %resource.ofType(MedicationRequest).dosageInstruction
                  | %resource.ofType(MedicationDispense).dosageInstruction
                  | %resource.ofType(MedicationStatement).dosage
                ).where(
                  timing.repeat.dayOfWeek.empty() and timing.repeat.timeOfDay.exists() and timing.repeat.when.empty() and (timing.repeat.period.exists() and timing.repeat.period = 1) and (timing.repeat.periodUnit.exists() and timing.repeat.periodUnit = 'd')
                ).doseAndRate.dose.ofType(Quantity).value.distinct().count() > 1
              )
            )
          )
      TimingSingleDosageForWhen:
        human: Wenn nur when verwendet wird und täglich dosiert wird, ist die Angabe in einem einzigen Dosage-Element zu modellieren. Mehrere Dosage-Elemente sind nur zulässig, wenn sich die Dosis (Wert) unterscheidet.
        source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDE
        severity: error
        expression: |
          (
            %resource.ofType(MedicationRequest).dosageInstruction
            | %resource.ofType(MedicationDispense).dosageInstruction
            | %resource.ofType(MedicationStatement).dosage
          ).all(
            (
              timing.repeat.dayOfWeek.empty() and
              timing.repeat.when.exists() and
              timing.repeat.timeOfDay.empty() and
              (timing.repeat.period.exists() and timing.repeat.period = 1) and
              (timing.repeat.periodUnit.exists() and timing.repeat.periodUnit = 'd')
            )
            implies
            (
              (
                (
                  %resource.ofType(MedicationRequest).dosageInstruction
                  | %resource.ofType(MedicationDispense).dosageInstruction
                  | %resource.ofType(MedicationStatement).dosage
                ).where(
                  timing.repeat.dayOfWeek.empty() and timing.repeat.when.exists() and timing.repeat.timeOfDay.empty() and (timing.repeat.period.exists() and timing.repeat.period = 1) and (timing.repeat.periodUnit.exists() and timing.repeat.periodUnit = 'd')
                ).count() = 1
              )
              or
              (
                (
                  %resource.ofType(MedicationRequest).dosageInstruction
                  | %resource.ofType(MedicationDispense).dosageInstruction
                  | %resource.ofType(MedicationStatement).dosage
                ).where(
                  timing.repeat.dayOfWeek.empty() and timing.repeat.when.exists() and timing.repeat.timeOfDay.empty() and (timing.repeat.period.exists() and timing.repeat.period = 1) and (timing.repeat.periodUnit.exists() and timing.repeat.periodUnit = 'd')
                ).doseAndRate.dose.ofType(Quantity).value.distinct().count() > 1
              )
            )
          )
      TimingBoundsUnitMatchesCode:
        human: boundsDuration.unit muss zur UCUM boundsDuration.code passen (z. B. 'Woche(n)' nur mit code='wk').
        source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDE
        severity: error
        expression: "bounds.ofType(Duration).exists().not() or (\n  (\n    bounds.ofType(Duration).code = 'd'\n    implies \n    (\n      bounds.ofType(Duration).unit = 'Tag(e)' or\n      bounds.ofType(Duration).unit = 'Tag' or\n      bounds.ofType(Duration).unit = 'Tage'\n    )\n  ) and (\n    bounds.ofType(Duration).code = 'wk'\n    implies \n    (\n      bounds.ofType(Duration).unit = 'Woche(n)' or\n      bounds.ofType(Duration).unit = 'Woche' or\n      bounds.ofType(Duration).unit = 'Wochen'\n    )\n  ) and (\n    bounds.ofType(Duration).code = 'mo'\n    implies \n    (\n      bounds.ofType(Duration).unit = 'Monat(e)' or\n      bounds.ofType(Duration).unit = 'Monat' or\n      bounds.ofType(Duration).unit = 'Monate'\n    )\n  ) and (\n    bounds.ofType(Duration).code = 'a'\n    implies \n    (\n      bounds.ofType(Duration).unit = 'Jahr(e)' or\n      bounds.ofType(Duration).unit = 'Jahr' or\n      bounds.ofType(Duration).unit = 'Jahre'\n    )\n  )\n)"
    mustSupport: true
    index: 0
    elements:
      when: {short: Code für den Zeitraum des Auftretens, mustSupport: true, index: 15}
      periodUnit: {short: s | min | h | d | wk | mo | a - Zeiteinheit (UCUM), mustSupport: true, index: 12}
      frequency: {short: Ereignis tritt frequency-mal pro Zeitraum auf, mustSupport: true, index: 10}
      bounds:
        short: Länge/Bereich der Längen oder (Start- und/oder End-)Grenzen
        mustSupport: true
        choices: []
        index: 2
        slicing:
          rules: open
          ordered: false
          discriminator:
          - {path: $this, type: type}
          min: null
          slices:
            boundsDuration:
              match: {}
              schema:
                short: Dauer der Dosieranweisung ausgedrückt in UCUM-Einheiten
                mustSupport: true
                choices: [boundsDuration]
                index: 4
              min: 0
              max: 1
      boundsDuration:
        short: Dauer der Dosieranweisung ausgedrückt in UCUM-Einheiten
        type: Duration
        mustSupport: true
        choiceOf: bounds
        index: 5
        slicing:
          slices:
            boundsDuration:
              match: {}
              schema: {short: Dauer der Dosieranweisung ausgedrückt in UCUM-Einheiten, type: Duration, mustSupport: true, choiceOf: bounds, index: 5}
              min: 0
              max: 1
      dayOfWeek: {mustSupport: true, index: 13}
      bounds[x]:
        elements:
          value: {mustSupport: true, index: 6}
          unit: {mustSupport: true, index: 7}
          system:
            short: UCUM-Einheit für die Dauer
            pattern: {type: Uri, value: 'http://unitsofmeasure.org'}
            mustSupport: true
            index: 8
          code: {mustSupport: true, index: 9}
      period: {short: Ereignis tritt frequency-mal pro Zeitraum auf, mustSupport: true, index: 11}
      timeOfDay: {short: Tageszeit für die Aktion, mustSupport: true, index: 14}
package_version: 1.0.0
class: complex-type
kind: complex-type
url: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDE
base: http://hl7.org/fhir/StructureDefinition/Timing
version: 1.0.0