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