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