001package org.hl7.fhir.convertors.conv10_40.resources10_40; 002 003import org.hl7.fhir.convertors.SourceElementComponentWrapper; 004import org.hl7.fhir.convertors.context.ConversionContext10_40; 005import org.hl7.fhir.convertors.conv10_40.VersionConvertor_10_40; 006import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.CodeableConcept10_40; 007import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.ContactPoint10_40; 008import org.hl7.fhir.convertors.conv10_40.datatypes10_40.complextypes10_40.Identifier10_40; 009import org.hl7.fhir.convertors.conv10_40.datatypes10_40.primitivetypes10_40.*; 010import org.hl7.fhir.exceptions.FHIRException; 011import org.hl7.fhir.r4.model.CanonicalType; 012import org.hl7.fhir.r4.model.ConceptMap; 013import org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent; 014 015import java.util.ArrayList; 016import java.util.List; 017 018public class ConceptMap10_40 { 019 020 public static org.hl7.fhir.r4.model.ConceptMap convertConceptMap(org.hl7.fhir.dstu2.model.ConceptMap src) throws FHIRException { 021 if (src == null || src.isEmpty()) 022 return null; 023 org.hl7.fhir.r4.model.ConceptMap tgt = new org.hl7.fhir.r4.model.ConceptMap(); 024 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt); 025 if (src.hasUrlElement()) 026 tgt.setUrlElement(Uri10_40.convertUri(src.getUrlElement())); 027 if (src.hasIdentifier()) 028 tgt.setIdentifier(Identifier10_40.convertIdentifier(src.getIdentifier())); 029 if (src.hasVersionElement()) 030 tgt.setVersionElement(String10_40.convertString(src.getVersionElement())); 031 if (src.hasNameElement()) 032 tgt.setNameElement(String10_40.convertString(src.getNameElement())); 033 if (src.hasStatus()) 034 tgt.setStatusElement(Enumerations10_40.convertConformanceResourceStatus(src.getStatusElement())); 035 if (src.hasExperimental()) 036 tgt.setExperimentalElement(Boolean10_40.convertBoolean(src.getExperimentalElement())); 037 if (src.hasPublisherElement()) 038 tgt.setPublisherElement(String10_40.convertString(src.getPublisherElement())); 039 for (org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent t : src.getContact()) 040 tgt.addContact(convertConceptMapContactComponent(t)); 041 if (src.hasDate()) 042 tgt.setDateElement(DateTime10_40.convertDateTime(src.getDateElement())); 043 if (src.hasDescription()) 044 tgt.setDescription(src.getDescription()); 045 for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getUseContext()) 046 if (VersionConvertor_10_40.isJurisdiction(t)) 047 tgt.addJurisdiction(CodeableConcept10_40.convertCodeableConcept(t)); 048 else 049 tgt.addUseContext(CodeableConcept10_40.convertCodeableConceptToUsageContext(t)); 050 if (src.hasRequirements()) 051 tgt.setPurpose(src.getRequirements()); 052 if (src.hasCopyright()) 053 tgt.setCopyright(src.getCopyright()); 054 org.hl7.fhir.r4.model.Type r = ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getSource()); 055 tgt.setSource(r instanceof org.hl7.fhir.r4.model.Reference ? new CanonicalType(((org.hl7.fhir.r4.model.Reference) r).getReference()) : r); 056 r = ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getTarget()); 057 tgt.setTarget(r instanceof org.hl7.fhir.r4.model.Reference ? new CanonicalType(((org.hl7.fhir.r4.model.Reference) r).getReference()) : r); 058 for (org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent t : src.getElement()) { 059 List<SourceElementComponentWrapper<ConceptMap.SourceElementComponent>> ws = convertSourceElementComponent(t); 060 for (SourceElementComponentWrapper<ConceptMap.SourceElementComponent> w : ws) 061 getGroup(tgt, w.getSource(), w.getTarget()).addElement(w.getComp()); 062 } 063 return tgt; 064 } 065 066 public static org.hl7.fhir.dstu2.model.ConceptMap convertConceptMap(org.hl7.fhir.r4.model.ConceptMap src) throws FHIRException { 067 if (src == null || src.isEmpty()) 068 return null; 069 org.hl7.fhir.dstu2.model.ConceptMap tgt = new org.hl7.fhir.dstu2.model.ConceptMap(); 070 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt); 071 if (src.hasUrlElement()) 072 tgt.setUrlElement(Uri10_40.convertUri(src.getUrlElement())); 073 if (src.hasIdentifier()) 074 tgt.setIdentifier(Identifier10_40.convertIdentifier(src.getIdentifier())); 075 if (src.hasVersionElement()) 076 tgt.setVersionElement(String10_40.convertString(src.getVersionElement())); 077 if (src.hasNameElement()) 078 tgt.setNameElement(String10_40.convertString(src.getNameElement())); 079 if (src.hasStatus()) 080 tgt.setStatusElement(Enumerations10_40.convertConformanceResourceStatus(src.getStatusElement())); 081 if (src.hasExperimental()) 082 tgt.setExperimentalElement(Boolean10_40.convertBoolean(src.getExperimentalElement())); 083 if (src.hasPublisherElement()) 084 tgt.setPublisherElement(String10_40.convertString(src.getPublisherElement())); 085 for (org.hl7.fhir.r4.model.ContactDetail t : src.getContact()) tgt.addContact(convertConceptMapContactComponent(t)); 086 if (src.hasDate()) 087 tgt.setDateElement(DateTime10_40.convertDateTime(src.getDateElement())); 088 if (src.hasDescription()) 089 tgt.setDescription(src.getDescription()); 090 for (org.hl7.fhir.r4.model.UsageContext t : src.getUseContext()) 091 if (t.hasValueCodeableConcept()) 092 tgt.addUseContext(CodeableConcept10_40.convertCodeableConcept(t.getValueCodeableConcept())); 093 for (org.hl7.fhir.r4.model.CodeableConcept t : src.getJurisdiction()) 094 tgt.addUseContext(CodeableConcept10_40.convertCodeableConcept(t)); 095 if (src.hasPurpose()) 096 tgt.setRequirements(src.getPurpose()); 097 if (src.hasCopyright()) 098 tgt.setCopyright(src.getCopyright()); 099 if (src.hasSource()) 100 tgt.setSource(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getSource())); 101 if (src.hasTarget()) 102 tgt.setTarget(ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().convertType(src.getTarget())); 103 for (org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent g : src.getGroup()) 104 for (org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent t : g.getElement()) 105 tgt.addElement(convertSourceElementComponent(t, g)); 106 return tgt; 107 } 108 109 public static org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent convertConceptMapContactComponent(org.hl7.fhir.r4.model.ContactDetail src) throws FHIRException { 110 if (src == null || src.isEmpty()) 111 return null; 112 org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent tgt = new org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent(); 113 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 114 if (src.hasNameElement()) 115 tgt.setNameElement(String10_40.convertString(src.getNameElement())); 116 for (org.hl7.fhir.r4.model.ContactPoint t : src.getTelecom()) 117 tgt.addTelecom(ContactPoint10_40.convertContactPoint(t)); 118 return tgt; 119 } 120 121 public static org.hl7.fhir.r4.model.ContactDetail convertConceptMapContactComponent(org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent src) throws FHIRException { 122 if (src == null || src.isEmpty()) 123 return null; 124 org.hl7.fhir.r4.model.ContactDetail tgt = new org.hl7.fhir.r4.model.ContactDetail(); 125 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 126 if (src.hasNameElement()) 127 tgt.setNameElement(String10_40.convertString(src.getNameElement())); 128 for (org.hl7.fhir.dstu2.model.ContactPoint t : src.getTelecom()) 129 tgt.addTelecom(ContactPoint10_40.convertContactPoint(t)); 130 return tgt; 131 } 132 133 static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence> convertConceptMapEquivalence(org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence> src) throws FHIRException { 134 if (src == null || src.isEmpty()) 135 return null; 136 org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalenceEnumFactory()); 137 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 138 switch (src.getValue()) { 139 case EQUIVALENT: 140 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.EQUIVALENT); 141 break; 142 case EQUAL: 143 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.EQUAL); 144 break; 145 case WIDER: 146 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.WIDER); 147 break; 148 case SUBSUMES: 149 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.SUBSUMES); 150 break; 151 case NARROWER: 152 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.NARROWER); 153 break; 154 case SPECIALIZES: 155 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.SPECIALIZES); 156 break; 157 case INEXACT: 158 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.INEXACT); 159 break; 160 case UNMATCHED: 161 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.UNMATCHED); 162 break; 163 case DISJOINT: 164 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.DISJOINT); 165 break; 166 default: 167 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.NULL); 168 break; 169 } 170 return tgt; 171 } 172 173 static public org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence> convertConceptMapEquivalence(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence> src) throws FHIRException { 174 if (src == null || src.isEmpty()) 175 return null; 176 org.hl7.fhir.r4.model.Enumeration<org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence> tgt = new org.hl7.fhir.r4.model.Enumeration<>(new org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalenceEnumFactory()); 177 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 178 switch (src.getValue()) { 179 case EQUIVALENT: 180 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.EQUIVALENT); 181 break; 182 case EQUAL: 183 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.EQUAL); 184 break; 185 case WIDER: 186 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.WIDER); 187 break; 188 case SUBSUMES: 189 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.SUBSUMES); 190 break; 191 case NARROWER: 192 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.NARROWER); 193 break; 194 case SPECIALIZES: 195 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.SPECIALIZES); 196 break; 197 case INEXACT: 198 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.INEXACT); 199 break; 200 case UNMATCHED: 201 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.UNMATCHED); 202 break; 203 case DISJOINT: 204 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.DISJOINT); 205 break; 206 default: 207 tgt.setValue(org.hl7.fhir.r4.model.Enumerations.ConceptMapEquivalence.NULL); 208 break; 209 } 210 return tgt; 211 } 212 213 public static org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent convertOtherElementComponent(org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent src) throws FHIRException { 214 if (src == null || src.isEmpty()) 215 return null; 216 org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent tgt = new org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent(); 217 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 218 if (src.hasElementElement()) 219 tgt.setPropertyElement(Uri10_40.convertUri(src.getElementElement())); 220 if (src.hasCodeSystem()) 221 tgt.setSystem(src.getCodeSystem()); 222 if (src.hasCodeElement()) 223 tgt.setValueElement(String10_40.convertString(src.getCodeElement())); 224 return tgt; 225 } 226 227 public static org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent convertOtherElementComponent(org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent src) throws FHIRException { 228 if (src == null || src.isEmpty()) 229 return null; 230 org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent tgt = new org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent(); 231 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 232 if (src.hasPropertyElement()) 233 tgt.setElementElement(Uri10_40.convertUri(src.getPropertyElement())); 234 if (src.hasSystem()) 235 tgt.setCodeSystem(src.getSystem()); 236 if (src.hasValueElement()) 237 tgt.setCodeElement(String10_40.convertString(src.getValueElement())); 238 return tgt; 239 } 240 241 public static List<SourceElementComponentWrapper<ConceptMap.SourceElementComponent>> convertSourceElementComponent(org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent src) throws FHIRException { 242 List<SourceElementComponentWrapper<ConceptMap.SourceElementComponent>> res = new ArrayList<>(); 243 if (src == null || src.isEmpty()) 244 return res; 245 for (org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent t : src.getTarget()) { 246 org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent tgt = new org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent(); 247 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 248 tgt.setCode(src.getCode()); 249 tgt.addTarget(convertTargetElementComponent(t)); 250 res.add(new SourceElementComponentWrapper<>(tgt, src.getCodeSystem(), t.getCodeSystem())); 251 } 252 return res; 253 } 254 255 public static org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent convertSourceElementComponent(org.hl7.fhir.r4.model.ConceptMap.SourceElementComponent src, org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent g) throws FHIRException { 256 if (src == null || src.isEmpty()) 257 return null; 258 org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent tgt = new org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent(); 259 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 260 tgt.setCodeSystem(g.getSource()); 261 if (src.hasCodeElement()) 262 tgt.setCodeElement(Code10_40.convertCode(src.getCodeElement())); 263 for (org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent t : src.getTarget()) 264 tgt.addTarget(convertTargetElementComponent(t, g)); 265 return tgt; 266 } 267 268 public static org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent convertTargetElementComponent(org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent src, org.hl7.fhir.r4.model.ConceptMap.ConceptMapGroupComponent g) throws FHIRException { 269 if (src == null || src.isEmpty()) 270 return null; 271 org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent tgt = new org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent(); 272 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 273 tgt.setCodeSystem(g.getTarget()); 274 if (src.hasCodeElement()) 275 tgt.setCodeElement(Code10_40.convertCode(src.getCodeElement())); 276 if (src.hasEquivalence()) 277 tgt.setEquivalenceElement(convertConceptMapEquivalence(src.getEquivalenceElement())); 278 if (src.hasCommentElement()) 279 tgt.setCommentsElement(String10_40.convertString(src.getCommentElement())); 280 for (org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent t : src.getDependsOn()) 281 tgt.addDependsOn(convertOtherElementComponent(t)); 282 for (org.hl7.fhir.r4.model.ConceptMap.OtherElementComponent t : src.getProduct()) 283 tgt.addProduct(convertOtherElementComponent(t)); 284 return tgt; 285 } 286 287 public static org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent convertTargetElementComponent(org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent src) throws FHIRException { 288 if (src == null || src.isEmpty()) 289 return null; 290 org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent tgt = new org.hl7.fhir.r4.model.ConceptMap.TargetElementComponent(); 291 ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt); 292 if (src.hasCodeElement()) 293 tgt.setCodeElement(Code10_40.convertCode(src.getCodeElement())); 294 if (src.hasEquivalence()) 295 tgt.setEquivalenceElement(convertConceptMapEquivalence(src.getEquivalenceElement())); 296 if (src.hasCommentsElement()) 297 tgt.setCommentElement(String10_40.convertString(src.getCommentsElement())); 298 for (org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent t : src.getDependsOn()) 299 tgt.addDependsOn(convertOtherElementComponent(t)); 300 for (org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent t : src.getProduct()) 301 tgt.addProduct(convertOtherElementComponent(t)); 302 return tgt; 303 } 304 305 static public ConceptMapGroupComponent getGroup(ConceptMap map, String srcs, String tgts) { 306 for (ConceptMapGroupComponent grp : map.getGroup()) { 307 if (grp.getSource().equals(srcs) && grp.getTarget().equals(tgts)) 308 return grp; 309 } 310 ConceptMapGroupComponent grp = map.addGroup(); 311 grp.setSource(srcs); 312 grp.setTarget(tgts); 313 return grp; 314 } 315}