private void ProcessRecordChangeNotification(
            CommonNotificationData common,
            XPathNavigator navRecordChangedNotification)
        {
            HealthRecordItemChangedEventArgs eventArgs = new HealthRecordItemChangedEventArgs();
            eventArgs.Common = common;

            XPathNavigator navPersonId = navRecordChangedNotification.SelectSingleNode("person-id");
            eventArgs.PersonId = new Guid(navPersonId.Value);

            XPathNavigator navRecordId = navRecordChangedNotification.SelectSingleNode("record-id");
            eventArgs.RecordId = new Guid(navRecordId.Value);

            XPathNodeIterator iterThings = navRecordChangedNotification.Select("things/thing");

            eventArgs.ChangedItems = new Collection<HealthRecordItemChangedItem>();

            foreach (XPathNavigator navThing in iterThings)
            {
                XPathNavigator navThingId = navThing.SelectSingleNode("thing-id");

                HealthRecordItemChangedItem item = new HealthRecordItemChangedItem();
                item.Id = new Guid(navThingId.Value);

                eventArgs.ChangedItems.Add(item);
            }

            if (RecordChanged != null)
            {
                RecordChanged(this, eventArgs);
            }
        }
        private void ProcessNotification(XPathNavigator navNotification)
        {
            CommonNotificationData common = new CommonNotificationData();
            common.ParseXml(navNotification);

            foreach (XPathNavigator child in navNotification.SelectChildren(XPathNodeType.Element))
            {
                switch (child.Name)
                {
                    case "record-change-notification":
                        ProcessRecordChangeNotification(common, child);
                        break;
                }
            }
        }