Browse Source

叫号

master
wxd 1 year ago
parent
commit
88a3a10b02
  1. 11
      src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemIdInputDto.cs
  2. 24
      src/Shentun.Peis.Application.Contracts/QueueRegisters/NotTriageAsbitemListDto.cs
  3. 26
      src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterByPatientRegisterIdDto.cs
  4. 12
      src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterIdInputDto.cs
  5. 42
      src/Shentun.Peis.Application.Contracts/QueueRegisters/YesTriageAsbitemListDto.cs
  6. 15
      src/Shentun.Peis.Application.Contracts/Rooms/BaseRoomDto.cs
  7. 171
      src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
  8. 10
      src/Shentun.Peis.Application/Rooms/RoomAppService.cs

11
src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemIdInputDto.cs

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.Asbitems
{
public class AsbitemIdInputDto
{
public Guid AsbitemId { get; set; }
}
}

24
src/Shentun.Peis.Application.Contracts/QueueRegisters/NotTriageAsbitemListDto.cs

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.QueueRegisters
{
public class NotTriageAsbitemListDto
{
/// <summary>
/// 项目类别名称
/// </summary>
public string ItemTypeName { get; set; }
/// <summary>
/// 组合项目ID
/// </summary>
public Guid AsbitemId { get; set; }
/// <summary>
/// 组合项目名称
/// </summary>
public string AsbitemName { get; set; }
}
}

26
src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterByPatientRegisterIdDto.cs

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Text;
namespace Shentun.Peis.QueueRegisters
{
public class QueueRegisterByPatientRegisterIdDto
{
/// <summary>
/// 当前排队房间
/// </summary>
public string RoomName { get; set; }
/// <summary>
/// 候诊人数
/// </summary>
public int QueueCount { get; set; }
/// <summary>
/// 完成标志 (o=候诊 1=已呼 2=过号)
/// </summary>
public char CompleteFlag { get; set; }
}
}

12
src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterIdInputDto.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.QueueRegisters
{
public class QueueRegisterIdInputDto
{
public Guid QueueRegisterId { get; set; }
}
}

42
src/Shentun.Peis.Application.Contracts/QueueRegisters/YesTriageAsbitemListDto.cs

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Text;
using System.Dynamic;
namespace Shentun.Peis.QueueRegisters
{
public class YesTriageAsbitemListDto
{
/// <summary>
/// 项目类别名称
/// </summary>
public string ItemTypeName { get; set; }
/// <summary>
/// 组合项目ID
/// </summary>
public Guid AsbitemId { get; set; }
/// <summary>
/// 组合项目名称
/// </summary>
public string AsbitemName { get; set; }
/// <summary>
/// 房间名称
/// </summary>
public string RoomName { get; set; }
/// <summary>
/// 完成标志 (o=候诊 1=已呼 2=过号)
/// </summary>
public char CompleteFlag { get; set; }
/// <summary>
/// 分诊人
/// </summary>
public string TriageName { get; set; }
}
}

15
src/Shentun.Peis.Application.Contracts/Rooms/BaseRoomDto.cs

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.Rooms
{
public class BaseRoomDto
{
public Guid Id { get; set; }
public string RoomName { get; set; }
public int DisplayOrder { get; set; }
}
}

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

