/// <summary>
        /// Populates this <see cref="FamilyHistory"/> instance from the data in the XML. 
        /// </summary>
        /// 
        /// <param name="typeSpecificXml">
        /// The XML to get the family history data from.
        /// </param>
        /// 
        /// <exception cref="InvalidOperationException">
        /// If the first node in <paramref name="typeSpecificXml"/> is not
        /// a family history node.
        /// </exception>
        ///
        protected override void ParseXml(IXPathNavigable typeSpecificXml)
        {
            XPathNavigator itemNav =
                typeSpecificXml.CreateNavigator().SelectSingleNode("family-history");

            Validator.ThrowInvalidIfNull(itemNav, "FamilyHistoryUnexpectedNode");

            _relativeCondition = new ConditionEntry();
            _relativeCondition.ParseXml(itemNav.SelectSingleNode("condition"));

            _relative =
                XPathHelper.GetOptNavValue<FamilyHistoryRelative>(itemNav, "relative");
        }
 /// <summary>
 /// Initialize a new instance of the <see cref="FamilyHistory"/> 
 /// class with condition.
 /// </summary>
 /// 
 /// <param name="condition">
 /// Relative condition is the condition of a relative. 
 /// </param>
 /// 
 /// <exception cref="ArgumentNullException">
 /// If <paramref name="condition"/> is <b>null</b>.
 /// </exception>
 /// 
 public FamilyHistory(ConditionEntry condition)
     : base(TypeId)
 {
     this.Condition = condition;
 }
 /// <summary>
 /// Initialize a new instance of the <see cref="FamilyHistoryCondition"/> 
 /// class with condition.
 /// </summary>
 /// 
 /// <param name="relativeCondition">
 /// Relative condition is the condition of a relative. 
 /// </param>
 /// 
 /// <exception cref="ArgumentNullException">
 /// If <paramref name="relativeCondition"/> is <b>null</b>.
 /// </exception>
 /// 
 public FamilyHistoryCondition(ConditionEntry relativeCondition)
     : base(TypeId)
 {
     this.RelativeCondition = relativeCondition;
 }