Ejemplo n.º 1
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            if (reader.LocalName == "items")
            {
                LocatableList <Element> items = new LocatableList <Element>();

                do
                {
                    Element element = new Element();
                    element.ReadXml(reader);
                    element.Parent = this;
                    items.Add(element);
                    // Added checking on reader.NodeType == Element is because ItemList xml instance
                    // is something like: <items> <items xsi:type='ELEMENT'>..</items></items>.
                    // After reading all element contents, the reader.LocalName is still items,
                    // but the reader NodeType is EndElement. This situation is similar as Section, ItemTable
                } while (reader.LocalName == "items" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.items = items;
            }

            reader.MoveToContent();
        }
Ejemplo n.º 2
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            if (reader.NodeType == System.Xml.XmlNodeType.Element && reader.LocalName == "folders")
            {
                LocatableList <Folder> folders = new LocatableList <Folder>();
                do
                {
                    Folder folder = new Folder();

                    folder.ReadXml(reader);

                    folder.Parent = this;
                    folders.Add(folder);
                } while (reader.LocalName == "folders" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.folders = folders;
            }

            if (reader.LocalName == "items")
            {
                AssumedTypes.List <ObjectRef> items = new AssumedTypes.List <ObjectRef>();
                do
                {
                    ObjectRef item = new ObjectRef();

                    item.ReadXml(reader);
                    items.Add(item);
                } while (reader.LocalName == "items" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.items = items;
            }
        }
Ejemplo n.º 3
0
        public object ItemAtPath(object obj)
        {
            object itemAtPath = this.pathExpr.Evaluate(obj);

            AssumedTypes.IList iList = itemAtPath as AssumedTypes.IList;

            // if itemAtPath is not a list, return it.
            if (iList == null)
            {
                return(itemAtPath);
            }

            //// if itemAtPath is a list, generate LocatableList when the items are locatable.
            //// otherwise return the list
            LocatableList <Locatable> locatableList = null;


            AssumedTypes.List <object> items = iList as AssumedTypes.List <object>;
            if (items != null)
            {
                return(items);
            }
            else
            {
                items = new OpenEhr.AssumedTypes.List <object>();
            }

            foreach (object o in iList)
            {
                items.Add(o);
            }

            return(items);
        }
Ejemplo n.º 4
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            DesignByContract.Check.Assert(reader.LocalName == "language",
                                          "Expected LocalName is 'language', but it is " + reader.LocalName);
            this.language = new OpenEhr.RM.DataTypes.Text.CodePhrase();
            this.language.ReadXml(reader);

            DesignByContract.Check.Assert(reader.LocalName == "territory",
                                          "Expected LocalName is 'territory', but it is " + reader.LocalName);
            this.territory = new OpenEhr.RM.DataTypes.Text.CodePhrase();
            this.territory.ReadXml(reader);

            DesignByContract.Check.Assert(reader.LocalName == "category",
                                          "Expected LocalName is 'category', but it is " + reader.LocalName);
            this.category = new OpenEhr.RM.DataTypes.Text.DvCodedText();
            this.category.ReadXml(reader);

            DesignByContract.Check.Assert(reader.LocalName == "composer",
                                          "Expected LocalName is 'composer', but it is " + reader.LocalName);
            string composerType = RmXmlSerializer.ReadXsiType(reader);

            this.composer = RmFactory.PartyProxy(composerType);

            this.composer.ReadXml(reader);

            if (reader.LocalName == "context")
            {
                this.context = new EventContext();
                this.context.ReadXml(reader);
                this.context.Parent = this;
            }

            if (reader.LocalName == "content")
            {
                OpenEhr.AssumedTypes.Impl.LocatableList <ContentItem> contents =
                    new OpenEhr.AssumedTypes.Impl.LocatableList <ContentItem>();
                do
                {
                    string contentType = reader.GetAttribute("type", RmXmlSerializer.XsiNamespace);
                    Check.Assert(!string.IsNullOrEmpty(contentType), "content type must not be null or empty.");

                    ContentItem aContentItem = ContentItem.GetLocatableObjectByType(contentType)
                                               as ContentItem;
                    if (aContentItem == null)
                    {
                        throw new InvalidOperationException("Composition contentType must be type of ContentItem: " + contentType);
                    }
                    aContentItem.ReadXml(reader);

                    aContentItem.Parent = this;
                    contents.Add(aContentItem);
                } while (reader.LocalName == "content" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.content = contents;
            }
        }
Ejemplo n.º 5
0
        public Folder(DvText name, string archetypeNodeId, UidBasedId uid,
            List<Link> links, 
            Archetyped.Impl.Archetyped archetypeDetails, FeederAudit feederAudit, 
            System.Collections.Generic.IEnumerable<Folder> folders,
            System.Collections.Generic.IEnumerable<ObjectRef> items)
            : base(name, archetypeNodeId, uid, links, archetypeDetails, feederAudit)
        {
            if (folders != null)
                this.folders = RmFactory.List<Folder>(this, folders) as LocatableList<Folder>;
            if (items != null)
                this.items = new List<ObjectRef>(items);

            SetAttributeDictionary();
        }
Ejemplo n.º 6
0
        public Folder(DvText name, string archetypeNodeId, UidBasedId uid,
            List<Link> links, Archetyped.Impl.Archetyped archetypeDetails,FeederAudit feederAudit, 
            List<Folder> folders, List<ObjectRef> items)
            : base(name, archetypeNodeId, uid, links, archetypeDetails, feederAudit)
        {
            LocatableList<Folder> locatableList = folders as LocatableList<Folder>;
            // LocatableList can not be constructed without a parent, hence will not have a parent of this object is it is yet to be constructed
            Check.Require(locatableList == null, "folders must not be of type LocatableList with another parent");

            if (folders != null)
                this.folders = RmFactory.List<Folder>(this, folders) as LocatableList<Folder>;
            this.items = items;

            SetAttributeDictionary();
        }
Ejemplo n.º 7
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            // CM: 21/08/09 This code doesn't support a section without items.
            // e.g.

            /** <items xsi:type="SECTION" archetype_node_id="at0002">
             *   <name>
             *     <value>Mother</value>
             *    </name>
             *  </items>
             *
             * <items xsi:type="SECTION" archetype_node_id="at0002">
             *   <name>
             *     <value>Mother</value>
             *    </name>
             *      <items/>
             *  </items>
             * */
            if (reader.NodeType == System.Xml.XmlNodeType.Element && reader.LocalName == "items")
            {
                if (reader.IsEmptyElement)
                {
                    reader.Skip();
                }
                else
                {
                    LocatableList <ContentItem> items = new LocatableList <ContentItem>();
                    do
                    {
                        string      itemType    = reader.GetAttribute("type", RmXmlSerializer.XsiNamespace);
                        ContentItem contentItem = ContentItem.GetLocatableObjectByType(itemType)
                                                  as ContentItem;
                        if (contentItem == null)
                        {
                            throw new InvalidOperationException("itemType must be type of ContentItem: " + itemType);
                        }

                        contentItem.ReadXml(reader);
                        contentItem.Parent = this;
                        items.Add(contentItem);
                    } while (reader.LocalName == "items" && reader.NodeType == System.Xml.XmlNodeType.Element);

                    this.items = items;
                }
            }
        }
