Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }