Browse Source

lis对接,条码分组

master
wxd 2 years ago
parent
commit
4fc26e4122
  1. 8
      src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs
  2. 182
      src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs
  3. 128
      src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs
  4. 13
      src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
  5. 60
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  6. 34
      src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
  7. 29
      src/Shentun.Peis.Application/Rooms/RoomAppService.cs
  8. 4
      src/Shentun.Peis.Domain/Rooms/RoomManager.cs
  9. 2
      src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs

8
src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs

@ -1,5 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Text; using System.Text;
namespace Shentun.Peis.Rooms namespace Shentun.Peis.Rooms
@ -7,6 +9,12 @@ namespace Shentun.Peis.Rooms
public class RoomDto : AuditedEntityDtoName public class RoomDto : AuditedEntityDtoName
{ {
public string DisplayName { get; set; } = null!; public string DisplayName { get; set; } = null!;
/// <summary>
/// 房间号
/// </summary>
public string RoomNo { get; set; }
/// <summary> /// <summary>
/// 项目类别编号 /// 项目类别编号
/// </summary> /// </summary>

182
src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs

@ -14,6 +14,7 @@ using Shentun.Peis.PlugIns.ImportLisResults;
using Shentun.Peis.ReferenceRanges; using Shentun.Peis.ReferenceRanges;
using Shentun.Peis.RegisterCheckItems; using Shentun.Peis.RegisterCheckItems;
using Shentun.Peis.RegisterChecks; using Shentun.Peis.RegisterChecks;
using Shentun.Peis.SysParmValues;
using Shentun.Peis.Units; using Shentun.Peis.Units;
using SqlSugar; using SqlSugar;
using System; using System;
@ -29,6 +30,7 @@ using Volo.Abp.Domain.Repositories;
using Volo.Abp.Guids; using Volo.Abp.Guids;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.Users; using Volo.Abp.Users;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace Shentun.Peis.ImportLisResults namespace Shentun.Peis.ImportLisResults
{ {
@ -66,6 +68,7 @@ namespace Shentun.Peis.ImportLisResults
private static bool _isRunning = false; private static bool _isRunning = false;
private static readonly object lockObject = new object(); private static readonly object lockObject = new object();
private readonly ColumnReferenceCodeManager _columnReferenceCodeManager; private readonly ColumnReferenceCodeManager _columnReferenceCodeManager;
private readonly SysParmValueManager _sysParmValueManager;
public ImportLisResultAppService(IRepository<RegisterCheck, Guid> registerCheckRepository, public ImportLisResultAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository, IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository, IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -91,7 +94,8 @@ namespace Shentun.Peis.ImportLisResults
UnitManager unitManager, UnitManager unitManager,
RegisterCheckAppService registerCheckAppService, RegisterCheckAppService registerCheckAppService,
IRepository<ThirdInterface> thirdInterfaceRepository, IRepository<ThirdInterface> thirdInterfaceRepository,
ColumnReferenceCodeManager columnReferenceCodeManager)
ColumnReferenceCodeManager columnReferenceCodeManager,
SysParmValueManager sysParmValueManager)
{ {
_registerCheckRepository = registerCheckRepository; _registerCheckRepository = registerCheckRepository;
_userRepository = userRepository; _userRepository = userRepository;
@ -120,6 +124,7 @@ namespace Shentun.Peis.ImportLisResults
_registerCheckAppService = registerCheckAppService; _registerCheckAppService = registerCheckAppService;
_thirdInterfaceRepository = thirdInterfaceRepository; _thirdInterfaceRepository = thirdInterfaceRepository;
_columnReferenceCodeManager = columnReferenceCodeManager; _columnReferenceCodeManager = columnReferenceCodeManager;
_sysParmValueManager = sysParmValueManager;
} }
/// <summary> /// <summary>
/// 从第三方接口导入结果 /// 从第三方接口导入结果
@ -485,13 +490,184 @@ namespace Shentun.Peis.ImportLisResults
LisAuditorDoctorName = item.LisAuditorDoctorName, LisAuditorDoctorName = item.LisAuditorDoctorName,
LisSampleNo = item.LisSampleNo LisSampleNo = item.LisSampleNo
}; };
inputDtoList.Add(inputDto); inputDtoList.Add(inputDto);
}
var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode");
if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode))
lisRequestNoPrintMode = "0";
if (lisRequestNoPrintMode == "0")
await ImportResultAsync(inputDtoList);
else
await ImportResultByPatientRegisterNoAsync(inputDtoList);
}
/// <summary>
/// 从第三方接口导入结果
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
private async Task ImportResultByPatientRegisterNoAsync(List<CreateImportLisResultDto> 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 registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckItem.RegisterCheckId
join item in await _itemRepository.GetQueryableAsync()
on registerCheckItem.ItemId equals item.Id
join lisRequest in await _lisRequestRepository.GetQueryableAsync()
on registerCheckAsbitem.LisRequestId equals lisRequest.Id
where input.Select(o => o.LisRequestNo).FirstOrDefault() == patientRegister.PatientRegisterNo
select new
{
patientRegister,
registerCheck,
registerCheckAsbitem,
registerCheckItem,
item,
lisRequest,
}).ToList();
var registerChecks = new List<RegisterCheck>();
_referenceRanges = _referenceRangeRepository.GetListAsync().Result;
input = input.Where(o => !string.IsNullOrWhiteSpace(o.Result)
&& !string.IsNullOrWhiteSpace(o.LisRequestNo)
&& o.ItemId != Guid.Empty).ToList();
foreach (var inputItem in input)
{
if (string.IsNullOrWhiteSpace(inputItem.CheckDoctorName))
{
throw new UserFriendlyException("检查医生不能为空");
}
var lisRequestItems = list.Where(o => o.patientRegister.PatientRegisterNo == inputItem.LisRequestNo
&& o.registerCheckItem.ItemId == inputItem.ItemId).ToList();
foreach (var lisRequestItem in lisRequestItems)
{
if (lisRequestItem == null)
{
continue;
}
lisRequestItem.registerCheckItem.Result = inputItem.Result;
//var itemSource = new RegisterCheckItem()
//{
// Result = inputItem.Result,
// ReferenceRangeValue = inputItem.ReferenceRangeValue,
// Unit = inputItem.Unit,
// CriticalRangeValue = inputItem.CriticalRangeValue
//};
//修改参考范围
await UpdateItemReferenceRangeValueAsync(inputItem.ItemId, lisRequestItem.patientRegister.SexId,
lisRequestItem.patientRegister.Age, inputItem.ReferenceRangeValue);
//修改单位
await UpdateItemUnitAsync(inputItem.ItemId, inputItem.Unit);
//await _registerCheckItemManager.UpdateRegisterCheckItemAsync(itemSource, lisRequestItem.registerCheckItem);
//await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem,true);
if (!registerChecks.Where(o => o.Id == lisRequestItem.registerCheck.Id).ToList().Any())
{
lisRequestItem.registerCheck.CheckDoctorId = inputItem.CheckDoctorName;
lisRequestItem.registerCheck.CheckDate = inputItem.CheckDate;
lisRequestItem.registerCheck.ExecOrganizationUnitId = inputItem.ExecOrganizationUnitId;
lisRequestItem.registerCheck.LisAuditorDoctorName = inputItem.LisAuditorDoctorName;
lisRequestItem.registerCheck.LisSampleNo = inputItem.LisSampleNo;
registerChecks.Add(lisRequestItem.registerCheck);
}
}
} }
List<RegisterCheckAsbitem> updateRegisterCheckAsbitem = new List<RegisterCheckAsbitem>();
//更新参考范围和单位
foreach (var registerCheck in registerChecks)
{
var lisRequestItems = list.Where(o => o.registerCheck.Id == registerCheck.Id).ToList();
foreach (var lisRequestItem in lisRequestItems)
{
var referenceRange = _referenceRangeManager.GetReferenceRangeBySexAgeTemp(_referenceRanges,
lisRequestItem.item, lisRequestItem.patientRegister.SexId, lisRequestItem.patientRegister.Age);
if (referenceRange != null)
{
lisRequestItem.registerCheckItem.ReferenceRangeValue = referenceRange.ReferenceRangeValue;
lisRequestItem.registerCheckItem.CriticalRangeValue = referenceRange.CriticalRangeValue;
}
else
{
lisRequestItem.registerCheckItem.ReferenceRangeValue = "";
lisRequestItem.registerCheckItem.CriticalRangeValue = "";
}
var unit = _units.Where(o => o.Id == lisRequestItem.item.UnitId).FirstOrDefault();
if (unit != null)
{
lisRequestItem.registerCheckItem.Unit = unit.DisplayName;
}
else
{
lisRequestItem.registerCheckItem.Unit = "";
}
await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem);
}
}
await CurrentUnitOfWork.SaveChangesAsync();
//保存结果
foreach (var registerCheck in registerChecks)
{
var updateCheckResultDto = new UpdateCheckResultDto()
{
RegisterCheckId = registerCheck.Id,
CheckDoctorId = registerCheck.CheckDoctorId,
CheckDate = registerCheck.CheckDate,
ExecOrganizationUnitId = registerCheck.ExecOrganizationUnitId,
RegisterCheckItems = list.Where(o => o.registerCheck.Id == registerCheck.Id)
.Select(o => new UpdateRegisterCheckItemDetail()
{
ItemId = o.registerCheckItem.ItemId,
Result = o.registerCheckItem.Result,
}).ToList(),
LisSampleNo = registerCheck.LisSampleNo,
LisAuditorDoctorName = registerCheck.LisAuditorDoctorName
};
var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
{
RegisterCheckId = registerCheck.Id,
Items = list.Where(o => o.registerCheck.Id == registerCheck.Id)
.Select(o => new GetDiagnosisResultRequest_Item()
{
ItemId = o.registerCheckItem.ItemId,
Result = o.registerCheckItem.Result,
}).ToList()
};
//生成小结
var summarry = await _diagnosisFunctionAppService.GetDoctorCheckDiagnosisResultAsync(getDiagnosisResultRequestDto);
for (var i = 0; i < summarry.DiagnosisResultDetails.Count; i++)
{
updateCheckResultDto.Summarys.Add(new UpdateRegisterCheckSummaryDetail()
{
Summary = summarry.DiagnosisResultDetails[i].DiagnosisResult,
SummaryFlag = '0'
});
}
await _registerCheckAppService.UpdateCheckResult(updateCheckResultDto);
}
await ImportResultAsync(inputDtoList);
} }
} }
} }

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

