From 5a7c5b8540e003f5714bea67c5622acc1dfecef9 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Tue, 21 Apr 2026 09:20:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9E=AB=E6=B1=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../YinHai/ImportPacsResultPlugInsYinHai.cs | 50 +- .../CQDJExportDataAppService.cs | 874 ++++++++++++++++-- 2 files changed, 848 insertions(+), 76 deletions(-) diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPacsResults/YinHai/ImportPacsResultPlugInsYinHai.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPacsResults/YinHai/ImportPacsResultPlugInsYinHai.cs index 1ad20d65..c43fb41a 100644 --- a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPacsResults/YinHai/ImportPacsResultPlugInsYinHai.cs +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPacsResults/YinHai/ImportPacsResultPlugInsYinHai.cs @@ -136,7 +136,7 @@ namespace Shentun.Peis.PlugIns.Extensions.ImportPacsResults.YinHai try { var execDoctorUser = InterfaceConfig.GetValue("Interface:ExecDoctorUser", ""); - // var commonTableTypeId = InterfaceConfig.GetValue("Interface:CommonTableTypeId", ""); + // var commonTableTypeId = InterfaceConfig.GetValue("Interface:CommonTableTypeId", ""); var execOrganizationUnitId = InterfaceConfig.GetValue("Interface:ExecOrganizationUnitId", ""); var checkDoctorName = InterfaceConfig.GetValue("Interface:CheckDoctorName", ""); @@ -145,7 +145,7 @@ namespace Shentun.Peis.PlugIns.Extensions.ImportPacsResults.YinHai var bodyData = pacsResultCallRequestData.body.data.request_details; - + if (bodyData.detail.Any()) { foreach (var item in bodyData.detail) @@ -174,6 +174,46 @@ namespace Shentun.Peis.PlugIns.Extensions.ImportPacsResults.YinHai //} }; + if (item.image_address.StartsWith("http://") || item.image_address.StartsWith("https://")) + { + //有值 + var hzString = Path.GetExtension(item.image_address); + if (hzString.ToLowerInvariant() == ".pdf") + { + + var pList = new List(); + + pList.Add(new CreateImportPacsResultPictureDto() + { + IsPrint = 'Y', + FileTransMode = "1",//0-json,1-url + FileName = item.image_address, + FileFormat = "1",//0-图片,1-pdf + FileUrl = item.image_address + //FileBase64 = Shentun.Utilities.FileHelper.ToBase64(firstData.reportUrl) + }); + + createImportPacsResultDto.Files = pList; + } + else if (hzString.ToLowerInvariant() == ".jpg" || hzString.ToLowerInvariant() == ".jpeg" || hzString.ToLowerInvariant() == ".png") + { + var pList = new List(); + + pList.Add(new CreateImportPacsResultPictureDto() + { + IsPrint = 'Y', + FileTransMode = "1",//0-json,1-url + FileName = item.image_address, + FileFormat = "0",//0-图片,1-pdf + FileUrl = item.image_address + //FileBase64 = Shentun.Utilities.FileHelper.ToBase64(firstData.reportUrl) + }); + + createImportPacsResultDto.Files = pList; + } + + } + @@ -201,7 +241,7 @@ namespace Shentun.Peis.PlugIns.Extensions.ImportPacsResults.YinHai throw new Exception("无结果数据"); } - + res = new CallBussinessResponseDetailDto { @@ -225,7 +265,7 @@ namespace Shentun.Peis.PlugIns.Extensions.ImportPacsResults.YinHai - + /// @@ -260,7 +300,7 @@ where b.check_request_no=@checkRequestNo "; /// /// private async Task AddSendLog(YinHaiSendInterfaceLogDto input) - { + { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; diff --git a/src/Shentun.Peis.Application/CQDJExportDatas/CQDJExportDataAppService.cs b/src/Shentun.Peis.Application/CQDJExportDatas/CQDJExportDataAppService.cs index de182c68..e699607a 100644 --- a/src/Shentun.Peis.Application/CQDJExportDatas/CQDJExportDataAppService.cs +++ b/src/Shentun.Peis.Application/CQDJExportDatas/CQDJExportDataAppService.cs @@ -47,6 +47,16 @@ namespace Shentun.Peis.CQDJExportDatas //默认容器ID private Guid defaultSampleContainerId = Guid.Empty; + //默认体检结论类别 + private string defaultMedicalConclusionTypeId = "01"; + + //默认诊断级别 + private short defaultDiagnosisLevelId = 1; + + + //默认结果状态 + private string defaultResultStatusId = "01"; + //默认体检中心 private readonly Guid defaultMedicalCenterId = Guid.Parse("7b754abf-9882-4f23-affd-d50103febfee"); @@ -54,8 +64,8 @@ namespace Shentun.Peis.CQDJExportDatas private readonly SqlSugarClient oldDb = new SqlSugarClient(new ConnectionConfig() { - //ConnectionString = "server=192.168.1.119;uid=sa;pwd=st@123;database=Peis;Encrypt=false;", - ConnectionString = "server=192.168.1.138;uid=sa;pwd=st@123;database=tj_xlms;Encrypt=false;", + ConnectionString = "server=192.168.1.119;uid=sa;pwd=st@123;database=Peis;Encrypt=false;", + //ConnectionString = "server=192.168.1.138;uid=sa;pwd=st@123;database=tj_xlms;Encrypt=false;", DbType = SqlSugar.DbType.SqlServer, IsAutoCloseConnection = true }); @@ -85,6 +95,18 @@ namespace Shentun.Peis.CQDJExportDatas private readonly IRepository _customerOrgTypeRepository; private readonly IRepository _sampleContainerRepository; private readonly IRepository _commonTableRepository; + private readonly IRepository _medicalTypeRepository; + private readonly IRepository _personnelTypeRepository; + private readonly IRepository _medicalConclusionRepository; + private readonly IRepository _medicalConclusionTypeRepository; + private readonly IRepository _diagnosisRepository; + private readonly IRepository _suggestionRepository; + private readonly IRepository _sampleTypeRepository; + private readonly IRepository _itemResultTemplateRepository; + private readonly IRepository _referenceRangeRepository; + private readonly IRepository _sampleGroupRepository; + private readonly IRepository _sampleGroupDetailRepository; + private readonly IRepository _diagnosisLevelRepository; public CQDJExportDataAppService( IRepository identityUserRepository, UnitOfWorkManager unitOfWorkManager, @@ -110,7 +132,19 @@ namespace Shentun.Peis.CQDJExportDatas IRepository customerOrgGroupDetailRepository, IRepository customerOrgTypeRepository, IRepository sampleContainerRepository, - IRepository commonTableRepository) + IRepository commonTableRepository, + IRepository medicalTypeRepository, + IRepository personnelTypeRepository, + IRepository medicalConclusionRepository, + IRepository medicalConclusionTypeRepository, + IRepository diagnosisRepository, + IRepository suggestionRepository, + IRepository sampleTypeRepository, + IRepository itemResultTemplateRepository, + IRepository referenceRangeRepository, + IRepository sampleGroupRepository, + IRepository sampleGroupDetailRepository, + IRepository diagnosisLevelRepository) { _identityUserRepository = identityUserRepository; _unitOfWorkManager = unitOfWorkManager; @@ -137,6 +171,18 @@ namespace Shentun.Peis.CQDJExportDatas _customerOrgTypeRepository = customerOrgTypeRepository; _sampleContainerRepository = sampleContainerRepository; _commonTableRepository = commonTableRepository; + _medicalTypeRepository = medicalTypeRepository; + _personnelTypeRepository = personnelTypeRepository; + _medicalConclusionRepository = medicalConclusionRepository; + _medicalConclusionTypeRepository = medicalConclusionTypeRepository; + _diagnosisRepository = diagnosisRepository; + _suggestionRepository = suggestionRepository; + _sampleTypeRepository = sampleTypeRepository; + _itemResultTemplateRepository = itemResultTemplateRepository; + _referenceRangeRepository = referenceRangeRepository; + _sampleGroupRepository = sampleGroupRepository; + _sampleGroupDetailRepository = sampleGroupDetailRepository; + _diagnosisLevelRepository = diagnosisLevelRepository; } @@ -212,10 +258,17 @@ namespace Shentun.Peis.CQDJExportDatas await InitData(); //初始数据 await TransferItemTypeData(); await TransferDeviceTypeData(); + await TransferMedicalTypeData(); + await TransferPersonnelTypeData(); + await TransferInvoiceItemTypeData(); + await TransferMedicalConclusionData(); + await TransferSampleTypeData(); + } + /// /// 导入项目相关 /// @@ -229,6 +282,10 @@ namespace Shentun.Peis.CQDJExportDatas await TransferAsbitemDetailData(); await TransferMedicalPackageData(); await TransferMedicalPackageDetailData(); + + await TransferDiagnosisData(); + await TransferSuggestionData(); + await TransferItemResultTemplateData(); } @@ -389,6 +446,335 @@ namespace Shentun.Peis.CQDJExportDatas _logger.LogInformation("仪器类别数据已存在,未处理"); } } + + /// + /// 迁移体检类别数据 + /// + /// + [RemoteService(false)] + public async Task TransferMedicalTypeData() + { + var count = await _medicalTypeRepository.GetCountAsync(); + if (count == 0) + { + + var oldMedicalTypeList = await oldDb.Ado.GetDataTableAsync("select BH,MC from futian_user.TJ_TJLB order by BH asc"); + if (oldMedicalTypeList.Rows.Count > 0) + { + foreach (DataRow row in oldMedicalTypeList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + //Guid medicalTypeId = GuidGenerator.Create(); + Guid medicalTypeId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + var data = new MedicalType(medicalTypeId) + { + DisplayName = row["MC"].ToString(), + DisplayOrder = oldMedicalTypeList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()) + }; + + await _medicalTypeRepository.InsertAsync(data); + + var fieldComparison = new FieldComparison + { + TableName = "medical_type", + FieldName = "id", + NewKeyValue = medicalTypeId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + + await uow.CompleteAsync(); + } + + } + + _logger.LogInformation($"体检类别数据处理完毕,处理数量{oldMedicalTypeList.Rows.Count}"); + + } + else + { + _logger.LogInformation($"体检类别数据已存在,未处理"); + } + } + } + + + /// + /// 迁移人员类别数据 + /// + /// + [RemoteService(false)] + public async Task TransferPersonnelTypeData() + { + var count = await _personnelTypeRepository.GetCountAsync(); + if (count == 0) + { + + var oldPersonnelTypeList = await oldDb.Ado.GetDataTableAsync("select BH,MC from futian_user.TJ_TJRYLB order by BH asc"); + if (oldPersonnelTypeList.Rows.Count > 0) + { + foreach (DataRow row in oldPersonnelTypeList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + //Guid personnelTypeId = GuidGenerator.Create(); + Guid personnelTypeId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + var data = new PersonnelType(personnelTypeId) + { + DisplayName = row["MC"].ToString(), + DisplayOrder = oldPersonnelTypeList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()) + }; + + await _personnelTypeRepository.InsertAsync(data); + + var fieldComparison = new FieldComparison + { + TableName = "personnel_type", + FieldName = "id", + NewKeyValue = personnelTypeId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + + await uow.CompleteAsync(); + } + + + } + + + } + _logger.LogInformation($"人员类别数据处理完毕,处理数量{oldPersonnelTypeList.Rows.Count}"); + } + else + { + _logger.LogInformation($"人员类别数据已存在,未处理"); + } + } + + + /// + /// 迁移发票项目类别数据 + /// + /// + [RemoteService(false)] + public async Task TransferInvoiceItemTypeData() + { + var count = await _invoiceItemTypeRepository.GetCountAsync(); + if (count == 0) + { + var oldInvoiceItemTypeList = await oldDb.Ado.GetDataTableAsync("select BH,MC from futian_user.TJ_FPXM order by BH asc"); + if (oldInvoiceItemTypeList.Rows.Count > 0) + { + foreach (DataRow row in oldInvoiceItemTypeList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + // Guid invoiceItemTypeId = GuidGenerator.Create(); + Guid invoiceItemTypeId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + var data = new InvoiceItemType(invoiceItemTypeId) + { + DisplayName = row["invoice_item_type_name"].ToString(), + DisplayOrder = oldInvoiceItemTypeList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()) + }; + + await _invoiceItemTypeRepository.InsertAsync(data); + + var fieldComparison = new FieldComparison + { + TableName = "invoice_item_type", + FieldName = "id", + NewKeyValue = invoiceItemTypeId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + + await uow.CompleteAsync(); + } + } + + + } + _logger.LogInformation($"发票项目类别数据处理完毕,处理数量{oldInvoiceItemTypeList.Rows.Count}"); + } + else + { + _logger.LogInformation($"发票项目类别数据已存在,未处理"); + } + } + + + /// + /// 迁移汇总项目类别数据 + /// + /// + [RemoteService(false)] + public async Task TransferCollectItemTypeData() + { + var count = await _collectItemTypeRepository.GetCountAsync(); + if (count == 0) + { + var oldCollectItemTypeList = await oldDb.Ado.GetDataTableAsync("select BH,MC from futian_user.TJ_SFLB order by BH asc"); + if (oldCollectItemTypeList.Rows.Count > 0) + { + foreach (DataRow row in oldCollectItemTypeList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + // Guid collectItemTypeId = GuidGenerator.Create(); + Guid collectItemTypeId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + Guid invoiceItemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "invoice_item_type" && m.OldKeyValue == row["FPXM"].ToString()).FirstOrDefault().NewKeyValue); + + var data = new CollectItemType(collectItemTypeId) + { + DisplayName = row["MC"].ToString(), + DisplayOrder = oldCollectItemTypeList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), + InvoiceItemTypeId = invoiceItemTypeId + }; + + await _collectItemTypeRepository.InsertAsync(data); + + var fieldComparison = new FieldComparison + { + TableName = "collect_item_type", + FieldName = "id", + NewKeyValue = collectItemTypeId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + + await uow.CompleteAsync(); + } + } + + _logger.LogInformation($"汇总项目类别数据处理完毕,处理数量{oldCollectItemTypeList.Rows.Count}"); + } + else + { + _logger.LogInformation($"汇总项目类别数据已存在,未处理"); + } + } + } + + /// + /// 迁移体检结论数据 + /// + /// + [RemoteService(false)] + public async Task TransferMedicalConclusionData() + { + var count = await _medicalConclusionRepository.GetCountAsync(); + if (count == 0) + { + var oldMedicalConclusionList = await oldDb.Ado.GetDataTableAsync("select BH,MC from futian_user.TJ_TJJL order by BH asc"); + if (oldMedicalConclusionList.Rows.Count > 0) + { + foreach (DataRow row in oldMedicalConclusionList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + // Guid medicalConclusionId = GuidGenerator.Create(); + Guid medicalConclusionId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + var data = new MedicalConclusion(medicalConclusionId) + { + DisplayName = row["MC"].ToString(), + DisplayOrder = oldMedicalConclusionList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), + MedicalConclusionTypeId = defaultMedicalConclusionTypeId + }; + + await _medicalConclusionRepository.InsertAsync(data); + + var fieldComparison = new FieldComparison + { + TableName = "medical_conclusion", + FieldName = "id", + NewKeyValue = medicalConclusionId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + + await uow.CompleteAsync(); + } + } + } + _logger.LogInformation($"体检结论数据处理完毕,处理数量{oldMedicalConclusionList.Rows.Count}"); + } + else + { + _logger.LogInformation("体检结论数据已存在,未处理"); + } + } + + + /// + /// 迁移标本类型数据 + /// + /// + [RemoteService(false)] + public async Task TransferSampleTypeData() + { + var count = await _sampleTypeRepository.CountAsync(c => c.DisplayName != "其他"); + if (count == 0) + { + var oldSampleTypeList = await oldDb.Ado.GetDataTableAsync("select BH,MC from futian_user.TJ_TJBBLX "); + if (oldSampleTypeList.Rows.Count > 0) + { + + foreach (DataRow row in oldSampleTypeList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + //Guid sampleTypeId = GuidGenerator.Create(); + Guid sampleTypeId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + var data = new SampleType(sampleTypeId) + { + DisplayName = row["MC"].ToString(), + DisplayOrder = oldSampleTypeList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()) + }; + + await _sampleTypeRepository.InsertAsync(data); + + var fieldComparison = new FieldComparison + { + TableName = "sample_type", + FieldName = "id", + NewKeyValue = sampleTypeId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + + await uow.CompleteAsync(); + } + } + + } + _logger.LogInformation($"标本类型数据处理完毕,处理数量{oldSampleTypeList.Rows.Count}"); + } + else + { + _logger.LogInformation($"标本类型数据已存在,未处理"); + } + } + #endregion #region 项目相关 @@ -952,6 +1338,283 @@ namespace Shentun.Peis.CQDJExportDatas } + + /// + /// 迁移诊断设置数据 + /// + /// + [RemoteService(false)] + public async Task TransferDiagnosisData() + { + var count = await _diagnosisRepository.GetCountAsync(); + if (count == 0) + { + + var oldDiagnosisList = await oldDb.Ado.GetDataTableAsync(" select a.* from futian_user.TJ_SUGGESTION as a left join futian_user.TJ_TJLXB as b on a.TJLX=b.LXBH order by b.DISP_ORDER,a.DISP_ORDER "); + if (oldDiagnosisList.Rows.Count > 0) + { + foreach (DataRow row in oldDiagnosisList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + #region 根据仪器类别生成二级科室 + + var itemTypeFirst = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["TJLX"].ToString().Trim()).FirstOrDefault(); + + if (itemTypeFirst != null) + { + var itemTypeId = Guid.Parse(itemTypeFirst.NewKeyValue); + + Guid? deviceTypeId = null; + + if (!string.IsNullOrWhiteSpace(row["LCLX"].ToString())) + { + var fieldComparisonEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["LCLX"].ToString().Trim()).FirstOrDefault(); + if (fieldComparisonEnt != null) + { + deviceTypeId = Guid.Parse(fieldComparisonEnt.NewKeyValue); + var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId); + var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value); + + + var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName); + if (itemTypeChildEnt == null) + { + Guid autoItemTypeId = GuidGenerator.Create(); + + #region 排序值 + + int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1; + + #endregion + + var item_type_data = new ItemType(autoItemTypeId) + { + DisplayName = deviceTypeEnt.DisplayName, + DisplayOrder = displayOrder, + SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName), + CheckTypeFlag = itemTypeEnt.CheckTypeFlag, + GuidTypeId = itemTypeEnt.GuidTypeId, + IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem, + IsWrap = itemTypeEnt.IsWrap, + MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId, + ParentId = itemTypeEnt.Id, + PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result, + IsCheckRequest = itemTypeEnt.IsCheckRequest + }; + + await _itemTypeRepository.InsertAsync(item_type_data); + itemTypeId = autoItemTypeId; + } + else + { + itemTypeId = itemTypeChildEnt.Id; + } + } + + } + + #endregion + + + //Guid diagnosisId = GuidGenerator.Create(); + Guid diagnosisId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + var data = new Diagnosis(diagnosisId) + { + DisplayName = row["KEYWORD"].ToString(), + DisplayOrder = oldDiagnosisList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), + ItemTypeId = itemTypeId, + DiagnosisLevelId = defaultDiagnosisLevelId, + ForSexId = 'A', + IsIll = row["JBBH"].ToString() == "1" ? 'Y' : 'N', + IsSummaryTemplate = 'Y', + SuggestionName = row["MC"].ToString() + }; + + await _diagnosisRepository.InsertAsync(data); + + + var fieldComparison = new FieldComparison + { + TableName = "diagnosis", + FieldName = "id", + NewKeyValue = diagnosisId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + } + + await uow.CompleteAsync(); + } + } + + + + + } + _logger.LogInformation($"诊断设置数据处理完毕,处理数量{oldDiagnosisList.Rows.Count}"); + } + else + { + _logger.LogInformation("诊断设置数据已存在,未处理"); + } + } + + /// + /// 迁移诊断建议数据 + /// + /// + [RemoteService(false)] + public async Task TransferSuggestionData() + { + var count = await _suggestionRepository.GetCountAsync(); + if (count == 0) + { + + var oldSuggestionList = await oldDb.Ado.GetDataTableAsync("select * from futian_user.TJ_JYNR order by DISP_ORDER,BH "); + if (oldSuggestionList.Rows.Count > 0) + { + + foreach (DataRow row in oldSuggestionList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + + + var diagnosisFirst = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["JYBH"].ToString()).FirstOrDefault(); + if (diagnosisFirst != null) + { + Guid DiagnosisId = Guid.Parse(diagnosisFirst.NewKeyValue); + + Guid suggestionId = GuidGenerator.Create(); + // Guid suggestionId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + if (await _suggestionRepository.FirstOrDefaultAsync(f => f.DiagnosisId == DiagnosisId && f.SuggestionContent == row["JYNR"].ToString().Trim()) == null) + { + var data = new Suggestion(suggestionId) + { + DisplayOrder = oldSuggestionList.Rows.IndexOf(row) + 1, + DiagnosisId = DiagnosisId, + SuggestionType = SuggestionTypeFlag.HealthGuidance, + SuggestionContent = row["JYNR"].ToString().Trim() + }; + + await _suggestionRepository.InsertAsync(data); + + + var fieldComparison = new FieldComparison + { + TableName = "suggestion", + FieldName = "id", + NewKeyValue = suggestionId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + } + } + await uow.CompleteAsync(); + } + } + } + _logger.LogInformation($"诊断建议数据处理完毕,处理数量{oldSuggestionList.Rows.Count}"); + } + else + { + _logger.LogInformation("诊断建议数据已存在,未处理"); + } + } + + + + /// + /// 迁移项目结果模板数据 + /// + /// + [RemoteService(false)] + public async Task TransferItemResultTemplateData() + { + var count = await _itemResultTemplateRepository.GetCountAsync(); + if (count == 0) + { + //var oldItemResultTemplateList = await oldDb.Ado.GetDataTableAsync("select * from item_result_template order by display_order,item_result_template_id "); + var oldItemResultTemplateList = await oldDb.Ado.GetDataTableAsync(" select * from futian_user.TJ_KEYWORD where JGLX='00' order by DISP_ORDER,BH "); + if (oldItemResultTemplateList.Rows.Count > 0) + { + foreach (DataRow row in oldItemResultTemplateList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + Guid? DiagnosisId = null; + if (!string.IsNullOrWhiteSpace(row["KEYWORD"].ToString())) + { + var fieldComparisonDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["KEYWORD"].ToString()).FirstOrDefault(); + if (fieldComparisonDiagnosisEnt != null) + { + DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue); + } + } + + var itemFirst = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["TJXM"].ToString()).FirstOrDefault(); + + if (itemFirst != null) + { + Guid ItemId = Guid.Parse(itemFirst.NewKeyValue); + + Guid itemResultTemplateId = GuidGenerator.Create(); + //Guid itemResultTemplateId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); + + if (await _itemResultTemplateRepository.FirstOrDefaultAsync(f => f.ItemId == ItemId && f.Result == row["MC"].ToString()) == null) + { + + var data = new ItemResultTemplate(itemResultTemplateId) + { + DisplayOrder = oldItemResultTemplateList.Rows.IndexOf(row) + 1, + DiagnosisId = DiagnosisId, + IsNameIntoSummary = row["MCJRXJ"].ToString() == "1" ? 'Y' : 'N', + IsResultIntoSummary = 'Y', + ItemId = ItemId, + Result = row["MC"].ToString(), + SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), + ResultStatusId = defaultResultStatusId + //ResultStatusId = row["result_status_id"].ToString() + }; + + await _itemResultTemplateRepository.InsertAsync(data); + + + var fieldComparison = new FieldComparison + { + TableName = "item_result_template", + FieldName = "id", + NewKeyValue = itemResultTemplateId.ToString(), + OldKeyValue = row["BH"].ToString() + }; + + await _fieldComparisonRepository.InsertAsync(fieldComparison); + } + } + await uow.CompleteAsync(); + + } + } + } + _logger.LogInformation($"项目结果模板数据处理完毕,处理数量{oldItemResultTemplateList.Rows.Count}"); + } + else + { + _logger.LogInformation("项目结果模板数据已存在,未处理"); + } + } + + + + + + #endregion #region 单位相关 @@ -1908,95 +2571,164 @@ namespace Shentun.Peis.CQDJExportDatas private async Task InitData() { - #region 发票项目类别 - defaultInvoiceItemTypeId = GuidGenerator.Create(); - - var invoiceItemTypeFirst = await _invoiceItemTypeRepository.FirstOrDefaultAsync(); - if (invoiceItemTypeFirst == null) + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { - var tempEntity = new InvoiceItemType(defaultInvoiceItemTypeId) + + #region 发票项目类别 + defaultInvoiceItemTypeId = GuidGenerator.Create(); + + var invoiceItemTypeFirst = await _invoiceItemTypeRepository.FirstOrDefaultAsync(); + if (invoiceItemTypeFirst == null) { - DisplayName = "检查费", - DisplayOrder = 1, - SimpleCode = "JCF" - }; + var tempEntity = new InvoiceItemType(defaultInvoiceItemTypeId) + { + DisplayName = "检查费", + DisplayOrder = 1, + SimpleCode = "JCF" + }; - await _invoiceItemTypeRepository.InsertAsync(tempEntity, true); - } - else - { - defaultInvoiceItemTypeId = invoiceItemTypeFirst.Id; - } - #endregion + await _invoiceItemTypeRepository.InsertAsync(tempEntity, true); + } + else + { + defaultInvoiceItemTypeId = invoiceItemTypeFirst.Id; + } + #endregion - #region 汇总项目类别 - defaultCollectItemTypeId = GuidGenerator.Create(); + #region 汇总项目类别 + defaultCollectItemTypeId = GuidGenerator.Create(); - var collectItemTypeFirst = await _collectItemTypeRepository.FirstOrDefaultAsync(); - if (collectItemTypeFirst == null) - { - var tempEntity = new CollectItemType(defaultCollectItemTypeId) + var collectItemTypeFirst = await _collectItemTypeRepository.FirstOrDefaultAsync(); + if (collectItemTypeFirst == null) + { + var tempEntity = new CollectItemType(defaultCollectItemTypeId) + { + DisplayName = "检查费", + DisplayOrder = 1, + SimpleCode = "JCF", + InvoiceItemTypeId = defaultInvoiceItemTypeId + }; + + await _collectItemTypeRepository.InsertAsync(tempEntity, true); + } + else { - DisplayName = "检查费", - DisplayOrder = 1, - SimpleCode = "JCF", - InvoiceItemTypeId = defaultInvoiceItemTypeId - }; + defaultCollectItemTypeId = collectItemTypeFirst.Id; + } + #endregion - await _collectItemTypeRepository.InsertAsync(tempEntity, true); - } - else - { - defaultCollectItemTypeId = collectItemTypeFirst.Id; - } - #endregion + #region 企业性质 + defaultOrgTypeId = GuidGenerator.Create(); - #region 企业性质 - defaultOrgTypeId = GuidGenerator.Create(); + var customerOrgTypeFirst = await _customerOrgTypeRepository.FirstOrDefaultAsync(); + if (customerOrgTypeFirst == null) + { + var tempEntity = new CustomerOrgType(defaultOrgTypeId) + { + DisplayName = "其他", + DisplayOrder = 1, + SimpleCode = "QT" - var customerOrgTypeFirst = await _customerOrgTypeRepository.FirstOrDefaultAsync(); - if (customerOrgTypeFirst == null) - { - var tempEntity = new CustomerOrgType(defaultOrgTypeId) + }; + + await _customerOrgTypeRepository.InsertAsync(tempEntity, true); + } + else { - DisplayName = "其他", - DisplayOrder = 1, - SimpleCode = "QT" + defaultOrgTypeId = customerOrgTypeFirst.Id; + } + #endregion - }; + #region 默认标本容器 - await _customerOrgTypeRepository.InsertAsync(tempEntity, true); - } - else - { - defaultOrgTypeId = customerOrgTypeFirst.Id; - } - #endregion - #region 默认标本容器 + defaultSampleContainerId = GuidGenerator.Create(); + var sampleContainerFirst = await _sampleContainerRepository.FirstOrDefaultAsync(); + if (sampleContainerFirst == null) + { + var tempEntity = new SampleContainer(defaultSampleContainerId) + { + DisplayName = "其他", + DisplayOrder = 1, + SimpleCode = "QT" - defaultSampleContainerId = GuidGenerator.Create(); + }; - var sampleContainerFirst = await _sampleContainerRepository.FirstOrDefaultAsync(); - if (sampleContainerFirst == null) - { - var tempEntity = new SampleContainer(defaultSampleContainerId) + await _sampleContainerRepository.InsertAsync(tempEntity, true); + } + else { - DisplayName = "其他", - DisplayOrder = 1, - SimpleCode = "QT" + defaultSampleContainerId = sampleContainerFirst.Id; + } + #endregion - }; + #region 诊断级别 - await _sampleContainerRepository.InsertAsync(tempEntity, true); - } - else - { - defaultSampleContainerId = sampleContainerFirst.Id; + defaultDiagnosisLevelId = 1; + var diagnosisLevelFirst = await _diagnosisLevelRepository.FirstOrDefaultAsync(); + if (diagnosisLevelFirst == null) + { + + List diagnosisLevelList = new List(); + + diagnosisLevelList.Add(new DiagnosisLevel(1) + { + DisplayName = "一级", + DisplayOrder = 1 + }); + diagnosisLevelList.Add(new DiagnosisLevel(2) + { + DisplayName = "二级", + DisplayOrder = 2 + }); + diagnosisLevelList.Add(new DiagnosisLevel(3) + { + DisplayName = "三级", + DisplayOrder = 3 + }); + diagnosisLevelList.Add(new DiagnosisLevel(4) + { + DisplayName = "四级", + DisplayOrder = 4 + }); + + await _diagnosisLevelRepository.InsertManyAsync(diagnosisLevelList, true); + } + else + { + defaultDiagnosisLevelId = diagnosisLevelFirst.Id; + } + + #endregion + + + #region 体检结论类别 + + defaultMedicalConclusionTypeId = "01"; + var medicalConclusionTypeFirst = await _medicalConclusionTypeRepository.FirstOrDefaultAsync(); + if (medicalConclusionTypeFirst == null) + { + var tempEntity = new MedicalConclusionType + { + DisplayName = "社会体检", + DisplayOrder = 1, + Id = defaultMedicalConclusionTypeId + + }; + + await _medicalConclusionTypeRepository.InsertAsync(tempEntity, true); + } + else + { + defaultMedicalConclusionTypeId = medicalConclusionTypeFirst.Id; + } + + #endregion + + await uow.CompleteAsync(); } - #endregion }