001package org.hl7.fhir.convertors.conv40_50.resources40_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext40_50;
004import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.CodeableConcept40_50;
005import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Duration40_50;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Identifier40_50;
007import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Range40_50;
008import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.SimpleQuantity40_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.String40_50;
011import org.hl7.fhir.exceptions.FHIRException;
012import org.hl7.fhir.r5.model.Enumeration;
013import org.hl7.fhir.r5.model.SpecimenDefinition;
014
015/*
016  Copyright (c) 2011+, HL7, Inc.
017  All rights reserved.
018  
019  Redistribution and use in source and binary forms, with or without modification, 
020  are permitted provided that the following conditions are met:
021  
022   * Redistributions of source code must retain the above copyright notice, this 
023     list of conditions and the following disclaimer.
024   * Redistributions in binary form must reproduce the above copyright notice, 
025     this list of conditions and the following disclaimer in the documentation 
026     and/or other materials provided with the distribution.
027   * Neither the name of HL7 nor the names of its contributors may be used to 
028     endorse or promote products derived from this software without specific 
029     prior written permission.
030  
031  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
032  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
033  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
034  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
035  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
036  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
037  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
038  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
039  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
040  POSSIBILITY OF SUCH DAMAGE.
041  
042*/
043// Generated on Sun, Feb 24, 2019 11:37+1100 for FHIR v4.0.0
044public class SpecimenDefinition40_50 {
045
046  public static org.hl7.fhir.r5.model.SpecimenDefinition convertSpecimenDefinition(org.hl7.fhir.r4.model.SpecimenDefinition src) throws FHIRException {
047    if (src == null)
048      return null;
049    org.hl7.fhir.r5.model.SpecimenDefinition tgt = new org.hl7.fhir.r5.model.SpecimenDefinition();
050    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
051    if (src.hasIdentifier())
052      tgt.setIdentifier(Identifier40_50.convertIdentifier(src.getIdentifier()));
053    if (src.hasTypeCollected())
054      tgt.setTypeCollected(CodeableConcept40_50.convertCodeableConcept(src.getTypeCollected()));
055    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getPatientPreparation())
056      tgt.addPatientPreparation(CodeableConcept40_50.convertCodeableConcept(t));
057    if (src.hasTimeAspect())
058      tgt.setTimeAspectElement(String40_50.convertString(src.getTimeAspectElement()));
059    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getCollection())
060      tgt.addCollection(CodeableConcept40_50.convertCodeableConcept(t));
061    for (org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent t : src.getTypeTested())
062      tgt.addTypeTested(convertSpecimenDefinitionTypeTestedComponent(t));
063    return tgt;
064  }
065
066  public static org.hl7.fhir.r4.model.SpecimenDefinition convertSpecimenDefinition(org.hl7.fhir.r5.model.SpecimenDefinition src) throws FHIRException {
067    if (src == null)
068      return null;
069    org.hl7.fhir.r4.model.SpecimenDefinition tgt = new org.hl7.fhir.r4.model.SpecimenDefinition();
070    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
071    if (src.hasIdentifier())
072      tgt.setIdentifier(Identifier40_50.convertIdentifier(src.getIdentifier()));
073    if (src.hasTypeCollected())
074      tgt.setTypeCollected(CodeableConcept40_50.convertCodeableConcept(src.getTypeCollected()));
075    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getPatientPreparation())
076      tgt.addPatientPreparation(CodeableConcept40_50.convertCodeableConcept(t));
077    if (src.hasTimeAspect())
078      tgt.setTimeAspectElement(String40_50.convertString(src.getTimeAspectElement()));
079    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getCollection())
080      tgt.addCollection(CodeableConcept40_50.convertCodeableConcept(t));
081    for (org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent t : src.getTypeTested())
082      tgt.addTypeTested(convertSpecimenDefinitionTypeTestedComponent(t));
083    return tgt;
084  }
085
086  public static org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent convertSpecimenDefinitionTypeTestedComponent(org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent src) throws FHIRException {
087    if (src == null)
088      return null;
089    org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent tgt = new org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent();
090    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
091    if (src.hasIsDerived())
092      tgt.setIsDerivedElement(Boolean40_50.convertBoolean(src.getIsDerivedElement()));
093    if (src.hasType())
094      tgt.setType(CodeableConcept40_50.convertCodeableConcept(src.getType()));
095    if (src.hasPreference())
096      tgt.setPreferenceElement(convertSpecimenContainedPreference(src.getPreferenceElement()));
097    if (src.hasContainer())
098      tgt.setContainer(convertSpecimenDefinitionTypeTestedContainerComponent(src.getContainer()));
099    if (src.hasRequirement())
100      tgt.setRequirementElement(String40_50.convertStringToMarkdown(src.getRequirementElement()));
101    if (src.hasRetentionTime())
102      tgt.setRetentionTime(Duration40_50.convertDuration(src.getRetentionTime()));
103    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getRejectionCriterion())
104      tgt.addRejectionCriterion(CodeableConcept40_50.convertCodeableConcept(t));
105    for (org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent t : src.getHandling())
106      tgt.addHandling(convertSpecimenDefinitionTypeTestedHandlingComponent(t));
107    return tgt;
108  }
109
110  public static org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent convertSpecimenDefinitionTypeTestedComponent(org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent src) throws FHIRException {
111    if (src == null)
112      return null;
113    org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent tgt = new org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedComponent();
114    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
115    if (src.hasIsDerived())
116      tgt.setIsDerivedElement(Boolean40_50.convertBoolean(src.getIsDerivedElement()));
117    if (src.hasType())
118      tgt.setType(CodeableConcept40_50.convertCodeableConcept(src.getType()));
119    if (src.hasPreference())
120      tgt.setPreferenceElement(convertSpecimenContainedPreference(src.getPreferenceElement()));
121    if (src.hasContainer())
122      tgt.setContainer(convertSpecimenDefinitionTypeTestedContainerComponent(src.getContainer()));
123    if (src.hasRequirement())
124      tgt.setRequirementElement(String40_50.convertString(src.getRequirementElement()));
125    if (src.hasRetentionTime())
126      tgt.setRetentionTime(Duration40_50.convertDuration(src.getRetentionTime()));
127    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getRejectionCriterion())
128      tgt.addRejectionCriterion(CodeableConcept40_50.convertCodeableConcept(t));
129    for (org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent t : src.getHandling())
130      tgt.addHandling(convertSpecimenDefinitionTypeTestedHandlingComponent(t));
131    return tgt;
132  }
133
134  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenContainedPreference> convertSpecimenContainedPreference(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenContainedPreference> src) throws FHIRException {
135      if (src == null || src.isEmpty())
136          return null;
137      Enumeration<SpecimenDefinition.SpecimenContainedPreference> tgt = new Enumeration<>(new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
138      ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
139      if (src.getValue() == null) {
140          tgt.setValue(null);
141      } else {
142          switch (src.getValue()) {
143              case PREFERRED:
144                  tgt.setValue(SpecimenDefinition.SpecimenContainedPreference.PREFERRED);
145                  break;
146              case ALTERNATE:
147                  tgt.setValue(SpecimenDefinition.SpecimenContainedPreference.ALTERNATE);
148                  break;
149              default:
150                  tgt.setValue(SpecimenDefinition.SpecimenContainedPreference.NULL);
151                  break;
152          }
153      }
154      return tgt;
155  }
156
157  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenContainedPreference> convertSpecimenContainedPreference(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenContainedPreference> src) throws FHIRException {
158      if (src == null || src.isEmpty())
159          return null;
160      org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenContainedPreference> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
161      ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
162      if (src.getValue() == null) {
163          tgt.setValue(null);
164      } else {
165          switch (src.getValue()) {
166              case PREFERRED:
167                  tgt.setValue(org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenContainedPreference.PREFERRED);
168                  break;
169              case ALTERNATE:
170                  tgt.setValue(org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenContainedPreference.ALTERNATE);
171                  break;
172              default:
173                  tgt.setValue(org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenContainedPreference.NULL);
174                  break;
175          }
176      }
177      return tgt;
178  }
179
180  public static org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent convertSpecimenDefinitionTypeTestedContainerComponent(org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent src) throws FHIRException {
181    if (src == null)
182      return null;
183    org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent tgt = new org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent();
184    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
185    if (src.hasMaterial())
186      tgt.setMaterial(CodeableConcept40_50.convertCodeableConcept(src.getMaterial()));
187    if (src.hasType())
188      tgt.setType(CodeableConcept40_50.convertCodeableConcept(src.getType()));
189    if (src.hasCap())
190      tgt.setCap(CodeableConcept40_50.convertCodeableConcept(src.getCap()));
191    if (src.hasDescription())
192      tgt.setDescriptionElement(String40_50.convertStringToMarkdown(src.getDescriptionElement()));
193    if (src.hasCapacity())
194      tgt.setCapacity(SimpleQuantity40_50.convertSimpleQuantity(src.getCapacity()));
195    if (src.hasMinimumVolume())
196      tgt.setMinimumVolume(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getMinimumVolume()));
197    for (org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent t : src.getAdditive())
198      tgt.addAdditive(convertSpecimenDefinitionTypeTestedContainerAdditiveComponent(t));
199    if (src.hasPreparation())
200      tgt.setPreparationElement(String40_50.convertStringToMarkdown(src.getPreparationElement()));
201    return tgt;
202  }
203
204  public static org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent convertSpecimenDefinitionTypeTestedContainerComponent(org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent src) throws FHIRException {
205    if (src == null)
206      return null;
207    org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent tgt = new org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent();
208    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
209    if (src.hasMaterial())
210      tgt.setMaterial(CodeableConcept40_50.convertCodeableConcept(src.getMaterial()));
211    if (src.hasType())
212      tgt.setType(CodeableConcept40_50.convertCodeableConcept(src.getType()));
213    if (src.hasCap())
214      tgt.setCap(CodeableConcept40_50.convertCodeableConcept(src.getCap()));
215    if (src.hasDescription())
216      tgt.setDescriptionElement(String40_50.convertString(src.getDescriptionElement()));
217    if (src.hasCapacity())
218      tgt.setCapacity(SimpleQuantity40_50.convertSimpleQuantity(src.getCapacity()));
219    if (src.hasMinimumVolume())
220      tgt.setMinimumVolume(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getMinimumVolume()));
221    for (org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent t : src.getAdditive())
222      tgt.addAdditive(convertSpecimenDefinitionTypeTestedContainerAdditiveComponent(t));
223    if (src.hasPreparation())
224      tgt.setPreparationElement(String40_50.convertString(src.getPreparationElement()));
225    return tgt;
226  }
227
228  public static org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent convertSpecimenDefinitionTypeTestedContainerAdditiveComponent(org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent src) throws FHIRException {
229    if (src == null)
230      return null;
231    org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent tgt = new org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent();
232    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
233    if (src.hasAdditive())
234      tgt.setAdditive(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getAdditive()));
235    return tgt;
236  }
237
238  public static org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent convertSpecimenDefinitionTypeTestedContainerAdditiveComponent(org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent src) throws FHIRException {
239    if (src == null)
240      return null;
241    org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent tgt = new org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent();
242    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
243    if (src.hasAdditive())
244      tgt.setAdditive(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getAdditive()));
245    return tgt;
246  }
247
248  public static org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent convertSpecimenDefinitionTypeTestedHandlingComponent(org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent src) throws FHIRException {
249    if (src == null)
250      return null;
251    org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent tgt = new org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent();
252    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
253    if (src.hasTemperatureQualifier())
254      tgt.setTemperatureQualifier(CodeableConcept40_50.convertCodeableConcept(src.getTemperatureQualifier()));
255    if (src.hasTemperatureRange())
256      tgt.setTemperatureRange(Range40_50.convertRange(src.getTemperatureRange()));
257    if (src.hasMaxDuration())
258      tgt.setMaxDuration(Duration40_50.convertDuration(src.getMaxDuration()));
259    if (src.hasInstruction())
260      tgt.setInstructionElement(String40_50.convertStringToMarkdown(src.getInstructionElement()));
261    return tgt;
262  }
263
264  public static org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent convertSpecimenDefinitionTypeTestedHandlingComponent(org.hl7.fhir.r5.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent src) throws FHIRException {
265    if (src == null)
266      return null;
267    org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent tgt = new org.hl7.fhir.r4.model.SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent();
268    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyBackboneElement(src, tgt);
269    if (src.hasTemperatureQualifier())
270      tgt.setTemperatureQualifier(CodeableConcept40_50.convertCodeableConcept(src.getTemperatureQualifier()));
271    if (src.hasTemperatureRange())
272      tgt.setTemperatureRange(Range40_50.convertRange(src.getTemperatureRange()));
273    if (src.hasMaxDuration())
274      tgt.setMaxDuration(Duration40_50.convertDuration(src.getMaxDuration()));
275    if (src.hasInstruction())
276      tgt.setInstructionElement(String40_50.convertString(src.getInstructionElement()));
277    return tgt;
278  }
279}