|
|
|
@ -79,7 +79,6 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on queueRegister.PatientRegisterId equals patientRegister.Id |
|
|
|
where queueRegister.PatientRegisterId == input.PatientRegisterId |
|
|
|
&& queueRegister.CreationTime >= DateTime.Now.Date |
|
|
|
&& queueRegister.NoCompleteReason == '0' |
|
|
|
orderby queueRegister.CreationTime descending |
|
|
|
select new |
|
|
|
{ |
|
|
|
@ -133,8 +132,7 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
var entListDto = (from room in await _roomRepository.GetQueryableAsync() |
|
|
|
join queueRegister in (await _queueRegisterRepository.GetQueryableAsync()) |
|
|
|
.Where(m => m.CompleteFlag == QueueRegisterCompleteFlag.Wait |
|
|
|
&& m.CreationTime >= DateTime.Now.Date |
|
|
|
&& m.NoCompleteReason == '0').AsQueryable() |
|
|
|
&& m.CreationTime >= DateTime.Now.Date).AsQueryable() |
|
|
|
on room.Id equals queueRegister.RoomId into queueRegisterTemp |
|
|
|
from queueRegisterEmpty in queueRegisterTemp.DefaultIfEmpty() |
|
|
|
join itemType in await _itemTypeRepository.GetQueryableAsync() |
|
|
|
@ -154,7 +152,7 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 获取未分诊的组合项目 根据人员登记ID
|
|
|
|
/// 获取未分诊的组合项目 根据人员登记ID (弃检、已检的剔除)
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
@ -166,7 +164,7 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id |
|
|
|
join roomDetail in await _roomDetailRepository.GetQueryableAsync() on room.Id equals roomDetail.RoomId |
|
|
|
where queueRegister.PatientRegisterId == input.PatientRegisterId |
|
|
|
select room.Id |
|
|
|
select roomDetail.AsbitemId |
|
|
|
).ToList(); |
|
|
|
|
|
|
|
var entListDto = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
@ -175,7 +173,9 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id |
|
|
|
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp |
|
|
|
from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty() |
|
|
|
where patientRegister.Id == input.PatientRegisterId && asbitem.IsCheck == 'Y' |
|
|
|
where patientRegister.Id == input.PatientRegisterId |
|
|
|
&& asbitem.IsCheck == 'Y' |
|
|
|
&& registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked |
|
|
|
orderby itemTypeHaveEmpty.DisplayOrder, asbitem.DisplayOrder ascending |
|
|
|
select new NotTriageAsbitemListDto |
|
|
|
{ |
|
|
|
@ -325,8 +325,7 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
|
|
|
|
//删除排队操作
|
|
|
|
await _queueRegisterRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId |
|
|
|
&& d.CompleteFlag != QueueRegisterCompleteFlag.AlreadyCalled |
|
|
|
&& d.NoCompleteReason == '0', true); |
|
|
|
&& d.CompleteFlag != QueueRegisterCompleteFlag.AlreadyCalled, true); |
|
|
|
|
|
|
|
var entity = await _queueRegisterManager.ManualQueuingRoomAsync(input.PatientRegisterId, input.RoomId); |
|
|
|
|
|
|
|
@ -347,12 +346,11 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
[HttpPost("api/app/QueueRegister/AutomaticQueuingRoom")] |
|
|
|
public async Task<QueueRegisterByPatientRegisterIdDto> AutomaticQueuingRoomAsync(AutomaticQueuingRoomInputDto input) |
|
|
|
{ |
|
|
|
//删除排队操作 NoCompleteReason为1时放弃检查
|
|
|
|
//删除排队操作
|
|
|
|
await _queueRegisterRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId |
|
|
|
&& d.CompleteFlag != QueueRegisterCompleteFlag.AlreadyCalled |
|
|
|
&& d.NoCompleteReason == '0', true); |
|
|
|
&& d.CompleteFlag != QueueRegisterCompleteFlag.AlreadyCalled, true); |
|
|
|
|
|
|
|
var entity = await _queueRegisterManager.AutomaticQueuingRoomAsync(input.PatientRegisterId); |
|
|
|
var entity = await _queueRegisterManager.AutomaticQueuingRoomAsync(input.PatientRegisterId, new List<Guid>()); |
|
|
|
|
|
|
|
await _queueRegisterRepository.InsertAsync(entity, true); |
|
|
|
|
|
|
|
@ -394,7 +392,6 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
on queueRegister.RoomId equals roomDetail.RoomId |
|
|
|
where queueRegister.CreationTime >= DateTime.Now.Date |
|
|
|
&& queueRegister.RoomId == input.RoomId |
|
|
|
&& queueRegister.NoCompleteReason == '0' |
|
|
|
select new |
|
|
|
{ |
|
|
|
completeFlag = queueRegister.CompleteFlag, |
|
|
|
@ -406,7 +403,7 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
patientRegisterNo = patientRegister.PatientRegisterNo, |
|
|
|
roomId = queueRegister.RoomId, |
|
|
|
asbitemId = roomDetail.AsbitemId, |
|
|
|
//lastModificationTime = queueRegister.LastModificationTime,
|
|
|
|
//lastModificationTime = queueRegister.LastModificationTime,
|
|
|
|
callTime = queueRegister.CallTime |
|
|
|
}; |
|
|
|
|
|
|
|
@ -505,7 +502,6 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id |
|
|
|
where queueRegister.CreationTime >= DateTime.Now.Date |
|
|
|
&& room.RoomNo == input.RoomNo |
|
|
|
&& queueRegister.NoCompleteReason == '0' |
|
|
|
select new |
|
|
|
{ |
|
|
|
completeFlag = queueRegister.CompleteFlag, |
|
|
|
@ -602,8 +598,148 @@ namespace Shentun.Peis.QueueRegisters |
|
|
|
msg.CompleteFlag = queueRegisterInfo.CompleteFlag; |
|
|
|
} |
|
|
|
|
|
|
|
#region 分诊项目
|
|
|
|
|
|
|
|
//登记的所有项目
|
|
|
|
var registerCheckAsbitemList = (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 |
|
|
|
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp |
|
|
|
from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty() |
|
|
|
where patientRegister.Id == patientRegisterEnt.Id |
|
|
|
&& asbitem.IsCheck == 'Y' |
|
|
|
orderby itemTypeHaveEmpty.DisplayOrder, asbitem.DisplayOrder ascending |
|
|
|
select new |
|
|
|
{ |
|
|
|
asbitemId = asbitem.Id, |
|
|
|
registerCheckId = registerCheck.Id, |
|
|
|
isGiveUp = registerCheck.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked ? 'Y' : 'N', |
|
|
|
asbitemName = asbitem.DisplayName |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
//分诊过的项目
|
|
|
|
var queueRegisterList = (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 |
|
|
|
where queueRegister.PatientRegisterId == patientRegisterEnt.Id |
|
|
|
select new |
|
|
|
{ |
|
|
|
completeFlag = queueRegister.CompleteFlag, |
|
|
|
roomName = room.DisplayName, |
|
|
|
asbitemId = roomDetail.AsbitemId |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
List<TriageAsbitemDetailDto> triageAsbitemDetailList = new List<TriageAsbitemDetailDto>(); |
|
|
|
|
|
|
|
foreach (var item in registerCheckAsbitemList) |
|
|
|
{ |
|
|
|
var triageAsbitemDetail = new TriageAsbitemDetailDto |
|
|
|
{ |
|
|
|
AsbitemName = item.asbitemName, |
|
|
|
IsGiveUp = item.isGiveUp, |
|
|
|
RegisterCheckId = item.registerCheckId |
|
|
|
}; |
|
|
|
|
|
|
|
var queueRegisterAsbitem = queueRegisterList.FirstOrDefault(f => f.asbitemId == item.asbitemId); |
|
|
|
if (queueRegisterAsbitem != null) |
|
|
|
{ |
|
|
|
triageAsbitemDetail.CompleteFlag = queueRegisterAsbitem.completeFlag; |
|
|
|
triageAsbitemDetail.RoomName = queueRegisterAsbitem.roomName; |
|
|
|
} |
|
|
|
|
|
|
|
triageAsbitemDetailList.Add(triageAsbitemDetail); |
|
|
|
} |
|
|
|
|
|
|
|
msg.TriageAsbitemDetail = triageAsbitemDetailList; |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
return msg; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 放弃项目
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/QueueRegister/CreateGiveUpAsbitem")] |
|
|
|
public async Task CreateGiveUpAsbitemAsync(CreateGiveUpAsbitemInputDto input) |
|
|
|
{ |
|
|
|
var registerCheckEnt = await _registerCheckRepository.FirstOrDefaultAsync(f => f.Id == input.RegisterCheckId); |
|
|
|
if (registerCheckEnt == null) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("检查项目不存在"); |
|
|
|
} |
|
|
|
|
|
|
|
if (registerCheckEnt.CompleteFlag == RegisterCheckCompleteFlag.Checked) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("项目已检查,无法操作"); |
|
|
|
} |
|
|
|
|
|
|
|
if (input.IsGiveUp == 'Y') |
|
|
|
{ |
|
|
|
registerCheckEnt.CompleteFlag = RegisterCheckCompleteFlag.GiveUpChecked; |
|
|
|
await _registerCheckRepository.UpdateAsync(registerCheckEnt); |
|
|
|
} |
|
|
|
else if (input.IsGiveUp == 'N') |
|
|
|
{ |
|
|
|
registerCheckEnt.CompleteFlag = RegisterCheckCompleteFlag.UnChecked; |
|
|
|
await _registerCheckRepository.UpdateAsync(registerCheckEnt); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 创建新的项目分诊
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/QueueRegister/CreateNewAsbitemTriage")] |
|
|
|
public async Task CreateNewAsbitemTriageAsync(CreateNewAsbitemTriageInputDto input) |
|
|
|
{ |
|
|
|
|
|
|
|
//登记的组合项目ID
|
|
|
|
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 registerCheck.Id == input.RegisterCheckId |
|
|
|
select new |
|
|
|
{ |
|
|
|
registerCheckAsbitem.AsbitemId, |
|
|
|
patientRegisterId = patientRegister.Id |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
if (!asbitemIds.Any()) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("检查项目不存在"); |
|
|
|
} |
|
|
|
var queueRegisterList = (from queueRegister in await _queueRegisterRepository.GetQueryableAsync() |
|
|
|
join roomDetail in await _roomDetailRepository.GetQueryableAsync() on queueRegister.RoomId equals roomDetail.RoomId |
|
|
|
where queueRegister.PatientRegisterId == asbitemIds.First().patientRegisterId |
|
|
|
&& asbitemIds.Select(s => s.AsbitemId).Contains(roomDetail.AsbitemId) |
|
|
|
select queueRegister).ToList(); |
|
|
|
if (!queueRegisterList.Any()) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("该项目还未分诊,不需要跳过"); |
|
|
|
} |
|
|
|
|
|
|
|
if (queueRegisterList.First().CompleteFlag == QueueRegisterCompleteFlag.AlreadyCalled) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("该项目已叫号,不需要跳过"); |
|
|
|
} |
|
|
|
|
|
|
|
//删除排队操作
|
|
|
|
await _queueRegisterRepository.DeleteAsync(d => d.PatientRegisterId == asbitemIds.First().patientRegisterId |
|
|
|
&& d.CompleteFlag != QueueRegisterCompleteFlag.AlreadyCalled, true); |
|
|
|
|
|
|
|
var entity = await _queueRegisterManager.AutomaticQueuingRoomAsync(asbitemIds.First().patientRegisterId, asbitemIds.Select(s => s.AsbitemId).ToList()); |
|
|
|
|
|
|
|
await _queueRegisterRepository.InsertAsync(entity, true); |
|
|
|
|
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |