Esempio n. 1
0
        /// <summary>
        /// Обновить информацию о консультации
        /// </summary>
        /// <param name="visitInfo">Информация о консультации</param>
        /// <param name="patientInfo">Информация о пациенте</param>
        public void Update(CVisit visitInfo, CPatient patientInfo)
        {
            CVisit tempVisit = GetByGeneralData(
                visitInfo.VisitDate,
                patientInfo.GetFullName(),
                patientInfo.Nosology,
                visitInfo.Id);

            if (tempVisit != null)
            {
                throw new Exception("Консультация с такой датой для этого пациента уже содержится в базе. Измените дату или время консультации.");
            }

            int n = 0;

            while (n < _visitList.Count && _visitList[n].Id != visitInfo.Id)
            {
                n++;
            }

            if (n == _visitList.Count)
            {
                _visitList.Add(visitInfo);
            }
            else
            {
                _visitList[n] = visitInfo;
            }

            Save();
        }
Esempio n. 2
0
        /// <summary>
        /// Добавить консультацию и все вложенные объекты
        /// </summary>
        /// <param name="fromPatientWorker">Класс для работы с пациентами в базе, откуда копируется консультация</param>
        /// <param name="toPatientWorker">Класс для работы с пациентами в базе, куда копируется консультация</param>
        /// <param name="fromVisitWorker">Класс для работы с консультациями в базе, откуда копируется консультация</param>
        /// <param name="toVisitWorker">Класс для работы с консультациями в базе, куда копируется консультация</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="visitId">id консультации, который надо скопировать</param>
        public static void AddVisit(
            CPatientWorker fromPatientWorker,
            CPatientWorker toPatientWorker,
            CVisitWorker fromVisitWorker,
            CVisitWorker toVisitWorker,
            CBrachialPlexusCardWorker fromBrachialPlexusCardWorker,
            CBrachialPlexusCardWorker toBrachialPlexusCardWorker,
            CObstetricParalysisCardWorker fromObstetricParalysisCardWorker,
            CObstetricParalysisCardWorker toObstetricParalysisCardWorker,
            CRangeOfMotionCardWorker fromRangeOfMotionCardWorker,
            CRangeOfMotionCardWorker toRangeOfMotionCardWorker,
            CCardWorker fromCardWorker,
            CCardWorker toCardWorker,
            int fromPatientId,
            int toPaientId,
            int visitId)
        {
            CVisit fromVisit = fromVisitWorker.GetById(visitId);

            // Добавляем консультацию
            var newVisit = new CVisit(fromVisit)
            {
                Id        = toVisitWorker.GetNewID(),
                PatientId = toPaientId
            };

            toVisitWorker.Update(newVisit, toPatientWorker.GetById(toPaientId));

            // Добавляем карты
            AddCardsToDatabase(-1, fromVisit.Id, -1, newVisit.Id,
                               fromBrachialPlexusCardWorker, toBrachialPlexusCardWorker, fromObstetricParalysisCardWorker, toObstetricParalysisCardWorker,
                               fromRangeOfMotionCardWorker, toRangeOfMotionCardWorker, fromCardWorker, toCardWorker);
        }
Esempio n. 3
0
        public VisitViewForm(
            CWorkersKeeper workersKeeper,
            CPatient patientInfo,
            CVisit visitInfo,
            PatientViewForm patientViewForm,
            AddUpdate action)
        {
            _stopSaveParameters = true;

            InitializeComponent();

            _additionalDocumentsFolderPath = Path.Combine(Application.StartupPath, AdditionalDocumentsFolderName);
            _workersKeeper = workersKeeper;
            _visitWorker   = workersKeeper.VisitWorker;

            _patientInfo     = patientInfo;
            _patientViewForm = patientViewForm;

            _configurationEngine = workersKeeper.ConfigurationEngine;

            _action        = action;
            _visitInfo     = visitInfo;
            _saveVisitInfo = new CVisit(_visitInfo);

            PutSurgeonsToComboBox();

            dateTimePickerVisitDate.Value     = _visitInfo.VisitDate;
            textBoxDiagnose.Text              = _visitInfo.Diagnose;
            textBoxRecommendation.Text        = _visitInfo.Recommendation;
            textBoxComments.Text              = _visitInfo.Comments;
            textBoxEvenly.Text                = _visitInfo.Evenly;
            checkBoxLastParagraph.Checked     = _visitInfo.IsLastParagraphForCertificateNeeded;
            checkBoxLastParagraphOdkb.Checked = _visitInfo.IsLastOdkbParagraphForCertificateNeeded;
            comboBoxDoctor.Text               = _visitInfo.Doctor;

            textBoxPassInfoSeries.Text          = _patientInfo.PassInformation.Series;
            textBoxPassInfoNumber.Text          = _patientInfo.PassInformation.Number;
            textBoxPassInfoSubdivisionCode.Text = _patientInfo.PassInformation.SubdivisionCode;
            textBoxPassInfoOrganization.Text    = _patientInfo.PassInformation.Organization;

            if (_patientInfo.PassInformation.DeliveryDate.HasValue)
            {
                dateTimePickerPassInfoDeliveryDate.Checked = true;
                dateTimePickerPassInfoDeliveryDate.Value   = _patientInfo.PassInformation.DeliveryDate.Value;
            }

            Text = _action == AddUpdate.Add
                ? "Добавление новой консультации"
                : "Просмотр данных о консультации";
        }
