From 4fc26e4122e42bb333b6d291ec3991f0857a8052 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Wed, 24 Jul 2024 17:05:12 +0800 Subject: [PATCH] =?UTF-8?q?lis=E5=AF=B9=E6=8E=A5=EF=BC=8C=E6=9D=A1?= =?UTF-8?q?=E7=A0=81=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Rooms/RoomDto.cs | 8 + .../ImportLisResultAppService.cs | 182 +++++++++++++++++- .../LisRequests/LisRequestAppService.cs | 128 ++++++++---- .../PatientRegisterAppService.cs | 15 +- .../PrintReports/PrintReportAppService.cs | 60 +++++- .../QueueRegisters/QueueRegisterAppService.cs | 34 +++- .../Rooms/RoomAppService.cs | 31 +-- src/Shentun.Peis.Domain/Rooms/RoomManager.cs | 4 +- .../SampleGroupDetailManager.cs | 4 +- 9 files changed, 385 insertions(+), 81 deletions(-) diff --git a/src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs b/src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs index 1a199622..18f3006b 100644 --- a/src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs +++ b/src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; using System.Text; namespace Shentun.Peis.Rooms @@ -7,6 +9,12 @@ namespace Shentun.Peis.Rooms public class RoomDto : AuditedEntityDtoName { public string DisplayName { get; set; } = null!; + + /// + /// 房间号 + /// + public string RoomNo { get; set; } + /// /// 项目类别编号 /// diff --git a/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs b/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs index 9cbb4801..dde91107 100644 --- a/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs +++ b/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs @@ -14,6 +14,7 @@ using Shentun.Peis.PlugIns.ImportLisResults; using Shentun.Peis.ReferenceRanges; using Shentun.Peis.RegisterCheckItems; using Shentun.Peis.RegisterChecks; +using Shentun.Peis.SysParmValues; using Shentun.Peis.Units; using SqlSugar; using System; @@ -29,6 +30,7 @@ using Volo.Abp.Domain.Repositories; using Volo.Abp.Guids; using Volo.Abp.Identity; using Volo.Abp.Users; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace Shentun.Peis.ImportLisResults { @@ -66,6 +68,7 @@ namespace Shentun.Peis.ImportLisResults private static bool _isRunning = false; private static readonly object lockObject = new object(); private readonly ColumnReferenceCodeManager _columnReferenceCodeManager; + private readonly SysParmValueManager _sysParmValueManager; public ImportLisResultAppService(IRepository registerCheckRepository, IRepository registerCheckItemRepository, IRepository patientRegisterRepository, @@ -91,7 +94,8 @@ namespace Shentun.Peis.ImportLisResults UnitManager unitManager, RegisterCheckAppService registerCheckAppService, IRepository thirdInterfaceRepository, - ColumnReferenceCodeManager columnReferenceCodeManager) + ColumnReferenceCodeManager columnReferenceCodeManager, + SysParmValueManager sysParmValueManager) { _registerCheckRepository = registerCheckRepository; _userRepository = userRepository; @@ -120,6 +124,7 @@ namespace Shentun.Peis.ImportLisResults _registerCheckAppService = registerCheckAppService; _thirdInterfaceRepository = thirdInterfaceRepository; _columnReferenceCodeManager = columnReferenceCodeManager; + _sysParmValueManager = sysParmValueManager; } /// /// 从第三方接口导入结果 @@ -485,13 +490,184 @@ namespace Shentun.Peis.ImportLisResults LisAuditorDoctorName = item.LisAuditorDoctorName, LisSampleNo = item.LisSampleNo }; - inputDtoList.Add(inputDto); + } + + var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode"); + if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode)) + lisRequestNoPrintMode = "0"; + + if (lisRequestNoPrintMode == "0") + await ImportResultAsync(inputDtoList); + else + await ImportResultByPatientRegisterNoAsync(inputDtoList); + } + + /// + /// 从第三方接口导入结果 + /// + /// + /// + /// + private async Task ImportResultByPatientRegisterNoAsync(List input) + { + //设置结果 + + var list = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join registerCheck in await _registerCheckRepository.GetQueryableAsync() + on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckItem.RegisterCheckId + join item in await _itemRepository.GetQueryableAsync() + on registerCheckItem.ItemId equals item.Id + join lisRequest in await _lisRequestRepository.GetQueryableAsync() + on registerCheckAsbitem.LisRequestId equals lisRequest.Id + where input.Select(o => o.LisRequestNo).FirstOrDefault() == patientRegister.PatientRegisterNo + select new + { + patientRegister, + registerCheck, + registerCheckAsbitem, + registerCheckItem, + item, + lisRequest, + }).ToList(); + + + var registerChecks = new List(); + _referenceRanges = _referenceRangeRepository.GetListAsync().Result; + + input = input.Where(o => !string.IsNullOrWhiteSpace(o.Result) + && !string.IsNullOrWhiteSpace(o.LisRequestNo) + && o.ItemId != Guid.Empty).ToList(); + + foreach (var inputItem in input) + { + if (string.IsNullOrWhiteSpace(inputItem.CheckDoctorName)) + { + throw new UserFriendlyException("检查医生不能为空"); + } + var lisRequestItems = list.Where(o => o.patientRegister.PatientRegisterNo == inputItem.LisRequestNo + && o.registerCheckItem.ItemId == inputItem.ItemId).ToList(); + foreach (var lisRequestItem in lisRequestItems) + { + if (lisRequestItem == null) + { + continue; + } + lisRequestItem.registerCheckItem.Result = inputItem.Result; + //var itemSource = new RegisterCheckItem() + //{ + // Result = inputItem.Result, + // ReferenceRangeValue = inputItem.ReferenceRangeValue, + // Unit = inputItem.Unit, + // CriticalRangeValue = inputItem.CriticalRangeValue + //}; + //修改参考范围 + await UpdateItemReferenceRangeValueAsync(inputItem.ItemId, lisRequestItem.patientRegister.SexId, + lisRequestItem.patientRegister.Age, inputItem.ReferenceRangeValue); + //修改单位 + await UpdateItemUnitAsync(inputItem.ItemId, inputItem.Unit); + + //await _registerCheckItemManager.UpdateRegisterCheckItemAsync(itemSource, lisRequestItem.registerCheckItem); + //await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem,true); + if (!registerChecks.Where(o => o.Id == lisRequestItem.registerCheck.Id).ToList().Any()) + { + lisRequestItem.registerCheck.CheckDoctorId = inputItem.CheckDoctorName; + lisRequestItem.registerCheck.CheckDate = inputItem.CheckDate; + lisRequestItem.registerCheck.ExecOrganizationUnitId = inputItem.ExecOrganizationUnitId; + lisRequestItem.registerCheck.LisAuditorDoctorName = inputItem.LisAuditorDoctorName; + lisRequestItem.registerCheck.LisSampleNo = inputItem.LisSampleNo; + registerChecks.Add(lisRequestItem.registerCheck); + } + } + } + List updateRegisterCheckAsbitem = new List(); + + //更新参考范围和单位 + foreach (var registerCheck in registerChecks) + { + var lisRequestItems = list.Where(o => o.registerCheck.Id == registerCheck.Id).ToList(); + foreach (var lisRequestItem in lisRequestItems) + { + var referenceRange = _referenceRangeManager.GetReferenceRangeBySexAgeTemp(_referenceRanges, + lisRequestItem.item, lisRequestItem.patientRegister.SexId, lisRequestItem.patientRegister.Age); + if (referenceRange != null) + { + lisRequestItem.registerCheckItem.ReferenceRangeValue = referenceRange.ReferenceRangeValue; + lisRequestItem.registerCheckItem.CriticalRangeValue = referenceRange.CriticalRangeValue; + } + else + { + lisRequestItem.registerCheckItem.ReferenceRangeValue = ""; + lisRequestItem.registerCheckItem.CriticalRangeValue = ""; + } + var unit = _units.Where(o => o.Id == lisRequestItem.item.UnitId).FirstOrDefault(); + if (unit != null) + { + lisRequestItem.registerCheckItem.Unit = unit.DisplayName; + } + else + { + lisRequestItem.registerCheckItem.Unit = ""; + } + await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem); + } + + } + await CurrentUnitOfWork.SaveChangesAsync(); + //保存结果 + + foreach (var registerCheck in registerChecks) + { + var updateCheckResultDto = new UpdateCheckResultDto() + { + RegisterCheckId = registerCheck.Id, + CheckDoctorId = registerCheck.CheckDoctorId, + CheckDate = registerCheck.CheckDate, + ExecOrganizationUnitId = registerCheck.ExecOrganizationUnitId, + RegisterCheckItems = list.Where(o => o.registerCheck.Id == registerCheck.Id) + .Select(o => new UpdateRegisterCheckItemDetail() + { + ItemId = o.registerCheckItem.ItemId, + Result = o.registerCheckItem.Result, + + }).ToList(), + LisSampleNo = registerCheck.LisSampleNo, + LisAuditorDoctorName = registerCheck.LisAuditorDoctorName + + }; + + var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto() + { + RegisterCheckId = registerCheck.Id, + Items = list.Where(o => o.registerCheck.Id == registerCheck.Id) + .Select(o => new GetDiagnosisResultRequest_Item() + { + ItemId = o.registerCheckItem.ItemId, + Result = o.registerCheckItem.Result, + }).ToList() + }; + //生成小结 + var summarry = await _diagnosisFunctionAppService.GetDoctorCheckDiagnosisResultAsync(getDiagnosisResultRequestDto); + + for (var i = 0; i < summarry.DiagnosisResultDetails.Count; i++) + { + updateCheckResultDto.Summarys.Add(new UpdateRegisterCheckSummaryDetail() + { + Summary = summarry.DiagnosisResultDetails[i].DiagnosisResult, + SummaryFlag = '0' + }); + } + + await _registerCheckAppService.UpdateCheckResult(updateCheckResultDto); + } - await ImportResultAsync(inputDtoList); } } } diff --git a/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs b/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs index f1fa17e7..a88c6a88 100644 --- a/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs +++ b/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs @@ -2,11 +2,13 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Org.BouncyCastle.Asn1.Ocsp; using Shentun.Peis.CustomerOrgs; using Shentun.Peis.Enums; using Shentun.Peis.Models; using Shentun.Peis.PatientRegisters; using Shentun.Peis.PrintReports; +using Shentun.Peis.SysParmValues; using System; using System.Collections.Generic; using System.Linq; @@ -46,6 +48,7 @@ namespace Shentun.Peis.LisRequests private readonly IRepository _sampleContainerRepository; private readonly IRepository _sampleTypeRepository; private readonly IRepository _lisRequestRepository; + private readonly SysParmValueManager _sysParmValueManager; public LisRequestAppService( IRepository userRepository, IRepository patientRegisterRepository, @@ -64,7 +67,8 @@ namespace Shentun.Peis.LisRequests IRepository sampleGroupDetailRepository, IRepository itemTypeRepository , - IRepository lisRequestRepository) + IRepository lisRequestRepository, + SysParmValueManager sysParmValueManager) { this._userRepository = userRepository; this._patientRegisterRepository = patientRegisterRepository; @@ -83,6 +87,7 @@ namespace Shentun.Peis.LisRequests _sampleGroupDetailRepository = sampleGroupDetailRepository; _itemTypeRepository = itemTypeRepository; _lisRequestRepository = lisRequestRepository; + _sysParmValueManager = sysParmValueManager; } [HttpPost("api/app/LisRequest/GetListInFilter")] @@ -612,48 +617,101 @@ namespace Shentun.Peis.LisRequests if (input == null) throw new UserFriendlyException("请求参数无效"); - var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync() - join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId - join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id - join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id - join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id - join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id - where lisRequest.LisRequestNo == input.LisRequestNo - select new - { - lisRequest, - registerCheckAsbitem, - asbitem, - registerCheck, - patientRegister, - patient - }).ToList(); - - if (query.Count == 0) + var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode"); + if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode)) + lisRequestNoPrintMode = "0"; + + + if (lisRequestNoPrintMode == "0") { - throw new UserFriendlyException("检验单号不存在"); - } - var patientRegisterGroup = query.GroupBy(g => g.patientRegister); + var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync() + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId + join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id + join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id + join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id + join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id + where lisRequest.LisRequestNo == input.LisRequestNo + select new + { + lisRequest, + registerCheckAsbitem, + asbitem, + registerCheck, + patientRegister, + patient + }).ToList(); + + if (query.Count == 0) + { + throw new UserFriendlyException("检验单号不存在"); + } + + var patientRegisterGroup = query.GroupBy(g => g.patientRegister); + + var resultDto = new LisPatientRegisterDto + { + Age = patientRegisterGroup.FirstOrDefault().Key.Age, + LisRequestNo = input.LisRequestNo, + PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, + SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, + SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, + AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto + { + AsbitemId = ss.registerCheckAsbitem.AsbitemId, + AsbitemName = ss.asbitem.DisplayName, + AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount + }).ToList() + }; - var resultDto = new LisPatientRegisterDto + return resultDto; + } + else { - Age = patientRegisterGroup.FirstOrDefault().Key.Age, - LisRequestNo = input.LisRequestNo, - PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, - SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, - SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, - AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto + //人员条码模式 + var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id + join registerCheck in await _registerCheckRepository.GetQueryableAsync() + on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id + join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id + where patientRegister.PatientRegisterNo == input.LisRequestNo + select new + { + registerCheckAsbitem, + asbitem, + registerCheck, + patientRegister, + patient, + lisRequest + }).ToList(); + + if (query.Count == 0) { - AsbitemId = ss.registerCheckAsbitem.AsbitemId, - AsbitemName = ss.asbitem.DisplayName, - AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount - }).ToList() - }; + throw new UserFriendlyException("人员条码号不存在"); + } + var patientRegisterGroup = query.GroupBy(g => g.patientRegister); + var resultDto = new LisPatientRegisterDto + { + Age = patientRegisterGroup.FirstOrDefault().Key.Age, + LisRequestNo = input.LisRequestNo, + PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, + SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, + SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, + AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto + { + AsbitemId = ss.registerCheckAsbitem.AsbitemId, + AsbitemName = ss.asbitem.DisplayName, + AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount + }).ToList() + }; - return resultDto; + return resultDto; + } } } } diff --git a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs index b79d9a85..b03e9bf4 100644 --- a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs +++ b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs @@ -454,15 +454,11 @@ namespace Shentun.Peis.PatientRegisters [HttpPost("api/app/patientregister/getlistinfilter")] public async Task> GetListInFilterAsync(GetListInSearchDto input) { - - //var userList = await _userRepository.GetListAsync(); var customerOrgList = await _customerOrgRepository.GetListAsync(); - //Stopwatch stopwatch = Stopwatch.StartNew(); - //stopwatch.Start(); - + Stopwatch stopwatch = Stopwatch.StartNew(); + #region MyRegion - //var entlist = (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable(); var entlist = from patientRegister in (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable() join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync() on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp @@ -536,11 +532,18 @@ namespace Shentun.Peis.PatientRegisters } #endregion + stopwatch.Stop(); + + _logger.LogInformation($"stopwatch耗时:{stopwatch.ElapsedMilliseconds}"); + + Stopwatch stopwatch2 = Stopwatch.StartNew(); int totalCount = entlist.Count(); entlist = entlist.OrderByDescending(o => o.patientRegister.CompleteFlag).ThenBy(o => o.patientRegister.Id).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount); + stopwatch2.Stop(); + _logger.LogInformation($"stopwatch2耗时:{stopwatch.ElapsedMilliseconds}"); var entdto = entlist.Select(s => new PatientRegisterOrNoDto { diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs index 5826aec0..9a04accb 100644 --- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs +++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs @@ -29,6 +29,7 @@ using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; using Volo.Abp.ObjectMapping; using Volo.Abp.Uow; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace Shentun.Peis.PrintReports { @@ -314,7 +315,8 @@ namespace Shentun.Peis.PrintReports from sampleTypeHaveEmpty in ee.DefaultIfEmpty() join sampleGroupDetail in await _sampleGroupDetailRepository.GetQueryableAsync() on asbitem.Id equals sampleGroupDetail.AsbitemId into sampleGroupDetailTemp from sampleTypeHaveEmptyHaveEmpty in sampleGroupDetailTemp.DefaultIfEmpty() - join sampleGroup in await _sampleGroupRepository.GetQueryableAsync() on sampleTypeHaveEmptyHaveEmpty.SampleGroupId equals sampleGroup.Id into sampleGroupTemp + join sampleGroup in await _sampleGroupRepository.GetQueryableAsync() + on sampleTypeHaveEmptyHaveEmpty.SampleGroupId equals sampleGroup.Id into sampleGroupTemp from sampleGroupHaveEmpty in sampleGroupTemp.DefaultIfEmpty() where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null) select new @@ -368,6 +370,43 @@ namespace Shentun.Peis.PrintReports SamplePrintCount = o.samplePrintCount }).ToList(); + + var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(query.FirstOrDefault().patientRegister.MedicalCenterId, "lis_request_no_print_mode"); + if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode)) + lisRequestNoPrintMode = "0"; + + //var entlist = lisRequestReportDtoList.GroupBy(g => new + //{ + // g.LisRequestNo, + // g.SampleGroupName + //}) + // .Select(s => new LisRequestReportDto + // { + // PatientNo = s.FirstOrDefault().PatientNo, + // LisRequestId = s.FirstOrDefault().LisRequestId, + // SexName = s.FirstOrDefault().SexName, + // SampleTypeName = s.FirstOrDefault().SampleTypeName, + // SampleContainerRemark = s.FirstOrDefault().SampleContainerRemark, + // SampleContainerName = s.FirstOrDefault().SampleContainerName, + // ContainerColor = s.FirstOrDefault().ContainerColor, + // PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo, + // PatientName = s.FirstOrDefault().PatientName, + // Age = s.FirstOrDefault().Age, + // LisRequestNo = lisRequestNoPrintMode == "0" ? s.Key.LisRequestNo : s.FirstOrDefault().PatientRegisterNo, + // CustomerOrgName = s.FirstOrDefault().CustomerOrgName, + // DepartmentName = s.FirstOrDefault().DepartmentName, + // AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)), + // IsPrint = s.FirstOrDefault().IsPrint, + // IsSignIn = s.FirstOrDefault().IsSignIn, + // SamplingTime = s.FirstOrDefault().SamplingTime, + // SignInOrder = s.FirstOrDefault().SignInOrder, + // SignInPerson = s.FirstOrDefault().SignInPerson, + // SignInTime = s.FirstOrDefault().SignInTime, + // SampleGroupName = s.Key.SampleGroupName, + // MobileTelephone = s.FirstOrDefault().MobileTelephone, + // SamplePrintCount = s.FirstOrDefault().SamplePrintCount + // }).ToList(); + var entlist = lisRequestReportDtoList.GroupBy(g => new { g.PatientNo, @@ -389,7 +428,8 @@ namespace Shentun.Peis.PrintReports g.SignInOrder, g.SignInPerson, g.SignInTime, - g.MobileTelephone + g.MobileTelephone, + g.SampleGroupName }) .Select(s => new LisRequestReportDto { @@ -403,7 +443,7 @@ namespace Shentun.Peis.PrintReports PatientRegisterNo = s.Key.PatientRegisterNo, PatientName = s.Key.PatientName, Age = s.Key.Age, - LisRequestNo = s.Key.LisRequestNo, + LisRequestNo = lisRequestNoPrintMode == "0" ? s.Key.LisRequestNo : s.Key.PatientRegisterNo, CustomerOrgName = s.Key.CustomerOrgName, DepartmentName = s.Key.DepartmentName, AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)), @@ -413,7 +453,7 @@ namespace Shentun.Peis.PrintReports SignInOrder = s.Key.SignInOrder, SignInPerson = s.Key.SignInPerson, SignInTime = s.Key.SignInTime, - SampleGroupName = s.FirstOrDefault().SampleGroupName, + SampleGroupName = s.Key.SampleGroupName, MobileTelephone = s.Key.MobileTelephone, SamplePrintCount = s.FirstOrDefault().SamplePrintCount }).ToList(); @@ -434,6 +474,10 @@ namespace Shentun.Peis.PrintReports [HttpPost("api/app/PrintReport/GetLisRequestReportByLisRequestId")] public async Task GetLisRequestReportByLisRequestIdAsync(LisRequestIdInputDto input) { + var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode"); + if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode)) + lisRequestNoPrintMode = "0"; + var list = (from patient in await _patientRepository.GetQueryableAsync() join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on patient.Id equals patientRegister.PatientId @@ -477,7 +521,7 @@ namespace Shentun.Peis.PrintReports { LisRequestId = input.LisRequestId, - LisRequestNo = lisRequestInfo.lisRequest.LisRequestNo, + LisRequestNo = lisRequestNoPrintMode == "0" ? lisRequestInfo.lisRequest.LisRequestNo : lisRequestInfo.patientRegister.PatientRegisterNo, PatientNo = lisRequestInfo.patient.PatientNo, PatientRegisterNo = lisRequestInfo.patientRegister.PatientRegisterNo, PatientName = lisRequestInfo.patientRegister.PatientName, @@ -768,8 +812,8 @@ namespace Shentun.Peis.PrintReports PatientName = s.FirstOrDefault().PatientName, PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo, SexName = s.FirstOrDefault().SexName, - CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().CustomerOrgId).Result.DisplayName, - DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().CustomerOrgId).Result, + CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().CustomerOrgId).Result.ShortName, + DepartmentName = _cacheService.GetCustomerOrgAsync(s.FirstOrDefault().CustomerOrgId).Result.ShortName, MobileTelephone = s.FirstOrDefault().MobileTelephone }); } @@ -1159,7 +1203,7 @@ namespace Shentun.Peis.PrintReports } //lis审核医生+标本号 - medicalReportRegisterCheckDto.LisSampleNo= registerCheckRow.registerCheck.LisSampleNo; + medicalReportRegisterCheckDto.LisSampleNo = registerCheckRow.registerCheck.LisSampleNo; medicalReportRegisterCheckDto.LisAuditorDoctorName = registerCheckRow.registerCheck.LisAuditorDoctorName; //显示顺序 diff --git a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs index 9c1758a1..ae3ff0af 100644 --- a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs +++ b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs @@ -1,6 +1,8 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using NPOI.SS.Formula.Functions; using Shentun.Peis.Asbitems; using Shentun.Peis.Enums; using Shentun.Peis.Models; @@ -9,6 +11,7 @@ using Shentun.Peis.Patients; using Shentun.Peis.Rooms; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -36,6 +39,7 @@ namespace Shentun.Peis.QueueRegisters private readonly IRepository _roomDetailRepository; private readonly CacheService _cacheService; private readonly QueueRegisterManager _queueRegisterManager; + private readonly ILogger _logger; public QueueRegisterAppService( IRepository queueRegisterRepository, IRepository itemTypeRepository, @@ -46,7 +50,8 @@ namespace Shentun.Peis.QueueRegisters IRepository asbitemRepository, IRepository roomDetailRepository, CacheService cacheService, - QueueRegisterManager queueRegisterManager) + QueueRegisterManager queueRegisterManager, + ILogger logger) { _queueRegisterRepository = queueRegisterRepository; _itemTypeRepository = itemTypeRepository; @@ -58,6 +63,7 @@ namespace Shentun.Peis.QueueRegisters _roomDetailRepository = roomDetailRepository; _cacheService = cacheService; _queueRegisterManager = queueRegisterManager; + _logger = logger; } /// @@ -325,6 +331,8 @@ namespace Shentun.Peis.QueueRegisters public async Task GetQueueRegisterListByRoomIdAsync(QueueRegisterListByRoomIdInputDto input) { var entDto = new GetQueueRegisterListByRoomIdDto(); + + var query = from queueRegister in await _queueRegisterRepository.GetQueryableAsync() join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on queueRegister.PatientRegisterId equals patientRegister.Id @@ -346,24 +354,29 @@ namespace Shentun.Peis.QueueRegisters if (input.ItemTypeIds.Any()) { - //筛选项目类别 + var patientRegisterIds = query.Select(s => s.patientRegisterId).ToList(); + + //筛选项目类别 //项目类别下登记的所有组合项目 var asbitemIds = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() - join registerCheck in await _registerCheckRepository.GetQueryableAsync() - on patientRegister.Id equals registerCheck.PatientRegisterId - join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() - on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId - join asbitem in await _asbitemRepository.GetQueryableAsync() - on registerCheckAsbitem.AsbitemId equals asbitem.Id - where input.ItemTypeIds.Contains(asbitem.ItemTypeId) - select registerCheckAsbitem.AsbitemId).ToList(); + join registerCheck in await _registerCheckRepository.GetQueryableAsync() + on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + join asbitem in await _asbitemRepository.GetQueryableAsync() + on registerCheckAsbitem.AsbitemId equals asbitem.Id + where patientRegisterIds.Contains(patientRegister.Id) && input.ItemTypeIds.Contains(asbitem.ItemTypeId) + group registerCheckAsbitem by registerCheckAsbitem.AsbitemId into cc + select cc.Key).ToList(); + query = query.Where(m => asbitemIds.Contains(m.asbitemId)); } + var roomGroup = query.ToList().GroupBy(g => g.queueRegisterId).Select(s => new { completeFlag = s.FirstOrDefault().completeFlag, @@ -373,6 +386,7 @@ namespace Shentun.Peis.QueueRegisters queueRegisterNumber = s.FirstOrDefault().queueRegisterNumber, }).ToList(); + entDto.WaitDetail = roomGroup.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait) .Select(s => new GetQueueRegisterListByRoomIdDetailDto { diff --git a/src/Shentun.Peis.Application/Rooms/RoomAppService.cs b/src/Shentun.Peis.Application/Rooms/RoomAppService.cs index 9d76e62d..ec7a2e3b 100644 --- a/src/Shentun.Peis.Application/Rooms/RoomAppService.cs +++ b/src/Shentun.Peis.Application/Rooms/RoomAppService.cs @@ -42,8 +42,8 @@ namespace Shentun.Peis.Rooms _cacheService = cacheService; } - - /// + + /// /// 根据ID查询信息 /// /// @@ -53,7 +53,7 @@ namespace Shentun.Peis.Rooms { var entity = await _roomRepository.GetAsync(input.RoomId); var entDto = ObjectMapper.Map(entity); - entDto.CreatorName=await _cacheService.GetSurnameAsync(entDto.CreatorId); + entDto.CreatorName = await _cacheService.GetSurnameAsync(entDto.CreatorId); entDto.LastModifierName = await _cacheService.GetSurnameAsync(entDto.LastModifierId); return entDto; } @@ -66,7 +66,7 @@ namespace Shentun.Peis.Rooms [HttpPost("api/app/Room/GetList")] public async Task> GetListAsync() { - var entListDto = (await _roomRepository.GetQueryableAsync()).OrderBy(o=>o.DisplayOrder).Select(s => new RoomDto + var entListDto = (await _roomRepository.GetQueryableAsync()).OrderBy(o => o.DisplayOrder).Select(s => new RoomDto { CreationTime = s.CreationTime, CreatorId = s.CreatorId, @@ -80,6 +80,7 @@ namespace Shentun.Peis.Rooms MedicalCenterId = s.MedicalCenterId, QueueTime = s.QueueTime, RoomTypeFlag = s.RoomTypeFlag, + RoomNo = s.RoomNo, LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result, CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result }).ToList(); @@ -176,17 +177,17 @@ namespace Shentun.Peis.Rooms public async Task> GetAsbitemListByRoomIdAsync(RoomIdInputDto input) { var entListDto = (from roomDetail in await _roomDetailRepository.GetQueryableAsync() - join asbitem in await _asbitemRepository.GetQueryableAsync() on roomDetail.AsbitemId equals asbitem.Id - join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id - where roomDetail.RoomId == input.RoomId - orderby asbitem.DisplayOrder ascending - select new AsbitemListByRoomIdDto - { - AsbitemId = roomDetail.AsbitemId, - AsbitemName = asbitem.DisplayName, - RoomId = roomDetail.RoomId, - RoomName = room.DisplayName - }).ToList(); + join asbitem in await _asbitemRepository.GetQueryableAsync() on roomDetail.AsbitemId equals asbitem.Id + join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id + where roomDetail.RoomId == input.RoomId + orderby asbitem.DisplayOrder ascending + select new AsbitemListByRoomIdDto + { + AsbitemId = roomDetail.AsbitemId, + AsbitemName = asbitem.DisplayName, + RoomId = roomDetail.RoomId, + RoomName = room.DisplayName + }).ToList(); return entListDto; } diff --git a/src/Shentun.Peis.Domain/Rooms/RoomManager.cs b/src/Shentun.Peis.Domain/Rooms/RoomManager.cs index fca9dcd1..c7ebe574 100644 --- a/src/Shentun.Peis.Domain/Rooms/RoomManager.cs +++ b/src/Shentun.Peis.Domain/Rooms/RoomManager.cs @@ -45,7 +45,7 @@ namespace Shentun.Peis.Rooms IsActive = entity.IsActive, ItemTypeId = entity.ItemTypeId, QueueTime = entity.QueueTime, - RoomNo = entity.RoomNo, + RoomNo = GenerateRoomNo().Result, MedicalCenterId = entity.MedicalCenterId, RoomTypeFlag = entity.RoomTypeFlag }; @@ -165,7 +165,7 @@ namespace Shentun.Peis.Rooms /// 生成房间号 /// /// - private async string GenerateRoomNo() + private async Task GenerateRoomNo() { string roonNo = "001"; var maxRoomEnt = (await _roomRepository.GetQueryableAsync()).OrderByDescending(o => o.RoomNo).FirstOrDefault(); diff --git a/src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs b/src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs index 5af6b2c8..66ec8893 100644 --- a/src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs +++ b/src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs @@ -50,7 +50,7 @@ namespace Shentun.Peis.SampleGroupDetails { //删除条码分组明细 批量删 - await _repository.DeleteManyAsync(sampleGroupDetailList); + await _repository.DeleteManyAsync(sampleGroupDetailList, true); } @@ -98,7 +98,7 @@ namespace Shentun.Peis.SampleGroupDetails await _repository.DeleteManyAsync(medicalPackageDetailList); } - + } } }