/// <summary> /// Deserialize JSON into a FHIR PractitionerRole#AvailableTime /// </summary> public static void DeserializeJson(this PractitionerRole.AvailableTimeComponent current, ref Utf8JsonReader reader, JsonSerializerOptions options) { string propertyName; while (reader.Read()) { if (reader.TokenType == JsonTokenType.EndObject) { return; } if (reader.TokenType == JsonTokenType.PropertyName) { propertyName = reader.GetString(); if (Hl7.Fhir.Serialization.FhirSerializerOptions.Debug) { Console.WriteLine($"PractitionerRole.AvailableTimeComponent >>> PractitionerRole#AvailableTime.{propertyName}, depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } reader.Read(); current.DeserializeJsonProperty(ref reader, options, propertyName); } } throw new JsonException($"PractitionerRole.AvailableTimeComponent: invalid state! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); }
/// <summary> /// Deserialize JSON into a FHIR PractitionerRole#AvailableTime /// </summary> public static void DeserializeJsonProperty(this PractitionerRole.AvailableTimeComponent current, ref Utf8JsonReader reader, JsonSerializerOptions options, string propertyName) { switch (propertyName) { case "daysOfWeek": if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read())) { throw new JsonException($"AvailableTimeComponent error reading 'daysOfWeek' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } current.DaysOfWeekElement = new List <Code <Hl7.Fhir.Model.DaysOfWeek> >(); while (reader.TokenType != JsonTokenType.EndArray) { if (reader.TokenType == JsonTokenType.Null) { current.DaysOfWeekElement.Add(new Code <Hl7.Fhir.Model.DaysOfWeek>()); reader.Skip(); } else { current.DaysOfWeekElement.Add(new Code <Hl7.Fhir.Model.DaysOfWeek>(Hl7.Fhir.Utility.EnumUtility.ParseLiteral <Hl7.Fhir.Model.DaysOfWeek>(reader.GetString()))); } if (!reader.Read()) { throw new JsonException($"AvailableTimeComponent error reading 'daysOfWeek' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } if (reader.TokenType == JsonTokenType.EndObject) { reader.Read(); } } if (current.DaysOfWeekElement.Count == 0) { current.DaysOfWeekElement = null; } break; case "_daysOfWeek": if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read())) { throw new JsonException($"AvailableTimeComponent error reading 'daysOfWeek' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } int i_daysOfWeek = 0; while (reader.TokenType != JsonTokenType.EndArray) { if (i_daysOfWeek >= current.DaysOfWeekElement.Count) { current.DaysOfWeekElement.Add(new Code <Hl7.Fhir.Model.DaysOfWeek>()); } if (reader.TokenType == JsonTokenType.Null) { reader.Skip(); } else { ((Hl7.Fhir.Model.Element)current.DaysOfWeekElement[i_daysOfWeek++]).DeserializeJson(ref reader, options); } if (!reader.Read()) { throw new JsonException($"AvailableTimeComponent error reading 'daysOfWeek' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } if (reader.TokenType == JsonTokenType.EndObject) { reader.Read(); } } break; case "allDay": if (reader.TokenType == JsonTokenType.Null) { current.AllDayElement = new FhirBoolean(); reader.Skip(); } else { current.AllDayElement = new FhirBoolean(reader.GetBoolean()); } break; case "_allDay": if (current.AllDayElement == null) { current.AllDayElement = new FhirBoolean(); } ((Hl7.Fhir.Model.Element)current.AllDayElement).DeserializeJson(ref reader, options); break; case "availableStartTime": current.AvailableStartTimeElement = new Hl7.Fhir.Model.Time(); ((Hl7.Fhir.Model.Time)current.AvailableStartTimeElement).DeserializeJson(ref reader, options); break; case "availableEndTime": current.AvailableEndTimeElement = new Hl7.Fhir.Model.Time(); ((Hl7.Fhir.Model.Time)current.AvailableEndTimeElement).DeserializeJson(ref reader, options); break; // Complex: availableTime, Export: AvailableTimeComponent, Base: BackboneElement default: ((Hl7.Fhir.Model.BackboneElement)current).DeserializeJsonProperty(ref reader, options, propertyName); break; } }
/// <summary> /// Serialize a FHIR PractitionerRole#AvailableTime into JSON /// </summary> public static void SerializeJson(this PractitionerRole.AvailableTimeComponent current, Utf8JsonWriter writer, JsonSerializerOptions options, bool includeStartObject = true) { if (includeStartObject) { writer.WriteStartObject(); } // Component: PractitionerRole#AvailableTime, Export: AvailableTimeComponent, Base: BackboneElement (BackboneElement) ((Hl7.Fhir.Model.BackboneElement)current).SerializeJson(writer, options, false); if ((current.DaysOfWeekElement != null) && (current.DaysOfWeekElement.Count != 0)) { int valueCount = 0; int extensionCount = 0; foreach (Code <Hl7.Fhir.Model.DaysOfWeek> val in current.DaysOfWeekElement) { if (val.Value != null) { valueCount++; } if (val.HasExtensions()) { extensionCount++; } } if (valueCount > 0) { writer.WritePropertyName("daysOfWeek"); writer.WriteStartArray(); foreach (Code <Hl7.Fhir.Model.DaysOfWeek> val in current.DaysOfWeekElement) { if (val.Value == null) { writer.WriteNullValue(); } else { writer.WriteStringValue(Hl7.Fhir.Utility.EnumUtility.GetLiteral(val.Value)); } } writer.WriteEndArray(); } if (extensionCount > 0) { writer.WritePropertyName("_daysOfWeek"); writer.WriteStartArray(); foreach (Code <Hl7.Fhir.Model.DaysOfWeek> val in current.DaysOfWeekElement) { if (val.HasExtensions() || (!string.IsNullOrEmpty(val.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, string.Empty, true, val.Extension, val.ElementId); } else { writer.WriteNullValue(); } } writer.WriteEndArray(); } } if (current.AllDayElement != null) { if (current.AllDayElement.Value != null) { writer.WriteBoolean("allDay", (bool)current.AllDayElement.Value); } if (current.AllDayElement.HasExtensions() || (!string.IsNullOrEmpty(current.AllDayElement.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_allDay", false, current.AllDayElement.Extension, current.AllDayElement.ElementId); } } if (current.AvailableStartTimeElement != null) { writer.WritePropertyName("availableStartTime"); current.AvailableStartTimeElement.SerializeJson(writer, options); } if (current.AvailableEndTimeElement != null) { writer.WritePropertyName("availableEndTime"); current.AvailableEndTimeElement.SerializeJson(writer, options); } if (includeStartObject) { writer.WriteEndObject(); } }