001package org.hl7.fhir.convertors.conv10_30.resources10_30;
002
003import org.hl7.fhir.convertors.context.ConversionContext10_30;
004import org.hl7.fhir.convertors.conv10_30.datatypes10_30.ElementDefinition10_30;
005import org.hl7.fhir.convertors.conv10_30.datatypes10_30.Reference10_30;
006import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.ContactPoint10_30;
007import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Boolean10_30;
008import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Code10_30;
009import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.DateTime10_30;
010import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Integer10_30;
011import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.String10_30;
012import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Uri10_30;
013import org.hl7.fhir.dstu2.model.Enumeration;
014import org.hl7.fhir.dstu2.model.OperationDefinition;
015import org.hl7.fhir.dstu3.model.Enumerations.SearchParamType;
016import org.hl7.fhir.exceptions.FHIRException;
017import org.hl7.fhir.utilities.Utilities;
018
019public class OperationDefinition10_30 {
020
021  public static org.hl7.fhir.dstu2.model.OperationDefinition convertOperationDefinition(org.hl7.fhir.dstu3.model.OperationDefinition src) throws FHIRException {
022    if (src == null || src.isEmpty())
023      return null;
024    org.hl7.fhir.dstu2.model.OperationDefinition tgt = new org.hl7.fhir.dstu2.model.OperationDefinition();
025    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
026    if (src.hasUrlElement())
027      tgt.setUrlElement(Uri10_30.convertUri(src.getUrlElement()));
028    if (src.hasVersionElement())
029      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
030    if (src.hasNameElement())
031      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
032    if (src.hasStatus())
033      tgt.setStatusElement(Enumerations10_30.convertConformanceResourceStatus(src.getStatusElement()));
034    if (src.hasKind())
035      tgt.setKindElement(convertOperationKind(src.getKindElement()));
036    if (src.hasExperimental())
037      tgt.setExperimentalElement(Boolean10_30.convertBoolean(src.getExperimentalElement()));
038    if (src.hasDate())
039      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
040    if (src.hasPublisherElement())
041      tgt.setPublisherElement(String10_30.convertString(src.getPublisherElement()));
042    for (org.hl7.fhir.dstu3.model.ContactDetail t : src.getContact())
043      tgt.addContact(convertOperationDefinitionContactComponent(t));
044    if (src.hasDescription())
045      tgt.setDescription(src.getDescription());
046    if (src.hasPurpose())
047      tgt.setRequirements(src.getPurpose());
048    if (src.hasIdempotentElement())
049      tgt.setIdempotentElement(Boolean10_30.convertBoolean(src.getIdempotentElement()));
050    if (src.hasCodeElement())
051      tgt.setCodeElement(Code10_30.convertCode(src.getCodeElement()));
052    if (src.hasCommentElement())
053      tgt.setNotesElement(String10_30.convertString(src.getCommentElement()));
054    if (src.hasBase())
055      tgt.setBase(Reference10_30.convertReference(src.getBase()));
056    if (src.hasSystemElement())
057      tgt.setSystemElement(Boolean10_30.convertBoolean(src.getSystemElement()));
058    if (src.getType())
059      for (org.hl7.fhir.dstu3.model.CodeType t : src.getResource()) tgt.addType(t.getValue());
060    if (src.hasInstanceElement())
061      tgt.setInstanceElement(Boolean10_30.convertBoolean(src.getInstanceElement()));
062    for (org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getParameter())
063      tgt.addParameter(convertOperationDefinitionParameterComponent(t));
064    return tgt;
065  }
066
067  public static org.hl7.fhir.dstu3.model.OperationDefinition convertOperationDefinition(org.hl7.fhir.dstu2.model.OperationDefinition src) throws FHIRException {
068    if (src == null || src.isEmpty())
069      return null;
070    org.hl7.fhir.dstu3.model.OperationDefinition tgt = new org.hl7.fhir.dstu3.model.OperationDefinition();
071    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
072    if (src.hasUrlElement())
073      tgt.setUrlElement(Uri10_30.convertUri(src.getUrlElement()));
074    if (src.hasVersionElement())
075      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
076    if (src.hasNameElement())
077      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
078    if (src.hasStatus())
079      tgt.setStatusElement(Enumerations10_30.convertConformanceResourceStatus(src.getStatusElement()));
080    if (src.hasKind())
081      tgt.setKindElement(convertOperationKind(src.getKindElement()));
082    if (src.hasExperimental())
083      tgt.setExperimentalElement(Boolean10_30.convertBoolean(src.getExperimentalElement()));
084    if (src.hasDate())
085      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
086    if (src.hasPublisherElement())
087      tgt.setPublisherElement(String10_30.convertString(src.getPublisherElement()));
088    for (org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent t : src.getContact())
089      tgt.addContact(convertOperationDefinitionContactComponent(t));
090    if (src.hasDescription())
091      tgt.setDescription(src.getDescription());
092    if (src.hasRequirements())
093      tgt.setPurpose(src.getRequirements());
094    if (src.hasIdempotent())
095      tgt.setIdempotentElement(Boolean10_30.convertBoolean(src.getIdempotentElement()));
096    if (src.hasCodeElement())
097      tgt.setCodeElement(Code10_30.convertCode(src.getCodeElement()));
098    if (src.hasNotesElement())
099      tgt.setCommentElement(String10_30.convertString(src.getNotesElement()));
100    if (src.hasBase())
101      tgt.setBase(Reference10_30.convertReference(src.getBase()));
102    if (src.hasSystemElement())
103      tgt.setSystemElement(Boolean10_30.convertBoolean(src.getSystemElement()));
104    for (org.hl7.fhir.dstu2.model.CodeType t : src.getType()) tgt.addResource(t.getValue());
105    tgt.setType(tgt.hasResource());
106    if (src.hasInstanceElement())
107      tgt.setInstanceElement(Boolean10_30.convertBoolean(src.getInstanceElement()));
108    for (org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getParameter())
109      tgt.addParameter(convertOperationDefinitionParameterComponent(t));
110    return tgt;
111  }
112
113  public static org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent convertOperationDefinitionContactComponent(org.hl7.fhir.dstu3.model.ContactDetail src) throws FHIRException {
114    if (src == null || src.isEmpty())
115      return null;
116    org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent tgt = new org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent();
117    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
118    if (src.hasNameElement())
119      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
120    for (org.hl7.fhir.dstu3.model.ContactPoint t : src.getTelecom())
121      tgt.addTelecom(ContactPoint10_30.convertContactPoint(t));
122    return tgt;
123  }
124
125  public static org.hl7.fhir.dstu3.model.ContactDetail convertOperationDefinitionContactComponent(org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent src) throws FHIRException {
126    if (src == null || src.isEmpty())
127      return null;
128    org.hl7.fhir.dstu3.model.ContactDetail tgt = new org.hl7.fhir.dstu3.model.ContactDetail();
129    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
130    if (src.hasNameElement())
131      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
132    for (org.hl7.fhir.dstu2.model.ContactPoint t : src.getTelecom())
133      tgt.addTelecom(ContactPoint10_30.convertContactPoint(t));
134    return tgt;
135  }
136
137  public static org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterBindingComponent src) throws FHIRException {
138    if (src == null || src.isEmpty())
139      return null;
140    org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
141    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
142    if (src.hasStrength())
143      tgt.setStrengthElement(ElementDefinition10_30.convertBindingStrength(src.getStrengthElement()));
144    if (src.hasValueSet())
145      tgt.setValueSet(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getValueSet()));
146    return tgt;
147  }
148
149  public static org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterBindingComponent src) throws FHIRException {
150    if (src == null || src.isEmpty())
151      return null;
152    org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
153    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
154    if (src.hasStrength())
155      tgt.setStrengthElement(ElementDefinition10_30.convertBindingStrength(src.getStrengthElement()));
156    if (src.hasValueSet())
157      tgt.setValueSet(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getValueSet()));
158    return tgt;
159  }
160
161  public static org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
162    if (src == null || src.isEmpty())
163      return null;
164    org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent();
165    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
166    if (src.hasNameElement())
167      tgt.setNameElement(Code10_30.convertCode(src.getNameElement()));
168    if (src.hasUse())
169      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
170    if (src.hasMinElement())
171      tgt.setMinElement(Integer10_30.convertInteger(src.getMinElement()));
172    if (src.hasMaxElement())
173      tgt.setMaxElement(String10_30.convertString(src.getMaxElement()));
174    if (src.hasDocumentationElement())
175      tgt.setDocumentationElement(String10_30.convertString(src.getDocumentationElement()));
176    if (src.hasSearchType()) {
177      tgt.setType(src.getSearchType().toCode());
178    } else
179      tgt.setTypeElement(Code10_30.convertCode(src.getTypeElement()));
180    if (src.hasProfile())
181      tgt.setProfile(Reference10_30.convertReference(src.getProfile()));
182    if (src.hasBinding())
183      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
184    for (org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
185      tgt.addPart(convertOperationDefinitionParameterComponent(t));
186    return tgt;
187  }
188
189  public static org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
190    if (src == null || src.isEmpty())
191      return null;
192    org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent();
193    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
194    if (src.hasNameElement())
195      tgt.setNameElement(Code10_30.convertCode(src.getNameElement()));
196    if (src.hasUse())
197      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
198    if (src.hasMinElement())
199      tgt.setMinElement(Integer10_30.convertInteger(src.getMinElement()));
200    if (src.hasMaxElement())
201      tgt.setMaxElement(String10_30.convertString(src.getMaxElement()));
202    if (src.hasDocumentationElement())
203      tgt.setDocumentationElement(String10_30.convertString(src.getDocumentationElement()));
204    if (Utilities.existsInList(src.getType(), "token", "reference", "composite", "number", "date", "quantity", "uri")) {
205      tgt.setType("string");
206      if (src.hasType())
207        tgt.setSearchType(SearchParamType.fromCode(src.getType()));
208    } else {
209      if (src.hasTypeElement())
210        tgt.setTypeElement(Code10_30.convertCode(src.getTypeElement()));
211    }
212    if (src.hasProfile())
213      tgt.setProfile(Reference10_30.convertReference(src.getProfile()));
214    if (src.hasBinding())
215      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
216    for (org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
217      tgt.addPart(convertOperationDefinitionParameterComponent(t));
218    return tgt;
219  }
220
221  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind> src) throws FHIRException {
222      if (src == null || src.isEmpty())
223          return null;
224      Enumeration<OperationDefinition.OperationKind> tgt = new Enumeration<>(new OperationDefinition.OperationKindEnumFactory());
225      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
226      if (src.getValue() == null) {
227          tgt.setValue(null);
228      } else {
229          switch (src.getValue()) {
230              case OPERATION:
231                  tgt.setValue(OperationDefinition.OperationKind.OPERATION);
232                  break;
233              case QUERY:
234                  tgt.setValue(OperationDefinition.OperationKind.QUERY);
235                  break;
236              default:
237                  tgt.setValue(OperationDefinition.OperationKind.NULL);
238                  break;
239          }
240      }
241      return tgt;
242  }
243
244  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationKind> src) throws FHIRException {
245      if (src == null || src.isEmpty())
246          return null;
247      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());
248      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
249      if (src.getValue() == null) {
250          tgt.setValue(null);
251      } else {
252          switch (src.getValue()) {
253              case OPERATION:
254                  tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.OPERATION);
255                  break;
256              case QUERY:
257                  tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.QUERY);
258                  break;
259              default:
260                  tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind.NULL);
261                  break;
262          }
263      }
264      return tgt;
265  }
266
267  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUse> convertOperationParameterUse(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse> src) throws FHIRException {
268      if (src == null || src.isEmpty())
269          return null;
270      Enumeration<OperationDefinition.OperationParameterUse> tgt = new Enumeration<>(new OperationDefinition.OperationParameterUseEnumFactory());
271      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
272      if (src.getValue() == null) {
273          tgt.setValue(null);
274      } else {
275          switch (src.getValue()) {
276              case IN:
277                  tgt.setValue(OperationDefinition.OperationParameterUse.IN);
278                  break;
279              case OUT:
280                  tgt.setValue(OperationDefinition.OperationParameterUse.OUT);
281                  break;
282              default:
283                  tgt.setValue(OperationDefinition.OperationParameterUse.NULL);
284                  break;
285          }
286      }
287      return tgt;
288  }
289
290  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse> convertOperationParameterUse(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUse> src) throws FHIRException {
291      if (src == null || src.isEmpty())
292          return null;
293      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());
294      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
295      if (src.getValue() == null) {
296          tgt.setValue(null);
297      } else {
298          switch (src.getValue()) {
299              case IN:
300                  tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.IN);
301                  break;
302              case OUT:
303                  tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.OUT);
304                  break;
305              default:
306                  tgt.setValue(org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse.NULL);
307                  break;
308          }
309      }
310      return tgt;
311  }
312}