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