@ -2,11 +2,13 @@
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Org.BouncyCastle.Asn1.Ocsp;
using Shentun.Peis.CustomerOrgs; using Shentun.Peis.CustomerOrgs;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters; using Shentun.Peis.PatientRegisters;
using Shentun.Peis.PrintReports; using Shentun.Peis.PrintReports;
using Shentun.Peis.SysParmValues;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -46,6 +48,7 @@ namespace Shentun.Peis.LisRequests
private readonly IRepository<SampleContainer, Guid> _sampleContainerRepository; private readonly IRepository<SampleContainer, Guid> _sampleContainerRepository;
private readonly IRepository<SampleType, Guid> _sampleTypeRepository; private readonly IRepository<SampleType, Guid> _sampleTypeRepository;
private readonly IRepository<LisRequest, Guid> _lisRequestRepository; private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
private readonly SysParmValueManager _sysParmValueManager;
public LisRequestAppService( public LisRequestAppService(
IRepository<IdentityUser, Guid> userRepository, IRepository<IdentityUser, Guid> userRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository, IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -64,7 +67,8 @@ namespace Shentun.Peis.LisRequests
IRepository<SampleGroupDetail> sampleGroupDetailRepository, IRepository<SampleGroupDetail> sampleGroupDetailRepository,
IRepository<ItemType, Guid> itemTypeRepository IRepository<ItemType, Guid> itemTypeRepository
, ,
IRepository<LisRequest, Guid> lisRequestRepository)
IRepository<LisRequest, Guid> lisRequestRepository,
SysParmValueManager sysParmValueManager)
{ {
this._userRepository = userRepository; this._userRepository = userRepository;
this._patientRegisterRepository = patientRegisterRepository; this._patientRegisterRepository = patientRegisterRepository;
@ -83,6 +87,7 @@ namespace Shentun.Peis.LisRequests
_sampleGroupDetailRepository = sampleGroupDetailRepository; _sampleGroupDetailRepository = sampleGroupDetailRepository;
_itemTypeRepository = itemTypeRepository; _itemTypeRepository = itemTypeRepository;
_lisRequestRepository = lisRequestRepository; _lisRequestRepository = lisRequestRepository;
_sysParmValueManager = sysParmValueManager;
} }
[HttpPost("api/app/LisRequest/GetListInFilter")] [HttpPost("api/app/LisRequest/GetListInFilter")]
@ -612,48 +617,101 @@ namespace Shentun.Peis.LisRequests
if (input == null) if (input == null)
throw new UserFriendlyException("请求参数无效"); throw new UserFriendlyException("请求参数无效");
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)
var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode");
if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode))
lisRequestNoPrintMode = "0";
if (lisRequestNoPrintMode == "0")
{ {
throw new UserFriendlyException("检验单号不存在");
}
var patientRegisterGroup = query.GroupBy(g => g.patientRegister);
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("检验单号不存在");
}
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);
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;
return resultDto;
}
} }
} }
} }

