|
|
|
@ -1,11 +1,14 @@ |
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
using Shentun.Peis.Models; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Text; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Volo.Abp; |
|
|
|
using Volo.Abp.Application.Services; |
|
|
|
using Volo.Abp.Domain.Repositories; |
|
|
|
|
|
|
|
namespace Shentun.Peis.Worklists |
|
|
|
{ |
|
|
|
@ -13,9 +16,25 @@ namespace Shentun.Peis.Worklists |
|
|
|
[Authorize] |
|
|
|
public class WorklistAppService : ApplicationService |
|
|
|
{ |
|
|
|
public WorklistAppService() |
|
|
|
{ |
|
|
|
|
|
|
|
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; |
|
|
|
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; |
|
|
|
private readonly IRepository<Asbitem, Guid> _asbitemRepository; |
|
|
|
private readonly IRepository<DeviceType, Guid> _deviceTypeRepository; |
|
|
|
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository; |
|
|
|
|
|
|
|
public WorklistAppService( |
|
|
|
IRepository<RegisterCheck, Guid> registerCheckRepository, |
|
|
|
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository, |
|
|
|
IRepository<Asbitem, Guid> asbitemRepository, |
|
|
|
IRepository<DeviceType, Guid> deviceTypeRepository, |
|
|
|
IRepository<PatientRegister, Guid> patientRegisterRepository) |
|
|
|
{ |
|
|
|
_registerCheckRepository = registerCheckRepository; |
|
|
|
_registerCheckAsbitemRepository = registerCheckAsbitemRepository; |
|
|
|
_asbitemRepository = asbitemRepository; |
|
|
|
_deviceTypeRepository = deviceTypeRepository; |
|
|
|
_patientRegisterRepository = patientRegisterRepository; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -23,9 +42,66 @@ namespace Shentun.Peis.Worklists |
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/Worklist/GetWorklistPatientList")] |
|
|
|
[AllowAnonymous] |
|
|
|
public async Task<List<GetWorklistPatientListDto>> GetWorklistPatientListAsync(GetWorklistPatientListInputDto input) |
|
|
|
{ |
|
|
|
return new List<GetWorklistPatientListDto>(); |
|
|
|
if (string.IsNullOrWhiteSpace(input.ScheduledAet)) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("预检AET不能为空"); |
|
|
|
} |
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.Modality)) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("设备类型不能为空"); |
|
|
|
} |
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.StartDate) || string.IsNullOrWhiteSpace(input.EndDate)) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("日期不能为空"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var queryList = (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 deviceType in await _deviceTypeRepository.GetQueryableAsync() on asbitem.DeviceTypeId equals deviceType.Id |
|
|
|
where registerCheck.ScheduledAet == input.ScheduledAet |
|
|
|
&& registerCheck.WorklistPreCheckDate != null |
|
|
|
&& registerCheck.WorklistPreCheckDate >= Convert.ToDateTime(input.StartDate) |
|
|
|
&& registerCheck.WorklistPreCheckDate < Convert.ToDateTime(input.EndDate).AddDays(1) |
|
|
|
&& deviceType.DisplayName == input.Modality |
|
|
|
select new |
|
|
|
{ |
|
|
|
patientRegister, |
|
|
|
registerCheck, |
|
|
|
deviceType |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
var entListDto = queryList.Select(s => new GetWorklistPatientListDto |
|
|
|
{ |
|
|
|
DateOfBirth = s.patientRegister.BirthDate != null ? s.patientRegister.BirthDate.Value : DateTime.Now, |
|
|
|
ExamDateAndTime = s.registerCheck.WorklistPreCheckDate != null ? s.registerCheck.WorklistPreCheckDate.Value : DateTime.Now, |
|
|
|
Modality = s.deviceType.DisplayName, |
|
|
|
PatientID = s.registerCheck.CheckRequestNo, |
|
|
|
Forename = s.patientRegister.PatientName, |
|
|
|
ScheduledAET = s.registerCheck.ScheduledAet, |
|
|
|
Sex = s.patientRegister.SexId.ToString(), |
|
|
|
AccessionNumber = "", |
|
|
|
Surname = "", |
|
|
|
ExamDescription = "", |
|
|
|
ExamRoom = "", |
|
|
|
HospitalName = "", |
|
|
|
PerformingPhysician = "", |
|
|
|
ProcedureID = "", |
|
|
|
ProcedureStepID = "", |
|
|
|
ReferringPhysician = "", |
|
|
|
StudyUID = "", |
|
|
|
Title = "" |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
return entListDto; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -36,7 +112,47 @@ namespace Shentun.Peis.Worklists |
|
|
|
[HttpPost("api/app/Worklist/CreateRegisterCheckWorklist")] |
|
|
|
public async Task CreateRegisterCheckWorklistAsync(CreateRegisterCheckWorklistInputDto input) |
|
|
|
{ |
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.ScheduledAet)) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("预检AET不能为空"); |
|
|
|
} |
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.CheckRequestNo)) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("检查条码不能为空"); |
|
|
|
} |
|
|
|
|
|
|
|
var queryList = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() |
|
|
|
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 registerCheck.CheckRequestNo == input.CheckRequestNo |
|
|
|
select new |
|
|
|
{ |
|
|
|
registerCheck, |
|
|
|
asbitem |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
if (!queryList.Any()) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("条码号不正确"); |
|
|
|
} |
|
|
|
|
|
|
|
foreach (var item in queryList) |
|
|
|
{ |
|
|
|
if (item.asbitem.DeviceTypeId == null || item.asbitem.DeviceTypeId == Guid.Empty) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException($"组合项目:{item.asbitem.DisplayName}未配置仪器类别"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var registerCheckEnt = queryList.Select(s => s.registerCheck).FirstOrDefault(); |
|
|
|
|
|
|
|
registerCheckEnt.WorklistFlag = '1'; |
|
|
|
registerCheckEnt.WorklistPreCheckDate = DateTime.Now; |
|
|
|
registerCheckEnt.ScheduledAet = input.ScheduledAet; |
|
|
|
|
|
|
|
await _registerCheckRepository.UpdateAsync(registerCheckEnt); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |