Search in sources :

Example 1 with LiquidDocument

use of org.hl7.fhir.r4.utils.LiquidEngine.LiquidDocument in project org.hl7.fhir.core by hapifhir.

the class LiquidEngineTests method test.

@ParameterizedTest(name = "{index}: file{0}")
@MethodSource("data")
public void test(JsonObject test) throws Exception {
    this.test = test;
    LiquidDocument doc = engine.parse(test.get("template").getAsString(), "test-script");
    String output = engine.evaluate(doc, loadResource(), null);
    Assertions.assertTrue(test.get("output").getAsString().equals(output));
}
Also used : LiquidDocument(org.hl7.fhir.r4.utils.LiquidEngine.LiquidDocument) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 2 with LiquidDocument

use of org.hl7.fhir.r4.utils.LiquidEngine.LiquidDocument in project org.hl7.fhir.core by hapifhir.

the class NarrativeGenerator method generateByLiquid.

private boolean generateByLiquid(ResourceContext rcontext, DomainResource r, String liquidTemplate, Set<String> outputTracker) {
    LiquidEngine engine = new LiquidEngine(context, services);
    XhtmlNode x;
    try {
        LiquidDocument doc = engine.parse(liquidTemplate, "template");
        String html = engine.evaluate(doc, r, rcontext);
        x = new XhtmlParser().parseFragment(html);
        if (!x.getName().equals("div"))
            throw new FHIRException("Error in template: Root element is not 'div'");
    } catch (FHIRException | IOException e) {
        x = new XhtmlNode(NodeType.Element, "div");
        x.para().b().setAttribute("style", "color: maroon").tx("Exception generating Narrative: " + e.getMessage());
    }
    inject(r, x, NarrativeStatus.GENERATED);
    return true;
}
Also used : LiquidDocument(org.hl7.fhir.r4.utils.LiquidEngine.LiquidDocument) XhtmlParser(org.hl7.fhir.utilities.xhtml.XhtmlParser) IOException(java.io.IOException) FHIRException(org.hl7.fhir.exceptions.FHIRException) XhtmlNode(org.hl7.fhir.utilities.xhtml.XhtmlNode)

Example 3 with LiquidDocument

use of org.hl7.fhir.r4.utils.LiquidEngine.LiquidDocument in project org.hl7.fhir.core by hapifhir.

the class LiquidEngineTests method test.

@ParameterizedTest(name = "{index}: file{0}")
@MethodSource("data")
public void test(JsonObject test) throws Exception {
    this.test = test;
    LiquidDocument doc = engine.parse(test.get("template").getAsString(), "test-script");
    String output = engine.evaluate(doc, loadResource(), null);
    Assertions.assertEquals(test.get("output").getAsString(), output);
}
Also used : LiquidDocument(org.hl7.fhir.r4b.utils.LiquidEngine.LiquidDocument) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 4 with LiquidDocument

use of org.hl7.fhir.r4.utils.LiquidEngine.LiquidDocument in project org.hl7.fhir.core by hapifhir.

the class LiquidRenderer method render.

@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));
        LiquidDocument doc = engine.parse(liquidTemplate, "template");
        String html = engine.evaluate(doc, r, rcontext);
        xn = new XhtmlParser().parseFragment(html);
        if (!x.getName().equals("div"))
            throw new FHIRException("Error in template: Root element is not 'div'");
    } catch (FHIRException | IOException e) {
        xn = new XhtmlNode(NodeType.Element, "div");
        xn.para().b().style("color: maroon").tx("Exception generating Narrative: " + e.getMessage());
    }
    x.getChildNodes().addAll(xn.getChildNodes());
    return true;
}
Also used : LiquidDocument(org.hl7.fhir.r5.utils.LiquidEngine.LiquidDocument) XhtmlParser(org.hl7.fhir.utilities.xhtml.XhtmlParser) IOException(java.io.IOException) LiquidEngine(org.hl7.fhir.r5.utils.LiquidEngine) FHIRException(org.hl7.fhir.exceptions.FHIRException) XhtmlNode(org.hl7.fhir.utilities.xhtml.XhtmlNode)

Example 5 with LiquidDocument

use of org.hl7.fhir.r4.utils.LiquidEngine.LiquidDocument in project org.hl7.fhir.core by hapifhir.

the class LiquidEngineTests method test.

@ParameterizedTest(name = "{index}: file{0}")
@MethodSource("data")
public void test(JsonObject test) throws Exception {
    this.test = test;
    LiquidDocument doc = engine.parse(test.get("template").getAsString(), "test-script");
    String output = engine.evaluate(doc, loadResource(), null);
    Assertions.assertEquals(test.get("output").getAsString(), output);
}
Also used : LiquidDocument(org.hl7.fhir.r5.utils.LiquidEngine.LiquidDocument) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Aggregations

IOException (java.io.IOException)5 FHIRException (org.hl7.fhir.exceptions.FHIRException)5 XhtmlNode (org.hl7.fhir.utilities.xhtml.XhtmlNode)5 XhtmlParser (org.hl7.fhir.utilities.xhtml.XhtmlParser)5 LiquidDocument (org.hl7.fhir.r4b.utils.LiquidEngine.LiquidDocument)4 LiquidDocument (org.hl7.fhir.r5.utils.LiquidEngine.LiquidDocument)4 LiquidEngine (org.hl7.fhir.r4b.utils.LiquidEngine)3 LiquidEngine (org.hl7.fhir.r5.utils.LiquidEngine)3 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)3 MethodSource (org.junit.jupiter.params.provider.MethodSource)3 LiquidDocument (org.hl7.fhir.r4.utils.LiquidEngine.LiquidDocument)2