use of org.hl7.fhir.definitions.model.ImplementationGuideDefn in project kindling by HL7.
the class PageProcessor method genExampleProfileLink.
private String genExampleProfileLink(Resource resource) throws FHIRException {
if (resource == null || !(resource instanceof StructureDefinition))
return "";
StructureDefinition sd = (StructureDefinition) resource;
if (!sd.hasBaseDefinition())
return "";
String pack = "";
if (sd.hasUserData("pack")) {
Profile p = (Profile) sd.getUserData("pack");
ImplementationGuideDefn ig = definitions.getIgs().get(p.getCategory());
if (Utilities.noString(ig.getHomePage()))
pack = " (" + ig.getName() + "))";
else
pack = " (<a href=\"" + ig.getHomePage() + "\">" + ig.getName() + "</a>)";
if (!p.getTitle().equals(sd.getName()))
pack = " in <a href=\"" + p.getId().toLowerCase() + ".html\">" + p.getTitle() + "</a> " + pack;
}
if (sd.hasUserData("path"))
return "This example conforms to the <a href=\"" + sd.getUserData("path") + "\">profile " + (sd.getName()) + "</a>" + pack + ".";
else
return "This example conforms to the <a href=\"" + sd.getId().toLowerCase() + ".html\">profile " + (sd.getName()) + "</a>" + pack + ".";
}
use of org.hl7.fhir.definitions.model.ImplementationGuideDefn in project kindling by HL7.
the class PageProcessor method getReferences.
private String getReferences(String name) throws Exception {
List<String> refs = new ArrayList<String>();
if (definitions.hasLogicalModel(name)) {
ElementDefn r = definitions.getLogicalModel(name).getResource().getRoot();
List<String> names = definitions.listAllPatterns(r.getName());
for (String rn : definitions.sortedResourceNames()) {
checkPatternReferences(names, refs, rn, definitions.getResourceByName(rn).getRoot(), definitions.getLogicalModel(name).getMappingUrl());
}
if (refs.size() == 1)
return "<h2>References</h2><p>This pattern is implemented by " + renderRef(refs.get(0), name) + ".</p>\r\n";
else if (refs.size() > 1)
return "<h2>References</h2><p>This pattern is implemented by " + asLinks(refs, name) + ".</p>\r\n";
else
return "<h2>References</h2><p>No resources follow this pattern.</p>";
} else {
for (String tn : definitions.sortedTypeNames()) {
checkReferences(name, refs, tn, definitions.getElementDefn(tn));
}
for (String rn : definitions.sortedResourceNames()) {
checkReferences(name, refs, rn, definitions.getResourceByName(rn).getRoot());
}
String r;
if (refs.size() == 1)
r = "<h2>References</h2><p>This resource is referenced by " + renderRef(refs.get(0), name) + ".</p>\r\n";
else if (refs.size() > 1)
r = "<h2>References</h2><p>This resource is referenced by " + asLinks(refs, name) + ".</p>\r\n";
else
r = "<h2>References</h2><p>No resources refer to this resource directly.</p>";
refs.clear();
for (ImplementationGuideDefn ig : definitions.getSortedIgs()) {
for (LogicalModel lm : ig.getLogicalModels()) {
checkPatternUsage(lm.getResource().getRoot().getName(), refs, definitions.getResourceByName(name).getRoot(), lm.getMappingUrl());
}
}
if (refs.size() == 1)
return r + "<p>This resource implements the " + renderRef(refs.get(0), name) + " pattern.</p>\r\n";
else if (refs.size() > 1)
return r + "<p>This resource implements the " + asLinks(refs, name) + " patterns.</p>\r\n";
else
return r + "<p>This resource does not implement any patterns.</p>";
}
}
use of org.hl7.fhir.definitions.model.ImplementationGuideDefn in project kindling by HL7.
the class PageProcessor method cloneToXhtml.
private void cloneToXhtml(String src, String dst, String name, String description, int level, boolean adorn, String pageType, String crumbTitle, ImplementationGuideDefn ig, ResourceDefn rd, WorkGroup wg) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document xdoc = builder.parse(new CSFileInputStream(new CSFile(src)));
// XhtmlGenerator xhtml = new XhtmlGenerator(null);
// xhtml.generate(xdoc, new CSFile(dst), name, description, level, adorn);
String n = new File(dst).getName();
n = n.substring(0, n.length() - 9);
XhtmlGenerator xhtml = new XhtmlGenerator(new ExampleAdorner(definitions, genlevel(level)));
ByteArrayOutputStream b = new ByteArrayOutputStream();
xhtml.generate(xdoc, b, name, description, level, adorn, n + ".xml.html");
String html = ("<%setlevel " + Integer.toString(level) + "%>" + TextFile.fileToString(folders.srcDir + "template-example-xml.html")).replace("<%example%>", b.toString());
html = processPageIncludes(n + ".xml.html", html, pageType, null, n + ".xml.html", null, null, crumbTitle, (adorn && hasNarrative(xdoc)) ? new Boolean(true) : null, ig, rd, wg);
TextFile.stringToFile(html, dst);
htmlchecker.registerExternal(dst);
}
use of org.hl7.fhir.definitions.model.ImplementationGuideDefn in project kindling by HL7.
the class PageProcessor method processPageIncludes.
public String processPageIncludes(String file, String src, String type, Map<String, String> others, String pagePath, Resource resource, List<String> tabs, String crumbTitle, Object object, ImplementationGuideDefn ig, ResourceDefn rd, WorkGroup wg) throws Exception {
String workingTitle = null;
int level = ig == null ? file.contains(File.separator) ? 1 : 0 : ig.isCore() ? 0 : 1;
boolean even = false;
String name = file.substring(0, file.lastIndexOf("."));
String searchAdditions = "";
while (src.contains("<%") || src.contains("[%")) {
int i1 = src.indexOf("<%");
int i2 = i1 == -1 ? -1 : src.substring(i1).indexOf("%>") + i1;
if (i1 == -1) {
i1 = src.indexOf("[%");
i2 = i1 == -1 ? -1 : src.substring(i1).indexOf("%]") + i1;
}
String s1 = src.substring(0, i1);
String s2 = src.substring(i1 + 2, i2).trim();
String s3 = src.substring(i2 + 2);
String[] com = s2.split(" ");
if (s2.startsWith("!")) {
src = s1 + s3;
} else if (com.length == 4 && com[0].equals("edt")) {
if (tabs != null)
tabs.add("tabs-" + com[1]);
src = s1 + orgDT(com[1], xmlForDt(com[1], com[2]), treeForDt(com[1]), umlForDt(com[1], com[3]), umlForDt(com[1], com[3] + "b"), profileRef(com[1]), tsForDt(com[1]), jsonForDt(com[1], com[2]), ttlForDt(com[1], com[2]), diffForDt(com[1], com[2])) + s3;
} else if (com.length == 3 && com[0].equals("dt")) {
if (tabs != null)
tabs.add("tabs-" + com[1]);
src = s1 + orgDT(com[1], xmlForDt(com[1], file), treeForDt(com[1]), umlForDt(com[1], com[2]), umlForDt(com[1], com[2] + "b"), profileRef(com[1]), tsForDt(com[1]), jsonForDt(com[1], file), ttlForDt(com[1], file), diffForDt(com[1], file)) + s3;
} else if (com.length == 3 && com[0].equals("adt")) {
if (tabs != null)
tabs.add("tabs-" + com[1]);
src = s1 + orgADT(com[1], treeForDt(com[1]), umlForDt(com[1], com[2]), umlForDt(com[1], com[2] + "b"), diffForDt(com[1], file)) + s3;
} else if (com.length == 2 && com[0].equals("dt.constraints"))
src = s1 + genConstraints(com[1], genlevel(level)) + s3;
else if (com.length == 2 && com[0].equals("dt.restrictions"))
src = s1 + genRestrictions(com[1]) + s3;
else if (com.length == 2 && com[0].equals("dictionary"))
src = s1 + dictForDt(com[1]) + s3;
else if (com[0].equals("othertabs"))
src = s1 + genOtherTabs(com[1], tabs) + s3;
else if (com[0].equals("dtheader"))
src = s1 + dtHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("atheader"))
src = s1 + atHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("mdtheader"))
src = s1 + mdtHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("edheader"))
src = s1 + edHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("elheader"))
src = s1 + elHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("belheader"))
src = s1 + belHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("extheader"))
src = s1 + extHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("mmheader"))
src = s1 + mmHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("cdheader"))
src = s1 + cdHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("diheader"))
src = s1 + diHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("ctheader"))
src = s1 + ctHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("ucheader"))
src = s1 + ucHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("rrheader"))
src = s1 + rrHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("drheader"))
src = s1 + drHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("adheader"))
src = s1 + adHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("pdheader"))
src = s1 + pdHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("tdheader"))
src = s1 + tdHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("narrheader"))
src = s1 + narrHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("statheader"))
src = s1 + statHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("ordistheader"))
src = s1 + ordistHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("profilesheader"))
src = s1 + profilesHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("refheader"))
src = s1 + refHeader(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("resourcesheader"))
src = s1 + resourcesHeader(com.length > 1 ? com[1] : null) + s3;
else // src = s1+resourcesHeader(name, com.length > 1 ? com[1] : null)+s3;
if (com[0].equals("txheader"))
src = s1 + txHeader(name, com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("sct-vs-list"))
src = s1 + getSnomedCTVsList() + s3;
else if (com[0].equals("sct-concept-list"))
src = s1 + getSnomedCTConceptList() + s3;
else if (com[0].equals("txheader0"))
src = s1 + (level > 0 ? "" : txHeader(name, com.length > 1 ? com[1] : null)) + s3;
else if (com[0].equals("fmtheader"))
src = s1 + fmtHeader(name, com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("cmpheader"))
src = s1 + cmpHeader(name, com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("dictheader"))
src = s1 + dictHeader(((Bundle) resource).getId().toLowerCase(), com.length > 1 ? com[1] : "") + s3;
else // src = s1+atomHeader(name, com.length > 1 ? com[1] : null)+s3;
if (com[0].equals("codelist"))
src = s1 + codelist((CodeSystem) resource, com.length > 1 ? com[1] : null, false, true, file) + s3;
else if (com[0].equals("codelist-nh"))
src = s1 + codelist((CodeSystem) resource, com.length > 1 ? com[1] : null, false, false, file) + s3;
else if (com[0].equals("linkcodelist"))
src = s1 + codelist((CodeSystem) resource, com.length > 1 ? com[1] : null, true, false, file) + s3;
else if (com[0].equals("toc"))
src = s1 + generateToc() + s3;
else if (com[0].equals("codetoc"))
src = s1 + codetoc(com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("resheader")) {
if (resource != null && resource instanceof StructureDefinition)
src = s1 + resHeader(((StructureDefinition) resource).getId().toLowerCase(), ((StructureDefinition) resource).getId(), com.length > 1 ? com[1] : null) + s3;
else if (rd != null) {
src = s1 + resHeader(rd.getName().toLowerCase(), rd.getName(), com.length > 1 ? com[1] : null) + s3;
} else
src = s1 + s3;
} else if (com[0].equals("aresheader"))
src = s1 + abstractResHeader("document", "Document", com.length > 1 ? com[1] : null) + s3;
else if (com[0].equals("onthispage"))
src = s1 + onThisPage(s2.substring(com[0].length() + 1)) + s3;
else if (com[0].equals("maponthispage"))
src = s1 + mapOnThisPage(null) + s3;
else if (com[0].equals("res-category")) {
even = false;
src = s1 + resCategory(s2.substring(com[0].length() + 1)) + s3;
} else if (com[0].equals("res-item")) {
even = !even;
src = s1 + resItem(com[1], even) + s3;
} else if (com[0].equals("resdesc")) {
src = s1 + resDesc(com[1]) + s3;
} else if (com[0].equals("rescat")) {
src = s1 + resCat(com.length == 1 ? null : s2.substring(7)) + s3;
} else if (com[0].equals("svg"))
src = s1 + svgs.get(com[1]) + s3;
else if (com[0].equals("diagram"))
src = s1 + new SvgGenerator(this, genlevel(level), null, false, file.contains("datatypes"), version).generate(folders.srcDir + com[1], com[2]) + s3;
else if (com[0].equals("file")) {
if (new File(folders.templateDir + com[1] + ".html").exists()) {
src = s1 + TextFile.fileToString(folders.templateDir + com[1] + ".html") + s3;
} else {
src = s1 + TextFile.fileToString(folders.srcDir + com[1] + ".html") + s3;
}
} else if (com[0].equals("v2xref"))
src = s1 + xreferencesForV2(name, com[1]) + s3;
else if (com[0].equals("vs-warning"))
src = s1 + vsWarning((ValueSet) resource) + s3;
else if (com[0].equals("res-status-special"))
src = s1 + vsSpecialStatus((DomainResource) resource) + s3;
else if (com[0].equals("conceptmaplistv2"))
src = s1 + conceptmaplist("http://terminology.hl7.org/ValueSet/v2-" + (name.contains("|") ? name.substring(0, name.indexOf("|")) : name), com[1]) + s3;
else if (com[0].equals("conceptmaplistv3"))
src = s1 + conceptmaplist("http://terminology.hl7.org/ValueSet/v3-" + (name.contains("|") ? name.substring(0, name.indexOf("|")) : name), com[1]) + s3;
else if (com[0].equals("conceptmaplistvs")) {
ValueSet vs = (ValueSet) resource;
String ref;
if (vs == null) {
ref = "http://hl7.org/fhir/ValueSet/" + Utilities.fileTitle(file);
} else {
ref = vs.getUrl();
}
src = s1 + conceptmaplist(ref, com[1]) + s3;
} else if (com[0].equals("settitle")) {
workingTitle = s2.substring(9).replace("{", "<%").replace("}", "%>");
src = s1 + s3;
} else if (com[0].equals("igregistries")) {
src = s1 + igRegistryList(com[1], com[2]) + s3;
} else if (com[0].equals("dtmappings")) {
src = s1 + genDataTypeMappings(com[1]) + s3;
} else if (com[0].equals("dtusage")) {
src = s1 + genDataTypeUsage(com[1]) + s3;
} else if (com[0].equals("v3xref")) {
src = s1 + xreferencesForV3(name) + s3;
} else if (com[0].equals("setlevel")) {
level = Integer.parseInt(com[1]);
src = s1 + s3;
} else if (com[0].equals("w5")) {
src = s1 + genW5("true".equals(com[1])) + s3;
} else if (com[0].equals("res-ref-list")) {
src = s1 + genResRefList(com[1]) + s3;
} else if (com[0].equals("sclist")) {
src = s1 + genScList(com[1]) + s3;
} else if (com[0].equals("xcm")) {
src = s1 + getXcm(com[1]) + s3;
} else if (com[0].equals("xcmchk")) {
src = s1 + getXcmChk(com[1]) + s3;
} else if (com[0].equals("sstatus")) {
if (com.length == 1) {
StandardsStatus ss = ToolingExtensions.getStandardsStatus((DomainResource) resource);
if (ss == null)
ss = StandardsStatus.INFORMATIVE;
if (ss == StandardsStatus.NORMATIVE && ToolingExtensions.hasExtension((DomainResource) resource, ToolingExtensions.EXT_NORMATIVE_VERSION))
src = s1 + "<a href=\"" + genlevel(level) + "versions.html#std-process\">" + ss.toDisplay() + "</a> (from v" + ToolingExtensions.readStringExtension((DomainResource) resource, ToolingExtensions.EXT_NORMATIVE_VERSION) + ")" + s3;
else
src = s1 + "<a href=\"" + genlevel(level) + "versions.html#std-process\">" + ss.toDisplay() + "</a>" + s3;
} else
src = s1 + getStandardsStatus(com[1]) + s3;
} else if (com[0].equals("wg")) {
src = s1 + getWgLink(file, wg == null && com.length > 1 ? wg(com[1]) : wg) + s3;
} else if (com[0].equals("wgt")) {
src = s1 + getWgTitle(wg == null && com.length > 1 ? wg(com[1]) : wg) + s3;
} else if (com[0].equals("ig.registry")) {
src = s1 + buildIgRegistry(ig, com[1]) + s3;
} else if (com[0].equals("search-link")) {
src = s1 + searchLink(s2) + s3;
} else if (com[0].equals("search-footer")) {
src = s1 + searchFooter(level) + s3;
} else if (com[0].equals("search-header")) {
src = s1 + searchHeader(level) + s3;
} else if (com[0].equals("profileheader")) {
src = s1 + profileHeader(((StructureDefinition) resource).getId().toLowerCase(), com[1], hasExamples((StructureDefinition) resource, ig)) + s3;
} else if (com[0].equals("resource-table")) {
src = s1 + genResourceTable(definitions.getResourceByName(com[1]), genlevel(level)) + s3;
} else if (com[0].equals("dtextras")) {
src = s1 + produceDataTypeExtras(com[1], false) + s3;
} else if (com[0].equals("dtextensions")) {
src = s1 + produceDataTypeExtras(com[1], true) + s3;
} else if (com[0].equals("tx")) {
src = s1 + produceDataTypeTx(com[1]) + s3;
} else if (com[0].equals("extension-diff")) {
StructureDefinition ed = workerContext.fetchResource(StructureDefinition.class, com[1]);
src = s1 + generateExtensionTable(ed, "extension-" + com[1], "false", genlevel(level)) + s3;
} else if (com[0].equals("profile-diff")) {
ConstraintStructure p = definitions.findProfile(com[1]);
src = s1 + generateProfileStructureTable(p, true, com[1] + ".html", com[1], genlevel(level)) + s3;
} else if (com[0].equals("example")) {
String[] parts = com[1].split("\\/");
Example e = findExample(parts[0], parts[1]);
src = s1 + genExample(e, com.length > 2 ? Integer.parseInt(com[2]) : 0, genlevel(level)) + s3;
} else if (com[0].equals("r3r4transform")) {
src = s1 + dtR3R4Transform(com[1]) + s3;
} else if (com[0].equals("fmm-style")) {
String fmm = resource == null ? "N/A" : ToolingExtensions.readStringExtension((DomainResource) resource, ToolingExtensions.EXT_FMM_LEVEL);
StandardsStatus ss = ToolingExtensions.getStandardsStatus((DomainResource) resource);
src = s1 + fmmBarColorStyle(ss, fmm) + s3;
} else if (com[0].equals("fmm")) {
String fmm = resource == null || !(resource instanceof CanonicalResource) ? getFmm(com[1], false) : ToolingExtensions.readStringExtension((DomainResource) resource, ToolingExtensions.EXT_FMM_LEVEL);
StandardsStatus ss = ToolingExtensions.getStandardsStatus((DomainResource) resource);
if (StandardsStatus.EXTERNAL == ss)
src = s1 + getFmmFromlevel(genlevel(level), "N/A") + s3;
else if (StandardsStatus.NORMATIVE == ss)
src = s1 + getFmmFromlevel(genlevel(level), "<a href=\"" + genlevel(level) + "versions.html#std-process\">N</a>") + s3;
else
src = s1 + getFmmFromlevel(genlevel(level), fmm) + s3;
} else if (com[0].equals("fmmna")) {
String fmm = "N/A";
src = s1 + getFmmFromlevel(genlevel(level), fmm) + s3;
} else if (com[0].equals("mostlynormative")) {
String p = null;
String wt = workingTitle;
if (com.length >= 3) {
if (!com[2].equals("%check"))
p = com[2];
else if (StandardsStatus.NORMATIVE == ToolingExtensions.getStandardsStatus((DomainResource) resource)) {
p = resource.getUserString("ballot.package");
wt = ((CanonicalResource) resource).fhirType() + " " + ((CanonicalResource) resource).present();
}
}
src = s1 + (p == null ? "" : getMostlyNormativeNote(genlevel(level), p, com[1], wt, file)) + s3;
} else if (com[0].equals("mixednormative")) {
String p = null;
String wt = workingTitle;
if (com.length >= 3) {
if (!com[2].equals("%check"))
p = com[2];
else if (StandardsStatus.NORMATIVE == ToolingExtensions.getStandardsStatus((DomainResource) resource)) {
p = resource.getUserString("ballot.package");
wt = ((CanonicalResource) resource).fhirType() + " " + ((CanonicalResource) resource).present();
}
}
src = s1 + (p == null ? "" : getMixedNormativeNote(genlevel(level), p, com[1], wt, file)) + s3;
} else if (com[0].equals("normative")) {
String p = object instanceof Object ? rd.getNormativePackage() : null;
String wt = object instanceof Object ? rd.getName() + " Operation " + ((Operation) object).getName() : workingTitle;
if (com.length >= 3) {
if (!com[2].equals("%check"))
p = com[2];
else if (StandardsStatus.NORMATIVE == ToolingExtensions.getStandardsStatus((DomainResource) resource)) {
p = resource.getUserString("ballot.package");
wt = ((CanonicalResource) resource).fhirType() + " " + ((CanonicalResource) resource).present();
}
}
src = s1 + (p == null && com.length != 2 ? "" : getNormativeNote(genlevel(level), p, com[1], wt, file)) + s3;
} else if (com[0].equals("normative-op")) {
String p = rd.getNormativePackage();
String wt = rd.getName() + " Operation " + ((Operation) object).getName();
StandardsStatus st = ((Operation) object).getStandardsStatus();
if (st == null)
st = ToolingExtensions.getStandardsStatus((DomainResource) resource);
src = s1 + (st == StandardsStatus.NORMATIVE ? getNormativeNote(genlevel(level), p, com[1], wt, file) : "") + s3;
} else if (com[0].equals("fmmshort")) {
String fmm = resource == null || !(resource instanceof CanonicalResource) ? getFmm(com[1], true) : ToolingExtensions.readStringExtension((DomainResource) resource, ToolingExtensions.EXT_FMM_LEVEL);
String npr = resource == null || !(resource instanceof CanonicalResource) ? getNormativePackageRef(com[1]) : "";
src = s1 + getFmmShortFromlevel(genlevel(level), fmm) + npr + s3;
} else if (com[0].equals("normative-pages")) {
src = s1 + getNormativeList(genlevel(level), com[1]) + s3;
} else if (s2.startsWith("search-additions\r\n")) {
searchAdditions = s2.substring(16).trim();
src = s1 + s3;
} else if (com[0].equals("complinks")) {
src = s1 + (rd == null ? "" : getCompLinks(rd, com.length > 1 ? com[1] : null)) + s3;
} else if (com[0].equals("diff")) {
String p = com[1];
String pd = p.contains("#") ? p.substring(0, p.indexOf("#")) : p;
String t = s2.substring(com[0].length() + com[1].length() + 2);
src = s1 + "<a href=\"" + p + "\">" + t + "</a> <a href=\"http://services.w3.org/htmldiff?doc1=http%3A%2F%2Fhl7.org%2Ffhir%2F2018May%2F" + pd + "&doc2=http%3A%2F%2Fbuild.fhir.org%2F" + pd + "\" no-external=\"true\" style=\"border: 1px solid lightgrey; white-space: nowrap; background-color: #EDFDFE; padding: 2px 2px 2px 2px\">ΔB</a>" + s3;
} else if (com[0].equals("diffx")) {
String p1 = com[1];
String pd = p1.contains("#") ? p1.substring(0, p1.indexOf("#")) : p1;
String p2 = com[2];
String t = s2.substring(com[0].length() + com[1].length() + 2);
src = s1 + "<a href=\"" + p1 + "\">" + t + "</a> <a href=\"http://services.w3.org/htmldiff?doc1=http%3A%2F%2Fhl7.org%2Ffhir%2F2018May%2F" + p2 + "&doc2=http%3A%2F%2Fbuild.fhir.org%2F" + pd + "\" no-external=\"true\" style=\"border: 1px solid lightgrey; white-space: nowrap; background-color: #EDFDFE; padding: 2px 2px 2px 2px\">ΔB</a>" + s3;
} else if (com[0].equals("StandardsStatus")) {
src = s1 + getStandardsStatusNote(genlevel(level), com[1], com[2], com.length == 4 ? com[3] : null) + s3;
} else if (com[0].equals("circular-references")) {
src = s1 + buildCircularReferenceList(com[1].equals("null") ? null : Boolean.valueOf(com[1])) + s3;
} else if (com[0].equals("shortparameterlist")) {
src = s1 + buildShortParameterList(com[1]) + s3;
} else if (com[0].equals("op-example-link")) {
src = s1 + buildOpReferenceList(com[1]) + s3;
} else if (com[0].equals("pattern-impls")) {
src = s1 + buildPatternList(com[1]) + s3;
} else if (com[0].equals("diff-analysis")) {
if ("*".equals(com[1])) {
updateDiffEngineDefinitions();
src = s1 + diffEngine.getDiffAsHtml(this) + s3;
} else {
StructureDefinition sd = workerContext.fetchTypeDefinition(com[1]);
if (sd == null)
throw new Exception("diff-analysis not found: " + com[1]);
src = s1 + diffEngine.getDiffAsHtml(this, sd) + s3;
}
} else if (com.length != 1)
throw new Exception("Instruction <%" + s2 + "%> not understood parsing page " + file);
else if (com[0].equals("pageheader"))
src = s1 + pageHeader(name.toUpperCase().substring(0, 1) + name.substring(1)) + s3;
else if (com[0].equals("newheader"))
src = s1 + TextFile.fileToString(folders.srcDir + "newheader.html") + s3;
else if (com[0].equals("newheader1"))
src = s1 + TextFile.fileToString(folders.srcDir + "newheader1.html") + s3;
else if (com[0].equals("footer"))
src = s1 + TextFile.fileToString(folders.srcDir + "footer.html") + s3;
else if (com[0].equals("newfooter"))
src = s1 + TextFile.fileToString(folders.srcDir + "newfooter.html") + s3;
else if (com[0].equals("footer1"))
src = s1 + TextFile.fileToString(folders.srcDir + "footer1.html") + s3;
else if (com[0].equals("footer2"))
src = s1 + TextFile.fileToString(folders.srcDir + "footer2.html") + s3;
else if (com[0].equals("footer3"))
src = s1 + TextFile.fileToString(folders.srcDir + "footer3.html") + s3;
else if (com[0].equals("title"))
src = s1 + (workingTitle == null ? Utilities.escapeXml(name.toUpperCase().substring(0, 1) + name.substring(1)) : workingTitle) + s3;
else if (com[0].equals("xtitle"))
src = s1 + Utilities.escapeXml(name.toUpperCase().substring(0, 1) + name.substring(1)) + s3;
else if (com[0].equals("name"))
src = s1 + name + s3;
else if (com[0].equals("name.tail"))
src = s1 + fileTail(name) + s3;
else if (com[0].equals("piperesources"))
src = s1 + pipeResources() + s3;
else if (com[0].equals("enteredInErrorTable"))
src = s1 + enteredInErrorTable() + s3;
else if (com[0].equals("canonicalname"))
src = s1 + makeCanonical(name) + s3;
else if (com[0].equals("prettyname"))
src = s1 + makePretty(name) + s3;
else if (com[0].equals("jsonldname"))
src = s1 + makeJsonld(name) + s3;
else if (com[0].equals("version"))
src = s1 + version + s3;
else if (com[0].equals("gendate"))
src = s1 + Config.DATE_FORMAT().format(new Date()) + s3;
else if (com[0].equals("maindiv"))
src = s1 + "<div class=\"content\">" + s3;
else if (com[0].equals("/maindiv"))
src = s1 + "</div>" + s3;
else if (com[0].equals("mappings-table"))
src = s1 + genMappingsTable() + s3;
else if (com[0].equals("id"))
src = s1 + (name.contains("|") ? name.substring(0, name.indexOf("|")) : name) + s3;
else if (com[0].equals("ver"))
src = s1 + (name.contains("|") ? name.substring(name.indexOf("|") + 1) : "??") + s3;
else if (com[0].equals("events"))
src = s1 + getEventsTable(pagePath) + s3;
else if (com[0].equals("resourcecodes"))
src = s1 + genResCodes() + s3;
else if (com[0].equals("datatypecodes"))
src = s1 + genDTCodes() + s3;
else if (com[0].equals("allparams"))
src = s1 + allParamlist() + s3;
else // src = s1 + genBindingsTable() + s3;
if (com[0].equals("codeslist"))
src = s1 + genCodeSystemsTable() + s3;
else if (com[0].equals("valuesetslist"))
src = s1 + genValueSetsTable(ig) + s3;
else if (com[0].equals("namespacelist"))
src = s1 + genNSList() + s3;
else if (com[0].equals("extensionslist"))
src = s1 + genExtensionsTable() + s3;
else if (com[0].equals("igvaluesetslist"))
src = s1 + genIGValueSetsTable() + s3;
else if (com[0].equals("conceptmapslist"))
src = s1 + genConceptMapsTable() + s3;
else // src = s1 + genBindingTable(false) + s3;
if (com[0].equals("resimplall"))
src = s1 + genResImplList() + s3;
else if (com[0].equals("txurl"))
src = s1 + "http://hl7.org/fhir/" + Utilities.fileTitle(file) + s3;
else if (com[0].equals("vstxurl"))
src = s1 + "http://hl7.org/fhir/ValueSet/" + Utilities.fileTitle(file) + s3;
else if (com[0].equals("csurl")) {
if (resource instanceof CodeSystem)
src = s1 + ((CodeSystem) resource).getUrl() + s3;
else {
CodeSystem cs = (CodeSystem) ((ValueSet) resource).getUserData("cs");
src = s1 + (cs == null ? "" : cs.getUrl()) + s3;
}
} else if (com[0].equals("vsurl")) {
if (resource == null)
src = s1 + s3;
else if (resource instanceof CodeSystem)
src = s1 + ((CodeSystem) resource).getUrl() + s3;
else
src = s1 + ((ValueSet) resource).getUrl() + s3;
} else if (com[0].equals("txdef"))
src = s1 + generateCodeDefinition(Utilities.fileTitle(file)) + s3;
else if (com[0].equals("vsdef"))
if (resource instanceof CodeSystem)
src = s1 + processMarkdown("vsdef", ((CodeSystem) resource).getDescription(), genlevel(level)) + s3;
else
src = s1 + processMarkdown("vsdef", ((ValueSet) resource).getDescription(), genlevel(level)) + s3;
else if (com[0].equals("txoid"))
src = s1 + generateOID((CodeSystem) resource) + s3;
else if (com[0].equals("vsoid"))
src = s1 + generateOID((ValueSet) resource) + s3;
else if (com[0].equals("txname"))
src = s1 + Utilities.fileTitle(file) + s3;
else if (com[0].equals("vsname"))
if (resource instanceof CodeSystem)
src = s1 + ((CodeSystem) resource).present() + s3;
else
src = s1 + ((ValueSet) resource).present() + s3;
else if (com[0].equals("vsnamed"))
if (resource instanceof CodeSystem)
src = s1 + ((CodeSystem) resource).getName() + s3;
else
src = s1 + ((ValueSet) resource).getName() + s3;
else if (com[0].equals("vstitle"))
if (resource instanceof CodeSystem)
src = s1 + checkTitle(((CodeSystem) resource).getTitle()) + s3;
else
src = s1 + checkTitle(((ValueSet) resource).getTitle()) + s3;
else if (com[0].equals("vsver"))
if (resource instanceof CodeSystem)
src = s1 + ((CodeSystem) resource).getVersion() + s3;
else
src = s1 + ((ValueSet) resource).getVersion() + s3;
else if (com[0].equals("vsref")) {
src = s1 + Utilities.fileTitle((String) resource.getUserData("filename")) + s3;
} else if (com[0].equals("vsdesc"))
src = s1 + (resource != null ? new XhtmlComposer(XhtmlComposer.HTML).compose(((ValueSet) resource).getText().getDiv()) : generateVSDesc(Utilities.fileTitle(file))) + s3;
else if (com[0].equals("txusage"))
src = s1 + generateValueSetUsage((ValueSet) resource, genlevel(level), true) + s3;
else if (com[0].equals("vsusage"))
src = s1 + generateValueSetUsage((ValueSet) resource, genlevel(level), true) + s3;
else if (com[0].equals("csusage"))
src = s1 + generateCSUsage((CodeSystem) resource, genlevel(level)) + s3;
else if (com[0].equals("vssummary"))
src = s1 + "todo" + s3;
else if (com[0].equals("compartmentlist"))
src = s1 + compartmentlist() + s3;
else if (com[0].equals("qa"))
src = s1 + qa.report(this, validationErrors) + s3;
else if (com[0].equals("comp-title"))
src = s1 + compTitle(name) + s3;
else if (com[0].equals("comp-name"))
src = s1 + compName(name) + s3;
else if (com[0].equals("comp-desc"))
src = s1 + compDesc(name) + s3;
else if (com[0].equals("comp-uri"))
src = s1 + compUri(name) + s3;
else if (com[0].equals("comp-identity"))
src = s1 + compIdentity(name) + s3;
else if (com[0].equals("comp-membership"))
src = s1 + compMembership(name) + s3;
else if (com[0].equals("comp-resources"))
src = s1 + compResourceMap(name) + s3;
else if (com[0].equals("breadcrumb"))
src = s1 + breadCrumbManager.make(name) + s3;
else if (com[0].equals("navlist"))
src = s1 + breadCrumbManager.navlist(name, genlevel(level)) + s3;
else if (com[0].equals("breadcrumblist")) {
if (object instanceof Operation)
src = s1 + ((ig == null || ig.isCore()) ? breadCrumbManager.makelist(rd.getName().toLowerCase(), type, genlevel(level), crumbTitle) : ig.makeList(name, type, genlevel(level), crumbTitle)) + s3;
else
src = s1 + ((ig == null || ig.isCore()) ? breadCrumbManager.makelist(name, type, genlevel(level), crumbTitle) : ig.makeList(name, type, genlevel(level), crumbTitle)) + s3;
} else if (com[0].equals("year"))
src = s1 + new SimpleDateFormat("yyyy").format(new Date()) + s3;
else if (com[0].equals("buildId"))
src = s1 + buildId + s3;
else if (com[0].equals("pub-type"))
src = s1 + publicationType + s3;
else if (com[0].equals("pub-notice"))
src = s1 + publicationNotice + s3;
else if (com[0].equals("vssource"))
if (resource instanceof CodeSystem)
src = s1 + csSource((CodeSystem) resource) + s3;
else
src = s1 + vsSource((ValueSet) resource) + s3;
else if (com[0].equals("vsxref"))
src = s1 + xreferencesForFhir(name) + s3;
else if (com[0].equals("vsexpansion"))
src = s1 + expandValueSet(Utilities.fileTitle(file), resource == null ? null : ((ValueSet) resource), genlevel(level)) + s3;
else if (com[0].equals("vscld"))
src = s1 + vsCLD(Utilities.fileTitle(file), resource == null ? null : ((ValueSet) resource), genlevel(level)) + s3;
else if (com[0].equals("cs-content"))
src = s1 + csContent(Utilities.fileTitle(file), ((CodeSystem) resource), genlevel(level)) + s3;
else if (com[0].equals("vsexpansionig"))
src = s1 + expandValueSetIG((ValueSet) resource, true) + s3;
else if (com[0].equals("level"))
src = s1 + genlevel(level) + s3;
else if (com[0].equals("archive"))
src = s1 + makeArchives() + s3;
else if (com[0].equals("pagepath"))
src = s1 + pagePath + s3;
else if (com[0].equals("rellink")) {
if (!pagePath.contains(".html"))
throw new Error("Invalid link: " + pagePath + " at " + workingTitle);
src = s1 + Utilities.URLEncode(pagePath) + s3;
} else if (com[0].equals("baseURL"))
src = s1 + Utilities.URLEncode(baseURL) + s3;
else if (com[0].equals("baseURLn"))
src = s1 + Utilities.appendForwardSlash(baseURL) + s3;
else if (com[0].equals("profilelist"))
src = s1 + genProfilelist() + s3;
else if (com[0].equals("igprofileslist"))
src = s1 + genIGProfilelist() + s3;
else if (com[0].equals("operationslist"))
src = s1 + genOperationList() + s3;
else if (com[0].equals("example.profile.link"))
src = s1 + genExampleProfileLink(resource) + s3;
else if (com[0].equals("id_regex"))
src = s1 + FormatUtilities.ID_REGEX + s3;
else if (com[0].equals("resourcecount"))
src = s1 + Integer.toString(definitions.getResources().size()) + s3;
else if (others != null && others.containsKey(com[0]))
src = s1 + others.get(com[0]) + s3;
else if (com[0].equals("status-codes"))
src = s1 + genStatusCodes() + s3;
else if (com[0].equals("dictionary.name")) {
String n = name.contains(File.separator) ? name.substring(name.lastIndexOf(File.separator) + 1) : name;
src = s1 + definitions.getDictionaries().get(n).getName() + s3;
// } else if (com[0].equals("dictionary.view"))
// src = s1 + ResourceUtilities.representDataElementCollection(this.workerContext, (Bundle) resource, true, "hspc-qnlab-de") + s3;
} else if (com[0].equals("search-param-pack") && resource instanceof SearchParameter)
src = s1 + ((SearchParameter) resource).getUserData("pack") + s3;
else if (com[0].equals("search-param-name") && resource instanceof SearchParameter)
src = s1 + ((SearchParameter) resource).getName() + s3;
else if (com[0].equals("search-param-url") && resource instanceof SearchParameter)
src = s1 + ((SearchParameter) resource).getUrl() + s3;
else if (com[0].equals("search-param-type") && resource instanceof SearchParameter)
src = s1 + ((SearchParameter) resource).getType().toCode() + s3;
else if (com[0].equals("search-param-definition") && resource instanceof SearchParameter)
src = s1 + ((SearchParameter) resource).getDescription() + s3;
else if (com[0].equals("search-param-paths") && resource instanceof SearchParameter)
src = s1 + (((SearchParameter) resource).hasXpath() ? ((SearchParameter) resource).getXpath() : "") + s3;
else if (com[0].equals("search-param-targets") && resource instanceof SearchParameter) {
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder();
for (CodeType t : ((SearchParameter) resource).getTarget()) b.append(t.asStringValue());
src = s1 + b.toString() + s3;
} else if (com[0].startsWith("!"))
src = s1 + s3;
else if (com[0].equals("txsummary"))
if (resource instanceof CodeSystem)
src = s1 + txsummary((CodeSystem) resource, genlevel(level)) + s3;
else
src = s1 + txsummary((ValueSet) resource, genlevel(level)) + s3;
else if (com[0].equals("identifierlist"))
src = s1 + genIdentifierList() + s3;
else if (com[0].equals("allsearchparams"))
src = s1 + genAllSearchParams() + s3;
else if (com[0].equals("internalsystemlist"))
src = s1 + genCSList() + s3;
else if (com[0].equals("internalsystemlistx"))
src = s1 + genCSListX() + s3;
else if (com[0].equals("example-usage"))
src = s1 + s3;
else if (com[0].equals("ig.title"))
src = s1 + ig.getName() + s3;
else if (com[0].equals("ig.wglink"))
src = s1 + igLink(ig) + s3;
else if (com[0].equals("ig.wgt"))
src = s1 + ig.getCommittee() + s3;
else if (com[0].equals("ig.fmm"))
src = s1 + getFmmFromlevel(genlevel(level), ig.getFmm()) + s3;
else if (com[0].equals("ig.ballot"))
src = s1 + ig.getBallot() + s3;
else if (com[0].equals("operations")) {
Profile p = (Profile) object;
src = s1 + genOperations(p.getOperations(), p.getTitle(), p.getId(), false, null, "../", "") + s3;
} else if (com[0].equals("operations-summary"))
src = s1 + genOperationsSummary(((Profile) object).getOperations(), rd) + s3;
else if (com[0].equals("ig.opcount"))
src = s1 + genOpCount(((Profile) object).getOperations()) + s3;
else if (com[0].equals("ig-toc"))
src = s1 + genIgToc(ig) + s3;
else if (com[0].equals("fhir-path"))
src = s1 + "../" + s3;
else if (com[0].equals("vscommittee"))
src = s1 + vscommittee(resource) + s3;
else if (com[0].equals("modifier-list"))
src = s1 + genModifierList() + s3;
else if (com[0].equals("missing-element-list"))
src = s1 + genMeaningWhenMissingList() + s3;
else if (com[0].equals("wgreport"))
src = s1 + genWGReport() + s3;
else if (com[0].equals("r3maps-summary"))
src = s1 + genR3MapsSummary() + s3;
else if (com[0].equals("wg")) {
src = s1 + (wg == null || !definitions.getWorkgroups().containsKey(wg) ? "(No assigned work group) (" + wg + " (1))" : "<a _target=\"blank\" href=\"" + definitions.getWorkgroups().get(wg).getUrl() + "\">" + definitions.getWorkgroups().get(wg).getName() + "</a> Work Group") + s3;
} else if (com[0].equals("profile-context"))
src = s1 + getProfileContext((CanonicalResource) resource, genlevel(level)) + s3;
else if (com[0].equals("res-list-maturity"))
src = s1 + buildResListByMaturity() + s3;
else if (com[0].equals("res-list-security"))
src = s1 + buildResListBySecurity() + s3;
else if (com[0].equals("res-list-fmg"))
src = s1 + buildResListByFMG() + s3;
else if (com[0].equals("res-list-ballot"))
src = s1 + buildResListByBallot() + s3;
else if (com[0].equals("res-list-committee"))
src = s1 + buildResListByCommittee() + s3;
else if (com[0].equals("wglist"))
src = s1 + buildCommitteeList() + s3;
else if (com[0].equals("opName"))
src = s1 + ((Operation) object).getName() + s3;
else if (com[0].equals("rName"))
src = s1 + rd.getName() + s3;
else if (com[0].equals("operation-summary"))
src = s1 + ((Operation) object).getName() + " summary" + s3;
else if (com[0].equals("extension-type-list"))
src = s1 + genExtensionTypeList() + s3;
else if (com[0].equals("best-practice-list"))
src = s1 + genBestPracticeList() + s3;
else if (com[0].equals("wildcard-type-list"))
src = s1 + genWildcardTypeList() + s3;
else if (com[0].startsWith("GF#"))
src = s1 + "<a href=\"https://gforge.hl7.org/gf/project/fhir/tracker/?action=TrackerItemEdit&tracker_item_id=" + com[0].substring(3) + "\">" + com[0] + "</a>" + s3;
else if (com[0].startsWith("GFT#"))
src = s1 + "<a href=\"https://gforge.hl7.org/gf/project/fhir/tracker/?action=TrackerItemEdit&tracker_item_id=" + com[0].substring(3) + "\">Task</a>" + s3;
else if (com[0].equals("operation")) {
Operation op = (Operation) object;
src = s1 + genOperation(op, rd.getName(), rd.getName().toLowerCase(), false, rd.getStatus(), genlevel(level), rd.getNormativePackage()) + s3;
} else if (com[0].equals("past-narrative-link")) {
if (object == null || !(object instanceof Boolean))
src = s1 + s3;
else
src = s1 + "<p><a href=\"#DomainResource.text.div-end\">Jump past Narrative</a></p>" + s3;
} else if (others != null && others.containsKey(s2))
src = s1 + others.get(s2) + s3;
else if (com[0].equals("canonical-resources"))
src = s1 + listCanonicalResources() + s3;
else if (com[0].equals("metadata-resources"))
src = s1 + listCanonicalResources() + s3;
else if (com[0].equals("special-search-parameters")) {
src = s1 + listSpecialParameters() + s3;
} else if (com[0].equals("diff-links-all")) {
src = s1 + genDiffLinks() + s3;
} else if (com[0].equals("res-type-count")) {
src = s1 + definitions.getResources().size() + s3;
} else if (com[0].equals("patterns-analysis")) {
src = s1 + patternFinder.generateReport() + s3;
} else if (macros.containsKey(com[0])) {
src = s1 + macros.get(com[0]) + s3;
} else
throw new Exception("Instruction <%" + s2 + "%> not understood parsing page " + file);
}
return src;
}
use of org.hl7.fhir.definitions.model.ImplementationGuideDefn in project kindling by HL7.
the class PageProcessor method genExtensionRow.
private void genExtensionRow(ImplementationGuideDefn ig, StringBuilder s, StructureDefinition ed) throws Exception {
s.append("<tr>");
s.append("<td><a href=\"" + ed.getUserString("path") + "\" title=\"" + Utilities.escapeXml(ed.getDescription()) + "\">" + ed.getId() + "</a></td>");
s.append("<td>" + displayExtensionCardinality(ed) + "</td>");
s.append("<td>" + determineExtensionType(ed) + "</td>");
s.append("<td>");
boolean first = true;
for (StructureDefinitionContextComponent ec : ed.getContext()) {
if (first)
first = false;
else
s.append(",<br/> ");
if (ec.getType() == ExtensionContextType.ELEMENT) {
String ref = Utilities.oidRoot(ec.getExpression());
if (ref.startsWith("@"))
ref = ref.substring(1);
if (definitions.hasElementDefn(ref))
s.append("<a href=\"" + definitions.getSrcFile(ref) + ".html#" + Utilities.oidRoot(ec.getExpression()) + "\">" + ec.getExpression() + "</a>");
else if (definitions.hasResource(ref))
s.append("<a href=\"" + ref.toLowerCase() + ".html\">" + ec.getExpression() + "</a>");
else
s.append(ec.getExpression());
} else if (ec.getType() == ExtensionContextType.FHIRPATH) {
s.append(Utilities.escapeXml(ec.getExpression()));
} else
throw new Error("Not done yet");
}
s.append("</td>");
String fmm = ToolingExtensions.readStringExtension(ed, ToolingExtensions.EXT_FMM_LEVEL);
s.append("<td>" + (Utilities.noString(fmm) ? "0" : fmm) + "</td>");
// s.append("<td><a href=\"extension-"+ed.getId().toLowerCase()+ ".xml.html\">XML</a></td>");
// s.append("<td><a href=\"extension-"+ed.getId().toLowerCase()+ ".json.html\">JSON</a></td>");
s.append("</tr>");
}
Aggregations