void ReadXml(XmlReader reader, ExtractChapter chapter) { // <xs:extension base="LOCATABLE"> this.ReadXmlBase(reader, chapter as ExtractLocatable); // TODO: <xs:element name="directory" type="EXTRACT_FOLDER" minOccurs="0"/> if (reader.Name == "directory") { throw new NotImplementedException("directory not implemented"); } // <xs:element name="content" type="EXTRACT_CONTENT"/> Check.Require(reader.LocalName == "content", "content is mandatory"); string contentType = reader.GetAttribute("type", RmXmlSerializer.XsiNamespace); Check.Require(!string.IsNullOrEmpty(contentType), "content type must be specified"); if (!contentType.EndsWith("EHR_EXTRACT_CONTENT")) { throw new NotSupportedException("content type " + contentType + " not supported"); } EhrExtractContent content = new EhrExtractContent(); ReadXml(reader, content); chapter.Content = content; //<xs:element name="entity_identifier" type="EXTRACT_ENTITY_IDENTIFIER"/> Check.Require(reader.LocalName == "entity_identifier", "entity_identifier is mandatory"); chapter.EntityIdentifier = new ExtractEntityIdentifier(); ReadXml(reader, chapter.EntityIdentifier); reader.ReadEndElement(); reader.MoveToContent(); }
void WriteXml(XmlWriter writer, ExtractChapter chapter) { // <xs:extension base="LOCATABLE"> this.WriteXmlBase(writer, chapter as ExtractLocatable); // TODO: <xs:element name="directory" type="EXTRACT_FOLDER" minOccurs="0"/> // <xs:element name="content" type="EXTRACT_CONTENT"/> writer.WriteStartElement("content", RmXmlSerializer.OpenEhrNamespace); this.WriteXml(writer, chapter.Content); writer.WriteEndElement(); //<xs:element name="entity_identifier" type="EXTRACT_ENTITY_IDENTIFIER"/> writer.WriteStartElement("entity_identifier", RmXmlSerializer.OpenEhrNamespace); this.WriteXml(writer, chapter.EntityIdentifier); writer.WriteEndElement(); }
public XmlSerializableExtract(string archetypeNodeId, DvText name, HierObjectId systemId, ExtractChapter[] chapters) : base(archetypeNodeId, name, systemId) { foreach (ExtractChapter chapter in chapters) this.Chapters.Add(chapter); }
public void ReadXml(XmlReader reader, Extract extract) { // <xs:extension base="LOCATABLE"> this.ReadXmlBase(reader, extract as ExtractLocatable); // <xs:element name="request_id" type="OBJECT_REF" minOccurs="0"/> if (reader.LocalName == "request_id") { if (reader.HasAttributes) { throw new NotSupportedException("subtype of OBJECT_REF not supported in request_id"); } extract.RequestId = new ObjectRef(); extract.RequestId.ReadXml(reader); } // <xs:element name="time_created" type="DV_DATE_TIME"/> Check.Require(reader.LocalName == "time_created", "time_created is mandatory"); extract.TimeCreated = new DvDateTime(); extract.TimeCreated.ReadXml(reader); // <xs:element name="system_id" type="HIER_OBJECT_ID"/> Check.Require(reader.LocalName == "system_id", "system_id is mandatory"); extract.SystemId = new HierObjectId(); extract.SystemId.ReadXml(reader); // <xs:element name="partitipations" type="PARTICIPATION" minOccurs="0" maxOccurs="unbounded"/> if (reader.Name == "partitipations") { extract.Participations = new OpenEhr.AssumedTypes.List <Participation>(); } while (reader.NodeType == System.Xml.XmlNodeType.Element && reader.Name == "partitipations") { Participation participation = new Participation(); participation.ReadXml(reader); extract.Participations.Add(participation); } // <xs:element name="sequence_nr" type="xs:long"/> extract.SequenceNr = reader.ReadElementContentAsInt("sequence_nr", RmXmlSerializer.OpenEhrNamespace); reader.MoveToContent(); // <xs:element name="chapters" type="EXTRACT_CHAPTER" minOccurs="0" maxOccurs="unbounded"/> if (reader.Name == "chapters") { extract.Chapters = new OpenEhr.AssumedTypes.List <ExtractChapter>(); } while (reader.NodeType == System.Xml.XmlNodeType.Element && reader.Name == "chapters") { ExtractChapter chapter = new ExtractChapter(); this.ReadXml(reader, chapter); extract.Chapters.Add(chapter); } // TODO: <xs:element name="specification" type="EXTRACT_SPEC" minOccurs="0"/> if (reader.Name == "specification") { throw new NotImplementedException("specification not implemented"); } reader.ReadEndElement(); reader.MoveToContent(); }