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