public static void SerializeVisit(Hl7.Fhir.Model.Visit value, IFhirWriter writer) { writer.WriteStartRootObject("Visit"); writer.WriteStartComplexContent(); // Serialize element _id if (value.LocalId != null) { writer.WritePrimitiveContents("_id", value.LocalId, XmlSerializationHint.Attribute); } // Serialize element extension if (value.Extension != null && value.Extension.Count > 0) { writer.WriteStartArrayElement("extension"); foreach (var item in value.Extension) { writer.WriteStartArrayMember("extension"); ExtensionSerializer.SerializeExtension(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element language if (value.Language != null) { writer.WriteStartElement("language"); CodeSerializer.SerializeCode(value.Language, writer); writer.WriteEndElement(); } // Serialize element text if (value.Text != null) { writer.WriteStartElement("text"); NarrativeSerializer.SerializeNarrative(value.Text, writer); writer.WriteEndElement(); } // Serialize element contained if (value.Contained != null && value.Contained.Count > 0) { writer.WriteStartArrayElement("contained"); foreach (var item in value.Contained) { writer.WriteStartArrayMember("contained"); FhirSerializer.SerializeResource(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element identifier if (value.Identifier != null && value.Identifier.Count > 0) { writer.WriteStartArrayElement("identifier"); foreach (var item in value.Identifier) { writer.WriteStartArrayMember("identifier"); IdentifierSerializer.SerializeIdentifier(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element status if (value.Status != null) { writer.WriteStartElement("status"); CodeSerializer.SerializeCode <Hl7.Fhir.Model.Visit.EncounterState>(value.Status, writer); writer.WriteEndElement(); } // Serialize element class if (value.Class != null) { writer.WriteStartElement("class"); CodeSerializer.SerializeCode <Hl7.Fhir.Model.Visit.EncounterClass>(value.Class, writer); writer.WriteEndElement(); } // Serialize element type if (value.Type != null) { writer.WriteStartElement("type"); CodeableConceptSerializer.SerializeCodeableConcept(value.Type, writer); writer.WriteEndElement(); } // Serialize element subject if (value.Subject != null) { writer.WriteStartElement("subject"); ResourceReferenceSerializer.SerializeResourceReference(value.Subject, writer); writer.WriteEndElement(); } // Serialize element participant if (value.Participant != null && value.Participant.Count > 0) { writer.WriteStartArrayElement("participant"); foreach (var item in value.Participant) { writer.WriteStartArrayMember("participant"); VisitSerializer.SerializeVisitParticipantComponent(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element fulfills if (value.Fulfills != null) { writer.WriteStartElement("fulfills"); ResourceReferenceSerializer.SerializeResourceReference(value.Fulfills, writer); writer.WriteEndElement(); } // Serialize element length if (value.Length != null) { writer.WriteStartElement("length"); QuantitySerializer.SerializeQuantity(value.Length, writer); writer.WriteEndElement(); } // Serialize element reason if (value.Reason != null) { writer.WriteStartElement(SerializationUtil.BuildPolymorphicName("reason", value.Reason.GetType())); FhirSerializer.SerializeElement(value.Reason, writer); writer.WriteEndElement(); } // Serialize element indication if (value.Indication != null) { writer.WriteStartElement("indication"); ResourceReferenceSerializer.SerializeResourceReference(value.Indication, writer); writer.WriteEndElement(); } // Serialize element priority if (value.Priority != null) { writer.WriteStartElement("priority"); CodeableConceptSerializer.SerializeCodeableConcept(value.Priority, writer); writer.WriteEndElement(); } // Serialize element hospitalization if (value.Hospitalization != null) { writer.WriteStartElement("hospitalization"); VisitSerializer.SerializeVisitHospitalizationComponent(value.Hospitalization, writer); writer.WriteEndElement(); } // Serialize element location if (value.Location != null && value.Location.Count > 0) { writer.WriteStartArrayElement("location"); foreach (var item in value.Location) { writer.WriteStartArrayMember("location"); VisitSerializer.SerializeVisitLocationComponent(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element serviceProvider if (value.ServiceProvider != null) { writer.WriteStartElement("serviceProvider"); ResourceReferenceSerializer.SerializeResourceReference(value.ServiceProvider, writer); writer.WriteEndElement(); } writer.WriteEndComplexContent(); writer.WriteEndRootObject(); }
/// <summary> /// Parse Visit /// </summary> public static Hl7.Fhir.Model.Visit ParseVisit(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Visit existingInstance = null) { Hl7.Fhir.Model.Visit result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Visit(); try { string currentElementName = reader.CurrentElementName; reader.EnterElement(); while (reader.HasMoreElements()) { var atName = reader.CurrentElementName; // Parse element extension if (atName == "extension") { result.Extension = new List <Hl7.Fhir.Model.Extension>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "extension")) { result.Extension.Add(ExtensionParser.ParseExtension(reader, errors)); } reader.LeaveArray(); } // Parse element language else if (atName == "language") { result.Language = CodeParser.ParseCode(reader, errors); } // Parse element text else if (atName == "text") { result.Text = NarrativeParser.ParseNarrative(reader, errors); } // Parse element contained else if (atName == "contained") { result.Contained = new List <Hl7.Fhir.Model.Resource>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "contained")) { result.Contained.Add(ParserUtils.ParseContainedResource(reader, errors)); } reader.LeaveArray(); } // Parse element _id else if (atName == "_id") { result.LocalId = Id.Parse(reader.ReadPrimitiveContents(typeof(Id))); } // Parse element identifier else if (atName == "identifier") { result.Identifier = new List <Hl7.Fhir.Model.Identifier>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "identifier")) { result.Identifier.Add(IdentifierParser.ParseIdentifier(reader, errors)); } reader.LeaveArray(); } // Parse element status else if (atName == "status") { result.Status = CodeParser.ParseCode <Hl7.Fhir.Model.Visit.EncounterState>(reader, errors); } // Parse element class else if (atName == "class") { result.Class = CodeParser.ParseCode <Hl7.Fhir.Model.Visit.EncounterClass>(reader, errors); } // Parse element type else if (atName == "type") { result.Type = CodeableConceptParser.ParseCodeableConcept(reader, errors); } // Parse element subject else if (atName == "subject") { result.Subject = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element participant else if (atName == "participant") { result.Participant = new List <Hl7.Fhir.Model.Visit.VisitParticipantComponent>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "participant")) { result.Participant.Add(VisitParser.ParseVisitParticipantComponent(reader, errors)); } reader.LeaveArray(); } // Parse element fulfills else if (atName == "fulfills") { result.Fulfills = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element length else if (atName == "length") { result.Length = DurationParser.ParseDuration(reader, errors); } // Parse element reason else if (atName.StartsWith("reason")) { result.Reason = FhirParser.ParseElement(reader, errors); } // Parse element indication else if (atName == "indication") { result.Indication = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element priority else if (atName == "priority") { result.Priority = CodeableConceptParser.ParseCodeableConcept(reader, errors); } // Parse element hospitalization else if (atName == "hospitalization") { result.Hospitalization = VisitParser.ParseVisitHospitalizationComponent(reader, errors); } // Parse element location else if (atName == "location") { result.Location = new List <Hl7.Fhir.Model.Visit.VisitLocationComponent>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "location")) { result.Location.Add(VisitParser.ParseVisitLocationComponent(reader, errors)); } reader.LeaveArray(); } // Parse element serviceProvider else if (atName == "serviceProvider") { result.ServiceProvider = ResourceReferenceParser.ParseResourceReference(reader, errors); } else { errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader); reader.SkipSubElementsFor(currentElementName); result = null; } } reader.LeaveElement(); } catch (Exception ex) { errors.Add(ex.Message, reader); } return(result); }