Ejemplo n.º 8
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            DesignByContract.Check.Assert(reader.LocalName == "narrative",
                                          "Expected LocalName is 'narrative', but it is " + reader.LocalName);
            string narrativeType = reader.GetAttribute("type", RmXmlSerializer.XsiNamespace);

            if (narrativeType != null)
            {
                this.narrative = new OpenEhr.RM.DataTypes.Text.DvCodedText();
            }
            else
            {
                this.narrative = new OpenEhr.RM.DataTypes.Text.DvText();
            }
            this.narrative.ReadXml(reader);

            if (reader.LocalName == "expiry_time")
            {
                this.expiryTime = new OpenEhr.RM.DataTypes.Quantity.DateTime.DvDateTime();
                this.expiryTime.ReadXml(reader);
            }

            if (reader.LocalName == "wf_definition")
            {
                this.wfDefinition = new OpenEhr.RM.DataTypes.Encapsulated.DvParsable();
                this.wfDefinition.ReadXml(reader);
            }

            if (reader.LocalName == "activities")
            {
                AssumedTypes.Impl.LocatableList <Activity> activities = new OpenEhr.AssumedTypes.Impl.LocatableList <Activity>();
                do
                {
                    Activity activity = new Activity();
                    activity.ReadXml(reader);

                    activity.Parent = this;
                    activities.Add(activity);
                } while (reader.LocalName == "activities" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.activities = activities;
            }
        }
Ejemplo n.º 9
0
        public Folder(DvText name, string archetypeNodeId, UidBasedId uid,
                      List <Link> links, Archetyped.Impl.Archetyped archetypeDetails, FeederAudit feederAudit,
                      List <Folder> folders, List <ObjectRef> items)
            : base(name, archetypeNodeId, uid, links, archetypeDetails, feederAudit)
        {
            LocatableList <Folder> locatableList = folders as LocatableList <Folder>;

            // LocatableList can not be constructed without a parent, hence will not have a parent of this object is it is yet to be constructed
            Check.Require(locatableList == null, "folders must not be of type LocatableList with another parent");

            if (folders != null)
            {
                this.folders = RmFactory.List <Folder>(this, folders) as LocatableList <Folder>;
            }
            this.items = items;

            SetAttributeDictionary();
        }
