/// <summary> /// Получить строку с описанием разницы в полях между текущим и переданным /// протоколом операции /// </summary> /// <param name="diffOperationProtocol">Импортируемый протокол операции</param> /// <param name="patientFio">ФИО импортируемого пациента</param> /// <param name="nosology">Нозология</param> /// <param name="hospitalizationDate">Дата импортируемой госпитализации</param> /// <param name="operationName">Название импортируемой операции</param> /// <param name="databasesMerger">Указатель на класс для мержа объектов</param> /// <returns></returns> public void GetDifference( COperationProtocol diffOperationProtocol, string patientFio, string nosology, string hospitalizationDate, string operationName, CDatabasesMerger databasesMerger) { CMergeInfo ownPatientMergeInfo; CMergeInfo foreignPatientMergeInfo; if (TreatmentPlanInspection != diffOperationProtocol.TreatmentPlanInspection) { CreateMergeInfos( ObjectType.OperationProtocolTreatmentPlanInspection, patientFio, nosology, hospitalizationDate, operationName, "Обследование пациента", TreatmentPlanInspection, diffOperationProtocol.TreatmentPlanInspection, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (IsTreatmentPlanActiveInOperationProtocol != diffOperationProtocol.IsTreatmentPlanActiveInOperationProtocol) { CreateMergeInfos( ObjectType.OperationProtocolIsTreatmentPlanActiveInOperationProtocol, patientFio, nosology, hospitalizationDate, operationName, "Активен ли план обследования в операционном протоколе", IsTreatmentPlanActiveInOperationProtocol.ToString(), diffOperationProtocol.IsTreatmentPlanActiveInOperationProtocol.ToString(), diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (ADFirst != diffOperationProtocol.ADFirst) { CreateMergeInfos( ObjectType.OperationProtocolADFirst, patientFio, nosology, hospitalizationDate, operationName, "Первое значение AD", ADFirst.ToString(), diffOperationProtocol.ADFirst.ToString(), diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (ADSecond != diffOperationProtocol.ADSecond) { CreateMergeInfos( ObjectType.OperationProtocolADSecond, patientFio, nosology, hospitalizationDate, operationName, "Второе значение AD", ADSecond.ToString(), diffOperationProtocol.ADSecond.ToString(), diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Breath != diffOperationProtocol.Breath) { CreateMergeInfos( ObjectType.OperationProtocolBreath, patientFio, nosology, hospitalizationDate, operationName, "Дыхание", Breath, diffOperationProtocol.Breath, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (ChDD != diffOperationProtocol.ChDD) { CreateMergeInfos( ObjectType.OperationProtocolChDD, patientFio, nosology, hospitalizationDate, operationName, "ЧДД", ChDD.ToString(), diffOperationProtocol.ChDD.ToString(), diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Complaints != diffOperationProtocol.Complaints) { CreateMergeInfos( ObjectType.OperationProtocolComplaints, patientFio, nosology, hospitalizationDate, operationName, "Жалобы", Complaints, diffOperationProtocol.Complaints, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (string.Compare(Complaints, diffOperationProtocol.Complaints) == 0) { } if (State != diffOperationProtocol.State) { CreateMergeInfos( ObjectType.OperationProtocolState, patientFio, nosology, hospitalizationDate, operationName, "Состояние", State, diffOperationProtocol.State, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (HeartRhythm != diffOperationProtocol.HeartRhythm) { CreateMergeInfos( ObjectType.OperationProtocolHeartRhythm, patientFio, nosology, hospitalizationDate, operationName, "Ритм сердца", HeartRhythm, diffOperationProtocol.HeartRhythm, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (HeartSounds != diffOperationProtocol.HeartSounds) { CreateMergeInfos( ObjectType.OperationProtocolHeartSounds, patientFio, nosology, hospitalizationDate, operationName, "Тоны сердца", HeartSounds, diffOperationProtocol.HeartSounds, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (IsDairyEnabled != diffOperationProtocol.IsDairyEnabled) { CreateMergeInfos( ObjectType.OperationProtocolIsDairyEnabled, patientFio, nosology, hospitalizationDate, operationName, "Активен ли дневник", IsDairyEnabled.ToString(), diffOperationProtocol.IsDairyEnabled.ToString(), diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Pulse != diffOperationProtocol.Pulse) { CreateMergeInfos( ObjectType.OperationProtocolPulse, patientFio, nosology, hospitalizationDate, operationName, "Пульс", Pulse.ToString(), diffOperationProtocol.Pulse.ToString(), diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (StLocalis != diffOperationProtocol.StLocalis) { CreateMergeInfos( ObjectType.OperationProtocolStLocalis, patientFio, nosology, hospitalizationDate, operationName, "StLocalis", StLocalis, diffOperationProtocol.StLocalis, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Stomach != diffOperationProtocol.Stomach) { CreateMergeInfos( ObjectType.OperationProtocolStomach, patientFio, nosology, hospitalizationDate, operationName, "Живот", Stomach, diffOperationProtocol.Stomach, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Stool != diffOperationProtocol.Stool) { CreateMergeInfos( ObjectType.OperationProtocolStool, patientFio, nosology, hospitalizationDate, operationName, "Стул", Stool, diffOperationProtocol.Stool, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Temperature != diffOperationProtocol.Temperature) { CreateMergeInfos( ObjectType.OperationProtocolTemperature, patientFio, nosology, hospitalizationDate, operationName, "Температура тела", Temperature, diffOperationProtocol.Temperature, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Urination != diffOperationProtocol.Urination) { CreateMergeInfos( ObjectType.OperationProtocolUrination, patientFio, nosology, hospitalizationDate, operationName, "Мочеиспускание", Urination, diffOperationProtocol.Urination, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Wheeze != diffOperationProtocol.Wheeze) { CreateMergeInfos( ObjectType.OperationProtocolWheeze, patientFio, nosology, hospitalizationDate, operationName, "Хрипы", Wheeze, diffOperationProtocol.Wheeze, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OperationCourse != diffOperationProtocol.OperationCourse) { CreateMergeInfos( ObjectType.OperationProtocolOperationCourse, patientFio, nosology, hospitalizationDate, operationName, "Ход операции", OperationCourse, diffOperationProtocol.OperationCourse, diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (CCompareEngine.CompareDate(TreatmentPlanDate, diffOperationProtocol.TreatmentPlanDate) != 0) { CreateMergeInfos( ObjectType.OperationProtocolTreatmentPlanDate, patientFio, nosology, hospitalizationDate, operationName, "Дата написание плана обследования", CConvertEngine.DateTimeToString(TreatmentPlanDate), CConvertEngine.DateTimeToString(diffOperationProtocol.TreatmentPlanDate), diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (CCompareEngine.CompareTime(TimeWriting, diffOperationProtocol.TimeWriting) != 0) { CreateMergeInfos( ObjectType.OperationProtocolTimeWriting, patientFio, nosology, hospitalizationDate, operationName, "Время написания эпикриза", CConvertEngine.TimeToString(TimeWriting), CConvertEngine.TimeToString(diffOperationProtocol.TimeWriting), diffOperationProtocol, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } }
/// <summary> /// Получить строку с описанием разницы в полях между текущей и переданной операции /// </summary> /// <param name="diffOperation">Импортируемая операция</param> /// <param name="patientFio">ФИО импортируемого пациента</param> /// <param name="nosology">Нозология</param> /// <param name="hospitalizationDate">Дата импортируемой госпитализации</param> /// <param name="databasesMerger">Указатель на класс для мержа объектов</param> /// <returns></returns> public void GetDifference( COperation diffOperation, string patientFio, string nosology, string hospitalizationDate, CDatabasesMerger databasesMerger) { CMergeInfo ownPatientMergeInfo; CMergeInfo foreignPatientMergeInfo; if (HeAnaesthetist != diffOperation.HeAnaesthetist) { CreateMergeInfos( ObjectType.OperationHeAnaesthetist, patientFio, nosology, hospitalizationDate, "Анестезист", HeAnaesthetist, diffOperation.HeAnaesthetist, diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (SheAnaesthetist != diffOperation.SheAnaesthetist) { CreateMergeInfos( ObjectType.OperationSheAnaesthetist, patientFio, nosology, hospitalizationDate, "Анестезистка", SheAnaesthetist, diffOperation.SheAnaesthetist, diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (ScrubNurse != diffOperation.ScrubNurse) { CreateMergeInfos( ObjectType.OperationScrubNurse, patientFio, nosology, hospitalizationDate, "Операционная мед. сестра", ScrubNurse, diffOperation.ScrubNurse, diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Orderly != diffOperation.Orderly) { CreateMergeInfos( ObjectType.OperationOrderly, patientFio, nosology, hospitalizationDate, "Санитар", Orderly, diffOperation.Orderly, diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (CCompareEngine.CompareDate(DateOfOperation, diffOperation.DateOfOperation) != 0) { CreateMergeInfos( ObjectType.OperationDateOfOperation, patientFio, nosology, hospitalizationDate, "Дата операции", CConvertEngine.DateTimeToString(DateOfOperation), CConvertEngine.DateTimeToString(diffOperation.DateOfOperation), diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (CCompareEngine.CompareTime(StartTimeOfOperation, diffOperation.StartTimeOfOperation) != 0) { CreateMergeInfos( ObjectType.OperationStartTimeOfOperation, patientFio, nosology, hospitalizationDate, "Время начала операции", CConvertEngine.TimeToString(StartTimeOfOperation), CConvertEngine.TimeToString(diffOperation.StartTimeOfOperation), diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (EndTimeOfOperation.HasValue && !diffOperation.EndTimeOfOperation.HasValue) { CreateMergeInfos( ObjectType.OperationEndTimeOfOperation, patientFio, nosology, hospitalizationDate, "Время окончания операции", CConvertEngine.TimeToString(EndTimeOfOperation.Value), "Нет значения", diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } else if (!EndTimeOfOperation.HasValue && diffOperation.EndTimeOfOperation.HasValue) { CreateMergeInfos( ObjectType.OperationEndTimeOfOperation, patientFio, nosology, hospitalizationDate, "Время окончания операции", "Нет значения", CConvertEngine.TimeToString(diffOperation.EndTimeOfOperation.Value), diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } else if (EndTimeOfOperation.HasValue && diffOperation.EndTimeOfOperation.HasValue && CCompareEngine.CompareDate(EndTimeOfOperation.Value, diffOperation.EndTimeOfOperation.Value) != 0) { CreateMergeInfos( ObjectType.OperationEndTimeOfOperation, patientFio, nosology, hospitalizationDate, "Время окончания операции", CConvertEngine.TimeToString(EndTimeOfOperation.Value), CConvertEngine.TimeToString(diffOperation.EndTimeOfOperation.Value), diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } string ownValue; string foreignValue; if (!CCompareEngine.IsArraysEqual(Surgeons.ToArray(), diffOperation.Surgeons.ToArray(), out ownValue, out foreignValue)) { CreateMergeInfos( ObjectType.OperationSurgeons, patientFio, nosology, hospitalizationDate, "Список хирургов", ownValue, foreignValue, diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); ownPatientMergeInfo.Object = Surgeons; foreignPatientMergeInfo.Object = diffOperation.Surgeons; databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (!CCompareEngine.IsArraysEqual(Assistents.ToArray(), diffOperation.Assistents.ToArray(), out ownValue, out foreignValue)) { CreateMergeInfos( ObjectType.OperationAssistents, patientFio, nosology, hospitalizationDate, "Список ассистентов", ownValue, foreignValue, diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); ownPatientMergeInfo.Object = Assistents; foreignPatientMergeInfo.Object = diffOperation.Assistents; databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (!CCompareEngine.IsArraysEqual(OperationTypes.ToArray(), diffOperation.OperationTypes.ToArray(), out ownValue, out foreignValue)) { CreateMergeInfos( ObjectType.OperationTypes, patientFio, nosology, hospitalizationDate, "Список типов операций", ownValue, foreignValue, diffOperation, out ownPatientMergeInfo, out foreignPatientMergeInfo); ownPatientMergeInfo.Object = OperationTypes; foreignPatientMergeInfo.Object = diffOperation.OperationTypes; databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } }