/// <summary>
        /// Validates this problem / diagnosis
        /// </summary>
        /// <param name="path">The path to this object as a string</param>
        /// <param name="messages">the validation messages to date, these may be added to within this method</param>
        void IProblemDiagnosis.Validate(string path, List <ValidationMessage> messages)
        {
            var vb = new ValidationBuilder(path, messages);

            if (vb.ArgumentRequiredCheck("ProblemDiagnosisIdentification", ProblemDiagnosisIdentification))
            {
                if (ProblemDiagnosisIdentification != null)
                {
                    ProblemDiagnosisIdentification.Validate(vb.Path + "ProblemDiagnosisIdentification", vb.Messages);
                }
            }
        }
        /// <summary>
        /// Validates this problem / diagnosis
        /// </summary>
        /// <param name="path">The path to this object as a string</param>
        /// <param name="messages">the validation messages to date, these may be added to within this method</param>
        void IProblemDiagnosisEventSummary.Validate(string path, List <ValidationMessage> messages)
        {
            var vb = new ValidationBuilder(path, messages);

            if (vb.ArgumentRequiredCheck("ProblemDiagnosisIdentification", ProblemDiagnosisIdentification))
            {
                if (ProblemDiagnosisIdentification != null)
                {
                    ProblemDiagnosisIdentification.Validate(vb.Path + "ProblemDiagnosisIdentification", vb.Messages);
                }
            }

            if (DateOfOnset != null)
            {
                if (DateOfOnset.PrecisionIndicator.HasValue && (DateOfOnset.PrecisionIndicator.Value == ISO8601DateTime.Precision.Millisecond ||
                                                                DateOfOnset.PrecisionIndicator.Value == ISO8601DateTime.Precision.Minute ||
                                                                DateOfOnset.PrecisionIndicator.Value == ISO8601DateTime.Precision.Second))
                {
                    vb.AddValidationMessage(path + ".DateOfOnset", null, "The value SHALL NOT include a time");
                }
            }
        }