private void AddAncestorDefinition(StructureDefinition structureDefinition, IStructureDefinitionResolver resolver) { if (structureDefinition == null) { return; } if (structureDefinition.@base == null) { return; } if (String.IsNullOrWhiteSpace([email protected])) { return; } StructureDefinition baseStructureDefinition = resolver.GetStructureDefinition([email protected]); if (baseStructureDefinition == null) { return; } if (baseStructureDefinition == structureDefinition) { return; } _ancestors.Add(baseStructureDefinition); AddAncestorDefinition(baseStructureDefinition, resolver); }
public void AddExtensionDefinitions(SDTreeNode treeNode, IStructureDefinitionResolver resolver) { if (!treeNode.GetNodeType().IsExtension()) { return; } ElementDefinitionType[] type = treeNode.GetElementDefinitionType(); if (type == null) { return; } if (type.Length != 1) { return; } if (type.First().profile == null) { return; } if (type.First().profile.Length != 1) { return; } uri profileUri = type.First().profile.First(); if (profileUri == null) { return; } StructureDefinition structureDefinition = resolver.GetStructureDefinition(profileUri.value); if (structureDefinition == null) { throw new Exception("Could not find extension " + profileUri.value); } treeNode.ExtensionDefinition = structureDefinition; }