@ -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
}
}
/// <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 ( 1 0 0 ) . 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 ( 1 0 0 0 ) . 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 青藏公司对比