Ejemplo n.º 10
0
        protected override void ReadXmlBase(XmlReader reader)
        {
            base.ReadXmlBase(reader);

            if (reader.LocalName == "rows")
            {
                LocatableList <Representation.Cluster> rows =
                    new LocatableList <OpenEhr.RM.DataStructures.ItemStructure.Representation.Cluster>();

                while (reader.LocalName == "rows")
                {
                    OpenEhr.RM.DataStructures.ItemStructure.Representation.Cluster aCluster =
                        new OpenEhr.RM.DataStructures.ItemStructure.Representation.Cluster();
                    aCluster.ReadXml(reader);
                    aCluster.Parent = this;
                    rows.Add(aCluster);
                }
                this.rows = rows;
            }
        }
Ejemplo n.º 11
0
        public Instruction(DvText name, string archetypeNodeId, UidBasedId uid,
         Link[] links, Archetyped archetypeDetails, FeederAudit feederAudit,
         CodePhrase language, CodePhrase encoding, PartyProxy subject, PartyProxy proider,
         Participation[] otherParticipations, ObjectRef workflowId, ItemStructure protocol,
         ObjectRef guidelineId, DvText narrative, DvDateTime expiryTime,
         Activity[] activities, DvParsable wfDefinition)
            : base(name, archetypeNodeId, uid, links, archetypeDetails, feederAudit, language,
          encoding, subject, proider, otherParticipations, workflowId, protocol, guidelineId)
        {
            Check.Require(narrative != null, "narrative must not be null");

            this.narrative = narrative;
            this.expiryTime = expiryTime;
            if (activities != null)
            {
                this.activities = RmFactory.LocatableList<Activity>(this, activities);
            }
            this.wfDefinition = wfDefinition;

            SetAttributeDictionary();
            CheckInvariants();
        }
Ejemplo n.º 12
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            if (reader.NodeType == System.Xml.XmlNodeType.Element && reader.LocalName == "folders")
            {
                LocatableList<Folder> folders = new LocatableList<Folder>();
                do
                {
                    Folder folder = new Folder();

                    folder.ReadXml(reader);

                    folder.Parent = this;
                    folders.Add(folder);
                } while (reader.LocalName == "folders" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.folders = folders;
            }

            if (reader.LocalName == "items")
            {
                AssumedTypes.List<ObjectRef> items = new AssumedTypes.List<ObjectRef>();
                do
                {
                    ObjectRef item = new ObjectRef();

                    item.ReadXml(reader);
                    items.Add(item);
                } while (reader.LocalName == "items" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.items = items;
            }
        }
Ejemplo n.º 13
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            DesignByContract.Check.Assert(reader.LocalName == "narrative",
                "Expected LocalName is 'narrative', but it is " + reader.LocalName);
            string narrativeType = reader.GetAttribute("type", RmXmlSerializer.XsiNamespace);
            if (narrativeType != null)
                this.narrative = new OpenEhr.RM.DataTypes.Text.DvCodedText();
            else
                this.narrative = new OpenEhr.RM.DataTypes.Text.DvText();
            this.narrative.ReadXml(reader);

            if (reader.LocalName == "expiry_time")
            {
                this.expiryTime = new OpenEhr.RM.DataTypes.Quantity.DateTime.DvDateTime();
                this.expiryTime.ReadXml(reader);
            }

            if (reader.LocalName == "wf_definition")
            {
                this.wfDefinition = new OpenEhr.RM.DataTypes.Encapsulated.DvParsable();
                this.wfDefinition.ReadXml(reader);
            }

            if (reader.LocalName == "activities")
            {
                AssumedTypes.Impl.LocatableList<Activity> activities = new OpenEhr.AssumedTypes.Impl.LocatableList<Activity>();
                do
                {
                    Activity activity = new Activity();
                    activity.ReadXml(reader);

                    activity.Parent = this;
                    activities.Add(activity);

                } while (reader.LocalName == "activities" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.activities = activities;
            }
        }
Ejemplo n.º 14
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            if (reader.LocalName == "items")
            {
                LocatableList<Element> items = new LocatableList<Element>();

                do
                {
                    Element element = new Element();
                    element.ReadXml(reader);
                    element.Parent = this;
                    items.Add(element);
                // Added checking on reader.NodeType == Element is because ItemList xml instance
                // is something like: <items> <items xsi:type='ELEMENT'>..</items></items>.
                // After reading all element contents, the reader.LocalName is still items,
                // but the reader NodeType is EndElement. This situation is similar as Section, ItemTable
                } while (reader.LocalName == "items" && reader.NodeType == System.Xml.XmlNodeType.Element);

                this.items = items;
            }

            reader.MoveToContent();
        }
