001package org.hl7.fhir.convertors.conv10_50.resources10_50;
002
003import java.util.Collections;
004
005import org.hl7.fhir.convertors.context.ConversionContext10_50;
006import org.hl7.fhir.convertors.conv10_50.datatypes10_50.Narrative10_50;
007import org.hl7.fhir.convertors.conv10_50.datatypes10_50.Reference10_50;
008import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.CodeableConcept10_50;
009import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.Identifier10_50;
010import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.Period10_50;
011import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.Code10_50;
012import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.DateTime10_50;
013import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.String10_50;
014import org.hl7.fhir.exceptions.FHIRException;
015import org.hl7.fhir.r5.model.CodeableReference;
016
017public class Composition10_50 {
018
019  public static org.hl7.fhir.r5.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.r5.model.Composition tgt = new org.hl7.fhir.r5.model.Composition();
023    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
024    if (src.hasIdentifier())
025      tgt.addIdentifier(Identifier10_50.convertIdentifier(src.getIdentifier()));
026    if (src.hasDate())
027      tgt.setDateElement(DateTime10_50.convertDateTime(src.getDateElement()));
028    if (src.hasType())
029      tgt.setType(CodeableConcept10_50.convertCodeableConcept(src.getType()));
030    if (src.hasClass_())
031      tgt.addCategory(CodeableConcept10_50.convertCodeableConcept(src.getClass_()));
032    if (src.hasTitleElement())
033      tgt.setTitleElement(String10_50.convertString(src.getTitleElement()));
034    if (src.hasStatus())
035      tgt.setStatusElement(convertCompositionStatus(src.getStatusElement()));
036    try {
037      if (src.hasConfidentiality())
038        tgt.getMeta().addSecurity().setCodeElement(Code10_50.convertCode(src.getConfidentialityElement()));
039    } catch (org.hl7.fhir.exceptions.FHIRException e) {
040      throw new FHIRException(e);
041    }
042    if (src.hasSubject())
043      tgt.addSubject(Reference10_50.convertReference(src.getSubject()));
044    for (org.hl7.fhir.dstu2.model.Reference t : src.getAuthor()) tgt.addAuthor(Reference10_50.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_50.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_50.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.r5.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_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
063    if (src.hasIdentifier())
064      tgt.setIdentifier(Identifier10_50.convertIdentifier(src.getIdentifierFirstRep()));
065    if (src.hasDate())
066      tgt.setDateElement(DateTime10_50.convertDateTime(src.getDateElement()));
067    if (src.hasType())
068      tgt.setType(CodeableConcept10_50.convertCodeableConcept(src.getType()));
069    if (src.hasCategory())
070      tgt.setClass_(CodeableConcept10_50.convertCodeableConcept(src.getCategoryFirstRep()));
071    if (src.hasTitleElement())
072      tgt.setTitleElement(String10_50.convertString(src.getTitleElement()));
073    if (src.hasStatus())
074      tgt.setStatusElement(convertCompositionStatus(src.getStatusElement()));
075    tgt.setConfidentiality(src.getMeta().getSecurityFirstRep().getCode());
076    if (src.hasSubject())
077      tgt.setSubject(Reference10_50.convertReference(src.getSubjectFirstRep()));
078    for (org.hl7.fhir.r5.model.Reference t : src.getAuthor()) tgt.addAuthor(Reference10_50.convertReference(t));
079    for (org.hl7.fhir.r5.model.Composition.CompositionAttesterComponent t : src.getAttester())
080      tgt.addAttester(convertCompositionAttesterComponent(t));
081    if (src.hasCustodian())
082      tgt.setCustodian(Reference10_50.convertReference(src.getCustodian()));
083    for (org.hl7.fhir.r5.model.Composition.CompositionEventComponent t : src.getEvent())
084      tgt.addEvent(convertCompositionEventComponent(t));
085    if (src.hasEncounter())
086      tgt.setEncounter(Reference10_50.convertReference(src.getEncounter()));
087    for (org.hl7.fhir.r5.model.Composition.SectionComponent t : src.getSection())
088      tgt.addSection(convertSectionComponent(t));
089    return tgt;
090  }
091
092  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode> convertCompositionAttestationMode(org.hl7.fhir.r5.model.CodeableConcept src) throws FHIRException {
093    if (src == null || src.isEmpty())
094      return null;
095    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());
096    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
097    switch (src.getCode("http://hl7.org/fhir/composition-attestation-mode")) {
098      case "personal":
099        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.PERSONAL);
100        break;
101      case "professional":
102        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.PROFESSIONAL);
103        break;
104      case "legal":
105        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.LEGAL);
106        break;
107      case "official":
108        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.OFFICIAL);
109        break;
110      default:
111        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode.NULL);
112        break;
113    }
114    return tgt;
115  }
116
117  static public org.hl7.fhir.r5.model.CodeableConcept convertCompositionAttestationMode(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionAttestationMode> src) throws FHIRException {
118    if (src == null || src.isEmpty())
119      return null;
120    org.hl7.fhir.r5.model.CodeableConcept tgt = new org.hl7.fhir.r5.model.CodeableConcept();
121    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
122    switch (src.getValue()) {
123      case PERSONAL:
124        tgt.addCoding().setSystem("http://hl7.org/fhir/composition-attestation-mode").setCode("personal");
125        break;
126      case PROFESSIONAL:
127        tgt.addCoding().setSystem("http://hl7.org/fhir/composition-attestation-mode").setCode("professional");
128        break;
129      case LEGAL:
130        tgt.addCoding().setSystem("http://hl7.org/fhir/composition-attestation-mode").setCode("legal");
131        break;
132      case OFFICIAL:
133        tgt.addCoding().setSystem("http://hl7.org/fhir/composition-attestation-mode").setCode("official");
134        break;
135      default:
136        break;
137    }
138    return tgt;
139  }
140  public static org.hl7.fhir.dstu2.model.Composition.CompositionAttesterComponent convertCompositionAttesterComponent(org.hl7.fhir.r5.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_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
145    if (src.hasMode())
146      tgt.setMode(Collections.singletonList(convertCompositionAttestationMode(src.getMode())));
147    if (src.hasTimeElement())
148      tgt.setTimeElement(DateTime10_50.convertDateTime(src.getTimeElement()));
149    if (src.hasParty())
150      tgt.setParty(Reference10_50.convertReference(src.getParty()));
151    return tgt;
152  }
153
154  public static org.hl7.fhir.r5.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.r5.model.Composition.CompositionAttesterComponent tgt = new org.hl7.fhir.r5.model.Composition.CompositionAttesterComponent();
158    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
159    if (src.hasMode())
160      tgt.setMode(convertCompositionAttestationMode(src.getMode().get(0)));
161    if (src.hasTimeElement())
162      tgt.setTimeElement(DateTime10_50.convertDateTime(src.getTimeElement()));
163    if (src.hasParty())
164      tgt.setParty(Reference10_50.convertReference(src.getParty()));
165    return tgt;
166  }
167
168  public static org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent convertCompositionEventComponent(org.hl7.fhir.r5.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_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
173    if (src.hasPeriod())
174      tgt.setPeriod(Period10_50.convertPeriod(src.getPeriod()));
175    for (CodeableReference t : src.getDetail()) {
176      if (t.hasConcept()) {
177        tgt.addCode(CodeableConcept10_50.convertCodeableConcept(t.getConcept()));
178      }
179      if (t.hasReference()) {
180        tgt.addDetail(Reference10_50.convertReference(t.getReference()));
181      }
182    }
183    return tgt;
184  }
185
186  public static org.hl7.fhir.r5.model.Composition.CompositionEventComponent convertCompositionEventComponent(org.hl7.fhir.dstu2.model.Composition.CompositionEventComponent src) throws FHIRException {
187    if (src == null || src.isEmpty())
188      return null;
189    org.hl7.fhir.r5.model.Composition.CompositionEventComponent tgt = new org.hl7.fhir.r5.model.Composition.CompositionEventComponent();
190    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
191    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getCode())
192      tgt.addDetail().setConcept(CodeableConcept10_50.convertCodeableConcept(t));
193    if (src.hasPeriod())
194      tgt.setPeriod(Period10_50.convertPeriod(src.getPeriod()));
195    for (org.hl7.fhir.dstu2.model.Reference t : src.getDetail()) tgt.addDetail().setReference(Reference10_50.convertReference(t));
196    return tgt;
197  }
198
199  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.CompositionStatus> convertCompositionStatus(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionStatus> src) throws FHIRException {
200    if (src == null || src.isEmpty())
201      return null;
202    org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.CompositionStatus> tgt = new org.hl7.fhir.r5.model.Enumeration<>(new org.hl7.fhir.r5.model.Enumerations.CompositionStatusEnumFactory());
203    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
204    switch (src.getValue()) {
205      case PRELIMINARY:
206        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.CompositionStatus.PRELIMINARY);
207        break;
208      case FINAL:
209        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.CompositionStatus.FINAL);
210        break;
211      case AMENDED:
212        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.CompositionStatus.AMENDED);
213        break;
214      case ENTEREDINERROR:
215        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.CompositionStatus.ENTEREDINERROR);
216        break;
217      default:
218        tgt.setValue(org.hl7.fhir.r5.model.Enumerations.CompositionStatus.NULL);
219        break;
220    }
221    return tgt;
222  }
223
224  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Composition.CompositionStatus> convertCompositionStatus(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Enumerations.CompositionStatus> src) throws FHIRException {
225    if (src == null || src.isEmpty())
226      return null;
227    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());
228    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
229    switch (src.getValue()) {
230      case PRELIMINARY:
231        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.PRELIMINARY);
232        break;
233      case FINAL:
234        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.FINAL);
235        break;
236      case AMENDED:
237        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.AMENDED);
238        break;
239      case ENTEREDINERROR:
240        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.ENTEREDINERROR);
241        break;
242      default:
243        tgt.setValue(org.hl7.fhir.dstu2.model.Composition.CompositionStatus.NULL);
244        break;
245    }
246    return tgt;
247  }
248
249  public static org.hl7.fhir.dstu2.model.Composition.SectionComponent convertSectionComponent(org.hl7.fhir.r5.model.Composition.SectionComponent src) throws FHIRException {
250    if (src == null || src.isEmpty())
251      return null;
252    org.hl7.fhir.dstu2.model.Composition.SectionComponent tgt = new org.hl7.fhir.dstu2.model.Composition.SectionComponent();
253    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
254    if (src.hasTitleElement())
255      tgt.setTitleElement(String10_50.convertString(src.getTitleElement()));
256    if (src.hasCode())
257      tgt.setCode(CodeableConcept10_50.convertCodeableConcept(src.getCode()));
258    if (src.hasText())
259      tgt.setText(Narrative10_50.convertNarrative(src.getText()));
260//    tgt.setMode(src.getMode().toCode());
261    if (src.hasOrderedBy())
262      tgt.setOrderedBy(CodeableConcept10_50.convertCodeableConcept(src.getOrderedBy()));
263    for (org.hl7.fhir.r5.model.Reference t : src.getEntry()) tgt.addEntry(Reference10_50.convertReference(t));
264    if (src.hasEmptyReason())
265      tgt.setEmptyReason(CodeableConcept10_50.convertCodeableConcept(src.getEmptyReason()));
266    for (org.hl7.fhir.r5.model.Composition.SectionComponent t : src.getSection())
267      tgt.addSection(convertSectionComponent(t));
268    return tgt;
269  }
270
271  public static org.hl7.fhir.r5.model.Composition.SectionComponent convertSectionComponent(org.hl7.fhir.dstu2.model.Composition.SectionComponent src) throws FHIRException {
272    if (src == null || src.isEmpty())
273      return null;
274    org.hl7.fhir.r5.model.Composition.SectionComponent tgt = new org.hl7.fhir.r5.model.Composition.SectionComponent();
275    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
276    if (src.hasTitleElement())
277      tgt.setTitleElement(String10_50.convertString(src.getTitleElement()));
278    if (src.hasCode())
279      tgt.setCode(CodeableConcept10_50.convertCodeableConcept(src.getCode()));
280    if (src.hasText())
281      tgt.setText(Narrative10_50.convertNarrative(src.getText()));
282//    try {
283//      if (src.hasMode())
284//        tgt.setMode(org.hl7.fhir.r5.model.Enumerations.ListMode.fromCode(src.getMode()));
285//    } catch (org.hl7.fhir.exceptions.FHIRException e) {
286//      throw new FHIRException(e);
287//    }
288    if (src.hasOrderedBy())
289      tgt.setOrderedBy(CodeableConcept10_50.convertCodeableConcept(src.getOrderedBy()));
290    for (org.hl7.fhir.dstu2.model.Reference t : src.getEntry()) tgt.addEntry(Reference10_50.convertReference(t));
291    if (src.hasEmptyReason())
292      tgt.setEmptyReason(CodeableConcept10_50.convertCodeableConcept(src.getEmptyReason()));
293    for (org.hl7.fhir.dstu2.model.Composition.SectionComponent t : src.getSection())
294      tgt.addSection(convertSectionComponent(t));
295    return tgt;
296  }
297}