From f1a54cf0e1bf9faf9d29d2cf27bdd8df87ac8f1f Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Thu, 20 Jun 2024 17:29:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=AF=BC=E5=85=A520240620?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BeiJingMZAKExportDataAppService.cs | 624 +++++++++++++++++- 1 file changed, 622 insertions(+), 2 deletions(-) diff --git a/src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs b/src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs index f256bc8f..334ba89d 100644 --- a/src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs +++ b/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 _deviceTypeRepository; @@ -89,7 +97,19 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas private readonly IRepository _sysParmValueRepository; private readonly IRepository _collectItemTypeRepository; private readonly IRepository _asbitemGuideRepository; - + //业务 + private readonly IRepository _patientRepository; + private readonly IRepository _patientRegisterRepository; + private readonly IRepository _registerCheckRepository; + private readonly IRepository _registerCheckAsbitemRepository; + private readonly IRepository _registerCheckItemRepository; + private readonly IRepository _registerCheckSummaryRepository; + private readonly RegisterCheckItemManager _registerCheckItemManager; + private readonly IRepository _sumSuggestionHeaderRepository; + private readonly IRepository _sumSuggestionContentRepository; + private readonly IRepository _sumSummaryHeaderRepository; + private readonly IRepository _sumSummaryContentRepository; + private readonly IRepository _sumDiagnosisRepository; public BeiJingMZAKExportDataAppService( @@ -129,7 +149,19 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas IRepository sysParmRepository, IRepository sysParmValueRepository, IRepository collectItemTypeRepository, - IRepository asbitemGuideRepository) + IRepository asbitemGuideRepository, + IRepository patientRepository, + IRepository patientRegisterRepository, + IRepository registerCheckRepository, + IRepository registerCheckAsbitemRepository, + IRepository registerCheckItemRepository, + IRepository registerCheckSummaryRepository, + RegisterCheckItemManager registerCheckItemManager, + IRepository sumSuggestionHeaderRepository, + IRepository sumSuggestionContentRepository, + IRepository sumSummaryHeaderRepository, + IRepository sumSummaryContentRepository, + IRepository 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; + + /// + /// 迁移人员、检查单、登记项目、项目结果、医生小结、修改人员创建者、创建时间 + /// + /// 每次处理的人员数量 + /// 是否继续处理 + /// + [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 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 sumDiagnosisInsert = new List(); + + 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 } } + /// + /// 转换头像 + /// + /// + /// + /// + /// + 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 } }