Ejemplo n.º 15
0
        protected override void ReadXmlBase(XmlReader reader)
        {
            base.ReadXmlBase(reader);

            if (reader.LocalName == "rows")
            {
                LocatableList<Representation.Cluster> rows =
                    new LocatableList<OpenEhr.RM.DataStructures.ItemStructure.Representation.Cluster>();

                while (reader.LocalName == "rows")
                {
                    OpenEhr.RM.DataStructures.ItemStructure.Representation.Cluster aCluster =
                       new OpenEhr.RM.DataStructures.ItemStructure.Representation.Cluster();
                    aCluster.ReadXml(reader);
                    aCluster.Parent = this;
                    rows.Add(aCluster);
                }
                this.rows = rows;
            }
        }
Ejemplo n.º 16
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            // CM: 21/08/09 This code doesn't support a section without items.
            // e.g.
            /** <items xsi:type="SECTION" archetype_node_id="at0002">
                 <name>
                   <value>Mother</value>
                  </name>
                </items>
             *
             * <items xsi:type="SECTION" archetype_node_id="at0002">
                 <name>
                   <value>Mother</value>
                  </name>
             *      <items/>
                </items>
             * */
            if (reader.NodeType == System.Xml.XmlNodeType.Element && reader.LocalName == "items")
            {
                if (reader.IsEmptyElement)
                    reader.Skip();
                else
                {
                    LocatableList<ContentItem> items = new LocatableList<ContentItem>();
                    do
                    {
                        string itemType = reader.GetAttribute("type", RmXmlSerializer.XsiNamespace);
                        ContentItem contentItem = ContentItem.GetLocatableObjectByType(itemType)
                            as ContentItem;
                        if (contentItem == null)
                            throw new InvalidOperationException("itemType must be type of ContentItem: " + itemType);

                        contentItem.ReadXml(reader);
                        contentItem.Parent = this;
                        items.Add(contentItem);

                    } while (reader.LocalName == "items" && reader.NodeType == System.Xml.XmlNodeType.Element);

                    this.items = items;
                }
            }
        }
Ejemplo n.º 17
0
        protected override void ReadXmlBase(System.Xml.XmlReader reader)
        {
            base.ReadXmlBase(reader);

            // TODO: CM: 09/07/09 need to disable this assertion check when EhrTypes is not used
            // in deserialization since TDS origin is optional. When the origin is not existing in
            // openEHR instance, need to get the origin by CalculatOrigin function. At the moment,
            // TddTransformer still uses EhrTypes for the deserialization.
            DesignByContract.Check.Assert(reader.LocalName == "origin",
                                          "Expected LocalName is 'origin', but it is " + reader.LocalName);

            // HKF: 7 Aug 2009 - need to allow origin to be nil for TDD and EhrGateDataObjects transformation prior to OperationalTemplate augmentation
            if (reader.HasAttributes && reader.GetAttribute("nil", RmXmlSerializer.XsiNamespace) == "true")
            {
                // leave origin as null and skip
                reader.Skip();
            }
            else
            {
                this.origin = new OpenEhr.RM.DataTypes.Quantity.DateTime.DvDateTime();
                this.origin.ReadXml(reader);
            }

            if (reader.LocalName == "period")
            {
                this.period = new OpenEhr.RM.DataTypes.Quantity.DateTime.DvDuration();
                this.period.ReadXml(reader);
            }

            if (reader.LocalName == "duration")
            {
                this.duration = new OpenEhr.RM.DataTypes.Quantity.DateTime.DvDuration();
                this.duration.ReadXml(reader);
            }

            if (reader.LocalName == "events")
            {
                LocatableList <Event <ItemStructure.ItemStructure> > events =
                    new LocatableList <Event <OpenEhr.RM.DataStructures.ItemStructure.ItemStructure> >();
                do
                {
                    string eventType = reader.GetAttribute("type", RmXmlSerializer.XsiNamespace);

                    Event <ItemStructure.ItemStructure> anEvent =
                        OpenEhr.RM.Common.Archetyped.Impl.Locatable.GetLocatableObjectByType(eventType)
                        as Event <ItemStructure.ItemStructure>;
                    if (anEvent == null)
                    {
                        throw new InvalidOperationException("anEvent must not be null.");
                    }
                    anEvent.ReadXml(reader);

                    anEvent.Parent = this;
                    events.Add(anEvent);
                } while (reader.LocalName == "events");

                this.events = events as AssumedTypes.List <Event <T> >;
            }

            if (reader.LocalName == "summary")
            {
                string summaryType = reader.GetAttribute("type", RmXmlSerializer.XsiNamespace);
                this.summary = Locatable.GetLocatableObjectByType(summaryType) as ItemStructure.ItemStructure;
                if (this.summary == null)
                {
                    throw new InvalidOperationException("History summary type must be type of ItemStructure: " + summaryType);
                }
                this.summary.ReadXml(reader);
                this.summary.Parent = this;
            }
        }