public static IStructureDefinitionSummaryProvider CreateCustomSchemaProvider(params StructureDefinition[] customSds) { #region Create a SchemaProvider that knows about custom SDs var canonicalSdDict = customSds.ToDictionary(sd => sd.Url, sd => sd); var customResolver = new CustomResolver(canonicalSdDict); var typeCanonicalDict = customSds.ToDictionary(sd => sd.Type, sd => sd.Url); bool mapTypeName(string typename, out string canonical) { if (!typeCanonicalDict.TryGetValue(typename, out canonical)) { canonical = VonkConstants.Canonical.FhirCoreCanonicalBase + "/" + typename; } return(true); } var provider = new StructureDefinitionSummaryProvider(customResolver, mapTypeName); return(provider); #endregion }
static void Main(string[] args) { var xml = "<Patient xmlns=\"http://hl7.org/fhir\"><identifier>" + "<use value=\"official\" /></identifier></Patient>"; MemoryStream memStream = new MemoryStream(); byte[] data = Encoding.Default.GetBytes(xml); memStream.Write(data, 0, data.Length); memStream.Position = 0; XmlReader reader = XmlReader.Create(memStream); reader.Read(); FhirXmlParsingSettings settings = new FhirXmlParsingSettings(); ISourceNode patientNode = FhirXmlNode.Read(reader, settings); //IResourceResolver Resolver = new TestResourceResolver(); IResourceResolver Resolver = ZipSource.CreateValidationSource(); StructureDefinitionSummaryProvider Provider = new StructureDefinitionSummaryProvider(Resolver); ITypedElement patientRootElement = patientNode.ToTypedElement(Provider); var r = patientRootElement.Select("Patient.identifier.use"); string test = (string)r.FirstOrDefault().Value; //ITypedElement activeElement = patientRootElement.Children("active").First(); //Assert.AreEqual("boolean", activeElement.Type); //Assert.AreEqual("boolean", activeElement.Type); //var patientNode = FhirXmlNode.Parse(xml); //var use = patientNode.Children("identifier").Children("use").First(); //Assert.AreEqual("official", use.Text); //Assert.AreEqual("Patient.identifier[0].use[0]", use.Location); }