Beispiel #1
0
        /// <summary>
        /// Deserialize JSON into a FHIR Bundle#Entry
        /// </summary>
        public static void DeserializeJsonProperty(this Bundle.EntryComponent current, ref Utf8JsonReader reader, JsonSerializerOptions options, string propertyName)
        {
            switch (propertyName)
            {
            case "link":
                if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read()))
                {
                    throw new JsonException($"EntryComponent error reading 'link' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}");
                }

                current.Link = new List <Bundle.LinkComponent>();

                while (reader.TokenType != JsonTokenType.EndArray)
                {
                    Hl7.Fhir.Model.Bundle.LinkComponent v_Link = new Hl7.Fhir.Model.Bundle.LinkComponent();
                    v_Link.DeserializeJson(ref reader, options);
                    current.Link.Add(v_Link);

                    if (!reader.Read())
                    {
                        throw new JsonException($"EntryComponent error reading 'link' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}");
                    }
                    if (reader.TokenType == JsonTokenType.EndObject)
                    {
                        reader.Read();
                    }
                }

                if (current.Link.Count == 0)
                {
                    current.Link = null;
                }
                break;

            case "fullUrl":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.FullUrlElement = new FhirUri();
                    reader.Skip();
                }
                else
                {
                    current.FullUrlElement = new FhirUri(reader.GetString());
                }
                break;

            case "_fullUrl":
                if (current.FullUrlElement == null)
                {
                    current.FullUrlElement = new FhirUri();
                }
                ((Hl7.Fhir.Model.Element)current.FullUrlElement).DeserializeJson(ref reader, options);
                break;

            case "resource":
                current.Resource = JsonStreamResourceConverter.PolymorphicRead(ref reader, typeof(Resource), options);
                break;

            case "search":
                current.Search = new Hl7.Fhir.Model.Bundle.SearchComponent();
                ((Hl7.Fhir.Model.Bundle.SearchComponent)current.Search).DeserializeJson(ref reader, options);
                break;

            case "request":
                current.Request = new Hl7.Fhir.Model.Bundle.RequestComponent();
                ((Hl7.Fhir.Model.Bundle.RequestComponent)current.Request).DeserializeJson(ref reader, options);
                break;

            case "response":
                current.Response = new Hl7.Fhir.Model.Bundle.ResponseComponent();
                ((Hl7.Fhir.Model.Bundle.ResponseComponent)current.Response).DeserializeJson(ref reader, options);
                break;

            // Complex: entry, Export: EntryComponent, Base: BackboneElement
            default:
                ((Hl7.Fhir.Model.BackboneElement)current).DeserializeJsonProperty(ref reader, options, propertyName);
                break;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Deserialize JSON into a FHIR Bundle
        /// </summary>
        public static void DeserializeJsonProperty(this Bundle current, ref Utf8JsonReader reader, JsonSerializerOptions options, string propertyName)
        {
            switch (propertyName)
            {
            case "identifier":
                current.Identifier = new Hl7.Fhir.Model.Identifier();
                ((Hl7.Fhir.Model.Identifier)current.Identifier).DeserializeJson(ref reader, options);
                break;

            case "type":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.TypeElement = new Code <Hl7.Fhir.Model.Bundle.BundleType>();
                    reader.Skip();
                }
                else
                {
                    current.TypeElement = new Code <Hl7.Fhir.Model.Bundle.BundleType>(Hl7.Fhir.Utility.EnumUtility.ParseLiteral <Hl7.Fhir.Model.Bundle.BundleType>(reader.GetString()));
                }
                break;

            case "_type":
                if (current.TypeElement == null)
                {
                    current.TypeElement = new Code <Hl7.Fhir.Model.Bundle.BundleType>();
                }
                ((Hl7.Fhir.Model.Element)current.TypeElement).DeserializeJson(ref reader, options);
                break;

            case "timestamp":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.TimestampElement = new Instant();
                    reader.Skip();
                }
                else
                {
                    current.TimestampElement = new Instant(DateTimeOffset.Parse(reader.GetString()));
                }
                break;

            case "_timestamp":
                if (current.TimestampElement == null)
                {
                    current.TimestampElement = new Instant();
                }
                ((Hl7.Fhir.Model.Element)current.TimestampElement).DeserializeJson(ref reader, options);
                break;

            case "total":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.TotalElement = new UnsignedInt();
                    reader.Skip();
                }
                else
                {
                    current.TotalElement = new UnsignedInt(reader.GetInt32());
                }
                break;

            case "_total":
                if (current.TotalElement == null)
                {
                    current.TotalElement = new UnsignedInt();
                }
                ((Hl7.Fhir.Model.Element)current.TotalElement).DeserializeJson(ref reader, options);
                break;

            case "link":
                if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read()))
                {
                    throw new JsonException($"Bundle error reading 'link' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}");
                }

                current.Link = new List <Bundle.LinkComponent>();

                while (reader.TokenType != JsonTokenType.EndArray)
                {
                    Hl7.Fhir.Model.Bundle.LinkComponent v_Link = new Hl7.Fhir.Model.Bundle.LinkComponent();
                    v_Link.DeserializeJson(ref reader, options);
                    current.Link.Add(v_Link);

                    if (!reader.Read())
                    {
                        throw new JsonException($"Bundle error reading 'link' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}");
                    }
                    if (reader.TokenType == JsonTokenType.EndObject)
                    {
                        reader.Read();
                    }
                }

                if (current.Link.Count == 0)
                {
                    current.Link = null;
                }
                break;

            case "entry":
                if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read()))
                {
                    throw new JsonException($"Bundle error reading 'entry' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}");
                }

                current.Entry = new List <Bundle.EntryComponent>();

                while (reader.TokenType != JsonTokenType.EndArray)
                {
                    Hl7.Fhir.Model.Bundle.EntryComponent v_Entry = new Hl7.Fhir.Model.Bundle.EntryComponent();
                    v_Entry.DeserializeJson(ref reader, options);
                    current.Entry.Add(v_Entry);

                    if (!reader.Read())
                    {
                        throw new JsonException($"Bundle error reading 'entry' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}");
                    }
                    if (reader.TokenType == JsonTokenType.EndObject)
                    {
                        reader.Read();
                    }
                }

                if (current.Entry.Count == 0)
                {
                    current.Entry = null;
                }
                break;

            case "signature":
                current.Signature = new Hl7.Fhir.Model.Signature();
                ((Hl7.Fhir.Model.Signature)current.Signature).DeserializeJson(ref reader, options);
                break;

            // Complex: Bundle, Export: Bundle, Base: Resource
            default:
                ((Hl7.Fhir.Model.Resource)current).DeserializeJsonProperty(ref reader, options, propertyName);
                break;
            }
        }