|
|
|
@ -2,6 +2,7 @@ |
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
using Microsoft.EntityFrameworkCore; |
|
|
|
using Microsoft.EntityFrameworkCore.Query.Internal; |
|
|
|
using Org.BouncyCastle.Asn1.Ocsp; |
|
|
|
using Shentun.Peis.CustomerOrgs; |
|
|
|
using Shentun.Peis.Enums; |
|
|
|
@ -20,6 +21,7 @@ using Volo.Abp.Application.Dtos; |
|
|
|
using Volo.Abp.Application.Services; |
|
|
|
using Volo.Abp.Domain.Repositories; |
|
|
|
using Volo.Abp.Identity; |
|
|
|
using Volo.Abp.Uow; |
|
|
|
using Volo.Abp.Users; |
|
|
|
|
|
|
|
namespace Shentun.Peis.LisRequests |
|
|
|
@ -49,6 +51,7 @@ namespace Shentun.Peis.LisRequests |
|
|
|
private readonly IRepository<SampleType, Guid> _sampleTypeRepository; |
|
|
|
private readonly IRepository<LisRequest, Guid> _lisRequestRepository; |
|
|
|
private readonly SysParmValueManager _sysParmValueManager; |
|
|
|
private readonly IUnitOfWorkManager _unitOfWorkManager; |
|
|
|
public LisRequestAppService( |
|
|
|
IRepository<IdentityUser, Guid> userRepository, |
|
|
|
IRepository<PatientRegister, Guid> patientRegisterRepository, |
|
|
|
@ -65,10 +68,10 @@ namespace Shentun.Peis.LisRequests |
|
|
|
IRepository<SampleType, Guid> sampleTypeRepository, |
|
|
|
IRepository<SampleGroup, Guid> sampleGroupRepository, |
|
|
|
IRepository<SampleGroupDetail> sampleGroupDetailRepository, |
|
|
|
IRepository<ItemType, Guid> itemTypeRepository |
|
|
|
, |
|
|
|
IRepository<ItemType, Guid> itemTypeRepository, |
|
|
|
IRepository<LisRequest, Guid> lisRequestRepository, |
|
|
|
SysParmValueManager sysParmValueManager) |
|
|
|
SysParmValueManager sysParmValueManager, |
|
|
|
IUnitOfWorkManager unitOfWorkManager) |
|
|
|
{ |
|
|
|
this._userRepository = userRepository; |
|
|
|
this._patientRegisterRepository = patientRegisterRepository; |
|
|
|
@ -88,6 +91,7 @@ namespace Shentun.Peis.LisRequests |
|
|
|
_itemTypeRepository = itemTypeRepository; |
|
|
|
_lisRequestRepository = lisRequestRepository; |
|
|
|
_sysParmValueManager = sysParmValueManager; |
|
|
|
_unitOfWorkManager = unitOfWorkManager; |
|
|
|
} |
|
|
|
|
|
|
|
[HttpPost("api/app/LisRequest/GetListInFilter")] |
|
|
|
@ -622,96 +626,130 @@ namespace Shentun.Peis.LisRequests |
|
|
|
lisRequestNoPrintMode = "0"; |
|
|
|
|
|
|
|
|
|
|
|
Guid patientRegisterId; |
|
|
|
if (lisRequestNoPrintMode == "0") |
|
|
|
{ |
|
|
|
patientRegisterId = (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 lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id |
|
|
|
where lisRequest.LisRequestNo == input.LisRequestNo |
|
|
|
select patientRegister.Id).FirstOrDefault(); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
patientRegisterId = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
where patientRegister.PatientRegisterNo == input.LisRequestNo |
|
|
|
select patientRegister.Id).FirstOrDefault(); |
|
|
|
} |
|
|
|
|
|
|
|
var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync() |
|
|
|
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId |
|
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id |
|
|
|
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id |
|
|
|
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id |
|
|
|
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id |
|
|
|
where lisRequest.LisRequestNo == input.LisRequestNo |
|
|
|
select new |
|
|
|
{ |
|
|
|
lisRequest, |
|
|
|
registerCheckAsbitem, |
|
|
|
asbitem, |
|
|
|
registerCheck, |
|
|
|
patientRegister, |
|
|
|
patient |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
if (query.Count == 0) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("检验单号不存在"); |
|
|
|
} |
|
|
|
if (patientRegisterId == Guid.Empty) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("条码不正确"); |
|
|
|
} |
|
|
|
|
|
|
|
var patientRegisterGroup = query.GroupBy(g => g.patientRegister); |
|
|
|
//生成LIS条码
|
|
|
|
var lisRequests = await _lisRequestManager.SetLisRequestAsync(patientRegisterId); |
|
|
|
await _unitOfWorkManager.Current.SaveChangesAsync(); |
|
|
|
await _unitOfWorkManager.Current.CompleteAsync(); |
|
|
|
|
|
|
|
var resultDto = new LisPatientRegisterDto |
|
|
|
using (var uow = _unitOfWorkManager.Begin( |
|
|
|
requiresNew: false, isTransactional: false |
|
|
|
)) |
|
|
|
{ |
|
|
|
if (lisRequestNoPrintMode == "0") |
|
|
|
{ |
|
|
|
Age = patientRegisterGroup.FirstOrDefault().Key.Age, |
|
|
|
LisRequestNo = input.LisRequestNo, |
|
|
|
PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, |
|
|
|
SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, |
|
|
|
SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, |
|
|
|
AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto |
|
|
|
|
|
|
|
var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync() |
|
|
|
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId |
|
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id |
|
|
|
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id |
|
|
|
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id |
|
|
|
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id |
|
|
|
where lisRequest.LisRequestNo == input.LisRequestNo |
|
|
|
select new |
|
|
|
{ |
|
|
|
lisRequest, |
|
|
|
registerCheckAsbitem, |
|
|
|
asbitem, |
|
|
|
registerCheck, |
|
|
|
patientRegister, |
|
|
|
patient |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
if (query.Count == 0) |
|
|
|
{ |
|
|
|
AsbitemId = ss.registerCheckAsbitem.AsbitemId, |
|
|
|
AsbitemName = ss.asbitem.DisplayName, |
|
|
|
AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount |
|
|
|
}).ToList() |
|
|
|
}; |
|
|
|
throw new UserFriendlyException("检验单号不存在"); |
|
|
|
} |
|
|
|
|
|
|
|
return resultDto; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
//人员条码模式
|
|
|
|
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id |
|
|
|
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 _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id |
|
|
|
where patientRegister.PatientRegisterNo == input.LisRequestNo |
|
|
|
select new |
|
|
|
{ |
|
|
|
registerCheckAsbitem, |
|
|
|
asbitem, |
|
|
|
registerCheck, |
|
|
|
patientRegister, |
|
|
|
patient, |
|
|
|
lisRequest |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
if (query.Count == 0) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("人员条码号不存在"); |
|
|
|
} |
|
|
|
var patientRegisterGroup = query.GroupBy(g => g.patientRegister); |
|
|
|
|
|
|
|
var patientRegisterGroup = query.GroupBy(g => g.patientRegister); |
|
|
|
var resultDto = new LisPatientRegisterDto |
|
|
|
{ |
|
|
|
Age = patientRegisterGroup.FirstOrDefault().Key.Age, |
|
|
|
LisRequestNo = input.LisRequestNo, |
|
|
|
PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, |
|
|
|
SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, |
|
|
|
SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, |
|
|
|
AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto |
|
|
|
{ |
|
|
|
AsbitemId = ss.registerCheckAsbitem.AsbitemId, |
|
|
|
AsbitemName = ss.asbitem.DisplayName, |
|
|
|
AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount |
|
|
|
}).ToList() |
|
|
|
}; |
|
|
|
|
|
|
|
var resultDto = new LisPatientRegisterDto |
|
|
|
return resultDto; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Age = patientRegisterGroup.FirstOrDefault().Key.Age, |
|
|
|
LisRequestNo = input.LisRequestNo, |
|
|
|
PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, |
|
|
|
SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, |
|
|
|
SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, |
|
|
|
AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto |
|
|
|
//人员条码模式
|
|
|
|
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id |
|
|
|
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 _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id |
|
|
|
where patientRegister.PatientRegisterNo == input.LisRequestNo |
|
|
|
select new |
|
|
|
{ |
|
|
|
registerCheckAsbitem, |
|
|
|
asbitem, |
|
|
|
registerCheck, |
|
|
|
patientRegister, |
|
|
|
patient, |
|
|
|
lisRequest |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
if (query.Count == 0) |
|
|
|
{ |
|
|
|
AsbitemId = ss.registerCheckAsbitem.AsbitemId, |
|
|
|
AsbitemName = ss.asbitem.DisplayName, |
|
|
|
AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount |
|
|
|
}).ToList() |
|
|
|
}; |
|
|
|
throw new UserFriendlyException("人员条码号不存在"); |
|
|
|
} |
|
|
|
|
|
|
|
var patientRegisterGroup = query.GroupBy(g => g.patientRegister); |
|
|
|
|
|
|
|
return resultDto; |
|
|
|
var resultDto = new LisPatientRegisterDto |
|
|
|
{ |
|
|
|
Age = patientRegisterGroup.FirstOrDefault().Key.Age, |
|
|
|
LisRequestNo = input.LisRequestNo, |
|
|
|
PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, |
|
|
|
SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, |
|
|
|
SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, |
|
|
|
AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto |
|
|
|
{ |
|
|
|
AsbitemId = ss.registerCheckAsbitem.AsbitemId, |
|
|
|
AsbitemName = ss.asbitem.DisplayName, |
|
|
|
AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount |
|
|
|
}).ToList() |
|
|
|
}; |
|
|
|
|
|
|
|
return resultDto; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |