001package org.hl7.fhir.convertors.conv10_50.resources10_50; 002 003import org.hl7.fhir.convertors.SourceElementComponentWrapper; 004import org.hl7.fhir.convertors.VersionConvertorConstants; 005import org.hl7.fhir.convertors.context.ConversionContext10_50; 006import org.hl7.fhir.convertors.conv10_50.VersionConvertor_10_50; 007import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.CodeableConcept10_50; 008import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.ContactPoint10_50; 009import org.hl7.fhir.convertors.conv10_50.datatypes10_50.complextypes10_50.Identifier10_50; 010import org.hl7.fhir.convertors.conv10_50.datatypes10_50.primitivetypes10_50.*; 011import org.hl7.fhir.dstu2.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 ConceptMap10_50 { 025 026 public static org.hl7.fhir.r5.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.r5.model.ConceptMap tgt = new org.hl7.fhir.r5.model.ConceptMap(); 030 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt); 031 if (src.hasUrlElement()) 032 tgt.setUrlElement(Uri10_50.convertUri(src.getUrlElement())); 033 if (src.hasIdentifier()) 034 tgt.addIdentifier(Identifier10_50.convertIdentifier(src.getIdentifier())); 035 if (src.hasVersionElement()) 036 tgt.setVersionElement(String10_50.convertString(src.getVersionElement())); 037 if (src.hasNameElement()) 038 tgt.setNameElement(String10_50.convertString(src.getNameElement())); 039 if (src.hasStatus()) 040 tgt.setStatusElement(Enumerations10_50.convertConformanceResourceStatus(src.getStatusElement())); 041 if (src.hasExperimental()) 042 tgt.setExperimentalElement(Boolean10_50.convertBoolean(src.getExperimentalElement())); 043 if (src.hasPublisherElement()) 044 tgt.setPublisherElement(String10_50.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_50.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_50.isJurisdiction(t)) 053 tgt.addJurisdiction(CodeableConcept10_50.convertCodeableConcept(t)); 054 else 055 tgt.addUseContext(CodeableConcept10_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 r = ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getSource()); 061 tgt.setSource(r instanceof org.hl7.fhir.r5.model.Reference ? new CanonicalType(((org.hl7.fhir.r5.model.Reference) r).getReference()) : r); 062 r = ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getTarget()); 063 tgt.setTarget(r instanceof org.hl7.fhir.r5.model.Reference ? new CanonicalType(((org.hl7.fhir.r5.model.Reference) r).getReference()) : r); 064 for (org.hl7.fhir.dstu2.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.dstu2.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.dstu2.model.ConceptMap tgt = new org.hl7.fhir.dstu2.model.ConceptMap(); 076 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt); 077 if (src.hasUrlElement()) 078 tgt.setUrlElement(Uri10_50.convertUri(src.getUrlElement())); 079 if (src.hasIdentifier()) { 080 if (src.hasIdentifier()) 081 tgt.setIdentifier(Identifier10_50.convertIdentifier(src.getIdentifierFirstRep())); 082 } 083 if (src.hasVersionElement()) 084 tgt.setVersionElement(String10_50.convertString(src.getVersionElement())); 085 if (src.hasNameElement()) 086 tgt.setNameElement(String10_50.convertString(src.getNameElement())); 087 if (src.hasStatus()) 088 tgt.setStatusElement(Enumerations10_50.convertConformanceResourceStatus(src.getStatusElement())); 089 if (src.hasExperimental()) 090 tgt.setExperimentalElement(Boolean10_50.convertBoolean(src.getExperimentalElement())); 091 if (src.hasPublisherElement()) 092 tgt.setPublisherElement(String10_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(DateTime10_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(CodeableConcept10_50.convertCodeableConcept(t.getValueCodeableConcept())); 101 for (org.hl7.fhir.r5.model.CodeableConcept t : src.getJurisdiction()) 102 tgt.addUseContext(CodeableConcept10_50.convertCodeableConcept(t)); 103 if (src.hasPurpose()) 104 tgt.setRequirements(src.getPurpose()); 105 if (src.hasCopyright()) 106 tgt.setCopyright(src.getCopyright()); 107 if (src.hasSource()) 108 tgt.setSource(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getSource())); 109 if (src.hasTarget()) 110 tgt.setTarget(ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().convertType(src.getTarget())); 111 for (org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent g : src.getGroup()) 112 for (org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent t : g.getElement()) 113 tgt.addElement(convertSourceElementComponent(t, g)); 114 return tgt; 115 } 116 117 public static org.hl7.fhir.r5.model.ContactDetail convertConceptMapContactComponent(org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent src) throws FHIRException { 118 if (src == null || src.isEmpty()) 119 return null; 120 org.hl7.fhir.r5.model.ContactDetail tgt = new org.hl7.fhir.r5.model.ContactDetail(); 121 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 122 if (src.hasNameElement()) 123 tgt.setNameElement(String10_50.convertString(src.getNameElement())); 124 for (org.hl7.fhir.dstu2.model.ContactPoint t : src.getTelecom()) 125 tgt.addTelecom(ContactPoint10_50.convertContactPoint(t)); 126 return tgt; 127 } 128 129 public static org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent convertConceptMapContactComponent(org.hl7.fhir.r5.model.ContactDetail src) throws FHIRException { 130 if (src == null || src.isEmpty()) 131 return null; 132 org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent tgt = new org.hl7.fhir.dstu2.model.ConceptMap.ConceptMapContactComponent(); 133 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 134 if (src.hasNameElement()) 135 tgt.setNameElement(String10_50.convertString(src.getNameElement())); 136 for (org.hl7.fhir.r5.model.ContactPoint t : src.getTelecom()) 137 tgt.addTelecom(ContactPoint10_50.convertContactPoint(t)); 138 return tgt; 139 } 140 141 public static org.hl7.fhir.dstu2.model.Enumeration<ConceptMapEquivalence> convertConceptMapEquivalence(Enumeration<ConceptMapRelationship> src) throws FHIRException { 142 if (src == null || src.isEmpty()) 143 return null; 144 org.hl7.fhir.dstu2.model.Enumeration<ConceptMapEquivalence> tgt = new org.hl7.fhir.dstu2.model.Enumeration<ConceptMapEquivalence>(new org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalenceEnumFactory()); 145 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt, VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE); 146 if (src.hasExtension(VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE)) { 147 tgt.setValueAsString(src.getExtensionString(VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE)); 148 } else { 149 switch (src.getValue()) { 150 case EQUIVALENT: 151 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.EQUIVALENT); 152 break; 153 case SOURCEISNARROWERTHANTARGET: 154 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.WIDER); 155 break; 156 case SOURCEISBROADERTHANTARGET: 157 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.NARROWER); 158 break; 159 case NOTRELATEDTO: 160 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.DISJOINT); 161 break; 162 default: 163 tgt.setValue(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.NULL); 164 break; 165 } 166 } 167 return tgt; 168 } 169 170 public static Enumeration<ConceptMapRelationship> convertConceptMapRelationship(org.hl7.fhir.dstu2.model.Enumeration<ConceptMapEquivalence> src) throws FHIRException { 171 if (src == null || src.isEmpty()) 172 return null; 173 Enumeration<ConceptMapRelationship> tgt = new Enumeration<ConceptMapRelationship>(new Enumerations.ConceptMapRelationshipEnumFactory()); 174 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 175 ToolingExtensions.setCodeExtension(tgt, VersionConvertorConstants.EXT_OLD_CONCEPTMAP_EQUIVALENCE, src.getValueAsString()); 176 switch (src.getValue()) { 177 case EQUIVALENT: 178 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.EQUIVALENT); 179 break; 180 case EQUAL: 181 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.EQUIVALENT); 182 break; 183 case WIDER: 184 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISNARROWERTHANTARGET); 185 break; 186 case SUBSUMES: 187 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISNARROWERTHANTARGET); 188 break; 189 case NARROWER: 190 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISBROADERTHANTARGET); 191 break; 192 case SPECIALIZES: 193 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.SOURCEISBROADERTHANTARGET); 194 break; 195 case INEXACT: 196 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.RELATEDTO); 197 break; 198 case UNMATCHED: 199 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NULL); 200 break; 201 case DISJOINT: 202 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NOTRELATEDTO); 203 break; 204 default: 205 tgt.setValue(org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship.NULL); 206 break; 207 } 208 return tgt; 209 } 210 211 public static org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent convertOtherElementComponent(org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent src) throws FHIRException { 212 if (src == null || src.isEmpty()) 213 return null; 214 org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent tgt = new org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent(); 215 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 216 if (src.hasPropertyElement()) 217 tgt.setElementElement(Uri10_50.convertUri(src.getPropertyElement())); 218 if (src.hasSystem()) 219 tgt.setCodeSystem(src.getSystem()); 220 if (src.hasValueElement()) 221 tgt.setCodeElement(String10_50.convertString(src.getValueElement())); 222 return tgt; 223 } 224 225 public static org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent convertOtherElementComponent(org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent src) throws FHIRException { 226 if (src == null || src.isEmpty()) 227 return null; 228 org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent(); 229 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 230 if (src.hasElementElement()) 231 tgt.setPropertyElement(Uri10_50.convertUri(src.getElementElement())); 232 if (src.hasCodeSystem()) 233 tgt.setSystem(src.getCodeSystem()); 234 if (src.hasCodeElement()) 235 tgt.setValueElement(String10_50.convertString(src.getCodeElement())); 236 return tgt; 237 } 238 239 public static org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent convertSourceElementComponent(org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent src, org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent g) throws FHIRException { 240 if (src == null || src.isEmpty()) 241 return null; 242 org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent tgt = new org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent(); 243 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 244 tgt.setCodeSystem(g.getSource()); 245 if (src.hasCodeElement()) 246 tgt.setCodeElement(Code10_50.convertCode(src.getCodeElement())); 247 if (src.hasNoMap() && src.getNoMap() == true) { 248 tgt.addTarget(new org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent().setEquivalence(org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.UNMATCHED)); 249 } else { 250 for (org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent t : src.getTarget()) 251 tgt.addTarget(convertTargetElementComponent(t, g)); 252 } 253 return tgt; 254 } 255 256 public static List<SourceElementComponentWrapper<ConceptMap.SourceElementComponent>> convertSourceElementComponent(org.hl7.fhir.dstu2.model.ConceptMap.SourceElementComponent src) throws FHIRException { 257 List<SourceElementComponentWrapper<ConceptMap.SourceElementComponent>> res = new ArrayList<>(); 258 if (src == null || src.isEmpty()) 259 return res; 260 for (org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent t : src.getTarget()) { 261 org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent(); 262 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 263 tgt.setCode(src.getCode()); 264 if (t.getEquivalence() == org.hl7.fhir.dstu2.model.Enumerations.ConceptMapEquivalence.UNMATCHED) { 265 tgt.setNoMap(true); 266 } else { 267 tgt.addTarget(convertTargetElementComponent(t)); 268 } 269 res.add(new SourceElementComponentWrapper<>(tgt, src.getCodeSystem(), t.getCodeSystem())); 270 } 271 return res; 272 } 273 274 public static org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent convertTargetElementComponent(org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent src, org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent g) throws FHIRException { 275 if (src == null || src.isEmpty()) 276 return null; 277 org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent tgt = new org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent(); 278 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 279 tgt.setCodeSystem(g.getTarget()); 280 if (src.hasCodeElement()) 281 tgt.setCodeElement(Code10_50.convertCode(src.getCodeElement())); 282 if (src.hasRelationship()) 283 tgt.setEquivalenceElement(convertConceptMapEquivalence(src.getRelationshipElement())); 284 if (src.hasCommentElement()) 285 tgt.setCommentsElement(String10_50.convertString(src.getCommentElement())); 286 for (org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent t : src.getDependsOn()) 287 tgt.addDependsOn(convertOtherElementComponent(t)); 288 for (org.hl7.fhir.r5.model.ConceptMap.OtherElementComponent t : src.getProduct()) 289 tgt.addProduct(convertOtherElementComponent(t)); 290 return tgt; 291 } 292 293 public static org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent convertTargetElementComponent(org.hl7.fhir.dstu2.model.ConceptMap.TargetElementComponent src) throws FHIRException { 294 if (src == null || src.isEmpty()) 295 return null; 296 org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent tgt = new org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent(); 297 ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt); 298 if (src.hasCodeElement()) 299 tgt.setCodeElement(Code10_50.convertCode(src.getCodeElement())); 300 if (src.hasEquivalence()) 301 tgt.setRelationshipElement(convertConceptMapRelationship(src.getEquivalenceElement())); 302 if (src.hasCommentsElement()) 303 tgt.setCommentElement(String10_50.convertString(src.getCommentsElement())); 304 for (org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent t : src.getDependsOn()) 305 tgt.addDependsOn(convertOtherElementComponent(t)); 306 for (org.hl7.fhir.dstu2.model.ConceptMap.OtherElementComponent t : src.getProduct()) 307 tgt.addProduct(convertOtherElementComponent(t)); 308 return tgt; 309 } 310 311 static public ConceptMapGroupComponent getGroup(ConceptMap map, String srcs, String tgts) { 312 for (ConceptMapGroupComponent grp : map.getGroup()) { 313 if (grp.getSource().equals(srcs) && grp.getTarget().equals(tgts)) 314 return grp; 315 } 316 ConceptMapGroupComponent grp = map.addGroup(); 317 grp.setSource(srcs); 318 grp.setTarget(tgts); 319 return grp; 320 } 321}