
001package org.hl7.fhir.convertors.conv30_50.resources30_50; 002 003import java.util.ArrayList; 004import java.util.List; 005 006import org.hl7.fhir.convertors.context.ConversionContext30_50; 007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Reference30_50; 008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Annotation30_50; 009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50; 010import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Identifier30_50; 011import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.DateTime30_50; 012import org.hl7.fhir.exceptions.FHIRException; 013import org.hl7.fhir.r5.model.CodeableConcept; 014import org.hl7.fhir.r5.model.Coding; 015 016public class Condition30_50 { 017 018 private static final String CODE_SYSTEM_LEGACY_CONDITION_VER_CLINICAL_URL = "http://hl7.org/fhir/condition-ver-status"; 019 020 private static final String CODE_SYSTEM_CONDITION_VER_CLINICAL_URL = "http://terminology.hl7.org/CodeSystem/condition-ver-status"; 021 022 private static final String CODE_SYSTEM_LEGACY_CONDITION_CLINICAL_URL = "http://hl7.org/fhir/condition-clinical"; 023 024 private static final String CODE_SYSTEM_CONDITION_CLINICAL_URL = "http://terminology.hl7.org/CodeSystem/condition-clinical"; 025 026 public static org.hl7.fhir.r5.model.Condition convertCondition(org.hl7.fhir.dstu3.model.Condition src) throws FHIRException { 027 if (src == null) 028 return null; 029 org.hl7.fhir.r5.model.Condition tgt = new org.hl7.fhir.r5.model.Condition(); 030 ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); 031 for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier()) 032 tgt.addIdentifier(Identifier30_50.convertIdentifier(t)); 033 if (src.hasClinicalStatus()) 034 tgt.setClinicalStatus(convertConditionClinicalStatus(src.getClinicalStatus())); 035 if (src.hasVerificationStatus()) 036 tgt.setVerificationStatus(convertConditionVerificationStatus(src.getVerificationStatus())); 037 for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getCategory()) 038 tgt.addCategory(CodeableConcept30_50.convertCodeableConcept(t)); 039 if (src.hasSeverity()) 040 tgt.setSeverity(CodeableConcept30_50.convertCodeableConcept(src.getSeverity())); 041 if (src.hasCode()) 042 tgt.setCode(CodeableConcept30_50.convertCodeableConcept(src.getCode())); 043 for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getBodySite()) 044 tgt.addBodySite(CodeableConcept30_50.convertCodeableConcept(t)); 045 if (src.hasSubject()) 046 tgt.setSubject(Reference30_50.convertReference(src.getSubject())); 047 if (src.hasContext()) 048 tgt.setEncounter(Reference30_50.convertReference(src.getContext())); 049 if (src.hasOnset()) 050 tgt.setOnset(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getOnset())); 051 if (src.hasAbatement()) 052 tgt.setAbatement(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getAbatement())); 053 if (src.hasAssertedDate()) 054 tgt.setRecordedDateElement(DateTime30_50.convertDateTime(src.getAssertedDateElement())); 055 if (src.hasAsserter()) 056 tgt.addParticipant().setFunction(new CodeableConcept(new Coding("http://terminology.hl7.org/CodeSystem/provenance-participant-type", "informant", "Informant"))).setActor(Reference30_50.convertReference(src.getAsserter())); 057 if (src.hasStage()) 058 tgt.addStage(convertConditionStageComponent(src.getStage())); 059 for (org.hl7.fhir.dstu3.model.Condition.ConditionEvidenceComponent t : src.getEvidence()) 060 tgt.getEvidence().addAll(convertConditionEvidenceComponent(t)); 061 for (org.hl7.fhir.dstu3.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_50.convertAnnotation(t)); 062 return tgt; 063 } 064 065 public static org.hl7.fhir.dstu3.model.Condition convertCondition(org.hl7.fhir.r5.model.Condition src) throws FHIRException { 066 if (src == null) 067 return null; 068 org.hl7.fhir.dstu3.model.Condition tgt = new org.hl7.fhir.dstu3.model.Condition(); 069 ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); 070 for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier()) 071 tgt.addIdentifier(Identifier30_50.convertIdentifier(t)); 072 if (src.hasClinicalStatus()) 073 tgt.setClinicalStatus(convertConditionClinicalStatus(src.getClinicalStatus())); 074 if (src.hasVerificationStatus()) 075 tgt.setVerificationStatus(convertConditionVerificationStatus(src.getVerificationStatus())); 076 for (org.hl7.fhir.r5.model.CodeableConcept t : src.getCategory()) 077 tgt.addCategory(CodeableConcept30_50.convertCodeableConcept(t)); 078 if (src.hasSeverity()) 079 tgt.setSeverity(CodeableConcept30_50.convertCodeableConcept(src.getSeverity())); 080 if (src.hasCode()) 081 tgt.setCode(CodeableConcept30_50.convertCodeableConcept(src.getCode())); 082 for (org.hl7.fhir.r5.model.CodeableConcept t : src.getBodySite()) 083 tgt.addBodySite(CodeableConcept30_50.convertCodeableConcept(t)); 084 if (src.hasSubject()) 085 tgt.setSubject(Reference30_50.convertReference(src.getSubject())); 086 if (src.hasEncounter()) 087 tgt.setContext(Reference30_50.convertReference(src.getEncounter())); 088 if (src.hasOnset()) 089 tgt.setOnset(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getOnset())); 090 if (src.hasAbatement()) 091 tgt.setAbatement(ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().convertType(src.getAbatement())); 092 if (src.hasRecordedDate()) 093 tgt.setAssertedDateElement(DateTime30_50.convertDateTime(src.getRecordedDateElement())); 094 for (org.hl7.fhir.r5.model.Condition.ConditionParticipantComponent t : src.getParticipant()) { 095 if (t.getFunction().hasCoding("http://terminology.hl7.org/CodeSystem/provenance-participant-type", "informant")) 096 tgt.setAsserter(Reference30_50.convertReference(t.getActor())); 097 } 098 if (src.hasStage()) 099 tgt.setStage(convertConditionStageComponent(src.getStageFirstRep())); 100 for (org.hl7.fhir.r5.model.CodeableReference t : src.getEvidence()) 101 tgt.addEvidence(convertConditionEvidenceComponent(t)); 102 for (org.hl7.fhir.r5.model.Annotation t : src.getNote()) tgt.addNote(Annotation30_50.convertAnnotation(t)); 103 return tgt; 104 } 105 106 static public org.hl7.fhir.dstu3.model.Condition.ConditionClinicalStatus convertConditionClinicalStatus(org.hl7.fhir.r5.model.CodeableConcept src) throws FHIRException { 107 if (src == null) 108 return null; 109 if (src.hasCoding(CODE_SYSTEM_CONDITION_CLINICAL_URL, "active") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_CLINICAL_URL, "active")) 110 return org.hl7.fhir.dstu3.model.Condition.ConditionClinicalStatus.ACTIVE; 111 if (src.hasCoding(CODE_SYSTEM_CONDITION_CLINICAL_URL, "recurrence") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_CLINICAL_URL, "recurrence")) 112 return org.hl7.fhir.dstu3.model.Condition.ConditionClinicalStatus.RECURRENCE; 113 if (src.hasCoding(CODE_SYSTEM_CONDITION_CLINICAL_URL, "inactive") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_CLINICAL_URL, "inactive")) 114 return org.hl7.fhir.dstu3.model.Condition.ConditionClinicalStatus.INACTIVE; 115 if (src.hasCoding(CODE_SYSTEM_CONDITION_CLINICAL_URL, "remission") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_CLINICAL_URL, "remission")) 116 return org.hl7.fhir.dstu3.model.Condition.ConditionClinicalStatus.REMISSION; 117 if (src.hasCoding(CODE_SYSTEM_CONDITION_CLINICAL_URL, "resolved") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_CLINICAL_URL, "resolved")) 118 return org.hl7.fhir.dstu3.model.Condition.ConditionClinicalStatus.RESOLVED; 119 return org.hl7.fhir.dstu3.model.Condition.ConditionClinicalStatus.NULL; 120 } 121 122 static public org.hl7.fhir.r5.model.CodeableConcept convertConditionClinicalStatus(org.hl7.fhir.dstu3.model.Condition.ConditionClinicalStatus src) throws FHIRException { 123 if (src == null) 124 return null; 125 org.hl7.fhir.r5.model.CodeableConcept cc = new org.hl7.fhir.r5.model.CodeableConcept(); 126 switch (src) { 127 case ACTIVE: 128 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_CLINICAL_URL).setCode("active"); 129 return cc; 130 case RECURRENCE: 131 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_CLINICAL_URL).setCode("recurrence"); 132 return cc; 133 case INACTIVE: 134 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_CLINICAL_URL).setCode("inactive"); 135 return cc; 136 case REMISSION: 137 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_CLINICAL_URL).setCode("remission"); 138 return cc; 139 case RESOLVED: 140 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_CLINICAL_URL).setCode("resolved"); 141 return cc; 142 default: 143 return null; 144 } 145 } 146 147 public static List<org.hl7.fhir.r5.model.CodeableReference> convertConditionEvidenceComponent(org.hl7.fhir.dstu3.model.Condition.ConditionEvidenceComponent src) throws FHIRException { 148 if (src == null) 149 return null; 150 List<org.hl7.fhir.r5.model.CodeableReference> list = new ArrayList<>(); 151 for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getCode()) { 152 org.hl7.fhir.r5.model.CodeableReference tgt = new org.hl7.fhir.r5.model.CodeableReference(); 153 ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt); 154 tgt.setConcept(CodeableConcept30_50.convertCodeableConcept(t)); 155 list.add(tgt); 156 } 157 for (org.hl7.fhir.dstu3.model.Reference t : src.getDetail()) { 158 org.hl7.fhir.r5.model.CodeableReference tgt = new org.hl7.fhir.r5.model.CodeableReference(); 159 ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt); 160 tgt.setReference(Reference30_50.convertReference(t)); 161 list.add(tgt); 162 } 163 return list; 164 } 165 166 public static org.hl7.fhir.dstu3.model.Condition.ConditionEvidenceComponent convertConditionEvidenceComponent(org.hl7.fhir.r5.model.CodeableReference src) throws FHIRException { 167 if (src == null) 168 return null; 169 org.hl7.fhir.dstu3.model.Condition.ConditionEvidenceComponent tgt = new org.hl7.fhir.dstu3.model.Condition.ConditionEvidenceComponent(); 170 ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt); 171 if (src.hasConcept()) 172 tgt.addCode(CodeableConcept30_50.convertCodeableConcept(src.getConcept())); 173 if (src.hasReference()) 174 tgt.addDetail(Reference30_50.convertReference(src.getReference())); 175 return tgt; 176 } 177 178 public static org.hl7.fhir.dstu3.model.Condition.ConditionStageComponent convertConditionStageComponent(org.hl7.fhir.r5.model.Condition.ConditionStageComponent src) throws FHIRException { 179 if (src == null) 180 return null; 181 org.hl7.fhir.dstu3.model.Condition.ConditionStageComponent tgt = new org.hl7.fhir.dstu3.model.Condition.ConditionStageComponent(); 182 ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt); 183 if (src.hasSummary()) 184 tgt.setSummary(CodeableConcept30_50.convertCodeableConcept(src.getSummary())); 185 for (org.hl7.fhir.r5.model.Reference t : src.getAssessment()) tgt.addAssessment(Reference30_50.convertReference(t)); 186 return tgt; 187 } 188 189 public static org.hl7.fhir.r5.model.Condition.ConditionStageComponent convertConditionStageComponent(org.hl7.fhir.dstu3.model.Condition.ConditionStageComponent src) throws FHIRException { 190 if (src == null) 191 return null; 192 org.hl7.fhir.r5.model.Condition.ConditionStageComponent tgt = new org.hl7.fhir.r5.model.Condition.ConditionStageComponent(); 193 ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt); 194 if (src.hasSummary()) 195 tgt.setSummary(CodeableConcept30_50.convertCodeableConcept(src.getSummary())); 196 for (org.hl7.fhir.dstu3.model.Reference t : src.getAssessment()) 197 tgt.addAssessment(Reference30_50.convertReference(t)); 198 return tgt; 199 } 200 201 static public org.hl7.fhir.dstu3.model.Condition.ConditionVerificationStatus convertConditionVerificationStatus(org.hl7.fhir.r5.model.CodeableConcept src) throws FHIRException { 202 if (src == null) 203 return null; 204 if (src.hasCoding(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL, "provisional") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_VER_CLINICAL_URL, "provisional")) 205 return org.hl7.fhir.dstu3.model.Condition.ConditionVerificationStatus.PROVISIONAL; 206 if (src.hasCoding(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL, "differential") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_VER_CLINICAL_URL, "differential")) 207 return org.hl7.fhir.dstu3.model.Condition.ConditionVerificationStatus.DIFFERENTIAL; 208 if (src.hasCoding(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL, "confirmed") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_VER_CLINICAL_URL, "confirmed")) 209 return org.hl7.fhir.dstu3.model.Condition.ConditionVerificationStatus.CONFIRMED; 210 if (src.hasCoding(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL, "refuted") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_VER_CLINICAL_URL, "refuted")) 211 return org.hl7.fhir.dstu3.model.Condition.ConditionVerificationStatus.REFUTED; 212 if (src.hasCoding(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL, "entered-in-error") || src.hasCoding(CODE_SYSTEM_LEGACY_CONDITION_VER_CLINICAL_URL, "entered-in-error")) 213 return org.hl7.fhir.dstu3.model.Condition.ConditionVerificationStatus.ENTEREDINERROR; 214 return org.hl7.fhir.dstu3.model.Condition.ConditionVerificationStatus.NULL; 215 } 216 217 static public org.hl7.fhir.r5.model.CodeableConcept convertConditionVerificationStatus(org.hl7.fhir.dstu3.model.Condition.ConditionVerificationStatus src) throws FHIRException { 218 if (src == null) 219 return null; 220 org.hl7.fhir.r5.model.CodeableConcept cc = new org.hl7.fhir.r5.model.CodeableConcept(); 221 switch (src) { 222 case PROVISIONAL: 223 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL).setCode("provisional"); 224 return cc; 225 case DIFFERENTIAL: 226 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL).setCode("differential"); 227 return cc; 228 case CONFIRMED: 229 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL).setCode("confirmed"); 230 return cc; 231 case REFUTED: 232 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL).setCode("refuted"); 233 return cc; 234 case ENTEREDINERROR: 235 cc.addCoding().setSystem(CODE_SYSTEM_CONDITION_VER_CLINICAL_URL).setCode("entered-in-error"); 236 return cc; 237 default: 238 return null; 239 } 240 } 241}