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