Browse Source

lis申请

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
c387c48029
  1. 28
      src/Shentun.Peis.Application.Contracts/LisRequests/LisRequestDto.cs
  2. 11
      src/Shentun.Peis.Application.Contracts/LisRequests/LisRequestIdInputDto.cs
  3. 176
      src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs
  4. 108
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  5. 22
      src/Shentun.Peis.Domain.Shared/Enums/CheckTypeFlag.cs
  6. 201
      src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs
  7. 57
      src/Shentun.Peis.Domain/PrintReports/LisRequestReportDto.cs
  8. 15
      src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs
  9. 1
      src/Shentun.Peis.EntityFrameworkCore/Shentun.Peis.EntityFrameworkCore.csproj
  10. 2
      test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs
  11. 5
      test/Shentun.Peis.Application.Tests/Shentun.Peis.Application.Tests.csproj
  12. 32
      test/Shentun.Peis.Application.Tests/appsettings.json
  13. 2
      test/Shentun.Peis.Domain.Tests/LisRequestManagerTest.cs
  14. 4
      test/Shentun.Peis.EntityFrameworkCore.Tests/EntityFrameworkCore/PeisEntityFrameworkCoreTestModule.cs

28
src/Shentun.Peis.Application.Contracts/LisRequests/LisRequestDto.cs

@ -38,6 +38,34 @@ namespace Shentun.Peis.LisRequests
/// </summary> /// </summary>
public short? Age { get; set; } public short? Age { get; set; }
/// <summary>
/// 是否已打印
/// </summary>
public char IsPrint { get; set; }
/// <summary>
/// 采样人姓名
/// </summary>
public string? SamplerName { get; set; }
/// <summary>
/// 采样时间
/// </summary>
public DateTime? SamplingTime { get; set; }
/// <summary>
/// 是签收
/// </summary>
public char IsSignIn { get; set; }
/// <summary>
/// 签收顺序
/// </summary>
public int? SignInOrder { get; set; }
/// <summary>
/// 签收人姓名
/// </summary>
public string? SignInPerson { get; set; }
/// <summary>
/// 签收时间
/// </summary>
public DateTime? SignInTime { get; set; }
/// <summary> /// <summary>
/// 标本类型名称 /// 标本类型名称
/// </summary> /// </summary>

11
src/Shentun.Peis.Application.Contracts/LisRequests/LisRequestIdInputDto.cs

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.LisRequests
{
public class LisRequestIdInputDto
{
public Guid LisRequestId { get; set; }
}
}

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

