001package org.hl7.fhir.convertors.conv10_40.resources10_40;
002
003import java.util.Collections;
004
005import org.hl7.fhir.convertors.context.ConversionContext10_40;
006import org.hl7.fhir.convertors.conv10_40.datatypes10_40.Narrative10_40;
007import org.hl7.fhir.convertors.conv10_40.datatypes10_40.Reference10_40;
008import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.CodeableConcept10_40;
009import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Identifier10_40;
010import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Period10_40;
011import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.DateTime10_40;
012import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.String10_40;
013import org.hl7.fhir.exceptions.FHIRException;
014
015public class Composition10_40 {
016
017  public static org.hl7.fhir.dstu2.model.Composition convertComposition(org.hl7.fhir.r4.model.Composition src) throws FHIRException {
018    if (src == null || src.isEmpty())
019      return null;
020    org.hl7.fhir.dstu2.model.Composition tgt = new org.hl7.fhir.dstu2.model.Composition();
021    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt);
022    if (src.hasIdentifier())
023      tgt.setIdentifier(Identifier10_40.convertIdentifier(src.getIdentifier()));
024    if (src.hasDate())
025      tgt.setDateElement(DateTime10_40.convertDateTime(src.getDateElement()));
026    if (src.hasType())
027      tgt.setType(CodeableConcept10_40.convertCodeableConcept(src.getType()));
028    if (src.hasCategory())
029      tgt.setClass_(CodeableConcept10_40.convertCodeableConcept(src.getCategoryFirstRep()));
030    if (src.hasTitleElement())
031      tgt.setTitleElement(String10_40.convertString(src.getTitleElement()));
032    if (src.hasStatus())
033      tgt.setStatusElement(convertCompositionStatus(src.getStatusElement()));
034    tgt.setConfidentiality(src.getConfidentiality().toCode());
035    if (src.hasSubject())
036      tgt.setSubject(Reference10_40.convertReference(src.getSubject()));
037    for (org.hl7.fhir.r4.model.Reference t : src.getAuthor()) tgt.addAuthor(Reference10_40.convertReference(t));
038    for (org.hl7.fhir.r4.model.Composition.CompositionAttesterComponent t : src.getAttester())
039      tgt.addAttester(convertCompositionAttesterComponent(t));
040    if (src.hasCustodian())
041      tgt.setCustodian(Reference10_40.convertReference(src.getCustodian()));
042    for (org.hl7.fhir.r4.model.Composition.CompositionEventComponent t : src.getEvent())
043      tgt.addEvent(convertCompositionEventComponent(t));
044    if (src.hasEncounter())
045      tgt.setEncounter(Reference10_40.convertReference(src.getEncounter()));
046    for (org.hl7.fhir.r4.model.Composition.SectionComponent t : src.getSection())
047      tgt.addSection(convertSectionComponent(t));
048    return tgt;
049  }
050
051  public static org.hl7.fhir.r4.model.Composition convertComposition(org.hl7.fhir.dstu2.model.Composition src) throws FHIRException {
052    if (src == null || src.isEmpty())
053      return null;
054    org.hl7.fhir.r4.model.Composition tgt = new org.hl7.fhir.r4.model.Composition();
055    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt);
056    if (src.hasIdentifier())
057      tgt.setIdentifier(Identifier10_40.convertIdentifier(src.getIdentifier()));
058    if (src.hasDate())
059      tgt.setDateElement(DateTime10_40.convertDateTime(src.getDateElement()));
060    if (src.hasType())
061      tgt.setType(CodeableConcept10_40.convertCodeableConcept(src.getType()));
062    if (src.hasClass_())
063      tgt.addCategory(CodeableConcept10_40.convertCodeableConcept(src.getClass_()));
064    if (src.hasTitleElement())
065      tgt.setTitleElement(String10_40.convertString(src.getTitleElement()));
066    if (src.hasStatus())
067      tgt.setStatusElement(convertCompositionStatus(src.getStatusElement()));
068    try {
069      if (src.hasConfidentiality())
070        tgt.setConfidentiality(org.hl7.fhir.r4.model.Composition.DocumentConfidentiality.fromCode(src.getConfidentiality()));
071    } catch (org.hl7.fhir.exceptions.FHIRException e) {
072      throw new FHIRException(e);
073    }
074    if (src.hasSubject())
075      tgt.setSubject(Reference10_40.convertReference(src.getSubject()));
076    for (org.hl7.fhir.dstu2.model.Reference t : src.getAuthor()) tgt.addAuthor(Reference10_40.convertReference(t));
077    for (org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent t : src.getAttester())
078      tgt.addAttester(convertCompositionAttesterComponent(t));
079    if (src.hasCustodian())
080      tgt.setCustodian(Reference10_40.convertReference(src.getCustodian()));
081    for (org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent t : src.getEvent())
082      tgt.addEvent(convertCompositionEventComponent(t));
083    if (src.hasEncounter())
084      tgt.setEncounter(Reference10_40.convertReference(src.getEncounter()));
085    for (org.hl7.fhir.dstu2.model.Composition.SectionComponent t : src.getSection())
086      tgt.addSection(convertSectionComponent(t));
087    return tgt;
088  }
089
090  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Composition.CompositionAttestationMode> convertCompositionAttestationMode(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode> src) throws FHIRException {
091    if (src == null || src.isEmpty())
092      return null;
093    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Composition.CompositionAttestationMode> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Composition.CompositionAttestationModeEnumFactory());
094    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
095    switch (src.getValue()) {
096      case PERSONAL:
097        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionAttestationMode.PERSONAL);
098        break;
099      case PROFESSIONAL:
100        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionAttestationMode.PROFESSIONAL);
101        break;
102      case LEGAL:
103        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionAttestationMode.LEGAL);
104        break;
105      case OFFICIAL:
106        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionAttestationMode.OFFICIAL);
107        break;
108      default:
109        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionAttestationMode.NULL);
110        break;
111    }
112    return tgt;
113  }
114
115  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode> convertCompositionAttestationMode(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Composition.CompositionAttestationMode> src) throws FHIRException {
116    if (src == null || src.isEmpty())
117      return null;
118    org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.Composition.CompositionAttestationModeEnumFactory());
119    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
120    switch (src.getValue()) {
121      case PERSONAL:
122        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.PERSONAL);
123        break;
124      case PROFESSIONAL:
125        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.PROFESSIONAL);
126        break;
127      case LEGAL:
128        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.LEGAL);
129        break;
130      case OFFICIAL:
131        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.OFFICIAL);
132        break;
133      default:
134        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.NULL);
135        break;
136    }
137    return tgt;
138  }
139
140  public static org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent convertCompositionAttesterComponent(org.hl7.fhir.r4.model.Composition.CompositionAttesterComponent src) throws FHIRException {
141    if (src == null || src.isEmpty())
142      return null;
143    org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent tgt = new org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent();
144    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
145    if (src.hasMode())
146      tgt.setMode(Collections.singletonList(convertCompositionAttestationMode(src.getModeElement())));
147    if (src.hasTimeElement())
148      tgt.setTimeElement(DateTime10_40.convertDateTime(src.getTimeElement()));
149    if (src.hasParty())
150      tgt.setParty(Reference10_40.convertReference(src.getParty()));
151    return tgt;
152  }
153
154  public static org.hl7.fhir.r4.model.Composition.CompositionAttesterComponent convertCompositionAttesterComponent(org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent src) throws FHIRException {
155    if (src == null || src.isEmpty())
156      return null;
157    org.hl7.fhir.r4.model.Composition.CompositionAttesterComponent tgt = new org.hl7.fhir.r4.model.Composition.CompositionAttesterComponent();
158    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
159    if (src.hasMode())
160      tgt.setModeElement(convertCompositionAttestationMode(src.getMode().get(0)));
161    if (src.hasTimeElement())
162      tgt.setTimeElement(DateTime10_40.convertDateTime(src.getTimeElement()));
163    if (src.hasParty())
164      tgt.setParty(Reference10_40.convertReference(src.getParty()));
165    return tgt;
166  }
167
168  public static org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent convertCompositionEventComponent(org.hl7.fhir.r4.model.Composition.CompositionEventComponent src) throws FHIRException {
169    if (src == null || src.isEmpty())
170      return null;
171    org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent tgt = new org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent();
172    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
173    for (org.hl7.fhir.r4.model.CodeableConcept t : src.getCode())
174      tgt.addCode(CodeableConcept10_40.convertCodeableConcept(t));
175    if (src.hasPeriod())
176      tgt.setPeriod(Period10_40.convertPeriod(src.getPeriod()));
177    for (org.hl7.fhir.r4.model.Reference t : src.getDetail()) tgt.addDetail(Reference10_40.convertReference(t));
178    return tgt;
179  }
180
181  public static org.hl7.fhir.r4.model.Composition.CompositionEventComponent convertCompositionEventComponent(org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent src) throws FHIRException {
182    if (src == null || src.isEmpty())
183      return null;
184    org.hl7.fhir.r4.model.Composition.CompositionEventComponent tgt = new org.hl7.fhir.r4.model.Composition.CompositionEventComponent();
185    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
186    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getCode())
187      tgt.addCode(CodeableConcept10_40.convertCodeableConcept(t));
188    if (src.hasPeriod())
189      tgt.setPeriod(Period10_40.convertPeriod(src.getPeriod()));
190    for (org.hl7.fhir.dstu2.model.Reference t : src.getDetail()) tgt.addDetail(Reference10_40.convertReference(t));
191    return tgt;
192  }
193
194  static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Composition.CompositionStatus> convertCompositionStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionStatus> src) throws FHIRException {
195    if (src == null || src.isEmpty())
196      return null;
197    org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Composition.CompositionStatus> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Composition.CompositionStatusEnumFactory());
198    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
199    switch (src.getValue()) {
200      case PRELIMINARY:
201        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionStatus.PRELIMINARY);
202        break;
203      case FINAL:
204        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionStatus.FINAL);
205        break;
206      case AMENDED:
207        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionStatus.AMENDED);
208        break;
209      case ENTEREDINERROR:
210        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionStatus.ENTEREDINERROR);
211        break;
212      default:
213        tgt.setValue(org.hl7.fhir.r4.model.Composition.CompositionStatus.NULL);
214        break;
215    }
216    return tgt;
217  }
218
219  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionStatus> convertCompositionStatus(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Composition.CompositionStatus> src) throws FHIRException {
220    if (src == null || src.isEmpty())
221      return null;
222    org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionStatus> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.Composition.CompositionStatusEnumFactory());
223    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt);
224    switch (src.getValue()) {
225      case PRELIMINARY:
226        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.PRELIMINARY);
227        break;
228      case FINAL:
229        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.FINAL);
230        break;
231      case AMENDED:
232        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.AMENDED);
233        break;
234      case ENTEREDINERROR:
235        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.ENTEREDINERROR);
236        break;
237      default:
238        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.NULL);
239        break;
240    }
241    return tgt;
242  }
243
244  public static org.hl7.fhir.r4.model.Composition.SectionComponent convertSectionComponent(org.hl7.fhir.dstu2.model.Composition.SectionComponent src) throws FHIRException {
245    if (src == null || src.isEmpty())
246      return null;
247    org.hl7.fhir.r4.model.Composition.SectionComponent tgt = new org.hl7.fhir.r4.model.Composition.SectionComponent();
248    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
249    if (src.hasTitleElement())
250      tgt.setTitleElement(String10_40.convertString(src.getTitleElement()));
251    if (src.hasCode())
252      tgt.setCode(CodeableConcept10_40.convertCodeableConcept(src.getCode()));
253    if (src.hasText())
254      tgt.setText(Narrative10_40.convertNarrative(src.getText()));
255    try {
256      if (src.hasMode())
257        tgt.setMode(org.hl7.fhir.r4.model.Composition.SectionMode.fromCode(src.getMode()));
258    } catch (org.hl7.fhir.exceptions.FHIRException e) {
259      throw new FHIRException(e);
260    }
261    if (src.hasOrderedBy())
262      tgt.setOrderedBy(CodeableConcept10_40.convertCodeableConcept(src.getOrderedBy()));
263    for (org.hl7.fhir.dstu2.model.Reference t : src.getEntry()) tgt.addEntry(Reference10_40.convertReference(t));
264    if (src.hasEmptyReason())
265      tgt.setEmptyReason(CodeableConcept10_40.convertCodeableConcept(src.getEmptyReason()));
266    for (org.hl7.fhir.dstu2.model.Composition.SectionComponent t : src.getSection())
267      tgt.addSection(convertSectionComponent(t));
268    return tgt;
269  }
270
271  public static org.hl7.fhir.dstu2.model.Composition.SectionComponent convertSectionComponent(org.hl7.fhir.r4.model.Composition.SectionComponent src) throws FHIRException {
272    if (src == null || src.isEmpty())
273      return null;
274    org.hl7.fhir.dstu2.model.Composition.SectionComponent tgt = new org.hl7.fhir.dstu2.model.Composition.SectionComponent();
275    ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyBackboneElement(src,tgt);
276    if (src.hasTitleElement())
277      tgt.setTitleElement(String10_40.convertString(src.getTitleElement()));
278    if (src.hasCode())
279      tgt.setCode(CodeableConcept10_40.convertCodeableConcept(src.getCode()));
280    if (src.hasText())
281      tgt.setText(Narrative10_40.convertNarrative(src.getText()));
282    tgt.setMode(src.getMode().toCode());
283    if (src.hasOrderedBy())
284      tgt.setOrderedBy(CodeableConcept10_40.convertCodeableConcept(src.getOrderedBy()));
285    for (org.hl7.fhir.r4.model.Reference t : src.getEntry()) tgt.addEntry(Reference10_40.convertReference(t));
286    if (src.hasEmptyReason())
287      tgt.setEmptyReason(CodeableConcept10_40.convertCodeableConcept(src.getEmptyReason()));
288    for (org.hl7.fhir.r4.model.Composition.SectionComponent t : src.getSection())
289      tgt.addSection(convertSectionComponent(t));
290    return tgt;
291  }
292}