@ -50,7 +50,7 @@ namespace Shentun.Peis.DataMigrations
private readonly SqlSugarClient Db = new SqlSugarClient ( new ConnectionConfig ( )
{
ConnectionString = "server=.;uid=sa;pwd=123;database=mypeis;Encrypt=false;" ,
ConnectionString = "server=.;uid=sa;pwd=123;database=mypeis0512 ;Encrypt=false;" ,
DbType = SqlSugar . DbType . SqlServer ,
IsAutoCloseConnection = true
} ) ;
@ -2281,14 +2281,635 @@ namespace Shentun.Peis.DataMigrations
#region 新版人员登记迁移
/// <summary>
/// 迁移人员、检查单、登记项目、项目结果、医生小结、修改人员创建者、创建时间
/// </summary>
/// <returns></returns>
public async Task TransferPatientRegisterWithAsbitemData ( )
{
string nextKeyValue = Db . Ado . GetString ( "select keyvalue from tb_export_key where tablename='patient_register_new' " ) ;
List < string > patientRegisterNos = new List < string > { "P23083101999" ,
"P23083100427" , "P23083101608" , "P23083100503" , "P23083102172" ,
"P23083102000" , "P23083100563" , "P23083100542" } ;
var oldPatientRegisterList = await Db . Ado . GetDataTableAsync ( $"select top 1000 * from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc" ) ;
if ( oldPatientRegisterList . Rows . Count > 0 )
{
var userList = await _identityUserRepository . GetListAsync ( ) ;
List < CustomerOrgRegister > customerOrgRegisterList = await _customerOrgRegisterRepository . GetListAsync ( ) ;
foreach ( DataRow row in oldPatientRegisterList . Rows )
{
if ( ! patientRegisterNos . Contains ( row [ "barcode_no" ] . ToString ( ) ) )
{
using ( var uow = _unitOfWorkManager . Begin ( requiresNew : true , isTransactional : true ) )
{
//档案ID
Guid patientId = Guid . Empty ;
#region 处理档案,未找到档案就生成
var patientEnt = await _patientRepository . FirstOrDefaultAsync ( m = > m . PatientNo = = row [ "patient_id" ] . ToString ( ) ) ;
if ( patientEnt = = null )
{
string nationId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "nation_id" ] . ToString ( ) ) )
{
nationId = ( await _fieldComparisonRepository . GetQueryableAsync ( ) ) . Where ( m = > m . TableName = = "nation" & & m . OldKeyValue = = row [ "nation_id" ] . ToString ( ) ) . FirstOrDefault ( ) . NewKeyValue ;
}
Guid autoPatientId = GuidGenerator . Create ( ) ; //档案ID
var dataPatient = new Patient ( autoPatientId )
{
Address = row [ "address" ] . ToString ( ) ,
BirthDate = string . IsNullOrEmpty ( row [ "birth_date" ] . ToString ( ) ) ? null : Convert . ToDateTime ( row [ "birth_date" ] . ToString ( ) ) ,
BirthPlaceId = null ,
DisplayName = row [ "name" ] . ToString ( ) ,
Email = row [ "email" ] . ToString ( ) ,
IdNo = row [ "id_card_no" ] . ToString ( ) ,
MaritalStatusId = row [ "marital_status_id" ] . ToString ( ) = = "2" ? '4' : Convert . ToChar ( row [ "marital_status_id" ] . ToString ( ) ) ,
MedicalCenterId = defaultMedicalCenterId ,
MobileTelephone = row [ "mobile_telephone" ] . ToString ( ) ,
NationId = nationId ,
PatientNo = row [ "patient_id" ] . ToString ( ) ,
PatientPassword = row [ "patient_password" ] . ToString ( ) ,
PostalCode = row [ "postalcode" ] . ToString ( ) ,
SexId = ConvertSex ( row [ "sex_id" ] . ToString ( ) ) ,
SimpleCode = LanguageConverter . GetPYSimpleCode ( row [ "name" ] . ToString ( ) ) ,
Telephone = row [ "telephone" ] . ToString ( )
} ;
await _patientRepository . InsertAsync ( dataPatient , true ) ;
patientId = autoPatientId ;
}
else
{
patientId = patientEnt . Id ;
}
#endregion
Guid patientRegisterId = GuidGenerator . Create ( ) ; //生成登记ID
#region 转换审核医生ID
Guid ? AuditDoctorId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "audit_doctor" ] . ToString ( ) ) )
{
var userEnt = userList . Where ( m = > m . UserName = = row [ "audit_doctor" ] . ToString ( ) . Trim ( ) ) . FirstOrDefault ( ) ;
if ( userEnt ! = null )
{
AuditDoctorId = userEnt . Id ;
}
}
#endregion
#region 转换单位分组ID
Guid ? customerOrgGroupId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "org_group_id" ] . ToString ( ) ) )
{
var customerOrgGroupEnt = ( await _fieldComparisonRepository . GetQueryableAsync ( ) ) . Where ( m = > m . TableName = = "customer_org_group" & & m . OldKeyValue = = row [ "org_group_id" ] . ToString ( ) ) . FirstOrDefault ( ) ;
if ( customerOrgGroupEnt ! = null )
{
customerOrgGroupId = Guid . Parse ( customerOrgGroupEnt . NewKeyValue ) ;
}
}
#endregion
#region 转换单位ID 部门
Guid customerOrgId = Guid . Parse ( ( await _fieldComparisonRepository . GetQueryableAsync ( ) ) . Where ( m = > m . TableName = = "customer_org" & & m . OldKeyValue = = row [ "org_id" ] . ToString ( ) ) . FirstOrDefault ( ) . NewKeyValue ) ;
#endregion
#region 转换单位体检次数ID 没有增加默认值
Guid customerOrgRegisterId = GuidFlag . PersonCustomerOrgRegisterId ;
if ( row [ "org_id" ] . ToString ( ) ! = "00000" )
{
Guid topCustomerOrgId = Guid . Parse ( ( await _fieldComparisonRepository . GetQueryableAsync ( ) ) . Where ( m = > m . TableName = = "customer_org" & & m . OldKeyValue = = row [ "org_id" ] . ToString ( ) . Substring ( 0 , 5 ) ) . FirstOrDefault ( ) . NewKeyValue ) ;
var customerOrgRegisterEnt = customerOrgRegisterList . Where ( m = > m . CustomerOrgId = = topCustomerOrgId
& & m . MedicalTimes = = ( short ) Convert . ToInt32 ( row [ "org_medical_times" ] . ToString ( ) ) ) . FirstOrDefault ( ) ;
if ( customerOrgRegisterEnt ! = null )
{
customerOrgRegisterId = customerOrgRegisterEnt . Id ;
}
}
#endregion
#region 转换体检结论ID
Guid ? medicalConclusionId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "medical_conclusion_id" ] . ToString ( ) ) )
{
var medicalConclusionEnt = ( await _fieldComparisonRepository . GetQueryableAsync ( ) ) . Where ( m = > m . TableName = = "medical_conclusion"
& & m . OldKeyValue = = row [ "medical_conclusion_id" ] . ToString ( ) ) . FirstOrDefault ( ) ;
if ( medicalConclusionEnt ! = null )
{
medicalConclusionId = Guid . Parse ( medicalConclusionEnt . NewKeyValue ) ;
}
}
#endregion
#region 转换套餐ID
Guid ? medicalPackageId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "medical_package_id" ] . ToString ( ) ) )
{
var medicalPackageEnt = ( await _fieldComparisonRepository . GetQueryableAsync ( ) ) . Where ( m = > m . TableName = = "medical_package" & & m . OldKeyValue = = row [ "medical_package_id" ] . ToString ( ) ) . FirstOrDefault ( ) ;
if ( medicalPackageEnt ! = null )
{
medicalPackageId = Guid . Parse ( medicalPackageEnt . NewKeyValue ) ;
}
}
#endregion
#region 转换体检类别ID
Guid ? medicalTypeId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "medical_type_id" ] . ToString ( ) ) )
{
var medicalTypeEnt = ( await _fieldComparisonRepository . GetQueryableAsync ( ) ) . Where ( m = > m . TableName = = "medical_type" & & m . OldKeyValue = = row [ "medical_type_id" ] . ToString ( ) ) . FirstOrDefault ( ) ;
if ( medicalTypeEnt ! = null )
{
medicalTypeId = Guid . Parse ( medicalTypeEnt . NewKeyValue ) ;
}
}
#endregion
#region 转换人员类别ID
Guid ? personnelTypeId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "personnel_type_id" ] . ToString ( ) ) )
{
var personnelTypeEnt = ( await _fieldComparisonRepository . GetQueryableAsync ( ) ) . Where ( m = > m . TableName = = "personnel_type" & & m . OldKeyValue = = row [ "personnel_type_id" ] . ToString ( ) ) . FirstOrDefault ( ) ;
if ( personnelTypeEnt ! = null )
{
personnelTypeId = Guid . Parse ( personnelTypeEnt . NewKeyValue ) ;
}
}
#endregion
#region 转换总检医生ID
Guid ? summaryDoctorId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "summary_doctor" ] . ToString ( ) ) )
{
var userEnt = userList . Where ( m = > m . UserName = = row [ "summary_doctor" ] . ToString ( ) . Trim ( ) ) . FirstOrDefault ( ) ;
if ( userEnt ! = null )
{
summaryDoctorId = userEnt . Id ;
}
}
#endregion
#region 上传图片,获取地址
string photo = "" ;
if ( ! string . IsNullOrEmpty ( row [ "photograph" ] . ToString ( ) ) )
{
photo = UpLoadImg ( patientRegisterId , Convert . ToDateTime ( row [ "register_date" ] . ToString ( ) ) , ( byte [ ] ) row [ "photograph" ] ) ;
}
#endregion
var data = new PatientRegister ( patientRegisterId )
{
BirthDate = string . IsNullOrEmpty ( row [ "birth_date" ] . ToString ( ) ) ? null : Convert . ToDateTime ( row [ "birth_date" ] . ToString ( ) ) ,
MaritalStatusId = row [ "marital_status_id" ] . ToString ( ) = = "2" ? '4' : Convert . ToChar ( row [ "marital_status_id" ] . ToString ( ) ) ,
MedicalCenterId = defaultMedicalCenterId ,
SexId = ConvertSex ( row [ "sex_id" ] . ToString ( ) ) ,
Age = string . IsNullOrWhiteSpace ( row [ "age" ] . ToString ( ) ) ? null : Convert . ToInt16 ( row [ "age" ] . ToString ( ) ) ,
AuditDate = string . IsNullOrWhiteSpace ( row [ "audit_date" ] . ToString ( ) ) ? null : Convert . ToDateTime ( row [ "audit_date" ] . ToString ( ) ) ,
AuditDoctorId = AuditDoctorId ,
CompleteFlag = Convert . ToChar ( row [ "complete_flag" ] . ToString ( ) ) ,
CustomerOrgGroupId = customerOrgGroupId ,
CustomerOrgId = customerOrgId ,
CustomerOrgRegisterId = customerOrgRegisterId ,
GuidePrintTimes = string . IsNullOrWhiteSpace ( row [ "instruct_print_times" ] . ToString ( ) ) ? ( short ) 0 : Convert . ToInt16 ( row [ "instruct_print_times" ] . ToString ( ) ) ,
InterposeMeasure = null ,
IsAudit = string . IsNullOrWhiteSpace ( row [ "audit_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( row [ "audit_flag" ] . ToString ( ) ) ,
IsLock = string . IsNullOrWhiteSpace ( row [ "lock_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( row [ "lock_flag" ] . ToString ( ) ) ,
IsMedicalStart = string . IsNullOrWhiteSpace ( row [ "medical_start_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( row [ "medical_start_flag" ] . ToString ( ) ) ,
IsNameHide = string . IsNullOrWhiteSpace ( row [ "name_encrypt_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( row [ "name_encrypt_flag" ] . ToString ( ) ) ,
IsPhoneFollow = 'N' ,
IsRecoverGuide = string . IsNullOrWhiteSpace ( row [ "recover_form_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( row [ "recover_form_flag" ] . ToString ( ) ) ,
IsUpload = string . IsNullOrWhiteSpace ( row [ "upload_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( row [ "upload_flag" ] . ToString ( ) ) ,
IsVip = string . IsNullOrWhiteSpace ( row [ "vip_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( row [ "vip_flag" ] . ToString ( ) ) ,
JobCardNo = row [ "job_card_no" ] . ToString ( ) ,
JobPost = row [ "job_post" ] . ToString ( ) ,
JobTitle = row [ "job_title" ] . ToString ( ) ,
MedicalCardNo = row [ "medical_card_no" ] . ToString ( ) ,
MedicalConclusionId = medicalConclusionId ,
MedicalPackageId = medicalPackageId ,
MedicalStartDate = string . IsNullOrEmpty ( row [ "medical_start_date" ] . ToString ( ) ) ? null : Convert . ToDateTime ( row [ "medical_start_date" ] . ToString ( ) ) ,
MedicalTimes = Convert . ToInt16 ( row [ "medical_times" ] . ToString ( ) ) ,
MedicalTypeId = medicalTypeId ,
PatientId = patientId ,
PatientName = row [ "name" ] . ToString ( ) ,
PatientRegisterNo = row [ "barcode_no" ] . ToString ( ) ,
PersonnelTypeId = personnelTypeId ,
Photo = photo ,
Remark = row [ "remark" ] . ToString ( ) ,
ReportPrintTimes = Convert . ToInt16 ( row [ "report_print_times" ] . ToString ( ) ) ,
Salesman = row [ "salesman" ] . ToString ( ) ,
SexHormoneTermId = null ,
SummaryDate = string . IsNullOrEmpty ( row [ "summary_date" ] . ToString ( ) ) ? null : Convert . ToDateTime ( row [ "summary_date" ] . ToString ( ) ) ,
SummaryDoctorId = summaryDoctorId ,
ThirdInfo = row [ "third_info" ] . ToString ( ) ,
} ;
await _patientRegisterRepository . InsertAsync ( data , true ) ;
#region 人员登记扩展
var patientRegisterExterData = new PatientRegisterExter
{
IsQztlImport = Convert . ToChar ( row [ "is_qztl_import" ] . ToString ( ) ) ,
PatientRegisterId = patientRegisterId ,
Planuserid = row [ "planuserid" ] . ToString ( ) ,
QztlIsCw = Convert . ToChar ( row [ "qztl_is_cw" ] . ToString ( ) ) ,
QztlIsCy = Convert . ToChar ( row [ "qztl_is_cy" ] . ToString ( ) ) ,
QztlIsFj = Convert . ToChar ( row [ "qztl_is_fj" ] . ToString ( ) ) ,
QztlIsGt = Convert . ToChar ( row [ "qztl_is_gt" ] . ToString ( ) ) ,
QztlIsMain = Convert . ToChar ( row [ "qztl_is_main" ] . ToString ( ) ) ,
QztlIsWh = Convert . ToChar ( row [ "qztl_is_wh" ] . ToString ( ) ) ,
QztlType = string . IsNullOrEmpty ( row [ "qztl_type" ] . ToString ( ) ) ? null : Convert . ToChar ( row [ "qztl_type" ] . ToString ( ) ) ,
Remark2 = row [ "remark2" ] . ToString ( ) ,
Remark3 = row [ "remark3" ] . ToString ( ) ,
Remark4 = row [ "remark4" ] . ToString ( ) ,
UploadQztlFlag = Convert . ToChar ( row [ "upload_qztl_flag" ] . ToString ( ) )
} ;
await _patientRegisterExterRepository . InsertAsync ( patientRegisterExterData ) ;
#endregion
var oldRegisterAsbitemList = await Db . Ado . GetDataTableAsync ( $"select * from register_asbitem where patient_register_id='{row[" patient_register_id "].ToString()}'" ) ;
if ( oldRegisterAsbitemList . Rows . Count > 0 )
{
foreach ( DataRow rowAsbitem in oldRegisterAsbitemList . Rows )
{
#region 转换审核医生ID
Guid ? auditorUserId = null ;
if ( ! string . IsNullOrWhiteSpace ( rowAsbitem [ "audit_doctor" ] . ToString ( ) ) )
{
var userEnt = userList . Where ( m = > m . UserName = = rowAsbitem [ "audit_doctor" ] . ToString ( ) . Trim ( ) ) . FirstOrDefault ( ) ;
if ( userEnt ! = null )
{
auditorUserId = userEnt . Id ;
}
}
#endregion
#region 转换检查医生ID
string checkDoctorId = null ;
if ( ! string . IsNullOrWhiteSpace ( rowAsbitem [ "check_doctor" ] . ToString ( ) ) )
{
var userEnt = userList . Where ( m = > m . UserName = = rowAsbitem [ "check_doctor" ] . ToString ( ) . Trim ( ) ) . FirstOrDefault ( ) ;
if ( userEnt ! = null )
{
checkDoctorId = userEnt . Id . ToString ( ) ;
}
else
{
checkDoctorId = rowAsbitem [ "check_doctor" ] . ToString ( ) . Trim ( ) ;
}
}
#endregion
#region 转换组合项目ID
Guid newAsbitemId = Guid . Parse ( ( await _fieldComparisonRepository . GetQueryableAsync ( ) )
. Where ( m = > m . TableName = = "asbitem" & & m . OldKeyValue = = rowAsbitem [ "asbitem_id" ] . ToString ( ) ) . FirstOrDefault ( ) . NewKeyValue ) ;
#endregion
#region 插入register_check
Guid registerCheckId = GuidGenerator . Create ( ) ;
var dataRegisterCheck = new RegisterCheck ( registerCheckId )
{
AuditorUserId = auditorUserId ,
AuditTime = string . IsNullOrEmpty ( rowAsbitem [ "audit_date" ] . ToString ( ) ) ? null : Convert . ToDateTime ( rowAsbitem [ "audit_date" ] . ToString ( ) ) ,
CheckDate = string . IsNullOrEmpty ( rowAsbitem [ "check_date" ] . ToString ( ) ) ? null : Convert . ToDateTime ( rowAsbitem [ "check_date" ] . ToString ( ) ) ,
CheckDoctorId = checkDoctorId ,
CheckRequestNo = "" ,
CheckRequestPrintTimes = ( short ) 1 ,
CompleteFlag = Convert . ToChar ( rowAsbitem [ "complete_flag" ] . ToString ( ) ) ,
CriticalValue = null ,
CriticalValueCreateDate = null ,
CriticalValueFlag = null ,
CriticalValueProcessContent = null ,
CriticalValueProcessDate = null ,
CriticalValueProcessDoctor = null ,
CriticalValueProcessFlag = null ,
IsAudit = string . IsNullOrEmpty ( rowAsbitem [ "audit_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( rowAsbitem [ "audit_flag" ] . ToString ( ) ) ,
IsLock = string . IsNullOrEmpty ( rowAsbitem [ "lock_flag" ] . ToString ( ) ) ? 'N' : Convert . ToChar ( rowAsbitem [ "lock_flag" ] . ToString ( ) ) ,
PatientRegisterId = patientRegisterId ,
ThirdInfo = rowAsbitem [ "third_info" ] . ToString ( )
} ;
await _registerCheckRepository . InsertAsync ( dataRegisterCheck , true ) ;
#endregion
#region 插入register_check_asbitem
Guid registerCheckAsbitemId = GuidGenerator . Create ( ) ;
var dataRegisterAsbitem = new RegisterCheckAsbitem ( registerCheckAsbitemId )
{
Amount = 1 ,
IsCharge = Convert . ToChar ( rowAsbitem [ "charge_flag" ] . ToString ( ) ) ,
AsbitemId = newAsbitemId ,
ChargePrice = Convert . ToDecimal ( rowAsbitem [ "price" ] . ToString ( ) ) ,
GroupPackageId = null ,
LisRequestId = null ,
PatientRegisterId = patientRegisterId ,
PayTypeFlag = Convert . ToChar ( rowAsbitem [ "payment_mode" ] . ToString ( ) ) ,
RegisterCheckId = registerCheckId ,
StandardPrice = Convert . ToDecimal ( rowAsbitem [ "standard_price" ] . ToString ( ) )
} ;
await _registerCheckAsbitemRepository . InsertAsync ( dataRegisterAsbitem ) ;
#endregion
#region 插入医生小结
var oldSummary = rowAsbitem [ "summary" ] . ToString ( ) ;
if ( ! string . IsNullOrWhiteSpace ( oldSummary ) )
{
var dataRegisterCheckSummary = new RegisterCheckSummary
{
RegisterCheckId = registerCheckId ,
DisplayOrder = 1 ,
Summary = oldSummary ,
SummaryFlag = '0'
} ;
await _registerCheckSummaryRepository . InsertAsync ( dataRegisterCheckSummary ) ;
}
#endregion
#region 插入明细项目
var oldRegisterCheckItemList = await Db . Ado . GetDataTableAsync ( $"select * from register_item where patient_register_id='{row[" patient_register_id "].ToString()}' and asbitem_id='{rowAsbitem[" asbitem_id "].ToString()}'" ) ;
if ( oldRegisterCheckItemList . Rows . Count > 0 )
{
foreach ( DataRow rowRegisterCheckItem in oldRegisterCheckItemList . Rows )
{
#region 转换项目ID 老转新
Guid newItemId = Guid . Parse ( ( await _fieldComparisonRepository . GetQueryableAsync ( ) )
. Where ( m = > m . TableName = = "item" & & m . OldKeyValue = = rowRegisterCheckItem [ "item_id" ] . ToString ( ) ) . FirstOrDefault ( ) . NewKeyValue ) ;
#endregion
var dataRegisterCheckItem = new RegisterCheckItem
{
CheckDate = string . IsNullOrEmpty ( rowRegisterCheckItem [ "check_date" ] . ToString ( ) ) ? null : Convert . ToDateTime ( rowRegisterCheckItem [ "check_date" ] . ToString ( ) ) ,
CriticalValue = null ,
CheckDoctorName = rowRegisterCheckItem [ "check_doctor" ] . ToString ( ) . Trim ( ) ,
CriticalRangeValue = null ,
ItemId = newItemId ,
ReferenceRangeValue = rowRegisterCheckItem [ "reference_range_value" ] . ToString ( ) ,
RegisterCheckId = registerCheckId ,
Result = rowRegisterCheckItem [ "result" ] . ToString ( ) ,
ResultStatusId = _registerCheckItemManager . GetResultStatusId ( rowRegisterCheckItem [ "result" ] . ToString ( ) , rowRegisterCheckItem [ "reference_range_value" ] . ToString ( ) ) ,
Unit = rowRegisterCheckItem [ "Unit" ] . ToString ( )
} ;
await _registerCheckItemRepository . InsertAsync ( dataRegisterCheckItem ) ;
}
}
#endregion
}
}
var fieldComparison = new FieldComparison
{
FieldName = "id" ,
NewKeyValue = patientRegisterId . ToString ( ) ,
OldKeyValue = row [ "patient_register_id" ] . ToString ( ) ,
TableName = "patient_register"
} ;
await _fieldComparisonRepository . InsertAsync ( fieldComparison ) ;
await Db . Ado . ExecuteCommandAsync ( $"update tb_export_key set keyvalue='{row[" patient_register_id "].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register_new' " ) ;
await uow . CompleteAsync ( ) ;
#region 修改创建者日期跟id
Guid registerDoctorId = Guid . Parse ( "3a11fe49-5719-0e9e-dd44-0c4aff0900b0" ) ;
var registerDoctorEnt = userList . Where ( m = > m . UserName = = row [ "register_doctor" ] . ToString ( ) . Trim ( ) ) . FirstOrDefault ( ) ;
if ( registerDoctorEnt ! = null )
{
registerDoctorId = registerDoctorEnt . Id ;
}
string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row[" register_date "]).ToString(" yyyy - MM - dd HH : mm : ss ")}'" ;
sql_update + = $" where id='{patientRegisterId}' " ;
await PgNWDb . Ado . ExecuteCommandAsync ( sql_update ) ;
#endregion
}
}
}
_logger . LogInformation ( $"新版人员数据处理{oldPatientRegisterList.Rows.Count}条" ) ;
await TransferPatientRegisterWithAsbitemData ( ) ;
}
else
{
_logger . LogInformation ( "新版人员数据已处理完" ) ;
}
}
/// <summary>
/// 迁移总症 建议、综述、诊断数据
/// </summary>
/// <returns></returns>
public async Task TransferSumData ( )
{
string nextKeyValue = Db . Ado . GetString ( "select keyvalue from tb_export_key where tablename='sum_summary'" ) ;
var patientRegisterList = ( await _patientRegisterRepository . GetQueryableAsync ( ) ) . OrderBy ( o = > o . Id )
. Where ( m = > string . Compare ( m . Id . ToString ( ) , nextKeyValue ) > 0 ) . Take ( 1 0 0 0 ) . ToList ( ) ;
if ( patientRegisterList . Any ( ) )
{
foreach ( var item in patientRegisterList )
{
using ( var uow = _unitOfWorkManager . Begin ( requiresNew : true , isTransactional : true ) )
{
#region 转换成老系统PatientRegisterId
string oldPatientRegisterId = ( await _fieldComparisonRepository . GetQueryableAsync ( ) )
. Where ( m = > m . TableName = = "patient_register" & & m . NewKeyValue = = item . Id . ToString ( ) ) . FirstOrDefault ( ) . OldKeyValue ;
#endregion
var oldSum = await Db . Ado . GetDataTableAsync ( $"select summary,suggestion 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 = item . Id ,
SummaryTitle = "."
} ;
await _sumSummaryHeaderRepository . InsertAsync ( dataSumSummaryHeader ) ;
Guid sumSummaryContentId = GuidGenerator . Create ( ) ;
var dataSumSummaryContent = new SumSummaryContent ( sumSummaryContentId )
{
DisplayOrder = 1 ,
SumSummaryHeaderId = sumSummaryHeaderId ,
SummaryContent = oldSummary
} ;
await _sumSummaryContentRepository . InsertAsync ( dataSumSummaryContent ) ;
await uow . CompleteAsync ( ) ;
}
if ( ! string . IsNullOrWhiteSpace ( oldSuggestion ) )
{
Guid sumSuggestionHeaderId = GuidGenerator . Create ( ) ;
var dataSumSuggestionHeader = new SumSuggestionHeader ( sumSuggestionHeaderId )
{
DisplayOrder = 1 ,
SuggestionFlag = '0' ,
PatientRegisterId = item . Id ,
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 ) ;
await uow . CompleteAsync ( ) ;
}
}
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 )
{
//获取建议头
var sumSuggestionHeaderEnt = await _sumSuggestionHeaderRepository . FirstOrDefaultAsync ( m = > m . PatientRegisterId = = item . Id ) ;
if ( sumSuggestionHeaderEnt ! = null )
{
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 = item . Id ,
DiagnosisId = Guid . Parse ( diagnosisEnt . NewKeyValue ) ,
SumSuggestionHeaderId = sumSuggestionHeaderEnt . Id
} ;
sumDiagnosisInsert . Add ( dataSumDiagnosis ) ;
}
}
if ( sumDiagnosisInsert . Any ( ) )
await _sumDiagnosisRepository . InsertManyAsync ( sumDiagnosisInsert ) ;
await uow . CompleteAsync ( ) ;
}
}
await Db . Ado . ExecuteCommandAsync ( $"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_summary' " ) ;
}
}
await TransferSumSummaryData ( ) ;
}
else
{
_logger . LogInformation ( "总检综述已处理完" ) ;
}
}
#endregion
#region 人员登记
/// <summary>
/// 迁移人员登记数据
/// </summary>
@ -2723,6 +3344,8 @@ namespace Shentun.Peis.DataMigrations
}
/// <summary>
/// 迁移明细项目 查询register_item
/// </summary>