001package org.hl7.fhir.convertors.conv30_50.resources30_50;
002
003import java.util.Collections;
004
005import org.hl7.fhir.convertors.context.ConversionContext30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Narrative30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Reference30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50;
009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Identifier30_50;
010import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Period30_50;
011import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.DateTime30_50;
012import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.String30_50;
013import org.hl7.fhir.dstu3.model.Composition;
014import org.hl7.fhir.dstu3.model.Enumeration;
015import org.hl7.fhir.exceptions.FHIRException;
016import org.hl7.fhir.r5.model.CodeableConcept;
017import org.hl7.fhir.r5.model.CodeableReference;
018import org.hl7.fhir.r5.model.Enumerations;
019import org.hl7.fhir.r5.model.RelatedArtifact;
020
021public class Composition30_50 {
022
023  public static org.hl7.fhir.r5.model.Composition convertComposition(org.hl7.fhir.dstu3.model.Composition src) throws FHIRException {
024    if (src == null)
025      return null;
026    org.hl7.fhir.r5.model.Composition tgt = new org.hl7.fhir.r5.model.Composition();
027    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
028    if (src.hasIdentifier())
029      tgt.addIdentifier(Identifier30_50.convertIdentifier(src.getIdentifier()));
030    if (src.hasStatus())
031      tgt.setStatusElement(convertCompositionStatus(src.getStatusElement()));
032    if (src.hasType())
033      tgt.setType(CodeableConcept30_50.convertCodeableConcept(src.getType()));
034    if (src.hasClass_())
035      tgt.addCategory(CodeableConcept30_50.convertCodeableConcept(src.getClass_()));
036    if (src.hasSubject())
037      tgt.addSubject(Reference30_50.convertReference(src.getSubject()));
038    if (src.hasEncounter())
039      tgt.setEncounter(Reference30_50.convertReference(src.getEncounter()));
040    if (src.hasDate())
041      tgt.setDateElement(DateTime30_50.convertDateTime(src.getDateElement()));
042    for (org.hl7.fhir.dstu3.model.Reference t : src.getAuthor()) tgt.addAuthor(Reference30_50.convertReference(t));
043    if (src.hasTitle())
044      tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
045    if (src.hasConfidentiality())
046      tgt.getMeta().addSecurity(convertDocumentConfidentiality(src.getConfidentialityElement()));
047    for (org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent t : src.getAttester())
048      tgt.addAttester(convertCompositionAttesterComponent(t));
049    if (src.hasCustodian())
050      tgt.setCustodian(Reference30_50.convertReference(src.getCustodian()));
051    for (org.hl7.fhir.dstu3.model.Composition.CompositionRelatesToComponent t : src.getRelatesTo())
052      tgt.addRelatesTo(convertCompositionRelatesToComponent(t));
053    for (org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent t : src.getEvent())
054      tgt.addEvent(convertCompositionEventComponent(t));
055    for (org.hl7.fhir.dstu3.model.Composition.SectionComponent t : src.getSection())
056      tgt.addSection(convertSectionComponent(t));
057    return tgt;
058  }
059
060  public static org.hl7.fhir.dstu3.model.Composition convertComposition(org.hl7.fhir.r5.model.Composition src) throws FHIRException {
061    if (src == null)
062      return null;
063    org.hl7.fhir.dstu3.model.Composition tgt = new org.hl7.fhir.dstu3.model.Composition();
064    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
065    if (src.hasIdentifier())
066      tgt.setIdentifier(Identifier30_50.convertIdentifier(src.getIdentifierFirstRep()));
067    if (src.hasStatus())
068      tgt.setStatusElement(convertCompositionStatus(src.getStatusElement()));
069    if (src.hasType())
070      tgt.setType(CodeableConcept30_50.convertCodeableConcept(src.getType()));
071    if (src.hasCategory())
072      tgt.setClass_(CodeableConcept30_50.convertCodeableConcept(src.getCategoryFirstRep()));
073    if (src.hasSubject())
074      tgt.setSubject(Reference30_50.convertReference(src.getSubjectFirstRep()));
075    if (src.hasEncounter())
076      tgt.setEncounter(Reference30_50.convertReference(src.getEncounter()));
077    if (src.hasDate())
078      tgt.setDateElement(DateTime30_50.convertDateTime(src.getDateElement()));
079    for (org.hl7.fhir.r5.model.Reference t : src.getAuthor()) tgt.addAuthor(Reference30_50.convertReference(t));
080    if (src.hasTitle())
081      tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
082    if (src.getMeta().hasSecurity())
083      tgt.setConfidentialityElement(convertDocumentConfidentiality(src.getMeta().getSecurityFirstRep()));
084    for (org.hl7.fhir.r5.model.Composition.CompositionAttesterComponent t : src.getAttester())
085      tgt.addAttester(convertCompositionAttesterComponent(t));
086    if (src.hasCustodian())
087      tgt.setCustodian(Reference30_50.convertReference(src.getCustodian()));
088    for (RelatedArtifact t : src.getRelatesTo())
089      tgt.addRelatesTo(convertCompositionRelatesToComponent(t));
090    for (org.hl7.fhir.r5.model.Composition.CompositionEventComponent t : src.getEvent())
091      tgt.addEvent(convertCompositionEventComponent(t));
092    for (org.hl7.fhir.r5.model.Composition.SectionComponent t : src.getSection())
093      tgt.addSection(convertSectionComponent(t));
094    return tgt;
095  }
096
097  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.CompositionAttestationMode> convertCompositionAttestationMode(org.hl7.fhir.r5.model.CodeableConcept src) throws FHIRException {
098    if (src == null || src.isEmpty())
099      return null;
100    org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.CompositionAttestationMode> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.Composition.CompositionAttestationModeEnumFactory());
101    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
102    switch (src.getCode("http://hl7.org/fhir/composition-attestation-mode")) {
103      case "personal":
104        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.CompositionAttestationMode.PERSONAL);
105        break;
106      case "professional":
107        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.CompositionAttestationMode.PROFESSIONAL);
108        break;
109      case "legal":
110        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.CompositionAttestationMode.LEGAL);
111        break;
112      case "official":
113        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.CompositionAttestationMode.OFFICIAL);
114        break;
115      default:
116        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.CompositionAttestationMode.NULL);
117        break;
118    }
119    return tgt;
120  }
121
122
123  static public org.hl7.fhir.r5.model.CodeableConcept convertCompositionAttestationMode(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.CompositionAttestationMode> src) throws FHIRException {
124      if (src == null || src.isEmpty())
125          return null;
126      CodeableConcept tgt = new CodeableConcept();
127      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
128      if (src.getValue() == null) {
129        // Add nothing
130      } else {
131          switch (src.getValue()) {
132              case PERSONAL:
133                  tgt.addCoding().setSystem("http://hl7.org/fhir/composition-attestation-mode").setCode("personal");
134                  break;
135              case PROFESSIONAL:
136                  tgt.addCoding().setSystem("http://hl7.org/fhir/composition-attestation-mode").setCode("professional");
137                  break;
138              case LEGAL:
139                  tgt.addCoding().setSystem("http://hl7.org/fhir/composition-attestation-mode").setCode("legal");
140                  break;
141              case OFFICIAL:
142                  tgt.addCoding().setSystem("http://hl7.org/fhir/composition-attestation-mode").setCode("official");
143                  break;
144              default:
145                  break;
146          }
147      }
148      return tgt;
149  }
150
151  public static org.hl7.fhir.r5.model.Composition.CompositionAttesterComponent convertCompositionAttesterComponent(org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent src) throws FHIRException {
152    if (src == null)
153      return null;
154    org.hl7.fhir.r5.model.Composition.CompositionAttesterComponent tgt = new org.hl7.fhir.r5.model.Composition.CompositionAttesterComponent();
155    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
156    if (src.hasMode())
157      tgt.setMode(convertCompositionAttestationMode(src.getMode().get(0)));
158    if (src.hasTime())
159      tgt.setTimeElement(DateTime30_50.convertDateTime(src.getTimeElement()));
160    if (src.hasParty())
161      tgt.setParty(Reference30_50.convertReference(src.getParty()));
162    return tgt;
163  }
164
165  public static org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent convertCompositionAttesterComponent(org.hl7.fhir.r5.model.Composition.CompositionAttesterComponent src) throws FHIRException {
166    if (src == null)
167      return null;
168    org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent tgt = new org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent();
169    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
170    if (src.hasMode())
171      tgt.setMode(Collections.singletonList(convertCompositionAttestationMode(src.getMode())));
172    if (src.hasTime())
173      tgt.setTimeElement(DateTime30_50.convertDateTime(src.getTimeElement()));
174    if (src.hasParty())
175      tgt.setParty(Reference30_50.convertReference(src.getParty()));
176    return tgt;
177  }
178
179  public static org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent convertCompositionEventComponent(org.hl7.fhir.r5.model.Composition.CompositionEventComponent src) throws FHIRException {
180    if (src == null)
181      return null;
182    org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent tgt = new org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent();
183    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
184    if (src.hasPeriod())
185      tgt.setPeriod(Period30_50.convertPeriod(src.getPeriod()));
186    for (CodeableReference t : src.getDetail()) {
187      if (t.hasConcept()) {
188        tgt.addCode(CodeableConcept30_50.convertCodeableConcept(t.getConcept()));
189      }
190      if (t.hasReference()) {
191        tgt.addDetail(Reference30_50.convertReference(t.getReference()));
192      }
193    }
194    return tgt;
195  }
196
197  public static org.hl7.fhir.r5.model.Composition.CompositionEventComponent convertCompositionEventComponent(org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent src) throws FHIRException {
198    if (src == null)
199      return null;
200    org.hl7.fhir.r5.model.Composition.CompositionEventComponent tgt = new org.hl7.fhir.r5.model.Composition.CompositionEventComponent();
201    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
202    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getCode())
203      tgt.addDetail().setConcept(CodeableConcept30_50.convertCodeableConcept(t));
204    if (src.hasPeriod())
205      tgt.setPeriod(Period30_50.convertPeriod(src.getPeriod()));
206    for (org.hl7.fhir.dstu3.model.Reference t : src.getDetail()) tgt.addDetail().setReference(Reference30_50.convertReference(t));
207    return tgt;
208  }
209
210  public static org.hl7.fhir.dstu3.model.Composition.CompositionRelatesToComponent convertCompositionRelatesToComponent(org.hl7.fhir.r5.model.RelatedArtifact src) throws FHIRException {
211    if (src == null)
212      return null;
213    org.hl7.fhir.dstu3.model.Composition.CompositionRelatesToComponent tgt = new org.hl7.fhir.dstu3.model.Composition.CompositionRelatesToComponent();
214    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
215    if (src.hasType())
216      tgt.setCodeElement(convertDocumentRelationshipType(src.getTypeElement()));
217    if (src.hasResourceReference())
218      tgt.setTarget(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getResourceReference()));
219    return tgt;
220  }
221
222  public static org.hl7.fhir.r5.model.RelatedArtifact convertCompositionRelatesToComponent(org.hl7.fhir.dstu3.model.Composition.CompositionRelatesToComponent src) throws FHIRException {
223    if (src == null)
224      return null;
225    org.hl7.fhir.r5.model.RelatedArtifact tgt = new org.hl7.fhir.r5.model.RelatedArtifact();
226    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
227    if (src.hasCode())
228      tgt.setTypeElement(convertDocumentRelationshipType(src.getCodeElement()));
229    if (src.hasTargetReference())
230      tgt.setResourceReference(Reference30_50.convertReference(src.getTargetReference()));
231    return tgt;
232  }
233
234  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.DocumentRelationshipType> convertDocumentRelationshipType(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.RelatedArtifact.RelatedArtifactType> src) throws FHIRException {
235      if (src == null)
236          return null;
237      Enumeration<Composition.DocumentRelationshipType> tgt = new Enumeration<>(new Composition.DocumentRelationshipTypeEnumFactory());
238      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
239      if (src.getValue() == null) {
240          tgt.setValue(null);
241      } else {
242          switch (src.getValue()) {
243              case REPLACES:
244                  tgt.setValue(Composition.DocumentRelationshipType.REPLACES);
245                  break;
246              case TRANSFORMS:
247                  tgt.setValue(Composition.DocumentRelationshipType.TRANSFORMS);
248                  break;
249              case SIGNS:
250                  tgt.setValue(Composition.DocumentRelationshipType.SIGNS);
251                  break;
252              case APPENDS:
253                  tgt.setValue(Composition.DocumentRelationshipType.APPENDS);
254                  break;
255              default:
256                  tgt.setValue(Composition.DocumentRelationshipType.NULL);
257                  break;
258          }
259      }
260      return tgt;
261  }
262
263  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.RelatedArtifact.RelatedArtifactType> convertDocumentRelationshipType(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.DocumentRelationshipType> src) throws FHIRException {
264      if (src == null)
265          return null;
266      org.hl7.fhir.r5.model.Enumeration<RelatedArtifact.RelatedArtifactType> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new RelatedArtifact.RelatedArtifactTypeEnumFactory());
267      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
268      if (src.getValue() == null) {
269          tgt.setValue(null);
270      } else {
271          switch (src.getValue()) {
272              case REPLACES:
273                  tgt.setValue(RelatedArtifact.RelatedArtifactType.REPLACES);
274                  break;
275              case TRANSFORMS:
276                  tgt.setValue(RelatedArtifact.RelatedArtifactType.TRANSFORMS);
277                  break;
278              case SIGNS:
279                  tgt.setValue(RelatedArtifact.RelatedArtifactType.SIGNS);
280                  break;
281              case APPENDS:
282                  tgt.setValue(RelatedArtifact.RelatedArtifactType.APPENDS);
283                  break;
284              default:
285                  tgt.setValue(RelatedArtifact.RelatedArtifactType.NULL);
286                  break;
287          }
288      }
289      return tgt;
290  }
291
292  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.CompositionStatus> convertCompositionStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.CompositionStatus> src) throws FHIRException {
293      if (src == null || src.isEmpty())
294          return null;
295      Enumeration<Composition.CompositionStatus> tgt = new Enumeration<>(new Composition.CompositionStatusEnumFactory());
296      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
297      if (src.getValue() == null) {
298          tgt.setValue(null);
299      } else {
300          switch (src.getValue()) {
301              case PRELIMINARY:
302                  tgt.setValue(Composition.CompositionStatus.PRELIMINARY);
303                  break;
304              case FINAL:
305                  tgt.setValue(Composition.CompositionStatus.FINAL);
306                  break;
307              case AMENDED:
308                  tgt.setValue(Composition.CompositionStatus.AMENDED);
309                  break;
310              case ENTEREDINERROR:
311                  tgt.setValue(Composition.CompositionStatus.ENTEREDINERROR);
312                  break;
313              default:
314                  tgt.setValue(Composition.CompositionStatus.NULL);
315                  break;
316          }
317      }
318      return tgt;
319  }
320
321  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.CompositionStatus> convertCompositionStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.CompositionStatus> src) throws FHIRException {
322      if (src == null || src.isEmpty())
323          return null;
324      org.hl7.fhir.r5.model.Enumeration<Enumerations.CompositionStatus> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new Enumerations.CompositionStatusEnumFactory());
325      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
326      if (src.getValue() == null) {
327          tgt.setValue(null);
328      } else {
329          switch (src.getValue()) {
330              case PRELIMINARY:
331                  tgt.setValue(Enumerations.CompositionStatus.PRELIMINARY);
332                  break;
333              case FINAL:
334                  tgt.setValue(Enumerations.CompositionStatus.FINAL);
335                  break;
336              case AMENDED:
337                  tgt.setValue(Enumerations.CompositionStatus.AMENDED);
338                  break;
339              case ENTEREDINERROR:
340                  tgt.setValue(Enumerations.CompositionStatus.ENTEREDINERROR);
341                  break;
342              default:
343                  tgt.setValue(Enumerations.CompositionStatus.NULL);
344                  break;
345          }
346      }
347      return tgt;
348  }
349
350  static public org.hl7.fhir.r5.model.Coding convertDocumentConfidentiality(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality> src) throws FHIRException {
351    if (src == null || src.isEmpty())
352      return null;
353    org.hl7.fhir.r5.model.Coding tgt = new org.hl7.fhir.r5.model.Coding();
354    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
355    tgt.setCode(src.getValue().toCode());
356    return tgt;
357  }
358
359  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality> convertDocumentConfidentiality(org.hl7.fhir.r5.model.Coding src) throws FHIRException {
360    if (src == null || src.isEmpty())
361      return null;
362    org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.Composition.DocumentConfidentialityEnumFactory());
363    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
364    switch (src.getCode()) {
365      case "U":
366        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality.U);
367        break;
368      case "L":
369        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality.L);
370        break;
371      case "M":
372        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality.M);
373        break;
374      case "N":
375        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality.N);
376        break;
377      case "R":
378        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality.R);
379        break;
380      case "V":
381        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality.V);
382        break;
383      default:
384        tgt.setValue(org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality.NULL);
385        break;
386    }
387    return tgt;
388  }
389
390  public static org.hl7.fhir.dstu3.model.Composition.SectionComponent convertSectionComponent(org.hl7.fhir.r5.model.Composition.SectionComponent src) throws FHIRException {
391    if (src == null)
392      return null;
393    org.hl7.fhir.dstu3.model.Composition.SectionComponent tgt = new org.hl7.fhir.dstu3.model.Composition.SectionComponent();
394    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
395    if (src.hasTitle())
396      tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
397    if (src.hasCode())
398      tgt.setCode(CodeableConcept30_50.convertCodeableConcept(src.getCode()));
399    if (src.hasText())
400      tgt.setText(Narrative30_50.convertNarrative(src.getText()));
401//    if (src.hasMode())
402//      tgt.setModeElement(convertSectionMode(src.getModeElement()));
403    if (src.hasOrderedBy())
404      tgt.setOrderedBy(CodeableConcept30_50.convertCodeableConcept(src.getOrderedBy()));
405    for (org.hl7.fhir.r5.model.Reference t : src.getEntry()) tgt.addEntry(Reference30_50.convertReference(t));
406    if (src.hasEmptyReason())
407      tgt.setEmptyReason(CodeableConcept30_50.convertCodeableConcept(src.getEmptyReason()));
408    for (org.hl7.fhir.r5.model.Composition.SectionComponent t : src.getSection())
409      tgt.addSection(convertSectionComponent(t));
410    return tgt;
411  }
412
413  public static org.hl7.fhir.r5.model.Composition.SectionComponent convertSectionComponent(org.hl7.fhir.dstu3.model.Composition.SectionComponent src) throws FHIRException {
414    if (src == null)
415      return null;
416    org.hl7.fhir.r5.model.Composition.SectionComponent tgt = new org.hl7.fhir.r5.model.Composition.SectionComponent();
417    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
418    if (src.hasTitle())
419      tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
420    if (src.hasCode())
421      tgt.setCode(CodeableConcept30_50.convertCodeableConcept(src.getCode()));
422    if (src.hasText())
423      tgt.setText(Narrative30_50.convertNarrative(src.getText()));
424//    if (src.hasMode())
425//      tgt.setModeElement(convertSectionMode(src.getModeElement()));
426    if (src.hasOrderedBy())
427      tgt.setOrderedBy(CodeableConcept30_50.convertCodeableConcept(src.getOrderedBy()));
428    for (org.hl7.fhir.dstu3.model.Reference t : src.getEntry()) tgt.addEntry(Reference30_50.convertReference(t));
429    if (src.hasEmptyReason())
430      tgt.setEmptyReason(CodeableConcept30_50.convertCodeableConcept(src.getEmptyReason()));
431    for (org.hl7.fhir.dstu3.model.Composition.SectionComponent t : src.getSection())
432      tgt.addSection(convertSectionComponent(t));
433    return tgt;
434  }
435
436  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.SectionMode> convertSectionMode(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.ListMode> src) throws FHIRException {
437      if (src == null || src.isEmpty())
438          return null;
439      Enumeration<Composition.SectionMode> tgt = new Enumeration<>(new Composition.SectionModeEnumFactory());
440      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
441      if (src.getValue() == null) {
442          tgt.setValue(null);
443      } else {
444          switch (src.getValue()) {
445              case WORKING:
446                  tgt.setValue(Composition.SectionMode.WORKING);
447                  break;
448              case SNAPSHOT:
449                  tgt.setValue(Composition.SectionMode.SNAPSHOT);
450                  break;
451              case CHANGES:
452                  tgt.setValue(Composition.SectionMode.CHANGES);
453                  break;
454              default:
455                  tgt.setValue(Composition.SectionMode.NULL);
456                  break;
457          }
458      }
459      return tgt;
460  }
461
462  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.ListMode> convertSectionMode(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.SectionMode> src) throws FHIRException {
463      if (src == null || src.isEmpty())
464          return null;
465      org.hl7.fhir.r5.model.Enumeration<Enumerations.ListMode> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new Enumerations.ListModeEnumFactory());
466      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
467      if (src.getValue() == null) {
468          tgt.setValue(null);
469      } else {
470          switch (src.getValue()) {
471              case WORKING:
472                  tgt.setValue(Enumerations.ListMode.WORKING);
473                  break;
474              case SNAPSHOT:
475                  tgt.setValue(Enumerations.ListMode.SNAPSHOT);
476                  break;
477              case CHANGES:
478                  tgt.setValue(Enumerations.ListMode.CHANGES);
479                  break;
480              default:
481                  tgt.setValue(Enumerations.ListMode.NULL);
482                  break;
483          }
484      }
485      return tgt;
486  }
487}