001package org.hl7.fhir.convertors.conv14_50.resources14_50;
002
003import org.hl7.fhir.convertors.VersionConvertorConstants;
004import org.hl7.fhir.convertors.context.ConversionContext14_50;
005import org.hl7.fhir.convertors.conv14_50.datatypes14_50.Reference14_50;
006import org.hl7.fhir.convertors.conv14_50.datatypes14_50.complextypes14_50.CodeableConcept14_50;
007import org.hl7.fhir.convertors.conv14_50.datatypes14_50.complextypes14_50.ContactPoint14_50;
008import org.hl7.fhir.convertors.conv14_50.datatypes14_50.primitivetypes14_50.*;
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;
013
014public class OperationDefinition14_50 {
015
016  public static org.hl7.fhir.dstu2016may.model.OperationDefinition convertOperationDefinition(org.hl7.fhir.r5.model.OperationDefinition src) throws FHIRException {
017    if (src == null || src.isEmpty())
018      return null;
019    org.hl7.fhir.dstu2016may.model.OperationDefinition tgt = new org.hl7.fhir.dstu2016may.model.OperationDefinition();
020    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyDomainResource(src, tgt);
021    if (src.hasUrl())
022      tgt.setUrlElement(Uri14_50.convertUri(src.getUrlElement()));
023    if (src.hasVersion())
024      tgt.setVersionElement(String14_50.convertString(src.getVersionElement()));
025    if (src.hasNameElement())
026      tgt.setNameElement(String14_50.convertString(src.getNameElement()));
027    if (src.hasStatus())
028      tgt.setStatusElement(Enumerations14_50.convertConformanceResourceStatus(src.getStatusElement()));
029    if (src.hasKind())
030      tgt.setKindElement(convertOperationKind(src.getKindElement()));
031    if (src.hasExperimental())
032      tgt.setExperimentalElement(Boolean14_50.convertBoolean(src.getExperimentalElement()));
033    if (src.hasDate())
034      tgt.setDateElement(DateTime14_50.convertDateTime(src.getDateElement()));
035    if (src.hasPublisher())
036      tgt.setPublisherElement(String14_50.convertString(src.getPublisherElement()));
037    for (org.hl7.fhir.r5.model.ContactDetail t : src.getContact())
038      tgt.addContact(convertOperationDefinitionContactComponent(t));
039    if (src.hasDescription())
040      tgt.setDescription(src.getDescription());
041    for (org.hl7.fhir.r5.model.UsageContext t : src.getUseContext())
042      if (t.hasValueCodeableConcept())
043        tgt.addUseContext(CodeableConcept14_50.convertCodeableConcept(t.getValueCodeableConcept()));
044    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getJurisdiction())
045      tgt.addUseContext(CodeableConcept14_50.convertCodeableConcept(t));
046    if (src.hasPurpose())
047      tgt.setRequirements(src.getPurpose());
048    if (src.hasAffectsState())
049      tgt.setIdempotent(!src.getAffectsState());
050    if (src.hasCodeElement())
051      tgt.setCodeElement(Code14_50.convertCode(src.getCodeElement()));
052    if (src.hasComment())
053      tgt.setComment(src.getComment());
054    if (src.hasBaseElement())
055      tgt.setBase(Reference14_50.convertCanonicalToReference(src.getBaseElement()));
056    if (src.hasSystemElement())
057      tgt.setSystemElement(Boolean14_50.convertBoolean(src.getSystemElement()));
058    if (src.getType())
059      for (CodeType t : src.getResource()) tgt.addType(t.getValue());
060    if (src.hasInstanceElement())
061      tgt.setInstanceElement(Boolean14_50.convertBoolean(src.getInstanceElement()));
062    for (org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getParameter())
063      tgt.addParameter(convertOperationDefinitionParameterComponent(t));
064    return tgt;
065  }
066
067  public static org.hl7.fhir.r5.model.OperationDefinition convertOperationDefinition(org.hl7.fhir.dstu2016may.model.OperationDefinition src) throws FHIRException {
068    if (src == null || src.isEmpty())
069      return null;
070    org.hl7.fhir.r5.model.OperationDefinition tgt = new org.hl7.fhir.r5.model.OperationDefinition();
071    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyDomainResource(src, tgt);
072    if (src.hasUrl())
073      tgt.setUrlElement(Uri14_50.convertUri(src.getUrlElement()));
074    if (src.hasVersion())
075      tgt.setVersionElement(String14_50.convertString(src.getVersionElement()));
076    if (src.hasNameElement())
077      tgt.setNameElement(String14_50.convertString(src.getNameElement()));
078    if (src.hasStatus())
079      tgt.setStatusElement(Enumerations14_50.convertConformanceResourceStatus(src.getStatusElement()));
080    if (src.hasKind())
081      tgt.setKindElement(convertOperationKind(src.getKindElement()));
082    if (src.hasExperimental())
083      tgt.setExperimentalElement(Boolean14_50.convertBoolean(src.getExperimentalElement()));
084    if (src.hasDate())
085      tgt.setDateElement(DateTime14_50.convertDateTime(src.getDateElement()));
086    if (src.hasPublisher())
087      tgt.setPublisherElement(String14_50.convertString(src.getPublisherElement()));
088    for (org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionContactComponent t : src.getContact())
089      tgt.addContact(convertOperationDefinitionContactComponent(t));
090    if (src.hasDescription())
091      tgt.setDescription(src.getDescription());
092    for (org.hl7.fhir.dstu2016may.model.CodeableConcept t : src.getUseContext())
093      if (CodeableConcept14_50.isJurisdiction(t))
094        tgt.addJurisdiction(CodeableConcept14_50.convertCodeableConcept(t));
095      else
096        tgt.addUseContext(CodeableConcept14_50.convertCodeableConceptToUsageContext(t));
097    if (src.hasRequirements())
098      tgt.setPurpose(src.getRequirements());
099    if (src.hasIdempotent())
100      tgt.setAffectsState(!src.getIdempotent());
101    if (src.hasCodeElement())
102      tgt.setCodeElement(Code14_50.convertCode(src.getCodeElement()));
103    if (src.hasComment())
104      tgt.setComment(src.getComment());
105    if (src.hasBase())
106      tgt.setBaseElement(Reference14_50.convertReferenceToCanonical(src.getBase()));
107    if (src.hasSystemElement())
108      tgt.setSystemElement(Boolean14_50.convertBoolean(src.getSystemElement()));
109    for (org.hl7.fhir.dstu2016may.model.CodeType t : src.getType()) tgt.addResource(t.getValue());
110    tgt.setType(tgt.hasResource());
111    if (src.hasInstanceElement())
112      tgt.setInstanceElement(Boolean14_50.convertBoolean(src.getInstanceElement()));
113    for (org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getParameter())
114      tgt.addParameter(convertOperationDefinitionParameterComponent(t));
115    return tgt;
116  }
117
118  public static org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionContactComponent convertOperationDefinitionContactComponent(org.hl7.fhir.r5.model.ContactDetail src) throws FHIRException {
119    if (src == null || src.isEmpty())
120      return null;
121    org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionContactComponent tgt = new org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionContactComponent();
122    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
123    if (src.hasName())
124      tgt.setNameElement(String14_50.convertString(src.getNameElement()));
125    for (org.hl7.fhir.r5.model.ContactPoint t : src.getTelecom())
126      tgt.addTelecom(ContactPoint14_50.convertContactPoint(t));
127    return tgt;
128  }
129
130  public static org.hl7.fhir.r5.model.ContactDetail convertOperationDefinitionContactComponent(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionContactComponent src) throws FHIRException {
131    if (src == null || src.isEmpty())
132      return null;
133    org.hl7.fhir.r5.model.ContactDetail tgt = new org.hl7.fhir.r5.model.ContactDetail();
134    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
135    if (src.hasName())
136      tgt.setNameElement(String14_50.convertString(src.getNameElement()));
137    for (org.hl7.fhir.dstu2016may.model.ContactPoint t : src.getTelecom())
138      tgt.addTelecom(ContactPoint14_50.convertContactPoint(t));
139    return tgt;
140  }
141
142  public static org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterBindingComponent src) throws FHIRException {
143    if (src == null || src.isEmpty())
144      return null;
145    org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterBindingComponent tgt = new org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterBindingComponent();
146    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
147    if (src.hasStrength())
148      tgt.setStrengthElement(Enumerations14_50.convertBindingStrength(src.getStrengthElement()));
149    DataType t = ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().convertType(src.getValueSet());
150    if (t != null) {
151      if (t instanceof org.hl7.fhir.r5.model.Reference)
152        tgt.setValueSet(((org.hl7.fhir.r5.model.Reference) t).getReference());
153      else
154        tgt.setValueSet(t.primitiveValue());
155      tgt.setValueSet(VersionConvertorConstants.refToVS(tgt.getValueSet()));
156    }
157    return tgt;
158  }
159
160  public static org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterBindingComponent convertOperationDefinitionParameterBindingComponent(org.hl7.fhir.r5.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_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
165    if (src.hasStrength())
166      tgt.setStrengthElement(Enumerations14_50.convertBindingStrength(src.getStrengthElement()));
167    if (src.hasValueSet()) {
168      String vsr = VersionConvertorConstants.vsToRef(src.getValueSet());
169      if (vsr != null)
170        tgt.setValueSet(new org.hl7.fhir.dstu2016may.model.UriType(vsr));
171      else
172        tgt.setValueSet(new org.hl7.fhir.dstu2016may.model.Reference(src.getValueSet()));
173    }
174    return tgt;
175  }
176
177  public static org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
178    if (src == null || src.isEmpty())
179      return null;
180    org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent();
181    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
182    if (src.hasNameElement())
183      tgt.setNameElement(Code14_50.convertCode(src.getNameElement()));
184    if (src.hasUse())
185      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
186    if (src.hasMinElement())
187      tgt.setMinElement(Integer14_50.convertInteger(src.getMinElement()));
188    if (src.hasMaxElement())
189      tgt.setMaxElement(String14_50.convertString(src.getMaxElement()));
190    if (src.hasDocumentation())
191      tgt.setDocumentationElement(String14_50.convertString(src.getDocumentationElement()));
192    if (src.hasType()) {
193      tgt.setType(src.getType().toCode());
194    }
195    if (src.hasSearchType())
196      tgt.setSearchTypeElement(Enumerations14_50.convertSearchParamType(src.getSearchTypeElement()));
197    for (org.hl7.fhir.r5.model.UriType t : src.getTargetProfile())
198      tgt.setProfile(new org.hl7.fhir.dstu2016may.model.Reference(t.getValue()));
199    if (src.hasBinding())
200      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
201    for (org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
202      tgt.addPart(convertOperationDefinitionParameterComponent(t));
203    return tgt;
204  }
205
206  public static org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent convertOperationDefinitionParameterComponent(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent src) throws FHIRException {
207    if (src == null || src.isEmpty())
208      return null;
209    org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent tgt = new org.hl7.fhir.r5.model.OperationDefinition.OperationDefinitionParameterComponent();
210    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
211    if (src.hasNameElement())
212      tgt.setNameElement(Code14_50.convertCode(src.getNameElement()));
213    if (src.hasUse())
214      tgt.setUseElement(convertOperationParameterUse(src.getUseElement()));
215    if (src.hasMinElement())
216      tgt.setMinElement(Integer14_50.convertInteger(src.getMinElement()));
217    if (src.hasMaxElement())
218      tgt.setMaxElement(String14_50.convertString(src.getMaxElement()));
219    if (src.hasDocumentation())
220      tgt.setDocumentationElement(String14_50.convertString(src.getDocumentationElement()));
221    if (src.hasType())
222      tgt.setType(Enumerations.FHIRAllTypes.fromCode(src.getType()));
223    if (src.hasSearchType())
224      tgt.setSearchTypeElement(Enumerations14_50.convertSearchParamType(src.getSearchTypeElement()));
225    tgt.addTargetProfile(src.getProfile().getReference());
226    if (src.hasBinding())
227      tgt.setBinding(convertOperationDefinitionParameterBindingComponent(src.getBinding()));
228    for (org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationDefinitionParameterComponent t : src.getPart())
229      tgt.addPart(convertOperationDefinitionParameterComponent(t));
230    return tgt;
231  }
232
233  static public org.hl7.fhir.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.OperationDefinition.OperationKind> src) throws FHIRException {
234    if (src == null || src.isEmpty())
235      return null;
236    org.hl7.fhir.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind> tgt = new org.hl7.fhir.dstu2016may.model.Enumeration<>(new org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKindEnumFactory());
237    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
238    switch (src.getValue()) {
239      case OPERATION:
240        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind.OPERATION);
241        break;
242      case QUERY:
243        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind.QUERY);
244        break;
245      default:
246        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind.NULL);
247        break;
248    }
249    return tgt;
250  }
251
252  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.OperationDefinition.OperationKind> convertOperationKind(org.hl7.fhir.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationKind> src) throws FHIRException {
253    if (src == null || src.isEmpty())
254      return null;
255    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());
256    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
257    switch (src.getValue()) {
258      case OPERATION:
259        tgt.setValue(org.hl7.fhir.r5.model.OperationDefinition.OperationKind.OPERATION);
260        break;
261      case QUERY:
262        tgt.setValue(org.hl7.fhir.r5.model.OperationDefinition.OperationKind.QUERY);
263        break;
264      default:
265        tgt.setValue(org.hl7.fhir.r5.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.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.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    ConversionContext14_50.INSTANCE.getVersionConvertor_14_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.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.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.dstu2016may.model.Enumeration<org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse> tgt = new org.hl7.fhir.dstu2016may.model.Enumeration<>(new org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUseEnumFactory());
294    ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt);
295    switch (src.getValue()) {
296      case IN:
297        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse.IN);
298        break;
299      case OUT:
300        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse.OUT);
301        break;
302      default:
303        tgt.setValue(org.hl7.fhir.dstu2016may.model.OperationDefinition.OperationParameterUse.NULL);
304        break;
305    }
306    return tgt;
307  }
308}