001package org.hl7.fhir.r5.utils; 002 003import org.hl7.fhir.r5.context.CanonicalResourceManager.CanonicalResourceProxy; 004import org.hl7.fhir.r5.model.ElementDefinition; 005import org.hl7.fhir.r5.model.PackageInformation; 006import org.hl7.fhir.r5.model.StructureDefinition; 007 008public class PackageHackerR5 { 009 010 public static void fixLoadedResource(CanonicalResourceProxy r, PackageInformation packageInfo) { 011 if ("http://terminology.hl7.org/CodeSystem/v2-0391|2.6".equals(r.getUrl())) { 012 r.hack("http://terminology.hl7.org/CodeSystem/v2-0391-2.6", "2.6"); 013 } 014 if ("http://terminology.hl7.org/CodeSystem/v2-0391|2.4".equals(r.getUrl())) { 015 r.hack("http://terminology.hl7.org/CodeSystem/v2-0391-2.4", "2.4"); 016 } 017 if ("http://terminology.hl7.org/CodeSystem/v2-0360|2.7".equals(r.getUrl())) { 018 r.hack("http://terminology.hl7.org/CodeSystem/v2-0360-2.7", "2.7"); 019 } 020 021 if ("http://terminology.hl7.org/CodeSystem/v2-0006|2.1".equals(r.getUrl())) { 022 r.hack("http://terminology.hl7.org/CodeSystem/v2-0006-2.1", "2.1"); 023 } 024 025 if ("http://terminology.hl7.org/CodeSystem/v2-0360|2.7".equals(r.getUrl())) { 026 r.hack("http://terminology.hl7.org/CodeSystem/v2-0360-2.7", "2.7"); 027 } 028 029 if ("http://terminology.hl7.org/CodeSystem/v2-0006|2.4".equals(r.getUrl())) { 030 r.hack("http://terminology.hl7.org/CodeSystem/v2-0006-2.4", "2.4"); 031 } 032 033 if ("http://terminology.hl7.org/CodeSystem/v2-0360|2.3.1".equals(r.getUrl())) { 034 r.hack("http://terminology.hl7.org/CodeSystem/v2-0360-2.3.1", "2.3.1"); 035 } 036 037 if ("http://hl7.org/fhir/StructureDefinition/iso21090-nullFlavor".equals(r.getUrl()) && "4.0.1".equals(r.getVersion())) { 038 StructureDefinition sd = (StructureDefinition) r.getResource(); 039 for (ElementDefinition ed : sd.getSnapshot().getElement()) { 040 if (ed.hasBinding() && "http://terminology.hl7.org/ValueSet/v3-NullFlavor|4.0.1".equals(ed.getBinding().getValueSet())) { 041 ed.getBinding().setValueSet("http://terminology.hl7.org/ValueSet/v3-NullFlavor"); 042 } 043 } 044 for (ElementDefinition ed : sd.getDifferential().getElement()) { 045 if (ed.hasBinding() && "http://terminology.hl7.org/ValueSet/v3-NullFlavor|4.0.1".equals(ed.getBinding().getValueSet())) { 046 ed.getBinding().setValueSet("http://terminology.hl7.org/ValueSet/v3-NullFlavor"); 047 } 048 } 049 } 050 if ("http://hl7.org/fhir/StructureDefinition/DeviceUseStatement".equals(r.getUrl()) && "4.0.1".equals(r.getVersion())) { 051 StructureDefinition sd = (StructureDefinition) r.getResource(); 052 for (ElementDefinition ed : sd.getSnapshot().getElement()) { 053 if (ed.hasRequirements()) { 054 ed.setRequirements(ed.getRequirements().replace("[http://hl7.org/fhir/StructureDefinition/bodySite](null.html)", "[http://hl7.org/fhir/StructureDefinition/bodySite](http://hl7.org/fhir/extension-bodysite.html)")); 055 } 056 } 057 for (ElementDefinition ed : sd.getDifferential().getElement()) { 058 if (ed.hasRequirements()) { 059 ed.setRequirements(ed.getRequirements().replace("[http://hl7.org/fhir/StructureDefinition/bodySite](null.html)", "[http://hl7.org/fhir/StructureDefinition/bodySite](http://hl7.org/fhir/extension-bodysite.html)")); 060 } 061 } 062 } 063 if (r.hasUrl() && r.getUrl().contains("|")) { 064 assert false; 065 } 066 067 } 068 069}