From db19b0dd00cdf7203ce6cd9373961b724566e2fc Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Wed, 16 Feb 2022 14:04:35 +1100 Subject: [PATCH] Fix broken links + remove error about regex in core package --- .../fhir/r5/context/SimpleWorkerContext.java | 2 +- .../r5/renderers/QuestionnaireRenderer.java | 6 ++++-- .../xhtml/HierarchicalTableGenerator.java | 17 +++++++++++++++-- .../validation/instance/InstanceValidator.java | 10 +++++++--- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/SimpleWorkerContext.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/SimpleWorkerContext.java index 90cee54ad..53a371c13 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/SimpleWorkerContext.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/SimpleWorkerContext.java @@ -813,7 +813,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon pu.setDebug(false); for (String err : errors) msgs.add(new ValidationMessage(Source.ProfileValidator, IssueType.EXCEPTION, p.getUserString("path"), "Error sorting Differential: "+err, ValidationMessage.IssueSeverity.ERROR)); - pu.generateSnapshot(sd, p, p.getUrl(), Utilities.extractBaseUrl(sd.getUserString("path")), p.getName()); + pu.generateSnapshot(sd, p, p.getUrl(), sd.getUserString("webroot"), p.getName()); for (ValidationMessage msg : msgs) { if ((!ignoreProfileErrors && msg.getLevel() == ValidationMessage.IssueSeverity.ERROR) || msg.getLevel() == ValidationMessage.IssueSeverity.FATAL) throw new DefinitionException(formatMessage(I18nConstants.PROFILE___ELEMENT__ERROR_GENERATING_SNAPSHOT_, p.getName(), p.getUrl(), msg.getLocation(), msg.getMessage())); diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/QuestionnaireRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/QuestionnaireRenderer.java index 0363ae2f4..c5de770db 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/QuestionnaireRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/QuestionnaireRenderer.java @@ -226,7 +226,9 @@ public class QuestionnaireRenderer extends TerminologyRenderer { boolean hasExt = false; r.setIcon("icon-q-"+i.getType().toCode().toLowerCase()+".png", i.getType().getDisplay()); - r.getCells().add(gen.new Cell(null, context.getDefinitionsTarget() == null ? "" : context.getDefinitionsTarget()+"#item."+i.getLinkId(), i.getLinkId(), null, null)); + Cell c1 = gen.new Cell(null, context.getDefinitionsTarget() == null ? "" : context.getDefinitionsTarget()+"#item."+i.getLinkId(), i.getLinkId(), null, null); + c1.setId("item."+i.getLinkId()); + r.getCells().add(c1); String txt = (i.hasPrefix() ? i.getPrefix() + ". " : "") + i.getText(); r.getCells().add(gen.new Cell(null, null, txt, null, null)); r.getCells().add(gen.new Cell(null, null, (i.getRequired() ? "1" : "0")+".."+(i.getRepeats() ? "*" : "1"), null, null)); @@ -282,7 +284,7 @@ public class QuestionnaireRenderer extends TerminologyRenderer { if (!defn.getPieces().isEmpty()) defn.addPiece(gen.new Piece("br")); Piece p = gen.new Piece(null, "Enable When: ", null); defn.getPieces().add(p); - if (i.getEnableWhen().size() == 0) { + if (i.getEnableWhen().size() == 1) { XhtmlNode x = new XhtmlNode(NodeType.Element, "span"); p.getChildren().add(x); renderEnableWhen(x, i.getEnableWhenFirstRep()); diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/xhtml/HierarchicalTableGenerator.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/xhtml/HierarchicalTableGenerator.java index 79d4fd301..18412cee5 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/xhtml/HierarchicalTableGenerator.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/xhtml/HierarchicalTableGenerator.java @@ -221,7 +221,8 @@ public class HierarchicalTableGenerator extends TranslatingUtilities { private String cellStyle; protected int span = 1; private TextAlignment alignment = TextAlignment.LEFT; - + private String id; + public Cell() { } @@ -241,6 +242,8 @@ public class HierarchicalTableGenerator extends TranslatingUtilities { return this; } + + public Cell addMarkdown(String md) { if (!Utilities.noString(md)) { try { @@ -428,7 +431,13 @@ public class HierarchicalTableGenerator extends TranslatingUtilities { return this; } - + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + } public class Title extends Cell { @@ -725,6 +734,10 @@ public class HierarchicalTableGenerator extends TranslatingUtilities { if (c.span > 1) { tc.colspan(Integer.toString(c.span)); } + if (c.getId() != null) { + tc.setAttribute("id", c.getId()); + } + if (indents != null) { tc.addTag("img").setAttribute("src", srcFor(imagePath, "tbl_spacer.png")).setAttribute("style", "background-color: inherit").setAttribute("class", "hierarchy").setAttribute("alt", "."); tc.setAttribute("style", "vertical-align: top; text-align : left; "+(c.cellStyle != null && c.cellStyle.contains("background-color") ? "" : "background-color: "+color+"; ")+"border: "+ border +"px #F0F0F0 solid; padding:0px 4px 0px 4px; white-space: nowrap; background-image: url("+imagePath+checkExists(indents, hasChildren, lineColor, outputTracker)+")"+(c.cellStyle != null ? ";"+c.cellStyle : "")); diff --git a/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/InstanceValidator.java b/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/InstanceValidator.java index 256f86532..fdc6782d5 100644 --- a/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/InstanceValidator.java +++ b/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/instance/InstanceValidator.java @@ -1876,9 +1876,13 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat } // the history of this is a mess - see https://jira.hl7.org/browse/FHIR-13328 // we in practice we will support it in either place, but the specification says on ElementDefinition, not on ElementDefinition.type -// if ("http://hl7.org/fhir/StructureDefinition/regex".equals(extUrl)) { -// list.get(1).setExpression("ElementDefinition.type"); -// } + // but this creates validation errors people can't fix all over the place if we don't do this. + if ("http://hl7.org/fhir/StructureDefinition/regex".equals(extUrl)) { + StructureDefinitionContextComponent e = new StructureDefinitionContextComponent(); + e.setExpression("ElementDefinition.type"); + e.setType(ExtensionContextType.ELEMENT); + list.add(e); + } if ("http://hl7.org/fhir/StructureDefinition/structuredefinition-normative-version".equals(extUrl)) { list.get(0).setExpression("Element"); // well, it can't be used anywhere but the list of places it can be used is quite long }