Browse Source

叫号

master
wxd 1 year ago
parent
commit
b11a656228
  1. 49
      src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs
  2. 62
      src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
  3. 3
      src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs
  4. 31
      src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs

49
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
{
/// <summary>
/// 当前就诊人姓名
/// </summary>
public string VisitName { get; set; }
/// <summary>
/// 当前就诊人号码
/// </summary>
public int VisitNumber { get; set; }
/// <summary>
/// 候诊列表
/// </summary>
public List<GetScreenQueueRegisterListByRoomIdDetailDto> WaitDetail { get; set; } = new List<GetScreenQueueRegisterListByRoomIdDetailDto>();
/// <summary>
/// 过号列表
/// </summary>
public List<GetScreenQueueRegisterListByRoomIdDetailDto> OverNumberDetail { get; set; } = new List<GetScreenQueueRegisterListByRoomIdDetailDto>();
}
public class GetScreenQueueRegisterListByRoomIdDetailDto
{
/// <summary>
/// 姓名
/// </summary>
public string PatientName { get; set; }
/// <summary>
/// 排队号码
/// </summary>
public int QueueRegisterNumber { get; set; }
}
}

62
src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs

@ -178,6 +178,16 @@ namespace Shentun.Peis.QueueRegisters
public async Task<List<YesTriageAsbitemListDto>> 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;
}
/// <summary>
/// 获取叫号屏人员数据
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/GetScreenQueueRegisterListByRoomId")]
public async Task<GetScreenQueueRegisterListByRoomIdDto> 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;
}
}
}

3
src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs

@ -118,8 +118,10 @@ namespace Shentun.Peis.LisRequests
out List<RegisterCheckAsbitem> updateRegisterCheckAsbitems,
out List<LisRequest> createLisRequests)
{
//条码分组内存在的对应项目
var registerCheckAsbitemLisList = new List<RegisterCheckAsbitemLis>();
updateRegisterCheckAsbitems = new List<RegisterCheckAsbitem>();
//根据登记的项目按条码分组明细筛选
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)

31
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,
@ -114,20 +115,24 @@ namespace Shentun.Peis.QueueRegisters
return await ManualQueuingRoomAsync(PatientRegisterId, roomGroup.roomId);
}
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);
}
//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);
//}
}

Loading…
Cancel
Save