public static IEnumerable <Code> GetSubsumes(this ValueSet.ValueSetDefineConceptComponent c) { if (c.Extension != null) { return(c.Extension.Where(ext => ext.Url == EXT_SUBSUMES).Where(ext => ext.Value is Code).Select(ext => (Code)ext.Value)); } else { return(Enumerable.Empty <Code>()); } }
private bool inConcept(String code, ValueSet.ValueSetDefineConceptComponent c) { if (c.Code == code) { return(true); } foreach (var g in c.Concept) { if (inConcept(code, g)) { return(true); } } return(false); }
private ValueSet.ValueSetDefineConceptComponent getConceptForCode(ValueSet.ValueSetDefineConceptComponent c, String code) { if (code == c.Code) { return(c); } if (c.Concept == null) { return(null); } foreach (var cc in c.Concept) { var v = getConceptForCode(cc, code); if (v != null) { return(v); } } return(null); }
private bool genInclude(XElement ul, ValueSet.ConceptSetComponent inc, String type) { bool hasExtensions = false; var li = new XElement(XmlNs.XHTMLNS + "li"); ul.Add(li); var e = _pkp.GetValueSetForSystem(inc.System); // AtomEntry<? extends Resource> e = context.getCodeSystems().get(inc.getSystem()); if ((inc.Code == null || !inc.Code.Any()) && (inc.Filter == null || !inc.Filter.Any())) { li.Add(new XText(type + " all codes defined in ")); addCsRef(inc, li, e); } else { if (inc.CodeElement != null && inc.CodeElement.Any()) { li.Add(new XText(type + " these codes as defined in ")); addCsRef(inc, li, e); var t = new XElement(XmlNs.XHTMLNS + "table"); li.Add(t); bool hasComments = false; foreach (var c in inc.CodeElement) { hasComments = hasComments || c.GetExtension(ToolingExtensions.EXT_COMMENT) != null; } if (hasComments) { hasExtensions = true; } addTableHeaderRowStandard(t, hasComments, false); foreach (var c in inc.CodeElement) { var tr = new XElement(XmlNs.XHTMLNS + "tr"); t.Add(tr); tr.Add(new XElement(XmlNs.XHTMLNS + "td", new XText(c.Value))); ValueSet.ValueSetDefineConceptComponent cc = getConceptForCode(e, c.Value, inc.System); XElement td = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); if (cc != null && !String.IsNullOrEmpty(cc.Display)) { td.Add(new XText(cc.Display)); } //if (!Utilities.noString(c.getDisplay())) DSTU2 // td.addText(c.getDisplay()); //else if (cc != null && !Utilities.noString(cc.getDisplay())) // td.addText(cc.getDisplay()); td = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); if (c.GetExtension(ToolingExtensions.EXT_DEFINITION) != null) { smartAddText(td, ToolingExtensions.ReadStringExtension(c, ToolingExtensions.EXT_DEFINITION)); } else if (cc != null && !String.IsNullOrEmpty(cc.Definition)) { smartAddText(td, cc.Definition); } else { ; // No else in the java code!! } if (c.GetExtension(ToolingExtensions.EXT_COMMENT) != null) { var tdn = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); smartAddText(tdn, "Note: " + ToolingExtensions.ReadStringExtension(c, ToolingExtensions.EXT_COMMENT)); } } } if (inc.Filter != null) { foreach (var f in inc.Filter) { li.Add(new XText(type + " codes from ")); addCsRef(inc, li, e); // TODO: Java code does not allow for f.Op to be null, but it is optional li.Add(new XText(" where " + f.Property + " " + describe(f.Op.GetValueOrDefault()) + " ")); if (e != null && codeExistsInValueSet(e, f.Value)) { li.Add(new XElement(XmlNs.XHTMLNS + "a", new XText(f.Value), new XAttribute("href", prefix + getCsRef(inc.System) + "#" + ProfileKnowledgeProvider.TokenizeName(f.Value)))); } else { li.Add(new XText(f.Value)); } String disp = f.getDisplayHint(); if (disp != null) { li.Add(new XText(" (" + disp + ")")); } } } } return(hasExtensions); }
private bool addDefineRowToTable(XElement t, ValueSet.ValueSetDefineConceptComponent c, int i, bool comment, bool deprecated, Dictionary <ConceptMap, String> maps) { bool hasExtensions = false; XElement tr = new XElement(XmlNs.XHTMLNS + "tr"); t.Add(tr); XElement td = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); var indent = new String('.', i * 2); td.Add(new XText(indent + c.Code)); td.Add(new XElement(XmlNs.XHTMLNS + "a", new XAttribute("name", ProfileKnowledgeProvider.TokenizeName(c.Code)), new XText(" "))); td = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); if (c.Display != null) { td.Add(new XText(c.Display)); } td = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); if (c.Definition != null) { smartAddText(td, c.Definition); } if (deprecated) { td = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); var s = c.GetDeprecated(); if (s != null) { smartAddText(td, s); hasExtensions = true; } } if (comment) { td = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); var s = c.GetComment(); if (s != null) { smartAddText(td, s); hasExtensions = true; } } //for (ConceptMap m : maps.keySet()) //{ // td = tr.addTag("td"); // List<ConceptMapElementMapComponent> mappings = findMappingsForCode(c.getCode(), m); // boolean first = true; // for (ConceptMapElementMapComponent mapping : mappings) // { // if (!first) // td.addTag("br"); // first = false; // XhtmlNode span = td.addTag("span"); // span.setAttribute("title", mapping.getEquivalence().toString()); // span.addText(getCharForEquivalence(mapping)); // a = td.addTag("a"); // a.setAttribute("href", prefix+maps.get(m)+"#"+mapping.getCode()); // a.addText(mapping.getCode()); // if (!Utilities.noString(mapping.getComments())) // td.addTag("i").addText("("+mapping.getComments()+")"); // } //} foreach (var e in c.GetSubsumes()) { hasExtensions = true; tr = new XElement(XmlNs.XHTMLNS + "tr"); t.Add(tr); td = new XElement(XmlNs.XHTMLNS + "td"); tr.Add(td); indent = new String('.', i * 2); td.Add(new XText(indent)); var a = new XElement(XmlNs.XHTMLNS + "a"); a.Add(new XAttribute("href", "#" + ProfileKnowledgeProvider.TokenizeName(e.Value))); a.Add(new XText(c.Code)); td.Add(a); } foreach (var cc in c.Concept) { hasExtensions = addDefineRowToTable(t, cc, i + 1, comment, deprecated, maps) || hasExtensions; } return(hasExtensions); }
public static String GetComment(this ValueSet.ValueSetDefineConceptComponent c) { return(ReadStringExtension(c, EXT_COMMENT)); }
public static String GetDeprecated(this ValueSet.ValueSetDefineConceptComponent c) { return(ReadBooleanExtension(c, EXT_DEPRECATED)); }