Esempio n. 1
0
        /// <summary>
        /// Проверить, удовлетворяет ли переданный пациент условиям фильтра
        /// </summary>
        /// <param name="patientInfo">Информация про пациента</param>
        /// <returns></returns>
        private bool IsThisPatientSatisfyFilterOptions(PatientClass patientInfo)
        {
            // Проверка ФИО
            if (!string.IsNullOrEmpty(textBoxFilterFIO.Text))
            {
                if (!patientInfo.GetFullName().ToLower().Contains(textBoxFilterFIO.Text.ToLower()))
                {
                    return(false);
                }
            }

            // Проверка даты поступления
            if ((dateTimePickerFilterDeliveryDateStart.Checked && DateTime.Compare(dateTimePickerFilterDeliveryDateStart.Value.Date, patientInfo.DeliveryDate.Date) > 0) ||
                (dateTimePickerFilterDeliveryDateEnd.Checked && DateTime.Compare(dateTimePickerFilterDeliveryDateEnd.Value.Date, patientInfo.DeliveryDate.Date) < 0))
            {
                return(false);
            }

            // Проверка даты выписки
            if (dateTimePickerFilterReleaseDateStart.Checked &&
                (!patientInfo.ReleaseDate.HasValue ||
                 DateTime.Compare(dateTimePickerFilterReleaseDateStart.Value.Date, patientInfo.ReleaseDate.Value.Date) > 0))
            {
                return(false);
            }

            if (dateTimePickerFilterReleaseDateEnd.Checked &&
                (!patientInfo.ReleaseDate.HasValue ||
                 DateTime.Compare(dateTimePickerFilterReleaseDateEnd.Value.Date, patientInfo.ReleaseDate.Value.Date) < 0))
            {
                return(false);
            }

            // Проверка даты последней операции
            int operationsCount = patientInfo.Operations.Count;

            if (dateTimePickerFilterOperationDateStart.Checked &&
                (operationsCount == 0 ||
                 DateTime.Compare(dateTimePickerFilterOperationDateStart.Value.Date, patientInfo.Operations[operationsCount - 1].DataOfOperation) > 0))

            {
                return(false);
            }

            if (dateTimePickerFilterOperationDateEnd.Checked &&
                (operationsCount == 0 ||
                 DateTime.Compare(dateTimePickerFilterOperationDateEnd.Value.Date, patientInfo.Operations[operationsCount - 1].DataOfOperation) < 0))
            {
                return(false);
            }

            // Проверка нозологии
            if (!string.IsNullOrEmpty(textBoxFilterNosology.Text))
            {
                if (!patientInfo.Nosology.ToLower().Contains(textBoxFilterNosology.Text.ToLower()))
                {
                    return(false);
                }
            }

            // Проверка диагноза
            if (!string.IsNullOrEmpty(textBoxFilterDiagnose.Text))
            {
                if (!patientInfo.Diagnose.ToLower().Contains(textBoxFilterDiagnose.Text.ToLower()))
                {
                    return(false);
                }
            }

            // Проверка количества операций
            if (!CheckFilterWithMode(comboBoxFilterOperationCntMode.Text, textBoxFilterOperationCnt.Text, patientInfo.Operations.Count.ToString()))
            {
                return(false);
            }

            // Проверка Д/Н
            if (!string.IsNullOrEmpty(textBoxFilterDN.Text))
            {
                if (string.IsNullOrEmpty(patientInfo.GetDN()) ||
                    !patientInfo.GetDN().ToLower().Contains(textBoxFilterDN.Text.ToLower()))
                {
                    return(false);
                }
            }

            // Проверка к/д
            if (!CheckFilterWithMode(comboBoxFilterKDMode.Text, textBoxFilterKD.Text, patientInfo.GetKD()))
            {
                return(false);
            }

            // Проверка врача
            if (!string.IsNullOrEmpty(textBoxFilterDoctor.Text))
            {
                if (string.IsNullOrEmpty(patientInfo.DoctorInChargeOfTheCase) ||
                    !patientInfo.DoctorInChargeOfTheCase.ToLower().Contains(textBoxFilterDoctor.Text.ToLower()))
                {
                    return(false);
                }
            }

            return(true);
        }