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