001package org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext40_50;
004import org.hl7.fhir.convertors.conv40_50.datatypes40_50.BackboneElement40_50;
005import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.*;
006import org.hl7.fhir.exceptions.FHIRException;
007
008import java.util.stream.Collectors;
009
010public class Timing40_50 {
011  public static org.hl7.fhir.r4.model.Timing convertTiming(org.hl7.fhir.r5.model.Timing src) throws FHIRException {
012    if (src == null) return null;
013    org.hl7.fhir.r4.model.Timing tgt = new org.hl7.fhir.r4.model.Timing();
014    BackboneElement40_50.copyBackboneElement(src, tgt);
015    for (org.hl7.fhir.r5.model.DateTimeType t : src.getEvent()) tgt.getEvent().add(DateTime40_50.convertDateTime(t));
016    if (src.hasRepeat()) tgt.setRepeat(convertTimingRepeatComponent(src.getRepeat()));
017    if (src.hasCode()) tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
018    return tgt;
019  }
020
021  public static org.hl7.fhir.r5.model.Timing convertTiming(org.hl7.fhir.r4.model.Timing src) throws FHIRException {
022    if (src == null) return null;
023    org.hl7.fhir.r5.model.Timing tgt = new org.hl7.fhir.r5.model.Timing();
024    BackboneElement40_50.copyBackboneElement(src, tgt);
025    for (org.hl7.fhir.r4.model.DateTimeType t : src.getEvent()) tgt.getEvent().add(DateTime40_50.convertDateTime(t));
026    if (src.hasRepeat()) tgt.setRepeat(convertTimingRepeatComponent(src.getRepeat()));
027    if (src.hasCode()) tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
028    return tgt;
029  }
030
031  public static org.hl7.fhir.r5.model.Timing.TimingRepeatComponent convertTimingRepeatComponent(org.hl7.fhir.r4.model.Timing.TimingRepeatComponent src) throws FHIRException {
032    if (src == null) return null;
033    org.hl7.fhir.r5.model.Timing.TimingRepeatComponent tgt = new org.hl7.fhir.r5.model.Timing.TimingRepeatComponent();
034    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
035    if (src.hasBounds())
036      tgt.setBounds(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getBounds()));
037    if (src.hasCount()) tgt.setCountElement(PositiveInt40_50.convertPositiveInt(src.getCountElement()));
038    if (src.hasCountMax()) tgt.setCountMaxElement(PositiveInt40_50.convertPositiveInt(src.getCountMaxElement()));
039    if (src.hasDuration()) tgt.setDurationElement(Decimal40_50.convertDecimal(src.getDurationElement()));
040    if (src.hasDurationMax()) tgt.setDurationMaxElement(Decimal40_50.convertDecimal(src.getDurationMaxElement()));
041    if (src.hasDurationUnit()) tgt.setDurationUnitElement(convertUnitsOfTime(src.getDurationUnitElement()));
042    if (src.hasFrequency()) tgt.setFrequencyElement(PositiveInt40_50.convertPositiveInt(src.getFrequencyElement()));
043    if (src.hasFrequencyMax())
044      tgt.setFrequencyMaxElement(PositiveInt40_50.convertPositiveInt(src.getFrequencyMaxElement()));
045    if (src.hasPeriod()) tgt.setPeriodElement(Decimal40_50.convertDecimal(src.getPeriodElement()));
046    if (src.hasPeriodMax()) tgt.setPeriodMaxElement(Decimal40_50.convertDecimal(src.getPeriodMaxElement()));
047    if (src.hasPeriodUnit()) tgt.setPeriodUnitElement(convertUnitsOfTime(src.getPeriodUnitElement()));
048    tgt.setDayOfWeek(src.getDayOfWeek().stream().map(Timing40_50::convertDayOfWeek).collect(Collectors.toList()));
049    if (src.hasWhen())
050      tgt.setWhen(src.getWhen().stream().map(Timing40_50::convertEventTiming).collect(Collectors.toList()));
051    for (org.hl7.fhir.r4.model.TimeType t : src.getTimeOfDay()) tgt.getTimeOfDay().add(Time40_50.convertTime(t));
052    if (src.hasOffset()) tgt.setOffsetElement(UnsignedInt40_50.convertUnsignedInt(src.getOffsetElement()));
053    return tgt;
054  }
055
056  public static org.hl7.fhir.r4.model.Timing.TimingRepeatComponent convertTimingRepeatComponent(org.hl7.fhir.r5.model.Timing.TimingRepeatComponent src) throws FHIRException {
057    if (src == null) return null;
058    org.hl7.fhir.r4.model.Timing.TimingRepeatComponent tgt = new org.hl7.fhir.r4.model.Timing.TimingRepeatComponent();
059    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
060    if (src.hasBounds())
061      tgt.setBounds(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getBounds()));
062    if (src.hasCount()) tgt.setCountElement(PositiveInt40_50.convertPositiveInt(src.getCountElement()));
063    if (src.hasCountMax()) tgt.setCountMaxElement(PositiveInt40_50.convertPositiveInt(src.getCountMaxElement()));
064    if (src.hasDuration()) tgt.setDurationElement(Decimal40_50.convertDecimal(src.getDurationElement()));
065    if (src.hasDurationMax()) tgt.setDurationMaxElement(Decimal40_50.convertDecimal(src.getDurationMaxElement()));
066    if (src.hasDurationUnit()) tgt.setDurationUnitElement(convertUnitsOfTime(src.getDurationUnitElement()));
067    if (src.hasFrequency()) tgt.setFrequencyElement(PositiveInt40_50.convertPositiveInt(src.getFrequencyElement()));
068    if (src.hasFrequencyMax())
069      tgt.setFrequencyMaxElement(PositiveInt40_50.convertPositiveInt(src.getFrequencyMaxElement()));
070    if (src.hasPeriod()) tgt.setPeriodElement(Decimal40_50.convertDecimal(src.getPeriodElement()));
071    if (src.hasPeriodMax()) tgt.setPeriodMaxElement(Decimal40_50.convertDecimal(src.getPeriodMaxElement()));
072    if (src.hasPeriodUnit()) tgt.setPeriodUnitElement(convertUnitsOfTime(src.getPeriodUnitElement()));
073    tgt.setDayOfWeek(src.getDayOfWeek().stream().map(Timing40_50::convertDayOfWeek).collect(Collectors.toList()));
074    if (src.hasWhen())
075      tgt.setWhen(src.getWhen().stream().map(Timing40_50::convertEventTiming).collect(Collectors.toList()));
076    for (org.hl7.fhir.r5.model.TimeType t : src.getTimeOfDay()) tgt.getTimeOfDay().add(Time40_50.convertTime(t));
077    if (src.hasOffset()) tgt.setOffsetElement(UnsignedInt40_50.convertUnsignedInt(src.getOffsetElement()));
078    return tgt;
079  }
080
081  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Timing.UnitsOfTime> convertUnitsOfTime(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.UnitsOfTime> src) throws FHIRException {
082    if (src == null || src.isEmpty()) return null;
083    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Timing.UnitsOfTime> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.Timing.UnitsOfTimeEnumFactory());
084    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
085    if (src.getValue() == null) {
086      tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.NULL);
087    } else {
088      switch (src.getValue()) {
089        case S:
090          tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.S);
091          break;
092        case MIN:
093          tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.MIN);
094          break;
095        case H:
096          tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.H);
097          break;
098        case D:
099          tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.D);
100          break;
101        case WK:
102          tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.WK);
103          break;
104        case MO:
105          tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.MO);
106          break;
107        case A:
108          tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.A);
109          break;
110        default:
111          tgt.setValue(org.hl7.fhir.r5.model.Timing.UnitsOfTime.NULL);
112          break;
113      }
114    }
115    return tgt;
116  }
117
118  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.UnitsOfTime> convertUnitsOfTime(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Timing.UnitsOfTime> src) throws FHIRException {
119    if (src == null || src.isEmpty()) return null;
120    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.UnitsOfTime> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Timing.UnitsOfTimeEnumFactory());
121    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
122    if (src.getValue() == null) {
123      tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.NULL);
124    } else {
125      switch (src.getValue()) {
126        case S:
127          tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.S);
128          break;
129        case MIN:
130          tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.MIN);
131          break;
132        case H:
133          tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.H);
134          break;
135        case D:
136          tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.D);
137          break;
138        case WK:
139          tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.WK);
140          break;
141        case MO:
142          tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.MO);
143          break;
144        case A:
145          tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.A);
146          break;
147        default:
148          tgt.setValue(org.hl7.fhir.r4.model.Timing.UnitsOfTime.NULL);
149          break;
150      }
151    }
152    return tgt;
153  }
154
155  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.DaysOfWeek> convertDayOfWeek(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.DayOfWeek> src) throws FHIRException {
156    if (src == null || src.isEmpty()) return null;
157    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.DaysOfWeek> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.Enumerations.DaysOfWeekEnumFactory());
158    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
159    if (src.getValue() == null) {
160      tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.NULL);
161    } else {
162      switch (src.getValue()) {
163        case MON:
164          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.MON);
165          break;
166        case TUE:
167          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.TUE);
168          break;
169        case WED:
170          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.WED);
171          break;
172        case THU:
173          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.THU);
174          break;
175        case FRI:
176          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.FRI);
177          break;
178        case SAT:
179          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.SAT);
180          break;
181        case SUN:
182          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.SUN);
183          break;
184        default:
185          tgt.setValue(org.hl7.fhir.r5.model.Enumerations.DaysOfWeek.NULL);
186          break;
187      }
188    }
189    return tgt;
190  }
191
192  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.DayOfWeek> convertDayOfWeek(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.DaysOfWeek> src) throws FHIRException {
193    if (src == null || src.isEmpty()) return null;
194    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.DayOfWeek> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Timing.DayOfWeekEnumFactory());
195    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
196    if (src.getValue() == null) {
197      tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.NULL);
198    } else {
199      switch (src.getValue()) {
200        case MON:
201          tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.MON);
202          break;
203        case TUE:
204          tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.TUE);
205          break;
206        case WED:
207          tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.WED);
208          break;
209        case THU:
210          tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.THU);
211          break;
212        case FRI:
213          tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.FRI);
214          break;
215        case SAT:
216          tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.SAT);
217          break;
218        case SUN:
219          tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.SUN);
220          break;
221        default:
222          tgt.setValue(org.hl7.fhir.r4.model.Timing.DayOfWeek.NULL);
223          break;
224      }
225    }
226    return tgt;
227  }
228
229  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Timing.EventTiming> convertEventTiming(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.EventTiming> src) throws FHIRException {
230    if (src == null || src.isEmpty()) return null;
231    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Timing.EventTiming> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.Timing.EventTimingEnumFactory());
232    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
233    if (src.getValue() == null) {
234      tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.NULL);
235    } else {
236      switch (src.getValue()) {
237        case MORN:
238          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.MORN);
239          break;
240        case MORN_EARLY:
241          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.MORN_EARLY);
242          break;
243        case MORN_LATE:
244          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.MORN_LATE);
245          break;
246        case NOON:
247          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.NOON);
248          break;
249        case AFT:
250          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.AFT);
251          break;
252        case AFT_EARLY:
253          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.AFT_EARLY);
254          break;
255        case AFT_LATE:
256          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.AFT_LATE);
257          break;
258        case EVE:
259          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.EVE);
260          break;
261        case EVE_EARLY:
262          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.EVE_EARLY);
263          break;
264        case EVE_LATE:
265          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.EVE_LATE);
266          break;
267        case NIGHT:
268          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.NIGHT);
269          break;
270        case PHS:
271          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.PHS);
272          break;
273        case HS:
274          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.HS);
275          break;
276        case WAKE:
277          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.WAKE);
278          break;
279        case C:
280          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.C);
281          break;
282        case CM:
283          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.CM);
284          break;
285        case CD:
286          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.CD);
287          break;
288        case CV:
289          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.CV);
290          break;
291        case AC:
292          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.AC);
293          break;
294        case ACM:
295          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.ACM);
296          break;
297        case ACD:
298          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.ACD);
299          break;
300        case ACV:
301          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.ACV);
302          break;
303        case PC:
304          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.PC);
305          break;
306        case PCM:
307          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.PCM);
308          break;
309        case PCD:
310          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.PCD);
311          break;
312        case PCV:
313          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.PCV);
314          break;
315        default:
316          tgt.setValue(org.hl7.fhir.r5.model.Timing.EventTiming.NULL);
317          break;
318      }
319    }
320    return tgt;
321  }
322
323  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.EventTiming> convertEventTiming(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Timing.EventTiming> src) throws FHIRException {
324    if (src == null || src.isEmpty()) return null;
325    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Timing.EventTiming> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Timing.EventTimingEnumFactory());
326    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
327    if (src.getValue() == null) {
328      tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.NULL);
329    } else {
330      switch (src.getValue()) {
331        case MORN:
332          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.MORN);
333          break;
334        case MORN_EARLY:
335          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.MORN_EARLY);
336          break;
337        case MORN_LATE:
338          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.MORN_LATE);
339          break;
340        case NOON:
341          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.NOON);
342          break;
343        case AFT:
344          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.AFT);
345          break;
346        case AFT_EARLY:
347          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.AFT_EARLY);
348          break;
349        case AFT_LATE:
350          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.AFT_LATE);
351          break;
352        case EVE:
353          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.EVE);
354          break;
355        case EVE_EARLY:
356          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.EVE_EARLY);
357          break;
358        case EVE_LATE:
359          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.EVE_LATE);
360          break;
361        case NIGHT:
362          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.NIGHT);
363          break;
364        case PHS:
365          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.PHS);
366          break;
367        case HS:
368          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.HS);
369          break;
370        case WAKE:
371          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.WAKE);
372          break;
373        case C:
374          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.C);
375          break;
376        case CM:
377          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.CM);
378          break;
379        case CD:
380          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.CD);
381          break;
382        case CV:
383          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.CV);
384          break;
385        case AC:
386          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.AC);
387          break;
388        case ACM:
389          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.ACM);
390          break;
391        case ACD:
392          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.ACD);
393          break;
394        case ACV:
395          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.ACV);
396          break;
397        case PC:
398          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.PC);
399          break;
400        case PCM:
401          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.PCM);
402          break;
403        case PCD:
404          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.PCD);
405          break;
406        case PCV:
407          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.PCV);
408          break;
409        default:
410          tgt.setValue(org.hl7.fhir.r4.model.Timing.EventTiming.NULL);
411          break;
412      }
413    }
414    return tgt;
415  }
416}