Exemple #1
0
 public Vector MoveTo(Structure structure)
 {
     Vector clone = this.Clone();
     clone.Structure = structure;
     clone.Element = structure.Root;
     return clone;
 }
 public void _linkElements(Structure structure)
 {
     foreach (Element e in profile.Elements)
     {
         _tryLinkToParent(structure, e);
     }
 }
Exemple #3
0
 public static Vector Create(Structure structure, XPathNavigator node, XmlNamespaceManager nsm)
 {
     Vector vector = new Vector();
     vector.Structure = structure;
     vector.Element = (structure != null) ? structure.Root : null;
     vector.Node = node;
     vector.NSM = nsm;
     vector.Origin = vector; 
     return vector;
 }
 private bool _tryLinkToParent(Structure structure, Element element)
 {
     Element parent = profile.ParentOf(structure, element);
     if (parent != null)
     {
         parent.Children.Add(element);
         return true;
     }
     return false;
 }
 public static void AddExtensionElement(Structure structure, Element parent = null)
 {
     parent = parent  ?? structure.Root;
     string path = string.Format("{0}.extension", parent.Path); 
     Element element = new Element();
     element.Path = new Path(path);
     element.Name = "extension";
     element.Cardinality = new Cardinality { Min = "0", Max = "*" };
     element.TypeRefs.Add(new TypeRef { Code = "Extension" });
     structure.Elements.Add(element);
 }
        public static Structure Primitive(string name, string pattern, string nsprefix = FhirNamespaceManager.Fhir)
        {
            Structure structure = new Structure();
            structure.Name = name;

            Element element = new Element();
            element.Path = new Path(name);
            element.Name = name;
            element.IsPrimitive = true;
            element.PrimitivePattern = pattern;
            element.Cardinality = new Cardinality { Min = "1", Max = "1" };
            element.NameSpacePrefix = nsprefix;
            structure.Elements.Add(element);

            AddExtensionElement(structure, element);
            return structure;
        }
 public Structure ReadStructure(XPathNavigator node)
 {
     Structure structure = new Structure();
     structure.Name = node.SelectSingleNode("f:type/@value", ns).Value;
     structure.NameSpacePrefix = FhirNamespaceManager.Fhir;
     ReadStructureElements(structure, node.Select("f:element", ns));
     return structure;
 }
 public void ReadStructureElements(Structure structure, XPathNodeIterator xElements)
 {
     foreach (XPathNavigator xElement in xElements)
     {
         structure.Elements.Add(ReadElement(xElement));
     }
 }
        public void ValidateStructure(Structure structure)
        {
            //if (structure.IsPrimitive)
             //   return; // there is no more detail.

            foreach (Element element in structure.Elements)
            {
                ValidateElement(element);
            }

            ValidateElementRefs(structure);
        }
 public void ValidateElementRefs(Structure structure)
 {
     foreach(Element element in structure.Elements)
     {
         if (element.ElementRefPath != null && element.ElementRef == null)
         {
             report.Add("Reference", Kind.Failed, 
                 "Element [{0}] Name reference to different element [{1}] is unresolved", 
                 element.Path, element.ElementRefPath);
         }
     }
 }
Exemple #11
0
 public Element GetElementByPath(Structure structure, string path)
 {
     return structure.Elements.FirstOrDefault(element => element.Path.ToString() == path);
 }
Exemple #12
0
 public Element ParentOf(Structure structure, Element element)
 {
     Path path = element.Path.Parent();
     Element parent = structure.Elements.Find(e => e.Path.Equals(path));
     return parent;
 }