13
src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs

@ -454,15 +454,11 @@ namespace Shentun.Peis.PatientRegisters
[HttpPost("api/app/patientregister/getlistinfilter")] [HttpPost("api/app/patientregister/getlistinfilter")]
public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetListInFilterAsync(GetListInSearchDto input) public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetListInFilterAsync(GetListInSearchDto input)
{ {
//var userList = await _userRepository.GetListAsync();
var customerOrgList = await _customerOrgRepository.GetListAsync(); var customerOrgList = await _customerOrgRepository.GetListAsync();
//Stopwatch stopwatch = Stopwatch.StartNew();
//stopwatch.Start();
Stopwatch stopwatch = Stopwatch.StartNew();
#region MyRegion #region MyRegion
//var entlist = (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable();
var entlist = from patientRegister in (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable() var entlist = from patientRegister in (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable()
join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync() join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync()
on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp
@ -536,11 +532,18 @@ namespace Shentun.Peis.PatientRegisters
} }
#endregion #endregion
stopwatch.Stop();
_logger.LogInformation($"stopwatch耗时:{stopwatch.ElapsedMilliseconds}");
Stopwatch stopwatch2 = Stopwatch.StartNew();
int totalCount = entlist.Count(); int totalCount = entlist.Count();
entlist = entlist.OrderByDescending(o => o.patientRegister.CompleteFlag).ThenBy(o => o.patientRegister.Id).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount); entlist = entlist.OrderByDescending(o => o.patientRegister.CompleteFlag).ThenBy(o => o.patientRegister.Id).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
stopwatch2.Stop();
_logger.LogInformation($"stopwatch2耗时:{stopwatch.ElapsedMilliseconds}");
var entdto = entlist.Select(s => new PatientRegisterOrNoDto var entdto = entlist.Select(s => new PatientRegisterOrNoDto
{ {

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

@ -29,6 +29,7 @@ using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace Shentun.Peis.PrintReports namespace Shentun.Peis.PrintReports
{ {
@ -314,7 +315,8 @@ namespace Shentun.Peis.PrintReports
from sampleTypeHaveEmpty in ee.DefaultIfEmpty() from sampleTypeHaveEmpty in ee.DefaultIfEmpty()
join sampleGroupDetail in await _sampleGroupDetailRepository.GetQueryableAsync() on asbitem.Id equals sampleGroupDetail.AsbitemId into sampleGroupDetailTemp join sampleGroupDetail in await _sampleGroupDetailRepository.GetQueryableAsync() on asbitem.Id equals sampleGroupDetail.AsbitemId into sampleGroupDetailTemp
from sampleTypeHaveEmptyHaveEmpty in sampleGroupDetailTemp.DefaultIfEmpty() from sampleTypeHaveEmptyHaveEmpty in sampleGroupDetailTemp.DefaultIfEmpty()
join sampleGroup in await _sampleGroupRepository.GetQueryableAsync() on sampleTypeHaveEmptyHaveEmpty.SampleGroupId equals sampleGroup.Id into sampleGroupTemp
join sampleGroup in await _sampleGroupRepository.GetQueryableAsync()
on sampleTypeHaveEmptyHaveEmpty.SampleGroupId equals sampleGroup.Id into sampleGroupTemp
from sampleGroupHaveEmpty in sampleGroupTemp.DefaultIfEmpty() from sampleGroupHaveEmpty in sampleGroupTemp.DefaultIfEmpty()
where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null) where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null)
select new select new
@ -368,6 +370,43 @@ namespace Shentun.Peis.PrintReports
SamplePrintCount = o.samplePrintCount SamplePrintCount = o.samplePrintCount
}).ToList(); }).ToList();
var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(query.FirstOrDefault().patientRegister.MedicalCenterId, "lis_request_no_print_mode");
if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode))
lisRequestNoPrintMode = "0";
//var entlist = lisRequestReportDtoList.GroupBy(g => new
//{
// g.LisRequestNo,
// g.SampleGroupName
//})
// .Select(s => new LisRequestReportDto
// {
// PatientNo = s.FirstOrDefault().PatientNo,
// LisRequestId = s.FirstOrDefault().LisRequestId,
// SexName = s.FirstOrDefault().SexName,
// SampleTypeName = s.FirstOrDefault().SampleTypeName,
// SampleContainerRemark = s.FirstOrDefault().SampleContainerRemark,
// SampleContainerName = s.FirstOrDefault().SampleContainerName,
// ContainerColor = s.FirstOrDefault().ContainerColor,
// PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
// PatientName = s.FirstOrDefault().PatientName,
// Age = s.FirstOrDefault().Age,
// LisRequestNo = lisRequestNoPrintMode == "0" ? s.Key.LisRequestNo : s.FirstOrDefault().PatientRegisterNo,
// CustomerOrgName = s.FirstOrDefault().CustomerOrgName,
// DepartmentName = s.FirstOrDefault().DepartmentName,
// AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)),
// IsPrint = s.FirstOrDefault().IsPrint,
// IsSignIn = s.FirstOrDefault().IsSignIn,
// SamplingTime = s.FirstOrDefault().SamplingTime,
// SignInOrder = s.FirstOrDefault().SignInOrder,
// SignInPerson = s.FirstOrDefault().SignInPerson,
// SignInTime = s.FirstOrDefault().SignInTime,
// SampleGroupName = s.Key.SampleGroupName,
// MobileTelephone = s.FirstOrDefault().MobileTelephone,
// SamplePrintCount = s.FirstOrDefault().SamplePrintCount
// }).ToList();
var entlist = lisRequestReportDtoList.GroupBy(g => new var entlist = lisRequestReportDtoList.GroupBy(g => new
{ {
g.PatientNo, g.PatientNo,
@ -389,7 +428,8 @@ namespace Shentun.Peis.PrintReports
g.SignInOrder, g.SignInOrder,
g.SignInPerson, g.SignInPerson,
g.SignInTime, g.SignInTime,
g.MobileTelephone
g.MobileTelephone,
g.SampleGroupName
}) })
.Select(s => new LisRequestReportDto .Select(s => new LisRequestReportDto
{ {
@ -403,7 +443,7 @@ namespace Shentun.Peis.PrintReports
PatientRegisterNo = s.Key.PatientRegisterNo, PatientRegisterNo = s.Key.PatientRegisterNo,
PatientName = s.Key.PatientName, PatientName = s.Key.PatientName,
Age = s.Key.Age, Age = s.Key.Age,
LisRequestNo = s.Key.LisRequestNo,
LisRequestNo = lisRequestNoPrintMode == "0" ? s.Key.LisRequestNo : s.Key.PatientRegisterNo,
CustomerOrgName = s.Key.CustomerOrgName, CustomerOrgName = s.Key.CustomerOrgName,
DepartmentName = s.Key.DepartmentName, DepartmentName = s.Key.DepartmentName,
AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)), AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)),
@ -413,7 +453,7 @@ namespace Shentun.Peis.PrintReports
SignInOrder = s.Key.SignInOrder, SignInOrder = s.Key.SignInOrder,
SignInPerson = s.Key.SignInPerson, SignInPerson = s.Key.SignInPerson,
SignInTime = s.Key.SignInTime, SignInTime = s.Key.SignInTime,
SampleGroupName = s.FirstOrDefault().SampleGroupName,
SampleGroupName = s.Key.SampleGroupName,
MobileTelephone = s.Key.MobileTelephone, MobileTelephone = s.Key.MobileTelephone,
SamplePrintCount = s.FirstOrDefault().SamplePrintCount SamplePrintCount = s.FirstOrDefault().SamplePrintCount
}).ToList(); }).ToList();
@ -434,6 +474,10 @@ namespace Shentun.Peis.PrintReports
[HttpPost("api/app/PrintReport/GetLisRequestReportByLisRequestId")] [HttpPost("api/app/PrintReport/GetLisRequestReportByLisRequestId")]
public async Task<LisRequestReportDto> GetLisRequestReportByLisRequestIdAsync(LisRequestIdInputDto input) public async Task<LisRequestReportDto> GetLisRequestReportByLisRequestIdAsync(LisRequestIdInputDto input)
{ {
var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode");
if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode))
lisRequestNoPrintMode = "0";
var list = (from patient in await _patientRepository.GetQueryableAsync() var list = (from patient in await _patientRepository.GetQueryableAsync()
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on patient.Id equals patientRegister.PatientId on patient.Id equals patientRegister.PatientId
@ -477,7 +521,7 @@ namespace Shentun.Peis.PrintReports
{ {
LisRequestId = input.LisRequestId, LisRequestId = input.LisRequestId,
LisRequestNo = lisRequestInfo.lisRequest.LisRequestNo,
LisRequestNo = lisRequestNoPrintMode == "0" ? lisRequestInfo.lisRequest.LisRequestNo : lisRequestInfo.patientRegister.PatientRegisterNo,
PatientNo = lisRequestInfo.patient.PatientNo, PatientNo = lisRequestInfo.patient.PatientNo,
PatientRegisterNo = lisRequestInfo.patientRegister.PatientRegisterNo, PatientRegisterNo = lisRequestInfo.patientRegister.PatientRegisterNo,
PatientName = lisRequestInfo.patientRegister.PatientName, PatientName = lisRequestInfo.patientRegister.PatientName,
@ -768,8 +812,8 @@ namespace Shentun.Peis.PrintReports
PatientName = s.FirstOrDefault().PatientName, PatientName = s.FirstOrDefault().PatientName,
PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo, PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
SexName = s.FirstOrDefault().SexName, SexName = s.FirstOrDefault().SexName,
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().CustomerOrgId).Result.DisplayName,
DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().CustomerOrgId).Result.ShortName,
DepartmentName = _cacheService.GetCustomerOrgAsync(s.FirstOrDefault().CustomerOrgId).Result.ShortName,
MobileTelephone = s.FirstOrDefault().MobileTelephone MobileTelephone = s.FirstOrDefault().MobileTelephone
}); });
} }
@ -1159,7 +1203,7 @@ namespace Shentun.Peis.PrintReports
} }
//lis审核医生+标本号 //lis审核医生+标本号
medicalReportRegisterCheckDto.LisSampleNo= registerCheckRow.registerCheck.LisSampleNo;
medicalReportRegisterCheckDto.LisSampleNo = registerCheckRow.registerCheck.LisSampleNo;
medicalReportRegisterCheckDto.LisAuditorDoctorName = registerCheckRow.registerCheck.LisAuditorDoctorName; medicalReportRegisterCheckDto.LisAuditorDoctorName = registerCheckRow.registerCheck.LisAuditorDoctorName;
//显示顺序 //显示顺序

