001package org.hl7.fhir.convertors.conv43_50.resources43_50;
002
003import java.util.stream.Collectors;
004
005import org.hl7.fhir.convertors.context.ConversionContext43_50;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Canonical40_50;
007import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.MarkDown40_50;
008import org.hl7.fhir.convertors.conv43_50.datatypes43_50.general43_50.CodeableConcept43_50;
009import org.hl7.fhir.convertors.conv43_50.datatypes43_50.metadata43_50.ContactDetail43_50;
010import org.hl7.fhir.convertors.conv43_50.datatypes43_50.metadata43_50.UsageContext43_50;
011import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Boolean43_50;
012import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Canonical43_50;
013import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Code43_50;
014import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.DateTime43_50;
015import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Id43_50;
016import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.MarkDown43_50;
017import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.String43_50;
018import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Uri43_50;
019import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Url43_50;
020import org.hl7.fhir.convertors.conv43_50.datatypes43_50.special43_50.Reference43_50;
021import org.hl7.fhir.exceptions.FHIRException;
022import org.hl7.fhir.r4.model.Extension;
023import org.hl7.fhir.r5.model.CanonicalType;
024import org.hl7.fhir.r5.model.Enumeration;
025import org.hl7.fhir.r5.model.ImplementationGuide;
026import org.hl7.fhir.utilities.Utilities;
027
028/*
029  Copyright (c) 2011+, HL7, Inc.
030  All rights reserved.
031  
032  Redistribution and use in source and binary forms, with or without modification, 
033  are permitted provided that the following conditions are met:
034  
035   * Redistributions of source code must retain the above copyright notice, this 
036     list of conditions and the following disclaimer.
037   * Redistributions in binary form must reproduce the above copyright notice, 
038     this list of conditions and the following disclaimer in the documentation 
039     and/or other materials provided with the distribution.
040   * Neither the name of HL7 nor the names of its contributors may be used to 
041     endorse or promote products derived from this software without specific 
042     prior written permission.
043  
044  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
045  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
046  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
047  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
048  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
049  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
050  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
051  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
052  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
053  POSSIBILITY OF SUCH DAMAGE.
054  
055*/
056// Generated on Sun, Feb 24, 2019 11:37+1100 for FHIR v4.0.0
057public class ImplementationGuide43_50 {
058
059  static final String EXT_IG_DEFINITION_PARAMETER = "http://hl7.org/fhir/tools/StructureDefinition/ig-parameter";
060  static final String EXT_IG_DEFINITION_RESOURCE_PROFILE = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.definition.resource.profile";
061  static final String EXT_IG_DEPENDSON_REASON = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.dependsOn.reason";
062
063  public static org.hl7.fhir.r5.model.ImplementationGuide convertImplementationGuide(org.hl7.fhir.r4b.model.ImplementationGuide src) throws FHIRException {
064    if (src == null)
065      return null;
066    org.hl7.fhir.r5.model.ImplementationGuide tgt = new org.hl7.fhir.r5.model.ImplementationGuide();
067    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt);
068    if (src.hasUrl())
069      tgt.setUrlElement(Uri43_50.convertUri(src.getUrlElement()));
070    if (src.hasVersion())
071      tgt.setVersionElement(String43_50.convertString(src.getVersionElement()));
072    if (src.hasName())
073      tgt.setNameElement(String43_50.convertString(src.getNameElement()));
074    if (src.hasTitle())
075      tgt.setTitleElement(String43_50.convertString(src.getTitleElement()));
076    if (src.hasStatus())
077      tgt.setStatusElement(Enumerations43_50.convertPublicationStatus(src.getStatusElement()));
078    if (src.hasExperimental())
079      tgt.setExperimentalElement(Boolean43_50.convertBoolean(src.getExperimentalElement()));
080    if (src.hasDate())
081      tgt.setDateElement(DateTime43_50.convertDateTime(src.getDateElement()));
082    if (src.hasPublisher())
083      tgt.setPublisherElement(String43_50.convertString(src.getPublisherElement()));
084    for (org.hl7.fhir.r4b.model.ContactDetail t : src.getContact())
085      tgt.addContact(ContactDetail43_50.convertContactDetail(t));
086    if (src.hasDescription())
087      tgt.setDescriptionElement(MarkDown43_50.convertMarkdown(src.getDescriptionElement()));
088    for (org.hl7.fhir.r4b.model.UsageContext t : src.getUseContext())
089      tgt.addUseContext(UsageContext43_50.convertUsageContext(t));
090    for (org.hl7.fhir.r4b.model.CodeableConcept t : src.getJurisdiction())
091      tgt.addJurisdiction(CodeableConcept43_50.convertCodeableConcept(t));
092    if (src.hasCopyright())
093      tgt.setCopyrightElement(MarkDown43_50.convertMarkdown(src.getCopyrightElement()));
094    if (src.hasPackageId())
095      tgt.setPackageIdElement(Id43_50.convertId(src.getPackageIdElement()));
096    if (src.hasLicense())
097      tgt.setLicenseElement(convertSPDXLicense(src.getLicenseElement()));
098    tgt.setFhirVersion(src.getFhirVersion().stream()
099      .map(Enumerations43_50::convertFHIRVersion)
100      .collect(Collectors.toList()));
101    for (org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDependsOnComponent t : src.getDependsOn())
102      tgt.addDependsOn(convertImplementationGuideDependsOnComponent(t));
103    for (org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideGlobalComponent t : src.getGlobal())
104      tgt.addGlobal(convertImplementationGuideGlobalComponent(t));
105    if (src.hasDefinition())
106      tgt.setDefinition(convertImplementationGuideDefinitionComponent(src.getDefinition()));
107    if (src.hasManifest())
108      tgt.setManifest(convertImplementationGuideManifestComponent(src.getManifest()));
109    return tgt;
110  }
111
112  public static org.hl7.fhir.r4b.model.ImplementationGuide convertImplementationGuide(org.hl7.fhir.r5.model.ImplementationGuide src) throws FHIRException {
113    if (src == null)
114      return null;
115    org.hl7.fhir.r4b.model.ImplementationGuide tgt = new org.hl7.fhir.r4b.model.ImplementationGuide();
116    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt);
117    if (src.hasUrl())
118      tgt.setUrlElement(Uri43_50.convertUri(src.getUrlElement()));
119    if (src.hasVersion())
120      tgt.setVersionElement(String43_50.convertString(src.getVersionElement()));
121    if (src.hasName())
122      tgt.setNameElement(String43_50.convertString(src.getNameElement()));
123    if (src.hasTitle())
124      tgt.setTitleElement(String43_50.convertString(src.getTitleElement()));
125    if (src.hasStatus())
126      tgt.setStatusElement(Enumerations43_50.convertPublicationStatus(src.getStatusElement()));
127    if (src.hasExperimental())
128      tgt.setExperimentalElement(Boolean43_50.convertBoolean(src.getExperimentalElement()));
129    if (src.hasDate())
130      tgt.setDateElement(DateTime43_50.convertDateTime(src.getDateElement()));
131    if (src.hasPublisher())
132      tgt.setPublisherElement(String43_50.convertString(src.getPublisherElement()));
133    for (org.hl7.fhir.r5.model.ContactDetail t : src.getContact())
134      tgt.addContact(ContactDetail43_50.convertContactDetail(t));
135    if (src.hasDescription())
136      tgt.setDescriptionElement(MarkDown43_50.convertMarkdown(src.getDescriptionElement()));
137    for (org.hl7.fhir.r5.model.UsageContext t : src.getUseContext())
138      tgt.addUseContext(UsageContext43_50.convertUsageContext(t));
139    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getJurisdiction())
140      tgt.addJurisdiction(CodeableConcept43_50.convertCodeableConcept(t));
141    if (src.hasCopyright())
142      tgt.setCopyrightElement(MarkDown43_50.convertMarkdown(src.getCopyrightElement()));
143    if (src.hasPackageId())
144      tgt.setPackageIdElement(Id43_50.convertId(src.getPackageIdElement()));
145    if (src.hasLicense())
146      tgt.setLicenseElement(convertSPDXLicense(src.getLicenseElement()));
147    tgt.setFhirVersion(src.getFhirVersion().stream()
148      .map(Enumerations43_50::convertFHIRVersion)
149      .collect(Collectors.toList()));
150    for (org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDependsOnComponent t : src.getDependsOn())
151      tgt.addDependsOn(convertImplementationGuideDependsOnComponent(t));
152    for (org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideGlobalComponent t : src.getGlobal())
153      tgt.addGlobal(convertImplementationGuideGlobalComponent(t));
154    if (src.hasDefinition())
155      tgt.setDefinition(convertImplementationGuideDefinitionComponent(src.getDefinition()));
156    if (src.hasManifest())
157      tgt.setManifest(convertImplementationGuideManifestComponent(src.getManifest()));
158    return tgt;
159  }
160
161  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ImplementationGuide.SPDXLicense> convertSPDXLicense(org.hl7.fhir.r4b.model.Enumeration<org.hl7.fhir.r4b.model.ImplementationGuide.SPDXLicense> src) throws FHIRException {
162    if (src == null || src.isEmpty())
163      return null;
164    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ImplementationGuide.SPDXLicense> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ImplementationGuide.SPDXLicenseEnumFactory());
165    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt);
166    tgt.setValue(org.hl7.fhir.r5.model.ImplementationGuide.SPDXLicense.fromCode(src.getValue().toCode()));
167    return tgt;
168  }
169
170  static public org.hl7.fhir.r4b.model.Enumeration<org.hl7.fhir.r4b.model.ImplementationGuide.SPDXLicense> convertSPDXLicense(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ImplementationGuide.SPDXLicense> src) throws FHIRException {
171    if (src == null || src.isEmpty())
172      return null;
173    org.hl7.fhir.r4b.model.Enumeration<org.hl7.fhir.r4b.model.ImplementationGuide.SPDXLicense> tgt = new org.hl7.fhir.r4b.model.Enumeration<>(new org.hl7.fhir.r4b.model.ImplementationGuide.SPDXLicenseEnumFactory());
174    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt);
175    tgt.setValue(org.hl7.fhir.r4b.model.ImplementationGuide.SPDXLicense.fromCode(src.getValue().toCode()));
176    return tgt;
177  }
178
179  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDependsOnComponent convertImplementationGuideDependsOnComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDependsOnComponent src) throws FHIRException {
180    if (src == null)
181      return null;
182    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDependsOnComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDependsOnComponent();
183    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt, EXT_IG_DEPENDSON_REASON);
184    if (src.hasUri())
185      tgt.setUriElement(Canonical43_50.convertCanonical(src.getUriElement()));
186    if (src.hasPackageId())
187      tgt.setPackageIdElement(Id43_50.convertId(src.getPackageIdElement()));
188    if (src.hasVersion())
189      tgt.setVersionElement(String43_50.convertString(src.getVersionElement()));
190    if (src.hasExtension(EXT_IG_DEPENDSON_REASON))
191      tgt.setReasonElement(MarkDown43_50.convertMarkdown((org.hl7.fhir.r4b.model.MarkdownType)src.getExtensionByUrl(EXT_IG_DEPENDSON_REASON).getValue()));
192    return tgt;
193  }
194
195  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDependsOnComponent convertImplementationGuideDependsOnComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDependsOnComponent src) throws FHIRException {
196    if (src == null)
197      return null;
198    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDependsOnComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDependsOnComponent();
199    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
200    if (src.hasUri())
201      tgt.setUriElement(Canonical43_50.convertCanonical(src.getUriElement()));
202    if (src.hasPackageId())
203      tgt.setPackageIdElement(Id43_50.convertId(src.getPackageIdElement()));
204    if (src.hasVersion())
205      tgt.setVersionElement(String43_50.convertString(src.getVersionElement()));
206    if (src.hasReason())
207      tgt.addExtension(EXT_IG_DEPENDSON_REASON, MarkDown43_50.convertMarkdown(src.getReasonElement()));
208    return tgt;
209  }
210
211  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideGlobalComponent convertImplementationGuideGlobalComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideGlobalComponent src) throws FHIRException {
212    if (src == null)
213      return null;
214    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideGlobalComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideGlobalComponent();
215    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
216    if (src.hasType())
217      tgt.setTypeElement(Code43_50.convertCode(src.getTypeElement()));
218    if (src.hasProfile())
219      tgt.setProfileElement(Canonical43_50.convertCanonical(src.getProfileElement()));
220    return tgt;
221  }
222
223  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideGlobalComponent convertImplementationGuideGlobalComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideGlobalComponent src) throws FHIRException {
224    if (src == null)
225      return null;
226    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideGlobalComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideGlobalComponent();
227    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
228    if (src.hasType())
229      tgt.setTypeElement(Code43_50.convertCode(src.getTypeElement()));
230    if (src.hasProfile())
231      tgt.setProfileElement(Canonical43_50.convertCanonical(src.getProfileElement()));
232    return tgt;
233  }
234
235  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionComponent convertImplementationGuideDefinitionComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionComponent src) throws FHIRException {
236    if (src == null)
237      return null;
238    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionComponent();
239    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
240    for (org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent t : src.getGrouping())
241      tgt.addGrouping(convertImplementationGuideDefinitionGroupingComponent(t));
242    for (org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent t : src.getResource())
243      tgt.addResource(convertImplementationGuideDefinitionResourceComponent(t));
244    if (src.hasPage())
245      tgt.setPage(convertImplementationGuideDefinitionPageComponent(src.getPage()));
246    for (org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent t : src.getParameter())
247      tgt.addParameter(convertImplementationGuideDefinitionParameterComponent(t));
248    for (org.hl7.fhir.r4b.model.Extension e : org.hl7.fhir.r4b.utils.ToolingExtensions.getExtensions(src, EXT_IG_DEFINITION_PARAMETER)) {
249      org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent p = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
250      p.getCode().setCode(org.hl7.fhir.r4b.utils.ToolingExtensions.readStringExtension(e, "code"));
251      p.setValue(org.hl7.fhir.r4b.utils.ToolingExtensions.readStringExtension(e, "Value"));
252      tgt.addParameter(p);
253    }
254    for (org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent t : src.getTemplate())
255      tgt.addTemplate(convertImplementationGuideDefinitionTemplateComponent(t));
256    return tgt;
257  }
258
259  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionComponent convertImplementationGuideDefinitionComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionComponent src) throws FHIRException {
260    if (src == null)
261      return null;
262    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionComponent();
263    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
264    for (org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent t : src.getGrouping())
265      tgt.addGrouping(convertImplementationGuideDefinitionGroupingComponent(t));
266    for (org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent t : src.getResource())
267      tgt.addResource(convertImplementationGuideDefinitionResourceComponent(t));
268    if (src.hasPage())
269      tgt.setPage(convertImplementationGuideDefinitionPageComponent(src.getPage()));
270    for (org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent t : src.getParameter()) {
271      if (Utilities.existsInList(t.getCode().getCode(), "apply", "path-resource", "path-pages", "path-tx-cache", "expansion-parameter", "rule-broken-links", "generate-xml", "generate-json", "generate-turtle", "html-template"))
272        tgt.addParameter(convertImplementationGuideDefinitionParameterComponent(t));
273      else {
274        org.hl7.fhir.r4b.model.Extension e = new org.hl7.fhir.r4b.model.Extension(EXT_IG_DEFINITION_PARAMETER);
275        org.hl7.fhir.r4b.model.Extension eCode = new org.hl7.fhir.r4b.model.Extension("code", new org.hl7.fhir.r4b.model.CodeType(t.getCode().getCode()));
276        org.hl7.fhir.r4b.model.Extension eValue = new org.hl7.fhir.r4b.model.Extension("value", new org.hl7.fhir.r4b.model.StringType(t.getValue()));
277        e.addExtension(eCode);
278        e.addExtension(eValue);
279        tgt.addExtension(e);
280      }
281    }
282    for (org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent t : src.getTemplate())
283      tgt.addTemplate(convertImplementationGuideDefinitionTemplateComponent(t));
284    return tgt;
285  }
286
287  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent convertImplementationGuideDefinitionGroupingComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent src) throws FHIRException {
288    if (src == null)
289      return null;
290    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent();
291    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
292    if (src.hasName())
293      tgt.setNameElement(String43_50.convertString(src.getNameElement()));
294    if (src.hasDescription())
295      tgt.setDescriptionElement(String43_50.convertStringToMarkdown(src.getDescriptionElement()));
296    return tgt;
297  }
298
299  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent convertImplementationGuideDefinitionGroupingComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent src) throws FHIRException {
300    if (src == null)
301      return null;
302    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionGroupingComponent();
303    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
304    if (src.hasName())
305      tgt.setNameElement(String43_50.convertString(src.getNameElement()));
306    if (src.hasDescription())
307      tgt.setDescriptionElement(String43_50.convertString(src.getDescriptionElement()));
308    return tgt;
309  }
310
311  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent convertImplementationGuideDefinitionResourceComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent src) throws FHIRException {
312    if (src == null)
313      return null;
314    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
315    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
316    if (src.hasReference())
317      tgt.setReference(Reference43_50.convertReference(src.getReference()));
318    tgt.setFhirVersion(src.getFhirVersion().stream()
319      .map(Enumerations43_50::convertFHIRVersion)
320      .collect(Collectors.toList()));
321    if (src.hasName())
322      tgt.setNameElement(String43_50.convertString(src.getNameElement()));
323    if (src.hasDescription())
324      tgt.setDescriptionElement(String43_50.convertStringToMarkdown(src.getDescriptionElement()));
325    if (src.hasExampleBooleanType())
326      tgt.setIsExampleElement(Boolean43_50.convertBoolean(src.getExampleBooleanType()));
327    if (src.hasExampleCanonicalType()) {
328      tgt.setIsExample(true);
329      tgt.getProfile().add(Canonical43_50.convertCanonical(src.getExampleCanonicalType()));
330    }
331    for (org.hl7.fhir.r4b.model.Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) {
332      tgt.getProfile().add(Canonical43_50.convertCanonical((org.hl7.fhir.r4b.model.CanonicalType)ext.getValue()));
333    }
334    if (src.hasGroupingId())
335      tgt.setGroupingIdElement(Id43_50.convertId(src.getGroupingIdElement()));
336    return tgt;
337  }
338
339  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent convertImplementationGuideDefinitionResourceComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent src) throws FHIRException {
340    if (src == null)
341      return null;
342    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
343    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
344    if (src.hasReference())
345      tgt.setReference(Reference43_50.convertReference(src.getReference()));
346    tgt.setFhirVersion(src.getFhirVersion().stream()
347      .map(Enumerations43_50::convertFHIRVersion)
348      .collect(Collectors.toList()));
349    if (src.hasName())
350      tgt.setNameElement(String43_50.convertString(src.getNameElement()));
351    if (src.hasDescription())
352      tgt.setDescriptionElement(String43_50.convertString(src.getDescriptionElement()));
353    if (src.hasIsExample())
354      tgt.setExample(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getIsExampleElement()));
355    if (src.hasProfile())
356      tgt.setExample(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getProfile().get(0)));
357    if (src.getProfile().size() > 1) {
358      for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size())) {
359        tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Canonical43_50.convertCanonical(p));
360      }
361    }
362    if (src.hasGroupingId())
363      tgt.setGroupingIdElement(Id43_50.convertId(src.getGroupingIdElement()));
364    return tgt;
365  }
366
367  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent convertImplementationGuideDefinitionPageComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent src) throws FHIRException {
368    if (src == null)
369      return null;
370    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent();
371    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
372    if (src.hasNameReference())
373      tgt.setName(src.getNameReference().getReference());
374    else if (src.hasNameUrlType())
375      tgt.setName(src.getNameUrlType().getValue());
376    if (src.hasTitle())
377      tgt.setTitleElement(String43_50.convertString(src.getTitleElement()));
378    if (src.hasGeneration())
379      tgt.setGenerationElement(convertGuidePageGeneration(src.getGenerationElement()));
380    for (org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent t : src.getPage())
381      tgt.addPage(convertImplementationGuideDefinitionPageComponent(t));
382    return tgt;
383  }
384
385  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent convertImplementationGuideDefinitionPageComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent src) throws FHIRException {
386    if (src == null)
387      return null;
388    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent();
389    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
390    if (src.hasName())
391      tgt.setName(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getNameElement()));
392    if (src.hasTitle())
393      tgt.setTitleElement(String43_50.convertString(src.getTitleElement()));
394    if (src.hasGeneration())
395      tgt.setGenerationElement(convertGuidePageGeneration(src.getGenerationElement()));
396    for (org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionPageComponent t : src.getPage())
397      tgt.addPage(convertImplementationGuideDefinitionPageComponent(t));
398    return tgt;
399  }
400
401  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ImplementationGuide.GuidePageGeneration> convertGuidePageGeneration(org.hl7.fhir.r4b.model.Enumeration<org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGeneration> src) throws FHIRException {
402      if (src == null || src.isEmpty())
403          return null;
404      Enumeration<ImplementationGuide.GuidePageGeneration> tgt = new Enumeration<>(new ImplementationGuide.GuidePageGenerationEnumFactory());
405      ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt);
406      if (src.getValue() == null) {
407          tgt.setValue(null);
408      } else {
409          switch (src.getValue()) {
410              case HTML:
411                  tgt.setValue(ImplementationGuide.GuidePageGeneration.HTML);
412                  break;
413              case MARKDOWN:
414                  tgt.setValue(ImplementationGuide.GuidePageGeneration.MARKDOWN);
415                  break;
416              case XML:
417                  tgt.setValue(ImplementationGuide.GuidePageGeneration.XML);
418                  break;
419              case GENERATED:
420                  tgt.setValue(ImplementationGuide.GuidePageGeneration.GENERATED);
421                  break;
422              default:
423                  tgt.setValue(ImplementationGuide.GuidePageGeneration.NULL);
424                  break;
425          }
426      }
427      return tgt;
428  }
429
430  static public org.hl7.fhir.r4b.model.Enumeration<org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGeneration> convertGuidePageGeneration(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ImplementationGuide.GuidePageGeneration> src) throws FHIRException {
431      if (src == null || src.isEmpty())
432          return null;
433      org.hl7.fhir.r4b.model.Enumeration<org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGeneration> tgt = new org.hl7.fhir.r4b.model.Enumeration<>(new org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGenerationEnumFactory());
434      ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt);
435      if (src.getValue() == null) {
436          tgt.setValue(null);
437      } else {
438          switch (src.getValue()) {
439              case HTML:
440                  tgt.setValue(org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGeneration.HTML);
441                  break;
442              case MARKDOWN:
443                  tgt.setValue(org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGeneration.MARKDOWN);
444                  break;
445              case XML:
446                  tgt.setValue(org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGeneration.XML);
447                  break;
448              case GENERATED:
449                  tgt.setValue(org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGeneration.GENERATED);
450                  break;
451              default:
452                  tgt.setValue(org.hl7.fhir.r4b.model.ImplementationGuide.GuidePageGeneration.NULL);
453                  break;
454          }
455      }
456      return tgt;
457  }
458
459  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent convertImplementationGuideDefinitionParameterComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent src) throws FHIRException {
460    if (src == null)
461      return null;
462    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
463    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
464    if (src.hasCode())
465      tgt.getCode().setCode(src.getCode());
466    if (src.hasValue())
467      tgt.setValueElement(String43_50.convertString(src.getValueElement()));
468    return tgt;
469  }
470
471  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent convertImplementationGuideDefinitionParameterComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent src) throws FHIRException {
472    if (src == null)
473      return null;
474    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
475    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
476    if (src.hasCode())
477      tgt.getCodeElement().setValueAsString(src.getCode().getCode());
478    if (src.hasValue())
479      tgt.setValueElement(String43_50.convertString(src.getValueElement()));
480    return tgt;
481  }
482
483  public static org.hl7.fhir.r5.utils.GuideParameterCode convertGuideParameterCode(org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode src) throws FHIRException {
484    if (src == null)
485      return null;
486    switch (src) {
487      case APPLY:
488        return org.hl7.fhir.r5.utils.GuideParameterCode.APPLY;
489      case PATHRESOURCE:
490        return org.hl7.fhir.r5.utils.GuideParameterCode.PATHRESOURCE;
491      case PATHPAGES:
492        return org.hl7.fhir.r5.utils.GuideParameterCode.PATHPAGES;
493      case PATHTXCACHE:
494        return org.hl7.fhir.r5.utils.GuideParameterCode.PATHTXCACHE;
495      case EXPANSIONPARAMETER:
496        return org.hl7.fhir.r5.utils.GuideParameterCode.EXPANSIONPARAMETER;
497      case RULEBROKENLINKS:
498        return org.hl7.fhir.r5.utils.GuideParameterCode.RULEBROKENLINKS;
499      case GENERATEXML:
500        return org.hl7.fhir.r5.utils.GuideParameterCode.GENERATEXML;
501      case GENERATEJSON:
502        return org.hl7.fhir.r5.utils.GuideParameterCode.GENERATEJSON;
503      case GENERATETURTLE:
504        return org.hl7.fhir.r5.utils.GuideParameterCode.GENERATETURTLE;
505      case HTMLTEMPLATE:
506        return org.hl7.fhir.r5.utils.GuideParameterCode.HTMLTEMPLATE;
507      default:
508        return org.hl7.fhir.r5.utils.GuideParameterCode.NULL;
509    }
510  }
511
512  public static org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode convertGuideParameterCode(org.hl7.fhir.r5.utils.GuideParameterCode src) throws FHIRException {
513    if (src == null)
514      return null;
515    switch (src) {
516      case APPLY:
517        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.APPLY;
518      case PATHRESOURCE:
519        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.PATHRESOURCE;
520      case PATHPAGES:
521        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.PATHPAGES;
522      case PATHTXCACHE:
523        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.PATHTXCACHE;
524      case EXPANSIONPARAMETER:
525        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.EXPANSIONPARAMETER;
526      case RULEBROKENLINKS:
527        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.RULEBROKENLINKS;
528      case GENERATEXML:
529        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.GENERATEXML;
530      case GENERATEJSON:
531        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.GENERATEJSON;
532      case GENERATETURTLE:
533        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.GENERATETURTLE;
534      case HTMLTEMPLATE:
535        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.HTMLTEMPLATE;
536      default:
537        return org.hl7.fhir.r4b.model.ImplementationGuide.GuideParameterCode.NULL;
538    }
539  }
540
541  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent convertImplementationGuideDefinitionTemplateComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent src) throws FHIRException {
542    if (src == null)
543      return null;
544    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
545    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
546    if (src.hasCode())
547      tgt.setCodeElement(Code43_50.convertCode(src.getCodeElement()));
548    if (src.hasSource())
549      tgt.setSourceElement(String43_50.convertString(src.getSourceElement()));
550    if (src.hasScope())
551      tgt.setScopeElement(String43_50.convertString(src.getScopeElement()));
552    return tgt;
553  }
554
555  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent convertImplementationGuideDefinitionTemplateComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent src) throws FHIRException {
556    if (src == null)
557      return null;
558    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
559    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
560    if (src.hasCode())
561      tgt.setCodeElement(Code43_50.convertCode(src.getCodeElement()));
562    if (src.hasSource())
563      tgt.setSourceElement(String43_50.convertString(src.getSourceElement()));
564    if (src.hasScope())
565      tgt.setScopeElement(String43_50.convertString(src.getScopeElement()));
566    return tgt;
567  }
568
569  public static org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideManifestComponent convertImplementationGuideManifestComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideManifestComponent src) throws FHIRException {
570    if (src == null)
571      return null;
572    org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideManifestComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideManifestComponent();
573    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
574    if (src.hasRendering())
575      tgt.setRenderingElement(Url43_50.convertUrl(src.getRenderingElement()));
576    for (org.hl7.fhir.r4b.model.ImplementationGuide.ManifestResourceComponent t : src.getResource())
577      tgt.addResource(convertManifestResourceComponent(t));
578    for (org.hl7.fhir.r4b.model.ImplementationGuide.ManifestPageComponent t : src.getPage())
579      tgt.addPage(convertManifestPageComponent(t));
580    for (org.hl7.fhir.r4b.model.StringType t : src.getImage()) tgt.getImage().add(String43_50.convertString(t));
581    for (org.hl7.fhir.r4b.model.StringType t : src.getOther()) tgt.getOther().add(String43_50.convertString(t));
582    return tgt;
583  }
584
585  public static org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideManifestComponent convertImplementationGuideManifestComponent(org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideManifestComponent src) throws FHIRException {
586    if (src == null)
587      return null;
588    org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideManifestComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ImplementationGuideManifestComponent();
589    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
590    if (src.hasRendering())
591      tgt.setRenderingElement(Url43_50.convertUrl(src.getRenderingElement()));
592    for (org.hl7.fhir.r5.model.ImplementationGuide.ManifestResourceComponent t : src.getResource())
593      tgt.addResource(convertManifestResourceComponent(t));
594    for (org.hl7.fhir.r5.model.ImplementationGuide.ManifestPageComponent t : src.getPage())
595      tgt.addPage(convertManifestPageComponent(t));
596    for (org.hl7.fhir.r5.model.StringType t : src.getImage()) tgt.getImage().add(String43_50.convertString(t));
597    for (org.hl7.fhir.r5.model.StringType t : src.getOther()) tgt.getOther().add(String43_50.convertString(t));
598    return tgt;
599  }
600
601  public static org.hl7.fhir.r5.model.ImplementationGuide.ManifestResourceComponent convertManifestResourceComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ManifestResourceComponent src) throws FHIRException {
602    if (src == null)
603      return null;
604    org.hl7.fhir.r5.model.ImplementationGuide.ManifestResourceComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ManifestResourceComponent();
605    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
606    if (src.hasReference())
607      tgt.setReference(Reference43_50.convertReference(src.getReference()));
608    if (src.hasExampleBooleanType())
609      tgt.setIsExampleElement(Boolean43_50.convertBoolean(src.getExampleBooleanType()));
610    if (src.hasExampleCanonicalType())
611      tgt.getProfile().add((Canonical43_50.convertCanonical(src.getExampleCanonicalType())));
612    if (src.hasRelativePath())
613      tgt.setRelativePathElement(Url43_50.convertUrl(src.getRelativePathElement()));
614    return tgt;
615  }
616
617  public static org.hl7.fhir.r4b.model.ImplementationGuide.ManifestResourceComponent convertManifestResourceComponent(org.hl7.fhir.r5.model.ImplementationGuide.ManifestResourceComponent src) throws FHIRException {
618    if (src == null)
619      return null;
620    org.hl7.fhir.r4b.model.ImplementationGuide.ManifestResourceComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ManifestResourceComponent();
621    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
622    if (src.hasReference())
623      tgt.setReference(Reference43_50.convertReference(src.getReference()));
624    if (src.hasIsExample())
625      tgt.setExample(Boolean43_50.convertBoolean(src.getIsExampleElement()));
626    if (src.hasProfile())
627      tgt.setExample(Canonical43_50.convertCanonical(src.getProfile().get(0)));
628    if (src.hasRelativePath())
629      tgt.setRelativePathElement(Url43_50.convertUrl(src.getRelativePathElement()));
630    return tgt;
631  }
632
633  public static org.hl7.fhir.r5.model.ImplementationGuide.ManifestPageComponent convertManifestPageComponent(org.hl7.fhir.r4b.model.ImplementationGuide.ManifestPageComponent src) throws FHIRException {
634    if (src == null)
635      return null;
636    org.hl7.fhir.r5.model.ImplementationGuide.ManifestPageComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ManifestPageComponent();
637    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
638    if (src.hasName())
639      tgt.setNameElement(String43_50.convertString(src.getNameElement()));
640    if (src.hasTitle())
641      tgt.setTitleElement(String43_50.convertString(src.getTitleElement()));
642    for (org.hl7.fhir.r4b.model.StringType t : src.getAnchor()) tgt.getAnchor().add(String43_50.convertString(t));
643    return tgt;
644  }
645
646  public static org.hl7.fhir.r4b.model.ImplementationGuide.ManifestPageComponent convertManifestPageComponent(org.hl7.fhir.r5.model.ImplementationGuide.ManifestPageComponent src) throws FHIRException {
647    if (src == null)
648      return null;
649    org.hl7.fhir.r4b.model.ImplementationGuide.ManifestPageComponent tgt = new org.hl7.fhir.r4b.model.ImplementationGuide.ManifestPageComponent();
650    ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyBackboneElement(src, tgt);
651    if (src.hasName())
652      tgt.setNameElement(String43_50.convertString(src.getNameElement()));
653    if (src.hasTitle())
654      tgt.setTitleElement(String43_50.convertString(src.getTitleElement()));
655    for (org.hl7.fhir.r5.model.StringType t : src.getAnchor()) tgt.getAnchor().add(String43_50.convertString(t));
656    return tgt;
657  }
658}