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