/// <summary>
        /// Serialize to a JSON object
        /// </summary>
        public new void SerializeJson(Utf8JsonWriter writer, JsonSerializerOptions options, bool includeStartObject = true)
        {
            if (includeStartObject)
            {
                writer.WriteStartObject();
            }
            ((fhirCsR4.Models.BackboneElement) this).SerializeJson(writer, options, false);

            if ((Encounter != null) && (Encounter.Count != 0))
            {
                writer.WritePropertyName("encounter");
                writer.WriteStartArray();

                foreach (Reference valEncounter in Encounter)
                {
                    valEncounter.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if ((Event != null) && (Event.Count != 0))
            {
                writer.WritePropertyName("event");
                writer.WriteStartArray();

                foreach (CodeableConcept valEvent in Event)
                {
                    valEvent.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if (Period != null)
            {
                writer.WritePropertyName("period");
                Period.SerializeJson(writer, options);
            }

            if (FacilityType != null)
            {
                writer.WritePropertyName("facilityType");
                FacilityType.SerializeJson(writer, options);
            }

            if (PracticeSetting != null)
            {
                writer.WritePropertyName("practiceSetting");
                PracticeSetting.SerializeJson(writer, options);
            }

            if (SourcePatientInfo != null)
            {
                writer.WritePropertyName("sourcePatientInfo");
                SourcePatientInfo.SerializeJson(writer, options);
            }

            if ((Related != null) && (Related.Count != 0))
            {
                writer.WritePropertyName("related");
                writer.WriteStartArray();

                foreach (Reference valRelated in Related)
                {
                    valRelated.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if (includeStartObject)
            {
                writer.WriteEndObject();
            }
        }