001package org.hl7.fhir.convertors.conv30_50.resources30_50;
002
003import org.hl7.fhir.convertors.VersionConvertorConstants;
004import org.hl7.fhir.convertors.context.ConversionContext30_50;
005import org.hl7.fhir.convertors.conv30_50.datatypes30_50.ContactDetail30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.UsageContext30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Identifier30_50;
009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Boolean30_50;
010import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Code30_50;
011import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.DateTime30_50;
012import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.MarkDown30_50;
013import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.String30_50;
014import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Uri30_50;
015import org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence;
016import org.hl7.fhir.exceptions.FHIRException;
017import org.hl7.fhir.r5.model.CanonicalType;
018import org.hl7.fhir.r5.model.Coding;
019import org.hl7.fhir.r5.model.Enumeration;
020import org.hl7.fhir.r5.model.Enumerations;
021import org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship;
022import org.hl7.fhir.r5.utils.ToolingExtensions;
023import org.hl7.fhir.utilities.CanonicalPair;
024
025public class ConceptMap30_50 {
026
027  public static org.hl7.fhir.dstu3.model.ConceptMap convertConceptMap(org.hl7.fhir.r5.model.ConceptMap src) throws FHIRException {
028    if (src == null)
029      return null;
030    org.hl7.fhir.dstu3.model.ConceptMap tgt = new org.hl7.fhir.dstu3.model.ConceptMap();
031    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
032    if (src.hasUrl())
033      tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement()));
034    if (src.hasIdentifier())
035      tgt.setIdentifier(Identifier30_50.convertIdentifier(src.getIdentifierFirstRep()));
036    if (src.hasVersion())
037      tgt.setVersionElement(String30_50.convertString(src.getVersionElement()));
038    if (src.hasName())
039      tgt.setNameElement(String30_50.convertString(src.getNameElement()));
040    if (src.hasTitle())
041      tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
042    if (src.hasStatus())
043      tgt.setStatusElement(Enumerations30_50.convertPublicationStatus(src.getStatusElement()));
044    if (src.hasExperimental())
045      tgt.setExperimentalElement(Boolean30_50.convertBoolean(src.getExperimentalElement()));
046    if (src.hasDate())
047      tgt.setDateElement(DateTime30_50.convertDateTime(src.getDateElement()));
048    if (src.hasPublisher())
049      tgt.setPublisherElement(String30_50.convertString(src.getPublisherElement()));
050    for (org.hl7.fhir.r5.model.ContactDetail t : src.getContact())
051      tgt.addContact(ContactDetail30_50.convertContactDetail(t));
052    if (src.hasDescription())
053      tgt.setDescriptionElement(MarkDown30_50.convertMarkdown(src.getDescriptionElement()));
054    for (org.hl7.fhir.r5.model.UsageContext t : src.getUseContext())
055      tgt.addUseContext(UsageContext30_50.convertUsageContext(t));
056    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getJurisdiction())
057      tgt.addJurisdiction(CodeableConcept30_50.convertCodeableConcept(t));
058    if (src.hasPurpose())
059      tgt.setPurposeElement(MarkDown30_50.convertMarkdown(src.getPurposeElement()));
060    if (src.hasCopyright())
061      tgt.setCopyrightElement(MarkDown30_50.convertMarkdown(src.getCopyrightElement()));
062    if (src.hasSourceScope())
063      tgt.setSource(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getSourceScope()));
064    if (src.hasTargetScope())
065      tgt.setTarget(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getTargetScope()));
066    for (org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent t : src.getGroup())
067      tgt.addGroup(convertConceptMapGroupComponent(t, src));
068    return tgt;
069  }
070
071  public static org.hl7.fhir.r5.model.ConceptMap convertConceptMap(org.hl7.fhir.dstu3.model.ConceptMap src) throws FHIRException {
072    if (src == null)
073      return null;
074    org.hl7.fhir.r5.model.ConceptMap tgt = new org.hl7.fhir.r5.model.ConceptMap();
075    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
076    if (src.hasUrl())
077      tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement()));
078    if (src.hasIdentifier())
079      tgt.addIdentifier(Identifier30_50.convertIdentifier(src.getIdentifier()));
080    if (src.hasVersion())
081      tgt.setVersionElement(String30_50.convertString(src.getVersionElement()));
082    if (src.hasName())
083      tgt.setNameElement(String30_50.convertString(src.getNameElement()));
084    if (src.hasTitle())
085      tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
086    if (src.hasStatus())
087      tgt.setStatusElement(Enumerations30_50.convertPublicationStatus(src.getStatusElement()));
088    if (src.hasExperimental())
089      tgt.setExperimentalElement(Boolean30_50.convertBoolean(src.getExperimentalElement()));
090    if (src.hasDate())
091      tgt.setDateElement(DateTime30_50.convertDateTime(src.getDateElement()));
092    if (src.hasPublisher())
093      tgt.setPublisherElement(String30_50.convertString(src.getPublisherElement()));
094    for (org.hl7.fhir.dstu3.model.ContactDetail t : src.getContact())
095      tgt.addContact(ContactDetail30_50.convertContactDetail(t));
096    if (src.hasDescription())
097      tgt.setDescriptionElement(MarkDown30_50.convertMarkdown(src.getDescriptionElement()));
098    for (org.hl7.fhir.dstu3.model.UsageContext t : src.getUseContext())
099      tgt.addUseContext(UsageContext30_50.convertUsageContext(t));
100    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getJurisdiction())
101      tgt.addJurisdiction(CodeableConcept30_50.convertCodeableConcept(t));
102    if (src.hasPurpose())
103      tgt.setPurposeElement(MarkDown30_50.convertMarkdown(src.getPurposeElement()));
104    if (src.hasCopyright())
105      tgt.setCopyrightElement(MarkDown30_50.convertMarkdown(src.getCopyrightElement()));
106    if (src.hasSource()) {
107      org.hl7.fhir.r5.model.DataType t = ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getSource());
108      tgt.setSourceScope(t instanceof org.hl7.fhir.r5.model.Reference ? new org.hl7.fhir.r5.model.CanonicalType(((org.hl7.fhir.r5.model.Reference) t).getReference()) : t);
109    }
110    if (src.hasTarget()) {
111      org.hl7.fhir.r5.model.DataType t = ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getTarget());
112      tgt.setTargetScope(t instanceof org.hl7.fhir.r5.model.Reference ? new org.hl7.fhir.r5.model.CanonicalType(((org.hl7.fhir.r5.model.Reference) t).getReference()) : t);
113    }
114    for (org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupComponent t : src.getGroup())
115      tgt.addGroup(convertConceptMapGroupComponent(t, tgt));
116    return tgt;
117  }
118
119  public static org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent convertConceptMapGroupComponent(org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupComponent src, org.hl7.fhir.r5.model.ConceptMap tgtMap) throws FHIRException {
120    if (src == null)
121      return null;
122    org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent();
123    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
124    if (src.hasSource() || src.hasSourceVersion())
125      tgt.setSourceElement(convertUriAndVersionToCanonical(src.getSourceElement(), src.getSourceVersionElement()));
126    if (src.hasTarget() || src.hasTargetVersion())
127      tgt.setTargetElement(convertUriAndVersionToCanonical(src.getTargetElement(), src.getTargetVersionElement()));
128
129    for (org.hl7.fhir.dstu3.model.ConceptMap.SourceElementComponent t : src.getElement())
130      tgt.addElement(convertSourceElementComponent(t, tgtMap));
131    if (src.hasUnmapped())
132      tgt.setUnmapped(convertConceptMapGroupUnmappedComponent(src.getUnmapped()));
133    return tgt;
134  }
135
136  public static org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupComponent convertConceptMapGroupComponent(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent src, org.hl7.fhir.r5.model.ConceptMap srcMap) throws FHIRException {
137    if (src == null)
138      return null;
139    org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupComponent tgt = new org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupComponent();
140    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
141    if (src.hasSource()) {
142      CanonicalPair cp = new CanonicalPair(src.getSource());
143      tgt.setSource(cp.getUrl());
144      tgt.setSourceVersion(cp.getVersion());
145    }
146    if (src.hasTarget()) {
147      CanonicalPair cp = new CanonicalPair(src.getTarget());
148      tgt.setTarget(cp.getUrl());
149      tgt.setTargetVersion(cp.getVersion());
150    }
151    for (org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent t : src.getElement())
152      tgt.addElement(convertSourceElementComponent(t, srcMap));
153    if (src.hasUnmapped())
154      tgt.setUnmapped(convertConceptMapGroupUnmappedComponent(src.getUnmapped()));
155    return tgt;
156  }
157
158  private static CanonicalType convertUriAndVersionToCanonical(org.hl7.fhir.dstu3.model.UriType srcUri, org.hl7.fhir.dstu3.model.StringType srcVersion) {
159    if (srcUri == null && srcVersion == null)
160      return null;
161    org.hl7.fhir.r5.model.CanonicalType tgt = new org.hl7.fhir.r5.model.CanonicalType();
162    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(srcUri == null ? srcVersion : srcUri, tgt);
163    if (srcUri.hasValue()) {
164      if (srcVersion.hasValue()) {
165        tgt.setValue(srcUri.getValue() + "|" + srcVersion.getValue());
166      } else {
167        tgt.setValue(srcUri.getValue());
168      }
169    }
170    return tgt;
171  }
172
173
174  public static org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedComponent convertConceptMapGroupUnmappedComponent(org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedComponent src) throws FHIRException {
175    if (src == null)
176      return null;
177    org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedComponent();
178    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
179    if (src.hasMode())
180      tgt.setModeElement(convertConceptMapGroupUnmappedMode(src.getModeElement()));
181    if (src.hasCode())
182      tgt.setCodeElement(Code30_50.convertCode(src.getCodeElement()));
183    if (src.hasDisplay())
184      tgt.setDisplayElement(String30_50.convertString(src.getDisplayElement()));
185    if (src.hasUrl())
186      tgt.setOtherMap(src.getUrl());
187    return tgt;
188  }
189
190  public static org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedComponent convertConceptMapGroupUnmappedComponent(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedComponent src) throws FHIRException {
191    if (src == null)
192      return null;
193    org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedComponent tgt = new org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedComponent();
194    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
195    if (src.hasMode())
196      tgt.setModeElement(convertConceptMapGroupUnmappedMode(src.getModeElement()));
197    if (src.hasCode())
198      tgt.setCodeElement(Code30_50.convertCode(src.getCodeElement()));
199    if (src.hasDisplay())
200      tgt.setDisplayElement(String30_50.convertString(src.getDisplayElement()));
201    if (src.hasOtherMap())
202      tgt.setUrl(src.getOtherMap());
203    return tgt;
204  }
205
206  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode> convertConceptMapGroupUnmappedMode(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedMode> src) throws FHIRException {
207    if (src == null || src.isEmpty())
208      return null;
209    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());
210    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
211    switch (src.getValue()) {
212      case PROVIDED:
213        tgt.setValue(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode.USESOURCECODE);
214        break;
215      case FIXED:
216        tgt.setValue(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode.FIXED);
217        break;
218      case OTHERMAP:
219        tgt.setValue(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode.OTHERMAP);
220        break;
221      default:
222        tgt.setValue(org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode.NULL);
223        break;
224    }
225    return tgt;
226  }
227
228  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedMode> convertConceptMapGroupUnmappedMode(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupUnmappedMode> src) throws FHIRException {
229    if (src == null || src.isEmpty())
230      return null;
231    org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedMode> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
232    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
233    switch (src.getValue()) {
234      case USESOURCECODE:
235        tgt.setValue(org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedMode.PROVIDED);
236        break;
237      case FIXED:
238        tgt.setValue(org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedMode.FIXED);
239        break;
240      case OTHERMAP:
241        tgt.setValue(org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedMode.OTHERMAP);
242        break;
243      default:
244        tgt.setValue(org.hl7.fhir.dstu3.model.ConceptMap.ConceptMapGroupUnmappedMode.NULL);
245        break;
246    }
247    return tgt;
248  }
249
250  public static org.hl7.fhir.dstu3.model.Enumeration<ConceptMapEquivalence> convertConceptMapEquivalence(Enumeration<ConceptMapRelationship> src, org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent ccm) throws FHIRException {
251    if (src == null || src.isEmpty())
252      return null;
253    org.hl7.fhir.dstu3.model.Enumeration<ConceptMapEquivalence> tgt = new org.hl7.fhir.dstu3.model.Enumeration<ConceptMapEquivalence>(new org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalenceEnumFactory());
254    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
255    if (ccm.hasExtension(VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE)) {
256      tgt.setValueAsString(ccm.getExtensionString(VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE));
257    } else {
258      switch (src.getValue()) {
259        case EQUIVALENT:
260          tgt.setValue(org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence.EQUIVALENT);
261          break;
262        case SOURCEISNARROWERTHANTARGET:
263          tgt.setValue(org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence.WIDER);
264          break;
265        case SOURCEISBROADERTHANTARGET:
266          tgt.setValue(org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence.NARROWER);
267          break;
268        case NOTRELATEDTO:
269          tgt.setValue(org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence.DISJOINT);
270          break;
271        case RELATEDTO:
272          tgt.setValue(org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence.RELATEDTO);
273          break;
274        default:
275          tgt.setValue(org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence.NULL);
276          break;
277      }
278    }
279    return tgt;
280  }
281
282  public static Enumeration<ConceptMapRelationship> convertConceptMapRelationship(org.hl7.fhir.dstu3.model.Enumeration<ConceptMapEquivalence> src, org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent tgtCtxt) throws FHIRException {
283    if (src == null || src.isEmpty())
284      return null;
285    Enumeration<ConceptMapRelationship> tgt = new Enumeration<ConceptMapRelationship>(new Enumerations.ConceptMapRelationshipEnumFactory());
286    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
287    ToolingExtensions.setCodeExtensionMod(tgtCtxt, VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE, src.getValueAsString());
288    switch (src.getValue()) {
289      case EQUIVALENT:
290        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.EQUIVALENT);
291        break;
292      case EQUAL:
293        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.EQUIVALENT);
294        break;
295      case WIDER:
296        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISNARROWERTHANTARGET);
297        break;
298      case SUBSUMES:
299        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISNARROWERTHANTARGET);
300        break;
301      case NARROWER:
302        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISBROADERTHANTARGET);
303        break;
304      case SPECIALIZES:
305        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISBROADERTHANTARGET);
306        break;
307      case INEXACT:
308        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.RELATEDTO);
309        break;
310      case UNMATCHED:
311        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NULL);
312        break;
313      case DISJOINT:
314        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NOTRELATEDTO);
315        break;
316      case RELATEDTO:
317        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.RELATEDTO);
318        break;
319      default:
320        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NULL);
321        break;
322    }
323    return tgt;
324  }
325
326  public static org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent convertOtherElementComponent(org.hl7.fhir.dstu3.model.ConceptMap.OtherElementComponent src, org.hl7.fhir.r5.model.ConceptMap tgtMap) throws FHIRException {
327    if (src == null)
328      return null;
329    org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent();
330    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
331    if (src.hasProperty())
332      tgt.setAttribute(tgtMap.registerAttribute(src.getProperty()));
333    
334    if (src.hasSystem()) {
335      tgt.setValue(new Coding().setSystem(src.getSystem()).setCode(src.getCode()).setDisplay(src.getDisplay()));
336    } else if (src.hasCodeElement()) {
337      tgt.setValue(String30_50.convertString(src.getCodeElement()));
338    }
339    return tgt;
340  }
341
342  public static org.hl7.fhir.dstu3.model.ConceptMap.OtherElementComponent convertOtherElementComponent(org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent src, org.hl7.fhir.r5.model.ConceptMap srcMap) throws FHIRException {
343    if (src == null)
344      return null;
345    org.hl7.fhir.dstu3.model.ConceptMap.OtherElementComponent tgt = new org.hl7.fhir.dstu3.model.ConceptMap.OtherElementComponent();
346    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
347    if (src.hasAttribute())
348      tgt.setProperty(srcMap.getAttributeUri(src.getAttribute()));    
349    if (src.hasValueCoding()) {
350      tgt.setSystem(src.getValueCoding().getSystem());
351      tgt.setCode(src.getValueCoding().getCode());
352      tgt.setDisplay(src.getValueCoding().getDisplay());
353    } else if (src.hasValue()) {
354        tgt.setCode(src.getValue().primitiveValue());
355    }
356    return tgt;
357  }
358
359  public static org.hl7.fhir.dstu3.model.ConceptMap.SourceElementComponent convertSourceElementComponent(org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent src, org.hl7.fhir.r5.model.ConceptMap srcMap) throws FHIRException {
360    if (src == null)
361      return null;
362    org.hl7.fhir.dstu3.model.ConceptMap.SourceElementComponent tgt = new org.hl7.fhir.dstu3.model.ConceptMap.SourceElementComponent();
363    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
364    if (src.hasCode())
365      tgt.setCodeElement(Code30_50.convertCode(src.getCodeElement()));
366    if (src.hasDisplay())
367      tgt.setDisplayElement(String30_50.convertString(src.getDisplayElement()));
368    if (src.hasNoMap() && src.getNoMap() == true) {
369      tgt.addTarget(new org.hl7.fhir.dstu3.model.ConceptMap.TargetElementComponent().setEquivalence(org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence.UNMATCHED));
370    } else {
371      for (org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent t : src.getTarget())
372        tgt.addTarget(convertTargetElementComponent(t, srcMap));
373    }
374    return tgt;
375  }
376
377  public static org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent convertSourceElementComponent(org.hl7.fhir.dstu3.model.ConceptMap.SourceElementComponent src, org.hl7.fhir.r5.model.ConceptMap tgtMap) throws FHIRException {
378    if (src == null)
379      return null;
380    org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent();
381    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
382    if (src.hasCode())
383      tgt.setCodeElement(Code30_50.convertCode(src.getCodeElement()));
384    if (src.hasDisplay())
385      tgt.setDisplayElement(String30_50.convertString(src.getDisplayElement()));
386    for (org.hl7.fhir.dstu3.model.ConceptMap.TargetElementComponent t : src.getTarget())
387      if (t.getEquivalence() == org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence.UNMATCHED) {
388        tgt.setNoMap(true);
389      } else {
390        tgt.addTarget(convertTargetElementComponent(t, tgtMap));
391      }
392    return tgt;
393  }
394
395  public static org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent convertTargetElementComponent(org.hl7.fhir.dstu3.model.ConceptMap.TargetElementComponent src, org.hl7.fhir.r5.model.ConceptMap tgtMap) throws FHIRException {
396    if (src == null)
397      return null;
398    org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent();
399    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
400    if (src.hasCode())
401      tgt.setCodeElement(Code30_50.convertCode(src.getCodeElement()));
402    if (src.hasDisplay())
403      tgt.setDisplayElement(String30_50.convertString(src.getDisplayElement()));
404    if (src.hasEquivalence())
405      tgt.setRelationshipElement(convertConceptMapRelationship(src.getEquivalenceElement(), tgt));
406    if (src.hasComment())
407      tgt.setCommentElement(String30_50.convertString(src.getCommentElement()));
408    for (org.hl7.fhir.dstu3.model.ConceptMap.OtherElementComponent t : src.getDependsOn())
409      tgt.addDependsOn(convertOtherElementComponent(t, tgtMap));
410    for (org.hl7.fhir.dstu3.model.ConceptMap.OtherElementComponent t : src.getProduct())
411      tgt.addProduct(convertOtherElementComponent(t, tgtMap));
412    return tgt;
413  }
414
415  public static org.hl7.fhir.dstu3.model.ConceptMap.TargetElementComponent convertTargetElementComponent(org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent src, org.hl7.fhir.r5.model.ConceptMap srcMap) throws FHIRException {
416    if (src == null)
417      return null;
418    org.hl7.fhir.dstu3.model.ConceptMap.TargetElementComponent tgt = new org.hl7.fhir.dstu3.model.ConceptMap.TargetElementComponent();
419    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt, VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE);
420    if (src.hasCode())
421      tgt.setCodeElement(Code30_50.convertCode(src.getCodeElement()));
422    if (src.hasDisplay())
423      tgt.setDisplayElement(String30_50.convertString(src.getDisplayElement()));
424    if (src.hasRelationship())
425      tgt.setEquivalenceElement(convertConceptMapEquivalence(src.getRelationshipElement(), src));
426    if (src.hasComment())
427      tgt.setCommentElement(String30_50.convertString(src.getCommentElement()));
428    for (org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent t : src.getDependsOn())
429      tgt.addDependsOn(convertOtherElementComponent(t, srcMap));
430    for (org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent t : src.getProduct())
431      tgt.addProduct(convertOtherElementComponent(t, srcMap));
432    return tgt;
433  }
434}