/// <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(); }
/// <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(); }
/// <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(); }
/// <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(); }
/// <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(); }
/// <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); }
/// <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); }
/// <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); }
/// <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(); }
/// <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); }
/// <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); } }