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