001package org.hl7.fhir.convertors.conv40_50.resources40_50;
002
003import org.hl7.fhir.convertors.VersionConvertorConstants;
004import org.hl7.fhir.convertors.context.ConversionContext40_50;
005import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.CodeableConcept40_50;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Identifier40_50;
007import org.hl7.fhir.convertors.conv40_50.datatypes40_50.metadata40_50.ContactDetail40_50;
008import org.hl7.fhir.convertors.conv40_50.datatypes40_50.metadata40_50.UsageContext40_50;
009import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Boolean40_50;
010import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Canonical40_50;
011import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Code40_50;
012import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.DateTime40_50;
013import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.MarkDown40_50;
014import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.String40_50;
015import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Uri40_50;
016import org.hl7.fhir.exceptions.FHIRException;
017import org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence;
018import org.hl7.fhir.r5.model.CanonicalType;
019import org.hl7.fhir.r5.model.Coding;
020import org.hl7.fhir.r5.model.Enumeration;
021import org.hl7.fhir.r5.model.Enumerations;
022import org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship;
023import org.hl7.fhir.r5.utils.ToolingExtensions;
024import org.hl7.fhir.utilities.CanonicalPair;
025
026/*
027  Copyright (c) 2011+, HL7, Inc.
028  All rights reserved.
029  
030  Redistribution and use in source and binary forms, with or without modification, 
031  are permitted provided that the following conditions are met:
032  
033   * Redistributions of source code must retain the above copyright notice, this 
034     list of conditions and the following disclaimer.
035   * Redistributions in binary form must reproduce the above copyright notice, 
036     this list of conditions and the following disclaimer in the documentation 
037     and/or other materials provided with the distribution.
038   * Neither the name of HL7 nor the names of its contributors may be used to 
039     endorse or promote products derived from this software without specific 
040     prior written permission.
041  
042  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
043  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
044  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
045  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
046  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
047  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
048  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
049  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
050  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
051  POSSIBILITY OF SUCH DAMAGE.
052  
053*/
054// Generated on Sun, Feb 24, 2019 11:37+1100 for FHIR v4.0.0
055public class ConceptMap40_50 {
056
057  public static org.hl7.fhir.r5.model.ConceptMap convertConceptMap(org.hl7.fhir.r4.model.ConceptMap src) throws FHIRException {
058    if (src == null)
059      return null;
060    org.hl7.fhir.r5.model.ConceptMap tgt = new org.hl7.fhir.r5.model.ConceptMap();
061    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
062    if (src.hasUrl())
063      tgt.setUrlElement(Uri40_50.convertUri(src.getUrlElement()));
064    if (src.hasIdentifier())
065      tgt.addIdentifier(Identifier40_50.convertIdentifier(src.getIdentifier()));
066    if (src.hasVersion())
067      tgt.setVersionElement(String40_50.convertString(src.getVersionElement()));
068    if (src.hasName())
069      tgt.setNameElement(String40_50.convertString(src.getNameElement()));
070    if (src.hasTitle())
071      tgt.setTitleElement(String40_50.convertString(src.getTitleElement()));
072    if (src.hasStatus())
073      tgt.setStatusElement(Enumerations40_50.convertPublicationStatus(src.getStatusElement()));
074    if (src.hasExperimental())
075      tgt.setExperimentalElement(Boolean40_50.convertBoolean(src.getExperimentalElement()));
076    if (src.hasDate())
077      tgt.setDateElement(DateTime40_50.convertDateTime(src.getDateElement()));
078    if (src.hasPublisher())
079      tgt.setPublisherElement(String40_50.convertString(src.getPublisherElement()));
080    for (org.hl7.fhir.r4.model.ContactDetail t : src.getContact())
081      tgt.addContact(ContactDetail40_50.convertContactDetail(t));
082    if (src.hasDescription())
083      tgt.setDescriptionElement(MarkDown40_50.convertMarkdown(src.getDescriptionElement()));
084    for (org.hl7.fhir.r4.model.UsageContext t : src.getUseContext())
085      tgt.addUseContext(UsageContext40_50.convertUsageContext(t));
086    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getJurisdiction())
087      tgt.addJurisdiction(CodeableConcept40_50.convertCodeableConcept(t));
088    if (src.hasPurpose())
089      tgt.setPurposeElement(MarkDown40_50.convertMarkdown(src.getPurposeElement()));
090    if (src.hasCopyright())
091      tgt.setCopyrightElement(MarkDown40_50.convertMarkdown(src.getCopyrightElement()));
092    if (src.hasSource())
093      tgt.setSourceScope(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getSource()));
094    if (src.hasTarget())
095      tgt.setTargetScope(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getTarget()));
096    for (org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent t : src.getGroup())
097      tgt.addGroup(convertConceptMapGroupComponent(t, tgt));
098    return tgt;
099  }
100
101  public static org.hl7.fhir.r4.model.ConceptMap convertConceptMap(org.hl7.fhir.r5.model.ConceptMap src) throws FHIRException {
102    if (src == null)
103      return null;
104    org.hl7.fhir.r4.model.ConceptMap tgt = new org.hl7.fhir.r4.model.ConceptMap();
105    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
106    if (src.hasUrl())
107      tgt.setUrlElement(Uri40_50.convertUri(src.getUrlElement()));
108    if (src.hasIdentifier())
109      tgt.setIdentifier(Identifier40_50.convertIdentifier(src.getIdentifierFirstRep()));
110    if (src.hasVersion())
111      tgt.setVersionElement(String40_50.convertString(src.getVersionElement()));
112    if (src.hasName())
113      tgt.setNameElement(String40_50.convertString(src.getNameElement()));
114    if (src.hasTitle())
115      tgt.setTitleElement(String40_50.convertString(src.getTitleElement()));
116    if (src.hasStatus())
117      tgt.setStatusElement(Enumerations40_50.convertPublicationStatus(src.getStatusElement()));
118    if (src.hasExperimental())
119      tgt.setExperimentalElement(Boolean40_50.convertBoolean(src.getExperimentalElement()));
120    if (src.hasDate())
121      tgt.setDateElement(DateTime40_50.convertDateTime(src.getDateElement()));
122    if (src.hasPublisher())
123      tgt.setPublisherElement(String40_50.convertString(src.getPublisherElement()));
124    for (org.hl7.fhir.r5.model.ContactDetail t : src.getContact())
125      tgt.addContact(ContactDetail40_50.convertContactDetail(t));
126    if (src.hasDescription())
127      tgt.setDescriptionElement(MarkDown40_50.convertMarkdown(src.getDescriptionElement()));
128    for (org.hl7.fhir.r5.model.UsageContext t : src.getUseContext())
129      tgt.addUseContext(UsageContext40_50.convertUsageContext(t));
130    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getJurisdiction())
131      tgt.addJurisdiction(CodeableConcept40_50.convertCodeableConcept(t));
132    if (src.hasPurpose())
133      tgt.setPurposeElement(MarkDown40_50.convertMarkdown(src.getPurposeElement()));
134    if (src.hasCopyright())
135      tgt.setCopyrightElement(MarkDown40_50.convertMarkdown(src.getCopyrightElement()));
136    if (src.hasSourceScope())
137      tgt.setSource(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getSourceScope()));
138    if (src.hasTargetScope())
139      tgt.setTarget(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getTargetScope()));
140    for (org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent t : src.getGroup())
141      tgt.addGroup(convertConceptMapGroupComponent(t, src));
142    return tgt;
143  }
144
145  public static org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent convertConceptMapGroupComponent(org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent src, org.hl7.fhir.r5.model.ConceptMap tgtMap) throws FHIRException {
146    if (src == null)
147      return null;
148    org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent();
149    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
150    if (src.hasSource() || src.hasSourceVersion())
151      tgt.setSourceElement(convertUriAndVersionToCanonical(src.getSourceElement(), src.getSourceVersionElement()));
152    if (src.hasTarget() || src.hasTargetVersion())
153      tgt.setTargetElement(convertUriAndVersionToCanonical(src.getTargetElement(), src.getTargetVersionElement()));
154    for (org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent t : src.getElement())
155      tgt.addElement(convertSourceElementComponent(t, tgtMap));
156    if (src.hasUnmapped())
157      tgt.setUnmapped(convertConceptMapGroupUnmappedComponent(src.getUnmapped()));
158    return tgt;
159  }
160
161  private static CanonicalType convertUriAndVersionToCanonical(org.hl7.fhir.r4.model.UriType srcUri, org.hl7.fhir.r4.model.StringType srcVersion) {
162    if (srcUri == null && srcVersion == null)
163      return null;
164    org.hl7.fhir.r5.model.CanonicalType tgt = new org.hl7.fhir.r5.model.CanonicalType();
165    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(srcUri == null ? srcVersion : srcUri, tgt);
166    if (srcUri.hasValue()) {
167      if (srcVersion.hasValue()) {
168        tgt.setValue(srcUri.getValue() + "|" + srcVersion.getValue());
169      } else {
170        tgt.setValue(srcUri.getValue());
171      }
172    }
173    return tgt;
174  }
175
176  public static org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent convertConceptMapGroupComponent(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent src, org.hl7.fhir.r5.model.ConceptMap srcMap) throws FHIRException {
177    if (src == null)
178      return null;
179    org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent tgt = new org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent();
180    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
181    if (src.hasSource()) {
182      CanonicalPair cp = new CanonicalPair(src.getSource());
183      tgt.setSource(cp.getUrl());
184      tgt.setSourceVersion(cp.getVersion());
185    }
186    if (src.hasTarget()) {
187      CanonicalPair cp = new CanonicalPair(src.getTarget());
188      tgt.setTarget(cp.getUrl());
189      tgt.setTargetVersion(cp.getVersion());
190    }
191    for (org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent t : src.getElement())
192      tgt.addElement(convertSourceElementComponent(t, srcMap));
193    if (src.hasUnmapped())
194      tgt.setUnmapped(convertConceptMapGroupUnmappedComponent(src.getUnmapped()));
195    return tgt;
196  }
197
198  public static org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent convertSourceElementComponent(org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent src, org.hl7.fhir.r5.model.ConceptMap tgtMap) throws FHIRException {
199    if (src == null)
200      return null;
201    org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent();
202    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
203    if (src.hasCode())
204      tgt.setCodeElement(Code40_50.convertCode(src.getCodeElement()));
205    if (src.hasDisplay())
206      tgt.setDisplayElement(String40_50.convertString(src.getDisplayElement()));
207    for (org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent t : src.getTarget()) {
208      if (t.getEquivalence() == org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.UNMATCHED) {
209        tgt.setNoMap(true);
210      } else {
211        tgt.addTarget(convertTargetElementComponent(t, tgtMap));
212      }
213    }
214    return tgt;
215  }
216
217  public static org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent convertSourceElementComponent(org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent src, org.hl7.fhir.r5.model.ConceptMap srcMap) throws FHIRException {
218    if (src == null)
219      return null;
220    org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent tgt = new org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent();
221    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
222    if (src.hasCode())
223      tgt.setCodeElement(Code40_50.convertCode(src.getCodeElement()));
224    if (src.hasDisplay())
225      tgt.setDisplayElement(String40_50.convertString(src.getDisplayElement()));
226    if (src.hasNoMap() && src.getNoMap() == true) {
227      tgt.addTarget(new org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent().setEquivalence(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.UNMATCHED));
228    } else {
229      for (org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent t : src.getTarget())
230        tgt.addTarget(convertTargetElementComponent(t, srcMap));
231    }
232    return tgt;
233  }
234
235  public static org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent convertTargetElementComponent(org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent src, org.hl7.fhir.r5.model.ConceptMap tgtMap) throws FHIRException {
236    if (src == null)
237      return null;
238    org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent();
239    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
240    if (src.hasCode())
241      tgt.setCodeElement(Code40_50.convertCode(src.getCodeElement()));
242    if (src.hasDisplay())
243      tgt.setDisplayElement(String40_50.convertString(src.getDisplayElement()));
244    if (src.hasEquivalence())
245      tgt.setRelationshipElement(convertConceptMapRelationship(src.getEquivalenceElement()));
246    if (src.hasComment())
247      tgt.setCommentElement(String40_50.convertString(src.getCommentElement()));
248    for (org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent t : src.getDependsOn())
249      tgt.addDependsOn(convertOtherElementComponent(t, tgtMap));
250    for (org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent t : src.getProduct())
251      tgt.addProduct(convertOtherElementComponent(t, tgtMap));
252    return tgt;
253  }
254
255  public static org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent convertTargetElementComponent(org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent src, org.hl7.fhir.r5.model.ConceptMap srcMap) throws FHIRException {
256    if (src == null)
257      return null;
258    org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent tgt = new org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent();
259    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
260    if (src.hasCode())
261      tgt.setCodeElement(Code40_50.convertCode(src.getCodeElement()));
262    if (src.hasDisplay())
263      tgt.setDisplayElement(String40_50.convertString(src.getDisplayElement()));
264    if (src.hasRelationship())
265      tgt.setEquivalenceElement(convertConceptMapEquivalence(src.getRelationshipElement()));
266    else
267      tgt.setEquivalence(ConceptMapEquivalence.RELATEDTO);
268    if (src.hasComment())
269      tgt.setCommentElement(String40_50.convertString(src.getCommentElement()));
270    for (org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent t : src.getDependsOn())
271      tgt.addDependsOn(convertOtherElementComponent(t, srcMap));
272    for (org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent t : src.getProduct())
273      tgt.addProduct(convertOtherElementComponent(t, srcMap));
274    return tgt;
275  }
276
277  public static org.hl7.fhir.r4.model.Enumeration<ConceptMapEquivalence> convertConceptMapEquivalence(Enumeration<ConceptMapRelationship> src) throws FHIRException {
278    if (src == null || src.isEmpty())
279      return null;
280    org.hl7.fhir.r4.model.Enumeration<ConceptMapEquivalence> tgt = new org.hl7.fhir.r4.model.Enumeration<ConceptMapEquivalence>(new org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalenceEnumFactory());
281    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt, VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE);
282    if (src.hasExtension(VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE)) {
283      tgt.setValueAsString(src.getExtensionString(VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE));
284    } else {
285      switch (src.getValue()) {
286        case RELATEDTO:
287          tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.RELATEDTO);
288          break;
289        case EQUIVALENT:
290          tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.EQUIVALENT);
291          break;
292        case SOURCEISNARROWERTHANTARGET:
293          tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.WIDER);
294          break;
295        case SOURCEISBROADERTHANTARGET:
296          tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.NARROWER);
297          break;
298        case NOTRELATEDTO:
299          tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.DISJOINT);
300          break;
301        default:
302          tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.NULL);
303          break;
304      }
305    }
306    return tgt;
307  }
308
309  public static Enumeration<ConceptMapRelationship> convertConceptMapRelationship(org.hl7.fhir.r4.model.Enumeration<ConceptMapEquivalence> src) throws FHIRException {
310    if (src == null || src.isEmpty())
311      return null;
312    Enumeration<ConceptMapRelationship> tgt = new Enumeration<ConceptMapRelationship>(new Enumerations.ConceptMapRelationshipEnumFactory());
313    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
314    ToolingExtensions.setCodeExtension(tgt, VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE, src.getValueAsString());
315    switch (src.getValue()) {
316      case EQUIVALENT:
317        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.EQUIVALENT);
318        break;
319      case EQUAL:
320        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.EQUIVALENT);
321        break;
322      case WIDER:
323        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISNARROWERTHANTARGET);
324        break;
325      case SUBSUMES:
326        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISNARROWERTHANTARGET);
327        break;
328      case NARROWER:
329        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISBROADERTHANTARGET);
330        break;
331      case SPECIALIZES:
332        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISBROADERTHANTARGET);
333        break;
334      case RELATEDTO:
335        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.RELATEDTO);
336        break;
337      case INEXACT:
338        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.RELATEDTO);
339        break;
340      case UNMATCHED:
341        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NULL);
342        break;
343      case DISJOINT:
344        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NOTRELATEDTO);
345        break;
346      default:
347        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NULL);
348        break;
349    }
350    return tgt;
351  }
352
353  public static org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent convertOtherElementComponent(org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent src, org.hl7.fhir.r5.model.ConceptMap tgtMap) throws FHIRException {
354    if (src == null)
355      return null;
356    org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent();
357    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
358    if (src.hasProperty())
359      tgt.setAttribute(tgtMap.registerAttribute(src.getProperty()));
360    if (src.hasSystem()) {
361      tgt.setValue(new Coding().setSystem(src.getSystem()).setCode(src.getValue()).setDisplay(src.getDisplay()));
362    } else if (src.hasValueElement()) {
363      tgt.setValue(String40_50.convertString(src.getValueElement()));
364    }
365    return tgt;
366  }
367
368  public static org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent convertOtherElementComponent(org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent src, org.hl7.fhir.r5.model.ConceptMap srcMap) throws FHIRException {
369    if (src == null)
370      return null;
371    org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent tgt = new org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent();
372    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
373    if (src.hasAttribute())
374      tgt.setProperty(srcMap.getAttributeUri(src.getAttribute()));    
375
376    if (src.hasValueCoding()) {
377      tgt.setSystem(src.getValueCoding().getSystem());
378      tgt.setValue(src.getValueCoding().getCode());
379      tgt.setDisplay(src.getValueCoding().getDisplay());
380    } else if (src.hasValue()) {
381        tgt.setValue(src.getValue().primitiveValue());
382    }
383
384    return tgt;
385  }
386
387  public static org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedComponent convertConceptMapGroupUnmappedComponent(org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedComponent src) throws FHIRException {
388    if (src == null)
389      return null;
390    org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedComponent();
391    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
392    if (src.hasMode())
393      tgt.setModeElement(convertConceptMapGroupUnmappedMode(src.getModeElement()));
394    if (src.hasCode())
395      tgt.setCodeElement(Code40_50.convertCode(src.getCodeElement()));
396    if (src.hasDisplay())
397      tgt.setDisplayElement(String40_50.convertString(src.getDisplayElement()));
398    if (src.hasUrl())
399      tgt.setOtherMapElement(Canonical40_50.convertCanonical(src.getUrlElement()));
400    return tgt;
401  }
402
403  public static org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedComponent convertConceptMapGroupUnmappedComponent(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedComponent src) throws FHIRException {
404    if (src == null)
405      return null;
406    org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedComponent tgt = new org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedComponent();
407    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
408    if (src.hasMode())
409      tgt.setModeElement(convertConceptMapGroupUnmappedMode(src.getModeElement()));
410    if (src.hasCode())
411      tgt.setCodeElement(Code40_50.convertCode(src.getCodeElement()));
412    if (src.hasDisplay())
413      tgt.setDisplayElement(String40_50.convertString(src.getDisplayElement()));
414    if (src.hasOtherMap())
415      tgt.setUrlElement(Canonical40_50.convertCanonical(src.getOtherMapElement()));
416    return tgt;
417  }
418
419  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode> convertConceptMapGroupUnmappedMode(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedMode> src) throws FHIRException {
420    if (src == null || src.isEmpty())
421      return null;
422    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
423    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
424    switch (src.getValue()) {
425      case PROVIDED:
426        tgt.setValue(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode.USESOURCECODE);
427        break;
428      case FIXED:
429        tgt.setValue(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode.FIXED);
430        break;
431      case OTHERMAP:
432        tgt.setValue(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode.OTHERMAP);
433        break;
434      default:
435        tgt.setValue(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode.NULL);
436        break;
437    }
438    return tgt;
439  }
440
441  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedMode> convertConceptMapGroupUnmappedMode(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode> src) throws FHIRException {
442    if (src == null || src.isEmpty())
443      return null;
444    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedMode> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
445    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
446    switch (src.getValue()) {
447      case USESOURCECODE:
448        tgt.setValue(org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedMode.PROVIDED);
449        break;
450      case FIXED:
451        tgt.setValue(org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedMode.FIXED);
452        break;
453      case OTHERMAP:
454        tgt.setValue(org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedMode.OTHERMAP);
455        break;
456      default:
457        tgt.setValue(org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupUnmappedMode.NULL);
458        break;
459    }
460    return tgt;
461  }
462}