Exemplo n.º 1
0
        /// <summary>
        /// Добавить госпитализацю и все вложенные объекты
        /// </summary>
        /// <param name="fromPatientWorker">Класс для работы с пациентами в базе, откуда копируется госпитализация</param>
        /// <param name="toPatientWorker">Класс для работы с пациентами в базе, куда копируется госпитализация</param>
        /// <param name="fromHospitalizationWorker">Класс для работы с госпитализациями в базе, откуда копируется госпитализация</param>
        /// <param name="toHospitalizationWorker">Класс для работы с госпитализациями в базе, куда копируется госпитализация</param>
        /// <param name="fromMedicalInspectionWorker">Класс для работы с осмотрами в отделении в базе, откуда копируется госпитализация</param>
        /// <param name="toMedicalInspectionWorker">Класс для работы с осмотрами в отделении в базе, куда копируется госпитализация</param>
        /// <param name="fromDischargeEpicrisisWorker">Класс для работы с выписными эпикризами в базе, откуда копируется госпитализация</param>
        /// <param name="toDischargeEpicrisisWorker">Класс для работы с выписными эпикризами в базе, куда копируется госпитализация</param>
        /// <param name="fromLineOfCommunicationEpicrisisWorker">Класс для работы с этапными эпикризами в базе, откуда копируется госпитализация</param>
        /// <param name="toLineOfCommunicationEpicrisisWorker">Класс для работы с этапными эпикризами в базе, куда копируется госпитализация</param>
        /// <param name="fromTransferableEpicrisisWorker">Класс для работы с переводными эпикризами в базе, откуда копируется госпитализация</param>
        /// <param name="toTransferableEpicrisisWorker">Класс для работы с переводными эпикризами в базе, куда копируется госпитализация</param>
        /// <param name="fromOperationWorker">Класс для работы с операциями в базе, откуда копируется госпитализация</param>
        /// <param name="toOperationWorker">Класс для работы с операциями в базе, куда копируется госпитализация</param>
        /// <param name="fromOperationProtocolWorker">Класс для работы с операционными протоколами в базе, откуда копируется госпитализация</param>
        /// <param name="toOperationProtocolWorker">Класс для работы с операционными протоколами в базе, куда копируется госпитализация</param>
        /// <param name="fromBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, откуда копируется госпитализация</param>
        /// <param name="toBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, куда копируется госпитализация</param>
        /// <param name="fromObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, откуда копируется госпитализация</param>
        /// <param name="toObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, куда копируется госпитализация</param>
        /// <param name="fromRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, откуда копируется госпитализация</param>
        /// <param name="toRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, куда копируется госпитализация</param>
        /// <param name="fromCardWorker">Класс для работы с картами из двух частей в базе, откуда копируется госпитализация</param>
        /// <param name="toCardWorker">Класс для работы с картами из двух частей в базе, куда копируется госпитализация</param>
        /// <param name="fromPatientId">id пациента из базы, откуда копируется госпитализация</param>
        /// <param name="toPaientId">id пациента из базы, куда копируется госпитализация</param>
        /// <param name="hospitalizationId">id госпитализации, которую надо скопировать</param>
        public static void AddHospitalization(
            CPatientWorker fromPatientWorker,
            CPatientWorker toPatientWorker,
            CHospitalizationWorker fromHospitalizationWorker,
            CHospitalizationWorker toHospitalizationWorker,
            CMedicalInspectionWorker fromMedicalInspectionWorker,
            CMedicalInspectionWorker toMedicalInspectionWorker,
            CDischargeEpicrisisWorker fromDischargeEpicrisisWorker,
            CDischargeEpicrisisWorker toDischargeEpicrisisWorker,
            CLineOfCommunicationEpicrisisWorker fromLineOfCommunicationEpicrisisWorker,
            CLineOfCommunicationEpicrisisWorker toLineOfCommunicationEpicrisisWorker,
            CTransferableEpicrisisWorker fromTransferableEpicrisisWorker,
            CTransferableEpicrisisWorker toTransferableEpicrisisWorker,
            COperationWorker fromOperationWorker,
            COperationWorker toOperationWorker,
            COperationProtocolWorker fromOperationProtocolWorker,
            COperationProtocolWorker toOperationProtocolWorker,
            CBrachialPlexusCardWorker fromBrachialPlexusCardWorker,
            CBrachialPlexusCardWorker toBrachialPlexusCardWorker,
            CObstetricParalysisCardWorker fromObstetricParalysisCardWorker,
            CObstetricParalysisCardWorker toObstetricParalysisCardWorker,
            CRangeOfMotionCardWorker fromRangeOfMotionCardWorker,
            CRangeOfMotionCardWorker toRangeOfMotionCardWorker,
            CCardWorker fromCardWorker,
            CCardWorker toCardWorker,
            int fromPatientId,
            int toPaientId,
            int hospitalizationId)
        {
            CHospitalization fromHospitalization = fromHospitalizationWorker.GetById(hospitalizationId);

            // Добавляем госпитализацию
            var newHospitalization = new CHospitalization(fromHospitalization)
            {
                Id        = toHospitalizationWorker.GetNewID(),
                PatientId = toPaientId
            };

            toHospitalizationWorker.Update(newHospitalization, toPatientWorker.GetById(toPaientId));

            AddMedicalInspection(
                fromMedicalInspectionWorker,
                toMedicalInspectionWorker,
                hospitalizationId,
                newHospitalization.Id);

            AddDischargeEpicrisis(
                fromDischargeEpicrisisWorker,
                toDischargeEpicrisisWorker,
                hospitalizationId,
                newHospitalization.Id);

            AddLineOfCommunicationEpicrisis(
                fromLineOfCommunicationEpicrisisWorker,
                toLineOfCommunicationEpicrisisWorker,
                hospitalizationId,
                newHospitalization.Id);

            AddTransferableEpicrisis(
                fromTransferableEpicrisisWorker,
                toTransferableEpicrisisWorker,
                hospitalizationId,
                newHospitalization.Id);

            // Добавляем карты
            AddCardsToDatabase(fromHospitalization.Id, -1, newHospitalization.Id, -1,
                               fromBrachialPlexusCardWorker, toBrachialPlexusCardWorker, fromObstetricParalysisCardWorker, toObstetricParalysisCardWorker,
                               fromRangeOfMotionCardWorker, toRangeOfMotionCardWorker, fromCardWorker, toCardWorker);

            // Добавляем операции
            foreach (COperation fromOperation in fromOperationWorker.GetListByHospitalizationId(fromHospitalization.Id))
            {
                AddOperationAndProtocol(
                    toHospitalizationWorker,
                    fromOperationWorker,
                    toOperationWorker,
                    fromOperationProtocolWorker,
                    toOperationProtocolWorker,
                    fromOperation.Id,
                    newHospitalization.Id);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Закрытие формы
        /// </summary>
        /// <param name="sender">Объект, пославший сообщение</param>
        /// <param name="e">Объект, содержащий данные посланного сообщения</param>
        private void HospitalizationViewForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!_isFormClosingByButton)
            {
                DialogResult dialogResult = MessageBox.ShowDialog("Вы хотите сохранить изменения?", "Закрытие окна", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                if (dialogResult == DialogResult.Yes)
                {
                    _isNeedSaveData = true;
                }
                else if (dialogResult == DialogResult.No)
                {
                    _isNeedSaveData = false;
                }
                else
                {
                    e.Cancel = true;
                    return;
                }
            }

            _isFormClosingByButton = false;

            bool isOperationViewFormOpened = false;
            var  openedOperationForm       = new COperation();

            COperation[] operations = _operationWorker.GetListByHospitalizationId(_hospitalizationInfo.Id);
            foreach (COperation oc in operations)
            {
                if (oc.OpenedOperationViewForm != null && !oc.OpenedOperationViewForm.IsDisposed)
                {
                    openedOperationForm       = oc;
                    isOperationViewFormOpened = true;
                    break;
                }
            }

            if (isOperationViewFormOpened)
            {
                _isFormClosingByButton = false;
                MessageBox.ShowDialog("Вы не можете закрыть эту форму, пока не закроете все формы \"Просмотр данных об операции\"", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Cancel = true;
                openedOperationForm.OpenedOperationViewForm.Focus();
                return;
            }

            if (_addNewOperationForm != null && !_addNewOperationForm.IsDisposed)
            {
                _isFormClosingByButton = false;
                MessageBox.ShowDialog("Вы не можете закрыть эту форму, пока не закроете форму \"Добавление операции\"", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Cancel = true;
                _addNewOperationForm.Focus();
                return;
            }

            bool isOperationProtocolFormOpened = false;

            foreach (COperation oc in operations)
            {
                if (oc.OpenedOperationProtocolForm != null && !oc.OpenedOperationProtocolForm.IsDisposed)
                {
                    openedOperationForm           = oc;
                    isOperationProtocolFormOpened = true;
                    break;
                }
            }

            if (isOperationProtocolFormOpened)
            {
                _isFormClosingByButton = false;
                MessageBox.ShowDialog("Вы не можете закрыть эту форму, пока не закроете формы \"Протокол операции\"", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Cancel = true;
                openedOperationForm.OpenedOperationProtocolForm.Focus();
                return;
            }

            if (_transferableEpicrisisForm != null && !_transferableEpicrisisForm.IsDisposed)
            {
                _isFormClosingByButton = false;
                MessageBox.ShowDialog("Вы не можете закрыть эту форму, пока не закроете форму \"Переводной эпикриз\"", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Cancel = true;
                _transferableEpicrisisForm.Focus();
                return;
            }

            if (_lineOfCommunicationEpicrisisForm != null && !_lineOfCommunicationEpicrisisForm.IsDisposed)
            {
                _isFormClosingByButton = false;
                MessageBox.ShowDialog("Вы не можете закрыть эту форму, пока не закроете форму \"Этапный эпикриз\"", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Cancel = true;
                _lineOfCommunicationEpicrisisForm.Focus();
                return;
            }

            if (_dischargeEpicrisisForm != null && !_dischargeEpicrisisForm.IsDisposed)
            {
                _isFormClosingByButton = false;
                MessageBox.ShowDialog("Вы не можете закрыть эту форму, пока не закроете форму \"Выписной эпикриз\"", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Cancel = true;
                _dischargeEpicrisisForm.Focus();
                return;
            }

            if (_medicalInspectionForm != null && !_medicalInspectionForm.IsDisposed)
            {
                _isFormClosingByButton = false;
                MessageBox.ShowDialog("Вы не можете закрыть эту форму, пока не закроете форму \"Осмотр в отделении\"", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Cancel = true;
                _medicalInspectionForm.Focus();
                return;
            }

            // Если все проверки при закрытии формы пройдены и форму закрыли с сохранением данных -
            // то сохраняем данные
            if (_isNeedSaveData)
            {
                _isNeedSaveData = false;

                if (IsFormHasEmptyNeededFields())
                {
                    MessageBox.ShowDialog("Поля, отмеченные звёздочкой, обязательны для заполнения", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    e.Cancel = true;
                    return;
                }

                if (!string.IsNullOrEmpty(textBoxFotoFolderName.Text) &&
                    !Directory.Exists(Path.Combine(_realPrivateFolder, textBoxFotoFolderName.Text)))
                {
                    MessageBox.ShowDialog("Указанной папки для фотографий не существует.\r\nИсправьте название папки или удалите информацию о ней.", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    textBoxFotoFolderName.Focus();
                    e.Cancel = true;
                    return;
                }

                if (dateTimePickerReleaseDate.Checked &&
                    CCompareEngine.CompareDate(dateTimePickerReleaseDate.Value.Date, dateTimePickerDeliveryDate.Value.Date) < 0)
                {
                    MessageBox.ShowDialog("Дата выписки не может быть меньше, чем дата поступления.", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    dateTimePickerReleaseDate.Focus();
                    e.Cancel = true;
                    return;
                }

                try
                {
                    _hospitalizationWorker.Update(_hospitalizationInfo, _patientInfo);

                    _patientViewForm.ShowHospitalizations();
                }
                catch (Exception ex)
                {
                    e.Cancel = true;
                    MessageBox.ShowDialog(ex.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                try
                {
                    if (_action == AddUpdate.Add)
                    {
                        _hospitalizationWorker.Remove(_hospitalizationInfo.Id);
                    }
                    else
                    {
                        _hospitalizationInfo = new CHospitalization(_saveHospitalizationInfo);
                        _hospitalizationWorker.Update(_hospitalizationInfo, _patientInfo);
                    }

                    _patientViewForm.ShowHospitalizations();
                }
                catch (Exception ex)
                {
                    MessageBox.ShowDialog(ex.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            _configurationEngine.HospitalizationViewFormLocation = Location;
        }