/// <summary> /// Parse XdsEntry /// </summary> public static XdsEntry ParseXdsEntry(IFhirReader reader, ErrorList errors, XdsEntry existingInstance = null) { XdsEntry result = existingInstance != null ? existingInstance : new XdsEntry(); try { string currentElementName = reader.CurrentElementName; reader.EnterElement(); while (reader.HasMoreElements()) { // Parse element extension if (ParserUtils.IsAtFhirElement(reader, "extension")) { result.Extension = new List <Extension>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "extension")) { result.Extension.Add(ExtensionParser.ParseExtension(reader, errors)); } reader.LeaveArray(); } // Parse element language else if (ParserUtils.IsAtFhirElement(reader, "language")) { result.Language = CodeParser.ParseCode(reader, errors); } // Parse element text else if (ParserUtils.IsAtFhirElement(reader, "text")) { result.Text = NarrativeParser.ParseNarrative(reader, errors); } // Parse element contained else if (ParserUtils.IsAtFhirElement(reader, "contained")) { result.Contained = new List <Resource>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "contained")) { result.Contained.Add(ParserUtils.ParseContainedResource(reader, errors)); } reader.LeaveArray(); } // Parse element internalId else if (reader.IsAtRefIdElement()) { result.InternalId = Id.Parse(reader.ReadRefIdContents()); } // Parse element url else if (ParserUtils.IsAtFhirElement(reader, "url")) { result.Url = FhirUriParser.ParseFhirUri(reader, errors); } // Parse element repositoryId else if (ParserUtils.IsAtFhirElement(reader, "repositoryId")) { result.RepositoryId = FhirUriParser.ParseFhirUri(reader, errors); } // Parse element mimeType else if (ParserUtils.IsAtFhirElement(reader, "mimeType")) { result.MimeType = FhirStringParser.ParseFhirString(reader, errors); } // Parse element format else if (ParserUtils.IsAtFhirElement(reader, "format")) { result.Format = CodingParser.ParseCoding(reader, errors); } // Parse element class else if (ParserUtils.IsAtFhirElement(reader, "class")) { result.Class = CodingParser.ParseCoding(reader, errors); } // Parse element type else if (ParserUtils.IsAtFhirElement(reader, "type")) { result.Type = CodingParser.ParseCoding(reader, errors); } // Parse element title else if (ParserUtils.IsAtFhirElement(reader, "title")) { result.Title = FhirStringParser.ParseFhirString(reader, errors); } // Parse element documentId else if (ParserUtils.IsAtFhirElement(reader, "documentId")) { result.DocumentId = FhirUriParser.ParseFhirUri(reader, errors); } // Parse element availability else if (ParserUtils.IsAtFhirElement(reader, "availability")) { result.Availability = CodeParser.ParseCode <XdsEntry.XdsEntryAvailability>(reader, errors); } // Parse element confidentialityCode else if (ParserUtils.IsAtFhirElement(reader, "confidentialityCode")) { result.ConfidentialityCode = CodingParser.ParseCoding(reader, errors); } // Parse element created else if (ParserUtils.IsAtFhirElement(reader, "created")) { result.Created = InstantParser.ParseInstant(reader, errors); } // Parse element event else if (ParserUtils.IsAtFhirElement(reader, "event")) { result.Event = new List <Coding>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "event")) { result.Event.Add(CodingParser.ParseCoding(reader, errors)); } reader.LeaveArray(); } // Parse element hash else if (ParserUtils.IsAtFhirElement(reader, "hash")) { result.Hash = FhirStringParser.ParseFhirString(reader, errors); } // Parse element size else if (ParserUtils.IsAtFhirElement(reader, "size")) { result.Size = FhirStringParser.ParseFhirString(reader, errors); } // Parse element lang else if (ParserUtils.IsAtFhirElement(reader, "lang")) { result.Lang = FhirStringParser.ParseFhirString(reader, errors); } // Parse element folder else if (ParserUtils.IsAtFhirElement(reader, "folder")) { result.Folder = new List <ResourceReference>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "folder")) { result.Folder.Add(ResourceReferenceParser.ParseResourceReference(reader, errors)); } reader.LeaveArray(); } // Parse element patientId else if (ParserUtils.IsAtFhirElement(reader, "patientId")) { result.PatientId = IdentifierParser.ParseIdentifier(reader, errors); } // Parse element sourcePatientId else if (ParserUtils.IsAtFhirElement(reader, "sourcePatientId")) { result.SourcePatientId = IdentifierParser.ParseIdentifier(reader, errors); } // Parse element patientInfo else if (ParserUtils.IsAtFhirElement(reader, "patientInfo")) { result.PatientInfo = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element author else if (ParserUtils.IsAtFhirElement(reader, "author")) { result.Author = new List <XdsEntry.XdsEntryAuthorComponent>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "author")) { result.Author.Add(XdsEntryParser.ParseXdsEntryAuthorComponent(reader, errors)); } reader.LeaveArray(); } // Parse element authenticator else if (ParserUtils.IsAtFhirElement(reader, "authenticator")) { result.Authenticator = XdsEntryParser.ParseXdsEntryAuthenticatorComponent(reader, errors); } // Parse element facilityType else if (ParserUtils.IsAtFhirElement(reader, "facilityType")) { result.FacilityType = CodingParser.ParseCoding(reader, errors); } // Parse element practiceSetting else if (ParserUtils.IsAtFhirElement(reader, "practiceSetting")) { result.PracticeSetting = CodingParser.ParseCoding(reader, errors); } // Parse element homeCommunity else if (ParserUtils.IsAtFhirElement(reader, "homeCommunity")) { result.HomeCommunity = FhirUriParser.ParseFhirUri(reader, errors); } // Parse element service else if (ParserUtils.IsAtFhirElement(reader, "service")) { result.Service = XdsEntryParser.ParseXdsEntryServiceComponent(reader, errors); } // Parse element comments else if (ParserUtils.IsAtFhirElement(reader, "comments")) { result.Comments = FhirStringParser.ParseFhirString(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); }
public static void SerializeXdsEntry(XdsEntry value, IFhirWriter writer) { writer.WriteStartRootObject("XdsEntry"); writer.WriteStartComplexContent(); // Serialize element's localId attribute if (value.InternalId != null && !String.IsNullOrEmpty(value.InternalId.Contents)) { writer.WriteRefIdContents(value.InternalId.Contents); } // 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 url if (value.Url != null) { writer.WriteStartElement("url"); FhirUriSerializer.SerializeFhirUri(value.Url, writer); writer.WriteEndElement(); } // Serialize element repositoryId if (value.RepositoryId != null) { writer.WriteStartElement("repositoryId"); FhirUriSerializer.SerializeFhirUri(value.RepositoryId, writer); writer.WriteEndElement(); } // Serialize element mimeType if (value.MimeType != null) { writer.WriteStartElement("mimeType"); FhirStringSerializer.SerializeFhirString(value.MimeType, writer); writer.WriteEndElement(); } // Serialize element format if (value.Format != null) { writer.WriteStartElement("format"); CodingSerializer.SerializeCoding(value.Format, writer); writer.WriteEndElement(); } // Serialize element class if (value.Class != null) { writer.WriteStartElement("class"); CodingSerializer.SerializeCoding(value.Class, writer); writer.WriteEndElement(); } // Serialize element type if (value.Type != null) { writer.WriteStartElement("type"); CodingSerializer.SerializeCoding(value.Type, writer); writer.WriteEndElement(); } // Serialize element title if (value.Title != null) { writer.WriteStartElement("title"); FhirStringSerializer.SerializeFhirString(value.Title, writer); writer.WriteEndElement(); } // Serialize element documentId if (value.DocumentId != null) { writer.WriteStartElement("documentId"); FhirUriSerializer.SerializeFhirUri(value.DocumentId, writer); writer.WriteEndElement(); } // Serialize element availability if (value.Availability != null) { writer.WriteStartElement("availability"); CodeSerializer.SerializeCode <XdsEntry.XdsEntryAvailability>(value.Availability, writer); writer.WriteEndElement(); } // Serialize element confidentialityCode if (value.ConfidentialityCode != null) { writer.WriteStartElement("confidentialityCode"); CodingSerializer.SerializeCoding(value.ConfidentialityCode, writer); writer.WriteEndElement(); } // Serialize element created if (value.Created != null) { writer.WriteStartElement("created"); InstantSerializer.SerializeInstant(value.Created, writer); writer.WriteEndElement(); } // Serialize element event if (value.Event != null && value.Event.Count > 0) { writer.WriteStartArrayElement("event"); foreach (var item in value.Event) { writer.WriteStartArrayMember("event"); CodingSerializer.SerializeCoding(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element hash if (value.Hash != null) { writer.WriteStartElement("hash"); FhirStringSerializer.SerializeFhirString(value.Hash, writer); writer.WriteEndElement(); } // Serialize element size if (value.Size != null) { writer.WriteStartElement("size"); FhirStringSerializer.SerializeFhirString(value.Size, writer); writer.WriteEndElement(); } // Serialize element lang if (value.Lang != null) { writer.WriteStartElement("lang"); FhirStringSerializer.SerializeFhirString(value.Lang, writer); writer.WriteEndElement(); } // Serialize element folder if (value.Folder != null && value.Folder.Count > 0) { writer.WriteStartArrayElement("folder"); foreach (var item in value.Folder) { writer.WriteStartArrayMember("folder"); ResourceReferenceSerializer.SerializeResourceReference(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element patientId if (value.PatientId != null) { writer.WriteStartElement("patientId"); IdentifierSerializer.SerializeIdentifier(value.PatientId, writer); writer.WriteEndElement(); } // Serialize element sourcePatientId if (value.SourcePatientId != null) { writer.WriteStartElement("sourcePatientId"); IdentifierSerializer.SerializeIdentifier(value.SourcePatientId, writer); writer.WriteEndElement(); } // Serialize element patientInfo if (value.PatientInfo != null) { writer.WriteStartElement("patientInfo"); ResourceReferenceSerializer.SerializeResourceReference(value.PatientInfo, writer); writer.WriteEndElement(); } // Serialize element author if (value.Author != null && value.Author.Count > 0) { writer.WriteStartArrayElement("author"); foreach (var item in value.Author) { writer.WriteStartArrayMember("author"); XdsEntrySerializer.SerializeXdsEntryAuthorComponent(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element authenticator if (value.Authenticator != null) { writer.WriteStartElement("authenticator"); XdsEntrySerializer.SerializeXdsEntryAuthenticatorComponent(value.Authenticator, writer); writer.WriteEndElement(); } // Serialize element facilityType if (value.FacilityType != null) { writer.WriteStartElement("facilityType"); CodingSerializer.SerializeCoding(value.FacilityType, writer); writer.WriteEndElement(); } // Serialize element practiceSetting if (value.PracticeSetting != null) { writer.WriteStartElement("practiceSetting"); CodingSerializer.SerializeCoding(value.PracticeSetting, writer); writer.WriteEndElement(); } // Serialize element homeCommunity if (value.HomeCommunity != null) { writer.WriteStartElement("homeCommunity"); FhirUriSerializer.SerializeFhirUri(value.HomeCommunity, writer); writer.WriteEndElement(); } // Serialize element service if (value.Service != null) { writer.WriteStartElement("service"); XdsEntrySerializer.SerializeXdsEntryServiceComponent(value.Service, writer); writer.WriteEndElement(); } // Serialize element comments if (value.Comments != null) { writer.WriteStartElement("comments"); FhirStringSerializer.SerializeFhirString(value.Comments, writer); writer.WriteEndElement(); } writer.WriteEndComplexContent(); writer.WriteEndRootObject(); }