Exemple #1
0
        /// <summary>
        /// Deserialize JSON into a FHIR Parameters#Parameter
        /// </summary>
        public static void DeserializeJsonProperty(this Parameters.ParameterComponent current, ref Utf8JsonReader reader, JsonSerializerOptions options, string propertyName)
        {
            switch (propertyName)
            {
            case "name":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.NameElement = new FhirString();
                    reader.Skip();
                }
                else
                {
                    current.NameElement = new FhirString(reader.GetString());
                }
                break;

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

            case "valueBase64Binary":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Base64Binary();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Base64Binary(System.Convert.FromBase64String(reader.GetString()));
                }
                break;

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

            case "valueBoolean":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new FhirBoolean();
                    reader.Skip();
                }
                else
                {
                    current.Value = new FhirBoolean(reader.GetBoolean());
                }
                break;

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

            case "valueCanonical":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Canonical();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Canonical(reader.GetString());
                }
                break;

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

            case "valueCode":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Code();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Code(reader.GetString());
                }
                break;

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

            case "valueDate":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Date();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Date(reader.GetString());
                }
                break;

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

            case "valueDateTime":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new FhirDateTime();
                    reader.Skip();
                }
                else
                {
                    current.Value = new FhirDateTime(reader.GetString());
                }
                break;

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

            case "valueDecimal":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new FhirDecimal();
                    reader.Skip();
                }
                else
                {
                    current.Value = new FhirDecimal(reader.GetDecimal());
                }
                break;

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

            case "valueId":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Id();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Id(reader.GetString());
                }
                break;

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

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

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

            case "valueInteger":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Integer();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Integer(reader.GetInt32());
                }
                break;

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

            case "valueMarkdown":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Markdown();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Markdown(reader.GetString());
                }
                break;

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

            case "valueOid":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Oid();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Oid(reader.GetString());
                }
                break;

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

            case "valuePositiveInt":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new PositiveInt();
                    reader.Skip();
                }
                else
                {
                    current.Value = new PositiveInt(reader.GetInt32());
                }
                break;

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

            case "valueString":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new FhirString();
                    reader.Skip();
                }
                else
                {
                    current.Value = new FhirString(reader.GetString());
                }
                break;

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

            case "valueTime":
                current.Value = new Hl7.Fhir.Model.Time();
                ((Hl7.Fhir.Model.Time)current.Value).DeserializeJson(ref reader, options);
                break;

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

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

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

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

            case "valueUrl":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new FhirUrl();
                    reader.Skip();
                }
                else
                {
                    current.Value = new FhirUrl(reader.GetString());
                }
                break;

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

            case "valueUuid":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.Value = new Uuid();
                    reader.Skip();
                }
                else
                {
                    current.Value = new Uuid(reader.GetString());
                }
                break;

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

            case "valueAddress":
                current.Value = new Hl7.Fhir.Model.Address();
                ((Hl7.Fhir.Model.Address)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueAge":
                current.Value = new Hl7.Fhir.Model.Age();
                ((Hl7.Fhir.Model.Age)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueAnnotation":
                current.Value = new Hl7.Fhir.Model.Annotation();
                ((Hl7.Fhir.Model.Annotation)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueAttachment":
                current.Value = new Hl7.Fhir.Model.Attachment();
                ((Hl7.Fhir.Model.Attachment)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueCodeableConcept":
                current.Value = new Hl7.Fhir.Model.CodeableConcept();
                ((Hl7.Fhir.Model.CodeableConcept)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueCoding":
                current.Value = new Hl7.Fhir.Model.Coding();
                ((Hl7.Fhir.Model.Coding)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueContactPoint":
                current.Value = new Hl7.Fhir.Model.ContactPoint();
                ((Hl7.Fhir.Model.ContactPoint)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueCount":
                current.Value = new Hl7.Fhir.Model.Count();
                ((Hl7.Fhir.Model.Count)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueDistance":
                current.Value = new Hl7.Fhir.Model.Distance();
                ((Hl7.Fhir.Model.Distance)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueDuration":
                current.Value = new Hl7.Fhir.Model.Duration();
                ((Hl7.Fhir.Model.Duration)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueHumanName":
                current.Value = new Hl7.Fhir.Model.HumanName();
                ((Hl7.Fhir.Model.HumanName)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueIdentifier":
                current.Value = new Hl7.Fhir.Model.Identifier();
                ((Hl7.Fhir.Model.Identifier)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueMoney":
                current.Value = new Hl7.Fhir.Model.Money();
                ((Hl7.Fhir.Model.Money)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valuePeriod":
                current.Value = new Hl7.Fhir.Model.Period();
                ((Hl7.Fhir.Model.Period)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueQuantity":
                current.Value = new Hl7.Fhir.Model.Quantity();
                ((Hl7.Fhir.Model.Quantity)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueRange":
                current.Value = new Hl7.Fhir.Model.Range();
                ((Hl7.Fhir.Model.Range)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueRatio":
                current.Value = new Hl7.Fhir.Model.Ratio();
                ((Hl7.Fhir.Model.Ratio)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueReference":
                current.Value = new Hl7.Fhir.Model.ResourceReference();
                ((Hl7.Fhir.Model.ResourceReference)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueSampledData":
                current.Value = new Hl7.Fhir.Model.SampledData();
                ((Hl7.Fhir.Model.SampledData)current.Value).DeserializeJson(ref reader, options);
                break;

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

            case "valueTiming":
                current.Value = new Hl7.Fhir.Model.Timing();
                ((Hl7.Fhir.Model.Timing)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueContactDetail":
                current.Value = new Hl7.Fhir.Model.ContactDetail();
                ((Hl7.Fhir.Model.ContactDetail)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueContributor":
                current.Value = new Hl7.Fhir.Model.Contributor();
                ((Hl7.Fhir.Model.Contributor)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueDataRequirement":
                current.Value = new Hl7.Fhir.Model.DataRequirement();
                ((Hl7.Fhir.Model.DataRequirement)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueExpression":
                current.Value = new Hl7.Fhir.Model.Expression();
                ((Hl7.Fhir.Model.Expression)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueParameterDefinition":
                current.Value = new Hl7.Fhir.Model.ParameterDefinition();
                ((Hl7.Fhir.Model.ParameterDefinition)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueRelatedArtifact":
                current.Value = new Hl7.Fhir.Model.RelatedArtifact();
                ((Hl7.Fhir.Model.RelatedArtifact)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueTriggerDefinition":
                current.Value = new Hl7.Fhir.Model.TriggerDefinition();
                ((Hl7.Fhir.Model.TriggerDefinition)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueUsageContext":
                current.Value = new Hl7.Fhir.Model.UsageContext();
                ((Hl7.Fhir.Model.UsageContext)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueDosage":
                current.Value = new Hl7.Fhir.Model.Dosage();
                ((Hl7.Fhir.Model.Dosage)current.Value).DeserializeJson(ref reader, options);
                break;

            case "valueMeta":
                current.Value = new Hl7.Fhir.Model.Meta();
                ((Hl7.Fhir.Model.Meta)current.Value).DeserializeJson(ref reader, options);
                break;

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

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

                current.Part = new List <Parameters.ParameterComponent>();

                while (reader.TokenType != JsonTokenType.EndArray)
                {
                    Hl7.Fhir.Model.Parameters.ParameterComponent v_Part = new Hl7.Fhir.Model.Parameters.ParameterComponent();
                    v_Part.DeserializeJson(ref reader, options);
                    current.Part.Add(v_Part);

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

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

            // Complex: parameter, Export: ParameterComponent, Base: BackboneElement
            default:
                ((Hl7.Fhir.Model.BackboneElement)current).DeserializeJsonProperty(ref reader, options, propertyName);
                break;
            }
        }
Exemple #2
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;
            }
        }
        /// <summary>
        /// Deserialize JSON into a FHIR DomainResource
        /// </summary>
        public static void DeserializeJsonProperty(this DomainResource current, ref Utf8JsonReader reader, JsonSerializerOptions options, string propertyName)
        {
            switch (propertyName)
            {
            case "text":
                current.Text = new Hl7.Fhir.Model.Narrative();
                ((Hl7.Fhir.Model.Narrative)current.Text).DeserializeJson(ref reader, options);
                break;

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

                current.Contained = new List <Resource>();

                while (reader.TokenType != JsonTokenType.EndArray)
                {
                    current.Contained.Add(JsonStreamResourceConverter.PolymorphicRead(ref reader, typeof(Resource), options));

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

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

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

                current.Extension = new List <Extension>();

                while (reader.TokenType != JsonTokenType.EndArray)
                {
                    Hl7.Fhir.Model.Extension v_Extension = new Hl7.Fhir.Model.Extension();
                    v_Extension.DeserializeJson(ref reader, options);
                    current.Extension.Add(v_Extension);

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

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

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

                current.ModifierExtension = new List <Extension>();

                while (reader.TokenType != JsonTokenType.EndArray)
                {
                    Hl7.Fhir.Model.Extension v_ModifierExtension = new Hl7.Fhir.Model.Extension();
                    v_ModifierExtension.DeserializeJson(ref reader, options);
                    current.ModifierExtension.Add(v_ModifierExtension);

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

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

            // Complex: DomainResource, Export: DomainResource, Base: Resource
            default:
                ((Hl7.Fhir.Model.Resource)current).DeserializeJsonProperty(ref reader, options, propertyName);
                break;
            }
        }
Exemple #4
0
        /// <summary>
        /// Deserialize JSON into a FHIR Bundle#Response
        /// </summary>
        public static void DeserializeJsonProperty(this Bundle.ResponseComponent current, ref Utf8JsonReader reader, JsonSerializerOptions options, string propertyName)
        {
            switch (propertyName)
            {
            case "status":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.StatusElement = new FhirString();
                    reader.Skip();
                }
                else
                {
                    current.StatusElement = new FhirString(reader.GetString());
                }
                break;

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

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

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

            case "etag":
                if (reader.TokenType == JsonTokenType.Null)
                {
                    current.EtagElement = new FhirString();
                    reader.Skip();
                }
                else
                {
                    current.EtagElement = new FhirString(reader.GetString());
                }
                break;

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

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

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

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

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