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