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