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