From b11a656228c79912bba20f925e0ecb7b447e6a2c Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Tue, 23 Jul 2024 11:25:55 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8F=AB=E5=8F=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../GetScreenQueueRegisterListByRoomIdDto.cs | 49 +++++++++++++++
.../QueueRegisters/QueueRegisterAppService.cs | 62 +++++++++++++++++++
.../LisRequests/LisRequestManager.cs | 3 +
.../QueueRegisters/QueueRegisterManager.cs | 33 +++++-----
4 files changed, 133 insertions(+), 14 deletions(-)
create mode 100644 src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs
diff --git a/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs b/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs
new file mode 100644
index 0000000..eb34ef8
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.QueueRegisters
+{
+ public class GetScreenQueueRegisterListByRoomIdDto
+ {
+
+ ///
+ /// 当前就诊人姓名
+ ///
+ public string VisitName { get; set; }
+
+ ///
+ /// 当前就诊人号码
+ ///
+ public int VisitNumber { get; set; }
+
+ ///
+ /// 候诊列表
+ ///
+ public List WaitDetail { get; set; } = new List();
+
+
+ ///
+ /// 过号列表
+ ///
+ public List OverNumberDetail { get; set; } = new List();
+ }
+
+
+
+
+
+ public class GetScreenQueueRegisterListByRoomIdDetailDto
+ {
+ ///
+ /// 姓名
+ ///
+ public string PatientName { get; set; }
+
+ ///
+ /// 排队号码
+ ///
+ public int QueueRegisterNumber { get; set; }
+
+ }
+}
diff --git a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
index 3edafcc..c236ede 100644
--- a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
+++ b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
@@ -178,6 +178,16 @@ namespace Shentun.Peis.QueueRegisters
public async Task> GetYesTriageAsbitemListAsync(PatientRegisterIdInputDto input)
{
+
+ 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
+ where patientRegister.Id == input.PatientRegisterId
+ select registerCheckAsbitem.AsbitemId).ToList();
+
+ if (!asbitemIds.Any())
+ throw new UserFriendlyException("该人员未登记项目");
+
var entListDto = (from queueRegister in await _queueRegisterRepository.GetQueryableAsync()
join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id
join roomDetail in await _roomDetailRepository.GetQueryableAsync() on room.Id equals roomDetail.RoomId
@@ -185,6 +195,7 @@ namespace Shentun.Peis.QueueRegisters
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp
from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
where queueRegister.PatientRegisterId == input.PatientRegisterId
+ && asbitemIds.Contains(roomDetail.AsbitemId)
orderby queueRegister.CreationTime descending
select new YesTriageAsbitemListDto
{
@@ -318,6 +329,7 @@ namespace Shentun.Peis.QueueRegisters
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on queueRegister.PatientRegisterId equals patientRegister.Id
where queueRegister.CreationTime >= DateTime.Now.Date
+ && queueRegister.RoomId == input.RoomId
select new
{
completeFlag = queueRegister.CompleteFlag,
@@ -356,5 +368,55 @@ namespace Shentun.Peis.QueueRegisters
return entDto;
}
+
+
+ ///
+ /// 获取叫号屏人员数据
+ ///
+ ///
+ ///
+ [HttpPost("api/app/QueueRegister/GetScreenQueueRegisterListByRoomId")]
+ public async Task GetScreenQueueRegisterListByRoomIdAsync(RoomIdInputDto input)
+ {
+ var entDto = new GetScreenQueueRegisterListByRoomIdDto();
+ var query = from queueRegister in await _queueRegisterRepository.GetQueryableAsync()
+ join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
+ on queueRegister.PatientRegisterId equals patientRegister.Id
+ where queueRegister.CreationTime >= DateTime.Now.Date
+ && queueRegister.RoomId == input.RoomId
+ select new
+ {
+ completeFlag = queueRegister.CompleteFlag,
+ patientName = patientRegister.PatientName,
+ isVip = patientRegister.IsVip,
+ queueRegisterId = queueRegister.Id,
+ queueRegisterNumber = queueRegister.DisplayOrder
+ };
+
+
+ var visitEnt = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.AlreadyCalled).OrderByDescending(o => o.queueRegisterNumber).FirstOrDefault();
+
+ if (visitEnt != null)
+ {
+ entDto.VisitNumber = visitEnt.queueRegisterNumber;
+ entDto.VisitName = visitEnt.patientName;
+ }
+
+ entDto.WaitDetail = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait)
+ .Select(s => new GetScreenQueueRegisterListByRoomIdDetailDto
+ {
+ PatientName = s.patientName,
+ QueueRegisterNumber = s.queueRegisterNumber
+ }).ToList();
+
+ entDto.OverNumberDetail = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.OverNumber)
+ .Select(s => new GetScreenQueueRegisterListByRoomIdDetailDto
+ {
+ PatientName = s.patientName,
+ QueueRegisterNumber = s.queueRegisterNumber
+ }).ToList();
+
+ return entDto;
+ }
}
}
diff --git a/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs b/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs
index 142b3f6..bdd1905 100644
--- a/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs
+++ b/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs
@@ -118,8 +118,10 @@ namespace Shentun.Peis.LisRequests
out List updateRegisterCheckAsbitems,
out List createLisRequests)
{
+ //条码分组内存在的对应项目
var registerCheckAsbitemLisList = new List();
updateRegisterCheckAsbitems = new List();
+ //根据登记的项目按条码分组明细筛选
foreach (var registerCheckAsbitem in registerCheckAsbitems)
{
var sampleGroupDetail = sampleGroupDetails.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).FirstOrDefault();
@@ -142,6 +144,7 @@ namespace Shentun.Peis.LisRequests
{
continue;
}
+ //查找所属的条码分组是否生成过lis申请号,有就延用
var haveRegisterCheckAsbitemLis = registerCheckAsbitemLisList.Where(o => o.SampleGroupId == registerCheckAsbitemLis.SampleGroupId
&& o.LisRequestId != null && o.LisRequestId != Guid.Empty).FirstOrDefault();
if (haveRegisterCheckAsbitemLis != null)
diff --git a/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs b/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs
index 48f0563..bcb8910 100644
--- a/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs
+++ b/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs
@@ -91,9 +91,10 @@ namespace Shentun.Peis.QueueRegisters
//获取项目所属房间需要等待的时间
var query = (from roomDetail in await _roomDetailRepository.GetQueryableAsync()
join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id
- join queueRegister in await _queueRegisterRepository.GetQueryableAsync() on room.Id equals queueRegister.RoomId into queueRegisterTemp
+ join queueRegister in (await _queueRegisterRepository.GetQueryableAsync()).Where(m => m.CreationTime >= DateTime.Now.Date).AsQueryable()
+ on room.Id equals queueRegister.RoomId into queueRegisterTemp
from queueRegisterHaveEmpty in queueRegisterTemp.DefaultIfEmpty()
- where queueRegisterHaveEmpty.CreationTime >= DateTime.Now.Date && asbitemIds.Contains(roomDetail.AsbitemId)
+ where asbitemIds.Contains(roomDetail.AsbitemId)
select new
{
roomId = room.Id,
@@ -115,19 +116,23 @@ namespace Shentun.Peis.QueueRegisters
}
else
{
- //无排队信息
- var roomId = (from roomDetail in await _roomDetailRepository.GetQueryableAsync()
- join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id
- where asbitemIds.Contains(roomDetail.AsbitemId)
- orderby room.QueueTime, room.DisplayOrder ascending
- select room.Id).FirstOrDefault();
- if (roomId == Guid.Empty)
- {
- throw new UserFriendlyException("该人员登记的项目未在房间中维护");
- }
-
- return await ManualQueuingRoomAsync(PatientRegisterId, roomId);
+ throw new UserFriendlyException("该人员登记的项目未在房间中维护");
}
+ //else
+ //{
+ // //无排队信息
+ // var roomId = (from roomDetail in await _roomDetailRepository.GetQueryableAsync()
+ // join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id
+ // where asbitemIds.Contains(roomDetail.AsbitemId)
+ // orderby room.QueueTime, room.DisplayOrder ascending
+ // select room.Id).FirstOrDefault();
+ // if (roomId == Guid.Empty)
+ // {
+ // throw new UserFriendlyException("该人员登记的项目未在房间中维护");
+ // }
+
+ // return await ManualQueuingRoomAsync(PatientRegisterId, roomId);
+ //}
}