
001/*- 002 * #%L 003 * HAPI FHIR - Converter 004 * %% 005 * Copyright (C) 2014 - 2025 Smile CDR, Inc. 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package ca.uhn.hapi.converters.canonical; 021 022import ca.uhn.fhir.context.BaseRuntimeChildDefinition; 023import ca.uhn.fhir.context.FhirContext; 024import ca.uhn.fhir.context.FhirVersionEnum; 025import ca.uhn.fhir.i18n.Msg; 026import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt; 027import ca.uhn.fhir.model.dstu2.composite.CodingDt; 028import ca.uhn.fhir.util.HapiExtensions; 029import jakarta.annotation.Nonnull; 030import org.apache.commons.lang3.StringUtils; 031import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_10_40; 032import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_10_50; 033import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_14_40; 034import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_14_50; 035import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_30_40; 036import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_30_50; 037import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_40_50; 038import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_43_50; 039import org.hl7.fhir.convertors.factory.VersionConvertorFactory_10_40; 040import org.hl7.fhir.convertors.factory.VersionConvertorFactory_10_50; 041import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_40; 042import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_50; 043import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_40; 044import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; 045import org.hl7.fhir.convertors.factory.VersionConvertorFactory_40_50; 046import org.hl7.fhir.convertors.factory.VersionConvertorFactory_43_50; 047import org.hl7.fhir.dstu2.model.Resource; 048import org.hl7.fhir.instance.model.api.IBase; 049import org.hl7.fhir.instance.model.api.IBaseCoding; 050import org.hl7.fhir.instance.model.api.IBaseConformance; 051import org.hl7.fhir.instance.model.api.IBaseDatatype; 052import org.hl7.fhir.instance.model.api.IBaseParameters; 053import org.hl7.fhir.instance.model.api.IBaseResource; 054import org.hl7.fhir.instance.model.api.IPrimitiveType; 055import org.hl7.fhir.r4.model.AuditEvent; 056import org.hl7.fhir.r4.model.CodeSystem; 057import org.hl7.fhir.r4.model.CodeableConcept; 058import org.hl7.fhir.r4.model.Coding; 059import org.hl7.fhir.r4.model.ConceptMap; 060import org.hl7.fhir.r4.model.Parameters; 061import org.hl7.fhir.r4.model.ValueSet; 062import org.hl7.fhir.r5.model.CapabilityStatement; 063import org.hl7.fhir.r5.model.CodeType; 064import org.hl7.fhir.r5.model.Enumerations; 065import org.hl7.fhir.r5.model.PackageInformation; 066import org.hl7.fhir.r5.model.SearchParameter; 067import org.hl7.fhir.r5.model.StructureDefinition; 068import org.hl7.fhir.r5.model.SubscriptionTopic; 069 070import java.util.Date; 071import java.util.List; 072import java.util.Objects; 073import java.util.stream.Collectors; 074 075import static org.apache.commons.lang3.StringUtils.isBlank; 076 077/** 078 * This class converts versions of various resources to/from a canonical version 079 * of the resource. The specific version that is considered canonical is arbitrary 080 * for historical reasons, generally it will be R4 or R5 but this varies by resource 081 * type. 082 * <p> 083 * This class is an internal HAPI FHIR API and can change without notice at any time. 084 * Use with caution! 085 * </p> 086 */ 087public class VersionCanonicalizer { 088 089 private static final BaseAdvisor_30_50 ADVISOR_30_50 = new BaseAdvisor_30_50(false); 090 private static final BaseAdvisor_30_40 ADVISOR_30_40 = new BaseAdvisor_30_40(false); 091 private static final BaseAdvisor_10_40 ADVISOR_10_40 = new BaseAdvisor_10_40(false); 092 private static final BaseAdvisor_10_50 ADVISOR_10_50 = new BaseAdvisor_10_50(false); 093 private static final BaseAdvisor_40_50 ADVISOR_40_50 = new BaseAdvisor_40_50(false); 094 private static final BaseAdvisor_43_50 ADVISOR_43_50 = new BaseAdvisor_43_50(false); 095 private static final BaseAdvisor_14_40 ADVISOR_14_40 = new BaseAdvisor_14_40(false); 096 private static final BaseAdvisor_14_50 ADVISOR_14_50 = new BaseAdvisor_14_50(false); 097 098 private final IStrategy myStrategy; 099 private final FhirContext myContext; 100 101 public VersionCanonicalizer(FhirVersionEnum theTargetVersion) { 102 this(FhirContext.forCached(theTargetVersion)); 103 } 104 105 public VersionCanonicalizer(FhirContext theTargetContext) { 106 myContext = theTargetContext; 107 FhirVersionEnum targetVersion = theTargetContext.getVersion().getVersion(); 108 switch (targetVersion) { 109 case DSTU2: 110 myStrategy = new Dstu2Strategy(false); 111 break; 112 case DSTU2_HL7ORG: 113 myStrategy = new Dstu2Strategy(true); 114 break; 115 case DSTU2_1: 116 myStrategy = new Dstu21Strategy(); 117 break; 118 case DSTU3: 119 myStrategy = new Dstu3Strategy(); 120 break; 121 case R4: 122 myStrategy = new R4Strategy(); 123 break; 124 case R4B: 125 myStrategy = new R4BStrategy(); 126 break; 127 case R5: 128 myStrategy = new R5Strategy(); 129 break; 130 default: 131 throw new IllegalStateException(Msg.code(193) + "Can't handle version: " + targetVersion); 132 } 133 } 134 135 @SuppressWarnings({"EnhancedSwitchMigration"}) 136 137 /** 138 * Canonical version: R5 139 */ 140 public CapabilityStatement capabilityStatementToCanonical(IBaseResource theCapabilityStatement) { 141 return myStrategy.capabilityStatementToCanonical(theCapabilityStatement); 142 } 143 144 /** 145 * Canonical version: R5 146 */ 147 public IBaseConformance capabilityStatementFromCanonical(CapabilityStatement theCapabilityStatement) { 148 return myStrategy.capabilityStatementFromCanonical(theCapabilityStatement); 149 } 150 151 /** 152 * Canonical version: R4 153 */ 154 public CodeableConcept codeableConceptToCanonical(IBaseDatatype theCodeableConcept) { 155 if (theCodeableConcept == null) { 156 return null; 157 } 158 return myStrategy.codeableConceptToCanonical(theCodeableConcept); 159 } 160 161 /** 162 * Canonical version: R4 163 */ 164 public Coding codingToCanonical(IBaseCoding theCodingToValidate) { 165 if (theCodingToValidate == null) { 166 return null; 167 } 168 return myStrategy.codingToCanonical(theCodingToValidate); 169 } 170 171 /** 172 * Canonical version: R4 173 */ 174 public ValueSet valueSetToCanonical(IBaseResource theValueSet) { 175 if (theValueSet == null) { 176 return null; 177 } 178 return myStrategy.valueSetToCanonical(theValueSet); 179 } 180 181 /** 182 * Canonical version: R4 183 */ 184 public CodeSystem codeSystemToCanonical(IBaseResource theCodeSystem) { 185 return myStrategy.codeSystemToCanonical(theCodeSystem); 186 } 187 188 /** 189 * Canonical version: R4 190 */ 191 public IBaseResource valueSetFromCanonical(ValueSet theValueSet) { 192 return myStrategy.valueSetFromCanonical(theValueSet); 193 } 194 195 /** 196 * Canonical version: R4 197 */ 198 public ConceptMap conceptMapToCanonical(IBaseResource theConceptMap) { 199 return myStrategy.conceptMapToCanonical(theConceptMap); 200 } 201 202 /** 203 * Canonical version: R5 204 * <p> 205 * Note that this method will look for any nonstandard resource types specified in 206 * {@literal SearchParameter.base} or {@literal SearchParameter.target} and move them into 207 * extensions with the URLs {@link HapiExtensions#EXTENSION_SEARCHPARAM_CUSTOM_BASE_RESOURCE} 208 * and {@link HapiExtensions#EXTENSION_SEARCHPARAM_CUSTOM_TARGET_RESOURCE} respectively. If any 209 * nonstandard resource types are found, all resource types in the respective list are moved into 210 * the extension (including standard types) and the source list is cleared. 211 */ 212 public <T extends IBaseResource> SearchParameter searchParameterToCanonical(T theSearchParameter) { 213 214 /* 215 * The R4 model allows custom types to be put into SearchParameter.base and 216 * SearchParameter.target because those fields use a simple CodeType. But 217 * in R5 it uses an Enumeration, so it's not actually possible to put custom 218 * resource types into those fields. This means that the version converter fails 219 * with an exception unless we remove those values from those fields before 220 * conversion. However, we don't want to affect the state of the originally 221 * passed in resource since that may affect other things. So, we clone 222 * it first. This is a pain in the butt, but there doesn't seem to be any 223 * better option. 224 */ 225 T input = myContext.newTerser().clone(theSearchParameter); 226 227 List<String> baseExtensionValues = 228 extractNonStandardSearchParameterListAndClearSourceIfAnyArePresent(input, "base"); 229 List<String> targetExtensionValues = 230 extractNonStandardSearchParameterListAndClearSourceIfAnyArePresent(input, "target"); 231 232 SearchParameter retVal = myStrategy.searchParameterToCanonical(input); 233 234 baseExtensionValues.forEach( 235 t -> retVal.addExtension(HapiExtensions.EXTENSION_SEARCHPARAM_CUSTOM_BASE_RESOURCE, new CodeType(t))); 236 targetExtensionValues.forEach( 237 t -> retVal.addExtension(HapiExtensions.EXTENSION_SEARCHPARAM_CUSTOM_TARGET_RESOURCE, new CodeType(t))); 238 return retVal; 239 } 240 241 public IBaseResource searchParameterFromCanonical(SearchParameter theSearchParameter) { 242 return myStrategy.searchParameterFromCanonical(theSearchParameter); 243 } 244 245 public IBaseParameters parametersFromCanonical(Parameters theParameters) { 246 return myStrategy.parametersFromCanonical(theParameters); 247 } 248 249 public StructureDefinition structureDefinitionToCanonical(IBaseResource theResource) { 250 StructureDefinition retVal = myStrategy.structureDefinitionToCanonical(theResource); 251 String packageUserData = (String) theResource.getUserData("package"); 252 if (packageUserData != null) { 253 retVal.setUserData("package", packageUserData); 254 retVal.setSourcePackage(new PackageInformation( 255 packageUserData, theResource.getStructureFhirVersionEnum().getFhirVersionString(), new Date())); 256 } 257 return retVal; 258 } 259 260 public IBaseResource structureDefinitionFromCanonical(StructureDefinition theResource) { 261 return myStrategy.structureDefinitionFromCanonical(theResource); 262 } 263 264 public IBaseResource valueSetFromValidatorCanonical(org.hl7.fhir.r5.model.ValueSet theResource) { 265 return myStrategy.valueSetFromValidatorCanonical(theResource); 266 } 267 268 public org.hl7.fhir.r5.model.Resource resourceToValidatorCanonical(IBaseResource theResource) { 269 return myStrategy.resourceToValidatorCanonical(theResource); 270 } 271 272 public org.hl7.fhir.r5.model.ValueSet valueSetToValidatorCanonical(IBaseResource theResource) { 273 return myStrategy.valueSetToValidatorCanonical(theResource); 274 } 275 276 public org.hl7.fhir.r5.model.CodeSystem codeSystemToValidatorCanonical(IBaseResource theResource) { 277 return myStrategy.codeSystemToValidatorCanonical(theResource); 278 } 279 280 public IBaseResource auditEventFromCanonical(AuditEvent theResource) { 281 return myStrategy.auditEventFromCanonical(theResource); 282 } 283 284 @Nonnull 285 private List<String> extractNonStandardSearchParameterListAndClearSourceIfAnyArePresent( 286 IBaseResource theSearchParameter, String theChildName) { 287 288 BaseRuntimeChildDefinition child = 289 myContext.getResourceDefinition(theSearchParameter).getChildByName(theChildName); 290 List<IBase> baseList = child.getAccessor().getValues(theSearchParameter); 291 292 List<String> baseExtensionValues = baseList.stream() 293 .filter(Objects::nonNull) 294 .filter(t -> t instanceof IPrimitiveType) 295 .map(t -> (IPrimitiveType<?>) t) 296 .map(IPrimitiveType::getValueAsString) 297 .filter(StringUtils::isNotBlank) 298 .collect(Collectors.toList()); 299 if (baseExtensionValues.stream().allMatch(Enumerations.VersionIndependentResourceTypesAll::isValidCode)) { 300 baseExtensionValues.clear(); 301 } else { 302 baseList.clear(); 303 } 304 return baseExtensionValues; 305 } 306 307 public SubscriptionTopic subscriptionTopicToCanonical(IBaseResource theResource) { 308 return SubscriptionTopicCanonicalizer.canonicalizeTopic(myContext, theResource); 309 } 310 311 private interface IStrategy { 312 313 CapabilityStatement capabilityStatementToCanonical(IBaseResource theCapabilityStatement); 314 315 Coding codingToCanonical(IBaseCoding theCoding); 316 317 CodeableConcept codeableConceptToCanonical(IBaseDatatype theCodeableConcept); 318 319 ValueSet valueSetToCanonical(IBaseResource theValueSet); 320 321 CodeSystem codeSystemToCanonical(IBaseResource theCodeSystem); 322 323 IBaseResource valueSetFromCanonical(ValueSet theValueSet); 324 325 ConceptMap conceptMapToCanonical(IBaseResource theConceptMap); 326 327 SearchParameter searchParameterToCanonical(IBaseResource theSearchParameter); 328 329 IBaseParameters parametersFromCanonical(Parameters theParameters); 330 331 StructureDefinition structureDefinitionToCanonical(IBaseResource theResource); 332 333 IBaseResource structureDefinitionFromCanonical(StructureDefinition theResource); 334 335 IBaseResource valueSetFromValidatorCanonical(org.hl7.fhir.r5.model.ValueSet theResource); 336 337 org.hl7.fhir.r5.model.Resource resourceToValidatorCanonical(IBaseResource theResource); 338 339 org.hl7.fhir.r5.model.ValueSet valueSetToValidatorCanonical(IBaseResource theResource); 340 341 org.hl7.fhir.r5.model.CodeSystem codeSystemToValidatorCanonical(IBaseResource theResource); 342 343 IBaseResource searchParameterFromCanonical(SearchParameter theResource); 344 345 IBaseResource auditEventFromCanonical(AuditEvent theResource); 346 347 IBaseConformance capabilityStatementFromCanonical(CapabilityStatement theResource); 348 } 349 350 private static class Dstu2Strategy implements IStrategy { 351 352 private final FhirContext myDstu2Hl7OrgContext = FhirContext.forDstu2Hl7OrgCached(); 353 354 private final FhirContext myDstu2Context = FhirContext.forDstu2Cached(); 355 private final boolean myHl7OrgStructures; 356 357 public Dstu2Strategy(boolean theHl7OrgStructures) { 358 myHl7OrgStructures = theHl7OrgStructures; 359 } 360 361 @Override 362 public CapabilityStatement capabilityStatementToCanonical(IBaseResource theCapabilityStatement) { 363 org.hl7.fhir.dstu2.model.Resource reencoded = reencodeToHl7Org(theCapabilityStatement); 364 return (CapabilityStatement) VersionConvertorFactory_10_50.convertResource(reencoded, ADVISOR_10_50); 365 } 366 367 @Override 368 public Coding codingToCanonical(IBaseCoding theCoding) { 369 CodingDt coding = (CodingDt) theCoding; 370 Coding retVal = new Coding(); 371 retVal.setCode(coding.getCode()); 372 retVal.setSystem(coding.getSystem()); 373 retVal.setDisplay(coding.getDisplay()); 374 retVal.setVersion(coding.getVersion()); 375 if (!coding.getUserSelectedElement().isEmpty()) { 376 retVal.setUserSelected(coding.getUserSelected()); 377 } 378 379 return retVal; 380 } 381 382 @Override 383 public CodeableConcept codeableConceptToCanonical(IBaseDatatype theCodeableConcept) { 384 CodeableConceptDt codeableConcept = (CodeableConceptDt) theCodeableConcept; 385 386 CodeableConcept retVal = new CodeableConcept(); 387 retVal.setText(codeableConcept.getText()); 388 for (CodingDt next : codeableConcept.getCoding()) { 389 retVal.addCoding(codingToCanonical(next)); 390 } 391 392 return retVal; 393 } 394 395 @Override 396 public ValueSet valueSetToCanonical(IBaseResource theValueSet) { 397 org.hl7.fhir.dstu2.model.Resource reencoded = reencodeToHl7Org(theValueSet); 398 return (ValueSet) VersionConvertorFactory_10_40.convertResource(reencoded, ADVISOR_10_40); 399 } 400 401 @Override 402 public CodeSystem codeSystemToCanonical(IBaseResource theCodeSystem) { 403 CodeSystem retVal = new CodeSystem(); 404 405 ca.uhn.fhir.model.dstu2.resource.ValueSet input = (ca.uhn.fhir.model.dstu2.resource.ValueSet) theCodeSystem; 406 retVal.setUrl(input.getUrl()); 407 408 for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept next : 409 input.getCodeSystem().getConcept()) { 410 translateAndAddConcept(next, retVal.getConcept()); 411 } 412 413 return retVal; 414 } 415 416 private void translateAndAddConcept( 417 ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept theSource, 418 List<CodeSystem.ConceptDefinitionComponent> theTarget) { 419 CodeSystem.ConceptDefinitionComponent targetConcept = new CodeSystem.ConceptDefinitionComponent(); 420 targetConcept.setCode(theSource.getCode()); 421 targetConcept.setDisplay(theSource.getDisplay()); 422 423 for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConceptDesignation next : 424 theSource.getDesignation()) { 425 CodeSystem.ConceptDefinitionDesignationComponent targetDesignation = targetConcept.addDesignation(); 426 targetDesignation.setLanguage(next.getLanguage()); 427 targetDesignation.setValue(next.getValue()); 428 if (next.getUse() != null) { 429 targetDesignation.setUse(codingToCanonical(next.getUse())); 430 } 431 } 432 433 for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept nextChild : theSource.getConcept()) { 434 translateAndAddConcept(nextChild, targetConcept.getConcept()); 435 } 436 437 theTarget.add(targetConcept); 438 } 439 440 @Override 441 public IBaseResource valueSetFromCanonical(ValueSet theValueSet) { 442 Resource valueSetDstu2Hl7Org = VersionConvertorFactory_10_40.convertResource(theValueSet, ADVISOR_10_40); 443 return reencodeFromHl7Org(valueSetDstu2Hl7Org); 444 } 445 446 @Override 447 public ConceptMap conceptMapToCanonical(IBaseResource theConceptMap) { 448 org.hl7.fhir.dstu2.model.Resource reencoded = reencodeToHl7Org(theConceptMap); 449 return (ConceptMap) VersionConvertorFactory_10_40.convertResource(reencoded, ADVISOR_10_40); 450 } 451 452 @Override 453 public SearchParameter searchParameterToCanonical(IBaseResource theSearchParameter) { 454 org.hl7.fhir.dstu2.model.SearchParameter reencoded = 455 (org.hl7.fhir.dstu2.model.SearchParameter) reencodeToHl7Org(theSearchParameter); 456 SearchParameter retVal = 457 (SearchParameter) VersionConvertorFactory_10_50.convertResource(reencoded, ADVISOR_10_50); 458 if (isBlank(retVal.getExpression())) { 459 retVal.setExpression(reencoded.getXpath()); 460 } 461 return retVal; 462 } 463 464 @Override 465 public IBaseParameters parametersFromCanonical(Parameters theParameters) { 466 Resource converted = VersionConvertorFactory_10_40.convertResource(theParameters, ADVISOR_10_40); 467 return (IBaseParameters) reencodeFromHl7Org(converted); 468 } 469 470 @Override 471 public StructureDefinition structureDefinitionToCanonical(IBaseResource theResource) { 472 org.hl7.fhir.dstu2.model.Resource reencoded = reencodeToHl7Org(theResource); 473 return (StructureDefinition) VersionConvertorFactory_10_50.convertResource(reencoded, ADVISOR_10_50); 474 } 475 476 @Override 477 public IBaseResource structureDefinitionFromCanonical(StructureDefinition theResource) { 478 Resource converted = VersionConvertorFactory_10_50.convertResource(theResource, ADVISOR_10_50); 479 return reencodeFromHl7Org(converted); 480 } 481 482 @Override 483 public IBaseResource valueSetFromValidatorCanonical(org.hl7.fhir.r5.model.ValueSet theResource) { 484 Resource converted = VersionConvertorFactory_10_50.convertResource(theResource, ADVISOR_10_50); 485 return reencodeFromHl7Org(converted); 486 } 487 488 @Override 489 public org.hl7.fhir.r5.model.Resource resourceToValidatorCanonical(IBaseResource theResource) { 490 org.hl7.fhir.dstu2.model.Resource reencoded = reencodeToHl7Org(theResource); 491 return VersionConvertorFactory_10_50.convertResource(reencoded, ADVISOR_10_50); 492 } 493 494 @Override 495 public org.hl7.fhir.r5.model.ValueSet valueSetToValidatorCanonical(IBaseResource theResource) { 496 org.hl7.fhir.dstu2.model.Resource reencoded = reencodeToHl7Org(theResource); 497 return (org.hl7.fhir.r5.model.ValueSet) 498 VersionConvertorFactory_10_50.convertResource(reencoded, ADVISOR_10_50); 499 } 500 501 @Override 502 public org.hl7.fhir.r5.model.CodeSystem codeSystemToValidatorCanonical(IBaseResource theResource) { 503 org.hl7.fhir.dstu2.model.Resource reencoded = reencodeToHl7Org(theResource); 504 return (org.hl7.fhir.r5.model.CodeSystem) 505 VersionConvertorFactory_10_50.convertResource(reencoded, ADVISOR_10_50); 506 } 507 508 @Override 509 public IBaseResource auditEventFromCanonical(AuditEvent theResource) { 510 Resource hl7Org = VersionConvertorFactory_10_40.convertResource(theResource, ADVISOR_10_40); 511 return reencodeFromHl7Org(hl7Org); 512 } 513 514 @Override 515 public IBaseResource searchParameterFromCanonical(SearchParameter theResource) { 516 Resource resource = VersionConvertorFactory_10_50.convertResource(theResource, ADVISOR_10_50); 517 return reencodeFromHl7Org(resource); 518 } 519 520 @Override 521 public IBaseConformance capabilityStatementFromCanonical(CapabilityStatement theResource) { 522 Resource converted = VersionConvertorFactory_10_50.convertResource(theResource, ADVISOR_10_50); 523 return (IBaseConformance) reencodeFromHl7Org(converted); 524 } 525 526 private Resource reencodeToHl7Org(IBaseResource theInput) { 527 if (myHl7OrgStructures) { 528 return (Resource) theInput; 529 } 530 return (Resource) myDstu2Hl7OrgContext 531 .newJsonParser() 532 .parseResource(myDstu2Context.newJsonParser().encodeResourceToString(theInput)); 533 } 534 535 private IBaseResource reencodeFromHl7Org(Resource theInput) { 536 if (myHl7OrgStructures) { 537 return theInput; 538 } 539 return myDstu2Context 540 .newJsonParser() 541 .parseResource(myDstu2Hl7OrgContext.newJsonParser().encodeResourceToString(theInput)); 542 } 543 } 544 545 private static class Dstu21Strategy implements IStrategy { 546 547 @Override 548 public CapabilityStatement capabilityStatementToCanonical(IBaseResource theCapabilityStatement) { 549 return (CapabilityStatement) VersionConvertorFactory_14_50.convertResource( 550 (org.hl7.fhir.dstu2016may.model.Resource) theCapabilityStatement, ADVISOR_14_50); 551 } 552 553 @Override 554 public Coding codingToCanonical(IBaseCoding theCoding) { 555 return (org.hl7.fhir.r4.model.Coding) VersionConvertorFactory_14_40.convertType( 556 (org.hl7.fhir.dstu2016may.model.Coding) theCoding, ADVISOR_14_40); 557 } 558 559 @Override 560 public CodeableConcept codeableConceptToCanonical(IBaseDatatype theCodeableConcept) { 561 return (org.hl7.fhir.r4.model.CodeableConcept) VersionConvertorFactory_14_40.convertType( 562 (org.hl7.fhir.dstu2016may.model.CodeableConcept) theCodeableConcept, ADVISOR_14_40); 563 } 564 565 @Override 566 public ValueSet valueSetToCanonical(IBaseResource theValueSet) { 567 return (ValueSet) VersionConvertorFactory_14_40.convertResource( 568 (org.hl7.fhir.dstu2016may.model.Resource) theValueSet, ADVISOR_14_40); 569 } 570 571 @Override 572 public CodeSystem codeSystemToCanonical(IBaseResource theCodeSystem) { 573 return (CodeSystem) VersionConvertorFactory_14_40.convertResource( 574 (org.hl7.fhir.dstu2016may.model.Resource) theCodeSystem, ADVISOR_14_40); 575 } 576 577 @Override 578 public IBaseResource valueSetFromCanonical(ValueSet theValueSet) { 579 return VersionConvertorFactory_14_40.convertResource(theValueSet, ADVISOR_14_40); 580 } 581 582 @Override 583 public ConceptMap conceptMapToCanonical(IBaseResource theConceptMap) { 584 return (ConceptMap) VersionConvertorFactory_14_40.convertResource( 585 (org.hl7.fhir.dstu2016may.model.Resource) theConceptMap, ADVISOR_14_40); 586 } 587 588 @Override 589 public SearchParameter searchParameterToCanonical(IBaseResource theSearchParameter) { 590 return (SearchParameter) VersionConvertorFactory_14_50.convertResource( 591 (org.hl7.fhir.dstu2016may.model.Resource) theSearchParameter, ADVISOR_14_50); 592 } 593 594 @Override 595 public IBaseParameters parametersFromCanonical(Parameters theParameters) { 596 return (IBaseParameters) VersionConvertorFactory_14_40.convertResource(theParameters, ADVISOR_14_40); 597 } 598 599 @Override 600 public StructureDefinition structureDefinitionToCanonical(IBaseResource theResource) { 601 return (StructureDefinition) VersionConvertorFactory_14_50.convertResource( 602 (org.hl7.fhir.dstu2016may.model.Resource) theResource, ADVISOR_14_50); 603 } 604 605 @Override 606 public IBaseResource structureDefinitionFromCanonical(StructureDefinition theResource) { 607 return VersionConvertorFactory_14_50.convertResource(theResource, ADVISOR_14_50); 608 } 609 610 @Override 611 public IBaseResource valueSetFromValidatorCanonical(org.hl7.fhir.r5.model.ValueSet theResource) { 612 return VersionConvertorFactory_14_50.convertResource(theResource, ADVISOR_14_50); 613 } 614 615 @Override 616 public org.hl7.fhir.r5.model.Resource resourceToValidatorCanonical(IBaseResource theResource) { 617 return VersionConvertorFactory_14_50.convertResource( 618 (org.hl7.fhir.dstu2016may.model.Resource) theResource, ADVISOR_14_50); 619 } 620 621 @Override 622 public org.hl7.fhir.r5.model.ValueSet valueSetToValidatorCanonical(IBaseResource theResource) { 623 return (org.hl7.fhir.r5.model.ValueSet) VersionConvertorFactory_14_50.convertResource( 624 (org.hl7.fhir.dstu2016may.model.Resource) theResource, ADVISOR_14_50); 625 } 626 627 @Override 628 public org.hl7.fhir.r5.model.CodeSystem codeSystemToValidatorCanonical(IBaseResource theResource) { 629 return (org.hl7.fhir.r5.model.CodeSystem) VersionConvertorFactory_14_50.convertResource( 630 (org.hl7.fhir.dstu2016may.model.Resource) theResource, ADVISOR_14_50); 631 } 632 633 @Override 634 public IBaseResource searchParameterFromCanonical(SearchParameter theResource) { 635 return VersionConvertorFactory_14_50.convertResource(theResource, ADVISOR_14_50); 636 } 637 638 @Override 639 public IBaseResource auditEventFromCanonical(AuditEvent theResource) { 640 return VersionConvertorFactory_14_40.convertResource(theResource, ADVISOR_14_40); 641 } 642 643 @Override 644 public IBaseConformance capabilityStatementFromCanonical(CapabilityStatement theResource) { 645 return (IBaseConformance) VersionConvertorFactory_14_50.convertResource(theResource, ADVISOR_14_50); 646 } 647 } 648 649 private static class Dstu3Strategy implements IStrategy { 650 651 @Override 652 public CapabilityStatement capabilityStatementToCanonical(IBaseResource theCapabilityStatement) { 653 return (CapabilityStatement) VersionConvertorFactory_30_50.convertResource( 654 (org.hl7.fhir.dstu3.model.Resource) theCapabilityStatement, ADVISOR_30_50); 655 } 656 657 @Override 658 public Coding codingToCanonical(IBaseCoding theCoding) { 659 return (org.hl7.fhir.r4.model.Coding) VersionConvertorFactory_30_40.convertType( 660 (org.hl7.fhir.dstu3.model.Coding) theCoding, ADVISOR_30_40); 661 } 662 663 @Override 664 public CodeableConcept codeableConceptToCanonical(IBaseDatatype theCodeableConcept) { 665 return (org.hl7.fhir.r4.model.CodeableConcept) VersionConvertorFactory_30_40.convertType( 666 (org.hl7.fhir.dstu3.model.CodeableConcept) theCodeableConcept, ADVISOR_30_40); 667 } 668 669 @Override 670 public ValueSet valueSetToCanonical(IBaseResource theValueSet) { 671 return (ValueSet) VersionConvertorFactory_30_40.convertResource( 672 (org.hl7.fhir.dstu3.model.Resource) theValueSet, ADVISOR_30_40); 673 } 674 675 @Override 676 public CodeSystem codeSystemToCanonical(IBaseResource theCodeSystem) { 677 return (CodeSystem) VersionConvertorFactory_30_40.convertResource( 678 (org.hl7.fhir.dstu3.model.Resource) theCodeSystem, ADVISOR_30_40); 679 } 680 681 @Override 682 public IBaseResource valueSetFromCanonical(ValueSet theValueSet) { 683 return VersionConvertorFactory_30_40.convertResource(theValueSet, ADVISOR_30_40); 684 } 685 686 @Override 687 public ConceptMap conceptMapToCanonical(IBaseResource theConceptMap) { 688 return (ConceptMap) VersionConvertorFactory_30_40.convertResource( 689 (org.hl7.fhir.dstu3.model.Resource) theConceptMap, ADVISOR_30_40); 690 } 691 692 @Override 693 public SearchParameter searchParameterToCanonical(IBaseResource theSearchParameter) { 694 return (SearchParameter) VersionConvertorFactory_30_50.convertResource( 695 (org.hl7.fhir.dstu3.model.Resource) theSearchParameter, ADVISOR_30_50); 696 } 697 698 @Override 699 public IBaseParameters parametersFromCanonical(Parameters theParameters) { 700 return (IBaseParameters) VersionConvertorFactory_30_40.convertResource(theParameters, ADVISOR_30_40); 701 } 702 703 @Override 704 public StructureDefinition structureDefinitionToCanonical(IBaseResource theResource) { 705 return (StructureDefinition) VersionConvertorFactory_30_50.convertResource( 706 (org.hl7.fhir.dstu3.model.Resource) theResource, ADVISOR_30_50); 707 } 708 709 @Override 710 public IBaseResource structureDefinitionFromCanonical(StructureDefinition theResource) { 711 return VersionConvertorFactory_30_50.convertResource(theResource, ADVISOR_30_50); 712 } 713 714 @Override 715 public IBaseResource valueSetFromValidatorCanonical(org.hl7.fhir.r5.model.ValueSet theResource) { 716 return VersionConvertorFactory_30_50.convertResource(theResource, ADVISOR_30_50); 717 } 718 719 @Override 720 public org.hl7.fhir.r5.model.Resource resourceToValidatorCanonical(IBaseResource theResource) { 721 return VersionConvertorFactory_30_50.convertResource( 722 (org.hl7.fhir.dstu3.model.Resource) theResource, ADVISOR_30_50); 723 } 724 725 @Override 726 public org.hl7.fhir.r5.model.ValueSet valueSetToValidatorCanonical(IBaseResource theResource) { 727 return (org.hl7.fhir.r5.model.ValueSet) VersionConvertorFactory_30_50.convertResource( 728 (org.hl7.fhir.dstu3.model.Resource) theResource, ADVISOR_30_50); 729 } 730 731 @Override 732 public org.hl7.fhir.r5.model.CodeSystem codeSystemToValidatorCanonical(IBaseResource theResource) { 733 return (org.hl7.fhir.r5.model.CodeSystem) VersionConvertorFactory_30_50.convertResource( 734 (org.hl7.fhir.dstu3.model.Resource) theResource, ADVISOR_30_50); 735 } 736 737 @Override 738 public IBaseResource searchParameterFromCanonical(SearchParameter theResource) { 739 return VersionConvertorFactory_30_50.convertResource(theResource, ADVISOR_30_50); 740 } 741 742 @Override 743 public IBaseResource auditEventFromCanonical(AuditEvent theResource) { 744 return VersionConvertorFactory_30_40.convertResource(theResource, ADVISOR_30_40); 745 } 746 747 @Override 748 public IBaseConformance capabilityStatementFromCanonical(CapabilityStatement theResource) { 749 return (IBaseConformance) VersionConvertorFactory_30_50.convertResource(theResource, ADVISOR_30_50); 750 } 751 } 752 753 private static class R4Strategy implements IStrategy { 754 @Override 755 public CapabilityStatement capabilityStatementToCanonical(IBaseResource theCapabilityStatement) { 756 return (CapabilityStatement) VersionConvertorFactory_40_50.convertResource( 757 (org.hl7.fhir.r4.model.Resource) theCapabilityStatement, ADVISOR_40_50); 758 } 759 760 @Override 761 public Coding codingToCanonical(IBaseCoding theCoding) { 762 return (Coding) theCoding; 763 } 764 765 @Override 766 public CodeableConcept codeableConceptToCanonical(IBaseDatatype theCodeableConcept) { 767 return (CodeableConcept) theCodeableConcept; 768 } 769 770 @Override 771 public ValueSet valueSetToCanonical(IBaseResource theValueSet) { 772 return (ValueSet) theValueSet; 773 } 774 775 @Override 776 public CodeSystem codeSystemToCanonical(IBaseResource theCodeSystem) { 777 return (CodeSystem) theCodeSystem; 778 } 779 780 @Override 781 public IBaseResource valueSetFromCanonical(ValueSet theValueSet) { 782 return theValueSet; 783 } 784 785 @Override 786 public ConceptMap conceptMapToCanonical(IBaseResource theConceptMap) { 787 return (ConceptMap) theConceptMap; 788 } 789 790 @Override 791 public SearchParameter searchParameterToCanonical(IBaseResource theSearchParameter) { 792 return (SearchParameter) VersionConvertorFactory_40_50.convertResource( 793 (org.hl7.fhir.r4.model.Resource) theSearchParameter, ADVISOR_40_50); 794 } 795 796 @Override 797 public IBaseParameters parametersFromCanonical(Parameters theParameters) { 798 return theParameters; 799 } 800 801 @Override 802 public StructureDefinition structureDefinitionToCanonical(IBaseResource theResource) { 803 return (StructureDefinition) VersionConvertorFactory_40_50.convertResource( 804 (org.hl7.fhir.r4.model.Resource) theResource, ADVISOR_40_50); 805 } 806 807 @Override 808 public IBaseResource structureDefinitionFromCanonical(StructureDefinition theResource) { 809 return VersionConvertorFactory_40_50.convertResource(theResource, ADVISOR_40_50); 810 } 811 812 @Override 813 public IBaseResource valueSetFromValidatorCanonical(org.hl7.fhir.r5.model.ValueSet theResource) { 814 return VersionConvertorFactory_40_50.convertResource(theResource, ADVISOR_40_50); 815 } 816 817 @Override 818 public org.hl7.fhir.r5.model.Resource resourceToValidatorCanonical(IBaseResource theResource) { 819 return VersionConvertorFactory_40_50.convertResource( 820 (org.hl7.fhir.r4.model.Resource) theResource, ADVISOR_40_50); 821 } 822 823 @Override 824 public org.hl7.fhir.r5.model.ValueSet valueSetToValidatorCanonical(IBaseResource theResource) { 825 return (org.hl7.fhir.r5.model.ValueSet) VersionConvertorFactory_40_50.convertResource( 826 (org.hl7.fhir.r4.model.Resource) theResource, ADVISOR_40_50); 827 } 828 829 @Override 830 public org.hl7.fhir.r5.model.CodeSystem codeSystemToValidatorCanonical(IBaseResource theResource) { 831 return (org.hl7.fhir.r5.model.CodeSystem) VersionConvertorFactory_40_50.convertResource( 832 (org.hl7.fhir.r4.model.Resource) theResource, ADVISOR_40_50); 833 } 834 835 @Override 836 public IBaseResource searchParameterFromCanonical(SearchParameter theResource) { 837 return VersionConvertorFactory_40_50.convertResource(theResource, ADVISOR_40_50); 838 } 839 840 @Override 841 public IBaseResource auditEventFromCanonical(AuditEvent theResource) { 842 return theResource; 843 } 844 845 @Override 846 public IBaseConformance capabilityStatementFromCanonical(CapabilityStatement theResource) { 847 return (IBaseConformance) VersionConvertorFactory_40_50.convertResource(theResource, ADVISOR_40_50); 848 } 849 } 850 851 private static class R4BStrategy implements IStrategy { 852 853 @Override 854 public CapabilityStatement capabilityStatementToCanonical(IBaseResource theCapabilityStatement) { 855 return (CapabilityStatement) VersionConvertorFactory_43_50.convertResource( 856 (org.hl7.fhir.r4b.model.Resource) theCapabilityStatement, ADVISOR_43_50); 857 } 858 859 @Override 860 public Coding codingToCanonical(IBaseCoding theCoding) { 861 org.hl7.fhir.r5.model.Coding r5coding = (org.hl7.fhir.r5.model.Coding) 862 VersionConvertorFactory_43_50.convertType((org.hl7.fhir.r4b.model.Coding) theCoding, ADVISOR_43_50); 863 return (org.hl7.fhir.r4.model.Coding) VersionConvertorFactory_40_50.convertType(r5coding, ADVISOR_40_50); 864 } 865 866 @Override 867 public CodeableConcept codeableConceptToCanonical(IBaseDatatype theCodeableConcept) { 868 org.hl7.fhir.r5.model.CodeableConcept r5coding = 869 (org.hl7.fhir.r5.model.CodeableConcept) VersionConvertorFactory_43_50.convertType( 870 (org.hl7.fhir.r4b.model.CodeableConcept) theCodeableConcept, ADVISOR_43_50); 871 return (org.hl7.fhir.r4.model.CodeableConcept) 872 VersionConvertorFactory_40_50.convertType(r5coding, ADVISOR_40_50); 873 } 874 875 @Override 876 public ValueSet valueSetToCanonical(IBaseResource theValueSet) { 877 org.hl7.fhir.r5.model.ValueSet valueSetR5 = 878 (org.hl7.fhir.r5.model.ValueSet) VersionConvertorFactory_43_50.convertResource( 879 (org.hl7.fhir.r4b.model.Resource) theValueSet, ADVISOR_43_50); 880 return (org.hl7.fhir.r4.model.ValueSet) 881 VersionConvertorFactory_40_50.convertResource(valueSetR5, ADVISOR_40_50); 882 } 883 884 @Override 885 public CodeSystem codeSystemToCanonical(IBaseResource theCodeSystem) { 886 org.hl7.fhir.r5.model.CodeSystem codeSystemR5 = 887 (org.hl7.fhir.r5.model.CodeSystem) VersionConvertorFactory_43_50.convertResource( 888 (org.hl7.fhir.r4b.model.Resource) theCodeSystem, ADVISOR_43_50); 889 return (org.hl7.fhir.r4.model.CodeSystem) 890 VersionConvertorFactory_40_50.convertResource(codeSystemR5, ADVISOR_40_50); 891 } 892 893 @Override 894 public IBaseResource valueSetFromCanonical(ValueSet theValueSet) { 895 org.hl7.fhir.r5.model.ValueSet valueSetR5 = (org.hl7.fhir.r5.model.ValueSet) 896 VersionConvertorFactory_40_50.convertResource(theValueSet, ADVISOR_40_50); 897 return VersionConvertorFactory_43_50.convertResource(valueSetR5, ADVISOR_43_50); 898 } 899 900 @Override 901 public ConceptMap conceptMapToCanonical(IBaseResource theConceptMap) { 902 org.hl7.fhir.r5.model.ConceptMap conceptMapR5 = 903 (org.hl7.fhir.r5.model.ConceptMap) VersionConvertorFactory_43_50.convertResource( 904 (org.hl7.fhir.r4b.model.Resource) theConceptMap, ADVISOR_43_50); 905 return (ConceptMap) VersionConvertorFactory_40_50.convertResource(conceptMapR5, ADVISOR_40_50); 906 } 907 908 @Override 909 public SearchParameter searchParameterToCanonical(IBaseResource theSearchParameter) { 910 return (SearchParameter) VersionConvertorFactory_43_50.convertResource( 911 (org.hl7.fhir.r4b.model.Resource) theSearchParameter, ADVISOR_43_50); 912 } 913 914 @Override 915 public IBaseParameters parametersFromCanonical(Parameters theParameters) { 916 org.hl7.fhir.r5.model.Parameters parametersR5 = (org.hl7.fhir.r5.model.Parameters) 917 VersionConvertorFactory_40_50.convertResource(theParameters, ADVISOR_40_50); 918 return (IBaseParameters) VersionConvertorFactory_43_50.convertResource(parametersR5, ADVISOR_43_50); 919 } 920 921 @Override 922 public StructureDefinition structureDefinitionToCanonical(IBaseResource theResource) { 923 return (StructureDefinition) VersionConvertorFactory_43_50.convertResource( 924 (org.hl7.fhir.r4b.model.Resource) theResource, ADVISOR_43_50); 925 } 926 927 @Override 928 public IBaseResource structureDefinitionFromCanonical(StructureDefinition theResource) { 929 return VersionConvertorFactory_43_50.convertResource(theResource, ADVISOR_43_50); 930 } 931 932 @Override 933 public IBaseResource valueSetFromValidatorCanonical(org.hl7.fhir.r5.model.ValueSet theResource) { 934 return VersionConvertorFactory_43_50.convertResource(theResource, ADVISOR_43_50); 935 } 936 937 @Override 938 public org.hl7.fhir.r5.model.Resource resourceToValidatorCanonical(IBaseResource theResource) { 939 return VersionConvertorFactory_43_50.convertResource( 940 (org.hl7.fhir.r4b.model.Resource) theResource, ADVISOR_43_50); 941 } 942 943 @Override 944 public org.hl7.fhir.r5.model.ValueSet valueSetToValidatorCanonical(IBaseResource theResource) { 945 return (org.hl7.fhir.r5.model.ValueSet) VersionConvertorFactory_43_50.convertResource( 946 (org.hl7.fhir.r4b.model.Resource) theResource, ADVISOR_43_50); 947 } 948 949 @Override 950 public org.hl7.fhir.r5.model.CodeSystem codeSystemToValidatorCanonical(IBaseResource theResource) { 951 return (org.hl7.fhir.r5.model.CodeSystem) VersionConvertorFactory_43_50.convertResource( 952 (org.hl7.fhir.r4b.model.Resource) theResource, ADVISOR_43_50); 953 } 954 955 @Override 956 public IBaseResource searchParameterFromCanonical(SearchParameter theResource) { 957 return VersionConvertorFactory_43_50.convertResource(theResource, ADVISOR_43_50); 958 } 959 960 @Override 961 public IBaseResource auditEventFromCanonical(AuditEvent theResource) { 962 org.hl7.fhir.r5.model.AuditEvent r5 = (org.hl7.fhir.r5.model.AuditEvent) 963 VersionConvertorFactory_40_50.convertResource(theResource, ADVISOR_40_50); 964 return VersionConvertorFactory_43_50.convertResource(r5, ADVISOR_43_50); 965 } 966 967 @Override 968 public IBaseConformance capabilityStatementFromCanonical(CapabilityStatement theResource) { 969 return (IBaseConformance) VersionConvertorFactory_43_50.convertResource(theResource, ADVISOR_43_50); 970 } 971 } 972 973 private static class R5Strategy implements IStrategy { 974 975 @Override 976 public CapabilityStatement capabilityStatementToCanonical(IBaseResource theCapabilityStatement) { 977 return (CapabilityStatement) theCapabilityStatement; 978 } 979 980 @Override 981 public Coding codingToCanonical(IBaseCoding theCoding) { 982 return (org.hl7.fhir.r4.model.Coding) 983 VersionConvertorFactory_40_50.convertType((org.hl7.fhir.r5.model.Coding) theCoding, ADVISOR_40_50); 984 } 985 986 @Override 987 public CodeableConcept codeableConceptToCanonical(IBaseDatatype theCodeableConcept) { 988 return (org.hl7.fhir.r4.model.CodeableConcept) VersionConvertorFactory_40_50.convertType( 989 (org.hl7.fhir.r5.model.CodeableConcept) theCodeableConcept, ADVISOR_40_50); 990 } 991 992 @Override 993 public ValueSet valueSetToCanonical(IBaseResource theValueSet) { 994 return (ValueSet) VersionConvertorFactory_40_50.convertResource( 995 (org.hl7.fhir.r5.model.ValueSet) theValueSet, ADVISOR_40_50); 996 } 997 998 @Override 999 public CodeSystem codeSystemToCanonical(IBaseResource theCodeSystem) { 1000 return (CodeSystem) VersionConvertorFactory_40_50.convertResource( 1001 (org.hl7.fhir.r5.model.CodeSystem) theCodeSystem, ADVISOR_40_50); 1002 } 1003 1004 @Override 1005 public IBaseResource valueSetFromCanonical(ValueSet theValueSet) { 1006 return VersionConvertorFactory_40_50.convertResource(theValueSet, ADVISOR_40_50); 1007 } 1008 1009 @Override 1010 public ConceptMap conceptMapToCanonical(IBaseResource theConceptMap) { 1011 return (ConceptMap) VersionConvertorFactory_40_50.convertResource( 1012 (org.hl7.fhir.r5.model.ConceptMap) theConceptMap, ADVISOR_40_50); 1013 } 1014 1015 @Override 1016 public SearchParameter searchParameterToCanonical(IBaseResource theSearchParameter) { 1017 return (SearchParameter) theSearchParameter; 1018 } 1019 1020 @Override 1021 public IBaseParameters parametersFromCanonical(Parameters theParameters) { 1022 return (IBaseParameters) VersionConvertorFactory_40_50.convertResource(theParameters, ADVISOR_40_50); 1023 } 1024 1025 @Override 1026 public StructureDefinition structureDefinitionToCanonical(IBaseResource theResource) { 1027 return (StructureDefinition) theResource; 1028 } 1029 1030 @Override 1031 public IBaseResource structureDefinitionFromCanonical(StructureDefinition theResource) { 1032 return theResource; 1033 } 1034 1035 @Override 1036 public IBaseResource valueSetFromValidatorCanonical(org.hl7.fhir.r5.model.ValueSet theResource) { 1037 return theResource; 1038 } 1039 1040 @Override 1041 public org.hl7.fhir.r5.model.Resource resourceToValidatorCanonical(IBaseResource theResource) { 1042 return (org.hl7.fhir.r5.model.Resource) theResource; 1043 } 1044 1045 @Override 1046 public org.hl7.fhir.r5.model.ValueSet valueSetToValidatorCanonical(IBaseResource theResource) { 1047 return (org.hl7.fhir.r5.model.ValueSet) theResource; 1048 } 1049 1050 @Override 1051 public org.hl7.fhir.r5.model.CodeSystem codeSystemToValidatorCanonical(IBaseResource theResource) { 1052 return (org.hl7.fhir.r5.model.CodeSystem) theResource; 1053 } 1054 1055 @Override 1056 public IBaseResource searchParameterFromCanonical(SearchParameter theResource) { 1057 return theResource; 1058 } 1059 1060 @Override 1061 public IBaseResource auditEventFromCanonical(AuditEvent theResource) { 1062 return VersionConvertorFactory_40_50.convertResource(theResource, ADVISOR_40_50); 1063 } 1064 1065 @Override 1066 public IBaseConformance capabilityStatementFromCanonical(CapabilityStatement theResource) { 1067 return theResource; 1068 } 1069 } 1070}