use of org.hl7.fhir.dstu2.model.SearchParameter in project kindling by HL7.
the class Publisher method buildSearchDefinition.
private void buildSearchDefinition(ResourceDefn rd, SearchParameterDefn spd) throws Exception {
StructureDefinition p = new StructureDefinition();
p.setFhirVersion(page.getVersion());
p.setKind(StructureDefinitionKind.RESOURCE);
p.setAbstract(true);
p.setPublisher("Health Level Seven International (" + rd.getWg() + ")");
p.setName(rd.getName());
p.setVersion(page.getVersion().toCode());
p.setType(rd.getName());
p.addContact().addTelecom().setSystem(ContactPointSystem.URL).setValue("http://hl7.org/fhir");
SearchParameter sp = new ProfileGenerator(page.getDefinitions(), page.getWorkerContext(), page, page.getGenDate(), page.getVersion(), dataElements, fpUsages, page.getFolders().rootDir, page.getUml(), page.getRc()).makeSearchParam(p, rd.getName() + "-" + spd.getCode(), rd.getName(), spd, rd);
spd.setResource(sp);
}
use of org.hl7.fhir.dstu2.model.SearchParameter in project kindling by HL7.
the class Publisher method makeSearchParam.
private CapabilityStatementRestResourceSearchParamComponent makeSearchParam(String name, SearchParamType type, String id, String doco) throws Exception {
CapabilityStatementRestResourceSearchParamComponent result = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
result.setName(name);
result.setDefinition("http://hl7.org/fhir/SearchParameter/" + id);
result.setType(type);
result.setDocumentation(doco);
return result;
}
use of org.hl7.fhir.dstu2.model.SearchParameter 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.dstu2.model.SearchParameter in project kindling by HL7.
the class ExampleInspector method fetch.
@Override
public Element fetch(IResourceValidator validator, Object appContext, String url) throws IOException, FHIRException {
String[] parts = url.split("\\/");
if (parts.length == 2 && definitions.hasResource(parts[0])) {
ResourceDefn r = definitions.getResourceByName(parts[0]);
for (Example e : r.getExamples()) {
if (e.getElement() == null && e.hasXml()) {
e.setElement(new org.hl7.fhir.r5.elementmodel.XmlParser(context).parse(e.getXml()));
if (e.getElement().getProperty().getStructure().getBaseDefinition().contains("MetadataResource")) {
String urle = e.getElement().getChildValue("url");
String v = e.getElement().getChildValue("url");
if (urle != null && urle.startsWith("http://hl7.org/fhir") && !version.toCode().equals(v)) {
e.getElement().setChildValue("version", version.toCode());
}
}
}
if (e.getElement() != null) {
if (e.getElement().fhirType().equals("Bundle")) {
for (Base b : e.getElement().listChildrenByName("entry")) {
if (b.getChildByName("resource").hasValues()) {
Element res = (Element) b.getChildByName("resource").getValues().get(0);
if (res.fhirType().equals(parts[0]) && parts[1].equals(res.getChildValue("id"))) {
return res;
}
}
}
} else if (e.getElement().fhirType().equals(parts[0]) && e.getId().equals(parts[1])) {
return e.getElement();
}
}
}
try {
if (parts[0].equals("StructureDefinition"))
return new ObjectConverter(context).convert(context.fetchResourceWithException(StructureDefinition.class, "http://hl7.org/fhir/" + parts[0] + "/" + parts[1]));
if (parts[0].equals("OperationDefinition"))
return new ObjectConverter(context).convert(context.fetchResourceWithException(OperationDefinition.class, "http://hl7.org/fhir/" + parts[0] + "/" + parts[1]));
if (parts[0].equals("SearchParameter"))
return new ObjectConverter(context).convert(context.fetchResourceWithException(SearchParameter.class, "http://hl7.org/fhir/" + parts[0] + "/" + parts[1]));
if (parts[0].equals("ValueSet"))
return new ObjectConverter(context).convert(context.fetchResourceWithException(ValueSet.class, "http://hl7.org/fhir/" + parts[0] + "/" + parts[1]));
if (parts[0].equals("CodeSystem"))
return new ObjectConverter(context).convert(context.fetchResourceWithException(CodeSystem.class, "http://hl7.org/fhir/" + parts[0] + "/" + parts[1]));
} catch (Exception e) {
return null;
}
return null;
} else
return null;
}
use of org.hl7.fhir.dstu2.model.SearchParameter in project kindling by HL7.
the class OldSpreadsheetParser method readSearchParams.
/* for profiles that have a "search" tab not tied to a structure */
private void readSearchParams(Profile pack, Sheet sheet, String prefix) throws Exception {
for (int row = 0; row < sheet.rows.size(); row++) {
if (!sheet.hasColumn(row, "Name"))
throw new Exception("Search Param has no name " + getLocation(row));
String n = sheet.getColumn(row, "Name");
if (!n.startsWith("!")) {
SearchParameter sp = new SearchParameter();
if (!sheet.hasColumn(row, "Type"))
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " has no type " + getLocation(row));
if (n.endsWith("-before") || n.endsWith("-after"))
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " includes relative time " + getLocation(row));
// if (!n.toLowerCase().equals(n))
// throw new Exception("Search Param "+pack.getTitle()+"/"+n+" must be all lowercase "+ getLocation(row));
sp.setVersion(version.toCode());
sp.setName(n);
sp.setCode(n);
if (pack.getProfiles().size() > 0 && pack.getProfiles().get(0).getResource() != null) {
sp.setStatus(pack.getProfiles().get(0).getResource().getStatus());
sp.setExperimental(pack.getProfiles().get(0).getResource().getExperimental());
} else {
// we just guess
sp.setStatus(PublicationStatus.DRAFT);
sp.setExperimental(true);
}
String d = sheet.getColumn(row, "Description");
sp.setType(SearchParamType.fromCode(sheet.getColumn(row, "Type")));
List<String> pn = new ArrayList<String>();
String path = sheet.getColumn(row, "Path");
if (Utilities.noString(path))
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " has no path");
if (!path.contains(".") && !path.startsWith("#"))
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " has an invalid path: " + path);
ResourceDefn root2 = null;
if (!path.startsWith("#")) {
path = path.substring(0, path.indexOf('.'));
if (!pkp.isResource(path))
throw new Exception("Ilegal Search Parameter path " + sheet.getColumn(row, "Path"));
sp.addBase(path);
sp.setId(pack.getId() + "-" + path + "-" + sp.getName());
if (definitions != null) {
// igtodo (and below)
root2 = definitions.getResourceByName(path);
if (root2 == null)
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " has an invalid path (resource not found)");
if (!pkp.isResource(root2.getName()))
throw new Exception("Ilegal Search Parameter path " + sheet.getColumn(row, "Path"));
sp.getBase().clear();
sp.addBase(root2.getName());
sp.setId(pack.getId() + "-" + (root2 == null ? "all" : root2.getName()) + "-" + sp.getName());
}
}
if (!Utilities.noString(sheet.getColumn(row, "Target Types")))
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " has manually specified targets (not allowed)");
if (root2 != null && root2.getSearchParams().containsKey(n))
throw new Exception("Search Param " + root2.getName() + "/" + n + ": duplicate name " + getLocation(row));
if (sp.getType() == SearchParamType.COMPOSITE) {
throw new Exception("not supported");
} else {
String[] pl = sheet.getColumn(row, "Path").split("\\|");
String xp = sheet.getColumn(row, "XPath");
for (String pi : pl) {
String p = pi.trim();
ElementDefn e = null;
if (Utilities.noString(p))
throw new Exception("Search Param " + root2.getName() + "/" + n + ": empty path " + getLocation(row));
if (p.startsWith("#")) {
// root less extension search parameter
StructureDefinition ex = pack.getExtension(prefix + p.substring(1));
if (ex == null)
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " refers to unknown extension '" + p + "' " + getLocation(row));
e = definitions.getElementDefn("Extension");
if (ex.getContext().size() != 1 || ex.getContext().get(0).getType() != ExtensionContextType.ELEMENT)
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " refers to an extension with multiple contexts, not not an element context - not supported '" + p + "' " + getLocation(row));
path = ex.getContext().get(0).getExpression();
if (Utilities.noString(path))
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " has no path");
if (path.contains("."))
path = path.substring(0, path.indexOf('.'));
sp.setId(pack.getId() + "-" + path + "-" + sp.getName());
root2 = definitions.getResourceByName(path);
if (root2 == null)
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " has an invalid path (resource not found)");
if (root2 != null && root2.getSearchParams().containsKey(n))
throw new Exception("Search Param " + root2.getName() + "/" + n + ": duplicate name " + getLocation(row));
sp.setId(pack.getId() + "-" + path + "-" + sp.getName());
pn.add(ex.getContext().get(0).getExpression() + ".extension{" + ex.getUrl() + "}");
} else if (p.contains(".extension{")) {
String url = extractExtensionUrl(p);
// not created yet?
StructureDefinition ex = context.fetchResource(StructureDefinition.class, url);
if (ex == null)
ex = context.getExtensionStructure(null, url);
if (ex == null)
throw new Exception("Search Param " + pack.getTitle() + "/" + n + " refers to unknown extension '" + url + "' " + getLocation(row));
if (Utilities.noString(d))
d = ex.getDescription();
if (definitions != null)
e = definitions.getElementDefn("Extension");
pn.add(p);
} else if (!p.startsWith("!") && !p.startsWith("Extension{") && root2 != null) {
e = root2.getRoot().getElementForPath(p, definitions, "search param", true, true);
}
if (e == null && Utilities.noString(d))
throw new Exception("unable to resolve sarch param " + p);
if (e == null)
sp.setExpression(p);
if (Utilities.noString(d) && e != null)
d = e.getShortDefn();
if (d == null)
throw new Exception("Search Param " + root2.getName() + "/" + n + " has no description " + getLocation(row));
if (e != null)
pn.add(p);
if (sp.getType() == SearchParamType.REFERENCE) {
// no check?
} else if (e != null && e.typeCode().startsWith("Reference("))
throw new Exception("Search Param " + root2.getName() + "/" + n + " wrong type. The search type is " + sp.getType().toCode() + ", but the element type is " + e.typeCode());
sp.setDescription(d);
}
sp.setXpath(Utilities.noString(xp) ? new XPathQueryGenerator(definitions, log, null).generateXpath(pn, null) : xp);
sp.setXpathUsage(readSearchXPathUsage(sheet.getColumn(row, "Path Usage"), row));
}
sp.setUrl("http://hl7.org/fhir/SearchParameter/" + sp.getId());
if (definitions != null)
definitions.addNs(sp.getUrl(), "Search Parameter " + sp.getName(), pack.getId() + ".html#search");
if (context.getSearchParameter(sp.getUrl()) != null)
throw new Exception("Duplicated Search Parameter " + sp.getUrl());
context.cacheResource(sp);
pack.getSearchParameters().add(sp);
}
}
}
Aggregations