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