From e2922ac8e229ab2cdec6c61272a8a45dca69cab1 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Mon, 20 May 2024 16:02:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E8=B4=B9=E3=80=81pacs=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E7=B1=BB=E5=9E=8B=E3=80=81=E5=90=8C=E6=AD=A5=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RegisterChecks/RegisterCheckDto.cs | 5 + .../RegisterChecks/RegisterCheckAppService.cs | 13 +- .../ThirdPartyPublicInterfaceAppService.cs | 20 +- .../TransToWebPeisAppService.cs | 1046 +++++++++++++++-- 4 files changed, 951 insertions(+), 133 deletions(-) diff --git a/src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckDto.cs b/src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckDto.cs index 04e1e67..84505c0 100644 --- a/src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckDto.cs +++ b/src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckDto.cs @@ -78,6 +78,11 @@ namespace Shentun.Peis.RegisterChecks public DateTime? AuditTime { get; set; } + /// + /// 是否收费 + /// + public char IsCharge { get; set; } + ///// ///// 检查组合项目记录ID ///// diff --git a/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs b/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs index b519a45..fdedf4e 100644 --- a/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs +++ b/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs @@ -97,9 +97,9 @@ namespace Shentun.Peis.RegisterChecks [HttpGet("api/app/registercheck/getregistercheck")] public async Task GetRegisterCheckAsync(Guid id) { - var registerCheckEntity = await _registerCheckRepository.GetAsync(id); - - var userList = await _userRepository.GetListAsync(); + var registerCheckEntity = (await _registerCheckRepository.GetQueryableAsync()) + .Include(x => x.RegisterCheckAsbitems) + .FirstOrDefault(f => f.Id == id); var registerCheckDto = new RegisterCheckDto { @@ -125,8 +125,9 @@ namespace Shentun.Peis.RegisterChecks LastModificationTime = registerCheckEntity.LastModificationTime, LastModifierId = registerCheckEntity.LastModifierId, ThirdInfo = registerCheckEntity.ThirdInfo, - LastModifierName = EntityHelper.GetSurnameNoSql(userList, registerCheckEntity.LastModifierId), - CreatorName = EntityHelper.GetSurnameNoSql(userList, registerCheckEntity.CreatorId), + LastModifierName = _cacheService.GetSurnameAsync(registerCheckEntity.LastModifierId).Result, + CreatorName = _cacheService.GetSurnameAsync(registerCheckEntity.CreatorId).Result, + IsCharge = registerCheckEntity.RegisterCheckAsbitems.Where(m => m.PayTypeFlag == PayTypeFlag.PersonPay && m.IsCharge == 'N').Count() > 0 ? 'N' : 'Y' }; return registerCheckDto; @@ -286,7 +287,7 @@ namespace Shentun.Peis.RegisterChecks { throw new UserFriendlyException("明细结果不能全部为空"); } - if(input.Summarys == null || !input.Summarys.Any()) + if (input.Summarys == null || !input.Summarys.Any()) { throw new UserFriendlyException("小结不能为空"); } diff --git a/src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs b/src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs index f1581ce..29455d0 100644 --- a/src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs +++ b/src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs @@ -366,23 +366,23 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces }); - //var NoSetupDeviceType = query.Where(m => m.asbitem.DeviceTypeId == null || m.asbitem.DeviceTypeId == Guid.Empty).Select(s => s.asbitem.DisplayName).ToList(); + var NoSetupDeviceType = query.Where(m => m.asbitem.DeviceTypeId == null || m.asbitem.DeviceTypeId == Guid.Empty).Select(s => s.asbitem.DisplayName).ToList(); - //if (NoSetupDeviceType.Any()) - // throw new UserFriendlyException($"检查项目{string.Join(',', NoSetupDeviceType)}未设置仪器类别"); + if (NoSetupDeviceType.Any()) + throw new UserFriendlyException($"检查项目{string.Join(',', NoSetupDeviceType)}未设置仪器类别"); if (!string.IsNullOrEmpty(input.xmlx)) { //检查类型检索 - ////仪器类别ID - //var deviceTypeId = (from columnReference in await _columnReferenceRepository.GetQueryableAsync() - // join columnReferenceCode in await _columnReferenceCodeRepository.GetQueryableAsync() on columnReference.Id equals columnReferenceCode.ColumnReferenceId - // join columnReferenceInterface in await _columnReferenceInterfaceRepository.GetQueryableAsync() on columnReferenceCode.Id equals columnReferenceInterface.ColumnReferenceCodeId - // where columnReference.DisplayName == "仪器类别" && columnReferenceInterface.InterfaceCodeValue == input.xmlx - // select columnReferenceCode.CodeValue).FirstOrDefault(); + //仪器类别ID + var deviceTypeId = (from columnReference in await _columnReferenceRepository.GetQueryableAsync() + join columnReferenceCode in await _columnReferenceCodeRepository.GetQueryableAsync() on columnReference.Id equals columnReferenceCode.ColumnReferenceId + join columnReferenceInterface in await _columnReferenceInterfaceRepository.GetQueryableAsync() on columnReferenceCode.Id equals columnReferenceInterface.ColumnReferenceCodeId + where columnReference.DisplayName == "仪器类别" && columnReferenceInterface.InterfaceCodeValue == input.xmlx + select columnReferenceCode.CodeValue).FirstOrDefault(); - //query = query.Where(m => m.asbitem.DeviceTypeId == Guid.Parse(deviceTypeId)); + query = query.Where(m => m.asbitem.DeviceTypeId == Guid.Parse(deviceTypeId)); } var queryList = query.ToList(); diff --git a/src/Shentun.Peis.Application/TransToWebPeis/TransToWebPeisAppService.cs b/src/Shentun.Peis.Application/TransToWebPeis/TransToWebPeisAppService.cs index 45dccd0..b2fded6 100644 --- a/src/Shentun.Peis.Application/TransToWebPeis/TransToWebPeisAppService.cs +++ b/src/Shentun.Peis.Application/TransToWebPeis/TransToWebPeisAppService.cs @@ -1,6 +1,8 @@ using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; +using Org.BouncyCastle.Utilities; using Shentun.Peis.CustomerOrgs; using Shentun.Peis.DataMigrations; using Shentun.Peis.Enums; @@ -10,12 +12,14 @@ using Shentun.Peis.MyUser; using Shentun.Peis.PatientRegisters; using Shentun.Peis.PlugIns; using Shentun.Peis.RegisterCheckItems; +using SqlSugar; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using Volo.Abp; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; @@ -27,148 +31,131 @@ namespace Shentun.Peis.TransToWebPeis { private readonly IRepository _deviceTypeRepository; private readonly IRepository _itemTypeRepository; - private readonly ItemTypeManager _itemTypeManager; - private readonly IRepository _unitRepository; - private readonly IRepository _medicalTypeRepository; - private readonly IRepository _personnelTypeRepository; - private readonly IRepository _invoiceItemTypeRepository; - private readonly IRepository _fieldComparisonRepository; - private readonly IRepository _sampleTypeRepository; private readonly IRepository _itemRepository; - private readonly IRepository _referenceRangeRepository; private readonly IRepository _asbitemRepository; - private readonly IRepository _asbitemDetailRepository; private readonly IRepository _medicalPackageRepository; - private readonly IRepository _medicalPackageDetailRepository; private readonly IRepository _diagnosisRepository; - private readonly IRepository _suggestionRepository; - private readonly IRepository _itemResultTemplateRepository; - private readonly IRepository _ItemResultMatchRepository; - private readonly MyUserAppService _myUserAppService; - private readonly IRepository _menuInfoRepository; + private readonly IRepository _diagnosisLevelRepository; + private readonly ILogger _logger; + private readonly IRepository _thirdInterfaceRepository; private readonly IRepository _customerOrgRepository; - private readonly CustomerOrgManager _customerOrgManager; private readonly IRepository _customerOrgRegisterRepository; private readonly IRepository _customerOrgGroupRepository; private readonly IRepository _customerOrgGroupDetailRepository; - private readonly IRepository _patientRepository; - private readonly IRepository _nationRepository; - private readonly ILogger _logger; - private readonly IRepository _identityUserRepository; - private readonly IRepository _medicalConclusionRepository; private readonly IRepository _patientRegisterRepository; private readonly IRepository _registerCheckRepository; - private readonly IRepository _registerCheckAsbitemRepository; - private readonly IRepository _registerCheckItemRepository; - private readonly RegisterCheckItemManager _registerCheckItemManager; - private readonly UnitOfWorkManager _unitOfWorkManager; - private readonly IRepository _registerCheckSummaryRepository; - private readonly IRepository _sumSummaryHeaderRepository; - private readonly IRepository _sumSummaryContentRepository; - private readonly IRepository _sumSuggestionHeaderRepository; - private readonly IRepository _sumSuggestionContentRepository; - private readonly IRepository _sumDiagnosisRepository; - private readonly IRepository _reportRepository; - private readonly IRepository _reportFormatRepository; - private readonly IRepository _reportFormatTemplateRepository; - private readonly IRepository _sampleGroupRepository; - private readonly IRepository _sampleGroupDetailRepository; - private readonly IRepository _sysParmTypeRepository; - private readonly IRepository _sysParmRepository; - private readonly IRepository _sysParmValueRepository; - private readonly IRepository _collectItemTypeRepository; - private readonly IRepository _patientRegisterExterRepository; - private readonly IRepository _asbitemGuideRepository; - private readonly PatientRegisterManager _patientRegisterManager; - private readonly IRepository _thirdInterfaceRepository; public TransToWebPeisAppService( - IRepository deviceTypeRepository, IRepository itemTypeRepository, - ItemTypeManager itemTypeManager, - IRepository unitRepository, - IRepository medicalTypeRepository, - IRepository personnelTypeRepository, - IRepository invoiceItemTypeRepository, - IRepository fieldComparisonRepository, - IRepository sampleTypeRepository, + ILogger logger, + IRepository thirdInterfaceRepository, IRepository itemRepository, - IRepository referenceRangeRepository, IRepository asbitemRepository, - IRepository asbitemDetailRepository, IRepository medicalPackageRepository, - IRepository medicalPackageDetailRepository, - IRepository itemResultTemplateRepository, - IRepository itemResultMatchRepository, IRepository diagnosisRepository, - IRepository suggestionRepository, - MyUserAppService myUserAppService, - IRepository menuInfoRepository, + IRepository diagnosisLevelRepository, IRepository customerOrgRepository, - CustomerOrgManager customerOrgManager, IRepository customerOrgRegisterRepository, IRepository customerOrgGroupRepository, IRepository customerOrgGroupDetailRepository, - IRepository nationRepository, - IRepository patientRepository, - ILogger logger, - IRepository identityUserRepository, - IRepository medicalConclusionRepository, IRepository patientRegisterRepository, - IRepository registerCheckRepository, - IRepository registerCheckAsbitemRepository, - IRepository registerCheckItemRepository, - RegisterCheckItemManager registerCheckItemManager, - UnitOfWorkManager unitOfWorkManager, - IRepository registerCheckSummaryRepository, - IRepository sumSummaryHeaderRepository, - IRepository sumSummaryContentRepository, - IRepository sumSuggestionHeaderRepository, - IRepository sumSuggestionContentRepository, - IRepository sumDiagnosisRepository, - IRepository reportRepository, - IRepository reportFormatRepository, - IRepository reportFormatTemplateRepository, - IRepository sampleGroupRepository, - IRepository sampleGroupDetailRepository, - IRepository sysParmTypeRepository, - IRepository sysParmRepository, - IRepository sysParmValueRepository, - IRepository collectItemTypeRepository, - IRepository patientRegisterExterRepository, - IRepository asbitemGuideRepository, - PatientRegisterManager patientRegisterManager, - IRepository thirdInterfaceRepository) + IRepository registerCheckRepository) { + _itemTypeRepository = itemTypeRepository; + _logger = logger; _thirdInterfaceRepository = thirdInterfaceRepository; + _itemRepository = itemRepository; + _asbitemRepository = asbitemRepository; + _medicalPackageRepository = medicalPackageRepository; + _diagnosisRepository = diagnosisRepository; + _diagnosisLevelRepository = diagnosisLevelRepository; + _customerOrgRepository = customerOrgRepository; + _customerOrgRegisterRepository = customerOrgRegisterRepository; + _customerOrgGroupRepository = customerOrgGroupRepository; + _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; + _patientRegisterRepository = patientRegisterRepository; + _registerCheckRepository = registerCheckRepository; } /// /// 上传基础资料 /// /// - [HttpGet("api/app/TransToWebPeis/TransBaseData")] + [HttpPost("api/app/TransToWebPeis/TransBaseData")] public async Task TransBaseDataAsync() { - //item_type,item,asbitem,asbitem_detail,medical_package,medical_package_detail - //diagnosis_level,diagnosis - var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType == - ThirdInterfaceTypeFlag.TranToWebPeis && o.IsActive == 'Y'); - foreach (var thirdInterface in thirdInterfaces) + //var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType == + //ThirdInterfaceTypeFlag.TranToWebPeis && o.IsActive == 'Y'); + //foreach (var thirdInterface in thirdInterfaces) + //{ + // var connectString = GetConnectionStrings(thirdInterface.ParmValue); + + // SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig() + // { + // ConnectionString = connectString, + // DbType = SqlSugar.DbType.PostgreSQL, + // IsAutoCloseConnection = true + // }); + + + // await TransItemType(WebDb); + // await TransItem(connectString); + // await TransAsbitem(connectString); + // await TransMedicalPackage(connectString); + // await TransDiagnosis(connectString); + //} + + + + + var connectString = "Host=10.1.12.140;Port=5432;Database=WebPeis;User ID=postgres;Password=st123;"; + + SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig() { - var connectString = GetConnectionStrings(thirdInterface.ParmValue); - await TransItemType(connectString); - await TransItem(connectString); - await TransAsbitem(connectString); - await TransMedicalPackage(connectString); - await TransDiagnosis(connectString); - } + ConnectionString = connectString, + DbType = SqlSugar.DbType.PostgreSQL, + IsAutoCloseConnection = true + }); + + #region 清理基础数据 + //删除 + + await WebDb.Ado.ExecuteCommandAsync("delete from medical_package_detail;"); + await WebDb.Ado.ExecuteCommandAsync("delete from medical_package;"); + + await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_group_detail;"); + await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_group;"); + await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_register;"); + await WebDb.Ado.ExecuteCommandAsync("delete from customer_org;"); + + await WebDb.Ado.ExecuteCommandAsync("delete from diagnosis;"); + await WebDb.Ado.ExecuteCommandAsync("delete from diagnosis_level;"); + + await WebDb.Ado.ExecuteCommandAsync("delete from asbitem_detail;"); + await WebDb.Ado.ExecuteCommandAsync("delete from asbitem;"); + + await WebDb.Ado.ExecuteCommandAsync("delete from item"); + + await WebDb.Ado.ExecuteCommandAsync("delete from item_type"); + #endregion + + + await TransItemType(WebDb); + await TransItem(WebDb); + await TransAsbitem(WebDb); + await TransMedicalPackage(WebDb); + await TransDiagnosis(WebDb); + + await TransCustomerOrgAsync(WebDb); + await TransCustomerOrgRegisterAsync(WebDb); + await TransCustomerOrgGroupAsync(WebDb); + await TransCustomerOrgGroupDetailAsync(WebDb); } /// /// 上传单位信息 /// /// - [HttpGet("api/app/TransToWebPeis/TransCustomerOrg")] - public async Task TransCustomerOrgAsync() + [HttpPost("api/app/TransToWebPeis/TransCustomerOrg")] + public async Task TransCustomerOrgWithDetailAsync() { //customer_org,customer_org_register } @@ -176,7 +163,7 @@ namespace Shentun.Peis.TransToWebPeis /// 上传人员体检信息 /// /// - [HttpGet("api/app/TransToWebPeis/TransPatientRegister")] + [HttpPost("api/app/TransToWebPeis/TransPatientRegister")] public async Task TransPatientRegisterAsync() { //patient,patient_register,register_check,register_check_asbitem @@ -189,56 +176,881 @@ namespace Shentun.Peis.TransToWebPeis /// /// /// - [HttpGet("api/app/TransToWebPeis/TransPatientRegisterByPatientRegisterId")] + [HttpPost("api/app/TransToWebPeis/TransPatientRegisterByPatientRegisterId")] public async Task TransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input) { + var connectString = "Host=10.1.12.140;Port=5432;Database=WebPeis;User ID=postgres;Password=st123;"; + SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig() + { + ConnectionString = connectString, + DbType = SqlSugar.DbType.PostgreSQL, + IsAutoCloseConnection = true + }); + await TransPatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId); } /// /// 撤销上传人员体检信息 /// /// /// - [HttpGet("api/app/TransToWebPeis/CancelTransPatientRegisterByPatientRegisterId")] + [HttpPost("api/app/TransToWebPeis/CancelTransPatientRegisterByPatientRegisterId")] public async Task CancelTransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input) { } - + /// + /// 获取数据库连接地址 + /// + /// + /// + /// private string GetConnectionStrings(string parmValue) { var configurationBuilder = new ConfigurationBuilder() .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue))); var interfaceConfig = configurationBuilder.Build(); var interfaceConnctionStr = interfaceConfig.GetSection("Interface").GetSection("ConnectionStrings").Value; + if (!interfaceConnctionStr.ToUpper().Contains("WEBPEIS")) + throw new UserFriendlyException("请检查配置的数据库地址"); return interfaceConnctionStr; } - private async Task TransItemType(string connectString) + + #region 基础数据 + + /// + /// 项目类别 + /// + /// + /// + private async Task TransItemType(SqlSugarClient WebDb) + { + var itemTypes = await _itemTypeRepository.GetListAsync(); + if (itemTypes.Count > 0) + { + + + foreach (var itemType in itemTypes) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.item_type(item_type_id,item_type_name,simple_code,parent_id,path_code,check_type_flag,display_order,is_wrap, concurrency_stamp,creation_time,creator_id,last_modification_time,last_modifier_id) " + + "VALUES (@item_type_id,@item_type_name,@simple_code,@parent_id::uuid,@path_code,@check_type_flag,@display_order,@is_wrap,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("@item_type_id",itemType.Id), + new SugarParameter("@item_type_name",itemType.DisplayName), + new SugarParameter("@simple_code",itemType.SimpleCode), + new SugarParameter("@parent_id",itemType.ParentId), + new SugarParameter("@path_code",itemType.PathCode), + new SugarParameter("@check_type_flag",itemType.CheckTypeFlag), + new SugarParameter("@display_order",itemType.DisplayOrder), + new SugarParameter("@is_wrap",itemType.IsWrap), + new SugarParameter("@concurrency_stamp",itemType.ConcurrencyStamp), + new SugarParameter("@creation_time",itemType.CreationTime), + new SugarParameter("@creator_id",itemType.CreatorId), + new SugarParameter("@last_modification_time",itemType.LastModificationTime), + new SugarParameter("@last_modifier_id",itemType.LastModifierId) + }); + } + + _logger.LogInformation($"项目类别数据处理完毕,数量{itemTypes.Count}"); + + } + } + + /// + /// 项目数据 + /// + /// + /// + private async Task TransItem(SqlSugarClient WebDb) + { + var items = await _itemRepository.GetListAsync(); + if (items.Count > 0) + { + foreach (var item in items) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.item(item_id, item_name, english_short_name, item_type_id, price, unit_id, default_result, reference_range_type_flag, is_calculation_item, " + + "is_active,simple_code, display_order,line_mode_flag, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, device_type_id) values " + + "(@item_id,@item_name,@english_short_name,@item_type_id,@price,@unit_id::uuid,@default_result,@reference_range_type_flag,@is_calculation_item,@is_active,@simple_code,@display_order," + + "@line_mode_flag,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@device_type_id::uuid);", + new List() { + new SugarParameter("@item_id",item.Id), + new SugarParameter("@item_name",item.DisplayName), + new SugarParameter("@english_short_name",item.EnglishShortName), + new SugarParameter("@item_type_id",item.ItemTypeId), + new SugarParameter("@price",item.Price), + new SugarParameter("@unit_id",item.UnitId), + new SugarParameter("@default_result",item.DefaultResult), + new SugarParameter("@reference_range_type_flag",item.ReferenceRangeTypeFlag), + new SugarParameter("@is_calculation_item",item.IsCalculationItem), + new SugarParameter("@is_active",item.IsActive), + new SugarParameter("@simple_code",item.SimpleCode), + new SugarParameter("@display_order",item.DisplayOrder), + new SugarParameter("@line_mode_flag",item.LineModeFlag), + new SugarParameter("@concurrency_stamp",item.ConcurrencyStamp), + new SugarParameter("@device_type_id",item.DeviceTypeId), + new SugarParameter("@creation_time",item.CreationTime), + new SugarParameter("@creator_id",item.CreatorId), + new SugarParameter("@last_modification_time",item.LastModificationTime), + new SugarParameter("@last_modifier_id",item.LastModifierId) + }); + } + + _logger.LogInformation($"项目数据处理完毕,数量{items.Count}"); + + } + } + + /// + /// 组合项目、明细 + /// + /// + /// + private async Task TransAsbitem(SqlSugarClient WebDb) + { + var asbitemWithDetails = (await _asbitemRepository.GetQueryableAsync()).Include(x => x.AsbitemDetails).ToList(); + if (asbitemWithDetails.Count > 0) + { + foreach (var asbitem in asbitemWithDetails) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.asbitem(asbitem_id, asbitem_name, short_name, for_sex_id, item_type_id," + + "price, device_type_id, is_before_eat, clinical_meaning, default_result," + + "is_picture_rotate, is_check, is_active, simple_code, display_order, concurrency_stamp," + + "creation_time, creator_id, last_modification_time, last_modifier_id, is_web_appoint) values " + + "(@asbitem_id,@asbitem_name,@short_name,@for_sex_id,@item_type_id,@price,@device_type_id::uuid,@is_before_eat,@clinical_meaning," + + "@default_result,@is_picture_rotate,@is_check,@is_active,@simple_code,@display_order,@concurrency_stamp,@creation_time," + + "@creator_id,@last_modification_time,@last_modifier_id,@is_web_appoint)", + new List() { + new SugarParameter("asbitem_id",asbitem.Id), + new SugarParameter("asbitem_name",asbitem.DisplayName), + new SugarParameter("short_name",asbitem.ShortName), + new SugarParameter("for_sex_id",asbitem.ForSexId), + new SugarParameter("item_type_id",asbitem.ItemTypeId), + new SugarParameter("price",asbitem.Price), + new SugarParameter("device_type_id",asbitem.DeviceTypeId), + new SugarParameter("is_before_eat",asbitem.IsBeforeEat), + new SugarParameter("clinical_meaning",asbitem.ClinicalMeaning), + new SugarParameter("default_result",asbitem.DefaultResult), + new SugarParameter("is_picture_rotate",asbitem.IsPictureRotate), + new SugarParameter("is_check",asbitem.IsCheck), + new SugarParameter("is_active",asbitem.IsActive), + new SugarParameter("simple_code",asbitem.SimpleCode), + new SugarParameter("display_order",asbitem.DisplayOrder), + new SugarParameter("concurrency_stamp",asbitem.ConcurrencyStamp), + new SugarParameter("creation_time",asbitem.CreationTime), + new SugarParameter("creator_id",asbitem.CreatorId), + new SugarParameter("last_modification_time",asbitem.LastModificationTime), + new SugarParameter("last_modifier_id",asbitem.LastModifierId), + new SugarParameter("is_web_appoint",asbitem.IsWebAppoint) + }); + + //插入明细 + + foreach (var asbitemDetail in asbitem.AsbitemDetails) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.asbitem_detail(asbitem_id, item_id, concurrency_stamp) values " + + "(@asbitem_id,@item_id,@concurrency_stamp)", + new List() { + new SugarParameter("asbitem_id",asbitemDetail.AsbitemId), + new SugarParameter("item_id",asbitemDetail.ItemId), + new SugarParameter("concurrency_stamp",asbitemDetail.ConcurrencyStamp) + }); + } + } + + _logger.LogInformation($"组合项目、明细项目数据处理完毕,数量{asbitemWithDetails.Count}"); + + } + } + + /// + /// 套餐 + /// + /// + /// + private async Task TransMedicalPackage(SqlSugarClient WebDb) + { + var medicalPackageWithDetails = (await _medicalPackageRepository.GetQueryableAsync()).Include(x => x.MedicalPackageDetails).ToList(); + if (medicalPackageWithDetails.Count > 0) + { + foreach (var medicalPackage in medicalPackageWithDetails) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.medical_package(medical_package_id, medical_package_name, price, for_sex_id, is_active, remark, display_order, simple_code," + + "concurrency_stamp,creation_time, creator_id, last_modification_time, last_modifier_id, is_web_appoint) values " + + "(@medical_package_id,@medical_package_name,@price,@for_sex_id,@is_active,@remark,@display_order,@simple_code, " + + "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@is_web_appoint)", + new List() { + new SugarParameter("medical_package_id",medicalPackage.Id), + new SugarParameter("medical_package_name",medicalPackage.DisplayName), + new SugarParameter("price",medicalPackage.Price), + new SugarParameter("for_sex_id",medicalPackage.ForSexId), + new SugarParameter("is_active",medicalPackage.IsActive), + new SugarParameter("remark",medicalPackage.Remark), + new SugarParameter("display_order",medicalPackage.DisplayOrder), + new SugarParameter("simple_code",medicalPackage.SimpleCode), + new SugarParameter("concurrency_stamp",medicalPackage.ConcurrencyStamp), + new SugarParameter("creation_time",medicalPackage.CreationTime), + new SugarParameter("creator_id",medicalPackage.CreatorId), + new SugarParameter("last_modification_time",medicalPackage.LastModificationTime), + new SugarParameter("last_modifier_id",medicalPackage.LastModifierId), + new SugarParameter("is_web_appoint",medicalPackage.IsWebAppoint) + }); + + //插入明细 + + foreach (var medicalPackageDetail in medicalPackage.MedicalPackageDetails) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.medical_package_detail(medical_package_id, asbitem_id,price,amount,concurrency_stamp) values " + + "(@medical_package_id,@asbitem_id,@price,@amount,@concurrency_stamp)", + new List() { + new SugarParameter("medical_package_id",medicalPackageDetail.MedicalPackageId), + new SugarParameter("asbitem_id",medicalPackageDetail.AsbitemId), + new SugarParameter("price",medicalPackageDetail.Price), + new SugarParameter("amount",medicalPackageDetail.Amount), + new SugarParameter("concurrency_stamp",medicalPackageDetail.ConcurrencyStamp) + }); + } + } + + _logger.LogInformation($"套餐数据、套餐明细处理完毕,数量{medicalPackageWithDetails.Count}"); + + } + } + /// + /// 诊断 + /// + /// + /// + private async Task TransDiagnosis(SqlSugarClient WebDb) + { + //诊断级别 + var diagnosisLevels = await _diagnosisLevelRepository.GetListAsync(); + if (diagnosisLevels.Count > 0) + { + foreach (var diagnosisLevel in diagnosisLevels) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.diagnosis_level(diagnosis_level_id, display_name, display_order, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " + + "VALUES (@diagnosis_level_id,@display_name,@display_order,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("diagnosis_level_id",diagnosisLevel.Id), + new SugarParameter("display_name",diagnosisLevel.DisplayName), + new SugarParameter("display_order",diagnosisLevel.DisplayOrder), + new SugarParameter("concurrency_stamp",diagnosisLevel.ConcurrencyStamp), + new SugarParameter("creation_time",diagnosisLevel.CreationTime), + new SugarParameter("creator_id",diagnosisLevel.CreatorId), + new SugarParameter("last_modification_time",diagnosisLevel.LastModificationTime), + new SugarParameter("last_modifier_id",diagnosisLevel.LastModifierId) + }); + } + + _logger.LogInformation($"诊断级别数据处理完毕,数量{diagnosisLevels.Count}"); + + } + + //诊断 + var diagnosiss = await _diagnosisRepository.GetListAsync(); + if (diagnosiss.Count > 0) + { + foreach (var diagnosis in diagnosiss) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.diagnosis(diagnosis_id, diagnosis_name, item_type_id, suggestion_name, is_ill, for_sex_id, diagnosis_level_id, " + + "simple_code,display_order,concurrency_stamp, creation_time, creator_id,last_modification_time,last_modifier_id) " + + "VALUES (@diagnosis_id,@diagnosis_name,@item_type_id,@suggestion_name,@is_ill,@for_sex_id,@diagnosis_level_id," + + "@simple_code,@display_order,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("diagnosis_id",diagnosis.Id), + new SugarParameter("diagnosis_name",diagnosis.DisplayName), + new SugarParameter("item_type_id",diagnosis.ItemTypeId), + new SugarParameter("suggestion_name",diagnosis.SuggestionName), + new SugarParameter("is_ill",diagnosis.IsIll), + new SugarParameter("for_sex_id",diagnosis.ForSexId), + new SugarParameter("diagnosis_level_id",diagnosis.DiagnosisLevelId), + new SugarParameter("simple_code",diagnosis.SimpleCode), + new SugarParameter("display_order",diagnosis.DisplayOrder), + new SugarParameter("concurrency_stamp",diagnosis.ConcurrencyStamp), + new SugarParameter("creation_time",diagnosis.CreationTime), + new SugarParameter("creator_id",diagnosis.CreatorId), + new SugarParameter("last_modification_time",diagnosis.LastModificationTime), + new SugarParameter("last_modifier_id",diagnosis.LastModifierId) + }); + } + + _logger.LogInformation($"诊断数据处理完毕,数量{diagnosiss.Count}"); + + } + } + #endregion + + #region 单位相关 + + /// + /// 单位数据 + /// + /// + /// + private async Task TransCustomerOrgAsync(SqlSugarClient WebDb) { + var customerOrgs = await _customerOrgRepository.GetListAsync(); + if (customerOrgs.Count > 0) + { + foreach (var customerOrg in customerOrgs) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org(customer_org_id, customer_org_name, short_name, parent_id, path_code, simple_code, remark, is_active, display_order," + + "concurrency_stamp, medical_center_id, creation_time, creator_id, last_modification_time, last_modifier_id, country_org_code) " + + "VALUES (@customer_org_id,@customer_org_name,@short_name,@parent_id::uuid,@path_code,@simple_code,@remark,@is_active,@display_order," + + "@concurrency_stamp,@medical_center_id,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@country_org_code);", + new List() { + new SugarParameter("customer_org_id",customerOrg.Id), + new SugarParameter("customer_org_name",customerOrg.DisplayName), + new SugarParameter("short_name",customerOrg.ShortName), + new SugarParameter("parent_id",customerOrg.ParentId), + new SugarParameter("path_code",customerOrg.PathCode), + new SugarParameter("simple_code",customerOrg.SimpleCode), + new SugarParameter("remark",customerOrg.Remark), + new SugarParameter("is_active",customerOrg.IsActive), + new SugarParameter("display_order",customerOrg.DisplayOrder), + new SugarParameter("concurrency_stamp",customerOrg.ConcurrencyStamp), + new SugarParameter("medical_center_id",customerOrg.MedicalCenterId), + new SugarParameter("creation_time",customerOrg.CreationTime), + new SugarParameter("creator_id",customerOrg.CreatorId), + new SugarParameter("last_modification_time",customerOrg.LastModificationTime), + new SugarParameter("last_modifier_id",customerOrg.LastModifierId), + new SugarParameter("country_org_code",customerOrg.CountryOrgCode) + }); + } + _logger.LogInformation($"单位数据处理完毕,数量{customerOrgs.Count}"); + + } } - private async Task TransItem(string connectString) + /// + /// 单位体检次数 + /// + /// + /// + private async Task TransCustomerOrgRegisterAsync(SqlSugarClient WebDb) { + var customerOrgRegisters = await _customerOrgRegisterRepository.GetListAsync(); + if (customerOrgRegisters.Count > 0) + { + foreach (var customerOrgRegister in customerOrgRegisters) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_register(customer_org_register_id, customer_org_id, medical_times, register_no, register_name, begin_time," + + "end_time, is_complete, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " + + "VALUES (@customer_org_register_id,@customer_org_id,@medical_times,@register_no,@register_name,@begin_time," + + "CAST(@end_time as timestamp),@is_complete,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("customer_org_register_id",customerOrgRegister.Id), + new SugarParameter("customer_org_id",customerOrgRegister.CustomerOrgId), + new SugarParameter("medical_times",customerOrgRegister.MedicalTimes), + new SugarParameter("register_no",customerOrgRegister.RegisterNo), + new SugarParameter("register_name",customerOrgRegister.RegisterName), + new SugarParameter("begin_time",customerOrgRegister.BeginTime), + new SugarParameter("end_time",customerOrgRegister.EndTime), + new SugarParameter("is_complete",customerOrgRegister.IsComplete), + new SugarParameter("concurrency_stamp",customerOrgRegister.ConcurrencyStamp), + new SugarParameter("creation_time",customerOrgRegister.CreationTime), + new SugarParameter("creator_id",customerOrgRegister.CreatorId), + new SugarParameter("last_modification_time",customerOrgRegister.LastModificationTime), + new SugarParameter("last_modifier_id",customerOrgRegister.LastModifierId) + }); + } + + _logger.LogInformation($"单位体检次数数据处理完毕,数量{customerOrgRegisters.Count}"); + } } - private async Task TransAsbitem(string connectString) + + /// + /// 单位分组 + /// + /// + /// + private async Task TransCustomerOrgGroupAsync(SqlSugarClient WebDb) { - //asbitem,asbitem_detail + var customerOrgGroups = await _customerOrgGroupRepository.GetListAsync(); + if (customerOrgGroups.Count > 0) + { + foreach (var customerOrgGroup in customerOrgGroups) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_group(customer_org_group_id, display_name, price, for_sex_id, marital_status_id, age_lower_limit, age_upper_limit," + + "job_post, job_title, remark, display_order, customer_org_register_id, concurrency_stamp, creation_time, creator_id,last_modification_time, last_modifier_id) " + + "VALUES (@customer_org_group_id,@display_name,@price,@for_sex_id,@marital_status_id,@age_lower_limit,@age_upper_limit," + + "@job_post,@job_title,@remark,@display_order,@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("customer_org_group_id",customerOrgGroup.Id), + new SugarParameter("display_name",customerOrgGroup.DisplayName), + new SugarParameter("price",customerOrgGroup.Price), + new SugarParameter("for_sex_id",customerOrgGroup.ForSexId), + new SugarParameter("marital_status_id",customerOrgGroup.MaritalStatusId), + new SugarParameter("age_lower_limit",customerOrgGroup.AgeLowerLimit), + new SugarParameter("age_upper_limit",customerOrgGroup.AgeUpperLimit), + new SugarParameter("job_post",customerOrgGroup.JobPost), + new SugarParameter("job_title",customerOrgGroup.JobTitle), + new SugarParameter("remark",customerOrgGroup.Remark), + new SugarParameter("display_order",customerOrgGroup.DisplayOrder), + new SugarParameter("customer_org_register_id",customerOrgGroup.CustomerOrgRegisterId), + new SugarParameter("concurrency_stamp",customerOrgGroup.ConcurrencyStamp), + new SugarParameter("creation_time",customerOrgGroup.CreationTime), + new SugarParameter("creator_id",customerOrgGroup.CreatorId), + new SugarParameter("last_modification_time",customerOrgGroup.LastModificationTime), + new SugarParameter("last_modifier_id",customerOrgGroup.LastModifierId) + }); + } + + _logger.LogInformation($"单位分组数据处理完毕,数量{customerOrgGroups.Count}"); + + } } - private async Task TransMedicalPackage(string connectString) + /// + /// 单位分组明细 + /// + /// + /// + private async Task TransCustomerOrgGroupDetailAsync(SqlSugarClient WebDb) { - //medical_package,medical_package_detail + var customerOrgGroupDetails = await _customerOrgGroupDetailRepository.GetListAsync(); + if (customerOrgGroupDetails.Count > 0) + { + foreach (var customerOrgGroupDetail in customerOrgGroupDetails) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_group_detail(customer_org_group_id, asbitem_id, price, amount, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " + + "VALUES (@customer_org_group_id,@asbitem_id,@price,@amount,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("customer_org_group_id",customerOrgGroupDetail.CustomerOrgGroupId), + new SugarParameter("asbitem_id",customerOrgGroupDetail.AsbitemId), + new SugarParameter("price",customerOrgGroupDetail.Price), + new SugarParameter("amount",customerOrgGroupDetail.Amount), + new SugarParameter("concurrency_stamp",customerOrgGroupDetail.ConcurrencyStamp), + new SugarParameter("creation_time",customerOrgGroupDetail.CreationTime), + new SugarParameter("creator_id",customerOrgGroupDetail.CreatorId), + new SugarParameter("last_modification_time",customerOrgGroupDetail.LastModificationTime), + new SugarParameter("last_modifier_id",customerOrgGroupDetail.LastModifierId) + }); + } + + _logger.LogInformation($"单位分组明细数据处理完毕,数量{customerOrgGroupDetails.Count}"); + + } } - private async Task TransDiagnosis(string connectString) + #endregion + + + #region 人员导入 + /// + /// 人员导入 + /// + /// + /// + /// + private async Task TransPatientRegisterWithDetailAsync(SqlSugarClient WebDb, Guid PatientRegisterId) { - //diagnosis_level,diagnosis + try + { + await WebDb.Ado.BeginTranAsync(); + + //人员登记信息 + var patientRegisterEnt = (await _patientRegisterRepository.GetQueryableAsync()) + .Include(x => x.Patient) + .Include(x => x.SumDiagnoses) + .Include(x => x.SumSuggestionHeaders).ThenInclude(x => x.SumSuggestionContents) + .Include(x => x.SumSummaryHeaders).ThenInclude(x => x.SumSummaryContents) + .Where(m => m.Id == PatientRegisterId).FirstOrDefault(); + if (patientRegisterEnt != null) + { + var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_id from patient where patient_id='{patientRegisterEnt.PatientId}'")).Rows.Count; + if (IsPatient == 0) + { + #region 插入档案 + + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.patient(patient_id, patient_no, medical_center_id, patient_name, sex_id, marital_status_id," + + " birth_date, nation_id, birth_place_id, id_no, postal_code, email, telephone, mobile_telephone, address, simple_code, concurrency_stamp, creation_time," + + " creator_id, last_modification_time, last_modifier_id) VALUES (@patient_id,@patient_no,@medical_center_id,@patient_name,@sex_id,@marital_status_id," + + "CAST(@birth_date as timestamp),@nation_id,@birth_place_id::uuid,@id_no,@postal_code,@email,@telephone,@mobile_telephone,@address,@simple_code,@concurrency_stamp,@creation_time," + + "@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("patient_id",patientRegisterEnt.Patient.Id), + new SugarParameter("patient_no",patientRegisterEnt.Patient.PatientNo), + new SugarParameter("medical_center_id",patientRegisterEnt.Patient.MedicalCenterId), + new SugarParameter("patient_name",patientRegisterEnt.Patient.DisplayName), + new SugarParameter("sex_id",patientRegisterEnt.Patient.SexId), + new SugarParameter("marital_status_id",patientRegisterEnt.Patient.MaritalStatusId), + new SugarParameter("birth_date",patientRegisterEnt.Patient.BirthDate), + new SugarParameter("nation_id",patientRegisterEnt.Patient.NationId), + new SugarParameter("birth_place_id",patientRegisterEnt.Patient.BirthPlaceId), + new SugarParameter("id_no",patientRegisterEnt.Patient.IdNo), + new SugarParameter("postal_code",patientRegisterEnt.Patient.PostalCode), + new SugarParameter("email",patientRegisterEnt.Patient.Email), + new SugarParameter("telephone",patientRegisterEnt.Patient.Telephone), + new SugarParameter("mobile_telephone",patientRegisterEnt.Patient.MobileTelephone), + new SugarParameter("address",patientRegisterEnt.Patient.Address), + new SugarParameter("simple_code",patientRegisterEnt.Patient.SimpleCode), + new SugarParameter("concurrency_stamp",patientRegisterEnt.Patient.ConcurrencyStamp), + new SugarParameter("creation_time",patientRegisterEnt.Patient.CreationTime), + new SugarParameter("creator_id",patientRegisterEnt.Patient.CreatorId), + new SugarParameter("last_modification_time",patientRegisterEnt.Patient.LastModificationTime), + new SugarParameter("last_modifier_id",patientRegisterEnt.Patient.LastModifierId) + }); + + #endregion + } + + #region 插入人员登记信息 + + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.patient_register(patient_register_id, patient_register_no, patient_id, medical_times, customer_org_id, customer_org_group_id, medical_package_id," + + "patient_name,sex_id, birth_date, age, job_card_no, medical_card_no, marital_status_id, medical_type_id, personnel_type_id, job_post, job_title, photo," + + " sex_hormone_term_id, interpose_measure, medical_conclusion_id, complete_flag, is_medical_start, medical_start_date, summary_date, is_audit, audit_date, is_vip, third_info,remark,medical_center_id," + + "customer_org_register_id, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, audit_doctor_id,summary_doctor_id, his_patient_id) VALUES " + + "(@patient_register_id,@patient_register_no,@patient_id,@medical_times,@customer_org_id,@customer_org_group_id::uuid,@medical_package_id::uuid," + + "@patient_name,@sex_id,CAST(@birth_date as timestamp),@age,@job_card_no,@medical_card_no,@marital_status_id,@medical_type_id::uuid,@personnel_type_id::uuid,@job_post,@job_title,@photo," + + "@sex_hormone_term_id::uuid,@interpose_measure,@medical_conclusion_id::uuid,@complete_flag,@is_medical_start,@medical_start_date,CAST(@summary_date as timestamp),@is_audit,CAST(@audit_date as timestamp),@is_vip,@third_info,@remark,@medical_center_id," + + "@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@audit_doctor_id::uuid,@summary_doctor_id::uuid,@his_patient_id);", + new List() { + new SugarParameter("patient_register_id",patientRegisterEnt.Id), + new SugarParameter("patient_register_no",patientRegisterEnt.PatientRegisterNo), + new SugarParameter("patient_id",patientRegisterEnt.PatientId), + new SugarParameter("medical_times",patientRegisterEnt.MedicalTimes), + new SugarParameter("customer_org_id",patientRegisterEnt.CustomerOrgId), + new SugarParameter("customer_org_group_id",patientRegisterEnt.CustomerOrgGroupId), + new SugarParameter("medical_package_id",patientRegisterEnt.MedicalPackageId), + new SugarParameter("patient_name",patientRegisterEnt.PatientName), + new SugarParameter("sex_id",patientRegisterEnt.SexId), + new SugarParameter("birth_date",patientRegisterEnt.BirthDate), + new SugarParameter("age",patientRegisterEnt.Age), + new SugarParameter("job_card_no",patientRegisterEnt.JobCardNo), + new SugarParameter("medical_card_no",patientRegisterEnt.MedicalCardNo), + new SugarParameter("marital_status_id",patientRegisterEnt.MaritalStatusId), + new SugarParameter("medical_type_id",patientRegisterEnt.MedicalTypeId), + new SugarParameter("personnel_type_id",patientRegisterEnt.PersonnelTypeId), + new SugarParameter("job_post",patientRegisterEnt.JobPost), + new SugarParameter("job_title",patientRegisterEnt.JobTitle), + new SugarParameter("photo",patientRegisterEnt.Photo), + new SugarParameter("sex_hormone_term_id",patientRegisterEnt.SexHormoneTermId), + new SugarParameter("interpose_measure",patientRegisterEnt.InterposeMeasure), + new SugarParameter("medical_conclusion_id",patientRegisterEnt.MedicalConclusionId), + new SugarParameter("complete_flag",patientRegisterEnt.CompleteFlag), + new SugarParameter("is_medical_start",patientRegisterEnt.IsMedicalStart), + new SugarParameter("medical_start_date",patientRegisterEnt.MedicalStartDate), + new SugarParameter("summary_date",patientRegisterEnt.SummaryDate), + new SugarParameter("is_audit",patientRegisterEnt.IsAudit), + new SugarParameter("audit_date",patientRegisterEnt.AuditDate), + new SugarParameter("is_vip",patientRegisterEnt.IsVip), + new SugarParameter("third_info",patientRegisterEnt.ThirdInfo), + new SugarParameter("remark",patientRegisterEnt.Remark), + new SugarParameter("medical_center_id",patientRegisterEnt.MedicalCenterId), + new SugarParameter("customer_org_register_id",patientRegisterEnt.CustomerOrgRegisterId), + new SugarParameter("concurrency_stamp",patientRegisterEnt.ConcurrencyStamp), + new SugarParameter("creation_time",patientRegisterEnt.CreationTime), + new SugarParameter("creator_id",patientRegisterEnt.CreatorId), + new SugarParameter("last_modification_time",patientRegisterEnt.LastModificationTime), + new SugarParameter("last_modifier_id",patientRegisterEnt.LastModifierId), + new SugarParameter("audit_doctor_id",patientRegisterEnt.AuditDoctorId), + new SugarParameter("summary_doctor_id",patientRegisterEnt.SummaryDoctorId), + new SugarParameter("his_patient_id",patientRegisterEnt.HisPatientId) + }); + + #endregion + + #region 插入registercheck、以及相关 + + var registerCheckWithDetails = (await _registerCheckRepository.GetQueryableAsync()) + .Include(x => x.RegisterCheckAsbitems) + .Include(x => x.RegisterCheckItems) + .Include(x => x.RegisterCheckPictures) + .Include(x => x.RegisterCheckSuggestions) + .Include(x => x.RegisterCheckSummaries) + .Where(m => m.PatientRegisterId == patientRegisterEnt.Id).ToList(); + + + foreach (var registerCheckWithDetail in registerCheckWithDetails) + { + #region register_check + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check(register_check_id, patient_register_id, check_request_no, third_info, complete_flag, critical_value, critical_value_flag, critical_value_process_content," + + "critical_value_process_flag, critical_value_process_doctor, critical_value_process_date, critical_value_create_date, check_doctor_id, check_date, is_audit," + + " auditor_user_id, audit_time, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, exec_organization_unit_id) VALUES " + + "(@register_check_id,@patient_register_id,@check_request_no,@third_info,@complete_flag,@critical_value,@critical_value_flag,@critical_value_process_content," + + "@critical_value_process_flag,@critical_value_process_doctor,CAST(@critical_value_process_date as timestamp),CAST(@critical_value_create_date as timestamp),@check_doctor_id,CAST(@check_date as timestamp),@is_audit," + + "@auditor_user_id::uuid,CAST(@audit_time as timestamp),@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@exec_organization_unit_id::uuid);", + new List() { + new SugarParameter("register_check_id",registerCheckWithDetail.Id), + new SugarParameter("patient_register_id",registerCheckWithDetail.PatientRegisterId), + new SugarParameter("check_request_no",registerCheckWithDetail.CheckRequestNo), + new SugarParameter("third_info",registerCheckWithDetail.ThirdInfo), + new SugarParameter("complete_flag",registerCheckWithDetail.CompleteFlag), + new SugarParameter("critical_value",registerCheckWithDetail.CriticalValue), + new SugarParameter("critical_value_flag",registerCheckWithDetail.CriticalValueFlag), + new SugarParameter("critical_value_process_content",registerCheckWithDetail.CriticalValueProcessContent), + new SugarParameter("critical_value_process_flag",registerCheckWithDetail.CriticalValueProcessFlag), + new SugarParameter("critical_value_process_doctor",registerCheckWithDetail.CriticalValueProcessDoctor), + new SugarParameter("critical_value_process_date",registerCheckWithDetail.CriticalValueProcessDate), + new SugarParameter("critical_value_create_date",registerCheckWithDetail.CriticalValueCreateDate), + new SugarParameter("check_doctor_id",registerCheckWithDetail.CheckDoctorId), + new SugarParameter("check_date",registerCheckWithDetail.CheckDate), + new SugarParameter("is_audit",registerCheckWithDetail.IsAudit), + new SugarParameter("auditor_user_id",registerCheckWithDetail.AuditorUserId), + new SugarParameter("audit_time",registerCheckWithDetail.AuditTime), + new SugarParameter("concurrency_stamp",registerCheckWithDetail.ConcurrencyStamp), + new SugarParameter("creation_time",registerCheckWithDetail.CreationTime), + new SugarParameter("creator_id",registerCheckWithDetail.CreatorId), + new SugarParameter("last_modification_time",registerCheckWithDetail.LastModificationTime), + new SugarParameter("last_modifier_id",registerCheckWithDetail.LastModifierId), + new SugarParameter("exec_organization_unit_id",registerCheckWithDetail.ExecOrganizationUnitId), + }); + #endregion + + #region register_check_asbitem + + foreach (var registerCheckAsbitem in registerCheckWithDetail.RegisterCheckAsbitems) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_asbitem" + + "(register_check_asbitem_id, register_check_id, asbitem_id, patient_register_id, standard_price, charge_price," + + "pay_type_flag, is_charge, amount, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " + + "(@register_check_asbitem_id,@register_check_id,@asbitem_id,@patient_register_id,@standard_price,@charge_price," + + "@pay_type_flag,@is_charge,@amount,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("register_check_asbitem_id",registerCheckAsbitem.Id), + new SugarParameter("register_check_id",registerCheckAsbitem.RegisterCheckId), + new SugarParameter("asbitem_id",registerCheckAsbitem.AsbitemId), + new SugarParameter("patient_register_id",registerCheckAsbitem.PatientRegisterId), + new SugarParameter("standard_price",registerCheckAsbitem.StandardPrice), + new SugarParameter("charge_price",registerCheckAsbitem.ChargePrice), + new SugarParameter("pay_type_flag",registerCheckAsbitem.PayTypeFlag), + new SugarParameter("is_charge",registerCheckAsbitem.IsCharge), + new SugarParameter("amount",registerCheckAsbitem.Amount), + new SugarParameter("concurrency_stamp",registerCheckAsbitem.ConcurrencyStamp), + new SugarParameter("creation_time",registerCheckAsbitem.CreationTime), + new SugarParameter("creator_id",registerCheckAsbitem.CreatorId), + new SugarParameter("last_modification_time",registerCheckAsbitem.LastModificationTime), + new SugarParameter("last_modifier_id",registerCheckAsbitem.LastModifierId), + }); + } + + #endregion + + #region register_check_item + + foreach (var registerCheckItem in registerCheckWithDetail.RegisterCheckItems) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_item(register_check_id, item_id, result, unit, reference_range_value, critical_range_value, critical_value, result_status_id, check_doctor_name, " + + "check_date, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " + + "(@register_check_id,@item_id,@result,@unit,@reference_range_value,@critical_range_value,@critical_value,@result_status_id,@check_doctor_name," + + "CAST(@check_date as timestamp),@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("register_check_id",registerCheckItem.RegisterCheckId), + new SugarParameter("item_id",registerCheckItem.ItemId), + new SugarParameter("result",registerCheckItem.Result), + new SugarParameter("unit",registerCheckItem.Unit), + new SugarParameter("reference_range_value",registerCheckItem.ReferenceRangeValue), + new SugarParameter("critical_range_value",registerCheckItem.CriticalRangeValue), + new SugarParameter("critical_value",registerCheckItem.CriticalValue), + new SugarParameter("result_status_id",registerCheckItem.ResultStatusId), + new SugarParameter("check_doctor_name",registerCheckItem.CheckDoctorName), + new SugarParameter("check_date",registerCheckItem.CheckDate), + new SugarParameter("concurrency_stamp",registerCheckItem.ConcurrencyStamp), + new SugarParameter("creation_time",registerCheckItem.CreationTime), + new SugarParameter("creator_id",registerCheckItem.CreatorId), + new SugarParameter("last_modification_time",registerCheckItem.LastModificationTime), + new SugarParameter("last_modifier_id",registerCheckItem.LastModifierId) + }); + } + + #endregion + + #region register_check_picture + + foreach (var registerCheckPicture in registerCheckWithDetail.RegisterCheckPictures) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_picture" + + "(register_check_picture_id, register_check_id, picture_filename, is_print, display_order," + + "concurrency_stamp, creation_time,creator_id, last_modification_time, last_modifier_id, picture_file_type) VALUES " + + "(@register_check_picture_id,@register_check_id,@picture_filename,@is_print,@display_order," + + "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@picture_file_type);", + new List() { + new SugarParameter("register_check_picture_id",registerCheckPicture.Id), + new SugarParameter("register_check_id",registerCheckPicture.RegisterCheckId), + new SugarParameter("picture_filename",registerCheckPicture.PictureFilename), + new SugarParameter("is_print",registerCheckPicture.IsPrint), + new SugarParameter("display_order",registerCheckPicture.DisplayOrder), + new SugarParameter("concurrency_stamp",registerCheckPicture.ConcurrencyStamp), + new SugarParameter("creation_time",registerCheckPicture.CreationTime), + new SugarParameter("creator_id",registerCheckPicture.CreatorId), + new SugarParameter("last_modification_time",registerCheckPicture.LastModificationTime), + new SugarParameter("last_modifier_id",registerCheckPicture.LastModifierId), + new SugarParameter("picture_file_type",registerCheckPicture.PictureFileType) + }); + } + + #endregion + + #region register_check_suggestion + + foreach (var registerCheckSuggestion in registerCheckWithDetail.RegisterCheckSuggestions) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_suggestion" + + "(register_check_suggestion_id, register_check_id, suggestion, display_order," + + "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " + + "(@register_check_suggestion_id,@register_check_id,@suggestion,@display_order," + + "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("register_check_suggestion_id",registerCheckSuggestion.Id), + new SugarParameter("register_check_id",registerCheckSuggestion.RegisterCheckId), + new SugarParameter("suggestion",registerCheckSuggestion.Suggestion), + new SugarParameter("display_order",registerCheckSuggestion.DisplayOrder), + new SugarParameter("concurrency_stamp",registerCheckSuggestion.ConcurrencyStamp), + new SugarParameter("creation_time",registerCheckSuggestion.CreationTime), + new SugarParameter("creator_id",registerCheckSuggestion.CreatorId), + new SugarParameter("last_modification_time",registerCheckSuggestion.LastModificationTime), + new SugarParameter("last_modifier_id",registerCheckSuggestion.LastModifierId) + }); + } + + #endregion + + #region register_check_summary + + foreach (var registerCheckSummarie in registerCheckWithDetail.RegisterCheckSummaries) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_summary" + + "(register_check_summary_id, register_check_id, summary, display_order, summary_flag," + + "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " + + "(@register_check_summary_id,@register_check_id,@summary,@display_order,@summary_flag," + + "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("register_check_summary_id",registerCheckSummarie.Id), + new SugarParameter("register_check_id",registerCheckSummarie.RegisterCheckId), + new SugarParameter("summary",registerCheckSummarie.Summary), + new SugarParameter("display_order",registerCheckSummarie.DisplayOrder), + new SugarParameter("summary_flag",registerCheckSummarie.SummaryFlag), + new SugarParameter("concurrency_stamp",registerCheckSummarie.ConcurrencyStamp), + new SugarParameter("creation_time",registerCheckSummarie.CreationTime), + new SugarParameter("creator_id",registerCheckSummarie.CreatorId), + new SugarParameter("last_modification_time",registerCheckSummarie.LastModificationTime), + new SugarParameter("last_modifier_id",registerCheckSummarie.LastModifierId), + }); + } + + #endregion + } + + #endregion + + #region 插入总检综述 + foreach (var sumSummaryHeader in patientRegisterEnt.SumSummaryHeaders) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_summary_header" + + "(sum_summary_header_id, patient_register_id, summary_title, summary_flag, display_order," + + "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " + + "(@sum_summary_header_id,@patient_register_id,@summary_title,@summary_flag,@display_order," + + "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("sum_summary_header_id",sumSummaryHeader.Id), + new SugarParameter("patient_register_id",sumSummaryHeader.PatientRegisterId), + new SugarParameter("summary_title",sumSummaryHeader.SummaryTitle), + new SugarParameter("summary_flag",sumSummaryHeader.SummaryFlag), + new SugarParameter("display_order",sumSummaryHeader.DisplayOrder), + new SugarParameter("concurrency_stamp",sumSummaryHeader.ConcurrencyStamp), + new SugarParameter("creation_time",sumSummaryHeader.CreationTime), + new SugarParameter("creator_id",sumSummaryHeader.CreatorId), + new SugarParameter("last_modification_time",sumSummaryHeader.LastModificationTime), + new SugarParameter("last_modifier_id",sumSummaryHeader.LastModifierId) + }); + + foreach (var sumSummaryContent in sumSummaryHeader.SumSummaryContents) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_summary_content" + + "(sum_summary_content_id, sum_summary_header_id, summary_content, display_order, " + + "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " + + "(@sum_summary_content_id,@sum_summary_header_id,@summary_content,@display_order," + + "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("sum_summary_content_id",sumSummaryContent.Id), + new SugarParameter("sum_summary_header_id",sumSummaryContent.SumSummaryHeaderId), + new SugarParameter("summary_content",sumSummaryContent.SummaryContent), + new SugarParameter("display_order",sumSummaryContent.DisplayOrder), + new SugarParameter("concurrency_stamp",sumSummaryContent.ConcurrencyStamp), + new SugarParameter("creation_time",sumSummaryContent.CreationTime), + new SugarParameter("creator_id",sumSummaryContent.CreatorId), + new SugarParameter("last_modification_time",sumSummaryContent.LastModificationTime), + new SugarParameter("last_modifier_id",sumSummaryContent.LastModifierId) + }); + } + } + #endregion + + #region 插入总检建议 + foreach (var sumSuggestionHeader in patientRegisterEnt.SumSuggestionHeaders) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_suggestion_header" + + "(sum_suggestion_header_id, patient_register_id, suggestion_title, suggestion_flag, display_order," + + "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " + + "(@sum_suggestion_header_id,@patient_register_id,@suggestion_title,@suggestion_flag,@display_order," + + "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("sum_suggestion_header_id",sumSuggestionHeader.Id), + new SugarParameter("patient_register_id",sumSuggestionHeader.PatientRegisterId), + new SugarParameter("suggestion_title",sumSuggestionHeader.SuggestionTitle), + new SugarParameter("suggestion_flag",sumSuggestionHeader.SuggestionFlag), + new SugarParameter("display_order",sumSuggestionHeader.DisplayOrder), + new SugarParameter("concurrency_stamp",sumSuggestionHeader.ConcurrencyStamp), + new SugarParameter("creation_time",sumSuggestionHeader.CreationTime), + new SugarParameter("creator_id",sumSuggestionHeader.CreatorId), + new SugarParameter("last_modification_time",sumSuggestionHeader.LastModificationTime), + new SugarParameter("last_modifier_id",sumSuggestionHeader.LastModifierId) + }); + + foreach (var sumSuggestionContent in sumSuggestionHeader.SumSuggestionContents) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_suggestion_content" + + "(sum_suggestion_content_id, sum_suggestion_header_id, suggestion_type, suggestion_content, display_order, " + + "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " + + "(@sum_suggestion_content_id,@sum_suggestion_header_id,@suggestion_type,@suggestion_content,@display_order, " + + "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);", + new List() { + new SugarParameter("sum_suggestion_content_id",sumSuggestionContent.Id), + new SugarParameter("sum_suggestion_header_id",sumSuggestionContent.SumSuggestionHeaderId), + new SugarParameter("suggestion_type",sumSuggestionContent.SuggestionType), + new SugarParameter("suggestion_content",sumSuggestionContent.SuggestionContent), + new SugarParameter("display_order",sumSuggestionContent.DisplayOrder), + new SugarParameter("concurrency_stamp",sumSuggestionContent.ConcurrencyStamp), + new SugarParameter("creation_time",sumSuggestionContent.CreationTime), + new SugarParameter("creator_id",sumSuggestionContent.CreatorId), + new SugarParameter("last_modification_time",sumSuggestionContent.LastModificationTime), + new SugarParameter("last_modifier_id",sumSuggestionContent.LastModifierId) + }); + } + } + #endregion + + #region 插入总检诊断 + foreach (var sumDiagnoses in patientRegisterEnt.SumDiagnoses) + { + await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_diagnosis" + + "(patient_register_id, diagnosis_id, sum_suggestion_header_id, display_order, concurrency_stamp) VALUES " + + "(@patient_register_id,@diagnosis_id,@sum_suggestion_header_id,@display_order,@concurrency_stamp);", + new List() { + new SugarParameter("patient_register_id",sumDiagnoses.PatientRegisterId), + new SugarParameter("diagnosis_id",sumDiagnoses.DiagnosisId), + new SugarParameter("sum_suggestion_header_id",sumDiagnoses.SumSuggestionHeaderId), + new SugarParameter("display_order",sumDiagnoses.DisplayOrder), + new SugarParameter("concurrency_stamp",sumDiagnoses.ConcurrencyStamp) + }); + } + #endregion + } + await WebDb.Ado.CommitTranAsync(); + } + catch (Exception ex) + { + await WebDb.Ado.RollbackTranAsync(); + throw new UserFriendlyException(ex.ToString()); + } } + #endregion } }