001package org.hl7.fhir.r5.renderers;
002
003import java.io.IOException;
004import java.io.UnsupportedEncodingException;
005
006import org.hl7.fhir.exceptions.DefinitionException;
007import org.hl7.fhir.exceptions.FHIRException;
008import org.hl7.fhir.exceptions.FHIRFormatError;
009import org.hl7.fhir.r5.model.ActorDefinition;
010import org.hl7.fhir.r5.model.CapabilityStatement;
011import org.hl7.fhir.r5.model.Library;
012import org.hl7.fhir.r5.model.UrlType;
013import org.hl7.fhir.r5.renderers.utils.RenderingContext;
014import org.hl7.fhir.r5.renderers.utils.ResourceWrapper;
015import org.hl7.fhir.r5.utils.EOperationOutcome;
016import org.hl7.fhir.utilities.MarkedToMoveToAdjunctPackage;
017import org.hl7.fhir.utilities.xhtml.XhtmlNode;
018
019@MarkedToMoveToAdjunctPackage
020public class ActorDefinitionRenderer extends ResourceRenderer {
021
022
023  public ActorDefinitionRenderer(RenderingContext context) { 
024    super(context); 
025  } 
026 
027  @Override
028  public void buildNarrative(RenderingStatus status, XhtmlNode x, ResourceWrapper r) throws FHIRFormatError, DefinitionException, IOException, FHIRException, EOperationOutcome {
029    renderResourceTechDetails(r, x);
030    genSummaryTable(status, x, r);
031    render(status, x, r);      
032  }
033  
034  @Override
035  public String buildSummary(ResourceWrapper r) throws UnsupportedEncodingException, IOException {
036    return canonicalTitle(r);
037  }
038
039  public void render(RenderingStatus status, XhtmlNode x, ResourceWrapper acd) throws FHIRFormatError, DefinitionException, IOException {
040    XhtmlNode tbl = x.table("grid", false);
041    XhtmlNode tr = tbl.tr();
042    tr.td().b().tx(context.formatPhrase(RenderingContext.ACTOR_DEF_ACT, context.getTranslated(acd.child("name")))  + " ");
043    tr.td().tx(context.getTranslated(acd.child("title")));
044    tr.td().tx(context.formatPhrase(RenderingContext.ACTOR_DEF_TYP, acd.primitiveValue("type")) + " ");
045    XhtmlNode td = tbl.tr().td().colspan("3");
046    addMarkdown(td, context.getTranslated(acd.child("documentation")));
047    if (acd.has("reference")) {
048      tbl.tr().td().tx(context.formatPhrase(RenderingContext.GENERAL_REFS));
049      td = tr.td().colspan("2");
050      boolean first = true;
051      for (ResourceWrapper t : acd.children("reference")) {
052        if (first) first = false; else x.br();
053        renderUri(status, td, t);
054      }      
055    }
056    if (acd.has("capabilities")) {
057      tr = tbl.tr();
058      tr.td().tx(context.formatPhrase(RenderingContext.ACTOR_DEF_CAP));
059      td = tr.td().colspan("2");
060      renderCanonical(status, td, acd.child("capabilities"));      
061    }
062    if (acd.has("derivedFrom")) {
063      tbl.tr().td().tx(context.formatPhrase(RenderingContext.ACTOR_DEF_DER));
064      td = tr.td().colspan("2");
065      boolean first = true;
066      for (ResourceWrapper t : acd.children("reference")) {
067        if (first) first = false; else x.br();
068        renderUri(status, td, t);
069      }      
070    }
071  }
072  
073  public void describe(XhtmlNode x, Library lib) {
074    x.tx(display(lib));
075  }
076
077  public String display(Library lib) {
078    return lib.present();
079  }
080  
081}