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