From f123154dcefc927138ec22f42de7ed78a09ad894 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Fri, 10 May 2024 02:20:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=87=E5=BC=95=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PrintReports/PrintReportAppService.cs | 213 +++++++++--------- .../PatientRegisterGuideReportDto.cs | 2 + .../PrintReportAppServiceTest.cs | 2 +- 3 files changed, 114 insertions(+), 103 deletions(-) diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs index 0c29624..a0705c5 100644 --- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs +++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs @@ -173,7 +173,7 @@ namespace Shentun.Peis.PrintReports var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "medical_center_telphone"); #endregion - var customerOrgList = await _customerOrgRepository.GetListAsync(); + //var customerOrgList = await _customerOrgRepository.GetListAsync(); var query = from a in await _patientRegisterRepository.GetQueryableAsync() join b in await _sexRegisterRepository.GetQueryableAsync() @@ -252,115 +252,123 @@ namespace Shentun.Peis.PrintReports //生成LIS条码 var lisRequests = await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId); await _unitOfWorkManager.Current.SaveChangesAsync(); - //await _unitOfWorkManager.Current.CompleteAsync(); + await _unitOfWorkManager.Current.CompleteAsync(); //检索条码数据 - - var query = (from patient in await _patientRepository.GetQueryableAsync() - join patientRegister in await _patientRegisterRepository.GetQueryableAsync() - on patient.Id equals patientRegister.PatientId - join sex in await _sexRegisterRepository.GetQueryableAsync() on patientRegister.SexId equals sex.Id - join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on patientRegister.Id equals registerCheckAsbitem.PatientRegisterId - join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id - join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id - join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() on lisRequest.SampleContainerId equals sampleContainer.Id into dd - from sampleContainerHaveEmpty in dd.DefaultIfEmpty() - join sampleType in await _sampleTypeRepository.GetQueryableAsync() on lisRequest.SampleTypeId equals sampleType.Id into ee - from sampleTypeHaveEmpty in ee.DefaultIfEmpty() - where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null) - select new - { - patient, - patientRegister, - sex, - registerCheckAsbitem, - asbitem, - lisRequest, - sampleContainerHaveEmpty, - sampleTypeHaveEmpty - } - ).ToList(); - lisRequests = query.Select(o => o.lisRequest).Distinct().ToList(); - //发送第三方LIS申请 - if (lisRequests != null) + using (var uow = _unitOfWorkManager.Begin( + requiresNew: false, isTransactional: false + )) { - foreach (var lisRequest in lisRequests) + var query = (from patient in await _patientRepository.GetQueryableAsync() + join patientRegister in await _patientRegisterRepository.GetQueryableAsync() + on patient.Id equals patientRegister.PatientId + join sex in await _sexRegisterRepository.GetQueryableAsync() on patientRegister.SexId equals sex.Id + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on patientRegister.Id equals registerCheckAsbitem.PatientRegisterId + join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id + join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id + join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() on lisRequest.SampleContainerId equals sampleContainer.Id into dd + from sampleContainerHaveEmpty in dd.DefaultIfEmpty() + join sampleType in await _sampleTypeRepository.GetQueryableAsync() on lisRequest.SampleTypeId equals sampleType.Id into ee + from sampleTypeHaveEmpty in ee.DefaultIfEmpty() + where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null) + select new + { + patient, + patientRegister, + sex, + registerCheckAsbitem, + asbitem, + lisRequest, + sampleContainerHaveEmpty, + sampleTypeHaveEmpty + } + ).ToList(); + lisRequests = query.Select(o => o.lisRequest).Distinct().ToList(); + //发送第三方LIS申请 + if (lisRequests != null) { - await _lisRequestManager.SendThirdLisRequestAsync(lisRequest.Id); + foreach (var lisRequest in lisRequests) + { + await _lisRequestManager.SendThirdLisRequestAsync(lisRequest.Id); + } } - } - var lisRequestReportDtoList = query.Select(o => new LisRequestReportDto - { - LisRequestId = o.lisRequest.Id, - PatientNo = o.patient.PatientNo, - Age = o.patientRegister.Age, - AsbitemNames = string.IsNullOrEmpty(o.asbitem.ShortName) ? o.asbitem.DisplayName : o.asbitem.ShortName, - LisRequestNo = o.lisRequest.LisRequestNo, - PatientName = o.patientRegister.PatientName, - PatientRegisterNo = o.patientRegister.PatientRegisterNo, - SampleContainerName = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.DisplayName, - ContainerColor = (o.sampleContainerHaveEmpty == null) ? 16777215 : o.sampleContainerHaveEmpty.ContainerColor, - SampleContainerRemark = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.ContainerRemark, - SampleTypeName = (o.sampleTypeHaveEmpty == null) ? "" : o.sampleTypeHaveEmpty.DisplayName, - SexName = o.sex.DisplayName, - CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(o.patientRegister.CustomerOrgId).Result.DisplayName, - DepartmentName = _cacheService.GetCustomerOrgNameAsync(o.patientRegister.CustomerOrgId).Result, - IsPrint = o.lisRequest.IsPrint, - IsSignIn = o.lisRequest.IsSignIn, - SamplingTime = o.lisRequest.SamplingTime, - SignInOrder = o.lisRequest.SignInOrder, - SignInPerson = o.lisRequest.SignInPerson, - SignInTime = o.lisRequest.SignInTime, - }).ToList(); - - var entlist = lisRequestReportDtoList.GroupBy(g => new - { - g.PatientNo, - g.LisRequestId, - g.LisRequestNo, - g.Age, - g.PatientName, - g.PatientRegisterNo, - g.SampleContainerName, - g.ContainerColor, - g.SampleContainerRemark, - g.SampleTypeName, - g.SexName, - g.CustomerOrgName, - g.DepartmentName, - g.IsPrint, - g.IsSignIn, - g.SamplingTime, - g.SignInOrder, - g.SignInPerson, - g.SignInTime - }) - .Select(s => new LisRequestReportDto + var lisRequestReportDtoList = query.Select(o => new LisRequestReportDto { - PatientNo = s.Key.PatientNo, - LisRequestId = s.Key.LisRequestId, - SexName = s.Key.SexName, - SampleTypeName = s.Key.SampleTypeName, - SampleContainerRemark = s.Key.SampleContainerRemark, - SampleContainerName = s.Key.SampleContainerName, - ContainerColor = s.Key.ContainerColor, - PatientRegisterNo = s.Key.PatientRegisterNo, - PatientName = s.Key.PatientName, - Age = s.Key.Age, - LisRequestNo = s.Key.LisRequestNo, - CustomerOrgName = s.Key.CustomerOrgName, - DepartmentName = s.Key.DepartmentName, - AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)), - IsPrint = s.Key.IsPrint, - IsSignIn = s.Key.IsSignIn, - SamplingTime = s.Key.SamplingTime, - SignInOrder = s.Key.SignInOrder, - SignInPerson = s.Key.SignInPerson, - SignInTime = s.Key.SignInTime, + LisRequestId = o.lisRequest.Id, + PatientNo = o.patient.PatientNo, + Age = o.patientRegister.Age, + AsbitemNames = string.IsNullOrEmpty(o.asbitem.ShortName) ? o.asbitem.DisplayName : o.asbitem.ShortName, + LisRequestNo = o.lisRequest.LisRequestNo, + PatientName = o.patientRegister.PatientName, + PatientRegisterNo = o.patientRegister.PatientRegisterNo, + SampleContainerName = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.DisplayName, + ContainerColor = (o.sampleContainerHaveEmpty == null) ? 16777215 : o.sampleContainerHaveEmpty.ContainerColor, + SampleContainerRemark = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.ContainerRemark, + SampleTypeName = (o.sampleTypeHaveEmpty == null) ? "" : o.sampleTypeHaveEmpty.DisplayName, + SexName = o.sex.DisplayName, + CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(o.patientRegister.CustomerOrgId).Result.DisplayName, + DepartmentName = _cacheService.GetCustomerOrgNameAsync(o.patientRegister.CustomerOrgId).Result, + IsPrint = o.lisRequest.IsPrint, + IsSignIn = o.lisRequest.IsSignIn, + SamplingTime = o.lisRequest.SamplingTime, + SignInOrder = o.lisRequest.SignInOrder, + SignInPerson = o.lisRequest.SignInPerson, + SignInTime = o.lisRequest.SignInTime, }).ToList(); - return entlist; + var entlist = lisRequestReportDtoList.GroupBy(g => new + { + g.PatientNo, + g.LisRequestId, + g.LisRequestNo, + g.Age, + g.PatientName, + g.PatientRegisterNo, + g.SampleContainerName, + g.ContainerColor, + g.SampleContainerRemark, + g.SampleTypeName, + g.SexName, + g.CustomerOrgName, + g.DepartmentName, + g.IsPrint, + g.IsSignIn, + g.SamplingTime, + g.SignInOrder, + g.SignInPerson, + g.SignInTime + }) + .Select(s => new LisRequestReportDto + { + PatientNo = s.Key.PatientNo, + LisRequestId = s.Key.LisRequestId, + SexName = s.Key.SexName, + SampleTypeName = s.Key.SampleTypeName, + SampleContainerRemark = s.Key.SampleContainerRemark, + SampleContainerName = s.Key.SampleContainerName, + ContainerColor = s.Key.ContainerColor, + PatientRegisterNo = s.Key.PatientRegisterNo, + PatientName = s.Key.PatientName, + Age = s.Key.Age, + LisRequestNo = s.Key.LisRequestNo, + CustomerOrgName = s.Key.CustomerOrgName, + DepartmentName = s.Key.DepartmentName, + AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)), + IsPrint = s.Key.IsPrint, + IsSignIn = s.Key.IsSignIn, + SamplingTime = s.Key.SamplingTime, + SignInOrder = s.Key.SignInOrder, + SignInPerson = s.Key.SignInPerson, + SignInTime = s.Key.SignInTime, + }).ToList(); + + await uow.CompleteAsync(); + return entlist; + + + } + } [HttpPost("api/app/PrintReport/GetLisRequestReportByLisRequestId")] @@ -793,6 +801,7 @@ namespace Shentun.Peis.PrintReports AsbitemName = s.Asbitem.DisplayName, AsbitemGuide = _asbitemGuideManager.GetAsbitemGuideConvertSexId(medicalCenterId, s.AsbitemId, SexId), AsbitemDisplayOrder = s.Asbitem.DisplayOrder, + ItemTypeDisplayOrder = s.Asbitem.ItemType.DisplayOrder, GuideDisplayOrder = s.Asbitem.ItemType.GuidType.DisplayOrder, GuideName = s.Asbitem.ItemType.GuidType.DisplayName }) @@ -807,7 +816,7 @@ namespace Shentun.Peis.PrintReports { AsbitemName = ss.AsbitemName, AsbitemGuide = ss.AsbitemGuide, - DisplayOrder = ss.AsbitemDisplayOrder + DisplayOrder = (ss.ItemTypeDisplayOrder * 3000) + ss.AsbitemDisplayOrder }).OrderBy(o => o.DisplayOrder).ToList() }).OrderBy(o => o.DisplayOrder).ToList(); diff --git a/src/Shentun.Peis.Domain/PrintReports/PatientRegisterGuideReportDto.cs b/src/Shentun.Peis.Domain/PrintReports/PatientRegisterGuideReportDto.cs index 8722a04..e261c49 100644 --- a/src/Shentun.Peis.Domain/PrintReports/PatientRegisterGuideReportDto.cs +++ b/src/Shentun.Peis.Domain/PrintReports/PatientRegisterGuideReportDto.cs @@ -191,6 +191,8 @@ namespace Shentun.Peis.PrintReports public string AsbitemGuide { get; set; } public int AsbitemDisplayOrder { get; set; } + + public int ItemTypeDisplayOrder { get; set; } /// /// 指引名称 /// diff --git a/test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs b/test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs index 3d2f21b..696894c 100644 --- a/test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs +++ b/test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs @@ -34,7 +34,7 @@ namespace Shentun.Peis using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) { var items = await _appService.GetLisRequestReportByPatientRegisterIdAsync(new PatientRegisterIdInputDto() - { PatientRegisterId = new Guid("3a12707e-bc54-129e-64d0-8cf5556a023c") }); + { PatientRegisterId = new Guid("3a127094-8fcf-78cc-3397-dedd7decb7b4") }); _output.WriteLine(items.Count().ToString()); foreach (var item in items) {