001package org.hl7.fhir.convertors.conv30_40.resources30_40;
002
003import org.hl7.fhir.convertors.VersionConvertorConstants;
004import org.hl7.fhir.convertors.context.ConversionContext30_40;
005import org.hl7.fhir.convertors.conv30_40.datatypes30_40.ContactDetail30_40;
006import org.hl7.fhir.convertors.conv30_40.datatypes30_40.Reference30_40;
007import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.CodeableConcept30_40;
008import org.hl7.fhir.convertors.conv30_40.datatypes30_40.complextypes30_40.Timing30_40;
009import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.Boolean30_40;
010import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.Code30_40;
011import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.DateTime30_40;
012import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.Integer30_40;
013import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.MarkDown30_40;
014import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.String30_40;
015import org.hl7.fhir.convertors.conv30_40.datatypes30_40.primitivetypes30_40.Uri30_40;
016import org.hl7.fhir.exceptions.FHIRException;
017import org.hl7.fhir.r4.model.Type;
018
019public class OperationDefinition30_40 {
020
021  public static org.hl7.fhir.r4.model.OperationDefinition convertOperationDefinition(org.hl7.fhir.dstu3.model.OperationDefinition src) throws FHIRException {
022    if (src == null)
023      return null;
024    org.hl7.fhir.r4.model.OperationDefinition tgt = new org.hl7.fhir.r4.model.OperationDefinition();
025    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
026    if (src.hasUrl())
027      tgt.setUrlElement(Uri30_40.convertUri(src.getUrlElement()));
028    if (src.hasVersion())
029      tgt.setVersionElement(String30_40.convertString(src.getVersionElement()));
030    if (src.hasName())
031      tgt.setNameElement(String30_40.convertString(src.getNameElement()));
032    if (src.hasStatus())
033      tgt.setStatusElement(Enumerations30_40.convertPublicationStatus(src.getStatusElement()));
034    if (src.hasKind())
035      tgt.setKindElement(convertOperationKind(src.getKindElement()));
036    if (src.hasExperimental())
037      tgt.setExperimentalElement(Boolean30_40.convertBoolean(src.getExperimentalElement()));
038    if (src.hasDateElement())
039      tgt.setDateElement(DateTime30_40.convertDateTime(src.getDateElement()));
040    if (src.hasPublisher())
041      tgt.setPublisherElement(String30_40.convertString(src.getPublisherElement()));
042    for (org.hl7.fhir.dstu3.model.ContactDetail t : src.getContact())
043      tgt.addContact(ContactDetail30_40.convertContactDetail(t));
044    if (src.hasDescription())
045      tgt.setDescriptionElement(MarkDown30_40.convertMarkdown(src.getDescriptionElement()));
046    for (org.hl7.fhir.dstu3.model.UsageContext t : src.getUseContext())
047      tgt.addUseContext(Timing30_40.convertUsageContext(t));
048    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getJurisdiction())
049      tgt.addJurisdiction(CodeableConcept30_40.convertCodeableConcept(t));
050    if (src.hasPurpose())
051      tgt.setPurposeElement(MarkDown30_40.convertMarkdown(src.getPurposeElement()));
052    if (src.hasIdempotent())
053      tgt.setAffectsState(!src.getIdempotent());
054    if (src.hasCode())
055      tgt.setCodeElement(Code30_40.convertCode(src.getCodeElement()));
056    if (src.hasComment())
057      tgt.setComment(src.getComment());
058    if (src.hasBase())
059      tgt.setBaseElement(Reference30_40.convertReferenceToCanonical(src.getBase()));
060    for (org.hl7.fhir.dstu3.model.CodeType t : src.getResource()) tgt.addResource(t.getValue());
061    if (src.hasSystem())
062      tgt.setSystemElement(Boolean30_40.convertBoolean(src.getSystemElement()));
063    if (src.hasType())
064      tgt.setTypeElement(Boolean30_40.convertBoolean(src.getTypeElement()));
065    if (src.hasInstance())
066      tgt.setInstanceElement(Boolean30_40.convertBoolean(src.getInstanceElement()));
067    for (org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getParameter())
068      tgt.addParameter(convertOperationDefinitionParameterComponent(t));
069    for (org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionOverloadComponent t : src.getOverload())
070      tgt.addOverload(convertOperationDefinitionOverloadComponent(t));
071    return tgt;
072  }
073
074  public static org.hl7.fhir.dstu3.model.OperationDefinition convertOperationDefinition(org.hl7.fhir.r4.model.OperationDefinition src) throws FHIRException {
075    if (src == null)
076      return null;
077    org.hl7.fhir.dstu3.model.OperationDefinition tgt = new org.hl7.fhir.dstu3.model.OperationDefinition();
078    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt);
079    if (src.hasUrl())
080      tgt.setUrlElement(Uri30_40.convertUri(src.getUrlElement()));
081    if (src.hasVersion())
082      tgt.setVersionElement(String30_40.convertString(src.getVersionElement()));
083    if (src.hasName())
084      tgt.setNameElement(String30_40.convertString(src.getNameElement()));
085    if (src.hasStatus())
086      tgt.setStatusElement(Enumerations30_40.convertPublicationStatus(src.getStatusElement()));
087    if (src.hasKind())
088      tgt.setKindElement(convertOperationKind(src.getKindElement()));
089    if (src.hasExperimental())
090      tgt.setExperimentalElement(Boolean30_40.convertBoolean(src.getExperimentalElement()));
091    if (src.hasDateElement())
092      tgt.setDateElement(DateTime30_40.convertDateTime(src.getDateElement()));
093    if (src.hasPublisher())
094      tgt.setPublisherElement(String30_40.convertString(src.getPublisherElement()));
095    for (org.hl7.fhir.r4.model.ContactDetail t : src.getContact())
096      tgt.addContact(ContactDetail30_40.convertContactDetail(t));
097    if (src.hasDescription())
098      tgt.setDescriptionElement(MarkDown30_40.convertMarkdown(src.getDescriptionElement()));
099    for (org.hl7.fhir.r4.model.UsageContext t : src.getUseContext())
100      tgt.addUseContext(Timing30_40.convertUsageContext(t));
101    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getJurisdiction())
102      tgt.addJurisdiction(CodeableConcept30_40.convertCodeableConcept(t));
103    if (src.hasPurpose())
104      tgt.setPurposeElement(MarkDown30_40.convertMarkdown(src.getPurposeElement()));
105    if (src.hasAffectsState())
106      tgt.setIdempotent(!src.getAffectsState());
107    if (src.hasCode())
108      tgt.setCodeElement(Code30_40.convertCode(src.getCodeElement()));
109    if (src.hasComment())
110      tgt.setComment(src.getComment());
111    if (src.hasBase())
112      tgt.setBase(Reference30_40.convertCanonicalToReference(src.getBaseElement()));
113    for (org.hl7.fhir.r4.model.CodeType t : src.getResource()) tgt.addResource(t.getValue());
114    if (src.hasSystem())
115      tgt.setSystemElement(Boolean30_40.convertBoolean(src.getSystemElement()));
116    if (src.hasType())
117      tgt.setTypeElement(Boolean30_40.convertBoolean(src.getTypeElement()));
118    if (src.hasInstance())
119      tgt.setInstanceElement(Boolean30_40.convertBoolean(src.getInstanceElement()));
120    for (org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getParameter())
121      tgt.addParameter(convertOperationDefinitionParameterComponent(t));
122    for (org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionOverloadComponent t : src.getOverload())
123      tgt.addOverload(convertOperationDefinitionOverloadComponent(t));
124    return tgt;
125  }
126
127  public static org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionOverloadComponent convertOperationDefinitionOverloadComponent(org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionOverloadComponent src) throws FHIRException {
128    if (src == null)
129      return null;
130    org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionOverloadComponent tgt = new org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionOverloadComponent();
131    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
132    for (org.hl7.fhir.r4.model.StringType t : src.getParameterName()) tgt.addParameterName(t.getValue());
133    if (src.hasComment())
134      tgt.setCommentElement(String30_40.convertString(src.getCommentElement()));
135    return tgt;
136  }
137
138  public static org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionOverloadComponent convertOperationDefinitionOverloadComponent(org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionOverloadComponent src) throws FHIRException {
139    if (src == null)
140      return null;
141    org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionOverloadComponent tgt = new org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionOverloadComponent();
142    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
143    for (org.hl7.fhir.dstu3.model.StringType t : src.getParameterName()) tgt.addParameterName(t.getValue());
144    if (src.hasComment())
145      tgt.setCommentElement(String30_40.convertString(src.getCommentElement()));
146    return tgt;
147  }
148
149  public static org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterBindingComponent src) throws FHIRException {
150    if (src == null)
151      return null;
152    org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
153    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
154    if (src.hasStrength())
155      tgt.setStrengthElement(Enumerations30_40.convertBindingStrength(src.getStrengthElement()));
156    if (src.hasValueSet()) {
157      String vsr = VersionConvertorConstants.vsToRef(src.getValueSet());
158      if (vsr != null)
159        tgt.setValueSet(new org.hl7.fhir.dstu3.model.UriType(vsr));
160      else
161        tgt.setValueSet(new org.hl7.fhir.dstu3.model.Reference(src.getValueSet()));
162    }
163    return tgt;
164  }
165
166  public static org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent src) throws FHIRException {
167    if (src == null)
168      return null;
169    org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
170    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
171    if (src.hasStrength())
172      tgt.setStrengthElement(Enumerations30_40.convertBindingStrength(src.getStrengthElement()));
173    if (src.hasValueSet()) {
174      Type t = ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().convertType(src.getValueSet());
175      if (t instanceof org.hl7.fhir.r4.model.Reference)
176        tgt.setValueSet(((org.hl7.fhir.r4.model.Reference) t).getReference());
177      else
178        tgt.setValueSet(t.primitiveValue());
179      tgt.setValueSet(VersionConvertorConstants.refToVS(tgt.getValueSet()));
180    }
181    return tgt;
182  }
183
184  public static org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
185    if (src == null)
186      return null;
187    org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent();
188    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
189    if (src.hasName())
190      tgt.setNameElement(Code30_40.convertCode(src.getNameElement()));
191    if (src.hasUse())
192      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
193    if (src.hasMin())
194      tgt.setMinElement(Integer30_40.convertInteger(src.getMinElement()));
195    if (src.hasMax())
196      tgt.setMaxElement(String30_40.convertString(src.getMaxElement()));
197    if (src.hasDocumentation())
198      tgt.setDocumentationElement(String30_40.convertString(src.getDocumentationElement()));
199    if (src.hasType())
200      tgt.setTypeElement(Code30_40.convertCode(src.getTypeElement()));
201    if (src.hasSearchType())
202      tgt.setSearchTypeElement(Enumerations30_40.convertSearchParamType(src.getSearchTypeElement()));
203    for (org.hl7.fhir.r4.model.UriType t : src.getTargetProfile())
204      tgt.setProfile(new org.hl7.fhir.dstu3.model.Reference(t.getValue()));
205    if (src.hasBinding())
206      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
207    for (org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
208      tgt.addPart(convertOperationDefinitionParameterComponent(t));
209    return tgt;
210  }
211
212  public static org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
213    if (src == null)
214      return null;
215    org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.r4.model.OperationDefinition.OperationDefinitionParameterComponent();
216    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyBackboneElement(src,tgt);
217    if (src.hasName())
218      tgt.setNameElement(Code30_40.convertCode(src.getNameElement()));
219    if (src.hasUse())
220      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
221    if (src.hasMin())
222      tgt.setMinElement(Integer30_40.convertInteger(src.getMinElement()));
223    if (src.hasMax())
224      tgt.setMaxElement(String30_40.convertString(src.getMaxElement()));
225    if (src.hasDocumentation())
226      tgt.setDocumentationElement(String30_40.convertString(src.getDocumentationElement()));
227    if (src.hasType())
228      tgt.setTypeElement(Code30_40.convertCode(src.getTypeElement()));
229    if (src.hasSearchType())
230      tgt.setSearchTypeElement(Enumerations30_40.convertSearchParamType(src.getSearchTypeElement()));
231    if (src.hasProfile())
232      tgt.addTargetProfile(src.getProfile().getReference());
233    if (src.hasBinding())
234      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
235    for (org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
236      tgt.addPart(convertOperationDefinitionParameterComponent(t));
237    return tgt;
238  }
239
240  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.OperationDefinition.OperationKind> src) throws FHIRException {
241    if (src == null || src.isEmpty())
242      return null;
243    org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.OperationDefinition.OperationKindEnumFactory());
244    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
245    switch (src.getValue()) {
246      case OPERATION:
247        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.OPERATION);
248        break;
249      case QUERY:
250        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.QUERY);
251        break;
252      default:
253        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.NULL);
254        break;
255    }
256    return tgt;
257  }
258
259  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind> src) throws FHIRException {
260    if (src == null || src.isEmpty())
261      return null;
262    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.OperationDefinition.OperationKind> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.OperationDefinition.OperationKindEnumFactory());
263    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
264    switch (src.getValue()) {
265      case OPERATION:
266        tgt.setValue(org.hl7.fhir.r4.model.OperationDefinition.OperationKind.OPERATION);
267        break;
268      case QUERY:
269        tgt.setValue(org.hl7.fhir.r4.model.OperationDefinition.OperationKind.QUERY);
270        break;
271      default:
272        tgt.setValue(org.hl7.fhir.r4.model.OperationDefinition.OperationKind.NULL);
273        break;
274    }
275    return tgt;
276  }
277
278  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.OperationDefinition.OperationParameterUse> convertOperationParameterUse(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse> src) throws FHIRException {
279    if (src == null || src.isEmpty())
280      return null;
281    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.OperationDefinition.OperationParameterUse> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.OperationDefinition.OperationParameterUseEnumFactory());
282    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
283    switch (src.getValue()) {
284      case IN:
285        tgt.setValue(org.hl7.fhir.r4.model.OperationDefinition.OperationParameterUse.IN);
286        break;
287      case OUT:
288        tgt.setValue(org.hl7.fhir.r4.model.OperationDefinition.OperationParameterUse.OUT);
289        break;
290      default:
291        tgt.setValue(org.hl7.fhir.r4.model.OperationDefinition.OperationParameterUse.NULL);
292        break;
293    }
294    return tgt;
295  }
296
297  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse> convertOperationParameterUse(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.OperationDefinition.OperationParameterUse> src) throws FHIRException {
298    if (src == null || src.isEmpty())
299      return null;
300    org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUseEnumFactory());
301    ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt);
302    switch (src.getValue()) {
303      case IN:
304        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.IN);
305        break;
306      case OUT:
307        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.OUT);
308        break;
309      default:
310        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.NULL);
311        break;
312    }
313    return tgt;
314  }
315}