|
|
|
@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore; |
|
|
|
using Shentun.Peis.CustomerOrgs; |
|
|
|
using Shentun.Peis.Enums; |
|
|
|
using Shentun.Peis.Models; |
|
|
|
using Shentun.Peis.PatientRegisters; |
|
|
|
using Shentun.Peis.PrintReports; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
@ -34,6 +35,7 @@ namespace Shentun.Peis.LisRequests |
|
|
|
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; |
|
|
|
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; |
|
|
|
private readonly IRepository<Asbitem, Guid> _asbitemRepository; |
|
|
|
private readonly IRepository<ItemType, Guid> _itemTypeRepository; |
|
|
|
private readonly ILisRequestReportRepository _lisRequestReportRepository; |
|
|
|
private readonly LisRequestManager _lisRequestManager; |
|
|
|
private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository; |
|
|
|
@ -58,7 +60,8 @@ namespace Shentun.Peis.LisRequests |
|
|
|
IRepository<SampleContainer, Guid> sampleContainerRepository, |
|
|
|
IRepository<SampleType, Guid> sampleTypeRepository, |
|
|
|
IRepository<SampleGroup, Guid> sampleGroupRepository, |
|
|
|
IRepository<SampleGroupDetail> sampleGroupDetailRepository |
|
|
|
IRepository<SampleGroupDetail> sampleGroupDetailRepository, |
|
|
|
IRepository<ItemType, Guid> itemTypeRepository |
|
|
|
) |
|
|
|
{ |
|
|
|
this._userRepository = userRepository; |
|
|
|
@ -76,6 +79,7 @@ namespace Shentun.Peis.LisRequests |
|
|
|
_sampleTypeRepository = sampleTypeRepository; |
|
|
|
_sampleGroupRepository = sampleGroupRepository; |
|
|
|
_sampleGroupDetailRepository = sampleGroupDetailRepository; |
|
|
|
_itemTypeRepository = itemTypeRepository; |
|
|
|
} |
|
|
|
|
|
|
|
[HttpPost("api/app/LisRequest/GetListInFilter")] |
|
|
|
@ -85,7 +89,7 @@ namespace Shentun.Peis.LisRequests |
|
|
|
|
|
|
|
//Stopwatch stopwatch = Stopwatch.StartNew();
|
|
|
|
//stopwatch.Start();
|
|
|
|
|
|
|
|
throw new UserFriendlyException("接口已禁止"); |
|
|
|
#region MyRegion
|
|
|
|
var patientRegisterQuery = (await _patientRegisterRepository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable(); |
|
|
|
|
|
|
|
@ -203,6 +207,7 @@ namespace Shentun.Peis.LisRequests |
|
|
|
[HttpPost("api/app/LisRequest/GetListByFilter")] |
|
|
|
public async Task<PagedResultDto<LisRequestDto>> GetListByFilterAsync(GetLisRequestListDto input) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("禁止启用"); |
|
|
|
//var customerOrgList = await _customerOrgRepository.GetListAsync();
|
|
|
|
|
|
|
|
//Stopwatch stopwatch = Stopwatch.StartNew();
|
|
|
|
@ -268,6 +273,12 @@ namespace Shentun.Peis.LisRequests |
|
|
|
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 |
|
|
|
where itemType.CheckTypeFlag == CheckTypeFlag.Laboratory && |
|
|
|
registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked |
|
|
|
select new |
|
|
|
{ |
|
|
|
patientRegister, |
|
|
|
@ -281,7 +292,7 @@ namespace Shentun.Peis.LisRequests |
|
|
|
{ |
|
|
|
var registerCheckAsbitems = patientRegisterRequests.Select(o=>o.registerCheckAsbitem) |
|
|
|
.Where(o => o.PatientRegisterId == patientRegister.Id).Distinct().ToList(); |
|
|
|
_lisRequestManager.Create(patientRegister, registerCheckAsbitems, sampleGroups, _sampleGroupDetail |
|
|
|
_lisRequestManager.SetLisRequest(patientRegister, registerCheckAsbitems, sampleGroups, _sampleGroupDetail |
|
|
|
, out var updateRegisterCheckAsbitems, out var createLisRequests); |
|
|
|
createLisRequestList.AddRange(createLisRequests); |
|
|
|
updateRegisterCheckAsbitemList.AddRange(updateRegisterCheckAsbitems); |
|
|
|
@ -290,9 +301,8 @@ namespace Shentun.Peis.LisRequests |
|
|
|
await _registerCheckAsbitemRepository.UpdateManyAsync(updateRegisterCheckAsbitemList, true); |
|
|
|
|
|
|
|
//返回检索到的数据
|
|
|
|
var list = (from patient in await _patientRepository.GetQueryableAsync() |
|
|
|
join patientRegister in patientRegisterQuery |
|
|
|
on patient.Id equals patientRegister.PatientId |
|
|
|
var list = ( |
|
|
|
from patientRegister in patientRegisterQuery |
|
|
|
join registerCheck in await _registerCheckRepository.GetQueryableAsync() |
|
|
|
on patientRegister.Id equals registerCheck.PatientRegisterId |
|
|
|
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() |
|
|
|
@ -307,7 +317,6 @@ namespace Shentun.Peis.LisRequests |
|
|
|
on lisRequest.SampleTypeId equals sampleType.Id |
|
|
|
select new |
|
|
|
{ |
|
|
|
patient, |
|
|
|
patientRegister, |
|
|
|
asbitem, |
|
|
|
lisRequest, |
|
|
|
@ -326,7 +335,7 @@ namespace Shentun.Peis.LisRequests |
|
|
|
{ |
|
|
|
Id = lisRequestId.Id, |
|
|
|
LisRequestNo = patient.lisRequest.LisRequestNo, |
|
|
|
PatientNo = patient.patient.PatientNo, |
|
|
|
PatientNo = patient.patientRegister.Patient.PatientNo, |
|
|
|
PatientRegisterNo = patient.patientRegister.PatientRegisterNo, |
|
|
|
PatientName = patient.patientRegister.PatientName, |
|
|
|
SexName = _cacheService.GetSexNameAsync(patient.patientRegister.SexId).Result, |
|
|
|
@ -349,37 +358,140 @@ namespace Shentun.Peis.LisRequests |
|
|
|
/// <summary>
|
|
|
|
/// 生成检验申请单 首次自动生成
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="PatientRegisterId">人员登记ID</param>
|
|
|
|
/// <param name="patientRegisterId">人员登记ID</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/LisRequest/SetLisRequest")] |
|
|
|
[RemoteService(false)] |
|
|
|
public async Task<List<SetLisRequestDto>> SetLisRequestAsync(Guid PatientRegisterId) |
|
|
|
{ |
|
|
|
var entlist = await _lisRequestManager.SetLisRequestAsync(PatientRegisterId); |
|
|
|
|
|
|
|
|
|
|
|
var entlistdto = entlist.Select(s => new SetLisRequestDto |
|
|
|
{ |
|
|
|
CreationTime = s.CreationTime, |
|
|
|
CreatorId = s.CreatorId, |
|
|
|
CreatorName = _cacheService.GetUserNameAsync(s.CreatorId).Result, |
|
|
|
Id = s.Id, |
|
|
|
IsPrint = s.IsPrint, |
|
|
|
IsSignIn = s.IsSignIn, |
|
|
|
LastModificationTime = s.LastModificationTime, |
|
|
|
LastModifierId = s.LastModifierId, |
|
|
|
LastModifierName = _cacheService.GetUserNameAsync(s.LastModifierId).Result, |
|
|
|
LisRequestNo = s.LisRequestNo, |
|
|
|
SamplerName = _cacheService.GetUserNameAsync(s.SamplerId).Result, |
|
|
|
SamplingTime = s.SamplingTime, |
|
|
|
SignInOrder = s.SignInOrder, |
|
|
|
SignInPerson = s.SignInPerson, |
|
|
|
SignInTime = s.SignInTime |
|
|
|
public async Task<List<LisRequestDto>> SetLisRequestAsync(PatientRegisterIdInputDto input) |
|
|
|
{ |
|
|
|
var entlist = await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId); |
|
|
|
|
|
|
|
var list = ( |
|
|
|
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 lisRequest in await _lisRequestReportRepository.GetQueryableAsync() |
|
|
|
on registerCheckAsbitem.LisRequestId equals lisRequest.Id |
|
|
|
join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() |
|
|
|
on lisRequest.SampleContainerId equals sampleContainer.Id |
|
|
|
join sampleType in await _sampleTypeRepository.GetQueryableAsync() |
|
|
|
on lisRequest.SampleTypeId equals sampleType.Id |
|
|
|
where patientRegister.Id == input.PatientRegisterId |
|
|
|
select new |
|
|
|
{ |
|
|
|
patientRegister, |
|
|
|
asbitem, |
|
|
|
lisRequest, |
|
|
|
sampleContainer, |
|
|
|
sampleType |
|
|
|
|
|
|
|
}).ToList(); |
|
|
|
return entlistdto; |
|
|
|
|
|
|
|
var lisRequestIds = list.Select(o => new { Id = o.lisRequest.Id }).Distinct().ToList(); |
|
|
|
|
|
|
|
var lisRequestDtoList = new List<LisRequestDto>(); |
|
|
|
foreach (var lisRequestId in lisRequestIds) |
|
|
|
{ |
|
|
|
var patientList = list.Where(o => o.lisRequest.Id == lisRequestId.Id).Distinct().ToList(); |
|
|
|
var patient = patientList.First(); |
|
|
|
var lisRequestDto = new LisRequestDto() |
|
|
|
{ |
|
|
|
Id = lisRequestId.Id, |
|
|
|
LisRequestNo = patient.lisRequest.LisRequestNo, |
|
|
|
PatientNo = patient.patientRegister.Patient.PatientNo, |
|
|
|
PatientRegisterNo = patient.patientRegister.PatientRegisterNo, |
|
|
|
PatientName = patient.patientRegister.PatientName, |
|
|
|
SexName = _cacheService.GetSexNameAsync(patient.patientRegister.SexId).Result, |
|
|
|
Age = patient.patientRegister.Age, |
|
|
|
IsPrint = patient.lisRequest.IsPrint, |
|
|
|
IsSignIn = patient.lisRequest.IsSignIn, |
|
|
|
SamplingTime = patient.lisRequest.SamplingTime, |
|
|
|
SignInOrder = patient.lisRequest.SignInOrder, |
|
|
|
SignInPerson = patient.lisRequest.SignInPerson, |
|
|
|
SignInTime = patient.lisRequest.SignInTime, |
|
|
|
|
|
|
|
SampleTypeName = patient.sampleType.DisplayName, |
|
|
|
SampleContainerName = patient.sampleContainer.DisplayName, |
|
|
|
ContainerColor = patient.sampleContainer.ContainerColor, |
|
|
|
SampleContainerRemark = patient.sampleContainer.ContainerRemark, |
|
|
|
AsbitemNames = string.Join(",", patientList.OrderBy(o => o.asbitem.DisplayOrder).Select(o => o.asbitem.DisplayName).Distinct()), |
|
|
|
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(patient.patientRegister.CustomerOrgId).Result.DisplayName, |
|
|
|
DepartmentName = _cacheService.GetCustomerOrgNameAsync(patient.patientRegister.CustomerOrgId).Result |
|
|
|
}; |
|
|
|
lisRequestDtoList.Add(lisRequestDto); |
|
|
|
} |
|
|
|
lisRequestDtoList = lisRequestDtoList.OrderBy(o => o.PatientNo).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
return lisRequestDtoList; |
|
|
|
} |
|
|
|
|
|
|
|
[HttpPost("api/app/LisRequest/GetLisRequestByPatientRegisterId")] |
|
|
|
public async Task<LisRequestDto> GetLisRequestByPatientRegisterIdAsync(LisRequestIdInputDto input) |
|
|
|
{ |
|
|
|
var list = ( |
|
|
|
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 lisRequest in await _lisRequestReportRepository.GetQueryableAsync() |
|
|
|
on registerCheckAsbitem.LisRequestId equals lisRequest.Id |
|
|
|
join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() |
|
|
|
on lisRequest.SampleContainerId equals sampleContainer.Id |
|
|
|
join sampleType in await _sampleTypeRepository.GetQueryableAsync() |
|
|
|
on lisRequest.SampleTypeId equals sampleType.Id |
|
|
|
where lisRequest.Id == input.LisRequestId |
|
|
|
select new |
|
|
|
{ |
|
|
|
patientRegister, |
|
|
|
asbitem, |
|
|
|
lisRequest, |
|
|
|
sampleContainer, |
|
|
|
sampleType |
|
|
|
|
|
|
|
}).Distinct().ToList(); |
|
|
|
if(!list.Any() ) |
|
|
|
{ |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
var lisRequestDtoList = new List<LisRequestDto>(); |
|
|
|
var patient = list.First(); |
|
|
|
var lisRequestDto = new LisRequestDto() |
|
|
|
{ |
|
|
|
Id = input.LisRequestId, |
|
|
|
LisRequestNo = patient.lisRequest.LisRequestNo, |
|
|
|
PatientNo = patient.patientRegister.Patient.PatientNo, |
|
|
|
PatientRegisterNo = patient.patientRegister.PatientRegisterNo, |
|
|
|
PatientName = patient.patientRegister.PatientName, |
|
|
|
SexName = _cacheService.GetSexNameAsync(patient.patientRegister.SexId).Result, |
|
|
|
Age = patient.patientRegister.Age, |
|
|
|
IsPrint = patient.lisRequest.IsPrint, |
|
|
|
IsSignIn = patient.lisRequest.IsSignIn, |
|
|
|
SamplingTime = patient.lisRequest.SamplingTime, |
|
|
|
SignInOrder = patient.lisRequest.SignInOrder, |
|
|
|
SignInPerson = patient.lisRequest.SignInPerson, |
|
|
|
SignInTime = patient.lisRequest.SignInTime, |
|
|
|
|
|
|
|
SampleTypeName = patient.sampleType.DisplayName, |
|
|
|
SampleContainerName = patient.sampleContainer.DisplayName, |
|
|
|
ContainerColor = patient.sampleContainer.ContainerColor, |
|
|
|
SampleContainerRemark = patient.sampleContainer.ContainerRemark, |
|
|
|
AsbitemNames = string.Join(",", list.OrderBy(o => o.asbitem.DisplayOrder).Select(o => o.asbitem.DisplayName).Distinct()), |
|
|
|
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(patient.patientRegister.CustomerOrgId).Result.DisplayName, |
|
|
|
DepartmentName = _cacheService.GetCustomerOrgNameAsync(patient.patientRegister.CustomerOrgId).Result |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
return lisRequestDto; |
|
|
|
} |
|
|
|
/// <summary>
|
|
|
|
/// 追加项目到检验单 如lisrequest内有项目完成体检或者弃检 不允许追加
|
|
|
|
/// </summary>
|
|
|
|
|