@ -1,8 +1,12 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Shentun.Peis.Asbitems;
using Shentun.Peis.Enums;
using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters;
using Shentun.Peis.Patients;
using Shentun.Peis.Rooms;
using System;
using System.Collections.Generic;
using System.Linq;
@ -24,16 +28,72 @@ namespace Shentun.Peis.QueueRegisters
private readonly IRepository<QueueRegister, Guid> _queueRegisterRepository;
private readonly IRepository<Room, Guid> _roomRepository;
private readonly IRepository<ItemType, Guid> _itemTypeRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly IRepository<RoomDetail> _roomDetailRepository;
private readonly CacheService _cacheService;
public QueueRegisterAppService(
IRepository<QueueRegister, Guid> queueRegisterRepository,
IRepository<ItemType, Guid> itemTypeRepository,
IRepository<Room, Guid> roomRepository)
IRepository<Room, Guid> roomRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<Asbitem, Guid> asbitemRepository,
IRepository<RoomDetail> roomDetailRepository,
CacheService cacheService)
{
_queueRegisterRepository = queueRegisterRepository;
_itemTypeRepository = itemTypeRepository;
_roomRepository = roomRepository;
_patientRegisterRepository = patientRegisterRepository;
_registerCheckRepository = registerCheckRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_asbitemRepository = asbitemRepository;
_roomDetailRepository = roomDetailRepository;
_cacheService = cacheService;
}
/// <summary>
/// 获取当前排队信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/GetQueueRegisterByPatientRegisterId")]
public async Task<QueueRegisterByPatientRegisterIdDto> GetQueueRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
var queueRegisterEnt = (from queueRegister in await _queueRegisterRepository.GetQueryableAsync()
join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id
where queueRegister.PatientRegisterId == input.PatientRegisterId
orderby queueRegister.CreationTime descending
select new
{
queueRegister,
room
}).FirstOrDefault();
if (queueRegisterEnt != null)
{
var queueCount = await _queueRegisterRepository.CountAsync(c => c.RoomId == queueRegisterEnt.queueRegister.RoomId
&& c.CompleteFlag == QueueRegisterCompleteFlag.Wait);
var entDto = new QueueRegisterByPatientRegisterIdDto
{
CompleteFlag = queueRegisterEnt.queueRegister.CompleteFlag,
RoomName = queueRegisterEnt.room.DisplayName,
QueueCount = queueCount
};
return entDto;
}
else
{
throw new UserFriendlyException("当前无分诊信息");
}
}
/// <summary>
/// 获取房间排队信息
/// </summary>
@ -62,5 +122,114 @@ namespace Shentun.Peis.QueueRegisters
return entListDto;
}
/// <summary>
/// 获取未分诊的组合项目 根据人员登记ID
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/GetNotTriageAsbitemList")]
public async Task<List<NotTriageAsbitemListDto>> GetNotTriageAsbitemListAsync(PatientRegisterIdInputDto input)
{
//分诊过的组合项目id
var triageAsbitemIds = (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 == input.PatientRegisterId
select room.Id
).ToList();
var entListDto = (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 == input.PatientRegisterId
orderby itemTypeHaveEmpty.DisplayOrder, asbitem.DisplayOrder ascending
select new NotTriageAsbitemListDto
{
ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "",
AsbitemId = asbitem.Id,
AsbitemName = asbitem.DisplayName
}).ToList();
if (triageAsbitemIds.Any())
{
entListDto = entListDto.Where(m => !triageAsbitemIds.Contains(m.AsbitemId)).ToList();
}
return entListDto;
}
/// <summary>
/// 获取已分诊的组合项目 根据人员登记ID
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/GetYesTriageAsbitemList")]
public async Task<List<YesTriageAsbitemListDto>> GetYesTriageAsbitemListAsync(PatientRegisterIdInputDto input)
{
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
join asbitem in await _asbitemRepository.GetQueryableAsync() on roomDetail.AsbitemId equals asbitem.Id
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp
from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
where queueRegister.PatientRegisterId == input.PatientRegisterId
orderby queueRegister.CreationTime descending
select new YesTriageAsbitemListDto
{
ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "",
AsbitemId = asbitem.Id,
AsbitemName = asbitem.DisplayName,
CompleteFlag = queueRegister.CompleteFlag,
RoomName = room.DisplayName,
TriageName = _cacheService.GetSurnameAsync(queueRegister.CreatorId).Result
}).ToList();
return entListDto;
}
/// <summary>
/// 获取房间信息 根据项目ID
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/GetRoomListByAsbitemId")]
public async Task<List<BaseRoomDto>> GetRoomListByAsbitemIdAsync(AsbitemIdInputDto input)
{
var entListDto = (from room in await _roomRepository.GetQueryableAsync()
join roomDetail in await _roomDetailRepository.GetQueryableAsync() on room.Id equals roomDetail.RoomId
where roomDetail.AsbitemId == input.AsbitemId
orderby room.DisplayOrder ascending
select new BaseRoomDto
{
DisplayOrder = room.DisplayOrder,
Id = room.Id,
RoomName = room.DisplayName
}).ToList();
return entListDto;
}
/// <summary>
/// 取消分诊 删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/Delete")]
public async Task DeleteAsync(QueueRegisterIdInputDto input)
{
await _queueRegisterRepository.DeleteAsync(d => d.Id == input.QueueRegisterId);
}
}
}

10
src/Shentun.Peis.Application/Rooms/RoomAppService.cs

@ -66,7 +66,7 @@ namespace Shentun.Peis.Rooms
[HttpPost("api/app/Room/GetList")]
public async Task<List<RoomDto>> GetListAsync()
{
var entListDto = (await _roomRepository.GetQueryableAsync()).Select(s => new RoomDto
var entListDto = (await _roomRepository.GetQueryableAsync()).OrderBy(o=>o.DisplayOrder).Select(s => new RoomDto
{
CreationTime = s.CreationTime,
CreatorId = s.CreatorId,
@ -121,12 +121,12 @@ namespace Shentun.Peis.Rooms
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/Room/Delete")]
public async Task DeleteAsync(Guid id)
public async Task DeleteAsync(RoomIdInputDto input)
{
await _roomManager.CheckAndDeleteAsync(id);
await _roomManager.CheckAndDeleteAsync(input.RoomId);
}
/// <summary>
@ -151,7 +151,7 @@ namespace Shentun.Peis.Rooms
foreach (var asbitemId in input.AsbitemIds)
{
if (roomDetails.FirstOrDefault(m => m.AsbitemId == asbitemId) != null)
if (roomDetails.FirstOrDefault(m => m.AsbitemId == asbitemId) == null)
{
roomDetails.Add(new RoomDetail
{

Loading…
Cancel
Save