Browse Source

采样

master
wxd 11 months ago
parent
commit
c9ee766b28
  1. 22
      src/Shentun.Peis.Application.Contracts/LisRequests/SetLisRequestSamplerStatusInputDto.cs
  2. 10
      src/Shentun.Peis.Application.Contracts/PrintReports/MedicalReportDto.cs
  3. 73
      src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs
  4. 29
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  5. 5
      src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs

22
src/Shentun.Peis.Application.Contracts/LisRequests/SetLisRequestSamplerStatusInputDto.cs

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.LisRequests
{
/// <summary>
///
/// </summary>
public class SetLisRequestSamplerStatusInputDto
{
/// <summary>
/// 检验条码
/// </summary>
public List<string> LisRequestNos { get; set; }=new List<string>();
/// <summary>
/// 标本类型id集合 本地做配置 不配置就不传 用人员条码时使用
/// </summary>
public List<Guid> SampleTypeIds=new List<Guid>();
}
}

10
src/Shentun.Peis.Application.Contracts/PrintReports/MedicalReportDto.cs

@ -302,6 +302,16 @@ namespace Shentun.Peis.PrintReports
/// </summary>
public string LisSampleNo { get; set; }
/// <summary>
/// 采样人姓名
/// </summary>
public string SamplerName { get; set; }
/// <summary>
/// 采样时间
/// </summary>
public string SamplingTime { get; set; }
/// <summary>
/// 项目类别下的组合项目列表
/// </summary>

73
src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs

@ -52,6 +52,7 @@ namespace Shentun.Peis.LisRequests
private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
private readonly SysParmValueManager _sysParmValueManager;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly ICurrentUser _currentUser;
public LisRequestAppService(
IRepository<IdentityUser, Guid> userRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -71,7 +72,8 @@ namespace Shentun.Peis.LisRequests
IRepository<ItemType, Guid> itemTypeRepository,
IRepository<LisRequest, Guid> lisRequestRepository,
SysParmValueManager sysParmValueManager,
IUnitOfWorkManager unitOfWorkManager)
IUnitOfWorkManager unitOfWorkManager,
ICurrentUser currentUser)
{
this._userRepository = userRepository;
this._patientRegisterRepository = patientRegisterRepository;
@ -92,6 +94,7 @@ namespace Shentun.Peis.LisRequests
_lisRequestRepository = lisRequestRepository;
_sysParmValueManager = sysParmValueManager;
_unitOfWorkManager = unitOfWorkManager;
_currentUser = currentUser;
}
[HttpPost("api/app/LisRequest/GetListInFilter")]
@ -751,5 +754,73 @@ namespace Shentun.Peis.LisRequests
}
/// <summary>
/// 设置人员的检验项目的采样信息
/// </summary>
/// <returns></returns>
[HttpPost("api/app/LisRequest/SetLisRequestSamplerStatus")]
public async Task SetLisRequestSamplerStatusAsync(SetLisRequestSamplerStatusInputDto input)
{
var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode");
if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode))
lisRequestNoPrintMode = "0";
if (lisRequestNoPrintMode == "0")
{
if (input.LisRequestNos.Any())
{
//检验条码
var lisRequestList = await _lisRequestRepository.GetListAsync(m => input.LisRequestNos.Contains(m.LisRequestNo));
lisRequestList.ForEach(lisRequest =>
{
if (_currentUser.Id != null)
lisRequest.SamplerId = _currentUser.Id;
lisRequest.SamplingTime = DateTime.Now;
});
await _lisRequestRepository.UpdateManyAsync(lisRequestList);
}
}
else
{
//人员条码
if (input.LisRequestNos.Any())
{
var patientRegisterNo = input.LisRequestNos.First();
var query = 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 patientRegister.PatientRegisterNo == patientRegisterNo
select new
{
lisRequest
};
if (input.SampleTypeIds.Any())
{
query = query.Where(m => input.SampleTypeIds.Contains(m.lisRequest.SampleTypeId));
}
var lisRequestList = query.Select(s => s.lisRequest).ToList();
if (lisRequestList.Any())
{
foreach (var lisRequest in lisRequestList)
{
if (_currentUser.Id != null)
lisRequest.SamplerId = _currentUser.Id;
lisRequest.SamplingTime = DateTime.Now;
}
await _lisRequestRepository.UpdateManyAsync(lisRequestList);
}
}
}
}
}
}

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

@ -1185,6 +1185,22 @@ namespace Shentun.Peis.PrintReports
.ToList();
var registerCheckIds = registerChecklist.Select(o => o.registerCheck.Id).Distinct().ToList();
#region 获取采样时间
var samplerList = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
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 registerCheckIds.Contains(registerCheck.Id)
select new
{
registerCheckId = registerCheck.Id,
samplerId = lisRequest.SamplerId,
samplingTime = lisRequest.SamplingTime
}).ToList();
#endregion
foreach (var registerCheckId in registerCheckIds)
{
var registerCheckRows = registerChecklist.Where(o => o.registerCheck.Id == registerCheckId).ToList();
@ -1207,6 +1223,17 @@ namespace Shentun.Peis.PrintReports
),
CheckDate = (DateTime)registerCheckRow.registerCheck.CheckDate,
};
#region 采样信息
var sampler = samplerList.FirstOrDefault(f => f.registerCheckId == registerCheckId);
if (sampler != null)
{
medicalReportRegisterCheckDto.SamplerName = _cacheService.GetSurnameAsync(sampler.samplerId).Result;
medicalReportRegisterCheckDto.SamplingTime = DataHelper.ConversionDateShortToString(sampler.samplingTime);
}
#endregion
//检查医生
var checkDoctorId = registerCheckRow.registerCheck.CheckDoctorId;
if (!string.IsNullOrWhiteSpace(checkDoctorId))
@ -1225,7 +1252,7 @@ namespace Shentun.Peis.PrintReports
//lis审核医生+标本号
medicalReportRegisterCheckDto.LisSampleNo = registerCheckRow.registerCheck.LisSampleNo;
// medicalReportRegisterCheckDto.LisAuditorDoctorName = registerCheckRow.registerCheck.LisAuditorDoctorName;
// medicalReportRegisterCheckDto.LisAuditorDoctorName = registerCheckRow.registerCheck.LisAuditorDoctorName;
//lis审核医生
var lisAuditorDoctorId = registerCheckRow.registerCheck.LisAuditorDoctorName;

5
src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs

@ -85,7 +85,8 @@ namespace Shentun.Peis;
typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule),
typeof(AbpAccountWebOpenIddictModule),
typeof(AbpAspNetCoreSerilogModule),
typeof(AbpSwashbuckleModule)
typeof(AbpSwashbuckleModule),
typeof(AbpBackgroundWorkersHangfireModule)
)]
public class PeisHttpApiHostModule : AbpModule
{
@ -250,7 +251,7 @@ public class PeisHttpApiHostModule : AbpModule
*/
//后台计划任务
// ConfigureHangfire(context, configuration);
ConfigureHangfire(context, configuration);
}
/// <summary>

Loading…
Cancel
Save