Browse Source

指引单

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
f123154dce
  1. 213
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  2. 2
      src/Shentun.Peis.Domain/PrintReports/PatientRegisterGuideReportDto.cs
  3. 2
      test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs

213
src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs

@ -173,7 +173,7 @@ namespace Shentun.Peis.PrintReports
var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "medical_center_telphone");
#endregion
var customerOrgList = await _customerOrgRepository.GetListAsync();
//var customerOrgList = await _customerOrgRepository.GetListAsync();
var query = from a in await _patientRegisterRepository.GetQueryableAsync()
join b in await _sexRegisterRepository.GetQueryableAsync()
@ -252,115 +252,123 @@ namespace Shentun.Peis.PrintReports
//生成LIS条码
var lisRequests = await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId);
await _unitOfWorkManager.Current.SaveChangesAsync();
//await _unitOfWorkManager.Current.CompleteAsync();
await _unitOfWorkManager.Current.CompleteAsync();
//检索条码数据
var query = (from patient in await _patientRepository.GetQueryableAsync()
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on patient.Id equals patientRegister.PatientId
join sex in await _sexRegisterRepository.GetQueryableAsync() on patientRegister.SexId equals sex.Id
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on patientRegister.Id equals registerCheckAsbitem.PatientRegisterId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id
join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() on lisRequest.SampleContainerId equals sampleContainer.Id into dd
from sampleContainerHaveEmpty in dd.DefaultIfEmpty()
join sampleType in await _sampleTypeRepository.GetQueryableAsync() on lisRequest.SampleTypeId equals sampleType.Id into ee
from sampleTypeHaveEmpty in ee.DefaultIfEmpty()
where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null)
select new
{
patient,
patientRegister,
sex,
registerCheckAsbitem,
asbitem,
lisRequest,
sampleContainerHaveEmpty,
sampleTypeHaveEmpty
}
).ToList();
lisRequests = query.Select(o => o.lisRequest).Distinct().ToList();
//发送第三方LIS申请
if (lisRequests != null)
using (var uow = _unitOfWorkManager.Begin(
requiresNew: false, isTransactional: false
))
{
foreach (var lisRequest in lisRequests)
var query = (from patient in await _patientRepository.GetQueryableAsync()
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on patient.Id equals patientRegister.PatientId
join sex in await _sexRegisterRepository.GetQueryableAsync() on patientRegister.SexId equals sex.Id
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on patientRegister.Id equals registerCheckAsbitem.PatientRegisterId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id
join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() on lisRequest.SampleContainerId equals sampleContainer.Id into dd
from sampleContainerHaveEmpty in dd.DefaultIfEmpty()
join sampleType in await _sampleTypeRepository.GetQueryableAsync() on lisRequest.SampleTypeId equals sampleType.Id into ee
from sampleTypeHaveEmpty in ee.DefaultIfEmpty()
where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null)
select new
{
patient,
patientRegister,
sex,
registerCheckAsbitem,
asbitem,
lisRequest,
sampleContainerHaveEmpty,
sampleTypeHaveEmpty
}
).ToList();
lisRequests = query.Select(o => o.lisRequest).Distinct().ToList();
//发送第三方LIS申请
if (lisRequests != null)
{
await _lisRequestManager.SendThirdLisRequestAsync(lisRequest.Id);
foreach (var lisRequest in lisRequests)
{
await _lisRequestManager.SendThirdLisRequestAsync(lisRequest.Id);
}
}
}
var lisRequestReportDtoList = query.Select(o => new LisRequestReportDto
{
LisRequestId = o.lisRequest.Id,
PatientNo = o.patient.PatientNo,
Age = o.patientRegister.Age,
AsbitemNames = string.IsNullOrEmpty(o.asbitem.ShortName) ? o.asbitem.DisplayName : o.asbitem.ShortName,
LisRequestNo = o.lisRequest.LisRequestNo,
PatientName = o.patientRegister.PatientName,
PatientRegisterNo = o.patientRegister.PatientRegisterNo,
SampleContainerName = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.DisplayName,
ContainerColor = (o.sampleContainerHaveEmpty == null) ? 16777215 : o.sampleContainerHaveEmpty.ContainerColor,
SampleContainerRemark = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.ContainerRemark,
SampleTypeName = (o.sampleTypeHaveEmpty == null) ? "" : o.sampleTypeHaveEmpty.DisplayName,
SexName = o.sex.DisplayName,
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(o.patientRegister.CustomerOrgId).Result.DisplayName,
DepartmentName = _cacheService.GetCustomerOrgNameAsync(o.patientRegister.CustomerOrgId).Result,
IsPrint = o.lisRequest.IsPrint,
IsSignIn = o.lisRequest.IsSignIn,
SamplingTime = o.lisRequest.SamplingTime,
SignInOrder = o.lisRequest.SignInOrder,
SignInPerson = o.lisRequest.SignInPerson,
SignInTime = o.lisRequest.SignInTime,
}).ToList();
var entlist = lisRequestReportDtoList.GroupBy(g => new
{
g.PatientNo,
g.LisRequestId,
g.LisRequestNo,
g.Age,
g.PatientName,
g.PatientRegisterNo,
g.SampleContainerName,
g.ContainerColor,
g.SampleContainerRemark,
g.SampleTypeName,
g.SexName,
g.CustomerOrgName,
g.DepartmentName,
g.IsPrint,
g.IsSignIn,
g.SamplingTime,
g.SignInOrder,
g.SignInPerson,
g.SignInTime
})
.Select(s => new LisRequestReportDto
var lisRequestReportDtoList = query.Select(o => new LisRequestReportDto
{
PatientNo = s.Key.PatientNo,
LisRequestId = s.Key.LisRequestId,
SexName = s.Key.SexName,
SampleTypeName = s.Key.SampleTypeName,
SampleContainerRemark = s.Key.SampleContainerRemark,
SampleContainerName = s.Key.SampleContainerName,
ContainerColor = s.Key.ContainerColor,
PatientRegisterNo = s.Key.PatientRegisterNo,
PatientName = s.Key.PatientName,
Age = s.Key.Age,
LisRequestNo = s.Key.LisRequestNo,
CustomerOrgName = s.Key.CustomerOrgName,
DepartmentName = s.Key.DepartmentName,
AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)),
IsPrint = s.Key.IsPrint,
IsSignIn = s.Key.IsSignIn,
SamplingTime = s.Key.SamplingTime,
SignInOrder = s.Key.SignInOrder,
SignInPerson = s.Key.SignInPerson,
SignInTime = s.Key.SignInTime,
LisRequestId = o.lisRequest.Id,
PatientNo = o.patient.PatientNo,
Age = o.patientRegister.Age,
AsbitemNames = string.IsNullOrEmpty(o.asbitem.ShortName) ? o.asbitem.DisplayName : o.asbitem.ShortName,
LisRequestNo = o.lisRequest.LisRequestNo,
PatientName = o.patientRegister.PatientName,
PatientRegisterNo = o.patientRegister.PatientRegisterNo,
SampleContainerName = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.DisplayName,
ContainerColor = (o.sampleContainerHaveEmpty == null) ? 16777215 : o.sampleContainerHaveEmpty.ContainerColor,
SampleContainerRemark = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.ContainerRemark,
SampleTypeName = (o.sampleTypeHaveEmpty == null) ? "" : o.sampleTypeHaveEmpty.DisplayName,
SexName = o.sex.DisplayName,
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(o.patientRegister.CustomerOrgId).Result.DisplayName,
DepartmentName = _cacheService.GetCustomerOrgNameAsync(o.patientRegister.CustomerOrgId).Result,
IsPrint = o.lisRequest.IsPrint,
IsSignIn = o.lisRequest.IsSignIn,
SamplingTime = o.lisRequest.SamplingTime,
SignInOrder = o.lisRequest.SignInOrder,
SignInPerson = o.lisRequest.SignInPerson,
SignInTime = o.lisRequest.SignInTime,
}).ToList();
return entlist;
var entlist = lisRequestReportDtoList.GroupBy(g => new
{
g.PatientNo,
g.LisRequestId,
g.LisRequestNo,
g.Age,
g.PatientName,
g.PatientRegisterNo,
g.SampleContainerName,
g.ContainerColor,
g.SampleContainerRemark,
g.SampleTypeName,
g.SexName,
g.CustomerOrgName,
g.DepartmentName,
g.IsPrint,
g.IsSignIn,
g.SamplingTime,
g.SignInOrder,
g.SignInPerson,
g.SignInTime
})
.Select(s => new LisRequestReportDto
{
PatientNo = s.Key.PatientNo,
LisRequestId = s.Key.LisRequestId,
SexName = s.Key.SexName,
SampleTypeName = s.Key.SampleTypeName,
SampleContainerRemark = s.Key.SampleContainerRemark,
SampleContainerName = s.Key.SampleContainerName,
ContainerColor = s.Key.ContainerColor,
PatientRegisterNo = s.Key.PatientRegisterNo,
PatientName = s.Key.PatientName,
Age = s.Key.Age,
LisRequestNo = s.Key.LisRequestNo,
CustomerOrgName = s.Key.CustomerOrgName,
DepartmentName = s.Key.DepartmentName,
AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)),
IsPrint = s.Key.IsPrint,
IsSignIn = s.Key.IsSignIn,
SamplingTime = s.Key.SamplingTime,
SignInOrder = s.Key.SignInOrder,
SignInPerson = s.Key.SignInPerson,
SignInTime = s.Key.SignInTime,
}).ToList();
await uow.CompleteAsync();
return entlist;
}
}
[HttpPost("api/app/PrintReport/GetLisRequestReportByLisRequestId")]
@ -793,6 +801,7 @@ namespace Shentun.Peis.PrintReports
AsbitemName = s.Asbitem.DisplayName,
AsbitemGuide = _asbitemGuideManager.GetAsbitemGuideConvertSexId(medicalCenterId, s.AsbitemId, SexId),
AsbitemDisplayOrder = s.Asbitem.DisplayOrder,
ItemTypeDisplayOrder = s.Asbitem.ItemType.DisplayOrder,
GuideDisplayOrder = s.Asbitem.ItemType.GuidType.DisplayOrder,
GuideName = s.Asbitem.ItemType.GuidType.DisplayName
})
@ -807,7 +816,7 @@ namespace Shentun.Peis.PrintReports
{
AsbitemName = ss.AsbitemName,
AsbitemGuide = ss.AsbitemGuide,
DisplayOrder = ss.AsbitemDisplayOrder
DisplayOrder = (ss.ItemTypeDisplayOrder * 3000) + ss.AsbitemDisplayOrder
}).OrderBy(o => o.DisplayOrder).ToList()
}).OrderBy(o => o.DisplayOrder).ToList();

2
src/Shentun.Peis.Domain/PrintReports/PatientRegisterGuideReportDto.cs

@ -191,6 +191,8 @@ namespace Shentun.Peis.PrintReports
public string AsbitemGuide { get; set; }
public int AsbitemDisplayOrder { get; set; }
public int ItemTypeDisplayOrder { get; set; }
/// <summary>
/// 指引名称
/// </summary>

2
test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs

@ -34,7 +34,7 @@ namespace Shentun.Peis
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
{
var items = await _appService.GetLisRequestReportByPatientRegisterIdAsync(new PatientRegisterIdInputDto()
{ PatientRegisterId = new Guid("3a12707e-bc54-129e-64d0-8cf5556a023c") });
{ PatientRegisterId = new Guid("3a127094-8fcf-78cc-3397-dedd7decb7b4") });
_output.WriteLine(items.Count().ToString());
foreach (var item in items)
{

Loading…
Cancel
Save