private void CreateMergeInfos( ObjectType objectType, string patientFio, string nosology, string parameterName, string ownValue, string foreignValue, CHospitalization diffHospitalization, out CMergeInfo ownPatientMergeInfo, out CMergeInfo foreignPatientMergeInfo) { const string differenceStr = "Пациент: '{0}'. Нозология: '{1}'. Дата госпитализации: '{2}'.\r\nНазвание параметра: '{3}'. Значение: '{4}'"; ownPatientMergeInfo = new CMergeInfo { IdOwnPatient = PatientId, IdOwnHospitalization = Id, TypeOfObject = objectType, Value = ownValue, Difference = string.Format(differenceStr, patientFio, nosology, CConvertEngine.DateTimeToString(DeliveryDate, true), parameterName, ownValue) }; foreignPatientMergeInfo = new CMergeInfo { IdForeignPatient = diffHospitalization.PatientId, IdForeignHospitalization = diffHospitalization.Id, TypeOfObject = objectType, Value = foreignValue, Difference = string.Format(differenceStr, patientFio, nosology, CConvertEngine.DateTimeToString(diffHospitalization.DeliveryDate, true), parameterName, foreignValue) }; }
public CHospitalization(CHospitalization hospitalization) { Id = hospitalization.Id; PatientId = hospitalization.PatientId; Diagnose = hospitalization.Diagnose; DoctorInChargeOfTheCase = hospitalization.DoctorInChargeOfTheCase; FotoFolderName = hospitalization.FotoFolderName; NumberOfCaseHistory = hospitalization.NumberOfCaseHistory; DeliveryDate = CConvertEngine.CopyDateTime(hospitalization.DeliveryDate); if (hospitalization.ReleaseDate.HasValue) { ReleaseDate = CConvertEngine.CopyDateTime(hospitalization.ReleaseDate.Value); } else { ReleaseDate = null; } }
public CPatientView(CPatient patientInfo, CWorkersKeeper workersKeeper) { Id = patientInfo.Id.ToString(CultureInfo.InvariantCulture); Nosology = patientInfo.Nosology; FullName = patientInfo.GetFullName(); HospitalizationCnt = workersKeeper.HospitalizationWorker.GetCountByPatientId(patientInfo.Id).ToString(CultureInfo.InvariantCulture); VisitCnt = workersKeeper.VisitWorker.GetCountByPatientId(patientInfo.Id).ToString(CultureInfo.InvariantCulture); COperation[] operations = workersKeeper.OperationWorker.GetListByPatientId(patientInfo.Id); OperationCnt = operations.Length.ToString(CultureInfo.InvariantCulture); Age = CConvertEngine.GetAge(patientInfo.Birthday); var operationTypeSB = new StringBuilder(); foreach (COperation operation in operations) { foreach (string operationType in operation.OperationTypes) { if (!operationTypeSB.ToString().Contains(operationType)) { operationTypeSB.Append(operationType + ", "); } } } OperationTypes = operationTypeSB.Length > 0 ? operationTypeSB.ToString().Substring(0, operationTypeSB.Length - 2) : operationTypeSB.ToString(); int hospitalizationCnt = Convert.ToInt32(HospitalizationCnt); int visitCnt = Convert.ToInt32(VisitCnt); CVisit lastVisit = null; if (visitCnt > 0) { lastVisit = workersKeeper.VisitWorker.GetListByPatientId(patientInfo.Id)[visitCnt - 1]; } CHospitalization lastHospitalization = null; if (hospitalizationCnt > 0) { lastHospitalization = workersKeeper.HospitalizationWorker.GetListByPatientId(patientInfo.Id)[hospitalizationCnt - 1]; } if (lastHospitalization != null) { DeliveryDateString = CConvertEngine.DateTimeToString(lastHospitalization.DeliveryDate, true); ReleaseDateString = CConvertEngine.DateTimeToString(lastHospitalization.ReleaseDate, false); KD = lastHospitalization.KD; if (lastVisit == null) { Diagnose = lastHospitalization.DiagnoseOneLine; } } if (lastVisit != null) { VisitDateString = CConvertEngine.DateTimeToString(lastVisit.VisitDate, true); } if (lastHospitalization == null && lastVisit != null) { Diagnose = lastVisit.DiagnoseOneLine; } else if (lastHospitalization != null && lastVisit != null) { int dateCompareResult = CCompareEngine.CompareDateTime(lastHospitalization.DeliveryDate, lastVisit.VisitDate); Diagnose = dateCompareResult >= 0 ? lastHospitalization.DiagnoseOneLine : lastVisit.DiagnoseOneLine; } }
/// <summary> /// Получить строку с описанием разницы в полях между текущей и переданной госпитализацией /// </summary> /// <param name="diffHospitalization">Импортируемая госпитализация</param> /// <param name="patientFio">ФИО импортируемого пациента</param> /// <param name="nosology">Нозология</param> /// <param name="databasesMerger">Указатель на класс для мержа объектов</param> /// <returns></returns> public void GetDifference(CHospitalization diffHospitalization, string patientFio, string nosology, CDatabasesMerger databasesMerger) { CMergeInfo ownPatientMergeInfo; CMergeInfo foreignPatientMergeInfo; if (Diagnose != diffHospitalization.Diagnose) { CreateMergeInfos( ObjectType.HospitalizationDiagnose, patientFio, nosology, "Диагноз", Diagnose, diffHospitalization.Diagnose, diffHospitalization, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (DoctorInChargeOfTheCase != diffHospitalization.DoctorInChargeOfTheCase) { CreateMergeInfos( ObjectType.HospitalizationDoctorInChargeOfTheCase, patientFio, nosology, "Лечащий врач", DoctorInChargeOfTheCase, diffHospitalization.DoctorInChargeOfTheCase, diffHospitalization, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (FotoFolderName != diffHospitalization.FotoFolderName) { CreateMergeInfos( ObjectType.HospitalizationFotoFolderName, patientFio, nosology, "Название папки с фотографиями", FotoFolderName, diffHospitalization.FotoFolderName, diffHospitalization, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (NumberOfCaseHistory != diffHospitalization.NumberOfCaseHistory) { CreateMergeInfos( ObjectType.HospitalizationNumberOfCaseHistory, patientFio, nosology, "Номер истории болезни", NumberOfCaseHistory, diffHospitalization.NumberOfCaseHistory, diffHospitalization, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (ReleaseDate.HasValue && diffHospitalization.ReleaseDate.HasValue && CCompareEngine.CompareDate(ReleaseDate.Value, diffHospitalization.ReleaseDate.Value) != 0) { CreateMergeInfos( ObjectType.HospitalizationReleaseDate, patientFio, nosology, "Дата выписки", CConvertEngine.DateTimeToString(ReleaseDate.Value), CConvertEngine.DateTimeToString(diffHospitalization.ReleaseDate.Value), diffHospitalization, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } else if (ReleaseDate.HasValue && !diffHospitalization.ReleaseDate.HasValue) { CreateMergeInfos( ObjectType.HospitalizationReleaseDate, patientFio, nosology, "Дата выписки", CConvertEngine.DateTimeToString(ReleaseDate.Value), "Нет значения", diffHospitalization, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } else if (!ReleaseDate.HasValue && diffHospitalization.ReleaseDate.HasValue) { CreateMergeInfos( ObjectType.HospitalizationReleaseDate, patientFio, nosology, "Дата выписки", "Нет значения", CConvertEngine.DateTimeToString(diffHospitalization.ReleaseDate.Value), diffHospitalization, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } }
public static int Compare(CHospitalization hospitalization1, CHospitalization hospitalization2) { return(CCompareEngine.CompareDateTime(hospitalization1.DeliveryDate, hospitalization2.DeliveryDate)); }