Exemple #1
0
        /// <summary>
        /// Build a POCO from an ISourceNode.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="mapping">Optional. The <see cref="ClassMapping" /> for the POCO to build. </param>
        /// <returns></returns>
        /// <remarks>If <paramref name="mapping"/> is not supplied, or is <code>Resource</code> or <code>DomainResource</code>,
        /// the builder will try to determine the actual type to create from the <paramref name="source"/>. </remarks>
        public Base BuildFrom(ISourceNode source, ClassMapping mapping = null)
        {
            if (source == null)
            {
                throw Error.ArgumentNull(nameof(source));
            }
            TypedElementSettings typedSettings = new TypedElementSettings
            {
                ErrorMode = _settings.IgnoreUnknownMembers ?
                            TypedElementSettings.TypeErrorMode.Ignore
                    : TypedElementSettings.TypeErrorMode.Report
            };

            string dataType;

            // If dataType is an abstract resource superclass -> ToTypedElement(with type=null) will figure it out;
            if (mapping == null)
            {
                dataType = null;
            }
            else if (mapping.IsResource && mapping.NativeType.GetTypeInfo().IsAbstract)
            {
                dataType = null;
            }
            else
            {
                dataType = mapping.Name;
            }

            var typedSource = source.ToTypedElement(_inspector, dataType, typedSettings);

            return(BuildFrom(typedSource));
        }
        /// <summary>
        /// Build a POCO from an ISourceNode.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="dataType">Optional. Type of POCO to build. Should be the name of one of the generated POCO classes.</param>
        /// <returns></returns>
        /// <remarks>If <paramref name="dataType"/> is not supplied, or is <code>Resource</code> or <code>DomainResource</code>,
        /// the builder will try to determine the actual type to create from the <paramref name="source"/>. </remarks>
        public Base BuildFrom(ISourceNode source, string dataType = null)
        {
            if (source == null)
            {
                throw Error.ArgumentNull(nameof(source));
            }
            TypedElementSettings typedSettings = new TypedElementSettings
            {
                ErrorMode = _settings.IgnoreUnknownMembers ?
                            TypedElementSettings.TypeErrorMode.Ignore
                    : TypedElementSettings.TypeErrorMode.Report
            };

            // If dataType is an abstract resource superclass -> ToTypedElement(with type=null) will figure it out;
            if (dataType == FHIRDefinedType.Resource.GetLiteral() || dataType == FHIRDefinedType.DomainResource.GetLiteral())
            {
                dataType = null;
            }

            var typedSource = source.ToTypedElement(new PocoStructureDefinitionSummaryProvider(), dataType, typedSettings);

            return(BuildFrom(typedSource));
        }
Exemple #3
0
        internal static ITypedElement ParseToTypedElement(string json, IStructureDefinitionSummaryProvider provider, string rootName = null,
                                                          FhirJsonParsingSettings settings = null, TypedElementSettings tnSettings = null)
        {
            if (json == null)
            {
                throw Error.ArgumentNull(nameof(json));
            }
            if (provider == null)
            {
                throw Error.ArgumentNull(nameof(provider));
            }

            return(FhirJsonNode.Parse(json, rootName, settings).ToTypedElement(provider, null, tnSettings));
        }
Exemple #4
0
        public static ITypedElement ParseToTypedElement(string xml, string type, IStructureDefinitionSummaryProvider provider,
                                                        FhirXmlParsingSettings settings = null, TypedElementSettings tnSettings = null)
        {
            if (xml == null)
            {
                throw Error.ArgumentNull(nameof(xml));
            }
            if (type == null)
            {
                throw Error.ArgumentNull(nameof(type));
            }
            if (provider == null)
            {
                throw Error.ArgumentNull(nameof(provider));
            }

            return(FhirXmlNode.Parse(xml, settings).ToTypedElement(provider, type, tnSettings));
        }
        public ITypedElement getXmlNode(string xml, FhirXmlParsingSettings settings = null, TypedElementSettings tnSettings = null)
        {
            settings = settings ?? FhirXmlParsingSettings.CreateDefault();
            settings.PermissiveParsing = false;

            return(XmlParsingHelpers.ParseToTypedElement(xml, new PocoStructureDefinitionSummaryProvider(), settings, tnSettings));
        }
 public ITypedElement getXmlNode(string xml, FhirXmlParsingSettings settings = null, TypedElementSettings tnSettings = null) =>
 XmlParsingHelpers.ParseToTypedElement(xml, new PocoStructureDefinitionSummaryProvider(), settings, tnSettings);