Example #1
0
        /// <summary>
        /// Скопировать переданную госпитализацию
        /// </summary>
        /// <param name="hospitalizationInfo">Госпитализация, которую надо скопировать</param>
        /// <param name="patient">Пациент, к которому относится госпитализация</param>
        public void Copy(CHospitalization hospitalizationInfo, CPatient patient)
        {
            var newHospitalization = new CHospitalization(hospitalizationInfo)
            {
                Id = GetNewID()
            };

            do
            {
                newHospitalization.DeliveryDate = newHospitalization.DeliveryDate.AddDays(1);
            }while (GetByGeneralData(
                        newHospitalization.DeliveryDate,
                        patient.GetFullName(),
                        patient.Nosology,
                        newHospitalization.Id) != null);

            _hospitalizationList.Add(newHospitalization);

            CopyHospitalizationsEssenses(
                hospitalizationInfo.Id,
                newHospitalization.Id,
                hospitalizationInfo.PatientId);

            Save();
        }
Example #2
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();
        }
Example #3
0
        /// <summary>
        /// Обновить информацию о госпитализации
        /// </summary>
        /// <param name="hospitalizationInfo">Информация о госпитализации</param>
        /// <param name="patientInfo">Информация о пациенте</param>
        public void Update(CHospitalization hospitalizationInfo, CPatient patientInfo)
        {
            CHospitalization tempHospitalization = GetByGeneralData(
                hospitalizationInfo.DeliveryDate,
                patientInfo.GetFullName(),
                patientInfo.Nosology,
                hospitalizationInfo.Id);

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

            int n = 0;

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

            if (n == _hospitalizationList.Count)
            {
                _hospitalizationList.Add(hospitalizationInfo);
            }
            else
            {
                _hospitalizationList[n] = hospitalizationInfo;
            }

            Save();
        }
Example #4
0
        /// <summary>
        /// Изменение данных об операции
        /// </summary>
        /// <param name="operationInfo">Информация про операцию</param>
        public void Update(COperation operationInfo)
        {
            CPatient         patientInfo         = _workersKeeper.PatientWorker.GetById(operationInfo.PatientId);
            CHospitalization hospitalizationInfo = _workersKeeper.HospitalizationWorker.GetById(operationInfo.HospitalizationId);

            COperation tempOperation = GetByGeneralData(
                operationInfo.Name,
                hospitalizationInfo.DeliveryDate,
                patientInfo.GetFullName(),
                patientInfo.Nosology,
                operationInfo.Id);

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

            int n = 0;

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

            if (n == _operationList.Count)
            {
                _operationList.Add(operationInfo);
            }
            else
            {
                _operationList[n] = operationInfo;
            }

            Save();
        }
Example #5
0
        /// <summary>
        /// Обновить информацию о пациенте
        /// </summary>
        /// <param name="patientInfo">Информация о пациенте</param>
        public void Update(CPatient patientInfo)
        {
            CPatient tempPatient = GetByGeneralData(
                patientInfo.GetFullName(),
                patientInfo.Nosology,
                patientInfo.Id);

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

            int n = 0;

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

            if (n == _patientList.Count)
            {
                _patientList.Add(patientInfo);
            }
            else
            {
                _patientList[n] = patientInfo;
            }

            Save();
        }
Example #6
0
        /// <summary>
        /// Скопировать данные о пациенте в переданного пациента
        /// </summary>
        /// <param name="patientInfo">Информация о пациенте</param>
        public void Copy(CPatient patientInfo)
        {
            var newPatient = new CPatient(patientInfo)
            {
                Id = GetNewID()
            };

            do
            {
                newPatient.LastName += "_copy";
            }while (GetByGeneralData(newPatient.GetFullName(), newPatient.Nosology, -1) != null);

            Update(newPatient);

            _workersKeeper.HospitalizationWorker.CopyByPatientId(patientInfo.Id, newPatient.Id);
            _workersKeeper.VisitWorker.CopyByPatientId(patientInfo.Id, newPatient.Id);
        }
