/// <summary>
        /// Queries the Google Health Profile list feed. This is related to the
        /// ClientLogin queries using ClientLogin.
        /// </summary>
        /// <returns>The list of profiles for the authenticated client.</returns>
        public List <Profile> GetProfiles()
        {
            HealthFeed     feed     = this.Query(new HealthQuery(ProfileListFeed));
            List <Profile> profiles = new List <Profile>();

            foreach (AtomEntry entry in feed.Entries)
            {
                profiles.Add(Profile.FromAtomEntry(entry));
            }
            return(profiles);
        }
        /// <summary>
        /// Queries the Google Health Profile Register feed for the list of notices. This
        /// is for ClientLogin related queries.
        /// </summary>
        /// <param name="profileId">The profile to query against.</param>
        /// <returns>The list of notices available on this profile.</returns>
        public List <Notice> GetNotices(string profileId)
        {
            HealthQuery query = new HealthQuery(RegisterFeed + profileId);

            query.Digest = true;
            HealthFeed    feed    = this.Query(query);
            List <Notice> notices = new List <Notice>();

            foreach (AtomEntry entry in feed.Entries)
            {
                notices.Add(Notice.FromAtomEntry(entry));
            }
            return(notices);
        }
        /// <summary>
        /// Queries the profile feed for the list of available CCR records. Available
        /// for ClientLogin related queries.
        /// </summary>
        /// <param name="profileId">The profile to query against.</param>
        /// <param name="digest">True to aggregate all CCR into a single CCR element, false otherwise.</param>
        /// <returns>The list of CCR records available.</returns>
        public List <ContinuityOfCareRecord> GetCareRecords(string profileId, bool digest)
        {
            HealthQuery query = new HealthQuery(ProfileFeed + profileId);

            query.Digest = true;
            HealthFeed feed = this.Query(query);
            List <ContinuityOfCareRecord> ccrs = new List <ContinuityOfCareRecord>();

            foreach (AtomEntry entry in feed.Entries)
            {
                IExtensionElementFactory factory = entry.FindExtension("ContinuityOfCareRecord", "urn:astm-org:CCR");
                if (factory != null)
                {
                    XmlExtension  extension  = factory as XmlExtension;
                    XmlSerializer serializer = new XmlSerializer(typeof(ContinuityOfCareRecord));
                    XmlTextReader reader     = new XmlTextReader(new StringReader(extension.Node.OuterXml));
                    ccrs.Add(serializer.Deserialize(reader) as ContinuityOfCareRecord);
                }
            }
            return(ccrs);
        }