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