diff --git a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
index 59d8014..5c62c95 100644
--- a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
+++ b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
@@ -26,6 +26,7 @@ using System.Data;
using System.Globalization;
using System.IO;
using System.Linq;
+using System.Linq.Dynamic.Core;
using System.Reflection;
using System.Runtime.Loader;
using System.Text;
@@ -2912,6 +2913,245 @@ namespace Shentun.Peis.DataMigrations
}
}
+
+
+ ///
+ /// 迁移全部总检数据20240601
+ ///
+ ///
+ public async Task TransferAllSumData()
+ {
+
+ string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_new' ");
+
+ List TempDate = (await _patientRegisterRepository.GetQueryableAsync())
+ .Include(x => x.SumDiagnoses)
+ .Include(x => x.SumSuggestionHeaders)
+ .Include(x => x.SumSummaryHeaders)
+ .OrderBy(o => o.Id)
+ .Where(m => m.CreationTime < Convert.ToDateTime("2024-05-20")
+ && m.SumDiagnoses.Count == 0
+ && m.SumSuggestionHeaders.Count == 0
+ && m.SumSummaryHeaders.Count == 0
+ && string.Compare(m.Id.ToString(), nextKeyValue) > 0)
+ .Take(100).ToList();
+
+
+ if (TempDate.Any())
+ {
+ foreach (var item in TempDate)
+ {
+ #region 转换成老系统PatientRegisterId
+ var oldPatientRegisterEnt = (await _fieldComparisonRepository.GetQueryableAsync())
+ .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault();
+
+ if (oldPatientRegisterEnt != null)
+ {
+ string oldPatientRegisterId = oldPatientRegisterEnt.OldKeyValue; //老系统ID
+
+ await TransferSumByPatientRegisterIdData(item.Id, oldPatientRegisterId);
+ }
+
+ #endregion
+
+ await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_new' ");
+ }
+
+ await TransferAllSumData();
+ }
+ else
+ {
+ _logger.LogInformation("总检数据已处理完");
+ }
+
+ }
+
+
+ ///
+ /// 迁移总检数据20240601
+ ///
+ ///
+ public async Task TransferSumByPatientRegisterIdData(Guid newPatientRegisterId, string oldPatientRegisterId)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+
+
+ #region 综述、建议
+ var oldSum = await Db.Ado.GetDataTableAsync($"select summary,suggestion,barcode_no from patient_register where patient_register_id='{oldPatientRegisterId}' ");
+
+ if (oldSum.Rows.Count == 1)
+ {
+ string oldSummary = oldSum.Rows[0][0].ToString();
+ string oldSuggestion = oldSum.Rows[0][1].ToString();
+
+ if (!string.IsNullOrWhiteSpace(oldSummary))
+ {
+
+ Guid sumSummaryHeaderId = GuidGenerator.Create();
+
+ var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
+ {
+ DisplayOrder = 1,
+ SummaryFlag = '0',
+ PatientRegisterId = newPatientRegisterId,
+ SummaryTitle = "异常结果如下"
+ };
+
+ await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
+
+ Guid sumSummaryContentId = GuidGenerator.Create();
+ var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
+ {
+ DisplayOrder = 1,
+ SumSummaryHeaderId = sumSummaryHeaderId,
+ SummaryContent = oldSummary
+ };
+
+ await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
+
+ }
+
+
+ if (!string.IsNullOrWhiteSpace(oldSuggestion))
+ {
+
+ Guid sumSuggestionHeaderId = GuidGenerator.Create();
+
+ var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
+ {
+ DisplayOrder = 1,
+ SuggestionFlag = '0',
+ PatientRegisterId = newPatientRegisterId,
+ SuggestionTitle = "健康建议如下"
+ };
+
+ await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader);
+
+ Guid sumSuggestionContentId = GuidGenerator.Create();
+ var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId)
+ {
+ DisplayOrder = 1,
+ SuggestionContent = oldSuggestion,
+ SuggestionType = SuggestionTypeFlag.HealthGuidance,
+ SumSuggestionHeaderId = sumSuggestionHeaderId
+ };
+
+ await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent);
+
+
+
+ #region 总症诊断
+ var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
+
+ if (oldSummaryDiagnosis.Rows.Count > 0)
+ {
+ List sumDiagnosisInsert = new List();
+
+ foreach (DataRow row in oldSummaryDiagnosis.Rows)
+ {
+ var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
+ .Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
+ if (diagnosisEnt != null)
+ {
+
+ var dataSumDiagnosis = new SumDiagnosis
+ {
+ DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1,
+ PatientRegisterId = newPatientRegisterId,
+ DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
+ SumSuggestionHeaderId = sumSuggestionHeaderId
+ };
+
+ sumDiagnosisInsert.Add(dataSumDiagnosis);
+
+
+ }
+
+
+ }
+
+ if (sumDiagnosisInsert.Any())
+ await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
+
+ }
+ #endregion
+
+
+ }
+
+
+ }
+ #endregion
+
+ await uow.CompleteAsync();
+
+ await Db.Ado.ExecuteCommandAsync($"insert into tb_handle_patient_register (new_patient_register_id,old_patient_register_id,addtime) " +
+ $"values ('{newPatientRegisterId.ToString()}','{oldPatientRegisterId}',getdate())");
+ }
+ }
+
+
+
+ ///
+ /// 修复总检诊断绑定的建议头ID
+ ///
+ ///
+ public async Task TransferUpdateSumSuggestionHeaderIdData()
+ {
+
+ string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis' ");
+
+ List TempDate = (await _patientRegisterRepository.GetQueryableAsync())
+ .OrderBy(o => o.Id)
+ .Where(m => m.CreationTime < Convert.ToDateTime("2024-05-20")
+ && string.Compare(m.Id.ToString(), nextKeyValue) > 0)
+ .Take(1000).ToList();
+
+
+ if (TempDate.Any())
+ {
+ foreach (var item in TempDate)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+ #region 修复建议头ID
+ var sumDiagnosisList = await _sumDiagnosisRepository.GetListAsync(m => m.PatientRegisterId == item.Id);
+
+ foreach (var sumDiagnosis in sumDiagnosisList)
+ {
+ var isSumSuggestionHeaderId = await _sumSuggestionHeaderRepository.CountAsync(c => c.Id == sumDiagnosis.SumSuggestionHeaderId);
+ if (isSumSuggestionHeaderId == 0)
+ {
+ var sumSuggestionContentEnt = await _sumSuggestionContentRepository.FirstOrDefaultAsync(m => m.Id == sumDiagnosis.SumSuggestionHeaderId);
+ if (sumSuggestionContentEnt != null)
+ {
+ sumDiagnosis.SumSuggestionHeaderId = sumSuggestionContentEnt.SumSuggestionHeaderId;
+ }
+ }
+ }
+
+ await _sumDiagnosisRepository.UpdateManyAsync(sumDiagnosisList);
+
+ #endregion
+
+ await uow.CompleteAsync();
+ }
+ await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_diagnosis' ");
+ }
+
+ await TransferUpdateSumSuggestionHeaderIdData();
+ }
+ else
+ {
+ _logger.LogInformation("修复总检诊断绑定的建议头ID已处理完");
+ }
+
+ }
+
+ //20170706010013
+
+
#endregion
#region 青藏公司对比
diff --git a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs
index 67b49c3..c4541c9 100644
--- a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs
+++ b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs
@@ -64,7 +64,7 @@ namespace Shentun.Peis.ReportTemplates
_cacheService = cacheService;
}
-
+
///
/// 根据模板创建报告
///
@@ -1562,7 +1562,7 @@ namespace Shentun.Peis.ReportTemplates
var medicalTenAbnormalResults = query.ToList().GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalTenAbnormalResult
{
DiagnosisName = s.FirstOrDefault().DiagnosisName,
- DiagnosisSuggestion = DataHelper.SetSumSuggestionInReport(s.Select(ss => ss.ac).ToList())
+ DiagnosisSuggestion = DataHelper.SetSumSuggestionInReport(s.Where(m => m.ac != null).Select(ss => ss.ac).ToList())
});
documentData.MedicalTenAbnormalResults = medicalTenAbnormalResults.ToList();