001package org.hl7.fhir.convertors.conv10_50.resources10_50;
002
003import org.hl7.fhir.convertors.VersionConvertorConstants;
004import org.hl7.fhir.convertors.context.ConversionContext10_50;
005import org.hl7.fhir.convertors.conv10_50.datatypes10_50.Reference10_50;
006import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.ContactPoint10_50;
007import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.Boolean10_50;
008import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.Code10_50;
009import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.DateTime10_50;
010import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.Integer10_50;
011import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.String10_50;
012import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.Uri10_50;
013import org.hl7.fhir.dstu2.model.Reference;
014import org.hl7.fhir.exceptions.FHIRException;
015import org.hl7.fhir.r5.model.DataType;
016import org.hl7.fhir.r5.model.Enumeration;
017import org.hl7.fhir.r5.model.Enumerations;
018import org.hl7.fhir.r5.model.Enumerations.SearchParamType;
019import org.hl7.fhir.r5.model.Enumerations.VersionIndependentResourceTypesAll;
020import org.hl7.fhir.r5.model.Enumerations.VersionIndependentResourceTypesAllEnumFactory;
021import org.hl7.fhir.r5.model.OperationDefinition;
022import org.hl7.fhir.utilities.Utilities;
023
024public class OperationDefinition10_50 {
025
026  public static org.hl7.fhir.dstu2.model.OperationDefinition convertOperationDefinition(org.hl7.fhir.r5.model.OperationDefinition src) throws FHIRException {
027    if (src == null || src.isEmpty())
028      return null;
029    org.hl7.fhir.dstu2.model.OperationDefinition tgt = new org.hl7.fhir.dstu2.model.OperationDefinition();
030    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
031    if (src.hasUrlElement())
032      tgt.setUrlElement(Uri10_50.convertUri(src.getUrlElement()));
033    if (src.hasVersionElement())
034      tgt.setVersionElement(String10_50.convertString(src.getVersionElement()));
035    if (src.hasNameElement())
036      tgt.setNameElement(String10_50.convertString(src.getNameElement()));
037    if (src.hasStatus())
038      tgt.setStatusElement(Enumerations10_50.convertConformanceResourceStatus(src.getStatusElement()));
039    if (src.hasKind())
040      tgt.setKindElement(convertOperationKind(src.getKindElement()));
041    if (src.hasExperimental())
042      tgt.setExperimentalElement(Boolean10_50.convertBoolean(src.getExperimentalElement()));
043    if (src.hasDate())
044      tgt.setDateElement(DateTime10_50.convertDateTime(src.getDateElement()));
045    if (src.hasPublisherElement())
046      tgt.setPublisherElement(String10_50.convertString(src.getPublisherElement()));
047    for (org.hl7.fhir.r5.model.ContactDetail t : src.getContact())
048      tgt.addContact(convertOperationDefinitionContactComponent(t));
049    if (src.hasDescription())
050      tgt.setDescription(src.getDescription());
051    if (src.hasPurpose())
052      tgt.setRequirements(src.getPurpose());
053    tgt.setIdempotent(!src.getAffectsState());
054    if (src.hasCodeElement())
055      tgt.setCodeElement(Code10_50.convertCode(src.getCodeElement()));
056    if (src.hasComment())
057      tgt.setNotes(src.getComment());
058    if (src.hasBase())
059      tgt.setBase(Reference10_50.convertCanonicalToReference(src.getBaseElement()));
060    if (src.hasSystemElement())
061      tgt.setSystemElement(Boolean10_50.convertBoolean(src.getSystemElement()));
062    if (src.getType())
063      for (Enumeration<VersionIndependentResourceTypesAll> t : src.getResource()) tgt.addType(t.getCode());
064    if (src.hasInstanceElement())
065      tgt.setInstanceElement(Boolean10_50.convertBoolean(src.getInstanceElement()));
066    for (org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getParameter())
067      tgt.addParameter(convertOperationDefinitionParameterComponent(t));
068    return tgt;
069  }
070
071  public static org.hl7.fhir.r5.model.OperationDefinition convertOperationDefinition(org.hl7.fhir.dstu2.model.OperationDefinition src) throws FHIRException {
072    if (src == null || src.isEmpty())
073      return null;
074    org.hl7.fhir.r5.model.OperationDefinition tgt = new org.hl7.fhir.r5.model.OperationDefinition();
075    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
076    if (src.hasUrlElement())
077      tgt.setUrlElement(Uri10_50.convertUri(src.getUrlElement()));
078    if (src.hasVersionElement())
079      tgt.setVersionElement(String10_50.convertString(src.getVersionElement()));
080    if (src.hasNameElement())
081      tgt.setNameElement(String10_50.convertString(src.getNameElement()));
082    if (src.hasStatus())
083      tgt.setStatusElement(Enumerations10_50.convertConformanceResourceStatus(src.getStatusElement()));
084    if (src.hasKind())
085      tgt.setKindElement(convertOperationKind(src.getKindElement()));
086    if (src.hasExperimental())
087      tgt.setExperimentalElement(Boolean10_50.convertBoolean(src.getExperimentalElement()));
088    if (src.hasDate())
089      tgt.setDateElement(DateTime10_50.convertDateTime(src.getDateElement()));
090    if (src.hasPublisherElement())
091      tgt.setPublisherElement(String10_50.convertString(src.getPublisherElement()));
092    for (org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent t : src.getContact())
093      tgt.addContact(convertOperationDefinitionContactComponent(t));
094    if (src.hasDescription())
095      tgt.setDescription(src.getDescription());
096    if (src.hasRequirements())
097      tgt.setPurpose(src.getRequirements());
098    if (src.hasIdempotent())
099      tgt.setAffectsState(!src.getIdempotent());
100    if (src.hasCodeElement())
101      tgt.setCodeElement(Code10_50.convertCode(src.getCodeElement()));
102    if (src.hasNotes())
103      tgt.setComment(src.getNotes());
104    if (src.hasBase())
105      tgt.setBaseElement(Reference10_50.convertReferenceToCanonical(src.getBase()));
106    if (src.hasSystemElement())
107      tgt.setSystemElement(Boolean10_50.convertBoolean(src.getSystemElement()));
108    for (org.hl7.fhir.dstu2.model.CodeType t : src.getType()) tgt.getResource().add(new Enumeration<VersionIndependentResourceTypesAll>(new VersionIndependentResourceTypesAllEnumFactory(), Code10_50.convertCode(t)));
109    tgt.setType(tgt.hasResource());
110    if (src.hasInstanceElement())
111      tgt.setInstanceElement(Boolean10_50.convertBoolean(src.getInstanceElement()));
112    for (org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getParameter())
113      tgt.addParameter(convertOperationDefinitionParameterComponent(t));
114    return tgt;
115  }
116
117  public static org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent convertOperationDefinitionContactComponent(org.hl7.fhir.r5.model.ContactDetail src) throws FHIRException {
118    if (src == null || src.isEmpty())
119      return null;
120    org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent tgt = new org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent();
121    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
122    if (src.hasNameElement())
123      tgt.setNameElement(String10_50.convertString(src.getNameElement()));
124    for (org.hl7.fhir.r5.model.ContactPoint t : src.getTelecom())
125      tgt.addTelecom(ContactPoint10_50.convertContactPoint(t));
126    return tgt;
127  }
128
129  public static org.hl7.fhir.r5.model.ContactDetail convertOperationDefinitionContactComponent(org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionContactComponent src) throws FHIRException {
130    if (src == null || src.isEmpty())
131      return null;
132    org.hl7.fhir.r5.model.ContactDetail tgt = new org.hl7.fhir.r5.model.ContactDetail();
133    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
134    if (src.hasNameElement())
135      tgt.setNameElement(String10_50.convertString(src.getNameElement()));
136    for (org.hl7.fhir.dstu2.model.ContactPoint t : src.getTelecom())
137      tgt.addTelecom(ContactPoint10_50.convertContactPoint(t));
138    return tgt;
139  }
140
141  public static org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterBindingComponent src) throws FHIRException {
142    if (src == null || src.isEmpty())
143      return null;
144    org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
145    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
146    if (src.hasStrength())
147      tgt.setStrengthElement(Enumerations10_50.convertBindingStrength(src.getStrengthElement()));
148    if (src.hasValueSet()) {
149      String vsr = VersionConvertorConstants.vsToRef(src.getValueSet());
150      if (vsr != null)
151        tgt.setValueSet(new org.hl7.fhir.dstu2.model.UriType(vsr));
152      else
153        tgt.setValueSet(new org.hl7.fhir.dstu2.model.Reference(src.getValueSet()));
154    }
155    return tgt;
156  }
157
158  public static org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterBindingComponent src) throws FHIRException {
159    if (src == null || src.isEmpty())
160      return null;
161    org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
162    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
163    if (src.hasStrength())
164      tgt.setStrengthElement(Enumerations10_50.convertBindingStrength(src.getStrengthElement()));
165    DataType t = ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getValueSet());
166    if (t != null) {
167      if (t instanceof org.hl7.fhir.r5.model.Reference)
168        tgt.setValueSet(((org.hl7.fhir.r5.model.Reference) t).getReference());
169      else
170        tgt.setValueSet(t.primitiveValue());
171      tgt.setValueSet(VersionConvertorConstants.refToVS(tgt.getValueSet()));
172    }
173    return tgt;
174  }
175
176  public static org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
177    if (src == null || src.isEmpty())
178      return null;
179    org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent();
180    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
181    if (src.hasNameElement())
182      tgt.setNameElement(Code10_50.convertCode(src.getNameElement()));
183    if (src.hasUse())
184      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
185    if (src.hasMinElement())
186      tgt.setMinElement(Integer10_50.convertInteger(src.getMinElement()));
187    if (src.hasMaxElement())
188      tgt.setMaxElement(String10_50.convertString(src.getMaxElement()));
189    if (src.hasDocumentationElement())
190      tgt.setDocumentationElement(String10_50.convertStringToMarkdown(src.getDocumentationElement()));
191    if (Utilities.existsInList(src.getType(), "token", "reference", "composite", "number", "date", "quantity", "uri")) {
192      tgt.setType(Enumerations.FHIRTypes.STRING);
193      if (src.hasType())
194        tgt.setSearchType(SearchParamType.fromCode(src.getType()));
195    } else {
196      if (src.hasType())
197        tgt.setType(Enumerations.FHIRTypes.fromCode(src.getType()));
198    }
199    tgt.addTargetProfile(src.getProfile().getReference());
200    if (src.hasBinding())
201      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
202    for (org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
203      tgt.addPart(convertOperationDefinitionParameterComponent(t));
204    return tgt;
205  }
206
207  public static org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
208    if (src == null || src.isEmpty())
209      return null;
210    org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.dstu2.model.OperationDefinition.OperationDefinitionParameterComponent();
211    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
212    if (src.hasNameElement())
213      tgt.setNameElement(Code10_50.convertCode(src.getNameElement()));
214    if (src.hasUse())
215      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
216    if (src.hasMinElement())
217      tgt.setMinElement(Integer10_50.convertInteger(src.getMinElement()));
218    if (src.hasMaxElement())
219      tgt.setMaxElement(String10_50.convertString(src.getMaxElement()));
220    if (src.hasDocumentationElement())
221      tgt.setDocumentationElement(String10_50.convertString(src.getDocumentationElement()));
222    if (src.hasSearchType()) {
223      tgt.setType(src.getSearchType().toCode());
224    } else
225      tgt.setType(src.getType().toCode());
226    for (org.hl7.fhir.r5.model.UriType t : src.getTargetProfile()) tgt.setProfile(new Reference(t.getValue()));
227    if (src.hasBinding())
228      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
229    for (org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
230      tgt.addPart(convertOperationDefinitionParameterComponent(t));
231    return tgt;
232  }
233
234  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.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      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().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.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.OperationDefinition.OperationKind> src) throws FHIRException {
258      if (src == null || src.isEmpty())
259          return null;
260      org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationKind> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.OperationDefinition.OperationKindEnumFactory());
261      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().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.dstu2.model.OperationDefinition.OperationKind.OPERATION);
268                  break;
269              case QUERY:
270                  tgt.setValue(org.hl7.fhir.dstu2.model.OperationDefinition.OperationKind.QUERY);
271                  break;
272              default:
273                  tgt.setValue(org.hl7.fhir.dstu2.model.OperationDefinition.OperationKind.NULL);
274                  break;
275          }
276      }
277      return tgt;
278  }
279
280  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.OperationParameterUse> convertOperationParameterUse(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUse> src) throws FHIRException {
281      if (src == null || src.isEmpty())
282          return null;
283      Enumeration<Enumerations.OperationParameterUse> tgt = new Enumeration<>(new Enumerations.OperationParameterUseEnumFactory());
284      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
285      if (src.getValue() == null) {
286          tgt.setValue(null);
287      } else {
288          switch (src.getValue()) {
289              case IN:
290                  tgt.setValue(Enumerations.OperationParameterUse.IN);
291                  break;
292              case OUT:
293                  tgt.setValue(Enumerations.OperationParameterUse.OUT);
294                  break;
295              default:
296                  tgt.setValue(Enumerations.OperationParameterUse.NULL);
297                  break;
298          }
299      }
300      return tgt;
301  }
302
303  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUse> convertOperationParameterUse(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.OperationParameterUse> src) throws FHIRException {
304      if (src == null || src.isEmpty())
305          return null;
306      org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUse> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUseEnumFactory());
307      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
308      if (src.getValue() == null) {
309          tgt.setValue(null);
310      } else {
311          switch (src.getValue()) {
312              case IN:
313                  tgt.setValue(org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUse.IN);
314                  break;
315              case OUT:
316                  tgt.setValue(org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUse.OUT);
317                  break;
318              default:
319                  tgt.setValue(org.hl7.fhir.dstu2.model.OperationDefinition.OperationParameterUse.NULL);
320                  break;
321          }
322      }
323      return tgt;
324  }
325}