private void CreateMergeInfos( ObjectType objectType, string patientFio, string nosology, string hospitalizationDate, string parameterName, string ownValue, string foreignValue, CDischargeEpicrisis diffDischargeEpicrisis, out CMergeInfo ownPatientMergeInfo, out CMergeInfo foreignPatientMergeInfo) { const string differenceStr = "Пациент: '{0}'. Нозология: '{1}'. Дата госпитализации: '{2}'. Объект: 'Выписной эпикриз'.\r\nНазвание параметра: '{3}'. Значение: '{4}'"; ownPatientMergeInfo = new CMergeInfo { IdOwnHospitalization = HospitalizationId, TypeOfObject = objectType, Value = ownValue, Difference = string.Format(differenceStr, patientFio, nosology, hospitalizationDate, parameterName, ownValue) }; foreignPatientMergeInfo = new CMergeInfo { IdForeignHospitalization = diffDischargeEpicrisis.HospitalizationId, TypeOfObject = objectType, Value = foreignValue, Difference = string.Format(differenceStr, patientFio, nosology, hospitalizationDate, parameterName, foreignValue) }; }
public CDischargeEpicrisis(CDischargeEpicrisis dischargeEpicris) { HospitalizationId = dischargeEpicris.HospitalizationId; AnalysisDate = dischargeEpicris.AnalysisDate; AfterOperation = dischargeEpicris.AfterOperation; ConservativeTherapy = dischargeEpicris.ConservativeTherapy; Ekg = dischargeEpicris.Ekg; OakEritrocits = dischargeEpicris.OakEritrocits; OakHb = dischargeEpicris.OakHb; OakLekocits = dischargeEpicris.OakLekocits; OakSoe = dischargeEpicris.OakSoe; OamColor = dischargeEpicris.OamColor; OamDensity = dischargeEpicris.OamDensity; OamEritrocits = dischargeEpicris.OamEritrocits; OamLekocits = dischargeEpicris.OamLekocits; AdditionalAnalises = dischargeEpicris.AdditionalAnalises; Recomendations = new List <string>(dischargeEpicris.Recomendations); AdditionalRecomendations = new List <string>(dischargeEpicris.AdditionalRecomendations); NotInDatabase = dischargeEpicris.NotInDatabase; }
/// <summary> /// Получить строку с описанием разницы в полях между текущим и переданным /// выписным эпикризом /// </summary> /// <param name="diffDischargeEpicrisis">Импортируемый выписной эпикриз</param> /// <param name="patientFio">ФИО пациента</param> /// <param name="nosology">Нозология</param> /// <param name="hospitalizationDate">Дата госпитализации</param> /// <param name="databasesMerger">Указатель на класс для мержа объектов</param> /// <returns></returns> public void GetDifference( CDischargeEpicrisis diffDischargeEpicrisis, string patientFio, string nosology, string hospitalizationDate, CDatabasesMerger databasesMerger) { CMergeInfo ownPatientMergeInfo; CMergeInfo foreignPatientMergeInfo; if (AnalysisDate.HasValue && diffDischargeEpicrisis.AnalysisDate.HasValue && CCompareEngine.CompareDate(AnalysisDate.Value, diffDischargeEpicrisis.AnalysisDate.Value) != 0) { CreateMergeInfos( ObjectType.DischargeEpicrisisAfterOperation, patientFio, nosology, hospitalizationDate, "Дата взятия анализов", CConvertEngine.DateTimeToString(AnalysisDate.Value), CConvertEngine.DateTimeToString(diffDischargeEpicrisis.AnalysisDate.Value), diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (AfterOperation != diffDischargeEpicrisis.AfterOperation) { CreateMergeInfos( ObjectType.DischargeEpicrisisAfterOperation, patientFio, nosology, hospitalizationDate, "После операции", AfterOperation, diffDischargeEpicrisis.AfterOperation, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (ConservativeTherapy != diffDischargeEpicrisis.ConservativeTherapy) { CreateMergeInfos( ObjectType.DischargeEpicrisisConservativeTherapy, patientFio, nosology, hospitalizationDate, "Консервативное лечение", ConservativeTherapy, diffDischargeEpicrisis.ConservativeTherapy, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (Ekg != diffDischargeEpicrisis.Ekg) { CreateMergeInfos( ObjectType.DischargeEpicrisisEkg, patientFio, nosology, hospitalizationDate, "ЭКГ", Ekg, diffDischargeEpicrisis.Ekg, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OakEritrocits != diffDischargeEpicrisis.OakEritrocits) { CreateMergeInfos( ObjectType.DischargeEpicrisisOakEritrocits, patientFio, nosology, hospitalizationDate, "Общий анализ крови, эритроциты", OakEritrocits, diffDischargeEpicrisis.OakEritrocits, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OakHb != diffDischargeEpicrisis.OakHb) { CreateMergeInfos( ObjectType.DischargeEpicrisisOakHb, patientFio, nosology, hospitalizationDate, "Общий анализ крови, Hb", OakHb, diffDischargeEpicrisis.OakHb, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OakLekocits != diffDischargeEpicrisis.OakLekocits) { CreateMergeInfos( ObjectType.DischargeEpicrisisOakLekocits, patientFio, nosology, hospitalizationDate, "Общий анализ крови, лейкоциты", OakLekocits, diffDischargeEpicrisis.OakLekocits, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OakSoe != diffDischargeEpicrisis.OakSoe) { CreateMergeInfos( ObjectType.DischargeEpicrisisOakSoe, patientFio, nosology, hospitalizationDate, "Общий анализ крови, СОЭ", OakSoe, diffDischargeEpicrisis.OakSoe, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OamColor != diffDischargeEpicrisis.OamColor) { CreateMergeInfos( ObjectType.DischargeEpicrisisOamColor, patientFio, nosology, hospitalizationDate, "Общий анализ мочи, цвет", OamColor, diffDischargeEpicrisis.OamColor, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OamDensity != diffDischargeEpicrisis.OamDensity) { CreateMergeInfos( ObjectType.DischargeEpicrisisOamDensity, patientFio, nosology, hospitalizationDate, "Общий анализ мочи, относительная плотность", OamDensity, diffDischargeEpicrisis.OamDensity, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OamEritrocits != diffDischargeEpicrisis.OamEritrocits) { CreateMergeInfos( ObjectType.DischargeEpicrisisOamEritrocits, patientFio, nosology, hospitalizationDate, "Общий анализ мочи, эритроциты", OamEritrocits, diffDischargeEpicrisis.OamEritrocits, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (OamLekocits != diffDischargeEpicrisis.OamLekocits) { CreateMergeInfos( ObjectType.DischargeEpicrisisOamLekocits, patientFio, nosology, hospitalizationDate, "Общий анализ мочи, лейкоциты", OamLekocits, diffDischargeEpicrisis.OamLekocits, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (AdditionalAnalises != diffDischargeEpicrisis.AdditionalAnalises) { CreateMergeInfos( ObjectType.DischargeEpicrisisAdditionalAnalises, patientFio, nosology, hospitalizationDate, "Другие анализы", AdditionalAnalises, diffDischargeEpicrisis.AdditionalAnalises, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } string ownValue; string foreignValue; if (!CCompareEngine.IsArraysEqual(Recomendations.ToArray(), diffDischargeEpicrisis.Recomendations.ToArray(), out ownValue, out foreignValue)) { CreateMergeInfos( ObjectType.DischargeEpicrisisRecomendations, patientFio, nosology, hospitalizationDate, "Рекомендации при выписке", ownValue, foreignValue, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); ownPatientMergeInfo.Object = Recomendations; foreignPatientMergeInfo.Object = diffDischargeEpicrisis.Recomendations; databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } if (!CCompareEngine.IsArraysEqual(AdditionalRecomendations.ToArray(), diffDischargeEpicrisis.AdditionalRecomendations.ToArray(), out ownValue, out foreignValue)) { CreateMergeInfos( ObjectType.DischargeEpicrisisAdditionalRecomendations, patientFio, nosology, hospitalizationDate, "Дополнительные рекомендации при выписке", ownValue, foreignValue, diffDischargeEpicrisis, out ownPatientMergeInfo, out foreignPatientMergeInfo); ownPatientMergeInfo.Object = AdditionalRecomendations; foreignPatientMergeInfo.Object = diffDischargeEpicrisis.AdditionalRecomendations; databasesMerger.AddMergeInfo(ownPatientMergeInfo, foreignPatientMergeInfo); } }