/// <summary> /// Populates this health problem instance from the data in the XML. /// </summary> /// /// <param name="typeSpecificXml"> /// The XML to get the health problem data from. /// </param> /// /// <exception cref="InvalidOperationException"> /// The first node in <paramref name="typeSpecificXml"/> is not /// a health problem node. /// </exception> /// protected override void ParseXml(IXPathNavigable typeSpecificXml) { XPathNavigator itemNav = typeSpecificXml.CreateNavigator().SelectSingleNode("problem"); Validator.ThrowInvalidIfNull(itemNav, "ProblemUnexpectedNode"); _when = new HealthServiceDateTime(); _when.ParseXml(itemNav.SelectSingleNode("when")); // <diagnosis> XPathNodeIterator diagnosisIterator = itemNav.Select("diagnosis"); _diagnosis.Clear(); foreach (XPathNavigator diagnosisNav in diagnosisIterator) { CodableValue value = new CodableValue(); value.ParseXml(diagnosisNav); _diagnosis.Add(value); } // <duration> XPathNodeIterator durationIterator = itemNav.Select("duration"); _duration.Clear(); foreach (XPathNavigator durationNav in durationIterator) { DurationValue value = new DurationValue(); value.ParseXml(durationNav); _duration.Add(value); } // <importance> _importance = XPathHelper.GetOptNavValueAsInt( itemNav, "importance"); }