001package org.hl7.fhir.convertors.conv40_50.datatypes40_50.special40_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.general40_50.Coding40_50;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.*;
007import org.hl7.fhir.convertors.conv40_50.resources40_50.Enumerations40_50;
008import org.hl7.fhir.exceptions.FHIRException;
009
010import java.util.stream.Collectors;
011
012public class ElementDefinition40_50 {
013  public static org.hl7.fhir.r5.model.ElementDefinition convertElementDefinition(org.hl7.fhir.r4.model.ElementDefinition src) throws FHIRException {
014    if (src == null) return null;
015    org.hl7.fhir.r5.model.ElementDefinition tgt = new org.hl7.fhir.r5.model.ElementDefinition();
016    BackboneElement40_50.copyBackboneElement(src, tgt);
017    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
018    tgt.setRepresentation(src.getRepresentation().stream().map(ElementDefinition40_50::convertPropertyRepresentation).collect(Collectors.toList()));
019    if (src.hasSliceName()) tgt.setSliceNameElement(String40_50.convertString(src.getSliceNameElement()));
020    if (src.hasSliceIsConstraining())
021      tgt.setSliceIsConstrainingElement(Boolean40_50.convertBoolean(src.getSliceIsConstrainingElement()));
022    if (src.hasLabel()) tgt.setLabelElement(String40_50.convertString(src.getLabelElement()));
023    for (org.hl7.fhir.r4.model.Coding t : src.getCode()) tgt.addCode(Coding40_50.convertCoding(t));
024    if (src.hasSlicing()) tgt.setSlicing(convertElementDefinitionSlicingComponent(src.getSlicing()));
025    if (src.hasShort()) tgt.setShortElement(String40_50.convertString(src.getShortElement()));
026    if (src.hasDefinition()) tgt.setDefinitionElement(MarkDown40_50.convertMarkdown(src.getDefinitionElement()));
027    if (src.hasComment()) tgt.setCommentElement(MarkDown40_50.convertMarkdown(src.getCommentElement()));
028    if (src.hasRequirements()) tgt.setRequirementsElement(MarkDown40_50.convertMarkdown(src.getRequirementsElement()));
029    for (org.hl7.fhir.r4.model.StringType t : src.getAlias()) tgt.getAlias().add(String40_50.convertString(t));
030    if (src.hasMin()) tgt.setMinElement(UnsignedInt40_50.convertUnsignedInt(src.getMinElement()));
031    if (src.hasMax()) tgt.setMaxElement(String40_50.convertString(src.getMaxElement()));
032    if (src.hasBase()) tgt.setBase(convertElementDefinitionBaseComponent(src.getBase()));
033    if (src.hasContentReference())
034      tgt.setContentReferenceElement(Uri40_50.convertUri(src.getContentReferenceElement()));
035    for (org.hl7.fhir.r4.model.ElementDefinition.TypeRefComponent t : src.getType())
036      tgt.addType(convertTypeRefComponent(t));
037    if (src.hasDefaultValue())
038      tgt.setDefaultValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getDefaultValue()));
039    if (src.hasMeaningWhenMissing())
040      tgt.setMeaningWhenMissingElement(MarkDown40_50.convertMarkdown(src.getMeaningWhenMissingElement()));
041    if (src.hasOrderMeaning()) tgt.setOrderMeaningElement(String40_50.convertString(src.getOrderMeaningElement()));
042    if (src.hasFixed())
043      tgt.setFixed(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getFixed()));
044    if (src.hasPattern())
045      tgt.setPattern(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getPattern()));
046    for (org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionExampleComponent t : src.getExample())
047      tgt.addExample(convertElementDefinitionExampleComponent(t));
048    if (src.hasMinValue())
049      tgt.setMinValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getMinValue()));
050    if (src.hasMaxValue())
051      tgt.setMaxValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getMaxValue()));
052    if (src.hasMaxLength()) tgt.setMaxLengthElement(Integer40_50.convertInteger(src.getMaxLengthElement()));
053    for (org.hl7.fhir.r4.model.IdType t : src.getCondition()) tgt.getCondition().add(Id40_50.convertId(t));
054    for (org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionConstraintComponent t : src.getConstraint())
055      tgt.addConstraint(convertElementDefinitionConstraintComponent(t));
056    if (src.hasMustSupport()) tgt.setMustSupportElement(Boolean40_50.convertBoolean(src.getMustSupportElement()));
057    if (src.hasIsModifier()) tgt.setIsModifierElement(Boolean40_50.convertBoolean(src.getIsModifierElement()));
058    if (src.hasIsModifierReason())
059      tgt.setIsModifierReasonElement(String40_50.convertString(src.getIsModifierReasonElement()));
060    if (src.hasIsSummary()) tgt.setIsSummaryElement(Boolean40_50.convertBoolean(src.getIsSummaryElement()));
061    if (src.hasBinding()) tgt.setBinding(convertElementDefinitionBindingComponent(src.getBinding()));
062    for (org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionMappingComponent t : src.getMapping())
063      tgt.addMapping(convertElementDefinitionMappingComponent(t));
064    return tgt;
065  }
066
067  public static org.hl7.fhir.r4.model.ElementDefinition convertElementDefinition(org.hl7.fhir.r5.model.ElementDefinition src) throws FHIRException {
068    if (src == null) return null;
069    org.hl7.fhir.r4.model.ElementDefinition tgt = new org.hl7.fhir.r4.model.ElementDefinition();
070    BackboneElement40_50.copyBackboneElement(src, tgt);
071    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
072    tgt.setRepresentation(src.getRepresentation().stream().map(ElementDefinition40_50::convertPropertyRepresentation).collect(Collectors.toList()));
073    if (src.hasSliceName()) tgt.setSliceNameElement(String40_50.convertString(src.getSliceNameElement()));
074    if (src.hasSliceIsConstraining())
075      tgt.setSliceIsConstrainingElement(Boolean40_50.convertBoolean(src.getSliceIsConstrainingElement()));
076    if (src.hasLabel()) tgt.setLabelElement(String40_50.convertString(src.getLabelElement()));
077    for (org.hl7.fhir.r5.model.Coding t : src.getCode()) tgt.addCode(Coding40_50.convertCoding(t));
078    if (src.hasSlicing()) tgt.setSlicing(convertElementDefinitionSlicingComponent(src.getSlicing()));
079    if (src.hasShort()) tgt.setShortElement(String40_50.convertString(src.getShortElement()));
080    if (src.hasDefinition()) tgt.setDefinitionElement(MarkDown40_50.convertMarkdown(src.getDefinitionElement()));
081    if (src.hasComment()) tgt.setCommentElement(MarkDown40_50.convertMarkdown(src.getCommentElement()));
082    if (src.hasRequirements()) tgt.setRequirementsElement(MarkDown40_50.convertMarkdown(src.getRequirementsElement()));
083    for (org.hl7.fhir.r5.model.StringType t : src.getAlias()) tgt.getAlias().add(String40_50.convertString(t));
084    if (src.hasMin()) tgt.setMinElement(UnsignedInt40_50.convertUnsignedInt(src.getMinElement()));
085    if (src.hasMax()) tgt.setMaxElement(String40_50.convertString(src.getMaxElement()));
086    if (src.hasBase()) tgt.setBase(convertElementDefinitionBaseComponent(src.getBase()));
087    if (src.hasContentReference())
088      tgt.setContentReferenceElement(Uri40_50.convertUri(src.getContentReferenceElement()));
089    for (org.hl7.fhir.r5.model.ElementDefinition.TypeRefComponent t : src.getType())
090      tgt.addType(convertTypeRefComponent(t));
091    if (src.hasDefaultValue())
092      tgt.setDefaultValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getDefaultValue()));
093    if (src.hasMeaningWhenMissing())
094      tgt.setMeaningWhenMissingElement(MarkDown40_50.convertMarkdown(src.getMeaningWhenMissingElement()));
095    if (src.hasOrderMeaning()) tgt.setOrderMeaningElement(String40_50.convertString(src.getOrderMeaningElement()));
096    if (src.hasFixed())
097      tgt.setFixed(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getFixed()));
098    if (src.hasPattern())
099      tgt.setPattern(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getPattern()));
100    for (org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionExampleComponent t : src.getExample())
101      tgt.addExample(convertElementDefinitionExampleComponent(t));
102    if (src.hasMinValue())
103      tgt.setMinValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getMinValue()));
104    if (src.hasMaxValue())
105      tgt.setMaxValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getMaxValue()));
106    if (src.hasMaxLength()) tgt.setMaxLengthElement(Integer40_50.convertInteger(src.getMaxLengthElement()));
107    for (org.hl7.fhir.r5.model.IdType t : src.getCondition()) tgt.getCondition().add(Id40_50.convertId(t));
108    for (org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionConstraintComponent t : src.getConstraint())
109      tgt.addConstraint(convertElementDefinitionConstraintComponent(t));
110    if (src.hasMustSupport()) tgt.setMustSupportElement(Boolean40_50.convertBoolean(src.getMustSupportElement()));
111    if (src.hasIsModifier()) tgt.setIsModifierElement(Boolean40_50.convertBoolean(src.getIsModifierElement()));
112    if (src.hasIsModifierReason())
113      tgt.setIsModifierReasonElement(String40_50.convertString(src.getIsModifierReasonElement()));
114    if (src.hasIsSummary()) tgt.setIsSummaryElement(Boolean40_50.convertBoolean(src.getIsSummaryElement()));
115    if (src.hasBinding()) tgt.setBinding(convertElementDefinitionBindingComponent(src.getBinding()));
116    for (org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionMappingComponent t : src.getMapping())
117      tgt.addMapping(convertElementDefinitionMappingComponent(t));
118    return tgt;
119  }
120
121  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation> convertPropertyRepresentation(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation> src) throws FHIRException {
122    if (src == null || src.isEmpty()) return null;
123    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentationEnumFactory());
124    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
125    if (src.getValue() == null) {
126      tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation.NULL);
127    } else {
128      switch (src.getValue()) {
129        case XMLATTR:
130          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation.XMLATTR);
131          break;
132        case XMLTEXT:
133          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation.XMLTEXT);
134          break;
135        case TYPEATTR:
136          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation.TYPEATTR);
137          break;
138        case CDATEXT:
139          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation.CDATEXT);
140          break;
141        case XHTML:
142          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation.XHTML);
143          break;
144        default:
145          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation.NULL);
146          break;
147      }
148    }
149    return tgt;
150  }
151
152  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation> convertPropertyRepresentation(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.PropertyRepresentation> src) throws FHIRException {
153    if (src == null || src.isEmpty()) return null;
154    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentationEnumFactory());
155    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
156    if (src.getValue() == null) {
157      tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation.NULL);
158    } else {
159      switch (src.getValue()) {
160        case XMLATTR:
161          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation.XMLATTR);
162          break;
163        case XMLTEXT:
164          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation.XMLTEXT);
165          break;
166        case TYPEATTR:
167          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation.TYPEATTR);
168          break;
169        case CDATEXT:
170          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation.CDATEXT);
171          break;
172        case XHTML:
173          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation.XHTML);
174          break;
175        default:
176          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.PropertyRepresentation.NULL);
177          break;
178      }
179    }
180    return tgt;
181  }
182
183  public static org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingComponent convertElementDefinitionSlicingComponent(org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingComponent src) throws FHIRException {
184    if (src == null) return null;
185    org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingComponent tgt = new org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingComponent();
186    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
187    for (org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent t : src.getDiscriminator())
188      tgt.addDiscriminator(convertElementDefinitionSlicingDiscriminatorComponent(t));
189    if (src.hasDescription()) tgt.setDescriptionElement(String40_50.convertString(src.getDescriptionElement()));
190    if (src.hasOrdered()) tgt.setOrderedElement(Boolean40_50.convertBoolean(src.getOrderedElement()));
191    if (src.hasRules()) tgt.setRulesElement(convertSlicingRules(src.getRulesElement()));
192    return tgt;
193  }
194
195  public static org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingComponent convertElementDefinitionSlicingComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingComponent src) throws FHIRException {
196    if (src == null) return null;
197    org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingComponent();
198    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
199    for (org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent t : src.getDiscriminator())
200      tgt.addDiscriminator(convertElementDefinitionSlicingDiscriminatorComponent(t));
201    if (src.hasDescription()) tgt.setDescriptionElement(String40_50.convertString(src.getDescriptionElement()));
202    if (src.hasOrdered()) tgt.setOrderedElement(Boolean40_50.convertBoolean(src.getOrderedElement()));
203    if (src.hasRules()) tgt.setRulesElement(convertSlicingRules(src.getRulesElement()));
204    return tgt;
205  }
206
207  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.SlicingRules> convertSlicingRules(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.SlicingRules> src) throws FHIRException {
208    if (src == null || src.isEmpty()) return null;
209    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.SlicingRules> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ElementDefinition.SlicingRulesEnumFactory());
210    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
211    if (src.getValue() == null) {
212      tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.SlicingRules.NULL);
213    } else {
214      switch (src.getValue()) {
215        case CLOSED:
216          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.SlicingRules.CLOSED);
217          break;
218        case OPEN:
219          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.SlicingRules.OPEN);
220          break;
221        case OPENATEND:
222          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.SlicingRules.OPENATEND);
223          break;
224        default:
225          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.SlicingRules.NULL);
226          break;
227      }
228    }
229    return tgt;
230  }
231
232  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.SlicingRules> convertSlicingRules(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.SlicingRules> src) throws FHIRException {
233    if (src == null || src.isEmpty()) return null;
234    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.SlicingRules> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ElementDefinition.SlicingRulesEnumFactory());
235    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
236    if (src.getValue() == null) {
237      tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.SlicingRules.NULL);
238    } else {
239      switch (src.getValue()) {
240        case CLOSED:
241          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.SlicingRules.CLOSED);
242          break;
243        case OPEN:
244          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.SlicingRules.OPEN);
245          break;
246        case OPENATEND:
247          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.SlicingRules.OPENATEND);
248          break;
249        default:
250          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.SlicingRules.NULL);
251          break;
252      }
253    }
254    return tgt;
255  }
256
257  public static org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent convertElementDefinitionSlicingDiscriminatorComponent(org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent src) throws FHIRException {
258    if (src == null) return null;
259    org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent tgt = new org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
260    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
261    if (src.hasType()) tgt.setTypeElement(convertDiscriminatorType(src.getTypeElement()));
262    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
263    return tgt;
264  }
265
266  public static org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent convertElementDefinitionSlicingDiscriminatorComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent src) throws FHIRException {
267    if (src == null) return null;
268    org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
269    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
270    if (src.hasType()) tgt.setTypeElement(convertDiscriminatorType(src.getTypeElement()));
271    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
272    return tgt;
273  }
274
275  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType> convertDiscriminatorType(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType> src) throws FHIRException {
276    if (src == null || src.isEmpty()) return null;
277    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorTypeEnumFactory());
278    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
279    if (src.getValue() == null) {
280      tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType.NULL);
281    } else {
282      switch (src.getValue()) {
283        case VALUE:
284          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType.VALUE);
285          break;
286        case EXISTS:
287          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType.EXISTS);
288          break;
289        case PATTERN:
290          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType.PATTERN);
291          break;
292        case TYPE:
293          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType.TYPE);
294          break;
295        case PROFILE:
296          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType.PROFILE);
297          break;
298        default:
299          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType.NULL);
300          break;
301      }
302    }
303    return tgt;
304  }
305
306  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType> convertDiscriminatorType(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.DiscriminatorType> src) throws FHIRException {
307    if (src == null || src.isEmpty()) return null;
308    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorTypeEnumFactory());
309    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
310    if (src.getValue() == null) {
311      tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType.NULL);
312    } else {
313      switch (src.getValue()) {
314        case VALUE:
315          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType.VALUE);
316          break;
317        case EXISTS:
318          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType.EXISTS);
319          break;
320        case PATTERN:
321          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType.PATTERN);
322          break;
323        case TYPE:
324          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType.TYPE);
325          break;
326        case PROFILE:
327          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType.PROFILE);
328          break;
329        default:
330          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.DiscriminatorType.NULL);
331          break;
332      }
333    }
334    return tgt;
335  }
336
337  public static org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBaseComponent convertElementDefinitionBaseComponent(org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionBaseComponent src) throws FHIRException {
338    if (src == null) return null;
339    org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBaseComponent tgt = new org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBaseComponent();
340    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
341    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
342    if (src.hasMin()) tgt.setMinElement(UnsignedInt40_50.convertUnsignedInt(src.getMinElement()));
343    if (src.hasMax()) tgt.setMaxElement(String40_50.convertString(src.getMaxElement()));
344    return tgt;
345  }
346
347  public static org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionBaseComponent convertElementDefinitionBaseComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBaseComponent src) throws FHIRException {
348    if (src == null) return null;
349    org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionBaseComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionBaseComponent();
350    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
351    if (src.hasPath()) tgt.setPathElement(String40_50.convertString(src.getPathElement()));
352    if (src.hasMin()) tgt.setMinElement(UnsignedInt40_50.convertUnsignedInt(src.getMinElement()));
353    if (src.hasMax()) tgt.setMaxElement(String40_50.convertString(src.getMaxElement()));
354    return tgt;
355  }
356
357  public static org.hl7.fhir.r5.model.ElementDefinition.TypeRefComponent convertTypeRefComponent(org.hl7.fhir.r4.model.ElementDefinition.TypeRefComponent src) throws FHIRException {
358    if (src == null) return null;
359    org.hl7.fhir.r5.model.ElementDefinition.TypeRefComponent tgt = new org.hl7.fhir.r5.model.ElementDefinition.TypeRefComponent();
360    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
361    if (src.hasCode()) tgt.setCodeElement(Uri40_50.convertUri(src.getCodeElement()));
362    for (org.hl7.fhir.r4.model.CanonicalType t : src.getProfile())
363      tgt.getProfile().add(Canonical40_50.convertCanonical(t));
364    for (org.hl7.fhir.r4.model.CanonicalType t : src.getTargetProfile())
365      tgt.getTargetProfile().add(Canonical40_50.convertCanonical(t));
366    tgt.setAggregation(src.getAggregation().stream().map(ElementDefinition40_50::convertAggregationMode).collect(Collectors.toList()));
367    if (src.hasVersioning()) tgt.setVersioningElement(convertReferenceVersionRules(src.getVersioningElement()));
368    return tgt;
369  }
370
371  public static org.hl7.fhir.r4.model.ElementDefinition.TypeRefComponent convertTypeRefComponent(org.hl7.fhir.r5.model.ElementDefinition.TypeRefComponent src) throws FHIRException {
372    if (src == null) return null;
373    org.hl7.fhir.r4.model.ElementDefinition.TypeRefComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.TypeRefComponent();
374    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
375    if (src.hasCode()) tgt.setCodeElement(Uri40_50.convertUri(src.getCodeElement()));
376    for (org.hl7.fhir.r5.model.CanonicalType t : src.getProfile())
377      tgt.getProfile().add(Canonical40_50.convertCanonical(t));
378    for (org.hl7.fhir.r5.model.CanonicalType t : src.getTargetProfile())
379      tgt.getTargetProfile().add(Canonical40_50.convertCanonical(t));
380    tgt.setAggregation(src.getAggregation().stream().map(ElementDefinition40_50::convertAggregationMode).collect(Collectors.toList()));
381    if (src.hasVersioning()) tgt.setVersioningElement(convertReferenceVersionRules(src.getVersioningElement()));
382    return tgt;
383  }
384
385  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.AggregationMode> convertAggregationMode(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.AggregationMode> src) throws FHIRException {
386    if (src == null || src.isEmpty()) return null;
387    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.AggregationMode> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ElementDefinition.AggregationModeEnumFactory());
388    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
389    if (src.getValue() == null) {
390      tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.AggregationMode.NULL);
391    } else {
392      switch (src.getValue()) {
393        case CONTAINED:
394          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.AggregationMode.CONTAINED);
395          break;
396        case REFERENCED:
397          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.AggregationMode.REFERENCED);
398          break;
399        case BUNDLED:
400          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.AggregationMode.BUNDLED);
401          break;
402        default:
403          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.AggregationMode.NULL);
404          break;
405      }
406    }
407    return tgt;
408  }
409
410  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.AggregationMode> convertAggregationMode(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.AggregationMode> src) throws FHIRException {
411    if (src == null || src.isEmpty()) return null;
412    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.AggregationMode> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ElementDefinition.AggregationModeEnumFactory());
413    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
414    if (src.getValue() == null) {
415      tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.AggregationMode.NULL);
416    } else {
417      switch (src.getValue()) {
418        case CONTAINED:
419          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.AggregationMode.CONTAINED);
420          break;
421        case REFERENCED:
422          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.AggregationMode.REFERENCED);
423          break;
424        case BUNDLED:
425          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.AggregationMode.BUNDLED);
426          break;
427        default:
428          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.AggregationMode.NULL);
429          break;
430      }
431    }
432    return tgt;
433  }
434
435  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRules> convertReferenceVersionRules(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRules> src) throws FHIRException {
436    if (src == null || src.isEmpty()) return null;
437    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRules> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRulesEnumFactory());
438    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
439    if (src.getValue() == null) {
440      tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRules.NULL);
441    } else {
442      switch (src.getValue()) {
443        case EITHER:
444          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRules.EITHER);
445          break;
446        case INDEPENDENT:
447          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRules.INDEPENDENT);
448          break;
449        case SPECIFIC:
450          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRules.SPECIFIC);
451          break;
452        default:
453          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRules.NULL);
454          break;
455      }
456    }
457    return tgt;
458  }
459
460  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRules> convertReferenceVersionRules(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.ReferenceVersionRules> src) throws FHIRException {
461    if (src == null || src.isEmpty()) return null;
462    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRules> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRulesEnumFactory());
463    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
464    if (src.getValue() == null) {
465      tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRules.NULL);
466    } else {
467      switch (src.getValue()) {
468        case EITHER:
469          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRules.EITHER);
470          break;
471        case INDEPENDENT:
472          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRules.INDEPENDENT);
473          break;
474        case SPECIFIC:
475          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRules.SPECIFIC);
476          break;
477        default:
478          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ReferenceVersionRules.NULL);
479          break;
480      }
481    }
482    return tgt;
483  }
484
485  public static org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionExampleComponent convertElementDefinitionExampleComponent(org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionExampleComponent src) throws FHIRException {
486    if (src == null) return null;
487    org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionExampleComponent tgt = new org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionExampleComponent();
488    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
489    if (src.hasLabel()) tgt.setLabelElement(String40_50.convertString(src.getLabelElement()));
490    if (src.hasValue())
491      tgt.setValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getValue()));
492    return tgt;
493  }
494
495  public static org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionExampleComponent convertElementDefinitionExampleComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionExampleComponent src) throws FHIRException {
496    if (src == null) return null;
497    org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionExampleComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionExampleComponent();
498    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
499    if (src.hasLabel()) tgt.setLabelElement(String40_50.convertString(src.getLabelElement()));
500    if (src.hasValue())
501      tgt.setValue(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getValue()));
502    return tgt;
503  }
504
505  public static org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionConstraintComponent convertElementDefinitionConstraintComponent(org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionConstraintComponent src) throws FHIRException {
506    if (src == null) return null;
507    org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionConstraintComponent tgt = new org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionConstraintComponent();
508    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
509    if (src.hasKey()) tgt.setKeyElement(Id40_50.convertId(src.getKeyElement()));
510    if (src.hasRequirements()) tgt.setRequirementsElement(String40_50.convertString(src.getRequirementsElement()));
511    if (src.hasSeverity()) tgt.setSeverityElement(convertConstraintSeverity(src.getSeverityElement()));
512    if (src.hasHuman()) tgt.setHumanElement(String40_50.convertString(src.getHumanElement()));
513    if (src.hasExpression()) tgt.setExpressionElement(String40_50.convertString(src.getExpressionElement()));
514    if (src.hasXpath()) tgt.setXpathElement(String40_50.convertString(src.getXpathElement()));
515    if (src.hasSource()) tgt.setSourceElement(Canonical40_50.convertCanonical(src.getSourceElement()));
516    return tgt;
517  }
518
519  public static org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionConstraintComponent convertElementDefinitionConstraintComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionConstraintComponent src) throws FHIRException {
520    if (src == null) return null;
521    org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionConstraintComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionConstraintComponent();
522    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
523    if (src.hasKey()) tgt.setKeyElement(Id40_50.convertId(src.getKeyElement()));
524    if (src.hasRequirements()) tgt.setRequirementsElement(String40_50.convertString(src.getRequirementsElement()));
525    if (src.hasSeverity()) tgt.setSeverityElement(convertConstraintSeverity(src.getSeverityElement()));
526    if (src.hasHuman()) tgt.setHumanElement(String40_50.convertString(src.getHumanElement()));
527    if (src.hasExpression()) tgt.setExpressionElement(String40_50.convertString(src.getExpressionElement()));
528    if (src.hasXpath()) tgt.setXpathElement(String40_50.convertString(src.getXpathElement()));
529    if (src.hasSource()) tgt.setSourceElement(Canonical40_50.convertCanonical(src.getSourceElement()));
530    return tgt;
531  }
532
533  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.ConstraintSeverity> convertConstraintSeverity(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.ConstraintSeverity> src) throws FHIRException {
534    if (src == null || src.isEmpty()) return null;
535    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.ConstraintSeverity> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ElementDefinition.ConstraintSeverityEnumFactory());
536    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
537    if (src.getValue() == null) {
538      tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ConstraintSeverity.NULL);
539    } else {
540      switch (src.getValue()) {
541        case ERROR:
542          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ConstraintSeverity.ERROR);
543          break;
544        case WARNING:
545          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ConstraintSeverity.WARNING);
546          break;
547        default:
548          tgt.setValue(org.hl7.fhir.r5.model.ElementDefinition.ConstraintSeverity.NULL);
549          break;
550      }
551    }
552    return tgt;
553  }
554
555  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.ConstraintSeverity> convertConstraintSeverity(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.ConstraintSeverity> src) throws FHIRException {
556    if (src == null || src.isEmpty()) return null;
557    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ElementDefinition.ConstraintSeverity> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ElementDefinition.ConstraintSeverityEnumFactory());
558    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
559    if (src.getValue() == null) {
560      tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ConstraintSeverity.NULL);
561    } else {
562      switch (src.getValue()) {
563        case ERROR:
564          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ConstraintSeverity.ERROR);
565          break;
566        case WARNING:
567          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ConstraintSeverity.WARNING);
568          break;
569        default:
570          tgt.setValue(org.hl7.fhir.r4.model.ElementDefinition.ConstraintSeverity.NULL);
571          break;
572      }
573    }
574    return tgt;
575  }
576
577  public static org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBindingComponent convertElementDefinitionBindingComponent(org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionBindingComponent src) throws FHIRException {
578    if (src == null) return null;
579    org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBindingComponent tgt = new org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBindingComponent();
580    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
581    if (src.hasStrength()) tgt.setStrengthElement(Enumerations40_50.convertBindingStrength(src.getStrengthElement()));
582    if (src.hasDescription()) tgt.setDescriptionElement(String40_50.convertString(src.getDescriptionElement()));
583    if (src.hasValueSet()) tgt.setValueSetElement(Canonical40_50.convertCanonical(src.getValueSetElement()));
584    return tgt;
585  }
586
587  public static org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionBindingComponent convertElementDefinitionBindingComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBindingComponent src) throws FHIRException {
588    if (src == null) return null;
589    org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionBindingComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionBindingComponent();
590    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
591    if (src.hasStrength()) tgt.setStrengthElement(Enumerations40_50.convertBindingStrength(src.getStrengthElement()));
592    if (src.hasDescription()) tgt.setDescriptionElement(String40_50.convertString(src.getDescriptionElement()));
593    if (src.hasValueSet()) tgt.setValueSetElement(Canonical40_50.convertCanonical(src.getValueSetElement()));
594    return tgt;
595  }
596
597  public static org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionMappingComponent convertElementDefinitionMappingComponent(org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionMappingComponent src) throws FHIRException {
598    if (src == null) return null;
599    org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionMappingComponent tgt = new org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionMappingComponent();
600    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
601    if (src.hasIdentity()) tgt.setIdentityElement(Id40_50.convertId(src.getIdentityElement()));
602    if (src.hasLanguage()) tgt.setLanguageElement(Code40_50.convertCode(src.getLanguageElement()));
603    if (src.hasMap()) tgt.setMapElement(String40_50.convertString(src.getMapElement()));
604    if (src.hasComment()) tgt.setCommentElement(String40_50.convertString(src.getCommentElement()));
605    return tgt;
606  }
607
608  public static org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionMappingComponent convertElementDefinitionMappingComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionMappingComponent src) throws FHIRException {
609    if (src == null) return null;
610    org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionMappingComponent tgt = new org.hl7.fhir.r4.model.ElementDefinition.ElementDefinitionMappingComponent();
611    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
612    if (src.hasIdentity()) tgt.setIdentityElement(Id40_50.convertId(src.getIdentityElement()));
613    if (src.hasLanguage()) tgt.setLanguageElement(Code40_50.convertCode(src.getLanguageElement()));
614    if (src.hasMap()) tgt.setMapElement(String40_50.convertString(src.getMapElement()));
615    if (src.hasComment()) tgt.setCommentElement(String40_50.convertString(src.getCommentElement()));
616    return tgt;
617  }
618}