Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
 public XmlSerializableExtract(string archetypeNodeId, DvText name, HierObjectId systemId, ExtractChapter[] chapters)
     : base(archetypeNodeId, name, systemId)
 {
     foreach (ExtractChapter chapter in chapters)
         this.Chapters.Add(chapter);
 }
Ejemplo n.º 4
0
        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();
        }