예제 #1
0
        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)
            };
        }
예제 #2
0
 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;
     }
 }
예제 #3
0
        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;
            }
        }
예제 #4
0
        /// <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);
            }
        }
예제 #5
0
 public static int Compare(CHospitalization hospitalization1, CHospitalization hospitalization2)
 {
     return(CCompareEngine.CompareDateTime(hospitalization1.DeliveryDate, hospitalization2.DeliveryDate));
 }