001package org.hl7.fhir.convertors.conv14_30.resources14_30;
002
003import org.hl7.fhir.convertors.context.ConversionContext14_30;
004import org.hl7.fhir.convertors.conv14_30.VersionConvertor_14_30;
005import org.hl7.fhir.convertors.conv14_30.datatypes14_30.Reference14_30;
006import org.hl7.fhir.convertors.conv14_30.datatypes14_30.complextypes14_30.CodeableConcept14_30;
007import org.hl7.fhir.convertors.conv14_30.datatypes14_30.complextypes14_30.ContactPoint14_30;
008import org.hl7.fhir.convertors.conv14_30.datatypes14_30.primitivetypes14_30.Boolean14_30;
009import org.hl7.fhir.convertors.conv14_30.datatypes14_30.primitivetypes14_30.Code14_30;
010import org.hl7.fhir.convertors.conv14_30.datatypes14_30.primitivetypes14_30.DateTime14_30;
011import org.hl7.fhir.convertors.conv14_30.datatypes14_30.primitivetypes14_30.Integer14_30;
012import org.hl7.fhir.convertors.conv14_30.datatypes14_30.primitivetypes14_30.String14_30;
013import org.hl7.fhir.convertors.conv14_30.datatypes14_30.primitivetypes14_30.Uri14_30;
014import org.hl7.fhir.dstu3.model.Enumerations.SearchParamType;
015import org.hl7.fhir.exceptions.FHIRException;
016import org.hl7.fhir.utilities.Utilities;
017
018public class OperationDefinition14_30 {
019
020  public static org.hl7.fhir.dstu3.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.dstu3.model.OperationDefinition tgt = new org.hl7.fhir.dstu3.model.OperationDefinition();
024    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyDomainResource(src, tgt);
025    if (src.hasUrl())
026      tgt.setUrlElement(Uri14_30.convertUri(src.getUrlElement()));
027    if (src.hasVersion())
028      tgt.setVersionElement(String14_30.convertString(src.getVersionElement()));
029    if (src.hasNameElement())
030      tgt.setNameElement(String14_30.convertString(src.getNameElement()));
031    if (src.hasStatus())
032      tgt.setStatusElement(Enumerations14_30.convertConformanceResourceStatus(src.getStatusElement()));
033    if (src.hasKind())
034      tgt.setKindElement(convertOperationKind(src.getKindElement()));
035    if (src.hasExperimental())
036      tgt.setExperimentalElement(Boolean14_30.convertBoolean(src.getExperimentalElement()));
037    if (src.hasDate())
038      tgt.setDateElement(DateTime14_30.convertDateTime(src.getDateElement()));
039    if (src.hasPublisher())
040      tgt.setPublisherElement(String14_30.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_30.isJurisdiction(t))
047        tgt.addJurisdiction(CodeableConcept14_30.convertCodeableConcept(t));
048      else
049        tgt.addUseContext(CodeableConcept14_30.convertCodeableConceptToUsageContext(t));
050    if (src.hasRequirements())
051      tgt.setPurpose(src.getRequirements());
052    if (src.hasIdempotent())
053      tgt.setIdempotentElement(Boolean14_30.convertBoolean(src.getIdempotentElement()));
054    if (src.hasCodeElement())
055      tgt.setCodeElement(Code14_30.convertCode(src.getCodeElement()));
056    if (src.hasComment())
057      tgt.setCommentElement(String14_30.convertString(src.getCommentElement()));
058    if (src.hasBase())
059      tgt.setBase(Reference14_30.convertReference(src.getBase()));
060    if (src.hasSystemElement())
061      tgt.setSystemElement(Boolean14_30.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_30.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.dstu3.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_30.INSTANCE.getVersionConvertor_14_30().copyDomainResource(src, tgt);
076    if (src.hasUrl())
077      tgt.setUrlElement(Uri14_30.convertUri(src.getUrlElement()));
078    if (src.hasVersion())
079      tgt.setVersionElement(String14_30.convertString(src.getVersionElement()));
080    if (src.hasNameElement())
081      tgt.setNameElement(String14_30.convertString(src.getNameElement()));
082    if (src.hasStatus())
083      tgt.setStatusElement(Enumerations14_30.convertConformanceResourceStatus(src.getStatusElement()));
084    if (src.hasKind())
085      tgt.setKindElement(convertOperationKind(src.getKindElement()));
086    if (src.hasExperimental())
087      tgt.setExperimentalElement(Boolean14_30.convertBoolean(src.getExperimentalElement()));
088    if (src.hasDate())
089      tgt.setDateElement(DateTime14_30.convertDateTime(src.getDateElement()));
090    if (src.hasPublisher())
091      tgt.setPublisherElement(String14_30.convertString(src.getPublisherElement()));
092    for (org.hl7.fhir.dstu3.model.ContactDetail t : src.getContact())
093      tgt.addContact(convertOperationDefinitionContactComponent(t));
094    if (src.hasDescription())
095      tgt.setDescription(src.getDescription());
096    for (org.hl7.fhir.dstu3.model.UsageContext t : src.getUseContext())
097      if (t.hasValueCodeableConcept())
098        tgt.addUseContext(CodeableConcept14_30.convertCodeableConcept(t.getValueCodeableConcept()));
099    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getJurisdiction())
100      tgt.addUseContext(CodeableConcept14_30.convertCodeableConcept(t));
101    if (src.hasPurpose())
102      tgt.setRequirements(src.getPurpose());
103    if (src.hasIdempotent())
104      tgt.setIdempotentElement(Boolean14_30.convertBoolean(src.getIdempotentElement()));
105    if (src.hasCodeElement())
106      tgt.setCodeElement(Code14_30.convertCode(src.getCodeElement()));
107    if (src.hasComment())
108      tgt.setCommentElement(String14_30.convertString(src.getCommentElement()));
109    if (src.hasBase())
110      tgt.setBase(Reference14_30.convertReference(src.getBase()));
111    if (src.hasSystemElement())
112      tgt.setSystemElement(Boolean14_30.convertBoolean(src.getSystemElement()));
113    if (src.getType())
114      for (org.hl7.fhir.dstu3.model.CodeType t : src.getResource()) tgt.addType(t.getValue());
115    if (src.hasInstanceElement())
116      tgt.setInstanceElement(Boolean14_30.convertBoolean(src.getInstanceElement()));
117    for (org.hl7.fhir.dstu3.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.dstu3.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_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt);
127    if (src.hasName())
128      tgt.setNameElement(String14_30.convertString(src.getNameElement()));
129    for (org.hl7.fhir.dstu3.model.ContactPoint t : src.getTelecom())
130      tgt.addTelecom(ContactPoint14_30.convertContactPoint(t));
131    return tgt;
132  }
133
134  public static org.hl7.fhir.dstu3.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.dstu3.model.ContactDetail tgt = new org.hl7.fhir.dstu3.model.ContactDetail();
138    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt);
139    if (src.hasName())
140      tgt.setNameElement(String14_30.convertString(src.getNameElement()));
141    for (org.hl7.fhir.dstu2016may.model.ContactPoint t : src.getTelecom())
142      tgt.addTelecom(ContactPoint14_30.convertContactPoint(t));
143    return tgt;
144  }
145
146  public static org.hl7.fhir.dstu3.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.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
150    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyBackboneElement(src,tgt);
151    if (src.hasStrength())
152      tgt.setStrengthElement(Enumerations14_30.convertBindingStrength(src.getStrengthElement()));
153    if (src.hasValueSet())
154      tgt.setValueSet(ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().convertType(src.getValueSet()));
155    return tgt;
156  }
157
158  public static org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent src) throws FHIRException {
159    if (src == null || src.isEmpty())
160      return null;
161    org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
162    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyBackboneElement(src,tgt);
163    if (src.hasStrength())
164      tgt.setStrengthElement(Enumerations14_30.convertBindingStrength(src.getStrengthElement()));
165    if (src.hasValueSet())
166      tgt.setValueSet(ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().convertType(src.getValueSet()));
167    return tgt;
168  }
169
170  public static org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
171    if (src == null || src.isEmpty())
172      return null;
173    org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent();
174    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyBackboneElement(src,tgt);
175    if (src.hasNameElement())
176      tgt.setNameElement(Code14_30.convertCode(src.getNameElement()));
177    if (src.hasUse())
178      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
179    if (src.hasMinElement())
180      tgt.setMinElement(Integer14_30.convertInteger(src.getMinElement()));
181    if (src.hasMaxElement())
182      tgt.setMaxElement(String14_30.convertString(src.getMaxElement()));
183    if (src.hasDocumentation())
184      tgt.setDocumentationElement(String14_30.convertString(src.getDocumentationElement()));
185    if (src.hasType())
186      tgt.setTypeElement(Code14_30.convertCode(src.getTypeElement()));
187    if (src.hasSearchType())
188      tgt.setSearchTypeElement(Enumerations14_30.convertSearchParamType(src.getSearchTypeElement()));
189    if (src.hasProfile())
190      tgt.setProfile(Reference14_30.convertReference(src.getProfile()));
191    if (src.hasBinding())
192      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
193    for (org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
194      tgt.addPart(convertOperationDefinitionParameterComponent(t));
195    return tgt;
196  }
197
198  public static org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
199    if (src == null || src.isEmpty())
200      return null;
201    org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent();
202    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyBackboneElement(src,tgt);
203    if (src.hasNameElement())
204      tgt.setNameElement(Code14_30.convertCode(src.getNameElement()));
205    if (src.hasUse())
206      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
207    if (src.hasMinElement())
208      tgt.setMinElement(Integer14_30.convertInteger(src.getMinElement()));
209    if (src.hasMaxElement())
210      tgt.setMaxElement(String14_30.convertString(src.getMaxElement()));
211    if (src.hasDocumentation())
212      tgt.setDocumentationElement(String14_30.convertString(src.getDocumentationElement()));
213    if (Utilities.existsInList(src.getType(), "token", "reference", "composite", "number", "date", "quantity", "uri")) {
214      tgt.setType("string");
215      if (src.hasType())
216        tgt.setSearchType(SearchParamType.fromCode(src.getType()));
217    } else {
218      if (src.hasTypeElement())
219        tgt.setTypeElement(Code14_30.convertCode(src.getTypeElement()));
220    }
221    if (src.hasSearchType())
222      tgt.setSearchTypeElement(Enumerations14_30.convertSearchParamType(src.getSearchTypeElement()));
223    if (src.hasProfile())
224      tgt.setProfile(Reference14_30.convertReference(src.getProfile()));
225    if (src.hasBinding())
226      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
227    for (org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
228      tgt.addPart(convertOperationDefinitionParameterComponent(t));
229    return tgt;
230  }
231
232  static public org.hl7.fhir.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind> src) throws FHIRException {
233    if (src == null || src.isEmpty())
234      return null;
235    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());
236    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt);
237    switch (src.getValue()) {
238      case OPERATION:
239        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind.OPERATION);
240        break;
241      case QUERY:
242        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind.QUERY);
243        break;
244      default:
245        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind.NULL);
246        break;
247    }
248    return tgt;
249  }
250
251  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind> src) throws FHIRException {
252    if (src == null || src.isEmpty())
253      return null;
254    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());
255    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt);
256    switch (src.getValue()) {
257      case OPERATION:
258        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.OPERATION);
259        break;
260      case QUERY:
261        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.QUERY);
262        break;
263      default:
264        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.NULL);
265        break;
266    }
267    return tgt;
268  }
269
270  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse> convertOperationParameterUse(org.hl7.fhir.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse> src) throws FHIRException {
271    if (src == null || src.isEmpty())
272      return null;
273    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());
274    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt);
275    switch (src.getValue()) {
276      case IN:
277        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.IN);
278        break;
279      case OUT:
280        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.OUT);
281        break;
282      default:
283        tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.NULL);
284        break;
285    }
286    return tgt;
287  }
288
289  static public org.hl7.fhir.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse> convertOperationParameterUse(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse> src) throws FHIRException {
290    if (src == null || src.isEmpty())
291      return null;
292    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());
293    ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt);
294    switch (src.getValue()) {
295      case IN:
296        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse.IN);
297        break;
298      case OUT:
299        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse.OUT);
300        break;
301      default:
302        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse.NULL);
303        break;
304    }
305    return tgt;
306  }
307}