diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisters/Qztl/ImportPatientRegisterPlugInsQztl.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisters/Qztl/ImportPatientRegisterPlugInsQztl.cs index cc1d2de..512216a 100644 --- a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisters/Qztl/ImportPatientRegisterPlugInsQztl.cs +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisters/Qztl/ImportPatientRegisterPlugInsQztl.cs @@ -54,11 +54,45 @@ namespace Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl await InitAsync(); var qztlPatientRegisterFromInterface = await CallInterfaceServiceAsync(); - if (qztlPatientRegisterFromInterface == null || !qztlPatientRegisterFromInterface.plans.Any()) + if (qztlPatientRegisterFromInterface == null) { return; } + //删除人员 + if(qztlPatientRegisterFromInterface.delIds != null) + { + foreach (var deleteUserId in qztlPatientRegisterFromInterface.delIds) + { + var patientRegister = await GetPatientRegisterByPlanUserId(deleteUserId); + if (patientRegister == null) + { + continue; + } + if (patientRegister.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration && + patientRegister.CompleteFlag != PatientRegisterCompleteFlag.Registration) + { + //已检人员不允许删除 + continue; + } + var patientRegisterInputDto = new PatientRegisterIdInputDto() + { + PatientRegisterId = patientRegister.PatientRegisterId + }; + await CallAppServiceAsync( + "api/app/PatientRegister/DeleteById", patientRegisterInputDto); + //发送答复通知 + var succesIds = new List(); + var deleteIds = new List(); + deleteIds.Add(deleteUserId); + await AnswerOk(succesIds, deleteIds); + } + } + + if (qztlPatientRegisterFromInterface.plans == null) + { + return; + } //设置导入人员信息 foreach (var patient in qztlPatientRegisterFromInterface.plans) { @@ -143,7 +177,7 @@ namespace Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl _customerOrgGroupDtos = await CallAppServiceAsync>( "api/app/customer-org-group/in-customer-org-id/" + _importCustomerOrgId.ToString() , Guid.Empty, "get"); - customerOrgGroupDto = _customerOrgGroupDtos.Where(o => o.DisplayName == "复检").FirstOrDefault(); + customerOrgGroupDto = _customerOrgGroupDtos.Where(o => o.DisplayName == "复检").FirstOrDefault(); if (customerOrgGroupDto == null) { throw new Exception("没有复检这个分组"); @@ -186,6 +220,33 @@ namespace Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl } customerOrgGroupDto = await GetCustomerOrgGroup(groupNames, sexId, maritalStatusId); } + //没有planuserid的自动设置planuserid + var patientRegisters = await GetPatientRegisterByCustomerOrgRegisterIdWithIdNo(_customerOrgRegisterDto.Id, patient.cardId); + var succesIds = new List(); + var deleteIds = new List(); + succesIds.Add(patient.id.ToString()); + bool IsNoPlanUserIdComplete = false; + foreach (var patintRegister in patientRegisters) + { + //没有planUserId的更新planUserId + if (string.IsNullOrWhiteSpace(patintRegister.Planuserid) && patintRegister.PatientName == patient.personName) + { + await UpdatePatientRegisterPlanUserId(patintRegister.PatientRegisterId, patient.id.ToString()); + + await AnswerOk(succesIds, deleteIds); + IsNoPlanUserIdComplete = true; + } + //已经登记了该PlanUserId的不再登记 + if(!string.IsNullOrWhiteSpace(patintRegister.Planuserid) && patintRegister.Planuserid == patient.id.ToString()) + { + await AnswerOk(succesIds, deleteIds); + IsNoPlanUserIdComplete = true; + } + } + if (IsNoPlanUserIdComplete) + { + continue; + } //获取病人ID var patientRegister = new CreatePatientRegisterDto() @@ -259,7 +320,7 @@ namespace Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl , Guid.Empty, "get"); if (!customerOrgGroupDetailOrAsbitemDtos.Any()) { - throw new Exception("分组未包含项目"); + throw new Exception($"分组{customerOrgGroupDto.DisplayName}未包含项目"); } foreach (var asbitem in customerOrgGroupDetailOrAsbitemDtos) { @@ -277,9 +338,9 @@ namespace Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl "api/PatientRegister/CreatePatientRegister", patientRegister); - var succesIds = new List(); - var deleteIds = new List(); - succesIds.Add(patientRegister.Planuserid); + //var succesIds = new List(); + //var deleteIds = new List(); + //succesIds.Add(patientRegister.Planuserid); await AnswerOk(succesIds, deleteIds); } @@ -373,23 +434,60 @@ namespace Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl _personnelTypes = await CallAppServiceAsync>("api/app/PersonnelType/GetAll", ""); } - public async Task> GetPatientRegisterByCustomerOrgRegisterIdWithIdNo(Guid customerOrgRegisterId ,string idNo) + public async Task> GetPatientRegisterByCustomerOrgRegisterIdWithIdNo(Guid customerOrgRegisterId, string idNo) { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; sql = @" SELECT * - from patient_register,patient_register_exter - where patient_register.patient_register_id = patient_register_exter.patient_register_id and + from patient_register,patient_register_exter,patient + where patient_register.id = patient_register_exter.patient_register_id and + patient_register.patient_id = patient.id and customer_org_register_id =@CustomerOrgRegisterId and - id_no =@IdNo + patient.id_no =@IdNo "; var patientRegisters = (await conn.QueryAsync(sql, - new { CustomerOrgRegisterId = customerOrgRegisterId,IdNo = idNo })).ToList(); + new { CustomerOrgRegisterId = customerOrgRegisterId, IdNo = idNo })).ToList(); return patientRegisters; } } + public async Task GetPatientRegisterByPlanUserId(string planUserId) + { + if(string.IsNullOrWhiteSpace(planUserId)) + { + throw new Exception("planUserId不能为空"); + } + using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) + { + string sql; + sql = @" + SELECT * + from patient_register,patient_register_exter + where patient_register.id = patient_register_exter.patient_register_id and + patient_register_exter.planuserid =@PlanUserId + "; + var patientRegisters = (await conn.QueryAsync(sql, + new { PlanUserId = planUserId })).FirstOrDefault(); + return patientRegisters; + } + } + public async Task UpdatePatientRegisterPlanUserId(Guid patientRegisterId, string planUserid) + { + using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) + { + string sql; + sql = @" + update patient_register_exter + set planuserid =@Planuserid + where patient_register_id=@PatientRegisterId + "; + conn.Execute(sql, new { PatientRegisterId = patientRegisterId, Planuserid = planUserid }); + + return; + } + } + public async Task CallInterfaceServiceAsync() { string baseAddress = InterfaceWebApiUrl; diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisters/Qztl/PatientRegisterQztl.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisters/Qztl/PatientRegisterQztl.cs index 4a03b8e..d16d538 100644 --- a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisters/Qztl/PatientRegisterQztl.cs +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisters/Qztl/PatientRegisterQztl.cs @@ -78,5 +78,7 @@ namespace Shentun.Peis.PlugIns.Extensions.PatientRegisters.Qztl public string DepartmentName { get; set; } public string Planuserid { get; set; } + + public char CompleteFlag { get; set; } } } diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ImportPatientRegisterPlugInsHzcyTest.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ImportPatientRegisterPlugInsHzcyTest.cs index 7cea871..0295360 100644 --- a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ImportPatientRegisterPlugInsHzcyTest.cs +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ImportPatientRegisterPlugInsHzcyTest.cs @@ -26,7 +26,7 @@ namespace Shentun.Peis.PlugIns.Extensions.Test string filePath = DirectoryHelper.GetAppDirectory() + "/appsettings.json"; configParm = File.ReadAllText(filePath); - var input = new ImportPatientRegisterPlugInsQztl(configParm); + var input = new ImportPatientRegisterPlugInsQztl(new Guid("7f2b453c-e45c-44bf-ba6b-9ef192a3cf88")); await input.ImportAsync(); diff --git a/src/Shentun.Peis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs b/src/Shentun.Peis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs index b5d5134..2fa9e87 100644 --- a/src/Shentun.Peis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs +++ b/src/Shentun.Peis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs @@ -51,7 +51,7 @@ namespace Shentun.Peis.AppointRegisterAsbitems /// public short Amount { get; set; } - public char IsInMedicalPackage { get; set; } = 'N'; + public char IsBelongGroupPackage { get; set; } = 'N'; /// /// 项目类别顺序 /// diff --git a/src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemDto.cs b/src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemDto.cs index 111a0dc..9a84ae3 100644 --- a/src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemDto.cs +++ b/src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemDto.cs @@ -24,6 +24,10 @@ namespace Shentun.Peis.Asbitems /// public char ForSexId { get; set; } + /// + /// 婚姻状况 + /// + public char MaritalStatusId { get; set; } /// /// 项目类别 /// diff --git a/src/Shentun.Peis.Application.Contracts/Asbitems/BasicAsbitemDto.cs b/src/Shentun.Peis.Application.Contracts/Asbitems/BasicAsbitemDto.cs index d32377f..6678c8c 100644 --- a/src/Shentun.Peis.Application.Contracts/Asbitems/BasicAsbitemDto.cs +++ b/src/Shentun.Peis.Application.Contracts/Asbitems/BasicAsbitemDto.cs @@ -22,6 +22,11 @@ namespace Shentun.Peis.Asbitems /// public char ForSexId { get; set; } + /// + /// 婚姻状况 + /// + public char MaritalStatusId { get; set; } + /// /// 项目类别 /// diff --git a/src/Shentun.Peis.Application.Contracts/Asbitems/CreateAsbitemDto.cs b/src/Shentun.Peis.Application.Contracts/Asbitems/CreateAsbitemDto.cs index c4523cc..4cbdbfb 100644 --- a/src/Shentun.Peis.Application.Contracts/Asbitems/CreateAsbitemDto.cs +++ b/src/Shentun.Peis.Application.Contracts/Asbitems/CreateAsbitemDto.cs @@ -23,6 +23,11 @@ namespace Shentun.Peis.Asbitems /// public char ForSexId { get; set; }= 'A'; + /// + /// 婚姻状况 + /// + public char MaritalStatusId { get; set; } = 'A'; + /// /// 项目类别 /// diff --git a/src/Shentun.Peis.Application.Contracts/Asbitems/UpdateAsbitemDto.cs b/src/Shentun.Peis.Application.Contracts/Asbitems/UpdateAsbitemDto.cs index c9965e9..de21206 100644 --- a/src/Shentun.Peis.Application.Contracts/Asbitems/UpdateAsbitemDto.cs +++ b/src/Shentun.Peis.Application.Contracts/Asbitems/UpdateAsbitemDto.cs @@ -21,6 +21,10 @@ namespace Shentun.Peis.Asbitems /// public char ForSexId { get; set; } + /// + /// 婚姻状况 + /// + public char MaritalStatusId { get; set; } /// /// 项目类别 /// diff --git a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs index 3fa2f73..567fefa 100644 --- a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs +++ b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs @@ -1998,9 +1998,14 @@ namespace Shentun.Peis.PatientRegisters /// /// /// - public override async Task DeleteAsync(Guid id) + [HttpPost("api/app/PatientRegister/DeleteById")] + public async Task DeleteByIdAsync(PatientRegisterIdInputDto input) { - await _manager.CheckAndDeleteAsync(id); + if(input == null) + { + throw new UserFriendlyException("input参数不能为空"); + } + await _manager.CheckAndDeleteAsync(input.PatientRegisterId); } diff --git a/src/Shentun.Peis.Domain/Asbitems/Asbitem.cs b/src/Shentun.Peis.Domain/Asbitems/Asbitem.cs index 80983db..e1c4eb3 100644 --- a/src/Shentun.Peis.Domain/Asbitems/Asbitem.cs +++ b/src/Shentun.Peis.Domain/Asbitems/Asbitem.cs @@ -45,6 +45,14 @@ namespace Shentun.Peis.Models [Column("for_sex_id")] [MaxLength(1)] public char ForSexId { get; set; } + + /// + /// 婚姻状况 + /// + [Column("marital_status_id")] + [MaxLength(1)] + public char MaritalStatusId { get; set; } + /// /// 项目类别 /// diff --git a/src/Shentun.Peis.Domain/Asbitems/AsbitemEntity.cs b/src/Shentun.Peis.Domain/Asbitems/AsbitemEntity.cs index a4c021b..f8fa39b 100644 --- a/src/Shentun.Peis.Domain/Asbitems/AsbitemEntity.cs +++ b/src/Shentun.Peis.Domain/Asbitems/AsbitemEntity.cs @@ -22,6 +22,10 @@ namespace Shentun.Peis.Asbitems /// 适用性别,M-男,F-女,A-全部 /// public char ForSexId { get; set; } + /// + /// 婚姻状况 + /// + public char MaritalStatusId { get; set; } /// /// 项目类别 diff --git a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/Asbitems/AsbitemDbMapping.cs b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/Asbitems/AsbitemDbMapping.cs index afb69f2..82b5558 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/Asbitems/AsbitemDbMapping.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/Asbitems/AsbitemDbMapping.cs @@ -19,6 +19,7 @@ namespace Shentun.Peis.DbMapping entity.Property(t => t.DisplayName).HasComment("名称").IsRequired(); entity.Property(t => t.ShortName).HasComment("简称"); entity.Property(t => t.ForSexId).HasComment("适用性别,M-男,F-女,A-全部").IsRequired().HasDefaultValueSql("'A'"); + entity.Property(t => t.MaritalStatusId).HasComment("适用婚姻状况,0-未婚,1-已婚,A-全部").IsRequired().HasDefaultValueSql("'A'"); entity.Property(t => t.ItemTypeId).HasComment("项目类别").IsRequired().IsFixedLength(); entity.Property(t => t.Price).HasComment("价格").IsRequired().HasDefaultValueSql("0"); entity.Property(t => t.DeviceTypeId).HasComment("仪器类别");