From f618d15623deaeae4b9eccbb4c03cd3cdb2caf23 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Sat, 4 Jan 2025 22:34:53 +1100 Subject: [PATCH] release new pubpack --- .../StructureDefinitionRenderer.java | 6 +++--- .../fhir/r5/renderers/utils/ElementTable.java | 21 +++++++++++++++++-- .../fhir/utilities/npm/CommonPackages.java | 2 +- .../npm/FilesystemPackageCacheManager.java | 2 +- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/StructureDefinitionRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/StructureDefinitionRenderer.java index 05df6d766..64441758a 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/StructureDefinitionRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/StructureDefinitionRenderer.java @@ -5218,10 +5218,10 @@ public class StructureDefinitionRenderer extends ResourceRenderer { } // ok, now we collect constraints on the value domain, which maybe in sub-elements, though at some point we give up if (defn.hasFixed()) { - e.getConstraints().add(TableElementConstraint.makeValue(TableElementConstraintType.FIXED, path, defn.getFixed())); + e.getConstraints().add(TableElementConstraint.makeValueVS(TableElementConstraintType.FIXED, path, defn.getFixed(), defn.getBinding().getStrength(), defn.getBinding().getValueSet())); } if (defn.hasPattern()) { - e.getConstraints().add(TableElementConstraint.makeValue(TableElementConstraintType.PATTERN, path, defn.getPattern())); + e.getConstraints().add(TableElementConstraint.makeValueVS(TableElementConstraintType.PATTERN, path, defn.getPattern(), defn.getBinding().getStrength(), defn.getBinding().getValueSet())); } if (defn.hasMinValue() || defn.hasMaxValue()) { e.getConstraints().add(TableElementConstraint.makeRange(TableElementConstraintType.RANGE, path, defn.getMinValue(), defn.getMaxValue())); @@ -5229,7 +5229,7 @@ public class StructureDefinitionRenderer extends ResourceRenderer { if (defn.hasMaxLength()) { e.getConstraints().add(TableElementConstraint.makeValue(TableElementConstraintType.MAXLENGTH, path, defn.getMaxLengthElement())); } - if (defn.hasBinding() && defn.getBinding().hasValueSet() && (!cardinality || (diffDefn != null && diffDefn.hasBinding())) && !defn.hasFixed()) { + if (defn.hasBinding() && defn.getBinding().hasValueSet() && (!cardinality || (diffDefn != null && diffDefn.hasBinding())) && !defn.hasFixedOrPattern()) { e.getConstraints().add(TableElementConstraint.makeBinding(TableElementConstraintType.BINDING, path, defn.getBinding().getStrength(), defn.getBinding().getValueSet())); } } diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/ElementTable.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/ElementTable.java index 1a05e4d31..6dd3262ff 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/ElementTable.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/ElementTable.java @@ -225,6 +225,16 @@ public class ElementTable { return self; } + public static TableElementConstraint makeValueVS(TableElementConstraintType type, String path, DataType value, BindingStrength strength, String valueSet) { + TableElementConstraint self = new TableElementConstraint(); + self.type = type; + self.path = path; + self.value = value; + self.strength = strength; + self.valueSet = valueSet; + return self; + } + public static TableElementConstraint makeRange(TableElementConstraintType type, String path, DataType value, DataType value2) { TableElementConstraint self = new TableElementConstraint(); self.type = type; @@ -597,12 +607,16 @@ public class ElementTable { private void renderBindingConstraint(XhtmlNode x, TableElementConstraint c) { String name = c.path == null ? "value" : c.path; x.code().tx(name); + renderBinding(x, c, " is bound to "); + } + + private void renderBinding(XhtmlNode x, TableElementConstraint c, String phrase) { ValueSet vs = context.getContext().findTxResource(ValueSet.class, c.valueSet); if (vs == null) { - x.tx(" is bound to an unknown valueset "); + x.tx(phrase+"an unknown valueset "); x.code().tx(c.valueSet); } else { - x.tx(" is bound to "); + x.tx(phrase); x.ah(vs.getWebPath()).tx(vs.present()); try { ValueSetExpansionOutcome exp = context.getContext().expandVS(vs, true, false); @@ -688,6 +702,9 @@ public class ElementTable { break; } renderValue(x, c.value); + if (c.strength != null && c.valueSet != null) { + renderBinding(x, c, " from "); + } } public void renderValue(XhtmlNode x, DataType v) throws IOException { diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/CommonPackages.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/CommonPackages.java index 4730d2414..c0d1ccedb 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/CommonPackages.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/CommonPackages.java @@ -6,6 +6,6 @@ public class CommonPackages { public static final String VER_XVER = "0.1.0"; public static final String ID_PUBPACK = "hl7.fhir.pubpack"; - public static final String VER_PUBPACK = "0.2.0"; + public static final String VER_PUBPACK = "0.2.1"; } diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/FilesystemPackageCacheManager.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/FilesystemPackageCacheManager.java index 2193766ee..58c41ad51 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/FilesystemPackageCacheManager.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/FilesystemPackageCacheManager.java @@ -372,7 +372,7 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple public String getLatestVersion(String id) throws IOException { for (PackageServer nextPackageServer : getPackageServers()) { // special case: - if (!(Utilities.existsInList(id, CommonPackages.ID_PUBPACK, "hl7.terminology.r5") && PackageServer.PRIMARY_SERVER.equals(nextPackageServer.getUrl()))) { + if (!(Utilities.existsInList(id, CommonPackages.ID_PUBPACK, "hl7.terminology.r5") && PackageServer.SECONDARY_SERVER.equals(nextPackageServer.getUrl()))) { PackageClient pc = new PackageClient(nextPackageServer); try { return pc.getLatestVersion(id);