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