001package org.hl7.fhir.convertors.conv10_50.resources10_50;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import org.hl7.fhir.convertors.context.ConversionContext10_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.exceptions.FHIRException;
011import org.hl7.fhir.r5.model.CodeableConcept;
012import org.hl7.fhir.r5.model.CodeableReference;
013import org.hl7.fhir.r5.model.Coding;
014
015public class Condition10_50 {
016
017  public static org.hl7.fhir.dstu2.model.Condition convertCondition(org.hl7.fhir.r5.model.Condition src) throws FHIRException {
018    if (src == null || src.isEmpty())
019      return null;
020    org.hl7.fhir.dstu2.model.Condition tgt = new org.hl7.fhir.dstu2.model.Condition();
021    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
022    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
023      tgt.addIdentifier(Identifier10_50.convertIdentifier(t));
024    if (src.hasSubject())
025      tgt.setPatient(Reference10_50.convertReference(src.getSubject()));
026    if (src.hasEncounter())
027      tgt.setEncounter(Reference10_50.convertReference(src.getEncounter()));
028    for (org.hl7.fhir.r5.model.Condition.ConditionParticipantComponent t : src.getParticipant()) {
029      if (t.getFunction().hasCoding("http://terminology.hl7.org/CodeSystem/provenance-participant-type", "informant"))
030        tgt.setAsserter(Reference10_50.convertReference(t.getActor()));
031    }    if (src.hasRecordedDate())
032      tgt.setDateRecorded(src.getRecordedDate());
033    if (src.hasCode())
034      tgt.setCode(CodeableConcept10_50.convertCodeableConcept(src.getCode()));
035    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getCategory())
036      tgt.setCategory(CodeableConcept10_50.convertCodeableConcept(t));
037    if (src.hasClinicalStatus())
038      tgt.setClinicalStatus(convertConditionClinicalStatus(src.getClinicalStatus()));
039    if (src.hasVerificationStatus())
040      tgt.setVerificationStatus(convertConditionVerificationStatus(src.getVerificationStatus()));
041    if (src.hasSeverity())
042      tgt.setSeverity(CodeableConcept10_50.convertCodeableConcept(src.getSeverity()));
043    if (src.hasOnset())
044      tgt.setOnset(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getOnset()));
045    if (src.hasAbatement())
046      tgt.setAbatement(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getAbatement()));
047    if (src.hasStage())
048      tgt.setStage(convertConditionStageComponent(src.getStageFirstRep()));
049    for (CodeableReference t : src.getEvidence())
050      tgt.addEvidence(convertConditionEvidenceComponent(t));
051    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getBodySite())
052      tgt.addBodySite(CodeableConcept10_50.convertCodeableConcept(t));
053    return tgt;
054  }
055
056  public static org.hl7.fhir.r5.model.Condition convertCondition(org.hl7.fhir.dstu2.model.Condition src) throws FHIRException {
057    if (src == null || src.isEmpty())
058      return null;
059    org.hl7.fhir.r5.model.Condition tgt = new org.hl7.fhir.r5.model.Condition();
060    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt);
061    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
062      tgt.addIdentifier(Identifier10_50.convertIdentifier(t));
063    if (src.hasPatient())
064      tgt.setSubject(Reference10_50.convertReference(src.getPatient()));
065    if (src.hasEncounter())
066      tgt.setEncounter(Reference10_50.convertReference(src.getEncounter()));
067    if (src.hasAsserter())
068      tgt.addParticipant().setFunction(new CodeableConcept(new Coding("http://terminology.hl7.org/CodeSystem/provenance-participant-type", "informant", "Informant"))).setActor(Reference10_50.convertReference(src.getAsserter()));
069    if (src.hasDateRecorded())
070      tgt.setRecordedDate(src.getDateRecorded());
071    if (src.hasCode())
072      tgt.setCode(CodeableConcept10_50.convertCodeableConcept(src.getCode()));
073    if (src.hasCategory())
074      tgt.addCategory(CodeableConcept10_50.convertCodeableConcept(src.getCategory()));
075    if (src.hasClinicalStatus())
076      tgt.setClinicalStatus(convertConditionClinicalStatus(src.getClinicalStatus()));
077    if (src.hasVerificationStatus())
078      tgt.setVerificationStatus(convertConditionVerificationStatus(src.getVerificationStatus()));
079    if (src.hasSeverity())
080      tgt.setSeverity(CodeableConcept10_50.convertCodeableConcept(src.getSeverity()));
081    if (src.hasOnset())
082      tgt.setOnset(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getOnset()));
083    if (src.hasAbatement())
084      tgt.setAbatement(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getAbatement()));
085    if (src.hasStage())
086      tgt.addStage(convertConditionStageComponent(src.getStage()));
087    for (org.hl7.fhir.dstu2.model.Condition.ConditionEvidenceComponent t : src.getEvidence())
088      tgt.getEvidence().addAll(convertConditionEvidenceComponent(t));
089    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getBodySite())
090      tgt.addBodySite(CodeableConcept10_50.convertCodeableConcept(t));
091    return tgt;
092  }
093
094  static public org.hl7.fhir.r5.model.CodeableConcept convertConditionClinicalStatus(String src) throws FHIRException {
095    if (src == null)
096      return null;
097    org.hl7.fhir.r5.model.CodeableConcept cc = new org.hl7.fhir.r5.model.CodeableConcept();
098    cc.addCoding().setSystem("http://hl7.org/fhir/condition-clinical").setCode(src);
099    return cc;
100  }
101
102  static public String convertConditionClinicalStatus(org.hl7.fhir.r5.model.CodeableConcept src) throws FHIRException {
103    if (src == null)
104      return null;
105    for (org.hl7.fhir.r5.model.Coding c : src.getCoding()) {
106      if ("http://hl7.org/fhir/condition-clinical".equals(c.getSystem()))
107        return c.getCode();
108    }
109    return null;
110  }
111
112  public static List<org.hl7.fhir.r5.model.CodeableReference> convertConditionEvidenceComponent(org.hl7.fhir.dstu2.model.Condition.ConditionEvidenceComponent src) throws FHIRException {
113    if (src == null)
114      return null;
115    List<org.hl7.fhir.r5.model.CodeableReference> list = new ArrayList<>();
116    if (src.hasCode()) {
117      org.hl7.fhir.r5.model.CodeableReference tgt = new org.hl7.fhir.r5.model.CodeableReference();
118      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
119      tgt.setConcept(CodeableConcept10_50.convertCodeableConcept(src.getCode()));
120      list.add(tgt);
121    }
122    for (org.hl7.fhir.dstu2.model.Reference t : src.getDetail()) {
123      org.hl7.fhir.r5.model.CodeableReference tgt = new org.hl7.fhir.r5.model.CodeableReference();
124      ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
125      tgt.setReference(Reference10_50.convertReference(t));
126      list.add(tgt);
127    }
128    return list;
129  }
130
131  public static org.hl7.fhir.dstu2.model.Condition.ConditionEvidenceComponent convertConditionEvidenceComponent(org.hl7.fhir.r5.model.CodeableReference src) throws FHIRException {
132    if (src == null)
133      return null;
134    org.hl7.fhir.dstu2.model.Condition.ConditionEvidenceComponent tgt = new org.hl7.fhir.dstu2.model.Condition.ConditionEvidenceComponent();
135    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt);
136    if (src.hasConcept())
137      tgt.setCode(CodeableConcept10_50.convertCodeableConcept(src.getConcept()));
138    if (src.hasReference())
139      tgt.addDetail(Reference10_50.convertReference(src.getReference()));
140    return tgt;
141  }
142
143  public static org.hl7.fhir.dstu2.model.Condition.ConditionStageComponent convertConditionStageComponent(org.hl7.fhir.r5.model.Condition.ConditionStageComponent src) throws FHIRException {
144    if (src == null || src.isEmpty())
145      return null;
146    org.hl7.fhir.dstu2.model.Condition.ConditionStageComponent tgt = new org.hl7.fhir.dstu2.model.Condition.ConditionStageComponent();
147    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
148    if (src.hasSummary())
149      tgt.setSummary(CodeableConcept10_50.convertCodeableConcept(src.getSummary()));
150    for (org.hl7.fhir.r5.model.Reference t : src.getAssessment()) tgt.addAssessment(Reference10_50.convertReference(t));
151    return tgt;
152  }
153
154  public static org.hl7.fhir.r5.model.Condition.ConditionStageComponent convertConditionStageComponent(org.hl7.fhir.dstu2.model.Condition.ConditionStageComponent src) throws FHIRException {
155    if (src == null || src.isEmpty())
156      return null;
157    org.hl7.fhir.r5.model.Condition.ConditionStageComponent tgt = new org.hl7.fhir.r5.model.Condition.ConditionStageComponent();
158    ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyBackboneElement(src,tgt);
159    if (src.hasSummary())
160      tgt.setSummary(CodeableConcept10_50.convertCodeableConcept(src.getSummary()));
161    for (org.hl7.fhir.dstu2.model.Reference t : src.getAssessment())
162      tgt.addAssessment(Reference10_50.convertReference(t));
163    return tgt;
164  }
165
166  static public org.hl7.fhir.r5.model.CodeableConcept convertConditionVerificationStatus(org.hl7.fhir.dstu2.model.Condition.ConditionVerificationStatus src) throws FHIRException {
167    if (src == null)
168      return null;
169    org.hl7.fhir.r5.model.CodeableConcept cc = new org.hl7.fhir.r5.model.CodeableConcept();
170    switch (src) {
171      case PROVISIONAL:
172        cc.addCoding().setSystem("http://hl7.org/fhir/condition-ver-status").setCode("provisional");
173        return cc;
174      case DIFFERENTIAL:
175        cc.addCoding().setSystem("http://hl7.org/fhir/condition-ver-status").setCode("differential");
176        return cc;
177      case CONFIRMED:
178        cc.addCoding().setSystem("http://hl7.org/fhir/condition-ver-status").setCode("confirmed");
179        return cc;
180      case REFUTED:
181        cc.addCoding().setSystem("http://hl7.org/fhir/condition-ver-status").setCode("refuted");
182        return cc;
183      case ENTEREDINERROR:
184        cc.addCoding().setSystem("http://hl7.org/fhir/condition-ver-status").setCode("entered-in-error");
185        return cc;
186      default:
187        return null;
188    }
189  }
190
191  static public org.hl7.fhir.dstu2.model.Condition.ConditionVerificationStatus convertConditionVerificationStatus(org.hl7.fhir.r5.model.CodeableConcept src) throws FHIRException {
192    if (src == null)
193      return null;
194    if (src.hasCoding("http://hl7.org/fhir/condition-clinical", "provisional"))
195      return org.hl7.fhir.dstu2.model.Condition.ConditionVerificationStatus.PROVISIONAL;
196    if (src.hasCoding("http://hl7.org/fhir/condition-clinical", "differential"))
197      return org.hl7.fhir.dstu2.model.Condition.ConditionVerificationStatus.DIFFERENTIAL;
198    if (src.hasCoding("http://hl7.org/fhir/condition-clinical", "confirmed"))
199      return org.hl7.fhir.dstu2.model.Condition.ConditionVerificationStatus.CONFIRMED;
200    if (src.hasCoding("http://hl7.org/fhir/condition-clinical", "refuted"))
201      return org.hl7.fhir.dstu2.model.Condition.ConditionVerificationStatus.REFUTED;
202    if (src.hasCoding("http://hl7.org/fhir/condition-clinical", "entered-in-error"))
203      return org.hl7.fhir.dstu2.model.Condition.ConditionVerificationStatus.ENTEREDINERROR;
204    return org.hl7.fhir.dstu2.model.Condition.ConditionVerificationStatus.NULL;
205  }
206}