From 39d5e9b0a1391c58f0e1c55730b675688705f765 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Wed, 15 Jul 2020 14:05:08 +1000 Subject: [PATCH 01/11] Issue #132 - process markdown in lists --- .../hl7/fhir/igtools/publisher/Publisher.java | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java index cd930d5e2..a45d571e2 100644 --- a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java +++ b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java @@ -1823,6 +1823,9 @@ else if (vsCache == null) { if (sourceIg.hasLicense()) license = sourceIg.getLicense().toCode(); npmName = sourceIg.getPackageId(); + if (Utilities.noString(npmName)) { + throw new Error("No packageId provided in the implementation guide resource - cannot build this IG"); + } appendTrailingSlashInDataFile = true; includeHeadings = template.getIncludeHeadings(); igArtifactsPage = template.getIGArtifactsPage(); @@ -6147,10 +6150,7 @@ private void generateLogicals() throws Exception { fragment("table-logicals-mm", tableMM.toString(), otherFilesRun); } - private void genEntryItem( - StringBuilder list, StringBuilder lists, StringBuilder table, - StringBuilder listMM, StringBuilder listsMM, StringBuilder tableMM, - FetchedFile f, FetchedResource r, String name, String prefixType) throws Exception { + private void genEntryItem(StringBuilder list, StringBuilder lists, StringBuilder table, StringBuilder listMM, StringBuilder listsMM, StringBuilder tableMM, FetchedFile f, FetchedResource r, String name, String prefixType) throws Exception { String ref = igpkp.doReplacements(igpkp.getLinkFor(r, false), r, null, null); if (Utilities.noString(ref)) throw new Exception("No reference found for "+r.getId()); @@ -6159,18 +6159,30 @@ private void genEntryItem( ref = ref.substring(0, ref.lastIndexOf("."))+"."+prefixType+ref.substring(ref.lastIndexOf(".")); else ref = ref+"."+prefixType; - PrimitiveType desc = new StringType(r.getTitle()); - if (!r.hasTitle()) - desc = new StringType(f.getTitle()); + String desc = r.getTitle(); + String descSrc = "Resource Title"; + if (!r.hasTitle()) { + desc = f.getTitle(); + descSrc = "File Title"; + } if (r.getResource() != null && r.getResource() instanceof CanonicalResource) { name = ((CanonicalResource) r.getResource()).present(); - desc = getDesc((CanonicalResource) r.getResource(), desc); + String d = getDesc((CanonicalResource) r.getResource()).asStringValue(); + if (d != null) { + desc = markdownEngine.process(d, descSrc); + descSrc = "Canonical Resource"; + } } else if (r.getElement() != null && r.getElement().hasChild("description")) { - desc = new StringType(r.getElement().getChildValue("description")); + String d = new StringType(r.getElement().getChildValue("description")).asStringValue(); + if (d != null) { + desc = markdownEngine.process(d, descSrc); + // new BaseRenderer(context, null, igpkp, specMaps, markdownEngine, packge, rc).processMarkdown("description", desc ) + descSrc = "Canonical Resource Source"; + } } - list.append("
  • "+Utilities.escapeXml(name)+" "+Utilities.escapeXml(desc.asStringValue())+"
  • \r\n"); + list.append("
  • "+Utilities.escapeXml(name)+" "+desc+"
  • \r\n"); lists.append("
  • "+Utilities.escapeXml(name)+"
  • \r\n"); - table.append(" "+Utilities.escapeXml(name)+" "+new BaseRenderer(context, null, igpkp, specMaps, markdownEngine, packge, rc).processMarkdown("description", desc )+"\r\n"); + table.append(" "+Utilities.escapeXml(name)+" "+desc+"\r\n"); if (listMM != null) { String mm = ""; @@ -6181,9 +6193,9 @@ private void genEntryItem( mm = " "+fmm+""; } } - listMM.append("
  • "+Utilities.escapeXml(name)+""+mm+" "+Utilities.escapeXml(desc.asStringValue())+"
  • \r\n"); + listMM.append("
  • "+Utilities.escapeXml(name)+""+mm+" "+desc+"
  • \r\n"); listsMM.append("
  • "+Utilities.escapeXml(name)+""+mm+"
  • \r\n"); - tableMM.append(" "+Utilities.escapeXml(name)+" "+new BaseRenderer(context, null, igpkp, specMaps, markdownEngine, packge, rc).processMarkdown("description", desc )+""+mm+"\r\n"); + tableMM.append(" "+Utilities.escapeXml(name)+" "+desc+""+mm+"\r\n"); } } @@ -6263,10 +6275,8 @@ public void genResourceReferencesList(String rt, List items, String ext) t } @SuppressWarnings("rawtypes") - private PrimitiveType getDesc(CanonicalResource r, PrimitiveType desc) { - if (r.hasDescription()) - return r.getDescriptionElement(); - return desc; + private PrimitiveType getDesc(CanonicalResource r) { + return r.getDescriptionElement(); } private Number getErrorCount() { @@ -6794,7 +6804,7 @@ private void makeTemplatesContained(FetchedFile f, FetchedResource r, Resource r for (String templateName : extraTemplates.keySet()) { String output = igpkp.getProperty(r, templateName); if (output == null) - output = r.getElement().fhirType()+"-"+r.getId()+"-"+templateName+".html"; + output = r.getElement().fhirType()+"-"+r.getId()+"_"+res.getId()+"-"+templateName+".html"; genWrapperContained(null, r, res, igpkp.getPropertyContained(r, "template-"+templateName, res), output, f.getOutputNames(), vars, null, templateName, prefixForContained); } } @@ -7927,8 +7937,6 @@ public String getJekyllCommand() { return this.jekyllCommand; } - - public static String determineActualIG(String ig, IGBuildMode mode) throws Exception { File f = new File(ig); if (!f.exists() && mode == IGBuildMode.AUTOBUILD) { From 3758833852c89655fdde1d74656c20a11a3881c8 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Thu, 16 Jul 2020 09:27:07 +1000 Subject: [PATCH 02/11] Add error if validator.pack is referenced + URL Decode references when link checking --- .../igtools/publisher/HTLMLInspector.java | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/HTLMLInspector.java b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/HTLMLInspector.java index bb9284c79..ec8cd611f 100644 --- a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/HTLMLInspector.java +++ b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/HTLMLInspector.java @@ -192,6 +192,7 @@ public Boolean getHl7State() { private boolean missingPublishBox; private List missingPublishBoxList = new ArrayList<>(); private Set exceptions = new HashSet<>(); + private boolean referencesValidatorPack; public HTLMLInspector(String rootFolder, List specs, ILoggingService log, String canonical, String packageId) { this.rootFolder = rootFolder.replace("/", File.separator); @@ -256,10 +257,15 @@ public List check(String statusText) throws IOException { first = false; } } - if (lf.getXhtml() != null) + if (lf.getXhtml() != null) { + referencesValidatorPack = false; if (checkLinks(s, "", lf.getXhtml(), null, messages, false) != NodeChangeType.NONE) { // returns true if changed saveFile(lf); } + if (referencesValidatorPack) { + messages.add(new ValidationMessage(Source.Publisher, IssueType.BUSINESSRULE, s, "The html source references validator.pack which is deprecated. Change the IG to describe the use of the package system instead", IssueSeverity.ERROR)); + } + } } log.logDebugMessage(LogCategory.HTML, "Checking Other Links"); @@ -457,18 +463,28 @@ private void listTargets(XhtmlNode x, Set targets) { private NodeChangeType checkLinks(String s, String path, XhtmlNode x, String uuid, List messages, boolean inPre) throws IOException { boolean changed = false; - if (x.getName() != null) + if (x.getName() != null) { path = path + "/"+ x.getName(); - if ("title".equals(x.getName()) && Utilities.noString(x.allText())) + } else { + if (x.getContent() != null && x.getContent().contains("validator.pack")) { + referencesValidatorPack = true; + } + } + if ("title".equals(x.getName()) && Utilities.noString(x.allText())) { x.addText("?html-link?"); - if ("a".equals(x.getName()) && x.hasAttribute("href")) + } + if ("a".equals(x.getName()) && x.hasAttribute("href")) { changed = checkResolveLink(s, x.getLocation(), path, x.getAttribute("href"), x.allText(), messages, uuid); - if ("img".equals(x.getName()) && x.hasAttribute("src")) + } + if ("img".equals(x.getName()) && x.hasAttribute("src")) { changed = checkResolveImageLink(s, x.getLocation(), path, x.getAttribute("src"), messages, uuid) || changed; - if ("link".equals(x.getName())) + } + if ("link".equals(x.getName())) { changed = checkLinkElement(s, x.getLocation(), path, x.getAttribute("href"), messages, uuid) || changed; - if ("script".equals(x.getName())) + } + if ("script".equals(x.getName())) { checkScriptElement(s, x.getLocation(), path, x, messages); + } String nuid = UUID.randomUUID().toString().toLowerCase(); boolean nchanged = false; boolean nSelfChanged = false; @@ -510,13 +526,17 @@ private boolean checkLinkElement(String filename, Location loc, String path, Str private boolean checkResolveLink(String filename, Location loc, String path, String ref, String text, List messages, String uuid) throws IOException { links++; - String rref = ref; + String rref = Utilities.URLDecode(ref); if ((rref.startsWith("http:") || rref.startsWith("https:") ) && (rref.endsWith(".sch") || rref.endsWith(".xsd") || rref.endsWith(".shex"))) { // work around for the fact that spec.internals does not track all these minor things rref = Utilities.changeFileExt(ref, ".html"); } - if (rref.startsWith("./")) + if (rref.startsWith("./")) { rref = rref.substring(2); + } + if (rref.contains("validator.pack")) { + referencesValidatorPack = true; + } String tgtList = ""; boolean resolved = Utilities.existsInList(ref, "qa.html", "http://hl7.org/fhir", "http://hl7.org", "http://www.hl7.org", "http://hl7.org/fhir/search.cfm") || ref.startsWith("http://gforge.hl7.org/gf/project/fhir/tracker/") || ref.startsWith("mailto:") || ref.startsWith("javascript:"); @@ -538,8 +558,9 @@ private boolean checkResolveLink(String filename, Location loc, String path, Str if (!resolved) { String fref = Utilities.path(Utilities.getDirectoryForFile(filename), ref); - if (fref.equals(Utilities.path(rootFolder, "qa.html"))) + if (fref.equals(Utilities.path(rootFolder, "qa.html"))) { resolved = true; + } } // special case end-points that are always valid: if (!resolved) @@ -552,8 +573,9 @@ private boolean checkResolveLink(String filename, Location loc, String path, Str resolved = true; if (specs != null) { for (SpecMapManager spec : specs) { - if (rref.startsWith(spec.getBase())) + if (rref.startsWith(spec.getBase())) { resolved = false; + } } } } else { From 155f2abfd82fc586c8f9e855f5bf18781f2b621a Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Thu, 16 Jul 2020 09:27:36 +1000 Subject: [PATCH 03/11] fix up display of snapshot only profile views --- .../StructureDefinitionRenderer.java | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/renderers/StructureDefinitionRenderer.java b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/renderers/StructureDefinitionRenderer.java index 28b9b237b..ceb1a023c 100644 --- a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/renderers/StructureDefinitionRenderer.java +++ b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/renderers/StructureDefinitionRenderer.java @@ -303,7 +303,7 @@ private String summariseExtension(List profiles, boolean modifier if (ed.getUserData("path") == null) return "
  • "+url+""+(modifier ? " ("+translate("sd.summary", "Modifier")+") " : "")+"
  • \r\n"; else - return "
  • "+url+""+(modifier ? " ("+translate("sd.summary", "Modifier")+") " : "")+"
  • \r\n"; + return "
  • "+url+""+(modifier ? " ("+translate("sd.summary", "Modifier")+") " : "")+"
  • \r\n"; } private String describeProfile(String url, String prefix) throws Exception { @@ -313,10 +313,9 @@ private String describeProfile(String url, String prefix) throws Exception { StructureDefinition ed = context.fetchResource(StructureDefinition.class, url); if (ed == null) return "
  • "+translate("sd.summary", "unable to summarise profile %s (no profile found)",url)+"
  • "; - return "
  • "+url+"
  • \r\n"; + return "
  • "+url+"
  • \r\n"; } - private String summariseValue(DataType fixed) throws FHIRException { if (fixed instanceof org.hl7.fhir.r5.model.PrimitiveType) return Utilities.escapeXml(((org.hl7.fhir.r5.model.PrimitiveType) fixed).asStringValue()); @@ -381,18 +380,26 @@ public String byMustSupport(String defnFile, Set outputTracker) throws I { XhtmlComposer composer = new XhtmlComposer(XhtmlComposer.HTML); StructureDefinition sdCopy = sd.copy(); + Set mustSupport = new HashSet<>(); + List mustSupportElements = new ArrayList(); // Scan through all the properties checking for must support elements // and clear properties in the cloned StructureDefinition that we don't want to // show in the custom view + scanForMustSupport(mustSupport, sdCopy.getSnapshot().getElement(), sdCopy.getSnapshot().getElementFirstRep(), new ArrayList<>()); for (ElementDefinition ed : sdCopy.getSnapshot().getElement()) { - if (ed.hasMustSupport() && ed.getMustSupport() || !ed.getPath().contains(".")) { + if (mustSupport.contains(ed)) { ElementDefinition edCopy = ed.copy(); if (edCopy.hasExample()) edCopy.getExample().clear(); - if (edCopy.hasBinding()) + if (!edCopy.getMustSupport()) { + if (edCopy.getPath().contains(".")) { + edCopy.setUserData("render.opaque", true); + } edCopy.setBinding(null); + ed.getConstraint().clear(); + } edCopy.setMustSupport(false); mustSupportElements.add(edCopy); } @@ -405,6 +412,22 @@ public String byMustSupport(String defnFile, Set outputTracker) throws I } } + private void scanForMustSupport(Set mustSupport, List elements, ElementDefinition element, List parents) { + if (parents.isEmpty() || element.hasMustSupport() && element.getMustSupport()) { + mustSupport.add(element); + for (ElementDefinition parent : parents) { + mustSupport.add(parent); + } + } + List children = getChildren(elements, element); + for (ElementDefinition child : children) { + List np = new ArrayList<>(); + np.addAll(parents); + np.add(element); + scanForMustSupport(mustSupport, elements, child, np); + } + } + public String grid(String defnFile, Set outputTracker) throws IOException, FHIRException, org.hl7.fhir.exceptions.FHIRException { if (sd.getSnapshot().getElement().isEmpty()) return ""; @@ -1010,7 +1033,7 @@ private void describeType(StringBuilder b, TypeRefComponent t) throws Exception b.append(tp.getValue()); else { String pth = p.getUserString("path"); - b.append(""); + b.append(""); b.append(p.getName()); b.append(""); } @@ -1079,18 +1102,18 @@ private String describeBinding(StructureDefinition sd, ElementDefinition d, Stri return def.getDescription(); BindingResolution br = igp.resolveBinding(sd, def, path); String defDesc = def.getDescription()==null ? "" : Utilities.escapeXml(def.getDescription()) + "
    "; - String s = defDesc+conf(def)+ ""+Utilities.escapeXml(br.display)+""+confTail(def); + String s = defDesc+conf(def)+ ""+Utilities.escapeXml(br.display)+""+confTail(def); if (def.hasExtension(ToolingExtensions.EXT_MAX_VALUESET)) { br = igp.resolveBinding(sd, ToolingExtensions.readStringExtension(def, ToolingExtensions.EXT_MAX_VALUESET), path); s = s + "
    "; s = s + "Max Binding: "; - s = s + (br.url == null ? Utilities.escapeXml(br.display) : ""+Utilities.escapeXml(br.display)+""); + s = s + (br.url == null ? Utilities.escapeXml(br.display) : ""+Utilities.escapeXml(br.display)+""); } if (def.hasExtension(ToolingExtensions.EXT_MIN_VALUESET)) { br = igp.resolveBinding(sd, ToolingExtensions.readStringExtension(def, ToolingExtensions.EXT_MIN_VALUESET), path); s = s + "
    "; s = s + "Min Binding: "; - s = s + (br.url == null ? Utilities.escapeXml(br.display) : ""+Utilities.escapeXml(br.display)+""); + s = s + (br.url == null ? Utilities.escapeXml(br.display) : ""+Utilities.escapeXml(br.display)+""); } return s; } @@ -1186,7 +1209,7 @@ public String mappings(boolean complete) { if (url == null) s.append("

    "+translate("sd.maps", "Mappings for %s (%s)", Utilities.escapeXml(gt(map.getNameElement())), Utilities.escapeXml(map.getUri()))+"

    "); else - s.append("

    "+translate("sd.maps", "Mappings for %s (%s)", Utilities.escapeXml(gt(map.getNameElement())), Utilities.escapeXml(map.getUri()))+"

    "); + s.append("

    "+translate("sd.maps", "Mappings for %s (%s)", Utilities.escapeXml(gt(map.getNameElement())), Utilities.escapeXml(map.getUri()))+"

    "); if (map.hasComment()) s.append("

    "+Utilities.escapeXml(gt(map.getCommentElement()))+"

    "); // else if (specmaps != null && preambles.has(map.getUri())) @@ -1314,7 +1337,7 @@ public String header() throws Exception { b.append("

    \r\n"); StructureDefinition sdb = context.fetchResource(StructureDefinition.class, sd.getBaseDefinition()); if (sdb != null) - b.append(translate("sd.header", "This profile builds on")+" "+gt(sdb.getNameElement())+"."); + b.append(translate("sd.header", "This profile builds on")+" "+gt(sdb.getNameElement())+"."); else b.append(translate("sd.header", "This profile builds on")+" "+sd.getBaseDefinition()+"."); b.append("

    \r\n"); @@ -1335,7 +1358,7 @@ public String exampleList(List fileList, boolean statedOnly) { if (Utilities.noString(name)) name = "example"; String ref = igp.getLinkFor(r, true); - b.append("
  • "+Utilities.escapeXml(name)+"
  • \r\n"); + b.append("
  • "+Utilities.escapeXml(name)+"
  • \r\n"); } } } @@ -1357,7 +1380,7 @@ public String exampleTable(List fileList, boolean statedOnly) { title = f.getTitle(); String ref = igp.getLinkFor(r, true); b.append(" \r\n"); - b.append(" "+Utilities.escapeXml(name)+"\r\n"); + b.append(" "+Utilities.escapeXml(name)+"\r\n"); b.append(" "+Utilities.escapeXml(title)+"\r\n"); b.append(" \r\n"); } From 6acd36d1ef7218743ba5c57edd96d6613ecf743a Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Thu, 16 Jul 2020 09:27:58 +1000 Subject: [PATCH 04/11] improve error message on template fail --- .../org/hl7/fhir/igtools/templates/TemplateManager.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/templates/TemplateManager.java b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/templates/TemplateManager.java index f4e712104..fc10b1c32 100644 --- a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/templates/TemplateManager.java +++ b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/templates/TemplateManager.java @@ -113,7 +113,12 @@ private void installTemplate(String template, String rootFolder, String template boolean noScripts = true; JsonObject config = null; if (npm.hasFile(Utilities.path("package", "$root"), "config.json")) { - config = JsonTrackingParser.parseJson(npm.load(Utilities.path("package", "$root"), "config.json")); + try { + config = JsonTrackingParser.parseJson(npm.load(Utilities.path("package", "$root"), "config.json")); + } catch (Exception e) { + TextFile.streamToFile(npm.load(Utilities.path("package", "$root"), "config.json"), Utilities.path("[tmp]", npm.name()+"#"+npm.version()+"$config.json")); + throw new FHIRException("Error parsing "+npm.name()+"#"+npm.version()+"#"+Utilities.path("package", "$root", "config.json")+": "+e.getMessage(), e); + } configs.add(config); noScripts = !config.has("script") && !config.has("targets"); } From a197a71b2d4199e2745de13b7cc28d370c6aa35e Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Thu, 16 Jul 2020 09:28:31 +1000 Subject: [PATCH 05/11] hack workaround for past mistake on qicore publication --- .../org/hl7/fhir/igtools/publisher/Publisher.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java index a45d571e2..a8413d62e 100644 --- a/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java +++ b/org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java @@ -2597,7 +2597,8 @@ private void loadIg(ImplementationGuideDependsOnComponent dep, int index) throws } } String webref = pi.getWebLocation(); - + webref = fixPackageUrl(webref); + SpecMapManager igm = pi.hasFile("other", "spec.internals") ? new SpecMapManager( TextFile.streamToBytes(pi.load("other", "spec.internals")), pi.fhirVersion()) : SpecMapManager.createForSimplifier(pi); igm.setName(name); igm.setBase(canonical); @@ -2751,6 +2752,7 @@ private void loadIg(JsonObject dep) throws Exception { String location = dep.has("location") ? dep.get("location").getAsString() : ""; if (location.startsWith("..")) webref = location; + webref = fixPackageUrl(webref); String ver = pi.fhirVersion(); SpecMapManager igm = new SpecMapManager(TextFile.streamToBytes(pi.load("other", "spec.internals")), ver); @@ -2767,6 +2769,14 @@ private void loadIg(JsonObject dep) throws Exception { } + // workaround for past publishing problem + private String fixPackageUrl(String webref) { + if (webref.equals("file://C:\\GitHub\\hl7.fhir.us.qicore#4.0.0\\output")) { + return "http://hl7.org/fhir/us/qicore/STU4"; + } + return webref; + } + private NpmPackage resolveDependency(String canonical, String packageId, String igver) throws Exception { if (packageId != null) return pcm.loadPackage(packageId, igver); From 6e100b6e328048bf1d24947ad8448dfea961a249 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Thu, 16 Jul 2020 09:29:15 +1000 Subject: [PATCH 06/11] update to current version of core library --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7193064f9..b4382b940 100644 --- a/pom.xml +++ b/pom.xml @@ -18,13 +18,13 @@ ca.uhn.hapi.fhir org.hl7.fhir.core - 5.0.12-SNAPSHOT + 5.0.13-SNAPSHOT 1.1.3-SNAPSHOT - 5.0.12-SNAPSHOT + 5.0.13-SNAPSHOT true From 6f99a80aa88b273047504b8bac262ba068191c33 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Thu, 16 Jul 2020 09:32:50 +1000 Subject: [PATCH 07/11] add release notes --- RELEASE_NOTES.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index a25d77716..6784cd836 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1 +1,9 @@ -* fix problem with narrative being generated after validation for Canonical Resources +* X-Version support: fix problem converting DataRequirements across versions +* Validator: Add support for conformsTo in invariants on elements +* Validator: Handle weird ege case for fixedReference +* Cql Subsystem: update to 1.50 +* Renderer: fix problem with narrative being generated after validation for Canonical Resources +* Renderer: fix rendering of must-support view +* Renderer: fix rendering of multiple type profiles +* Renderer: fix bundle rendering +* Fix check for current version number From 7ab4b110019ed401acfe6b31e6bf1fecca3d1c7d Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Thu, 16 Jul 2020 09:33:58 +1000 Subject: [PATCH 08/11] add to release notes --- RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 6784cd836..2dff5aa78 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -6,4 +6,5 @@ * Renderer: fix rendering of must-support view * Renderer: fix rendering of multiple type profiles * Renderer: fix bundle rendering +* Renderer: process markdown when generating lists of resources * Fix check for current version number From 10096bc33d01f835e5bfe193282f5635f7c97ad1 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Fri, 17 Jul 2020 15:50:30 +1000 Subject: [PATCH 09/11] upgrade to new core --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b4382b940..b636708dc 100644 --- a/pom.xml +++ b/pom.xml @@ -18,13 +18,13 @@ ca.uhn.hapi.fhir org.hl7.fhir.core - 5.0.13-SNAPSHOT + 5.0.13 1.1.3-SNAPSHOT - 5.0.13-SNAPSHOT + 5.0.13 true From c6b5a943242d21d6688004d2c5c24f4ca46786a5 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Fri, 17 Jul 2020 15:54:51 +1000 Subject: [PATCH 10/11] update release notes --- RELEASE_NOTES.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 2dff5aa78..a66e4a982 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,10 +1,16 @@ +* Package subsystem: fix QICore loading with a hack to work around past mistake * X-Version support: fix problem converting DataRequirements across versions +* Snapshot Generator: fix bug assigning min=0 to slices by default * Validator: Add support for conformsTo in invariants on elements * Validator: Handle weird ege case for fixedReference +* Validator: Improved checking of narrative (including picking up empty narrative) * Cql Subsystem: update to 1.50 * Renderer: fix problem with narrative being generated after validation for Canonical Resources * Renderer: fix rendering of must-support view * Renderer: fix rendering of multiple type profiles * Renderer: fix bundle rendering * Renderer: process markdown when generating lists of resources -* Fix check for current version number +* Renderer: Fix rendering of contained resources (outside Canonical Resources) +* qa.html: error if mentioning validator.pack +* qa.html: decode URLs before checking them +* qa.html: fix check for current version number From af781488897dbf4b9052fcf09e418a4f9dd81e4b Mon Sep 17 00:00:00 2001 From: markiantorno Date: Fri, 17 Jul 2020 19:52:08 -0400 Subject: [PATCH 11/11] upping core dependency --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b636708dc..dff1b14e0 100644 --- a/pom.xml +++ b/pom.xml @@ -18,13 +18,13 @@ ca.uhn.hapi.fhir org.hl7.fhir.core - 5.0.13 + 5.0.14 1.1.3-SNAPSHOT - 5.0.13 + 5.0.14 true