From 13a3953619bda1ad8a0026da4038656b37e8f2a0 Mon Sep 17 00:00:00 2001 From: Max Bureck Date: Tue, 7 May 2024 15:24:14 +0200 Subject: [PATCH 1/4] Fix split logic of canonical into url and version in several places Removed - org.hl7.fhir.r4b.renderers.DataRenderer#versionFromCanonical - org.hl7.fhir.r4b.renderers.DataRenderer#systemFromCanonical - org.hl7.fhir.r5.renderers.DataRenderer#versionFromCanonical - org.hl7.fhir.r5.renderers.DataRenderer#systemFromCanonical The logic of these methods is wrong, the functionality of extracting the version and the system URL have been swapped. Therefore, all usages of aforementioned methods were replaced by the use of org.hl7.fhir.utilities.CanonicalPair. This not only fixes the problem, but also reduces duplicated functionality. --- .../r4b/renderers/ConceptMapRenderer.java | 14 +++++-------- .../hl7/fhir/r4b/renderers/DataRenderer.java | 19 ------------------ .../r4b/renderers/TerminologyRenderer.java | 9 ++++++++- .../fhir/r5/renderers/ConceptMapRenderer.java | 10 +++++----- .../hl7/fhir/r5/renderers/DataRenderer.java | 20 ------------------- .../r5/renderers/TerminologyRenderer.java | 6 ++++++ pom.xml | 2 +- 7 files changed, 25 insertions(+), 55 deletions(-) diff --git a/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/ConceptMapRenderer.java b/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/ConceptMapRenderer.java index b11a427f9f..1f4274afb1 100644 --- a/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/ConceptMapRenderer.java +++ b/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/ConceptMapRenderer.java @@ -152,8 +152,7 @@ public boolean render(XhtmlNode x, ConceptMap cm) throws FHIRFormatError, Defini td = tr.td(); td.addText(ccl.getCode()); display = ccl.hasDisplay() ? ccl.getDisplay() - : getDisplayForConcept(systemFromCanonical(grp.getSource()), versionFromCanonical(grp.getSource()), - ccl.getCode()); + : getDisplayForConcept(grp.getSource(), ccl.getCode()); if (display != null && !isSameCodeAndDisplay(ccl.getCode(), display)) td.tx(" (" + display + ")"); TargetElementComponent ccm = ccl.getTarget().get(0); @@ -166,8 +165,7 @@ public boolean render(XhtmlNode x, ConceptMap cm) throws FHIRFormatError, Defini td = tr.td(); td.addText(ccm.getCode()); display = ccm.hasDisplay() ? ccm.getDisplay() - : getDisplayForConcept(systemFromCanonical(grp.getTarget()), versionFromCanonical(grp.getTarget()), - ccm.getCode()); + : getDisplayForConcept(grp.getTarget(), ccm.getCode()); if (display != null && !isSameCodeAndDisplay(ccm.getCode(), display)) td.tx(" (" + display + ")"); if (comment) @@ -247,8 +245,7 @@ public boolean render(XhtmlNode x, ConceptMap cm) throws FHIRFormatError, Defini td.addText(ccl.getCode()); else td.addText(grp.getSource() + " / " + ccl.getCode()); - display = getDisplayForConcept(systemFromCanonical(grp.getSource()), versionFromCanonical(grp.getSource()), - ccl.getCode()); + display = getDisplayForConcept(grp.getSource(), ccl.getCode()); tr.td().style("border-left-width: 0px").tx(display == null ? "" : display); tr.td().colspan("4").style("background-color: #efefef").tx("(not mapped)"); @@ -270,8 +267,7 @@ else if (!last) else td.addText(grp.getSource() + " / " + ccl.getCode()); display = ccl.hasDisplay() ? ccl.getDisplay() - : getDisplayForConcept(systemFromCanonical(grp.getSource()), versionFromCanonical(grp.getSource()), - ccl.getCode()); + : getDisplayForConcept(grp.getSource(), ccl.getCode()); td = tr.td(); if (!last) td.style("border-left-width: 0px; border-bottom-style: none"); @@ -311,7 +307,7 @@ else if (!last) else td.addText(grp.getTarget() + " / " + ccm.getCode()); display = ccm.hasDisplay() ? ccm.getDisplay() - : getDisplayForConcept(systemFromCanonical(grp.getTarget()), versionFromCanonical(grp.getTarget()), + : getDisplayForConcept(grp.getTarget(), ccm.getCode()); tr.td().style("border-left-width: 0px").tx(display == null ? "" : display); diff --git a/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/DataRenderer.java b/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/DataRenderer.java index a1d744552e..0f90dace71 100644 --- a/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/DataRenderer.java +++ b/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/DataRenderer.java @@ -1731,24 +1731,5 @@ private String getStackTrace(Exception e) { return b.toString(); } - protected String versionFromCanonical(String system) { - if (system == null) { - return null; - } else if (system.contains("|")) { - return system.substring(0, system.indexOf("|")); - } else { - return null; - } - } - - protected String systemFromCanonical(String system) { - if (system == null) { - return null; - } else if (system.contains("|")) { - return system.substring(system.indexOf("|") + 1); - } else { - return system; - } - } } \ No newline at end of file diff --git a/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/TerminologyRenderer.java b/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/TerminologyRenderer.java index 4ee9224950..1ef2d14481 100644 --- a/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/TerminologyRenderer.java +++ b/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/renderers/TerminologyRenderer.java @@ -28,6 +28,7 @@ import org.hl7.fhir.r4b.renderers.utils.Resolver.ResourceContext; import org.hl7.fhir.r4b.terminologies.CodeSystemUtilities; import org.hl7.fhir.r4b.utils.ToolingExtensions; +import org.hl7.fhir.utilities.CanonicalPair; import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.xhtml.XhtmlNode; @@ -325,8 +326,14 @@ protected void AddVsRef(String value, XhtmlNode li) { } } } + - protected String getDisplayForConcept(String system, String version, String value) { + protected String getDisplayForConcept(String canonical, String value) { + var split = CanonicalPair.of(canonical); + return getDisplayForConcept(split.getUrl(), split.getVersion(), value); + } + + private String getDisplayForConcept(String system, String version, String value) { if (value == null || system == null) return null; ValidationResult cl = getContext().getWorker().validateCode( diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/ConceptMapRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/ConceptMapRenderer.java index 010f4262ba..6f3cac9f42 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/ConceptMapRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/ConceptMapRenderer.java @@ -428,7 +428,7 @@ public boolean render(XhtmlNode x, ConceptMap cm, boolean header) throws FHIRFor tr = tbl.tr(); XhtmlNode td = tr.td(); td.addText(ccl.getCode()); - display = ccl.hasDisplay() ? ccl.getDisplay() : getDisplayForConcept(systemFromCanonical(grp.getSource()), versionFromCanonical(grp.getSource()), ccl.getCode()); + display = ccl.hasDisplay() ? ccl.getDisplay() : getDisplayForConcept(grp.getSource(), ccl.getCode()); if (display != null && !isSameCodeAndDisplay(ccl.getCode(), display)) td.tx(" ("+display+")"); if (ccl.getNoMap()) { @@ -447,7 +447,7 @@ public boolean render(XhtmlNode x, ConceptMap cm, boolean header) throws FHIRFor } td = tr.td(); td.addText(ccm.getCode()); - display = ccm.hasDisplay() ? ccm.getDisplay() : getDisplayForConcept(systemFromCanonical(grp.getTarget()), versionFromCanonical(grp.getTarget()), ccm.getCode()); + display = ccm.hasDisplay() ? ccm.getDisplay() : getDisplayForConcept(grp.getTarget(), ccm.getCode()); if (display != null && !isSameCodeAndDisplay(ccm.getCode(), display)) td.tx(" ("+display+")"); if (comment) @@ -539,7 +539,7 @@ public boolean render(XhtmlNode x, ConceptMap cm, boolean header) throws FHIRFor td.addText(ccl.getCode()); else td.addText(grp.getSource()+" / "+ccl.getCode()); - display = ccl.hasDisplay() ? ccl.getDisplay() : getDisplayForConcept(systemFromCanonical(grp.getSource()), versionFromCanonical(grp.getSource()), ccl.getCode()); + display = ccl.hasDisplay() ? ccl.getDisplay() : getDisplayForConcept(grp.getSource(), ccl.getCode()); tr.td().style("border-left-width: 0px").tx(display == null ? "" : display); tr.td().colspan("4").style("background-color: #efefef").tx("(not mapped)"); @@ -560,7 +560,7 @@ else if (!last) td.addText(ccl.getCode()); else td.addText(grp.getSource()+" / "+ccl.getCode()); - display = ccl.hasDisplay() ? ccl.getDisplay() : getDisplayForConcept(systemFromCanonical(grp.getSource()), versionFromCanonical(grp.getSource()), ccl.getCode()); + display = ccl.hasDisplay() ? ccl.getDisplay() : getDisplayForConcept(grp.getSource(), ccl.getCode()); td = tr.td(); if (!last) td.style("border-left-width: 0px; border-bottom-style: none"); @@ -603,7 +603,7 @@ else if (!last) td.addText(ccm.getCode()); else td.addText(grp.getTarget()+" / "+ccm.getCode()); - display = ccm.hasDisplay() ? ccm.getDisplay() : getDisplayForConcept(systemFromCanonical(grp.getTarget()), versionFromCanonical(grp.getTarget()), ccm.getCode()); + display = ccm.hasDisplay() ? ccm.getDisplay() : getDisplayForConcept(grp.getSource(), ccm.getCode()); tr.td().style("border-left-width: 0px").tx(display == null ? "" : display); for (String s : targets.keySet()) { diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java index 31cfd49008..8350918b04 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java @@ -1976,25 +1976,5 @@ private String getStackTrace(Exception e) { return b.toString(); } - protected String versionFromCanonical(String system) { - if (system == null) { - return null; - } else if (system.contains("|")) { - return system.substring(0, system.indexOf("|")); - } else { - return null; - } - } - - protected String systemFromCanonical(String system) { - if (system == null) { - return null; - } else if (system.contains("|")) { - return system.substring(system.indexOf("|")+1); - } else { - return system; - } - } - } \ No newline at end of file diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/TerminologyRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/TerminologyRenderer.java index 292153b3e6..5285bd9fee 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/TerminologyRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/TerminologyRenderer.java @@ -28,6 +28,7 @@ import org.hl7.fhir.r5.terminologies.CodeSystemUtilities; import org.hl7.fhir.r5.terminologies.utilities.ValidationResult; import org.hl7.fhir.r5.utils.ToolingExtensions; +import org.hl7.fhir.utilities.CanonicalPair; import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.xhtml.XhtmlNode; @@ -320,6 +321,11 @@ protected void AddVsRef(String value, XhtmlNode li, Resource source) { } } + protected String getDisplayForConcept(String canonical, String value) { + var split = CanonicalPair.of(canonical); + return getDisplayForConcept(split.getUrl(), split.getVersion(), value); + } + protected String getDisplayForConcept(String system, String version, String value) { if (value == null || system == null) return null; diff --git a/pom.xml b/pom.xml index df6326f1c4..8316373e63 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 1.26.0 32.0.1-jre 6.4.1 - 1.5.7 + 1.5.8-SNAPSHOT 2.17.0 5.9.2 1.8.2 From 920695e7fe60cd70b9c7d472e54096513ddbe13d Mon Sep 17 00:00:00 2001 From: dotasek Date: Wed, 19 Jun 2024 10:05:51 -0400 Subject: [PATCH 2/4] Remove dead code from merge --- .../hl7/fhir/r5/renderers/DataRenderer.java | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java index 55e42979cd..991574d574 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java @@ -1956,26 +1956,5 @@ private String getStackTrace(Exception e) { } return b.toString(); } - - protected String versionFromCanonical(String system) { - if (system == null) { - return null; - } else if (system.contains("|")) { - return system.substring(0, system.indexOf("|")); - } else { - return null; - } - } - - protected String systemFromCanonical(String system) { - if (system == null) { - return null; - } else if (system.contains("|")) { - return system.substring(system.indexOf("|")+1); - } else { - return system; - } - } - - + } \ No newline at end of file From 1af288bca05268463cba94a28b37a7b0848c8998 Mon Sep 17 00:00:00 2001 From: dotasek Date: Wed, 19 Jun 2024 16:42:24 -0400 Subject: [PATCH 3/4] Fix spacing issues in rendering --- .../main/java/org/hl7/fhir/r5/renderers/ResourceRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/ResourceRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/ResourceRenderer.java index f35b0c8f07..cf4ceda5b1 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/ResourceRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/ResourceRenderer.java @@ -236,7 +236,7 @@ public void renderCanonical(ResourceWrapper rw, XhtmlNode x, String url, boolean } else { url = url.substring(0, url.indexOf("|")); x.code().tx(url); - x.tx(": "+cr.present()+ context.formatPhrase(RenderingContext.RES_REND_VER) +cr.getVersion()+")"); + x.tx(": "+cr.present()+ " " + context.formatPhrase(RenderingContext.RES_REND_VER) + " " + cr.getVersion()+")"); } } else { if (target.hasWebPath()) { From 429f6630b07444cd85221d6f1184f9a8133ff370 Mon Sep 17 00:00:00 2001 From: dotasek Date: Wed, 19 Jun 2024 18:26:42 -0400 Subject: [PATCH 4/4] Empty commit, make-pipeline-go --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5db70c5d48..3e175eb881 100644 --- a/README.md +++ b/README.md @@ -282,3 +282,4 @@ This project is maintained by [Grahame Grieve][Link-grahameGithub], [James Agnew [Badge-cliSonatypeSnapshot]: https://img.shields.io/nexus/s/https/oss.sonatype.org/ca.uhn.hapi.fhir/org.hl7.fhir.validation.cli.svg "Sonatype Snapshots" [Badge-validationSonatypeRelease]: https://img.shields.io/nexus/r/https/oss.sonatype.org/ca.uhn.hapi.fhir/org.hl7.fhir.validation.svg "Sonatype Releases" [Badge-validationSonatypeSnapshot]: https://img.shields.io/nexus/s/https/oss.sonatype.org/ca.uhn.hapi.fhir/org.hl7.fhir.validation.svg "Sonatype Snapshots" +