diff --git a/src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs b/src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs index 6010507..5a34f6d 100644 --- a/src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs +++ b/src/Shentun.Peis.Application/BeiJingMZAKExportDatas/BeiJingMZAKExportDataAppService.cs @@ -1,5 +1,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Shentun.Peis.CustomerOrgs; using Shentun.Peis.DataMigrations; @@ -19,6 +21,7 @@ using System.Text; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; using Volo.Abp.Uow; @@ -111,7 +114,8 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas private readonly IRepository _sumSummaryContentRepository; private readonly IRepository _sumDiagnosisRepository; - + private readonly IConfiguration _configuration; + private readonly MyUserAppService _myUserAppService; public BeiJingMZAKExportDataAppService( UnitOfWorkManager unitOfWorkManager, IRepository deviceTypeRepository, @@ -161,7 +165,9 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas IRepository sumSuggestionContentRepository, IRepository sumSummaryHeaderRepository, IRepository sumSummaryContentRepository, - IRepository sumDiagnosisRepository) + IRepository sumDiagnosisRepository, + IConfiguration configuration, + MyUserAppService myUserAppService) { _unitOfWorkManager = unitOfWorkManager; _deviceTypeRepository = deviceTypeRepository; @@ -212,6 +218,8 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas _sumSummaryHeaderRepository = sumSummaryHeaderRepository; _sumSummaryContentRepository = sumSummaryContentRepository; _sumDiagnosisRepository = sumDiagnosisRepository; + _configuration = configuration; + _myUserAppService = myUserAppService; } @@ -232,6 +240,7 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas await TransferSampleTypeData(); await TransferNationData(); await TransferMedicalConclusionData(); + await TransferUserData(); } @@ -2358,6 +2367,7 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas private int hangPatientRegisterCount = 0; + private int hangPatientRegisterReverseCount = 0; /// /// 迁移人员、检查单、登记项目、项目结果、医生小结、修改人员创建者、创建时间 @@ -2381,10 +2391,23 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas foreach (DataRow row in oldPatientRegisterList.Rows) { hangPatientRegisterCount++; + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { string oldPatientRegisterId = row["patient_register_id"].ToString(); + //检查是否已经导入 + var isDZPatientRegisterTemp = (await _fieldComparisonRepository.GetListAsync(f => f.TableName == "patient_register" + && f.OldKeyValue == oldPatientRegisterId)); + + + if (isDZPatientRegisterTemp.Count > 0) + { + continue; + } + + + //档案ID Guid patientId = Guid.Empty; @@ -2440,7 +2463,7 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas Guid? AuditDoctorId = null; if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString())) { - var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault(); + var userEnt = userList.Where(m => m.Name == row["audit_doctor"].ToString().Trim()).FirstOrDefault(); if (userEnt != null) { AuditDoctorId = userEnt.Id; @@ -2534,7 +2557,7 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas Guid? summaryDoctorId = null; if (!string.IsNullOrWhiteSpace(row["summary_doctor"].ToString())) { - var userEnt = userList.Where(m => m.UserName == row["summary_doctor"].ToString().Trim()).FirstOrDefault(); + var userEnt = userList.Where(m => m.Name == row["summary_doctor"].ToString().Trim()).FirstOrDefault(); if (userEnt != null) { summaryDoctorId = userEnt.Id; @@ -2617,7 +2640,7 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas Guid? auditorUserId = null; if (!string.IsNullOrWhiteSpace(rowAsbitem["audit_doctor"].ToString())) { - var userEnt = userList.Where(m => m.UserName == rowAsbitem["audit_doctor"].ToString().Trim()).FirstOrDefault(); + var userEnt = userList.Where(m => m.Name == rowAsbitem["audit_doctor"].ToString().Trim()).FirstOrDefault(); if (userEnt != null) { auditorUserId = userEnt.Id; @@ -2629,7 +2652,7 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas string checkDoctorId = null; if (!string.IsNullOrWhiteSpace(rowAsbitem["check_doctor"].ToString())) { - var userEnt = userList.Where(m => m.UserName == rowAsbitem["check_doctor"].ToString().Trim()).FirstOrDefault(); + var userEnt = userList.Where(m => m.Name == rowAsbitem["check_doctor"].ToString().Trim()).FirstOrDefault(); if (userEnt != null) { checkDoctorId = userEnt.Id.ToString(); @@ -2889,8 +2912,8 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas #region 修改创建者日期跟id - Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0"); - var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault(); + Guid registerDoctorId = Guid.Parse(_configuration.GetValue("AdminId")); + var registerDoctorEnt = userList.Where(m => m.Name == row["register_doctor"].ToString().Trim()).FirstOrDefault(); if (registerDoctorEnt != null) { registerDoctorId = registerDoctorEnt.Id; @@ -2913,71 +2936,848 @@ namespace Shentun.Peis.BeiJingMZAKExportDatas } - #endregion + /// + /// 反向导入人员等业务信息 + /// + /// 每次处理的人员数量 + /// 是否继续处理 + /// + [HttpPost("api/app/BeiJingMZAKExportData/TransferPatientRegisterWithDetailReverseData")] + public async Task TransferPatientRegisterWithDetailReverseData(int handCount, bool isGo = false) + { + //当前导入的ID + string nextKeyValue = oldDb.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_reverse' "); + var oldPatientRegisterList = await oldDb.Ado.GetDataTableAsync($"select top {handCount} * from patient_register where patient_register_id<'{nextKeyValue}' order by patient_register_id desc"); + if (oldPatientRegisterList.Rows.Count > 0) + { + var userList = await _identityUserRepository.GetListAsync(); + List customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync(); + foreach (DataRow row in oldPatientRegisterList.Rows) + { + hangPatientRegisterReverseCount++; + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + string oldPatientRegisterId = row["patient_register_id"].ToString(); - #region 私有方法 + //检查是否已经导入 + var isDZPatientRegisterTemp = (await _fieldComparisonRepository.GetListAsync(f => f.TableName == "patient_register" + && f.OldKeyValue == oldPatientRegisterId)); - /// - /// 转换老系统适用性别 - /// - /// - /// - private char ConvertForSex(string forSexId) - { - if (forSexId == "0") - { - return 'M'; - } - else if (forSexId == "1") - { - return 'F'; - } - else - { - return 'A'; - } - } - /// - /// 转换老系统性别 - /// - /// - /// - private char ConvertSex(string SexId) - { - if (SexId == "0") - { - return 'M'; - } - else if (SexId == "1") - { - return 'F'; - } - else - { - return 'U'; - } - } + if (isDZPatientRegisterTemp.Count > 0) + { + continue; + } + + + + //档案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.Name == 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.Name == 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.Name == 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.Name == 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_reverse' "); + + await uow.CompleteAsync(); + + + #region 修改创建者日期跟id + Guid registerDoctorId = Guid.Parse(_configuration.GetValue("AdminId")); + var registerDoctorEnt = userList.Where(m => m.Name == 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}条,当前总数{hangPatientRegisterReverseCount}"); + if (isGo) + await TransferPatientRegisterWithDetailReverseData(handCount, isGo); + } + else + { + _logger.LogInformation("人员数据反向已处理完"); + } + + } + + + #endregion + + + //#region 临时处理 + + //private int hangPatientRegisterUserCount = 0; + + ///// + ///// 临时处理人员相关医生数据 + ///// + ///// + ///// + ///// + //[HttpPost("api/app/BeiJingMZAKExportData/TransferPatientRegisterUserData")] + //public async Task TransferPatientRegisterUserData(int handCount, bool isGo = false) + //{ + // //处理 人员表 审核医生 总检医生 + // //处理 RegisterCheck 审核医生 检查医生 + + // //当前导入的ID + // string nextKeyValue = oldDb.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_user' "); + + // var oldPatientRegisterList = await oldDb.Ado.GetDataTableAsync($"select top {handCount} * from patient_register where patient_register_id>'{nextKeyValue}' and patient_register_id<='20160523011706' order by patient_register_id asc"); + + // if (oldPatientRegisterList.Rows.Count > 0) + // { + // var userList = await _identityUserRepository.GetListAsync(); + + + // foreach (DataRow row in oldPatientRegisterList.Rows) + // { + // hangPatientRegisterUserCount++; + // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + // { + // string oldPatientRegisterId = row["patient_register_id"].ToString(); + + // var isDZPatientRegisterTemp = (await _fieldComparisonRepository.GetListAsync(f => f.TableName == "patient_register" + // && f.OldKeyValue == oldPatientRegisterId)); + // var isDZPatientRegister = isDZPatientRegisterTemp.OrderByDescending(o => o.NewKeyValue).FirstOrDefault(); + // if (isDZPatientRegister != null) + // { + // Guid newPatientRegisterId = Guid.Parse(isDZPatientRegister.NewKeyValue); //新ID + + // var isPatientRegister = await _patientRegisterRepository.FirstOrDefaultAsync(f => f.Id == newPatientRegisterId); + + + // #region 转换审核医生ID + // Guid? AuditDoctorId = null; + // if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString())) + // { + // var userEnt = userList.Where(m => m.Name == row["audit_doctor"].ToString().Trim()).FirstOrDefault(); + // if (userEnt != null) + // { + // AuditDoctorId = userEnt.Id; + // } + // } + // #endregion + + // #region 转换总检医生ID + // Guid? summaryDoctorId = null; + // if (!string.IsNullOrWhiteSpace(row["summary_doctor"].ToString())) + // { + // var userEnt = userList.Where(m => m.Name == row["summary_doctor"].ToString().Trim()).FirstOrDefault(); + // if (userEnt != null) + // { + // summaryDoctorId = userEnt.Id; + // } + // } + // #endregion + + // isPatientRegister.AuditDoctorId = AuditDoctorId; + // isPatientRegister.SummaryDoctorId = summaryDoctorId; + + // await _patientRegisterRepository.UpdateAsync(isPatientRegister); + + + + // #region 处理registercheck + + // var oldRegisterAsbitemList = await oldDb.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{oldPatientRegisterId}'"); + + // 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.Name == 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.Name == 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 + + // //需要处理的ID + // var newRegisterCheckId = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() + // join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + // on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + // where registerCheck.PatientRegisterId == newPatientRegisterId && registerCheckAsbitem.AsbitemId == newAsbitemId + // select registerCheck.Id).FirstOrDefault(); + + + // var isRegisterCheck = await _registerCheckRepository.FirstOrDefaultAsync(f => f.Id == newRegisterCheckId); + + // if (isRegisterCheck != null) + // { + // isRegisterCheck.CheckDoctorId = checkDoctorId; + // isRegisterCheck.AuditorUserId = auditorUserId; + + // await _registerCheckRepository.UpdateAsync(isRegisterCheck); + + // } + + // } + // } + + // #endregion + // } + + + + + // await oldDb.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register_user' "); + + // await uow.CompleteAsync(); + + // } + // } + + // _logger.LogInformation($"临时处理人员相关医生数据{oldPatientRegisterList.Rows.Count}条,当前总数{hangPatientRegisterUserCount}"); + // if (isGo) + // await TransferPatientRegisterUserData(handCount, isGo); + // } + // else + // { + // _logger.LogInformation("临时处理人员相关医生数据已处理完"); + // } + //} + + + //#endregion + + + #region 私有方法 + + /// + /// 转换老系统适用性别 + /// + /// + /// + private char ConvertForSex(string forSexId) + { + if (forSexId == "0") + { + return 'M'; + } + else if (forSexId == "1") + { + return 'F'; + } + else + { + return 'A'; + } + } + + /// + /// 转换老系统性别 + /// + /// + /// + private char ConvertSex(string SexId) + { + if (SexId == "0") + { + return 'M'; + } + else if (SexId == "1") + { + return 'F'; + } + else + { + return 'U'; + } + } + + /// + /// 转换头像 + /// + /// + /// + /// + /// + 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 ""; + } + + + /// + /// 迁移后台用户数据 + /// + /// + private async Task TransferUserData() + { + + var oldUserList = await oldDb.Ado.GetDataTableAsync("select * from users"); + if (oldUserList.Rows.Count > 0) + { + + foreach (DataRow row in oldUserList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + string newUserName = LanguageConverter.GetPYSimpleCode(row["user_id"].ToString().Trim()); + + var isUserName = await _identityUserRepository.FirstOrDefaultAsync(m => m.UserName == newUserName); + if (isUserName != null) + { + newUserName += "2"; + } + var userEnt = new IdentityUserCreateNoEmailDto + { + Email = "", + IsActive = row["valid_flag"].ToString() == "Y" ? true : false, + LockoutEnabled = false, + Name = row["user_name"].ToString().Trim(), + Password = string.IsNullOrWhiteSpace(row["password"].ToString()) ? "888888" : row["password"].ToString(), + PhoneNumber = "", + RoleNames = new string[] { "admin" }, + Surname = "", + UserName = newUserName + }; + + await _myUserAppService.CreateAsync(userEnt); + + await uow.CompleteAsync(); + + } + } + + + } - /// - /// 转换头像 - /// - /// - /// - /// - /// - 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