From 12cdccf3bbd4d3814fdebfd6878322d54d661ded Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Fri, 20 Oct 2023 16:25:09 +1100 Subject: [PATCH] Hack for wrong URLs in subscriptions backport --- .../loaders/loaderR5/R4BToR5Loader.java | 2 +- .../loaders/loaderR5/R4ToR5Loader.java | 2 +- .../StructureDefinitionHacker.java | 20 +++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/loaders/loaderR5/R4BToR5Loader.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/loaders/loaderR5/R4BToR5Loader.java index 6b6744eb9..aa1f203b2 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/loaders/loaderR5/R4BToR5Loader.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/loaders/loaderR5/R4BToR5Loader.java @@ -123,7 +123,7 @@ public class R4BToR5Loader extends BaseLoaderR5 implements IContextResourceLoade if (killPrimitives) { throw new FHIRException("Cannot kill primitives when using deferred loading"); } - if (r5 instanceof StructureDefinition && VersionUtilities.isR4BVer(version)) { + if (r5 instanceof StructureDefinition) { r5 = new StructureDefinitionHacker(version).fixSD((StructureDefinition) r5); } if (patchUrls) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/loaders/loaderR5/R4ToR5Loader.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/loaders/loaderR5/R4ToR5Loader.java index c8d6e9daf..aed175572 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/loaders/loaderR5/R4ToR5Loader.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/loaders/loaderR5/R4ToR5Loader.java @@ -123,7 +123,7 @@ public class R4ToR5Loader extends BaseLoaderR5 implements IContextResourceLoader if (killPrimitives) { throw new FHIRException("Cannot kill primitives when using deferred loading"); } - if (r5 instanceof StructureDefinition && VersionUtilities.isR4Ver(version)) { + if (r5 instanceof StructureDefinition) { r5 = new StructureDefinitionHacker(version).fixSD((StructureDefinition) r5); } if (patchUrls) { diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/StructureDefinitionHacker.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/StructureDefinitionHacker.java index 8e4c92e26..dd36c8394 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/StructureDefinitionHacker.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/StructureDefinitionHacker.java @@ -49,9 +49,29 @@ public class StructureDefinitionHacker { } } } + if (sd.getUrl().startsWith("http://hl7.org/fhir/uv/subscriptions-backport")) { + for (ElementDefinition ed : sd.getDifferential().getElement()) { + fixMarkdownR4BURLs(ed); + } + for (ElementDefinition ed : sd.getSnapshot().getElement()) { + fixMarkdownR4BURLs(ed); + } + } return sd; } + private void fixMarkdownR4BURLs(ElementDefinition ed) { + if (ed.hasDefinition()) { + ed.setDefinition(ed.getDefinition().replace("http://hl7.org/fhir/R4B/", "http://hl7.org/fhir/R4/")); + } + if (ed.hasComment()) { + ed.setComment(ed.getComment().replace("http://hl7.org/fhir/R4B/", "http://hl7.org/fhir/R4/")); + } + if (ed.hasRequirements()) { + ed.setRequirements(ed.getRequirements().replace("http://hl7.org/fhir/R4B/", "http://hl7.org/fhir/R4/")); + } + } + private void fixDocSecURL(ElementDefinition ed) { for (TypeRefComponent tr : ed.getType()) { for (CanonicalType c : tr.getProfile()) {