@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
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.PrintReports; using Shentun.Peis.PrintReports;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -34,6 +35,7 @@ namespace Shentun.Peis.LisRequests
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository; private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly IRepository<ItemType, Guid> _itemTypeRepository;
private readonly ILisRequestReportRepository _lisRequestReportRepository; private readonly ILisRequestReportRepository _lisRequestReportRepository;
private readonly LisRequestManager _lisRequestManager; private readonly LisRequestManager _lisRequestManager;
private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository; private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository;
@ -58,7 +60,8 @@ namespace Shentun.Peis.LisRequests
IRepository<SampleContainer, Guid> sampleContainerRepository, IRepository<SampleContainer, Guid> sampleContainerRepository,
IRepository<SampleType, Guid> sampleTypeRepository, IRepository<SampleType, Guid> sampleTypeRepository,
IRepository<SampleGroup, Guid> sampleGroupRepository, IRepository<SampleGroup, Guid> sampleGroupRepository,
IRepository<SampleGroupDetail> sampleGroupDetailRepository
IRepository<SampleGroupDetail> sampleGroupDetailRepository,
IRepository<ItemType, Guid> itemTypeRepository
) )
{ {
this._userRepository = userRepository; this._userRepository = userRepository;
@ -76,6 +79,7 @@ namespace Shentun.Peis.LisRequests
_sampleTypeRepository = sampleTypeRepository; _sampleTypeRepository = sampleTypeRepository;
_sampleGroupRepository = sampleGroupRepository; _sampleGroupRepository = sampleGroupRepository;
_sampleGroupDetailRepository = sampleGroupDetailRepository; _sampleGroupDetailRepository = sampleGroupDetailRepository;
_itemTypeRepository = itemTypeRepository;
} }
[HttpPost("api/app/LisRequest/GetListInFilter")] [HttpPost("api/app/LisRequest/GetListInFilter")]
@ -85,7 +89,7 @@ namespace Shentun.Peis.LisRequests
//Stopwatch stopwatch = Stopwatch.StartNew(); //Stopwatch stopwatch = Stopwatch.StartNew();
//stopwatch.Start(); //stopwatch.Start();
throw new UserFriendlyException("接口已禁止");
#region MyRegion #region MyRegion
var patientRegisterQuery = (await _patientRegisterRepository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable(); var patientRegisterQuery = (await _patientRegisterRepository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable();
@ -203,6 +207,7 @@ namespace Shentun.Peis.LisRequests
[HttpPost("api/app/LisRequest/GetListByFilter")] [HttpPost("api/app/LisRequest/GetListByFilter")]
public async Task<PagedResultDto<LisRequestDto>> GetListByFilterAsync(GetLisRequestListDto input) public async Task<PagedResultDto<LisRequestDto>> GetListByFilterAsync(GetLisRequestListDto input)
{ {
throw new UserFriendlyException("禁止启用");
//var customerOrgList = await _customerOrgRepository.GetListAsync(); //var customerOrgList = await _customerOrgRepository.GetListAsync();
//Stopwatch stopwatch = Stopwatch.StartNew(); //Stopwatch stopwatch = Stopwatch.StartNew();
@ -268,6 +273,12 @@ namespace Shentun.Peis.LisRequests
on patientRegister.Id equals registerCheck.PatientRegisterId on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId 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 select new
{ {
patientRegister, patientRegister,
@ -281,7 +292,7 @@ namespace Shentun.Peis.LisRequests
{ {
var registerCheckAsbitems = patientRegisterRequests.Select(o=>o.registerCheckAsbitem) var registerCheckAsbitems = patientRegisterRequests.Select(o=>o.registerCheckAsbitem)
.Where(o => o.PatientRegisterId == patientRegister.Id).Distinct().ToList(); .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); , out var updateRegisterCheckAsbitems, out var createLisRequests);
createLisRequestList.AddRange(createLisRequests); createLisRequestList.AddRange(createLisRequests);
updateRegisterCheckAsbitemList.AddRange(updateRegisterCheckAsbitems); updateRegisterCheckAsbitemList.AddRange(updateRegisterCheckAsbitems);
@ -290,9 +301,8 @@ namespace Shentun.Peis.LisRequests
await _registerCheckAsbitemRepository.UpdateManyAsync(updateRegisterCheckAsbitemList, true); 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() join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
@ -307,7 +317,6 @@ namespace Shentun.Peis.LisRequests
on lisRequest.SampleTypeId equals sampleType.Id on lisRequest.SampleTypeId equals sampleType.Id
select new select new
{ {
patient,
patientRegister, patientRegister,
asbitem, asbitem,
lisRequest, lisRequest,
@ -326,7 +335,7 @@ namespace Shentun.Peis.LisRequests
{ {
Id = lisRequestId.Id, Id = lisRequestId.Id,
LisRequestNo = patient.lisRequest.LisRequestNo, LisRequestNo = patient.lisRequest.LisRequestNo,
PatientNo = patient.patient.PatientNo,
PatientNo = patient.patientRegister.Patient.PatientNo,
PatientRegisterNo = patient.patientRegister.PatientRegisterNo, PatientRegisterNo = patient.patientRegister.PatientRegisterNo,
PatientName = patient.patientRegister.PatientName, PatientName = patient.patientRegister.PatientName,
SexName = _cacheService.GetSexNameAsync(patient.patientRegister.SexId).Result, SexName = _cacheService.GetSexNameAsync(patient.patientRegister.SexId).Result,
@ -349,37 +358,140 @@ namespace Shentun.Peis.LisRequests
/// <summary> /// <summary>
/// 生成检验申请单 首次自动生成 /// 生成检验申请单 首次自动生成
/// </summary> /// </summary>
/// <param name="PatientRegisterId">人员登记ID</param>
/// <param name="patientRegisterId">人员登记ID</param>
/// <returns></returns> /// <returns></returns>
[HttpPost("api/app/LisRequest/SetLisRequest")] [HttpPost("api/app/LisRequest/SetLisRequest")]
[RemoteService(false)] [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(); }).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> /// <summary>
/// 追加项目到检验单 如lisrequest内有项目完成体检或者弃检 不允许追加 /// 追加项目到检验单 如lisrequest内有项目完成体检或者弃检 不允许追加
/// </summary> /// </summary>

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

@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using NPOI.POIFS.Properties;
using NUglify.Helpers; using NUglify.Helpers;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.LisRequests; using Shentun.Peis.LisRequests;
@ -155,7 +156,7 @@ namespace Shentun.Peis.PrintReports
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost("api/app/printreport/GetLisRequestReport")] [HttpPost("api/app/printreport/GetLisRequestReport")]
public async Task<List<LisRequestReportDto>> GetLisRequestReportAsync(PatientRegisterIdInputDto input)
public async Task<List<LisRequestReportDto>> GetLisRequestReportByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{ {
//生成LIS条码 //生成LIS条码
await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId); await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId);
@ -164,48 +165,54 @@ namespace Shentun.Peis.PrintReports
var customerOrgList = await _customerOrgRepository.GetListAsync(); var customerOrgList = await _customerOrgRepository.GetListAsync();
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join sex in await _sexRegisterRepository.GetQueryableAsync() on patientRegister.SexId equals sex.Id into xx
from sexHaveEmpty in xx.DefaultIfEmpty()
join sex in await _sexRegisterRepository.GetQueryableAsync() on patientRegister.SexId equals sex.Id
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on patientRegister.Id equals registerCheckAsbitem.PatientRegisterId into bb join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on patientRegister.Id equals registerCheckAsbitem.PatientRegisterId into bb
from registerCheckAsbitemHaveEmpty in bb.DefaultIfEmpty() from registerCheckAsbitemHaveEmpty in bb.DefaultIfEmpty()
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitemHaveEmpty.AsbitemId equals asbitem.Id into ff join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitemHaveEmpty.AsbitemId equals asbitem.Id into ff
from asbitemHaveEmpty in ff.DefaultIfEmpty() from asbitemHaveEmpty in ff.DefaultIfEmpty()
join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitemHaveEmpty.LisRequestId equals lisRequest.Id into cc
from lisRequestHaveEmpty in cc.DefaultIfEmpty()
join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() on lisRequestHaveEmpty.SampleContainerId equals sampleContainer.Id into dd
join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitemHaveEmpty.LisRequestId equals lisRequest.Id
join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() on lisRequest.SampleContainerId equals sampleContainer.Id into dd
from sampleContainerHaveEmpty in dd.DefaultIfEmpty() from sampleContainerHaveEmpty in dd.DefaultIfEmpty()
join sampleType in await _sampleTypeRepository.GetQueryableAsync() on lisRequestHaveEmpty.SampleTypeId equals sampleType.Id into ee
join sampleType in await _sampleTypeRepository.GetQueryableAsync() on lisRequest.SampleTypeId equals sampleType.Id into ee
from sampleTypeHaveEmpty in ee.DefaultIfEmpty() from sampleTypeHaveEmpty in ee.DefaultIfEmpty()
where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitemHaveEmpty.LisRequestId != null) where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitemHaveEmpty.LisRequestId != null)
select new select new
{ {
patientRegister, patientRegister,
sexHaveEmpty,
sex,
registerCheckAsbitemHaveEmpty, registerCheckAsbitemHaveEmpty,
asbitemHaveEmpty, asbitemHaveEmpty,
lisRequestHaveEmpty,
lisRequest,
sampleContainerHaveEmpty, sampleContainerHaveEmpty,
sampleTypeHaveEmpty sampleTypeHaveEmpty
} }
).ToList(); ).ToList();
var lisRequestReportDtoList = query.Select(o => new LisRequestReportDto var lisRequestReportDtoList = query.Select(o => new LisRequestReportDto
{ {
LisRequestId = o.lisRequest.Id,
Age = o.patientRegister.Age, Age = o.patientRegister.Age,
AsbitemNames = string.IsNullOrEmpty(o.asbitemHaveEmpty.ShortName) ? o.asbitemHaveEmpty.DisplayName : o.asbitemHaveEmpty.ShortName, AsbitemNames = string.IsNullOrEmpty(o.asbitemHaveEmpty.ShortName) ? o.asbitemHaveEmpty.DisplayName : o.asbitemHaveEmpty.ShortName,
LisRequestNo = o.lisRequestHaveEmpty.LisRequestNo,
LisRequestNo = o.lisRequest.LisRequestNo,
PatientName = o.patientRegister.PatientName, PatientName = o.patientRegister.PatientName,
PatientRegisterNo = o.patientRegister.PatientRegisterNo, PatientRegisterNo = o.patientRegister.PatientRegisterNo,
SampleContainerName = (o.sampleContainerHaveEmpty==null)?"": o.sampleContainerHaveEmpty.DisplayName, SampleContainerName = (o.sampleContainerHaveEmpty==null)?"": o.sampleContainerHaveEmpty.DisplayName,
ContainerColor = (o.sampleContainerHaveEmpty == null)? 16777215:o.sampleContainerHaveEmpty.ContainerColor, ContainerColor = (o.sampleContainerHaveEmpty == null)? 16777215:o.sampleContainerHaveEmpty.ContainerColor,
SampleContainerRemark = (o.sampleContainerHaveEmpty == null) ? "":o.sampleContainerHaveEmpty.ContainerRemark, SampleContainerRemark = (o.sampleContainerHaveEmpty == null) ? "":o.sampleContainerHaveEmpty.ContainerRemark,
SampleTypeName = (o.sampleTypeHaveEmpty == null)?"":o.sampleTypeHaveEmpty.DisplayName, SampleTypeName = (o.sampleTypeHaveEmpty == null)?"":o.sampleTypeHaveEmpty.DisplayName,
SexName = o.sexHaveEmpty.DisplayName,
SexName = o.sex.DisplayName,
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(o.patientRegister.CustomerOrgId).Result.DisplayName, CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(o.patientRegister.CustomerOrgId).Result.DisplayName,
DepartmentName = _cacheService.GetCustomerOrgNameAsync(o.patientRegister.CustomerOrgId).Result
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(); }).ToList();
var entlist = lisRequestReportDtoList.GroupBy(g => new var entlist = lisRequestReportDtoList.GroupBy(g => new
{ {
g.LisRequestId,
g.LisRequestNo, g.LisRequestNo,
g.Age, g.Age,
g.PatientName, g.PatientName,
@ -216,10 +223,17 @@ namespace Shentun.Peis.PrintReports
g.SampleTypeName, g.SampleTypeName,
g.SexName, g.SexName,
g.CustomerOrgName, g.CustomerOrgName,
g.DepartmentName
g.DepartmentName,
g.IsPrint,
g.IsSignIn,
g.SamplingTime,
g.SignInOrder,
g.SignInPerson,
g.SignInTime
}) })
.Select(s => new LisRequestReportDto .Select(s => new LisRequestReportDto
{ {
LisRequestId = s.Key.LisRequestId,
SexName = s.Key.SexName, SexName = s.Key.SexName,
SampleTypeName = s.Key.SampleTypeName, SampleTypeName = s.Key.SampleTypeName,
SampleContainerRemark = s.Key.SampleContainerRemark, SampleContainerRemark = s.Key.SampleContainerRemark,
@ -231,13 +245,79 @@ namespace Shentun.Peis.PrintReports
LisRequestNo = s.Key.LisRequestNo, LisRequestNo = s.Key.LisRequestNo,
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)),
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(); }).ToList();
return entlist; return entlist;
} }
[HttpPost("api/app/LisRequest/GetLisRequestByPatientRegisterId")]
public async Task<LisRequestReportDto> GetLisRequestByLisRequestIdAsync(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<LisRequestReportDto>();
var patient = list.First();
var lisRequestDto = new LisRequestReportDto()
{
LisRequestId = 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> /// <summary>
/// 打印体检报告 /// 打印体检报告
/// </summary> /// </summary>

22
src/Shentun.Peis.Domain.Shared/Enums/CheckTypeFlag.cs

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
namespace Shentun.Peis.Enums
{
public class CheckTypeFlag
{
[Description("普通检查")]
public const char Regular = '0';
[Description("检验")]
public const char Laboratory = '1';
[Description("特检")]
public const char SpecialInspection = '2';
[Description("放射")]
public const char Radiology = '3';
}
}

201
src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs

@ -21,18 +21,26 @@ namespace Shentun.Peis.LisRequests
{ {
public class LisRequestManager : DomainService public class LisRequestManager : DomainService
{ {
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemeRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository; private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository;
private readonly IRepository<SampleGroupDetail> _sampleGroupDetailRepository; private readonly IRepository<SampleGroupDetail> _sampleGroupDetailRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly IRepository<ItemType, Guid> _itemTypeRepository;
private readonly IRepository<SysParmValue> _sysParmValueRepository; private readonly IRepository<SysParmValue> _sysParmValueRepository;
private readonly IRepository<PrimarykeyBuilder> _primarykeyBuilderRepository; private readonly IRepository<PrimarykeyBuilder> _primarykeyBuilderRepository;
private readonly IRepository<LisRequest, Guid> _lisRequestRepository; private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository; private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository;
private readonly SysParmValueManager _sysParmValueManager; private readonly SysParmValueManager _sysParmValueManager;
public LisRequestManager( public LisRequestManager(
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemeRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<SampleGroup, Guid> sampleGroupRepository, IRepository<SampleGroup, Guid> sampleGroupRepository,
IRepository<SampleGroupDetail> sampleGroupDetailRepository, IRepository<SampleGroupDetail> sampleGroupDetailRepository,
IRepository<Asbitem, Guid> asbitemRepository,
IRepository<ItemType, Guid> itemTypeRepository,
IRepository<SysParmValue> sysParmValueRepository, IRepository<SysParmValue> sysParmValueRepository,
IRepository<PrimarykeyBuilder> primarykeyBuilderRepository, IRepository<PrimarykeyBuilder> primarykeyBuilderRepository,
IRepository<LisRequest, Guid> lisRequestRepository, IRepository<LisRequest, Guid> lisRequestRepository,
@ -40,7 +48,9 @@ namespace Shentun.Peis.LisRequests
IRepository<ThirdInterface, Guid> thirdInterfaceRepository IRepository<ThirdInterface, Guid> thirdInterfaceRepository
) )
{ {
this._registerCheckAsbitemeRepository = registerCheckAsbitemeRepository;
_patientRegisterRepository = patientRegisterRepository;
_registerCheckRepository = registerCheckRepository;
this._registerCheckAsbitemRepository = registerCheckAsbitemRepository;
this._sampleGroupRepository = sampleGroupRepository; this._sampleGroupRepository = sampleGroupRepository;
this._sampleGroupDetailRepository = sampleGroupDetailRepository; this._sampleGroupDetailRepository = sampleGroupDetailRepository;
this._sysParmValueRepository = sysParmValueRepository; this._sysParmValueRepository = sysParmValueRepository;
@ -48,32 +58,50 @@ namespace Shentun.Peis.LisRequests
this._lisRequestRepository = lisRequestRepository; this._lisRequestRepository = lisRequestRepository;
_sysParmValueManager = sysParmValueManager; _sysParmValueManager = sysParmValueManager;
_thirdInterfaceRepository = thirdInterfaceRepository; _thirdInterfaceRepository = thirdInterfaceRepository;
_asbitemRepository = asbitemRepository;
_itemTypeRepository = itemTypeRepository;
} }
/// <summary> /// <summary>
/// 生成检验申请单 /// 生成检验申请单
/// </summary> /// </summary>
/// <param name="PatientRegisterId">人员登记ID</param>
/// <param name="patientRegisterId">人员登记ID</param>
/// <returns></returns> /// <returns></returns>
public async Task<List<LisRequest>> SetLisRequestAsync(Guid PatientRegisterId)
{
List<LisRequest> lisRequests = new List<LisRequest>();
//根据人员登记ID 查找登记的组合项目
var registerCheckAsbitemList = (await _registerCheckAsbitemeRepository.GetQueryableAsync())
.Include(x => x.Asbitem)
.Include(x => x.PatientRegister)
.Where(m => m.PatientRegisterId == PatientRegisterId && m.LisRequestId == null)
.ToList();
var registerCheckAsbitems = registerCheckAsbitemList.Select(o => o.Id).ToList();
lisRequests = await AddLisRequestAsync(registerCheckAsbitems);
return lisRequests;
}
public void Create(PatientRegister patientRegister,
public async Task<List<LisRequest>> SetLisRequestAsync(Guid patientRegisterId)
{
var sampleGroups = await _sampleGroupRepository.GetListAsync();
var _sampleGroupDetail = await _sampleGroupDetailRepository.GetListAsync();
var patientRegisterRequests = (
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 itemType in await _itemTypeRepository.GetQueryableAsync()
on asbitem.ItemTypeId equals itemType.Id
where patientRegister.Id == patientRegisterId
&& itemType.CheckTypeFlag == CheckTypeFlag.Laboratory
&& registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked
select new
{
patientRegister,
registerCheckAsbitem
}).ToList();
var patientRegisterFirst = patientRegisterRequests.First().patientRegister;
var registerCheckAsbitems = patientRegisterRequests.Select(o => o.registerCheckAsbitem)
.Where(o => o.PatientRegisterId == patientRegisterFirst.Id).Distinct().ToList();
SetLisRequest(patientRegisterFirst, registerCheckAsbitems, sampleGroups, _sampleGroupDetail
, out var updateRegisterCheckAsbitems, out var createLisRequests);
return createLisRequests;
}
public void SetLisRequest(PatientRegister patientRegister,
List<RegisterCheckAsbitem> registerCheckAsbitems, List<RegisterCheckAsbitem> registerCheckAsbitems,
List<SampleGroup> sampleGroups, List<SampleGroup> sampleGroups,
List<SampleGroupDetail> sampleGroupDetails, List<SampleGroupDetail> sampleGroupDetails,
@ -155,12 +183,20 @@ namespace Shentun.Peis.LisRequests
public async Task AppendLisRequestAsync(Guid LisRequestId, List<Guid> RegisterCheckAsbitemIds) public async Task AppendLisRequestAsync(Guid LisRequestId, List<Guid> RegisterCheckAsbitemIds)
{ {
//根据RegisterAsbitemId //根据RegisterAsbitemId
var registerAsbitemInIdList = (await _registerCheckAsbitemeRepository.GetQueryableAsync())
var registerCheckAsbitemInIdList = (await _registerCheckAsbitemRepository.GetQueryableAsync())
.Include(x => x.RegisterCheck) .Include(x => x.RegisterCheck)
.Include(x=>x.Asbitem)
.ThenInclude(x=>x.ItemType)
.Where(m => RegisterCheckAsbitemIds.Contains(m.Id)).ToList(); .Where(m => RegisterCheckAsbitemIds.Contains(m.Id)).ToList();
foreach(var registerCheckAsbitem in registerCheckAsbitemInIdList)
{
if(registerCheckAsbitem.Asbitem.ItemType.CheckTypeFlag != CheckTypeFlag.Laboratory)
{
throw new UserFriendlyException($"{registerCheckAsbitem.Asbitem.DisplayName}不是检验项目");
}
}
//根据LisRequestId //根据LisRequestId
var registerAsbitemInLisRequestIdList = (await _registerCheckAsbitemeRepository.GetQueryableAsync())
var registerAsbitemInLisRequestIdList = (await _registerCheckAsbitemRepository.GetQueryableAsync())
.Include(x => x.RegisterCheck) .Include(x => x.RegisterCheck)
.Where(m => m.LisRequestId == LisRequestId).ToList(); .Where(m => m.LisRequestId == LisRequestId).ToList();
@ -170,11 +206,11 @@ namespace Shentun.Peis.LisRequests
throw new UserFriendlyException("当前条码项目已完成体检或已弃检"); throw new UserFriendlyException("当前条码项目已完成体检或已弃检");
} }
if (registerAsbitemInIdList.Any())
if (registerCheckAsbitemInIdList.Any())
{ {
registerAsbitemInIdList.ForEach(f => f.LisRequestId = LisRequestId);
registerCheckAsbitemInIdList.ForEach(f => f.LisRequestId = LisRequestId);
await _registerCheckAsbitemeRepository.UpdateManyAsync(registerAsbitemInIdList);
await _registerCheckAsbitemRepository.UpdateManyAsync(registerCheckAsbitemInIdList);
} }
else else
{ {
@ -194,67 +230,84 @@ namespace Shentun.Peis.LisRequests
{ {
List<LisRequest> lisRequests = new List<LisRequest>(); List<LisRequest> lisRequests = new List<LisRequest>();
//根据RegisterAsbitem表ID 查找登记的组合项目 //根据RegisterAsbitem表ID 查找登记的组合项目
var registerAsbitemeList = (await _registerCheckAsbitemeRepository.GetQueryableAsync())
var registerCheckAsbitemeList = (await _registerCheckAsbitemRepository.GetQueryableAsync())
.Include(x => x.Asbitem) .Include(x => x.Asbitem)
.ThenInclude(x => x.ItemType)
.Include(x => x.PatientRegister) .Include(x => x.PatientRegister)
.Where(m => registerCheckAsbitemIds.Contains(m.Id)) .Where(m => registerCheckAsbitemIds.Contains(m.Id))
.ToList(); .ToList();
if (registerAsbitemeList.Any())
if(!registerCheckAsbitemeList.Any())
{ {
//根据登记的组合ID 查找组合项目对应的条码分组
var sampleGroupDetailList = await _sampleGroupDetailRepository.GetListAsync(m => registerAsbitemeList.Select(s => s.AsbitemId).Contains(m.AsbitemId));
if (sampleGroupDetailList.Any())
return null;
}
foreach (var registerCheckAsbitem in registerCheckAsbitemeList)
{ {
//查找条码分组信息 根据条码分组ID
var sampleGroupList = (await _sampleGroupRepository.GetQueryableAsync())
.Include(x => x.SampleContainer)
.Include(x => x.SampleType)
.Where(m => sampleGroupDetailList.Select(s => s.SampleGroupId).Contains(m.Id)).ToList();
foreach (var sampleGroup in sampleGroupList)
if (registerCheckAsbitem.Asbitem.ItemType.CheckTypeFlag != CheckTypeFlag.Laboratory)
{ {
//根据条码分组生成,一个条码分组生成一个检验单
#region 生成检验申请单
throw new UserFriendlyException($"{registerCheckAsbitem.Asbitem.DisplayName}不是检验项目");
}
}
var sampleGroups = await _sampleGroupRepository.GetListAsync();
var _sampleGroupDetail = await _sampleGroupDetailRepository.GetListAsync();
var patientRegisterFirst = registerCheckAsbitemeList.First().PatientRegister;
var lisRequestEnt = new LisRequest
{
IsPrint = 'N',
IsSignIn = 'N',
LisRequestNo = await CreateLisRequestNo(registerAsbitemeList.FirstOrDefault().PatientRegister.MedicalCenterId),
SampleContainerId = sampleGroup.SampleContainerId,
SampleTypeId = sampleGroup.SampleTypeId
};
SetLisRequest(patientRegisterFirst, registerCheckAsbitemeList, sampleGroups, _sampleGroupDetail
, out var updateRegisterCheckAsbitems, out var createLisRequests);
//if (registerCheckAsbitemeList.Any())
//{
//生成检验申请单的新实体
var lisRequestEnt_New = await _lisRequestRepository.InsertAsync(lisRequestEnt, true);
// //根据登记的组合ID 查找组合项目对应的条码分组
// var sampleGroupDetailList = await _sampleGroupDetailRepository.GetListAsync(m => registerCheckAsbitemeList.Select(s => s.AsbitemId).Contains(m.AsbitemId));
// if (sampleGroupDetailList.Any())
// {
// //查找条码分组信息 根据条码分组ID
// var sampleGroupList = (await _sampleGroupRepository.GetQueryableAsync())
// .Include(x => x.SampleContainer)
// .Include(x => x.SampleType)
// .Where(m => sampleGroupDetailList.Select(s => s.SampleGroupId).Contains(m.Id)).ToList();
lisRequests.Add(lisRequestEnt_New);
// foreach (var sampleGroup in sampleGroupList)
// {
// //根据条码分组生成,一个条码分组生成一个检验单
// #region 生成检验申请单
#region 修改RegisterAsbitem表 LisRequestId
// var lisRequestEnt = new LisRequest
// {
// IsPrint = 'N',
// IsSignIn = 'N',
// LisRequestNo = await CreateLisRequestNo(registerCheckAsbitemeList.FirstOrDefault().PatientRegister.MedicalCenterId),
// SampleContainerId = sampleGroup.SampleContainerId,
// SampleTypeId = sampleGroup.SampleTypeId
// };
//当前条码分组ID绑定的组合项目
var AsbitemIds = sampleGroupDetailList.Where(m => m.SampleGroupId == sampleGroup.Id).Select(s => s.AsbitemId);
// //生成检验申请单的新实体
// var lisRequestEnt_New = await _lisRequestRepository.InsertAsync(lisRequestEnt, true);
//获取需要更新的RegisterCheckAsbitem数据
var registerAsbitemeList_Update = await _registerCheckAsbitemeRepository.GetListAsync(
f => registerCheckAsbitemIds.Contains(f.Id) && AsbitemIds.Contains(f.AsbitemId));
if (registerAsbitemeList_Update.Any())
{
//更新LisRequestId
registerAsbitemeList_Update.ForEach(m => m.LisRequestId = lisRequestEnt_New.Id);
await _registerCheckAsbitemeRepository.UpdateManyAsync(registerAsbitemeList_Update);
}
// lisRequests.Add(lisRequestEnt_New);
#endregion
// #region 修改RegisterAsbitem表 LisRequestId
#endregion
}
}
}
// //当前条码分组ID绑定的组合项目
// var AsbitemIds = sampleGroupDetailList.Where(m => m.SampleGroupId == sampleGroup.Id).Select(s => s.AsbitemId);
return lisRequests;
// //获取需要更新的RegisterCheckAsbitem数据
// var registerAsbitemeList_Update = await _registerCheckAsbitemRepository.GetListAsync(
// f => registerCheckAsbitemIds.Contains(f.Id) && AsbitemIds.Contains(f.AsbitemId));
// if (registerAsbitemeList_Update.Any())
// {
// //更新LisRequestId
// registerAsbitemeList_Update.ForEach(m => m.LisRequestId = lisRequestEnt_New.Id);
// await _registerCheckAsbitemRepository.UpdateManyAsync(registerAsbitemeList_Update);
// }
// #endregion
// #endregion
// }
// }
//}
return createLisRequests;
} }
@ -367,7 +420,7 @@ namespace Shentun.Peis.LisRequests
SerialNo = maxnum SerialNo = maxnum
}; };
await _primarykeyBuilderRepository.InsertAsync(primarykeyBuilderEnt);
await _primarykeyBuilderRepository.InsertAsync(primarykeyBuilderEnt,true);
} }
#endregion #endregion
} }

57
src/Shentun.Peis.Domain/PrintReports/LisRequestReportDto.cs

@ -13,11 +13,28 @@ namespace Shentun.Peis.PrintReports
/// </summary> /// </summary>
public class LisRequestReportDto public class LisRequestReportDto
{ {
/// <summary>
/// LisRequest的ID
/// </summary>
public Guid LisRequestId { get; set; }
/// <summary> /// <summary>
/// 姓名 /// 姓名
/// </summary> /// </summary>
public string PatientName { get; set; } public string PatientName { get; set; }
/// <summary>
/// 检验申请单号
/// </summary>
public string LisRequestNo { get; set; }
/// <summary>
/// 档案号
/// </summary>
public string PatientNo { get; set; }
/// <summary>
/// 登记人员条码号
/// </summary>
public string PatientRegisterNo { get; set; }
/// <summary> /// <summary>
/// 性别 /// 性别
/// </summary> /// </summary>
@ -28,6 +45,34 @@ namespace Shentun.Peis.PrintReports
/// </summary> /// </summary>
public short? Age { get; set; } public short? Age { get; set; }
/// <summary>
/// 是否已打印
/// </summary>
public char IsPrint { get; set; }
/// <summary>
/// 采样人姓名
/// </summary>
public string? SamplerName { get; set; }
/// <summary>
/// 采样时间
/// </summary>
public DateTime? SamplingTime { get; set; }
/// <summary>
/// 是签收
/// </summary>
public char IsSignIn { get; set; }
/// <summary>
/// 签收顺序
/// </summary>
public int? SignInOrder { get; set; }
/// <summary>
/// 签收人姓名
/// </summary>
public string? SignInPerson { get; set; }
/// <summary>
/// 签收时间
/// </summary>
public DateTime? SignInTime { get; set; }
/// <summary> /// <summary>
/// 标本类型名称 /// 标本类型名称
/// </summary> /// </summary>
@ -36,6 +81,9 @@ namespace Shentun.Peis.PrintReports
/// 标本容器名称 /// 标本容器名称
/// </summary> /// </summary>
public string SampleContainerName { get; set; } public string SampleContainerName { get; set; }
/// <summary>
/// 颜色值
/// </summary>
public int ContainerColor { get; set; } public int ContainerColor { get; set; }
/// <summary> /// <summary>
@ -43,16 +91,7 @@ namespace Shentun.Peis.PrintReports
/// </summary> /// </summary>
public string? SampleContainerRemark { get; set; } public string? SampleContainerRemark { get; set; }
/// <summary>
/// 检验申请单号
/// </summary>
public string LisRequestNo { get; set; }
/// <summary>
/// 登记人员条码号
/// </summary>
public string PatientRegisterNo { get; set; }
/// <summary> /// <summary>
/// 组合项目简称(多个“,”号隔开) /// 组合项目简称(多个“,”号隔开)

15
src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs

@ -13,6 +13,7 @@ using Shentun.Peis.DbMapping.ThirdInterfaces;
using Shentun.Peis.L_JYTMXX_TJs; using Shentun.Peis.L_JYTMXX_TJs;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.RoleMenuInfos; using Shentun.Peis.RoleMenuInfos;
using Shentun.Utilities;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
@ -336,7 +337,7 @@ public class PeisDbContext :
{ {
} }
//private readonly StreamWriter _logStream = new StreamWriter("sql_log.txt", append: true);
private readonly StreamWriter _logStream = new StreamWriter(DirectoryHelper.GetAppDirectory()+"\\sql_log.txt", append: true);
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ {
////日志输出SQL语句 ////日志输出SQL语句
@ -345,9 +346,9 @@ public class PeisDbContext :
base.OnConfiguring(optionsBuilder); base.OnConfiguring(optionsBuilder);
//optionsBuilder
////输出到控制台 ////输出到控制台
//.LogTo(System.Console.WriteLine,
//optionsBuilder.LogTo(System.Console.WriteLine,
//new[] { Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.CommandExecuting }). //new[] { Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.CommandExecuting }).
//EnableSensitiveDataLogging().EnableDetailedErrors(); //EnableSensitiveDataLogging().EnableDetailedErrors();
////输出到vs输出窗口 ////输出到vs输出窗口
@ -359,7 +360,9 @@ public class PeisDbContext :
////日志输出SQL语句 ////日志输出SQL语句
//optionsBuilder.LogTo(Console.WriteLine, LogLevel.Debug) //optionsBuilder.LogTo(Console.WriteLine, LogLevel.Debug)
// .EnableSensitiveDataLogging().LogTo((msg) => System.Diagnostics.Trace.WriteLine(msg), // .EnableSensitiveDataLogging().LogTo((msg) => System.Diagnostics.Trace.WriteLine(msg),
// new[] { Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.CommandExecuting });;
// new[] { Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.CommandExecuting });
} }
protected override void OnModelCreating(ModelBuilder builder) protected override void OnModelCreating(ModelBuilder builder)
@ -753,13 +756,13 @@ public class PeisDbContext :
public override void Dispose() public override void Dispose()
{ {
base.Dispose(); base.Dispose();
//_logStream.Dispose();
_logStream.Dispose();
} }
public override async ValueTask DisposeAsync() public override async ValueTask DisposeAsync()
{ {
await base.DisposeAsync(); await base.DisposeAsync();
//await _logStream.DisposeAsync();
await _logStream.DisposeAsync();
} }
//override ApplyAbpConceptsForAddedEntity //override ApplyAbpConceptsForAddedEntity

1
src/Shentun.Peis.EntityFrameworkCore/Shentun.Peis.EntityFrameworkCore.csproj

@ -15,6 +15,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Shentun.Peis.Domain\Shentun.Peis.Domain.csproj" /> <ProjectReference Include="..\Shentun.Peis.Domain\Shentun.Peis.Domain.csproj" />
<ProjectReference Include="..\Shentun.Utilities\Shentun.Utilities.csproj" />
<!--<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" />--> <!--<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" />-->
<PackageReference Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="6.0.0" /> <PackageReference Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="6.0.0" />
<PackageReference Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" Version="6.0.0" /> <PackageReference Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" Version="6.0.0" />

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

@ -33,7 +33,7 @@ namespace Shentun.Peis
{ {
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
{ {
var items = await _appService.GetLisRequestReportAsync(new PatientRegisterIdInputDto()
var items = await _appService.GetLisRequestReportByPatientRegisterIdAsync(new PatientRegisterIdInputDto()
{ PatientRegisterId = new Guid("3a0d942e-f65d-3528-a9c0-e9ecd56db692") }); { PatientRegisterId = new Guid("3a0d942e-f65d-3528-a9c0-e9ecd56db692") });
_output.WriteLine(items.Count().ToString()); _output.WriteLine(items.Count().ToString());
foreach (var item in items) foreach (var item in items)

5
test/Shentun.Peis.Application.Tests/Shentun.Peis.Application.Tests.csproj

@ -9,6 +9,7 @@
<ItemGroup> <ItemGroup>
<None Remove="appsettings.Development.json" /> <None Remove="appsettings.Development.json" />
<None Remove="appsettings.json" />
<None Remove="appsettings.secrets.json" /> <None Remove="appsettings.secrets.json" />
</ItemGroup> </ItemGroup>
@ -18,6 +19,10 @@
<ExcludeFromSingleFile>true</ExcludeFromSingleFile> <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content> </Content>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="appsettings.secrets.json"> <Content Include="appsettings.secrets.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile> <ExcludeFromSingleFile>true</ExcludeFromSingleFile>

32
test/Shentun.Peis.Application.Tests/appsettings.json

@ -0,0 +1,32 @@
{
"Logging": {
"LogLevel": {
"Microsoft.EntityFrameworkCore.Database.Command": "Debug"
}
},
"ConnectionStrings": {
"Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;"
},
"OpenIddict": {
"Applications": {
"Peis_Web": {
"ClientId": "Peis_Web",
"ClientSecret": "1q2w3e*",
"RootUrl": "https://localhost:44328"
},
"Peis_App": {
"ClientId": "Peis_App",
"RootUrl": "http://localhost:4200"
},
"Peis_BlazorServerTiered": {
"ClientId": "Peis_BlazorServerTiered",
"ClientSecret": "1q2w3e*",
"RootUrl": "https://localhost:44383"
},
"Peis_Swagger": {
"ClientId": "Peis_Swagger",
"RootUrl": "https://localhost:44399"
}
}
}
}

2
test/Shentun.Peis.Domain.Tests/LisRequestManagerTest.cs

@ -49,7 +49,7 @@ namespace Shentun.Peis
var registerCheckAsbitems = await _registerCheckAsbitemRepository.GetListAsync(o => o.PatientRegisterId == patientRegister.Id); var registerCheckAsbitems = await _registerCheckAsbitemRepository.GetListAsync(o => o.PatientRegisterId == patientRegister.Id);
var sampleGroups = await _sampleGroupRepository.GetListAsync(); var sampleGroups = await _sampleGroupRepository.GetListAsync();
var _sampleGroupDetail = await _sampleGroupDetailRepository.GetListAsync(); var _sampleGroupDetail = await _sampleGroupDetailRepository.GetListAsync();
_manager.Create(patientRegister, registerCheckAsbitems, sampleGroups, _sampleGroupDetail
_manager.SetLisRequest(patientRegister, registerCheckAsbitems, sampleGroups, _sampleGroupDetail
,out var updateRegisterCheckAsbitems,out var createLisRequests); ,out var updateRegisterCheckAsbitems,out var createLisRequests);
await _repository.InsertManyAsync(createLisRequests); await _repository.InsertManyAsync(createLisRequests);

4
test/Shentun.Peis.EntityFrameworkCore.Tests/EntityFrameworkCore/PeisEntityFrameworkCoreTestModule.cs

@ -40,8 +40,8 @@ public class PeisEntityFrameworkCoreTestModule : AbpModule
} }
private void ConfigurePostGress(IServiceCollection services) private void ConfigurePostGress(IServiceCollection services)
{ {
string connectStr = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123";
//string connectStr = "Host=10.1.12.140;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;";
//string connectStr = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123";
string connectStr = "Host=10.1.12.140;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;";
services.Configure<AbpDbContextOptions>(options => services.Configure<AbpDbContextOptions>(options =>
{ {

Loading…
Cancel
Save