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(); }
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; } }
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); }
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; } }
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(); }
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(); }
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; } } }
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; } }
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(); }
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; } }
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(); }
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; } }
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; } }
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(); }
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; } }
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; } } }
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; } }