/// <summary> /// Deserialize JSON into a FHIR QuestionnaireResponse#Answer /// </summary> public static void DeserializeJson(this QuestionnaireResponse.AnswerComponent 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($"QuestionnaireResponse.AnswerComponent >>> QuestionnaireResponse#Answer.{propertyName}, depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } reader.Read(); current.DeserializeJsonProperty(ref reader, options, propertyName); } } throw new JsonException($"QuestionnaireResponse.AnswerComponent: invalid state! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); }
/// <summary> /// Deserialize JSON into a FHIR QuestionnaireResponse#Answer /// </summary> public static void DeserializeJsonProperty(this QuestionnaireResponse.AnswerComponent current, ref Utf8JsonReader reader, JsonSerializerOptions options, string propertyName) { switch (propertyName) { 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 "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 "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 "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 "valueTime": current.Value = new Hl7.Fhir.Model.Time(); ((Hl7.Fhir.Model.Time)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 "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 "valueAttachment": current.Value = new Hl7.Fhir.Model.Attachment(); ((Hl7.Fhir.Model.Attachment)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 "valueQuantity": current.Value = new Hl7.Fhir.Model.Quantity(); ((Hl7.Fhir.Model.Quantity)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 "item": if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read())) { throw new JsonException($"AnswerComponent error reading 'item' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } current.Item = new List <QuestionnaireResponse.ItemComponent>(); while (reader.TokenType != JsonTokenType.EndArray) { Hl7.Fhir.Model.QuestionnaireResponse.ItemComponent v_Item = new Hl7.Fhir.Model.QuestionnaireResponse.ItemComponent(); v_Item.DeserializeJson(ref reader, options); current.Item.Add(v_Item); if (!reader.Read()) { throw new JsonException($"AnswerComponent error reading 'item' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } if (reader.TokenType == JsonTokenType.EndObject) { reader.Read(); } } if (current.Item.Count == 0) { current.Item = null; } break; // Complex: answer, Export: AnswerComponent, Base: BackboneElement default: ((Hl7.Fhir.Model.BackboneElement)current).DeserializeJsonProperty(ref reader, options, propertyName); break; } }
/// <summary> /// Serialize a FHIR QuestionnaireResponse#Answer into JSON /// </summary> public static void SerializeJson(this QuestionnaireResponse.AnswerComponent current, Utf8JsonWriter writer, JsonSerializerOptions options, bool includeStartObject = true) { if (includeStartObject) { writer.WriteStartObject(); } // Component: QuestionnaireResponse#Answer, Export: AnswerComponent, Base: BackboneElement (BackboneElement) ((Hl7.Fhir.Model.BackboneElement)current).SerializeJson(writer, options, false); if (current.Value != null) { switch (current.Value) { case FhirBoolean v_FhirBoolean: if (v_FhirBoolean != null) { if (v_FhirBoolean.Value != null) { writer.WriteBoolean("valueBoolean", (bool)v_FhirBoolean.Value); } if (v_FhirBoolean.HasExtensions() || (!string.IsNullOrEmpty(v_FhirBoolean.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_valueBoolean", false, v_FhirBoolean.Extension, v_FhirBoolean.ElementId); } } break; case FhirDecimal v_FhirDecimal: if (v_FhirDecimal != null) { if (v_FhirDecimal.Value != null) { writer.WriteNumber("valueDecimal", (decimal)v_FhirDecimal.Value); } if (v_FhirDecimal.HasExtensions() || (!string.IsNullOrEmpty(v_FhirDecimal.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_valueDecimal", false, v_FhirDecimal.Extension, v_FhirDecimal.ElementId); } } break; case Integer v_Integer: if (v_Integer != null) { if (v_Integer.Value != null) { writer.WriteNumber("valueInteger", (int)v_Integer.Value); } if (v_Integer.HasExtensions() || (!string.IsNullOrEmpty(v_Integer.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_valueInteger", false, v_Integer.Extension, v_Integer.ElementId); } } break; case Date v_Date: if (v_Date != null) { if (!string.IsNullOrEmpty(v_Date.Value)) { writer.WriteString("valueDate", v_Date.Value); } if (v_Date.HasExtensions() || (!string.IsNullOrEmpty(v_Date.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_valueDate", false, v_Date.Extension, v_Date.ElementId); } } break; case FhirDateTime v_FhirDateTime: if (v_FhirDateTime != null) { if (!string.IsNullOrEmpty(v_FhirDateTime.Value)) { writer.WriteString("valueDateTime", v_FhirDateTime.Value); } if (v_FhirDateTime.HasExtensions() || (!string.IsNullOrEmpty(v_FhirDateTime.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_valueDateTime", false, v_FhirDateTime.Extension, v_FhirDateTime.ElementId); } } break; case Time v_Time: writer.WritePropertyName("valueTime"); v_Time.SerializeJson(writer, options); break; case FhirString v_FhirString: if (v_FhirString != null) { if (!string.IsNullOrEmpty(v_FhirString.Value)) { writer.WriteString("valueString", v_FhirString.Value); } if (v_FhirString.HasExtensions() || (!string.IsNullOrEmpty(v_FhirString.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_valueString", false, v_FhirString.Extension, v_FhirString.ElementId); } } break; case FhirUri v_FhirUri: if (v_FhirUri != null) { if (!string.IsNullOrEmpty(v_FhirUri.Value)) { writer.WriteString("valueUri", v_FhirUri.Value); } if (v_FhirUri.HasExtensions() || (!string.IsNullOrEmpty(v_FhirUri.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_valueUri", false, v_FhirUri.Extension, v_FhirUri.ElementId); } } break; case Attachment v_Attachment: writer.WritePropertyName("valueAttachment"); v_Attachment.SerializeJson(writer, options); break; case Coding v_Coding: writer.WritePropertyName("valueCoding"); v_Coding.SerializeJson(writer, options); break; case Quantity v_Quantity: writer.WritePropertyName("valueQuantity"); v_Quantity.SerializeJson(writer, options); break; case ResourceReference v_ResourceReference: writer.WritePropertyName("valueReference"); v_ResourceReference.SerializeJson(writer, options); break; } } if ((current.Item != null) && (current.Item.Count != 0)) { writer.WritePropertyName("item"); writer.WriteStartArray(); foreach (QuestionnaireResponse.ItemComponent val in current.Item) { val.SerializeJson(writer, options, true); } writer.WriteEndArray(); } if (includeStartObject) { writer.WriteEndObject(); } }