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