/// <summary> /// Deserialize JSON into a FHIR ObservationDefinition /// </summary> public static void DeserializeJson(this ObservationDefinition 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($"ObservationDefinition >>> ObservationDefinition.{propertyName}, depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } reader.Read(); current.DeserializeJsonProperty(ref reader, options, propertyName); } } throw new JsonException($"ObservationDefinition: invalid state! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); }
/// <summary> /// Serialize a FHIR ObservationDefinition into JSON /// </summary> public static void SerializeJson(this ObservationDefinition current, Utf8JsonWriter writer, JsonSerializerOptions options, bool includeStartObject = true) { if (includeStartObject) { writer.WriteStartObject(); } writer.WriteString("resourceType", "ObservationDefinition"); // Complex: ObservationDefinition, Export: ObservationDefinition, Base: DomainResource (DomainResource) ((Hl7.Fhir.Model.DomainResource)current).SerializeJson(writer, options, false); if ((current.Category != null) && (current.Category.Count != 0)) { writer.WritePropertyName("category"); writer.WriteStartArray(); foreach (CodeableConcept val in current.Category) { val.SerializeJson(writer, options, true); } writer.WriteEndArray(); } writer.WritePropertyName("code"); current.Code.SerializeJson(writer, options); if ((current.Identifier != null) && (current.Identifier.Count != 0)) { writer.WritePropertyName("identifier"); writer.WriteStartArray(); foreach (Identifier val in current.Identifier) { val.SerializeJson(writer, options, true); } writer.WriteEndArray(); } if ((current.PermittedDataTypeElement != null) && (current.PermittedDataTypeElement.Count != 0)) { int valueCount = 0; int extensionCount = 0; foreach (Code <Hl7.Fhir.Model.ObservationDefinition.ObservationDataType> val in current.PermittedDataTypeElement) { if (val.Value != null) { valueCount++; } if (val.HasExtensions()) { extensionCount++; } } if (valueCount > 0) { writer.WritePropertyName("permittedDataType"); writer.WriteStartArray(); foreach (Code <Hl7.Fhir.Model.ObservationDefinition.ObservationDataType> val in current.PermittedDataTypeElement) { if (val.Value == null) { writer.WriteNullValue(); } else { writer.WriteStringValue(Hl7.Fhir.Utility.EnumUtility.GetLiteral(val.Value)); } } writer.WriteEndArray(); } if (extensionCount > 0) { writer.WritePropertyName("_permittedDataType"); writer.WriteStartArray(); foreach (Code <Hl7.Fhir.Model.ObservationDefinition.ObservationDataType> val in current.PermittedDataTypeElement) { 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.MultipleResultsAllowedElement != null) { if (current.MultipleResultsAllowedElement.Value != null) { writer.WriteBoolean("multipleResultsAllowed", (bool)current.MultipleResultsAllowedElement.Value); } if (current.MultipleResultsAllowedElement.HasExtensions() || (!string.IsNullOrEmpty(current.MultipleResultsAllowedElement.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_multipleResultsAllowed", false, current.MultipleResultsAllowedElement.Extension, current.MultipleResultsAllowedElement.ElementId); } } if (current.Method != null) { writer.WritePropertyName("method"); current.Method.SerializeJson(writer, options); } if (current.PreferredReportNameElement != null) { if (!string.IsNullOrEmpty(current.PreferredReportNameElement.Value)) { writer.WriteString("preferredReportName", current.PreferredReportNameElement.Value); } if (current.PreferredReportNameElement.HasExtensions() || (!string.IsNullOrEmpty(current.PreferredReportNameElement.ElementId))) { JsonStreamUtilities.SerializeExtensionList(writer, options, "_preferredReportName", false, current.PreferredReportNameElement.Extension, current.PreferredReportNameElement.ElementId); } } if (current.QuantitativeDetails != null) { writer.WritePropertyName("quantitativeDetails"); current.QuantitativeDetails.SerializeJson(writer, options); } if ((current.QualifiedInterval != null) && (current.QualifiedInterval.Count != 0)) { writer.WritePropertyName("qualifiedInterval"); writer.WriteStartArray(); foreach (ObservationDefinition.QualifiedIntervalComponent val in current.QualifiedInterval) { val.SerializeJson(writer, options, true); } writer.WriteEndArray(); } if (current.ValidCodedValueSet != null) { writer.WritePropertyName("validCodedValueSet"); current.ValidCodedValueSet.SerializeJson(writer, options); } if (current.NormalCodedValueSet != null) { writer.WritePropertyName("normalCodedValueSet"); current.NormalCodedValueSet.SerializeJson(writer, options); } if (current.AbnormalCodedValueSet != null) { writer.WritePropertyName("abnormalCodedValueSet"); current.AbnormalCodedValueSet.SerializeJson(writer, options); } if (current.CriticalCodedValueSet != null) { writer.WritePropertyName("criticalCodedValueSet"); current.CriticalCodedValueSet.SerializeJson(writer, options); } if (includeStartObject) { writer.WriteEndObject(); } }
/// <summary> /// Deserialize JSON into a FHIR ObservationDefinition /// </summary> public static void DeserializeJsonProperty(this ObservationDefinition current, ref Utf8JsonReader reader, JsonSerializerOptions options, string propertyName) { switch (propertyName) { case "category": if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read())) { throw new JsonException($"ObservationDefinition error reading 'category' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } current.Category = new List <CodeableConcept>(); while (reader.TokenType != JsonTokenType.EndArray) { Hl7.Fhir.Model.CodeableConcept v_Category = new Hl7.Fhir.Model.CodeableConcept(); v_Category.DeserializeJson(ref reader, options); current.Category.Add(v_Category); if (!reader.Read()) { throw new JsonException($"ObservationDefinition error reading 'category' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } if (reader.TokenType == JsonTokenType.EndObject) { reader.Read(); } } if (current.Category.Count == 0) { current.Category = null; } break; case "code": current.Code = new Hl7.Fhir.Model.CodeableConcept(); ((Hl7.Fhir.Model.CodeableConcept)current.Code).DeserializeJson(ref reader, options); break; case "identifier": if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read())) { throw new JsonException($"ObservationDefinition error reading 'identifier' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } current.Identifier = new List <Identifier>(); while (reader.TokenType != JsonTokenType.EndArray) { Hl7.Fhir.Model.Identifier v_Identifier = new Hl7.Fhir.Model.Identifier(); v_Identifier.DeserializeJson(ref reader, options); current.Identifier.Add(v_Identifier); if (!reader.Read()) { throw new JsonException($"ObservationDefinition error reading 'identifier' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } if (reader.TokenType == JsonTokenType.EndObject) { reader.Read(); } } if (current.Identifier.Count == 0) { current.Identifier = null; } break; case "permittedDataType": if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read())) { throw new JsonException($"ObservationDefinition error reading 'permittedDataType' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } current.PermittedDataTypeElement = new List <Code <Hl7.Fhir.Model.ObservationDefinition.ObservationDataType> >(); while (reader.TokenType != JsonTokenType.EndArray) { if (reader.TokenType == JsonTokenType.Null) { current.PermittedDataTypeElement.Add(new Code <Hl7.Fhir.Model.ObservationDefinition.ObservationDataType>()); reader.Skip(); } else { current.PermittedDataTypeElement.Add(new Code <Hl7.Fhir.Model.ObservationDefinition.ObservationDataType>(Hl7.Fhir.Utility.EnumUtility.ParseLiteral <Hl7.Fhir.Model.ObservationDefinition.ObservationDataType>(reader.GetString()))); } if (!reader.Read()) { throw new JsonException($"ObservationDefinition error reading 'permittedDataType' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } if (reader.TokenType == JsonTokenType.EndObject) { reader.Read(); } } if (current.PermittedDataTypeElement.Count == 0) { current.PermittedDataTypeElement = null; } break; case "_permittedDataType": if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read())) { throw new JsonException($"ObservationDefinition error reading 'permittedDataType' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } int i_permittedDataType = 0; while (reader.TokenType != JsonTokenType.EndArray) { if (i_permittedDataType >= current.PermittedDataTypeElement.Count) { current.PermittedDataTypeElement.Add(new Code <Hl7.Fhir.Model.ObservationDefinition.ObservationDataType>()); } if (reader.TokenType == JsonTokenType.Null) { reader.Skip(); } else { ((Hl7.Fhir.Model.Element)current.PermittedDataTypeElement[i_permittedDataType++]).DeserializeJson(ref reader, options); } if (!reader.Read()) { throw new JsonException($"ObservationDefinition error reading 'permittedDataType' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } if (reader.TokenType == JsonTokenType.EndObject) { reader.Read(); } } break; case "multipleResultsAllowed": if (reader.TokenType == JsonTokenType.Null) { current.MultipleResultsAllowedElement = new FhirBoolean(); reader.Skip(); } else { current.MultipleResultsAllowedElement = new FhirBoolean(reader.GetBoolean()); } break; case "_multipleResultsAllowed": if (current.MultipleResultsAllowedElement == null) { current.MultipleResultsAllowedElement = new FhirBoolean(); } ((Hl7.Fhir.Model.Element)current.MultipleResultsAllowedElement).DeserializeJson(ref reader, options); break; case "method": current.Method = new Hl7.Fhir.Model.CodeableConcept(); ((Hl7.Fhir.Model.CodeableConcept)current.Method).DeserializeJson(ref reader, options); break; case "preferredReportName": if (reader.TokenType == JsonTokenType.Null) { current.PreferredReportNameElement = new FhirString(); reader.Skip(); } else { current.PreferredReportNameElement = new FhirString(reader.GetString()); } break; case "_preferredReportName": if (current.PreferredReportNameElement == null) { current.PreferredReportNameElement = new FhirString(); } ((Hl7.Fhir.Model.Element)current.PreferredReportNameElement).DeserializeJson(ref reader, options); break; case "quantitativeDetails": current.QuantitativeDetails = new Hl7.Fhir.Model.ObservationDefinition.QuantitativeDetailsComponent(); ((Hl7.Fhir.Model.ObservationDefinition.QuantitativeDetailsComponent)current.QuantitativeDetails).DeserializeJson(ref reader, options); break; case "qualifiedInterval": if ((reader.TokenType != JsonTokenType.StartArray) || (!reader.Read())) { throw new JsonException($"ObservationDefinition error reading 'qualifiedInterval' expected StartArray, found {reader.TokenType}! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } current.QualifiedInterval = new List <ObservationDefinition.QualifiedIntervalComponent>(); while (reader.TokenType != JsonTokenType.EndArray) { Hl7.Fhir.Model.ObservationDefinition.QualifiedIntervalComponent v_QualifiedInterval = new Hl7.Fhir.Model.ObservationDefinition.QualifiedIntervalComponent(); v_QualifiedInterval.DeserializeJson(ref reader, options); current.QualifiedInterval.Add(v_QualifiedInterval); if (!reader.Read()) { throw new JsonException($"ObservationDefinition error reading 'qualifiedInterval' array, read failed! depth: {reader.CurrentDepth}, pos: {reader.BytesConsumed}"); } if (reader.TokenType == JsonTokenType.EndObject) { reader.Read(); } } if (current.QualifiedInterval.Count == 0) { current.QualifiedInterval = null; } break; case "validCodedValueSet": current.ValidCodedValueSet = new Hl7.Fhir.Model.ResourceReference(); ((Hl7.Fhir.Model.ResourceReference)current.ValidCodedValueSet).DeserializeJson(ref reader, options); break; case "normalCodedValueSet": current.NormalCodedValueSet = new Hl7.Fhir.Model.ResourceReference(); ((Hl7.Fhir.Model.ResourceReference)current.NormalCodedValueSet).DeserializeJson(ref reader, options); break; case "abnormalCodedValueSet": current.AbnormalCodedValueSet = new Hl7.Fhir.Model.ResourceReference(); ((Hl7.Fhir.Model.ResourceReference)current.AbnormalCodedValueSet).DeserializeJson(ref reader, options); break; case "criticalCodedValueSet": current.CriticalCodedValueSet = new Hl7.Fhir.Model.ResourceReference(); ((Hl7.Fhir.Model.ResourceReference)current.CriticalCodedValueSet).DeserializeJson(ref reader, options); break; // Complex: ObservationDefinition, Export: ObservationDefinition, Base: DomainResource default: ((Hl7.Fhir.Model.DomainResource)current).DeserializeJsonProperty(ref reader, options, propertyName); break; } }