From ab329c8c63b099a0c1b8f2bc9ecbe2e80aebb9bf Mon Sep 17 00:00:00 2001 From: Bryn Rhodes Date: Mon, 21 Feb 2022 15:05:42 -0700 Subject: [PATCH 1/2] Added a Liquid template resolver to narrative generation to support include resolution in the publisher --- .../org/hl7/fhir/r5/renderers/LiquidRenderer.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java index 78893a2b4..81f1051d1 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java @@ -32,12 +32,26 @@ public class LiquidRenderer extends ResourceRenderer { this.rcontext = rcontext; this.liquidTemplate = liquidTemplate; } + + private class LiquidRendererIncludeResolver implements LiquidEngine.ILiquidEngineIncludeResolver { + public LiquidRendererIncludeResolver(RenderingContext context) { + this.context = context; + } + + private RenderingContext context; + + @Override + public String fetchInclude(LiquidEngine engine, String name) { + return context.getTemplateProvider().findTemplate(name); + } + } @Override public boolean render(XhtmlNode x, Resource r) throws FHIRFormatError, DefinitionException, IOException, FHIRException, EOperationOutcome { LiquidEngine engine = new LiquidEngine(context.getWorker(), context.getServices()); XhtmlNode xn; try { + engine.setIncludeResolver(new LiquidRendererIncludeResolver(context.getTemplateProvider())); LiquidDocument doc = engine.parse(liquidTemplate, "template"); String html = engine.evaluate(doc, r, rcontext); xn = new XhtmlParser().parseFragment(html); From 5544460d20194a12d9d1c7cec396489e518dce12 Mon Sep 17 00:00:00 2001 From: Bryn Rhodes Date: Wed, 23 Feb 2022 19:44:21 -0700 Subject: [PATCH 2/2] Added documentation --- .../main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java index 81f1051d1..739773801 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java @@ -33,6 +33,10 @@ public class LiquidRenderer extends ResourceRenderer { this.liquidTemplate = liquidTemplate; } + /** + * This class provides an implementation of the ILiquidEngineIncludeResolver that makes use of the + * template provider available in the rendering context to support resolving includes. + */ private class LiquidRendererIncludeResolver implements LiquidEngine.ILiquidEngineIncludeResolver { public LiquidRendererIncludeResolver(RenderingContext context) { this.context = context;