Browse Source

数据

bjmzak
wxd 2 years ago
parent
commit
c4e32fbf24
  1. 240
      src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
  2. 4
      src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs

240
src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs

@ -26,6 +26,7 @@ using System.Data;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Linq.Dynamic.Core;
using System.Reflection; using System.Reflection;
using System.Runtime.Loader; using System.Runtime.Loader;
using System.Text; using System.Text;
@ -2912,6 +2913,245 @@ namespace Shentun.Peis.DataMigrations
} }
} }
/// <summary>
/// 迁移全部总检数据20240601
/// </summary>
/// <returns></returns>
public async Task TransferAllSumData()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_new' ");
List<PatientRegister> 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("总检数据已处理完");
}
}
/// <summary>
/// 迁移总检数据20240601
/// </summary>
/// <returns></returns>
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<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
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())");
}
}
/// <summary>
/// 修复总检诊断绑定的建议头ID
/// </summary>
/// <returns></returns>
public async Task TransferUpdateSumSuggestionHeaderIdData()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis' ");
List<PatientRegister> 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 #endregion
#region 青藏公司对比 #region 青藏公司对比

4
src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs

@ -64,7 +64,7 @@ namespace Shentun.Peis.ReportTemplates
_cacheService = cacheService; _cacheService = cacheService;
} }
/// <summary> /// <summary>
/// 根据模板创建报告 /// 根据模板创建报告
/// </summary> /// </summary>
@ -1562,7 +1562,7 @@ namespace Shentun.Peis.ReportTemplates
var medicalTenAbnormalResults = query.ToList().GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalTenAbnormalResult var medicalTenAbnormalResults = query.ToList().GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalTenAbnormalResult
{ {
DiagnosisName = s.FirstOrDefault().DiagnosisName, 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(); documentData.MedicalTenAbnormalResults = medicalTenAbnormalResults.ToList();

Loading…
Cancel
Save