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