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