Example #7
0
        /// <summary>
        /// Получить консультацию по уникальным данным
        /// </summary>
        /// <param name="visitDate">Дата консультации</param>
        /// <param name="patientFIO">ФИО пациента</param>
        /// <param name="patientNosologyName">Название нозологии</param>
        /// <param name="wrongVisitId">id консультации, который надо игнорировать</param>
        /// <returns></returns>
        public CVisit GetByGeneralData(
            DateTime visitDate, string patientFIO, string patientNosologyName, int wrongVisitId)
        {
            foreach (CVisit visit in _visitList)
            {
                CPatient patient = _workersKeeper.PatientWorker.GetById(visit.PatientId);

                if (CCompareEngine.CompareDateTime(visit.VisitDate, visitDate) == 0 &&
                    patient.GetFullName() == patientFIO &&
                    patient.Nosology == patientNosologyName &&
                    visit.Id != wrongVisitId)
                {
                    return(visit);
                }
            }

            return(null);
        }
Example #8
0
        /// <summary>
        /// Получить госпитализацию по дате поступления
        /// </summary>
        /// <param name="deliveryDate">Дата поступления</param>
        /// <param name="patientFIO">ФИО пациента</param>
        /// <param name="patientNosologyName">Название нозологии</param>
        /// <param name="wrongHospitalizationId">id госпитализации, которая игнорируется</param>
        /// <returns></returns>
        public CHospitalization GetByGeneralData(
            DateTime deliveryDate, string patientFIO, string patientNosologyName, int wrongHospitalizationId)
        {
            foreach (CHospitalization hospitalization in _hospitalizationList)
            {
                CPatient patient = _workersKeeper.PatientWorker.GetById(hospitalization.PatientId);

                if (CCompareEngine.CompareDateTime(hospitalization.DeliveryDate, deliveryDate) == 0 &&
                    patient.GetFullName() == patientFIO &&
                    patient.Nosology == patientNosologyName &&
                    hospitalization.Id != wrongHospitalizationId)
                {
                    return(hospitalization);
                }
            }

            return(null);
        }
Example #9
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();
        }
Example #10
0
        /// <summary>
        /// Получить операцию с указанным названием
        /// </summary>
        /// <param name="name">Название операции</param>
        /// <param name="hospitalizationDeliveryDate">Дата госпитализации</param>
        /// <param name="patientFIO">ФИО пациента</param>
        /// <param name="patientNosologyName">Название нозологии</param>
        /// <param name="wrongOperationId">id операции, которая игнорируется</param>
        /// <returns></returns>
        public COperation GetByGeneralData(
            string name,
            DateTime hospitalizationDeliveryDate,
            string patientFIO,
            string patientNosologyName,
            int wrongOperationId)
        {
            foreach (COperation operation in _operationList)
            {
                CHospitalization hospitalization = _workersKeeper.HospitalizationWorker.GetById(operation.HospitalizationId);
                CPatient         patient         = _workersKeeper.PatientWorker.GetById(hospitalization.PatientId);

                if (operation.Name == name &&
                    CCompareEngine.CompareDateTime(hospitalization.DeliveryDate, hospitalizationDeliveryDate) == 0 &&
                    patient.GetFullName() == patientFIO &&
                    patient.Nosology == patientNosologyName &&
                    operation.Id != wrongOperationId)
                {
                    return(operation);
                }
            }

            return(null);
        }
Example #11
0
        /// <summary>
        /// Удалить выделенного пациента
        /// </summary>
        /// <param name="sender">Объект, пославший сообщение</param>
        /// <param name="e">Объект, содержащий данные посланного сообщения</param>
        private void buttonDelete_Click(object sender, EventArgs e)
        {
            try
            {
                int currentNumber = PatientList.CurrentCellAddress.Y;
                if (currentNumber < 0)
                {
                    MessageBox.ShowDialog("Нет выделенных записей", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                CPatient patientInfo = GetSelectedPatient();
                if (patientInfo.OpenedPatientViewForm != null && !patientInfo.OpenedPatientViewForm.IsDisposed)
                {
                    MessageBox.ShowDialog("Данный пациент заблокирован для удаления,\r\nтак как он в данный момент редактируется.\r\nЗакройте окно просмотра информации по данному пациенту\r\nи попробуйте ещё раз.", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                if (DialogResult.Yes == MessageBox.ShowDialog("Вы уверены, что хотите удалить все данные о пациенте " + patientInfo.GetFullName() + "?\r\nДанная операция необратима.", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                {
                    _patientWorker.Remove(patientInfo.Id);
                }

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