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>());
     }
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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));
 }