Esempio n. 4
0
        /// <summary>
        /// Скопировать все консультации для указанного пациента
        /// </summary>
        /// <param name="patientId">Id копируемого пациента</param>
        /// <param name="newPatientId">Id нового пациента</param>
        public void CopyByPatientId(int patientId, int newPatientId)
        {
            foreach (CVisit visitInfo in GetListByPatientId(patientId))
            {
                var newVisitInfo = new CVisit(visitInfo)
                {
                    Id        = GetNewID(),
                    PatientId = newPatientId
                };
                _visitList.Add(newVisitInfo);

                CopyVisitEssenses(visitInfo.Id, newVisitInfo.Id);
            }

            Save();
        }
Esempio n. 5
0
        /// <summary>
        /// Скопировать переданную консультацию
        /// </summary>
        /// <param name="visitInfo">Информация о консультации</param>
        /// <param name="patient">Информация о пациенте</param>
        public void Copy(CVisit visitInfo, CPatient patient)
        {
            var newVisitInfo = new CVisit(visitInfo)
            {
                Id        = GetNewID(),
                VisitDate = DateTime.Now
            };

            while (GetByGeneralData(newVisitInfo.VisitDate, patient.GetFullName(), patient.Nosology, newVisitInfo.Id) != null)
            {
                newVisitInfo.VisitDate = newVisitInfo.VisitDate.AddMinutes(1);
            }

            _visitList.Add(newVisitInfo);

            CopyVisitEssenses(visitInfo.Id, newVisitInfo.Id);

            Save();
        }
Esempio n. 6
0
        /// <summary>
        /// Копировать поле диагноза из последней косультации
        /// </summary>
        /// <param name="sender">Объект, пославший сообщение</param>
        /// <param name="e">Объект, содержащий данные посланного сообщения</param>
        private void linkLabelDiagnose_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            CVisit[] visits = _workersKeeper.VisitWorker.GetListByPatientId(_patientInfo.Id);

            if (visits.Length == 0)
            {
                MessageBox.Show("У пациента нет консультаций", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            CVisit visit = visits[visits.Length - 1];

            if (string.IsNullOrEmpty(visit.Diagnose))
            {
                MessageBox.Show("Поле 'Диагноз' в последней консультации не задано", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            textBoxDiagnose.Text = visit.Diagnose;
        }
Esempio n. 7
0
        /// <summary>
        /// Закрытие формы
        /// </summary>
        /// <param name="sender">Объект, пославший сообщение</param>
        /// <param name="e">Объект, содержащий данные посланного сообщения</param>
        private void VisitViewForm_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;

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

                if (string.IsNullOrEmpty(textBoxDiagnose.Text))
                {
                    MessageBox.ShowDialog("Поля 'Дата консультации' и 'Диагноз' должны быть заполнены", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    e.Cancel = true;
                    return;
                }

                try
                {
                    _visitWorker.Update(_visitInfo, _patientInfo);
                    _workersKeeper.PatientWorker.Update(_patientInfo);
                    _patientViewForm.SetNewPassInformationToTextBox(_patientInfo.PassInformation, true);

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

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

            _configurationEngine.VisitViewFormLocation = Location;
        }
Esempio n. 8
0
 /// <summary>
 /// Добавить информацию о консультации без сохранения в базу
 /// </summary>
 /// <param name="visitInfo">Информация о консультации</param>
 public void AddWithoutSaving(CVisit visitInfo)
 {
     _visitList.Add(visitInfo);
 }
Esempio n. 9
0
        /// <summary>
        /// Загрузить список консультаций
        /// </summary>
        private void Load()
        {
            _visitList = new List <CVisit>();
            string allDataStr = CDatabaseEngine.UnpackText(_visitPath);

            // Получаем набор объектов
            string[] objectsStr = allDataStr.Split(new[] { ObjSplitStr }, StringSplitOptions.RemoveEmptyEntries);

            // Проходим по всем объектам
            foreach (string objectStr in objectsStr)
            {
                // Для каждого объекта получаем список значений
                string[] datasStr = objectStr.Split(new[] { DataSplitStr }, StringSplitOptions.RemoveEmptyEntries);

                var visitInfo = new CVisit();
                foreach (string dataStr in datasStr)
                {
                    string[] keyValue = dataStr.Split(new[] { '=' }, 2);
                    switch (keyValue[0])
                    {
                    case "Id":
                        visitInfo.Id = Convert.ToInt32(keyValue[1]);
                        break;

                    case "PatientId":
                        visitInfo.PatientId = Convert.ToInt32(keyValue[1]);
                        break;

                    case "VisitDate":
                        visitInfo.VisitDate = CConvertEngine.StringToDateTime(keyValue[1]);
                        break;

                    case "Diagnose":
                        visitInfo.Diagnose = keyValue[1];
                        break;

                    case "Evenly":
                        visitInfo.Evenly = keyValue[1];
                        break;

                    case "Recommendation":
                        visitInfo.Recommendation = keyValue[1];
                        break;

                    case "Comments":
                        visitInfo.Comments = keyValue[1];
                        break;

                    case "Doctor":
                        visitInfo.Doctor = keyValue[1];
                        break;

                    case "IsLastParagraphForCertificateNeeded":
                        visitInfo.IsLastParagraphForCertificateNeeded = Convert.ToBoolean(keyValue[1]);
                        break;

                    case "IsLastOdkbParagraphForCertificateNeeded":
                        visitInfo.IsLastOdkbParagraphForCertificateNeeded = Convert.ToBoolean(keyValue[1]);
                        break;
                    }
                }

                _visitList.Add(visitInfo);
            }
        }