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.Annotation40_50;
005import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.CodeableConcept40_50;
006import org.hl7.fhir.convertors.conv40_50.datatypes40_50.general40_50.Identifier40_50;
007import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Canonical40_50;
008import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Uri40_50;
009import org.hl7.fhir.convertors.conv40_50.datatypes40_50.special40_50.Reference40_50;
010import org.hl7.fhir.exceptions.FHIRException;
011import org.hl7.fhir.r5.model.CodeableReference;
012
013/*
014  Copyright (c) 2011+, HL7, Inc.
015  All rights reserved.
016  
017  Redistribution and use in source and binary forms, with or without modification, 
018  are permitted provided that the following conditions are met:
019  
020   * Redistributions of source code must retain the above copyright notice, this 
021     list of conditions and the following disclaimer.
022   * Redistributions in binary form must reproduce the above copyright notice, 
023     this list of conditions and the following disclaimer in the documentation 
024     and/or other materials provided with the distribution.
025   * Neither the name of HL7 nor the names of its contributors may be used to 
026     endorse or promote products derived from this software without specific 
027     prior written permission.
028  
029  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
030  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
031  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
032  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
033  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
034  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
035  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
036  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
037  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
038  POSSIBILITY OF SUCH DAMAGE.
039  
040*/
041// Generated on Sun, Feb 24, 2019 11:37+1100 for FHIR v4.0.0
042public class Procedure40_50 {
043
044  public static org.hl7.fhir.r5.model.Procedure convertProcedure(org.hl7.fhir.r4.model.Procedure src) throws FHIRException {
045    if (src == null)
046      return null;
047    org.hl7.fhir.r5.model.Procedure tgt = new org.hl7.fhir.r5.model.Procedure();
048    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
049    for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier())
050      tgt.addIdentifier(Identifier40_50.convertIdentifier(t));
051    for (org.hl7.fhir.r4.model.CanonicalType t : src.getInstantiatesCanonical())
052      tgt.getInstantiatesCanonical().add(Canonical40_50.convertCanonical(t));
053    for (org.hl7.fhir.r4.model.UriType t : src.getInstantiatesUri())
054      tgt.getInstantiatesUri().add(Uri40_50.convertUri(t));
055    for (org.hl7.fhir.r4.model.Reference t : src.getBasedOn()) tgt.addBasedOn(Reference40_50.convertReference(t));
056    for (org.hl7.fhir.r4.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference40_50.convertReference(t));
057    if (src.hasStatus())
058      tgt.setStatusElement(convertProcedureStatus(src.getStatusElement()));
059    if (src.hasStatusReason())
060      tgt.setStatusReason(CodeableConcept40_50.convertCodeableConcept(src.getStatusReason()));
061    if (src.hasCategory())
062      tgt.addCategory(CodeableConcept40_50.convertCodeableConcept(src.getCategory()));
063    if (src.hasCode())
064      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
065    if (src.hasSubject())
066      tgt.setSubject(Reference40_50.convertReference(src.getSubject()));
067    if (src.hasEncounter())
068      tgt.setEncounter(Reference40_50.convertReference(src.getEncounter()));
069    if (src.hasPerformed())
070      tgt.setOccurrence(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getPerformed()));
071    if (src.hasRecorder())
072      tgt.setRecorder(Reference40_50.convertReference(src.getRecorder()));
073    if (src.hasAsserter())
074      tgt.setReported(Reference40_50.convertReference(src.getAsserter()));
075    for (org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent t : src.getPerformer())
076      tgt.addPerformer(convertProcedurePerformerComponent(t));
077    if (src.hasLocation())
078      tgt.setLocation(Reference40_50.convertReference(src.getLocation()));
079    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getReasonCode())
080      tgt.addReason(CodeableConcept40_50.convertCodeableConceptToCodeableReference(t));
081    for (org.hl7.fhir.r4.model.Reference t : src.getReasonReference())
082      tgt.addReason(Reference40_50.convertReferenceToCodeableReference(t));
083    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getBodySite())
084      tgt.addBodySite(CodeableConcept40_50.convertCodeableConcept(t));
085    if (src.hasOutcome())
086      tgt.setOutcome(CodeableConcept40_50.convertCodeableConcept(src.getOutcome()));
087    for (org.hl7.fhir.r4.model.Reference t : src.getReport()) tgt.addReport(Reference40_50.convertReference(t));
088    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getComplication())
089      tgt.addComplication(CodeableConcept40_50.convertCodeableConcept(t));
090    for (org.hl7.fhir.r4.model.Reference t : src.getComplicationDetail())
091      tgt.addComplicationDetail(Reference40_50.convertReference(t));
092    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getFollowUp())
093      tgt.addFollowUp(CodeableConcept40_50.convertCodeableConcept(t));
094    for (org.hl7.fhir.r4.model.Annotation t : src.getNote()) tgt.addNote(Annotation40_50.convertAnnotation(t));
095    for (org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent t : src.getFocalDevice())
096      tgt.addFocalDevice(convertProcedureFocalDeviceComponent(t));
097    for (org.hl7.fhir.r4.model.Reference t : src.getUsedReference())
098      tgt.addUsed(Reference40_50.convertReferenceToCodeableReference(t));
099    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getUsedCode())
100      tgt.addUsed(CodeableConcept40_50.convertCodeableConceptToCodeableReference(t));
101    return tgt;
102  }
103
104  public static org.hl7.fhir.r4.model.Procedure convertProcedure(org.hl7.fhir.r5.model.Procedure src) throws FHIRException {
105    if (src == null)
106      return null;
107    org.hl7.fhir.r4.model.Procedure tgt = new org.hl7.fhir.r4.model.Procedure();
108    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt);
109    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
110      tgt.addIdentifier(Identifier40_50.convertIdentifier(t));
111    for (org.hl7.fhir.r5.model.CanonicalType t : src.getInstantiatesCanonical())
112      tgt.getInstantiatesCanonical().add(Canonical40_50.convertCanonical(t));
113    for (org.hl7.fhir.r5.model.UriType t : src.getInstantiatesUri())
114      tgt.getInstantiatesUri().add(Uri40_50.convertUri(t));
115    for (org.hl7.fhir.r5.model.Reference t : src.getBasedOn()) tgt.addBasedOn(Reference40_50.convertReference(t));
116    for (org.hl7.fhir.r5.model.Reference t : src.getPartOf()) tgt.addPartOf(Reference40_50.convertReference(t));
117    if (src.hasStatus())
118      tgt.setStatusElement(convertProcedureStatus(src.getStatusElement()));
119    if (src.hasStatusReason())
120      tgt.setStatusReason(CodeableConcept40_50.convertCodeableConcept(src.getStatusReason()));
121    if (src.hasCategory())
122      tgt.setCategory(CodeableConcept40_50.convertCodeableConcept(src.getCategoryFirstRep()));
123    if (src.hasCode())
124      tgt.setCode(CodeableConcept40_50.convertCodeableConcept(src.getCode()));
125    if (src.hasSubject())
126      tgt.setSubject(Reference40_50.convertReference(src.getSubject()));
127    if (src.hasEncounter())
128      tgt.setEncounter(Reference40_50.convertReference(src.getEncounter()));
129    if (src.hasOccurrence())
130      tgt.setPerformed(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getOccurrence()));
131    if (src.hasRecorder())
132      tgt.setRecorder(Reference40_50.convertReference(src.getRecorder()));
133    if (src.hasReportedReference())
134      tgt.setAsserter(Reference40_50.convertReference(src.getReportedReference()));
135    for (org.hl7.fhir.r5.model.Procedure.ProcedurePerformerComponent t : src.getPerformer())
136      tgt.addPerformer(convertProcedurePerformerComponent(t));
137    if (src.hasLocation())
138      tgt.setLocation(Reference40_50.convertReference(src.getLocation()));
139    for (CodeableReference t : src.getReason())
140      if (t.hasConcept())
141        tgt.addReasonCode(CodeableConcept40_50.convertCodeableConcept(t.getConcept()));
142    for (CodeableReference t : src.getReason())
143      if (t.hasReference())
144        tgt.addReasonReference(Reference40_50.convertReference(t.getReference()));
145    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getBodySite())
146      tgt.addBodySite(CodeableConcept40_50.convertCodeableConcept(t));
147    if (src.hasOutcome())
148      tgt.setOutcome(CodeableConcept40_50.convertCodeableConcept(src.getOutcome()));
149    for (org.hl7.fhir.r5.model.Reference t : src.getReport()) tgt.addReport(Reference40_50.convertReference(t));
150    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getComplication())
151      tgt.addComplication(CodeableConcept40_50.convertCodeableConcept(t));
152    for (org.hl7.fhir.r5.model.Reference t : src.getComplicationDetail())
153      tgt.addComplicationDetail(Reference40_50.convertReference(t));
154    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getFollowUp())
155      tgt.addFollowUp(CodeableConcept40_50.convertCodeableConcept(t));
156    for (org.hl7.fhir.r5.model.Annotation t : src.getNote()) tgt.addNote(Annotation40_50.convertAnnotation(t));
157    for (org.hl7.fhir.r5.model.Procedure.ProcedureFocalDeviceComponent t : src.getFocalDevice())
158      tgt.addFocalDevice(convertProcedureFocalDeviceComponent(t));
159    for (CodeableReference t : src.getUsed())
160      if (t.hasReference())
161        tgt.addUsedReference(Reference40_50.convertReference(t.getReference()));
162    for (CodeableReference t : src.getUsed())
163      if (t.hasConcept())
164        tgt.addUsedCode(CodeableConcept40_50.convertCodeableConcept(t.getConcept()));
165    return tgt;
166  }
167
168  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.EventStatus> convertProcedureStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Procedure.ProcedureStatus> src) throws FHIRException {
169    if (src == null || src.isEmpty())
170      return null;
171    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.EventStatus> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.Enumerations.EventStatusEnumFactory());
172    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
173    switch (src.getValue()) {
174      case PREPARATION:
175        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.PREPARATION);
176        break;
177      case INPROGRESS:
178        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.INPROGRESS);
179        break;
180      case NOTDONE:
181        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.NOTDONE);
182        break;
183      case ONHOLD:
184        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.ONHOLD);
185        break;
186      case STOPPED:
187        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.STOPPED);
188        break;
189      case COMPLETED:
190        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.COMPLETED);
191        break;
192      case ENTEREDINERROR:
193        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.ENTEREDINERROR);
194        break;
195      case UNKNOWN:
196        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.UNKNOWN);
197        break;
198      default:
199        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.EventStatus.NULL);
200        break;
201    }
202    return tgt;
203  }
204
205  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Procedure.ProcedureStatus> convertProcedureStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.EventStatus> src) throws FHIRException {
206    if (src == null || src.isEmpty())
207      return null;
208    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Procedure.ProcedureStatus> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Procedure.ProcedureStatusEnumFactory());
209    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
210    switch (src.getValue()) {
211      case PREPARATION:
212        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.PREPARATION);
213        break;
214      case INPROGRESS:
215        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.INPROGRESS);
216        break;
217      case NOTDONE:
218        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.NOTDONE);
219        break;
220      case ONHOLD:
221        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.ONHOLD);
222        break;
223      case STOPPED:
224        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.STOPPED);
225        break;
226      case COMPLETED:
227        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.COMPLETED);
228        break;
229      case ENTEREDINERROR:
230        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.ENTEREDINERROR);
231        break;
232      case UNKNOWN:
233        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.UNKNOWN);
234        break;
235      default:
236        tgt.setValue(org.hl7.fhir.r4.model.Procedure.ProcedureStatus.NULL);
237        break;
238    }
239    return tgt;
240  }
241
242  public static org.hl7.fhir.r5.model.Procedure.ProcedurePerformerComponent convertProcedurePerformerComponent(org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent src) throws FHIRException {
243    if (src == null)
244      return null;
245    org.hl7.fhir.r5.model.Procedure.ProcedurePerformerComponent tgt = new org.hl7.fhir.r5.model.Procedure.ProcedurePerformerComponent();
246    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
247    if (src.hasFunction())
248      tgt.setFunction(CodeableConcept40_50.convertCodeableConcept(src.getFunction()));
249    if (src.hasActor())
250      tgt.setActor(Reference40_50.convertReference(src.getActor()));
251    if (src.hasOnBehalfOf())
252      tgt.setOnBehalfOf(Reference40_50.convertReference(src.getOnBehalfOf()));
253    return tgt;
254  }
255
256  public static org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent convertProcedurePerformerComponent(org.hl7.fhir.r5.model.Procedure.ProcedurePerformerComponent src) throws FHIRException {
257    if (src == null)
258      return null;
259    org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent tgt = new org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent();
260    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
261    if (src.hasFunction())
262      tgt.setFunction(CodeableConcept40_50.convertCodeableConcept(src.getFunction()));
263    if (src.hasActor())
264      tgt.setActor(Reference40_50.convertReference(src.getActor()));
265    if (src.hasOnBehalfOf())
266      tgt.setOnBehalfOf(Reference40_50.convertReference(src.getOnBehalfOf()));
267    return tgt;
268  }
269
270  public static org.hl7.fhir.r5.model.Procedure.ProcedureFocalDeviceComponent convertProcedureFocalDeviceComponent(org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent src) throws FHIRException {
271    if (src == null)
272      return null;
273    org.hl7.fhir.r5.model.Procedure.ProcedureFocalDeviceComponent tgt = new org.hl7.fhir.r5.model.Procedure.ProcedureFocalDeviceComponent();
274    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
275    if (src.hasAction())
276      tgt.setAction(CodeableConcept40_50.convertCodeableConcept(src.getAction()));
277    if (src.hasManipulated())
278      tgt.setManipulated(Reference40_50.convertReference(src.getManipulated()));
279    return tgt;
280  }
281
282  public static org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent convertProcedureFocalDeviceComponent(org.hl7.fhir.r5.model.Procedure.ProcedureFocalDeviceComponent src) throws FHIRException {
283    if (src == null)
284      return null;
285    org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent tgt = new org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent();
286    ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt);
287    if (src.hasAction())
288      tgt.setAction(CodeableConcept40_50.convertCodeableConcept(src.getAction()));
289    if (src.hasManipulated())
290      tgt.setManipulated(Reference40_50.convertReference(src.getManipulated()));
291    return tgt;
292  }
293}