/// <summary> /// Parse Provider /// </summary> public static Provider ParseProvider(IFhirReader reader, ErrorList errors, Provider existingInstance = null ) { Provider result = existingInstance != null ? existingInstance : new Provider(); 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 identifier else if( ParserUtils.IsAtFhirElement(reader, "identifier") ) { result.Identifier = new List<Identifier>(); reader.EnterArray(); while( ParserUtils.IsAtArrayElement(reader, "identifier") ) result.Identifier.Add(IdentifierParser.ParseIdentifier(reader, errors)); reader.LeaveArray(); } // Parse element details else if( ParserUtils.IsAtFhirElement(reader, "details") ) result.Details = DemographicsParser.ParseDemographics(reader, errors); // Parse element organization else if( ParserUtils.IsAtFhirElement(reader, "organization") ) result.Organization = ResourceReferenceParser.ParseResourceReference(reader, errors); // Parse element role else if( ParserUtils.IsAtFhirElement(reader, "role") ) { result.Role = new List<CodeableConcept>(); reader.EnterArray(); while( ParserUtils.IsAtArrayElement(reader, "role") ) result.Role.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors)); reader.LeaveArray(); } // Parse element specialty else if( ParserUtils.IsAtFhirElement(reader, "specialty") ) { result.Specialty = new List<CodeableConcept>(); reader.EnterArray(); while( ParserUtils.IsAtArrayElement(reader, "specialty") ) result.Specialty.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors)); reader.LeaveArray(); } // Parse element period else if( ParserUtils.IsAtFhirElement(reader, "period") ) result.Period = PeriodParser.ParsePeriod(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 SerializeProvider(Provider value, IFhirWriter writer) { writer.WriteStartRootObject("Provider"); 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 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 details if(value.Details != null) { writer.WriteStartElement("details"); DemographicsSerializer.SerializeDemographics(value.Details, writer); writer.WriteEndElement(); } // Serialize element organization if(value.Organization != null) { writer.WriteStartElement("organization"); ResourceReferenceSerializer.SerializeResourceReference(value.Organization, writer); writer.WriteEndElement(); } // Serialize element role if(value.Role != null && value.Role.Count > 0) { writer.WriteStartArrayElement("role"); foreach(var item in value.Role) { writer.WriteStartArrayMember("role"); CodeableConceptSerializer.SerializeCodeableConcept(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element specialty if(value.Specialty != null && value.Specialty.Count > 0) { writer.WriteStartArrayElement("specialty"); foreach(var item in value.Specialty) { writer.WriteStartArrayMember("specialty"); CodeableConceptSerializer.SerializeCodeableConcept(item, writer); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element period if(value.Period != null) { writer.WriteStartElement("period"); PeriodSerializer.SerializePeriod(value.Period, writer); writer.WriteEndElement(); } writer.WriteEndComplexContent(); writer.WriteEndRootObject(); }