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