34
src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs

@ -1,6 +1,8 @@
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using NPOI.SS.Formula.Functions;
using Shentun.Peis.Asbitems; using Shentun.Peis.Asbitems;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.Models; using Shentun.Peis.Models;
@ -9,6 +11,7 @@ using Shentun.Peis.Patients;
using Shentun.Peis.Rooms; using Shentun.Peis.Rooms;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -36,6 +39,7 @@ namespace Shentun.Peis.QueueRegisters
private readonly IRepository<RoomDetail> _roomDetailRepository; private readonly IRepository<RoomDetail> _roomDetailRepository;
private readonly CacheService _cacheService; private readonly CacheService _cacheService;
private readonly QueueRegisterManager _queueRegisterManager; private readonly QueueRegisterManager _queueRegisterManager;
private readonly ILogger<QueueRegisterAppService> _logger;
public QueueRegisterAppService( public QueueRegisterAppService(
IRepository<QueueRegister, Guid> queueRegisterRepository, IRepository<QueueRegister, Guid> queueRegisterRepository,
IRepository<ItemType, Guid> itemTypeRepository, IRepository<ItemType, Guid> itemTypeRepository,
@ -46,7 +50,8 @@ namespace Shentun.Peis.QueueRegisters
IRepository<Asbitem, Guid> asbitemRepository, IRepository<Asbitem, Guid> asbitemRepository,
IRepository<RoomDetail> roomDetailRepository, IRepository<RoomDetail> roomDetailRepository,
CacheService cacheService, CacheService cacheService,
QueueRegisterManager queueRegisterManager)
QueueRegisterManager queueRegisterManager,
ILogger<QueueRegisterAppService> logger)
{ {
_queueRegisterRepository = queueRegisterRepository; _queueRegisterRepository = queueRegisterRepository;
_itemTypeRepository = itemTypeRepository; _itemTypeRepository = itemTypeRepository;
@ -58,6 +63,7 @@ namespace Shentun.Peis.QueueRegisters
_roomDetailRepository = roomDetailRepository; _roomDetailRepository = roomDetailRepository;
_cacheService = cacheService; _cacheService = cacheService;
_queueRegisterManager = queueRegisterManager; _queueRegisterManager = queueRegisterManager;
_logger = logger;
} }
/// <summary> /// <summary>
@ -325,6 +331,8 @@ namespace Shentun.Peis.QueueRegisters
public async Task<GetQueueRegisterListByRoomIdDto> GetQueueRegisterListByRoomIdAsync(QueueRegisterListByRoomIdInputDto input) public async Task<GetQueueRegisterListByRoomIdDto> GetQueueRegisterListByRoomIdAsync(QueueRegisterListByRoomIdInputDto input)
{ {
var entDto = new GetQueueRegisterListByRoomIdDto(); var entDto = new GetQueueRegisterListByRoomIdDto();
var query = from queueRegister in await _queueRegisterRepository.GetQueryableAsync() var query = from queueRegister in await _queueRegisterRepository.GetQueryableAsync()
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on queueRegister.PatientRegisterId equals patientRegister.Id on queueRegister.PatientRegisterId equals patientRegister.Id
@ -346,24 +354,29 @@ namespace Shentun.Peis.QueueRegisters
if (input.ItemTypeIds.Any()) if (input.ItemTypeIds.Any())
{ {
//筛选项目类别
var patientRegisterIds = query.Select(s => s.patientRegisterId).ToList();
//筛选项目类别
//项目类别下登记的所有组合项目 //项目类别下登记的所有组合项目
var asbitemIds = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() var asbitemIds = (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
where input.ItemTypeIds.Contains(asbitem.ItemTypeId)
select registerCheckAsbitem.AsbitemId).ToList();
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
where patientRegisterIds.Contains(patientRegister.Id) && input.ItemTypeIds.Contains(asbitem.ItemTypeId)
group registerCheckAsbitem by registerCheckAsbitem.AsbitemId into cc
select cc.Key).ToList();
query = query.Where(m => asbitemIds.Contains(m.asbitemId)); query = query.Where(m => asbitemIds.Contains(m.asbitemId));
} }
var roomGroup = query.ToList().GroupBy(g => g.queueRegisterId).Select(s => new var roomGroup = query.ToList().GroupBy(g => g.queueRegisterId).Select(s => new
{ {
completeFlag = s.FirstOrDefault().completeFlag, completeFlag = s.FirstOrDefault().completeFlag,
@ -373,6 +386,7 @@ namespace Shentun.Peis.QueueRegisters
queueRegisterNumber = s.FirstOrDefault().queueRegisterNumber, queueRegisterNumber = s.FirstOrDefault().queueRegisterNumber,
}).ToList(); }).ToList();
entDto.WaitDetail = roomGroup.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait) entDto.WaitDetail = roomGroup.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait)
.Select(s => new GetQueueRegisterListByRoomIdDetailDto .Select(s => new GetQueueRegisterListByRoomIdDetailDto
{ {

29
src/Shentun.Peis.Application/Rooms/RoomAppService.cs

@ -43,7 +43,7 @@ namespace Shentun.Peis.Rooms
} }
/// <summary>
/// <summary>
/// 根据ID查询信息 /// 根据ID查询信息
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
@ -53,7 +53,7 @@ namespace Shentun.Peis.Rooms
{ {
var entity = await _roomRepository.GetAsync(input.RoomId); var entity = await _roomRepository.GetAsync(input.RoomId);
var entDto = ObjectMapper.Map<Room, RoomDto>(entity); var entDto = ObjectMapper.Map<Room, RoomDto>(entity);
entDto.CreatorName=await _cacheService.GetSurnameAsync(entDto.CreatorId);
entDto.CreatorName = await _cacheService.GetSurnameAsync(entDto.CreatorId);
entDto.LastModifierName = await _cacheService.GetSurnameAsync(entDto.LastModifierId); entDto.LastModifierName = await _cacheService.GetSurnameAsync(entDto.LastModifierId);
return entDto; return entDto;
} }
@ -66,7 +66,7 @@ namespace Shentun.Peis.Rooms
[HttpPost("api/app/Room/GetList")] [HttpPost("api/app/Room/GetList")]
public async Task<List<RoomDto>> GetListAsync() public async Task<List<RoomDto>> GetListAsync()
{ {
var entListDto = (await _roomRepository.GetQueryableAsync()).OrderBy(o=>o.DisplayOrder).Select(s => new RoomDto
var entListDto = (await _roomRepository.GetQueryableAsync()).OrderBy(o => o.DisplayOrder).Select(s => new RoomDto
{ {
CreationTime = s.CreationTime, CreationTime = s.CreationTime,
CreatorId = s.CreatorId, CreatorId = s.CreatorId,
@ -80,6 +80,7 @@ namespace Shentun.Peis.Rooms
MedicalCenterId = s.MedicalCenterId, MedicalCenterId = s.MedicalCenterId,
QueueTime = s.QueueTime, QueueTime = s.QueueTime,
RoomTypeFlag = s.RoomTypeFlag, RoomTypeFlag = s.RoomTypeFlag,
RoomNo = s.RoomNo,
LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result, LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result,
CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result
}).ToList(); }).ToList();
@ -176,17 +177,17 @@ namespace Shentun.Peis.Rooms
public async Task<List<AsbitemListByRoomIdDto>> GetAsbitemListByRoomIdAsync(RoomIdInputDto input) public async Task<List<AsbitemListByRoomIdDto>> GetAsbitemListByRoomIdAsync(RoomIdInputDto input)
{ {
var entListDto = (from roomDetail in await _roomDetailRepository.GetQueryableAsync() var entListDto = (from roomDetail in await _roomDetailRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync() on roomDetail.AsbitemId equals asbitem.Id
join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id
where roomDetail.RoomId == input.RoomId
orderby asbitem.DisplayOrder ascending
select new AsbitemListByRoomIdDto
{
AsbitemId = roomDetail.AsbitemId,
AsbitemName = asbitem.DisplayName,
RoomId = roomDetail.RoomId,
RoomName = room.DisplayName
}).ToList();
join asbitem in await _asbitemRepository.GetQueryableAsync() on roomDetail.AsbitemId equals asbitem.Id
join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id
where roomDetail.RoomId == input.RoomId
orderby asbitem.DisplayOrder ascending
select new AsbitemListByRoomIdDto
{
AsbitemId = roomDetail.AsbitemId,
AsbitemName = asbitem.DisplayName,
RoomId = roomDetail.RoomId,
RoomName = room.DisplayName
}).ToList();
return entListDto; return entListDto;
} }

4
src/Shentun.Peis.Domain/Rooms/RoomManager.cs

@ -45,7 +45,7 @@ namespace Shentun.Peis.Rooms
IsActive = entity.IsActive, IsActive = entity.IsActive,
ItemTypeId = entity.ItemTypeId, ItemTypeId = entity.ItemTypeId,
QueueTime = entity.QueueTime, QueueTime = entity.QueueTime,
RoomNo = entity.RoomNo,
RoomNo = GenerateRoomNo().Result,
MedicalCenterId = entity.MedicalCenterId, MedicalCenterId = entity.MedicalCenterId,
RoomTypeFlag = entity.RoomTypeFlag RoomTypeFlag = entity.RoomTypeFlag
}; };
@ -165,7 +165,7 @@ namespace Shentun.Peis.Rooms
/// 生成房间号 /// 生成房间号
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private async string GenerateRoomNo()
private async Task<string> GenerateRoomNo()
{ {
string roonNo = "001"; string roonNo = "001";
var maxRoomEnt = (await _roomRepository.GetQueryableAsync()).OrderByDescending(o => o.RoomNo).FirstOrDefault(); var maxRoomEnt = (await _roomRepository.GetQueryableAsync()).OrderByDescending(o => o.RoomNo).FirstOrDefault();

2
src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs

@ -50,7 +50,7 @@ namespace Shentun.Peis.SampleGroupDetails
{ {
//删除条码分组明细 批量删 //删除条码分组明细 批量删
await _repository.DeleteManyAsync(sampleGroupDetailList);
await _repository.DeleteManyAsync(sampleGroupDetailList, true);
} }

Loading…
Cancel
Save