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