Browse Source

人员导入20240620

master
wxd 2 years ago
parent
commit
f1a54cf0e1
  1. 624
      src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs

624
src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs

@ -44,6 +44,7 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas
//默认单位性质ID
private readonly Guid defaultOrgTypeId = Guid.Parse("3a133e16-56ad-d1c5-9507-e2d7f44a6792");
//老系统数据库配置
private readonly SqlSugarClient oldDb = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "server=.;uid=sa;pwd=Bq.123;database=oldPeis;Encrypt=false;",
@ -51,6 +52,13 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas
IsAutoCloseConnection = true
});
//新系统配置
private readonly SqlSugarClient newDb = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Host=192.168.2.67;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;",
DbType = SqlSugar.DbType.PostgreSQL,
IsAutoCloseConnection = true
});
private readonly UnitOfWorkManager _unitOfWorkManager;
private readonly IRepository<DeviceType, Guid> _deviceTypeRepository;
@ -89,7 +97,19 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas
private readonly IRepository<SysParmValue> _sysParmValueRepository;
private readonly IRepository<CollectItemType, Guid> _collectItemTypeRepository;
private readonly IRepository<AsbitemGuide> _asbitemGuideRepository;
//业务
private readonly IRepository<Patient, Guid> _patientRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
private readonly RegisterCheckItemManager _registerCheckItemManager;
private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository;
private readonly IRepository<SumSuggestionContent, Guid> _sumSuggestionContentRepository;
private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository;
private readonly IRepository<SumSummaryContent, Guid> _sumSummaryContentRepository;
private readonly IRepository<SumDiagnosis> _sumDiagnosisRepository;
public BeiJingMZAKExportDataAppService(
@ -129,7 +149,19 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas
IRepository<SysParm> sysParmRepository,
IRepository<SysParmValue> sysParmValueRepository,
IRepository<CollectItemType, Guid> collectItemTypeRepository,
IRepository<AsbitemGuide> asbitemGuideRepository)
IRepository<AsbitemGuide> asbitemGuideRepository,
IRepository<Patient, Guid> patientRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
RegisterCheckItemManager registerCheckItemManager,
IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
IRepository<SumSuggestionContent, Guid> sumSuggestionContentRepository,
IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
IRepository<SumSummaryContent, Guid> sumSummaryContentRepository,
IRepository<SumDiagnosis> sumDiagnosisRepository)
{
_unitOfWorkManager = unitOfWorkManager;
_deviceTypeRepository = deviceTypeRepository;
@ -168,6 +200,18 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas
_sysParmValueRepository = sysParmValueRepository;
_collectItemTypeRepository = collectItemTypeRepository;
_asbitemGuideRepository = asbitemGuideRepository;
_patientRepository = patientRepository;
_patientRegisterRepository = patientRegisterRepository;
_registerCheckRepository = registerCheckRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_registerCheckItemRepository = registerCheckItemRepository;
_registerCheckSummaryRepository = registerCheckSummaryRepository;
_registerCheckItemManager = registerCheckItemManager;
_sumSuggestionHeaderRepository = sumSuggestionHeaderRepository;
_sumSuggestionContentRepository = sumSuggestionContentRepository;
_sumSummaryHeaderRepository = sumSummaryHeaderRepository;
_sumSummaryContentRepository = sumSummaryContentRepository;
_sumDiagnosisRepository = sumDiagnosisRepository;
}
@ -2305,7 +2349,566 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas
#region 导入业务数据
private int hangPatientRegisterCount = 0;
/// <summary>
/// 迁移人员、检查单、登记项目、项目结果、医生小结、修改人员创建者、创建时间
/// </summary>
/// <param name="handCount">每次处理的人员数量</param>
/// <param name="isGo">是否继续处理</param>
/// <returns></returns>
[HttpPost("api/app/BeiJingMZAKExportData/TransferPatientRegisterWithDetailData")]
public async Task TransferPatientRegisterWithDetailData(int handCount, bool isGo = false)
{
//当前导入的ID
string nextKeyValue = oldDb.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register' ");
var oldPatientRegisterList = await oldDb.Ado.GetDataTableAsync($"select top {handCount} * 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)
{
hangPatientRegisterCount++;
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
string oldPatientRegisterId = row["patient_register_id"].ToString();
//档案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 oldRegisterAsbitemList = await oldDb.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 oldDb.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
}
}
#endregion
#region 总检建议、综述、总检诊断
var oldSum = await oldDb.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 = patientRegisterId,
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 = patientRegisterId,
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 oldDb.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 summaryDiagnosis in oldSummaryDiagnosis.Rows)
{
var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == summaryDiagnosis["diagnosis_id"].ToString()).FirstOrDefault();
if (diagnosisEnt != null)
{
var dataSumDiagnosis = new SumDiagnosis
{
DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(summaryDiagnosis) + 1,
PatientRegisterId = patientRegisterId,
DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
SumSuggestionHeaderId = sumSuggestionHeaderId
};
sumDiagnosisInsert.Add(dataSumDiagnosis);
}
}
if (sumDiagnosisInsert.Any())
await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
}
#endregion
}
}
#endregion
var fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = patientRegisterId.ToString(),
OldKeyValue = row["patient_register_id"].ToString(),
TableName = "patient_register"
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await oldDb.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register' ");
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 newDb.Ado.ExecuteCommandAsync(sql_update);
#endregion
}
}
_logger.LogInformation($"人员数据处理{oldPatientRegisterList.Rows.Count}条,当前总数{hangPatientRegisterCount}");
if (isGo)
await TransferPatientRegisterWithDetailData(handCount, isGo);
}
else
{
_logger.LogInformation("人员数据已处理完");
}
}
#endregion
@ -2355,6 +2958,23 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas
}
}
/// <summary>
/// 转换头像
/// </summary>
/// <param name="PatientRegisterId"></param>
/// <param name="time"></param>
/// <param name="Photo"></param>
/// <returns></returns>
private string UpLoadImg(Guid PatientRegisterId, DateTime time, byte[] Photo)
{
string imgurl = $"photo/{time.Year}/{time.Month}/{time.Day}/" + PatientRegisterId;
var isupload = ImageHelper.ByteToImage(Photo, imgurl);
if (!string.IsNullOrEmpty(isupload))
return isupload;
else
return "";
}
#endregion
}
}
Loading…
Cancel
Save