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