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: TimingDgMP type: Timing elements: event: {index: 0} repeat: constraint: TimingVarPeriodGtMin: {human: 'For a variable period, the maximum period must be greater than the minimum period.', source: 'http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP', severity: error, expression: periodMax.empty() or period.empty() or period < periodMax} TimingOnlyOneDayOfWeek: human: In a schema that uses only dayOfWeek, no weekday may occur in more than one Dosage element of a resource. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: "( /* Detect DayOfWeek */\n %resource.ofType(MedicationRequest).dosageInstruction\n | %resource.ofType(MedicationDispense).dosageInstruction\n | %resource.ofType(MedicationStatement).dosage\n).all(\n (\n timing.repeat.dayOfWeek.exists() and\n timing.repeat.when.empty() and \n timing.repeat.timeOfDay.empty()\n )\n implies\n (\n (\n (%resource.ofType(MedicationRequest).exists() or %resource.ofType(MedicationDispense).exists())\n implies\n (%resource.dosageInstruction.timing.repeat.dayOfWeek.distinct().count() = %resource.dosageInstruction.timing.repeat.dayOfWeek.count())\n )\n and\n (\n %resource.ofType(MedicationStatement).exists()\n implies\n (%resource.dosage.timing.repeat.dayOfWeek.distinct().count() = %resource.dosage.timing.repeat.dayOfWeek.count())\n )\n )\n)" TimingBoundsUnitMatchesCode: human: boundsDuration.unit must match the UCUM boundsDuration.code (e.g. 'Woche(n)' only with code='wk'). source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP 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)" TimingFrequencyCount: human: If frequency is given together with when, timeOfDay or dayOfWeek, its value must match the number of concrete administrations. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: |- (when.exists() and dayOfWeek.empty() and frequency.exists() implies when.count() = frequency) and (when.exists() and dayOfWeek.exists() and frequency.exists() implies (when.count() * dayOfWeek.count()) = frequency) and (timeOfDay.exists() and dayOfWeek.empty() and frequency.exists() implies timeOfDay.count() = frequency) and (timeOfDay.exists() and dayOfWeek.exists() and frequency.exists() implies (timeOfDay.count() * dayOfWeek.count()) = frequency) and (dayOfWeek.exists() and timeOfDay.empty() and when.empty() and frequency.exists() implies dayOfWeek.count() = frequency) TimingOnlyOneTimeOfDay: human: In a schema that uses only timeOfDay, no time of day may occur in more than one Dosage element of a resource. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: "( /* Detect TimeOfDay */\n %resource.ofType(MedicationRequest).dosageInstruction\n | %resource.ofType(MedicationDispense).dosageInstruction\n | %resource.ofType(MedicationStatement).dosage\n).all(\n (\n timing.repeat.dayOfWeek.empty() and\n timing.repeat.timeOfDay.exists() and\n timing.repeat.when.empty() \n )\n implies\n (\n (\n (%resource.ofType(MedicationRequest).exists() or %resource.ofType(MedicationDispense).exists())\n implies\n (%resource.dosageInstruction.timing.repeat.timeOfDay.distinct().count() = %resource.dosageInstruction.timing.repeat.timeOfDay.count())\n )\n and\n (\n %resource.ofType(MedicationStatement).exists()\n implies\n (%resource.dosage.timing.repeat.timeOfDay.distinct().count() = %resource.dosage.timing.repeat.timeOfDay.count())\n )\n )\n)" TimingOnlyOneTimeForInterval: human: In a schema that combines an interval with timeOfDay or when, all Dosage elements of a resource must use the same period and periodUnit, and each timeOfDay or when value must be unique across them. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: |- /* Detect Interval and Time/4-Schema */ ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ) .all( ( timing.repeat.period.exists() and timing.repeat.periodUnit.exists() and timing.repeat.dayOfWeek.empty() and ( (timing.repeat.timeOfDay.exists() and timing.repeat.when.empty()) or (timing.repeat.when.exists() and timing.repeat.timeOfDay.empty()) ) ) implies ( ( %resource.ofType(MedicationRequest).exists() or %resource.ofType(MedicationDispense).exists() ) implies ( %resource.dosageInstruction.timing.repeat.period.distinct().count() = 1 and %resource.dosageInstruction.timing.repeat.periodUnit.distinct().count() = 1 ) and ( (%resource.dosageInstruction.timing.repeat.timeOfDay.distinct().count() = %resource.dosageInstruction.timing.repeat.timeOfDay.count()) and (%resource.dosageInstruction.timing.repeat.when.distinct().count() = %resource.dosageInstruction.timing.repeat.when.count()) ) ) and ( %resource.ofType(MedicationStatement).exists() implies ( ( %resource.dosage.timing.repeat.period.distinct().count() = 1 and %resource.dosage.timing.repeat.periodUnit.distinct().count() = 1 ) and ( (%resource.dosage.timing.repeat.timeOfDay.distinct().count() = %resource.dosage.timing.repeat.timeOfDay.count()) and (%resource.dosage.timing.repeat.when.distinct().count() = %resource.dosage.timing.repeat.when.count()) ) ) ) ) TimingIntervalOnlyOneFrequency: human: If a dosage is defined by a pure interval, only one Dosage element is allowed in the resource. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: |- ( /* Detect Interval */ %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ) .all( ( timing.repeat.frequency.exists() and timing.repeat.period.exists() and timing.repeat.periodUnit.exists() and timing.repeat.when.empty() and timing.repeat.timeOfDay.empty() and timing.repeat.dayOfWeek.empty() ) /* Only One Dosage allowed for Interval */ implies ( ( ( %resource.ofType(MedicationRequest).exists() or %resource.ofType(MedicationDispense).exists() ) implies ( %resource.dosageInstruction.count() = 1 ) ) and ( %resource.ofType(MedicationStatement).exists() implies %resource.dosage.count() = 1 ) ) ) TimingSingleDosageForWhen: human: If only when is used and dosing is daily, the times of day must be modelled in a single Dosage element. Multiple Dosage elements are only allowed if every element carries a distinct dose, including its data type. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP 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() ) 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() ).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() ).doseAndRate.dose.distinct().count() = ( %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() ).count() ) ) ) TimingOnlyWhenOrTimeOfDay: human: The Dosage elements of a resource must not mix a time of day (timeOfDay) and a part of the day (when). source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: "(\n %resource.ofType(MedicationRequest).dosageInstruction\n | %resource.ofType(MedicationDispense).dosageInstruction\n | %resource.ofType(MedicationStatement).dosage\n).all(\n (timing.repeat.when.exists() or \n timing.repeat.timeOfDay.exists())\n implies\n (\n (\n (%resource.ofType(MedicationRequest).exists() or %resource.ofType(MedicationDispense).exists())\n implies\n (%resource.dosageInstruction.timing.repeat.when.exists() xor %resource.dosageInstruction.timing.repeat.timeOfDay.exists())\n )\n and\n (\n %resource.ofType(MedicationStatement).exists()\n implies\n (%resource.dosage.timing.repeat.when.exists() xor %resource.dosage.timing.repeat.timeOfDay.exists())\n )\n )\n)" TimingSingleDosageForTimeOfDay: human: If only timeOfDay is used and dosing is daily, the times must be modelled in a single Dosage element. Multiple Dosage elements are only allowed if every element carries a distinct dose, including its data type. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP 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() ) 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() ).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() ).doseAndRate.dose.distinct().count() = ( %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() ).count() ) ) ) TimingPeriodOnlyWholeNumber: {human: period and periodMax must be whole numbers; decimal values are not allowed., source: 'http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP', severity: error, expression: (period.exists() implies period mod 1 = 0) and (periodMax.exists() implies periodMax mod 1 = 0)} TimingPeriodUnit: human: periodUnit may only be given together with period. With dayOfWeek, only the redundant weekly statement is allowed; with when or timeOfDay without dayOfWeek, days, weeks or months are allowed. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: |- periodUnit.empty() or ( period.exists() and ( (dayOfWeek.exists() and periodUnit = 'wk') or ( dayOfWeek.empty() and ( (when.empty() and timeOfDay.empty()) or periodUnit = 'd' or periodUnit = 'wk' or periodUnit = 'mo' ) ) ) ) TimingVarFreqGtMin: human: For a variable frequency, the maximum frequency must be greater than the minimum frequency. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: |- frequencyMax.empty() or frequency.empty() or frequency.value.toInteger() < frequencyMax.value.toInteger() TimingFreqOrPeriodGtOne: human: 'If frequency and period are given together, only one of them may exceed 1 - either the frequency including frequencyMax or the period including periodMax. A statement in which both exceed 1, such as ''six times within three hours'', is hard to express in language and is not needed: the same meaning can be conveyed by adapting the period, e.g. ''every 30 minutes''.' source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: |- /* Detect Interval only */ ( timeOfDay.empty() and when.empty() and dayOfWeek.empty() and frequency.exists() and period.exists() ) implies ( ( (frequency > 1 or (frequencyMax.exists() and frequencyMax > 1)) implies ( period = 1 and (periodMax.empty() or periodMax = 1) ) ) and ( (period > 1 or (periodMax.exists() and periodMax > 1)) implies ( frequency = 1 and (frequencyMax.empty() or frequencyMax = 1) ) ) ) TimingOnlyOneBounds: human: All Dosage elements of a resource must state the same bounds (Duration or Period), and either all of them carry a bounds or none. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: |- ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).all( ( ( /* only one different value and code are allowed*/ (%resource.ofType(MedicationRequest).exists() or %resource.ofType(MedicationDispense).exists()) implies %resource.dosageInstruction.timing.repeat.bounds.ofType(Duration).exists().not() or ( (%resource.dosageInstruction.timing.repeat.bounds.ofType(Duration).value.distinct().count() = 1) and (%resource.dosageInstruction.timing.repeat.bounds.ofType(Duration).code.distinct().count() = 1) ) ) and ( %resource.ofType(MedicationStatement).exists() implies %resource.dosage.timing.repeat.bounds.ofType(Duration).exists().not() or ( (%resource.dosage.timing.repeat.bounds.ofType(Duration).value.distinct().count() = 1) and (%resource.dosage.timing.repeat.bounds.ofType(Duration).code.distinct().count() = 1) ) ) and ( /* boundsPeriod: Start und Ende müssen ebenfalls über alle Dosierungen gleich sein. Die Textgenerierung liest den Zeitrahmen nur aus dem ersten Dosage-Element. */ (%resource.ofType(MedicationRequest).exists() or %resource.ofType(MedicationDispense).exists()) implies %resource.dosageInstruction.timing.repeat.bounds.ofType(Period).exists().not() or ( (%resource.dosageInstruction.timing.repeat.bounds.ofType(Period).start.distinct().count() <= 1) and (%resource.dosageInstruction.timing.repeat.bounds.ofType(Period).end.distinct().count() <= 1) ) ) and ( %resource.ofType(MedicationStatement).exists() implies %resource.dosage.timing.repeat.bounds.ofType(Period).exists().not() or ( (%resource.dosage.timing.repeat.bounds.ofType(Period).start.distinct().count() <= 1) and (%resource.dosage.timing.repeat.bounds.ofType(Period).end.distinct().count() <= 1) ) ) ) and ( /* Entweder alle Dosage-Elemente tragen einen Zeitrahmen oder keines. Die Textgenerierung liest ihn nur aus dem ersten Element; ein Element ohne Zeitrahmen wuerde sonst stillschweigend als begrenzt dargestellt. */ ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).timing.repeat.bounds.exists() ) implies ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).all(timing.repeat.bounds.exists()) ) ) ) TimingBoundsDurationOnlyWholeNumber: {human: boundsDuration.value must be a whole number; decimal values are not allowed., source: 'http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP', severity: error, expression: bounds.ofType(Duration).value.empty() or bounds.ofType(Duration).value mod 1 = 0} TimingOnlyOneWhen: human: In a schema that uses only when, no part of the day may occur in more than one Dosage element of a resource. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: |- ( /* Detect when-based schema */ %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() implies ( ( (%resource.ofType(MedicationRequest).exists() or %resource.ofType(MedicationDispense).exists()) implies (%resource.dosageInstruction.timing.repeat.when.distinct().count() = %resource.dosageInstruction.timing.repeat.when.count()) ) and ( %resource.ofType(MedicationStatement).exists() implies (%resource.dosage.timing.repeat.when.distinct().count() = %resource.dosage.timing.repeat.when.count()) ) ) ) TimingOnlyOneType: human: Exactly one of the supported timing schemas is allowed. With dayOfWeek, frequency and the pair period = 1 and periodUnit = wk are optional redundant legacy statements; they do not constitute an interval schema. With when or timeOfDay, frequency is optional; a non-daily period distinguishes the daily schema from a time interval combined with a time-of-day or clock-time reference. A variable frequency (frequencyMax) is reserved for the pure interval, because concrete times or weekdays already determine the number of administrations. source: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP severity: error expression: "/* DayOfWeek only; legacy frequency and the exact 1 wk pair are optional */\n(\n %resource.ofType(MedicationRequest).dosageInstruction |\n %resource.ofType(MedicationDispense).dosageInstruction |\n %resource.ofType(MedicationStatement).dosage\n).all(\n timing.repeat.dayOfWeek.exists() and\n timing.repeat.when.empty() and\n timing.repeat.timeOfDay.empty() and\n timing.repeat.frequencyMax.empty() and\n timing.repeat.periodMax.empty() and\n (\n (timing.repeat.period.empty() and timing.repeat.periodUnit.empty()) or\n (timing.repeat.period = 1 and timing.repeat.periodUnit = 'wk')\n )\n) or\n\n/* Interval only (frequency + period + periodUnit, no when/timeOfDay/dayOfWeek) */\n(\n %resource.ofType(MedicationRequest).dosageInstruction |\n %resource.ofType(MedicationDispense).dosageInstruction |\n %resource.ofType(MedicationStatement).dosage\n).all(\n timing.repeat.frequency.exists() and\n timing.repeat.period.exists() and\n timing.repeat.periodUnit.exists() and\n timing.repeat.when.empty() and\n timing.repeat.timeOfDay.empty() and\n timing.repeat.dayOfWeek.empty()\n) or\n\n/* DayOfWeek and Time/4-Schema; legacy frequency and the exact 1 wk pair are optional */\n(\n %resource.ofType(MedicationRequest).dosageInstruction | \n %resource.ofType(MedicationDispense).dosageInstruction | \n %resource.ofType(MedicationStatement).dosage\n).all(\n timing.repeat.dayOfWeek.exists() and\n (\n (timing.repeat.timeOfDay.exists() and timing.repeat.when.empty()) or\n (timing.repeat.when.exists() and timing.repeat.timeOfDay.empty())\n ) and\n timing.repeat.frequencyMax.empty() and\n timing.repeat.periodMax.empty() and\n (\n (timing.repeat.period.empty() and timing.repeat.periodUnit.empty()) or\n (timing.repeat.period = 1 and timing.repeat.periodUnit = 'wk')\n )\n) or\n\n/* Daily When or TimeOfDay; frequency is optional, a variable frequency is not */\n(\n %resource.ofType(MedicationRequest).dosageInstruction |\n %resource.ofType(MedicationDispense).dosageInstruction |\n %resource.ofType(MedicationStatement).dosage\n).all(\n timing.repeat.dayOfWeek.empty() and\n (\n (timing.repeat.timeOfDay.exists() and timing.repeat.when.empty()) or\n (timing.repeat.when.exists() and timing.repeat.timeOfDay.empty())\n ) and\n timing.repeat.frequencyMax.empty() and\n timing.repeat.periodMax.empty() and\n (\n (timing.repeat.period.empty() and timing.repeat.periodUnit.empty()) or\n (timing.repeat.period = 1 and timing.repeat.periodUnit = 'd')\n )\n) or\n\n/* Non-daily interval combined with When or TimeOfDay; frequency is optional, a\n variable frequency is not */\n(\n %resource.ofType(MedicationRequest).dosageInstruction |\n %resource.ofType(MedicationDispense).dosageInstruction |\n %resource.ofType(MedicationStatement).dosage\n).all(\n timing.repeat.dayOfWeek.empty() and\n (\n (timing.repeat.timeOfDay.exists() and timing.repeat.when.empty()) or\n (timing.repeat.when.exists() and timing.repeat.timeOfDay.empty())\n ) and\n timing.repeat.frequencyMax.empty() and\n timing.repeat.period.exists() and\n timing.repeat.periodUnit.exists() and\n (timing.repeat.periodUnit = 'd' or timing.repeat.periodUnit = 'wk' or timing.repeat.periodUnit = 'mo') and\n (\n timing.repeat.periodUnit != 'd' or\n timing.repeat.period != 1 or\n timing.repeat.periodMax.exists()\n )\n)" index: 1 elements: boundsPeriod: type: Period short: Start- und Endzeitpunkt der Dosieranweisung. choiceOf: bounds index: 16 slicing: slices: boundsPeriod: match: {} schema: {type: Period, short: Start- und Endzeitpunkt der Dosieranweisung., choiceOf: bounds, index: 16} when: binding: {strength: required, valueSet: 'http://ig.fhir.de/igs/medication/ValueSet/TimingWhenDgMP'} index: 25 offset: {short: Zeitversatz, index: 26} periodUnit: short: min | h | d | wk | mo - Zeiteinheit (UCUM) binding: {strength: required, valueSet: 'http://ig.fhir.de/igs/medication/ValueSet/PeriodUnitsOfTimeDgMP'} index: 24 durationMax: {index: 22} duration: {index: 21} bounds: short: Start- und Endzeitpunkt der Dosieranweisung. choices: [boundsPeriod] index: 15 slicing: slices: boundsPeriod: match: {} schema: short: Start- und Endzeitpunkt der Dosieranweisung. choices: [boundsPeriod] index: 15 boundsDuration: type: Duration choiceOf: bounds index: 8 slicing: slices: boundsDuration: match: {} schema: {type: Duration, choiceOf: bounds, index: 8} durationUnit: {index: 23} count: {index: 19} bounds[x]: elements: start: {short: Startdatum mit optionaler Uhrzeit und Zeitzone, index: 17} end: {short: Enddatum mit optionaler Uhrzeit und Zeitzone, index: 18} countMax: {index: 20} code: {index: 27} package_version: 2.0.0-ballot class: complex-type kind: complex-type url: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP base: http://ig.fhir.de/igs/medication/StructureDefinition/TimingDE version: 2.0.0-ballot required: [repeat]