001package org.hl7.fhir.convertors.conv10_30.resources10_30;
002
003import java.util.stream.Collectors;
004
005import org.hl7.fhir.convertors.context.ConversionContext10_30;
006import org.hl7.fhir.convertors.conv10_30.datatypes10_30.Narrative10_30;
007import org.hl7.fhir.convertors.conv10_30.datatypes10_30.Reference10_30;
008import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.CodeableConcept10_30;
009import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Identifier10_30;
010import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Period10_30;
011import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.DateTime10_30;
012import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.String10_30;
013import org.hl7.fhir.dstu3.model.Composition;
014import org.hl7.fhir.dstu3.model.Enumeration;
015import org.hl7.fhir.exceptions.FHIRException;
016
017public class Composition10_30 {
018
019  public static org.hl7.fhir.dstu3.model.Composition convertComposition(org.hl7.fhir.dstu2.model.Composition src) throws FHIRException {
020    if (src == null || src.isEmpty())
021      return null;
022    org.hl7.fhir.dstu3.model.Composition tgt = new org.hl7.fhir.dstu3.model.Composition();
023    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
024    if (src.hasIdentifier())
025      tgt.setIdentifier(Identifier10_30.convertIdentifier(src.getIdentifier()));
026    if (src.hasDate())
027      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
028    if (src.hasType())
029      tgt.setType(CodeableConcept10_30.convertCodeableConcept(src.getType()));
030    if (src.hasClass_())
031      tgt.setClass_(CodeableConcept10_30.convertCodeableConcept(src.getClass_()));
032    if (src.hasTitleElement())
033      tgt.setTitleElement(String10_30.convertString(src.getTitleElement()));
034    if (src.hasStatus())
035      tgt.setStatusElement(convertCompositionStatus(src.getStatusElement()));
036    try {
037      if (src.hasConfidentiality())
038        tgt.setConfidentiality(org.hl7.fhir.dstu3.model.Composition.DocumentConfidentiality.fromCode(src.getConfidentiality()));
039    } catch (org.hl7.fhir.exceptions.FHIRException e) {
040      throw new FHIRException(e);
041    }
042    if (src.hasSubject())
043      tgt.setSubject(Reference10_30.convertReference(src.getSubject()));
044    for (org.hl7.fhir.dstu2.model.Reference t : src.getAuthor()) tgt.addAuthor(Reference10_30.convertReference(t));
045    for (org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent t : src.getAttester())
046      tgt.addAttester(convertCompositionAttesterComponent(t));
047    if (src.hasCustodian())
048      tgt.setCustodian(Reference10_30.convertReference(src.getCustodian()));
049    for (org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent t : src.getEvent())
050      tgt.addEvent(convertCompositionEventComponent(t));
051    if (src.hasEncounter())
052      tgt.setEncounter(Reference10_30.convertReference(src.getEncounter()));
053    for (org.hl7.fhir.dstu2.model.Composition.SectionComponent t : src.getSection())
054      tgt.addSection(convertSectionComponent(t));
055    return tgt;
056  }
057
058  public static org.hl7.fhir.dstu2.model.Composition convertComposition(org.hl7.fhir.dstu3.model.Composition src) throws FHIRException {
059    if (src == null || src.isEmpty())
060      return null;
061    org.hl7.fhir.dstu2.model.Composition tgt = new org.hl7.fhir.dstu2.model.Composition();
062    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
063    if (src.hasIdentifier())
064      tgt.setIdentifier(Identifier10_30.convertIdentifier(src.getIdentifier()));
065    if (src.hasDate())
066      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
067    if (src.hasType())
068      tgt.setType(CodeableConcept10_30.convertCodeableConcept(src.getType()));
069    if (src.hasClass_())
070      tgt.setClass_(CodeableConcept10_30.convertCodeableConcept(src.getClass_()));
071    if (src.hasTitleElement())
072      tgt.setTitleElement(String10_30.convertString(src.getTitleElement()));
073    if (src.hasStatus())
074      tgt.setStatusElement(convertCompositionStatus(src.getStatusElement()));
075    tgt.setConfidentiality(src.getConfidentiality().toCode());
076    if (src.hasSubject())
077      tgt.setSubject(Reference10_30.convertReference(src.getSubject()));
078    for (org.hl7.fhir.dstu3.model.Reference t : src.getAuthor()) tgt.addAuthor(Reference10_30.convertReference(t));
079    for (org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent t : src.getAttester())
080      tgt.addAttester(convertCompositionAttesterComponent(t));
081    if (src.hasCustodian())
082      tgt.setCustodian(Reference10_30.convertReference(src.getCustodian()));
083    for (org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent t : src.getEvent())
084      tgt.addEvent(convertCompositionEventComponent(t));
085    if (src.hasEncounter())
086      tgt.setEncounter(Reference10_30.convertReference(src.getEncounter()));
087    for (org.hl7.fhir.dstu3.model.Composition.SectionComponent t : src.getSection())
088      tgt.addSection(convertSectionComponent(t));
089    return tgt;
090  }
091
092  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.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_30.INSTANCE.getVersionConvertor_10_30().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.dstu3.model.Enumeration<org.hl7.fhir.dstu3.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_30.INSTANCE.getVersionConvertor_10_30().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.dstu3.model.Composition.CompositionAttesterComponent convertCompositionAttesterComponent(org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent src) throws FHIRException {
151    if (src == null || src.isEmpty())
152      return null;
153    org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent tgt = new org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent();
154    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
155    tgt.setMode(src.getMode().stream()
156      .map(Composition10_30::convertCompositionAttestationMode)
157      .collect(Collectors.toList()));
158    if (src.hasTimeElement())
159      tgt.setTimeElement(DateTime10_30.convertDateTime(src.getTimeElement()));
160    if (src.hasParty())
161      tgt.setParty(Reference10_30.convertReference(src.getParty()));
162    return tgt;
163  }
164
165  public static org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent convertCompositionAttesterComponent(org.hl7.fhir.dstu3.model.Composition.CompositionAttesterComponent src) throws FHIRException {
166    if (src == null || src.isEmpty())
167      return null;
168    org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent tgt = new org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent();
169    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
170    tgt.setMode(src.getMode().stream()
171      .map(Composition10_30::convertCompositionAttestationMode)
172      .collect(Collectors.toList()));
173    if (src.hasTimeElement())
174      tgt.setTimeElement(DateTime10_30.convertDateTime(src.getTimeElement()));
175    if (src.hasParty())
176      tgt.setParty(Reference10_30.convertReference(src.getParty()));
177    return tgt;
178  }
179
180  public static org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent convertCompositionEventComponent(org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent src) throws FHIRException {
181    if (src == null || src.isEmpty())
182      return null;
183    org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent tgt = new org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent();
184    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
185    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getCode())
186      tgt.addCode(CodeableConcept10_30.convertCodeableConcept(t));
187    if (src.hasPeriod())
188      tgt.setPeriod(Period10_30.convertPeriod(src.getPeriod()));
189    for (org.hl7.fhir.dstu3.model.Reference t : src.getDetail()) tgt.addDetail(Reference10_30.convertReference(t));
190    return tgt;
191  }
192
193  public static org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent convertCompositionEventComponent(org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent src) throws FHIRException {
194    if (src == null || src.isEmpty())
195      return null;
196    org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent tgt = new org.hl7.fhir.dstu3.model.Composition.CompositionEventComponent();
197    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
198    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getCode())
199      tgt.addCode(CodeableConcept10_30.convertCodeableConcept(t));
200    if (src.hasPeriod())
201      tgt.setPeriod(Period10_30.convertPeriod(src.getPeriod()));
202    for (org.hl7.fhir.dstu2.model.Reference t : src.getDetail()) tgt.addDetail(Reference10_30.convertReference(t));
203    return tgt;
204  }
205
206  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.CompositionStatus> convertCompositionStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionStatus> src) throws FHIRException {
207      if (src == null || src.isEmpty())
208          return null;
209      Enumeration<Composition.CompositionStatus> tgt = new Enumeration<>(new Composition.CompositionStatusEnumFactory());
210      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
211      if (src.getValue() == null) {
212          tgt.setValue(null);
213      } else {
214          switch (src.getValue()) {
215              case PRELIMINARY:
216                  tgt.setValue(Composition.CompositionStatus.PRELIMINARY);
217                  break;
218              case FINAL:
219                  tgt.setValue(Composition.CompositionStatus.FINAL);
220                  break;
221              case AMENDED:
222                  tgt.setValue(Composition.CompositionStatus.AMENDED);
223                  break;
224              case ENTEREDINERROR:
225                  tgt.setValue(Composition.CompositionStatus.ENTEREDINERROR);
226                  break;
227              default:
228                  tgt.setValue(Composition.CompositionStatus.NULL);
229                  break;
230          }
231      }
232      return tgt;
233  }
234
235  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionStatus> convertCompositionStatus(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Composition.CompositionStatus> src) throws FHIRException {
236      if (src == null || src.isEmpty())
237          return null;
238      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());
239      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
240      if (src.getValue() == null) {
241          tgt.setValue(null);
242      } else {
243          switch (src.getValue()) {
244              case PRELIMINARY:
245                  tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.PRELIMINARY);
246                  break;
247              case FINAL:
248                  tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.FINAL);
249                  break;
250              case AMENDED:
251                  tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.AMENDED);
252                  break;
253              case ENTEREDINERROR:
254                  tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.ENTEREDINERROR);
255                  break;
256              default:
257                  tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.NULL);
258                  break;
259          }
260      }
261      return tgt;
262  }
263
264  public static org.hl7.fhir.dstu3.model.Composition.SectionComponent convertSectionComponent(org.hl7.fhir.dstu2.model.Composition.SectionComponent src) throws FHIRException {
265    if (src == null || src.isEmpty())
266      return null;
267    org.hl7.fhir.dstu3.model.Composition.SectionComponent tgt = new org.hl7.fhir.dstu3.model.Composition.SectionComponent();
268    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
269    if (src.hasTitleElement())
270      tgt.setTitleElement(String10_30.convertString(src.getTitleElement()));
271    if (src.hasCode())
272      tgt.setCode(CodeableConcept10_30.convertCodeableConcept(src.getCode()));
273    if (src.hasText())
274      tgt.setText(Narrative10_30.convertNarrative(src.getText()));
275    try {
276      if (src.hasMode())
277        tgt.setMode(org.hl7.fhir.dstu3.model.Composition.SectionMode.fromCode(src.getMode()));
278    } catch (org.hl7.fhir.exceptions.FHIRException e) {
279      throw new FHIRException(e);
280    }
281    if (src.hasOrderedBy())
282      tgt.setOrderedBy(CodeableConcept10_30.convertCodeableConcept(src.getOrderedBy()));
283    for (org.hl7.fhir.dstu2.model.Reference t : src.getEntry()) tgt.addEntry(Reference10_30.convertReference(t));
284    if (src.hasEmptyReason())
285      tgt.setEmptyReason(CodeableConcept10_30.convertCodeableConcept(src.getEmptyReason()));
286    for (org.hl7.fhir.dstu2.model.Composition.SectionComponent t : src.getSection())
287      tgt.addSection(convertSectionComponent(t));
288    return tgt;
289  }
290
291  public static org.hl7.fhir.dstu2.model.Composition.SectionComponent convertSectionComponent(org.hl7.fhir.dstu3.model.Composition.SectionComponent src) throws FHIRException {
292    if (src == null || src.isEmpty())
293      return null;
294    org.hl7.fhir.dstu2.model.Composition.SectionComponent tgt = new org.hl7.fhir.dstu2.model.Composition.SectionComponent();
295    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
296    if (src.hasTitleElement())
297      tgt.setTitleElement(String10_30.convertString(src.getTitleElement()));
298    if (src.hasCode())
299      tgt.setCode(CodeableConcept10_30.convertCodeableConcept(src.getCode()));
300    if (src.hasText())
301      tgt.setText(Narrative10_30.convertNarrative(src.getText()));
302    tgt.setMode(src.getMode().toCode());
303    if (src.hasOrderedBy())
304      tgt.setOrderedBy(CodeableConcept10_30.convertCodeableConcept(src.getOrderedBy()));
305    for (org.hl7.fhir.dstu3.model.Reference t : src.getEntry()) tgt.addEntry(Reference10_30.convertReference(t));
306    if (src.hasEmptyReason())
307      tgt.setEmptyReason(CodeableConcept10_30.convertCodeableConcept(src.getEmptyReason()));
308    for (org.hl7.fhir.dstu3.model.Composition.SectionComponent t : src.getSection())
309      tgt.addSection(convertSectionComponent(t));
310    return tgt;
311  }
312}