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.*;
005import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.*;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.special40_50.Reference40_50;
007import org.hl7.fhir.exceptions.FHIRException;
008
009/*
010  Copyright (c) 2011+, HL7, Inc.
011  All rights reserved.
012  
013  Redistribution and use in source and binary forms, with or without modification, 
014  are permitted provided that the following conditions are met:
015  
016   * Redistributions of source code must retain the above copyright notice, this 
017     list of conditions and the following disclaimer.
018   * Redistributions in binary form must reproduce the above copyright notice, 
019     this list of conditions and the following disclaimer in the documentation 
020     and/or other materials provided with the distribution.
021   * Neither the name of HL7 nor the names of its contributors may be used to 
022     endorse or promote products derived from this software without specific 
023     prior written permission.
024  
025  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
026  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
027  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
028  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
029  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
030  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
031  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
032  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
033  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
034  POSSIBILITY OF SUCH DAMAGE.
035  
036*/
037// Generated on Sun, Feb 24, 2019 11:37+1100 for FHIR v4.0.0
038public class ChargeItem40_50 {
039
040  public static org.hl7.fhir.r5.model.ChargeItem convertChargeItem(org.hl7.fhir.r4.model.ChargeItem src) throws FHIRException {
041    if (src == null)
042      return null;
043    org.hl7.fhir.r5.model.ChargeItem tgt = new org.hl7.fhir.r5.model.ChargeItem();
044    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
045    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier())
046      tgt.addIdentifier(Identifier40_50.convertIdentifier(t));
047    for (org.hl7.fhir.r4.model.UriType t : src.getDefinitionUri()) tgt.getDefinitionUri().add(Uri40_50.convertUri(t));
048    for (org.hl7.fhir.r4.model.CanonicalType t : src.getDefinitionCanonical())
049      tgt.getDefinitionCanonical().add(Canonical40_50.convertCanonical(t));
050    if (src.hasStatus())
051      tgt.setStatusElement(convertChargeItemStatus(src.getStatusElement()));
052    for (org.hl7.fhir.r4.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference40_50.convertReference(t));
053    if (src.hasCode())
054      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
055    if (src.hasSubject())
056      tgt.setSubject(Reference40_50.convertReference(src.getSubject()));
057    if (src.hasContext())
058      tgt.setContext(Reference40_50.convertReference(src.getContext()));
059    if (src.hasOccurrence())
060      tgt.setOccurrence(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getOccurrence()));
061    for (org.hl7.fhir.r4.model.ChargeItem.ChargeItemPerformerComponent t : src.getPerformer())
062      tgt.addPerformer(convertChargeItemPerformerComponent(t));
063    if (src.hasPerformingOrganization())
064      tgt.setPerformingOrganization(Reference40_50.convertReference(src.getPerformingOrganization()));
065    if (src.hasRequestingOrganization())
066      tgt.setRequestingOrganization(Reference40_50.convertReference(src.getRequestingOrganization()));
067    if (src.hasCostCenter())
068      tgt.setCostCenter(Reference40_50.convertReference(src.getCostCenter()));
069    if (src.hasQuantity())
070      tgt.setQuantity(Quantity40_50.convertQuantity(src.getQuantity()));
071    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getBodysite())
072      tgt.addBodysite(CodeableConcept40_50.convertCodeableConcept(t));
073    if (src.hasFactorOverride())
074      tgt.setFactorOverrideElement(Decimal40_50.convertDecimal(src.getFactorOverrideElement()));
075    if (src.hasPriceOverride())
076      tgt.setPriceOverride(Money40_50.convertMoney(src.getPriceOverride()));
077    if (src.hasOverrideReason())
078      tgt.setOverrideReasonElement(String40_50.convertString(src.getOverrideReasonElement()));
079    if (src.hasEnterer())
080      tgt.setEnterer(Reference40_50.convertReference(src.getEnterer()));
081    if (src.hasEnteredDate())
082      tgt.setEnteredDateElement(DateTime40_50.convertDateTime(src.getEnteredDateElement()));
083    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getReason())
084      tgt.addReason(CodeableConcept40_50.convertCodeableConcept(t));
085    for (org.hl7.fhir.r4.model.Reference t : src.getService()) tgt.addService(Reference40_50.convertReference(t));
086    if (src.hasProductCodeableConcept())
087      tgt.addProduct().setConcept(CodeableConcept40_50.convertCodeableConcept(src.getProductCodeableConcept()));
088    else if (src.hasProductReference())
089      tgt.addProduct().setReference(Reference40_50.convertReference(src.getProductReference()));
090    for (org.hl7.fhir.r4.model.Reference t : src.getAccount()) tgt.addAccount(Reference40_50.convertReference(t));
091    for (org.hl7.fhir.r4.model.Annotation t : src.getNote()) tgt.addNote(Annotation40_50.convertAnnotation(t));
092    for (org.hl7.fhir.r4.model.Reference t : src.getSupportingInformation())
093      tgt.addSupportingInformation(Reference40_50.convertReference(t));
094    return tgt;
095  }
096
097  public static org.hl7.fhir.r4.model.ChargeItem convertChargeItem(org.hl7.fhir.r5.model.ChargeItem src) throws FHIRException {
098    if (src == null)
099      return null;
100    org.hl7.fhir.r4.model.ChargeItem tgt = new org.hl7.fhir.r4.model.ChargeItem();
101    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
102    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
103      tgt.addIdentifier(Identifier40_50.convertIdentifier(t));
104    for (org.hl7.fhir.r5.model.UriType t : src.getDefinitionUri()) tgt.getDefinitionUri().add(Uri40_50.convertUri(t));
105    for (org.hl7.fhir.r5.model.CanonicalType t : src.getDefinitionCanonical())
106      tgt.getDefinitionCanonical().add(Canonical40_50.convertCanonical(t));
107    if (src.hasStatus())
108      tgt.setStatusElement(convertChargeItemStatus(src.getStatusElement()));
109    for (org.hl7.fhir.r5.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference40_50.convertReference(t));
110    if (src.hasCode())
111      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
112    if (src.hasSubject())
113      tgt.setSubject(Reference40_50.convertReference(src.getSubject()));
114    if (src.hasContext())
115      tgt.setContext(Reference40_50.convertReference(src.getContext()));
116    if (src.hasOccurrence())
117      tgt.setOccurrence(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getOccurrence()));
118    for (org.hl7.fhir.r5.model.ChargeItem.ChargeItemPerformerComponent t : src.getPerformer())
119      tgt.addPerformer(convertChargeItemPerformerComponent(t));
120    if (src.hasPerformingOrganization())
121      tgt.setPerformingOrganization(Reference40_50.convertReference(src.getPerformingOrganization()));
122    if (src.hasRequestingOrganization())
123      tgt.setRequestingOrganization(Reference40_50.convertReference(src.getRequestingOrganization()));
124    if (src.hasCostCenter())
125      tgt.setCostCenter(Reference40_50.convertReference(src.getCostCenter()));
126    if (src.hasQuantity())
127      tgt.setQuantity(Quantity40_50.convertQuantity(src.getQuantity()));
128    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getBodysite())
129      tgt.addBodysite(CodeableConcept40_50.convertCodeableConcept(t));
130    if (src.hasFactorOverride())
131      tgt.setFactorOverrideElement(Decimal40_50.convertDecimal(src.getFactorOverrideElement()));
132    if (src.hasPriceOverride())
133      tgt.setPriceOverride(Money40_50.convertMoney(src.getPriceOverride()));
134    if (src.hasOverrideReason())
135      tgt.setOverrideReasonElement(String40_50.convertString(src.getOverrideReasonElement()));
136    if (src.hasEnterer())
137      tgt.setEnterer(Reference40_50.convertReference(src.getEnterer()));
138    if (src.hasEnteredDate())
139      tgt.setEnteredDateElement(DateTime40_50.convertDateTime(src.getEnteredDateElement()));
140    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getReason())
141      tgt.addReason(CodeableConcept40_50.convertCodeableConcept(t));
142    for (org.hl7.fhir.r5.model.Reference t : src.getService()) tgt.addService(Reference40_50.convertReference(t));
143    if (src.getProductFirstRep().hasConcept())
144      tgt.setProduct(CodeableConcept40_50.convertCodeableConcept(src.getProductFirstRep().getConcept()));
145    if (src.getProductFirstRep().hasReference())
146      tgt.setProduct(Reference40_50.convertReference(src.getProductFirstRep().getReference()));
147    for (org.hl7.fhir.r5.model.Reference t : src.getAccount()) tgt.addAccount(Reference40_50.convertReference(t));
148    for (org.hl7.fhir.r5.model.Annotation t : src.getNote()) tgt.addNote(Annotation40_50.convertAnnotation(t));
149    for (org.hl7.fhir.r5.model.Reference t : src.getSupportingInformation())
150      tgt.addSupportingInformation(Reference40_50.convertReference(t));
151    return tgt;
152  }
153
154  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus> convertChargeItemStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus> src) throws FHIRException {
155    if (src == null || src.isEmpty())
156      return null;
157    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatusEnumFactory());
158    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
159    switch (src.getValue()) {
160      case PLANNED:
161        tgt.setValue(org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus.PLANNED);
162        break;
163      case BILLABLE:
164        tgt.setValue(org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus.BILLABLE);
165        break;
166      case NOTBILLABLE:
167        tgt.setValue(org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus.NOTBILLABLE);
168        break;
169      case ABORTED:
170        tgt.setValue(org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus.ABORTED);
171        break;
172      case BILLED:
173        tgt.setValue(org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus.BILLED);
174        break;
175      case ENTEREDINERROR:
176        tgt.setValue(org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus.ENTEREDINERROR);
177        break;
178      case UNKNOWN:
179        tgt.setValue(org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus.UNKNOWN);
180        break;
181      default:
182        tgt.setValue(org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus.NULL);
183        break;
184    }
185    return tgt;
186  }
187
188  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus> convertChargeItemStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ChargeItem.ChargeItemStatus> src) throws FHIRException {
189    if (src == null || src.isEmpty())
190      return null;
191    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatusEnumFactory());
192    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
193    switch (src.getValue()) {
194      case PLANNED:
195        tgt.setValue(org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus.PLANNED);
196        break;
197      case BILLABLE:
198        tgt.setValue(org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus.BILLABLE);
199        break;
200      case NOTBILLABLE:
201        tgt.setValue(org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus.NOTBILLABLE);
202        break;
203      case ABORTED:
204        tgt.setValue(org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus.ABORTED);
205        break;
206      case BILLED:
207        tgt.setValue(org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus.BILLED);
208        break;
209      case ENTEREDINERROR:
210        tgt.setValue(org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus.ENTEREDINERROR);
211        break;
212      case UNKNOWN:
213        tgt.setValue(org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus.UNKNOWN);
214        break;
215      default:
216        tgt.setValue(org.hl7.fhir.r4.model.ChargeItem.ChargeItemStatus.NULL);
217        break;
218    }
219    return tgt;
220  }
221
222  public static org.hl7.fhir.r5.model.ChargeItem.ChargeItemPerformerComponent convertChargeItemPerformerComponent(org.hl7.fhir.r4.model.ChargeItem.ChargeItemPerformerComponent src) throws FHIRException {
223    if (src == null)
224      return null;
225    org.hl7.fhir.r5.model.ChargeItem.ChargeItemPerformerComponent tgt = new org.hl7.fhir.r5.model.ChargeItem.ChargeItemPerformerComponent();
226    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
227    if (src.hasFunction())
228      tgt.setFunction(CodeableConcept40_50.convertCodeableConcept(src.getFunction()));
229    if (src.hasActor())
230      tgt.setActor(Reference40_50.convertReference(src.getActor()));
231    return tgt;
232  }
233
234  public static org.hl7.fhir.r4.model.ChargeItem.ChargeItemPerformerComponent convertChargeItemPerformerComponent(org.hl7.fhir.r5.model.ChargeItem.ChargeItemPerformerComponent src) throws FHIRException {
235    if (src == null)
236      return null;
237    org.hl7.fhir.r4.model.ChargeItem.ChargeItemPerformerComponent tgt = new org.hl7.fhir.r4.model.ChargeItem.ChargeItemPerformerComponent();
238    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
239    if (src.hasFunction())
240      tgt.setFunction(CodeableConcept40_50.convertCodeableConcept(src.getFunction()));
241    if (src.hasActor())
242      tgt.setActor(Reference40_50.convertReference(src.getActor()));
243    return tgt;
244  }
245}