From 4fc26e4122e42bb333b6d291ec3991f0857a8052 Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Wed, 24 Jul 2024 17:05:12 +0800
Subject: [PATCH] =?UTF-8?q?lis=E5=AF=B9=E6=8E=A5=EF=BC=8C=E6=9D=A1?=
=?UTF-8?q?=E7=A0=81=E5=88=86=E7=BB=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Rooms/RoomDto.cs | 8 +
.../ImportLisResultAppService.cs | 182 +++++++++++++++++-
.../LisRequests/LisRequestAppService.cs | 128 ++++++++----
.../PatientRegisterAppService.cs | 15 +-
.../PrintReports/PrintReportAppService.cs | 60 +++++-
.../QueueRegisters/QueueRegisterAppService.cs | 34 +++-
.../Rooms/RoomAppService.cs | 31 +--
src/Shentun.Peis.Domain/Rooms/RoomManager.cs | 4 +-
.../SampleGroupDetailManager.cs | 4 +-
9 files changed, 385 insertions(+), 81 deletions(-)
diff --git a/src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs b/src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs
index 1a199622..18f3006b 100644
--- a/src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs
+++ b/src/Shentun.Peis.Application.Contracts/Rooms/RoomDto.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
using System.Text;
namespace Shentun.Peis.Rooms
@@ -7,6 +9,12 @@ namespace Shentun.Peis.Rooms
public class RoomDto : AuditedEntityDtoName
{
public string DisplayName { get; set; } = null!;
+
+ ///
+ /// 房间号
+ ///
+ public string RoomNo { get; set; }
+
///
/// 项目类别编号
///
diff --git a/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs b/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs
index 9cbb4801..dde91107 100644
--- a/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs
+++ b/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs
@@ -14,6 +14,7 @@ using Shentun.Peis.PlugIns.ImportLisResults;
using Shentun.Peis.ReferenceRanges;
using Shentun.Peis.RegisterCheckItems;
using Shentun.Peis.RegisterChecks;
+using Shentun.Peis.SysParmValues;
using Shentun.Peis.Units;
using SqlSugar;
using System;
@@ -29,6 +30,7 @@ using Volo.Abp.Domain.Repositories;
using Volo.Abp.Guids;
using Volo.Abp.Identity;
using Volo.Abp.Users;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace Shentun.Peis.ImportLisResults
{
@@ -66,6 +68,7 @@ namespace Shentun.Peis.ImportLisResults
private static bool _isRunning = false;
private static readonly object lockObject = new object();
private readonly ColumnReferenceCodeManager _columnReferenceCodeManager;
+ private readonly SysParmValueManager _sysParmValueManager;
public ImportLisResultAppService(IRepository registerCheckRepository,
IRepository registerCheckItemRepository,
IRepository patientRegisterRepository,
@@ -91,7 +94,8 @@ namespace Shentun.Peis.ImportLisResults
UnitManager unitManager,
RegisterCheckAppService registerCheckAppService,
IRepository thirdInterfaceRepository,
- ColumnReferenceCodeManager columnReferenceCodeManager)
+ ColumnReferenceCodeManager columnReferenceCodeManager,
+ SysParmValueManager sysParmValueManager)
{
_registerCheckRepository = registerCheckRepository;
_userRepository = userRepository;
@@ -120,6 +124,7 @@ namespace Shentun.Peis.ImportLisResults
_registerCheckAppService = registerCheckAppService;
_thirdInterfaceRepository = thirdInterfaceRepository;
_columnReferenceCodeManager = columnReferenceCodeManager;
+ _sysParmValueManager = sysParmValueManager;
}
///
/// 从第三方接口导入结果
@@ -485,13 +490,184 @@ namespace Shentun.Peis.ImportLisResults
LisAuditorDoctorName = item.LisAuditorDoctorName,
LisSampleNo = item.LisSampleNo
};
-
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);
+ }
+
+ ///
+ /// 从第三方接口导入结果
+ ///
+ ///
+ ///
+ ///
+ private async Task ImportResultByPatientRegisterNoAsync(List 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();
+ _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 updateRegisterCheckAsbitem = new List();
+
+ //更新参考范围和单位
+ 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);
}
}
}
diff --git a/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs b/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs
index f1fa17e7..a88c6a88 100644
--- a/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs
+++ b/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs
@@ -2,11 +2,13 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
+using Org.BouncyCastle.Asn1.Ocsp;
using Shentun.Peis.CustomerOrgs;
using Shentun.Peis.Enums;
using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters;
using Shentun.Peis.PrintReports;
+using Shentun.Peis.SysParmValues;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -46,6 +48,7 @@ namespace Shentun.Peis.LisRequests
private readonly IRepository _sampleContainerRepository;
private readonly IRepository _sampleTypeRepository;
private readonly IRepository _lisRequestRepository;
+ private readonly SysParmValueManager _sysParmValueManager;
public LisRequestAppService(
IRepository userRepository,
IRepository patientRegisterRepository,
@@ -64,7 +67,8 @@ namespace Shentun.Peis.LisRequests
IRepository sampleGroupDetailRepository,
IRepository itemTypeRepository
,
- IRepository lisRequestRepository)
+ IRepository lisRequestRepository,
+ SysParmValueManager sysParmValueManager)
{
this._userRepository = userRepository;
this._patientRegisterRepository = patientRegisterRepository;
@@ -83,6 +87,7 @@ namespace Shentun.Peis.LisRequests
_sampleGroupDetailRepository = sampleGroupDetailRepository;
_itemTypeRepository = itemTypeRepository;
_lisRequestRepository = lisRequestRepository;
+ _sysParmValueManager = sysParmValueManager;
}
[HttpPost("api/app/LisRequest/GetListInFilter")]
@@ -612,48 +617,101 @@ namespace Shentun.Peis.LisRequests
if (input == null)
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;
+ }
}
}
}
diff --git a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
index b79d9a85..b03e9bf4 100644
--- a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
+++ b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
@@ -454,15 +454,11 @@ namespace Shentun.Peis.PatientRegisters
[HttpPost("api/app/patientregister/getlistinfilter")]
public async Task> GetListInFilterAsync(GetListInSearchDto input)
{
-
- //var userList = await _userRepository.GetListAsync();
var customerOrgList = await _customerOrgRepository.GetListAsync();
- //Stopwatch stopwatch = Stopwatch.StartNew();
- //stopwatch.Start();
-
+ Stopwatch stopwatch = Stopwatch.StartNew();
+
#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()
join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync()
on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp
@@ -536,11 +532,18 @@ namespace Shentun.Peis.PatientRegisters
}
#endregion
+ stopwatch.Stop();
+
+ _logger.LogInformation($"stopwatch耗时:{stopwatch.ElapsedMilliseconds}");
+
+ Stopwatch stopwatch2 = Stopwatch.StartNew();
int totalCount = entlist.Count();
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
{
diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
index 5826aec0..9a04accb 100644
--- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
+++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
@@ -29,6 +29,7 @@ using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace Shentun.Peis.PrintReports
{
@@ -314,7 +315,8 @@ namespace Shentun.Peis.PrintReports
from sampleTypeHaveEmpty in ee.DefaultIfEmpty()
join sampleGroupDetail in await _sampleGroupDetailRepository.GetQueryableAsync() on asbitem.Id equals sampleGroupDetail.AsbitemId into sampleGroupDetailTemp
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()
where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null)
select new
@@ -368,6 +370,43 @@ namespace Shentun.Peis.PrintReports
SamplePrintCount = o.samplePrintCount
}).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
{
g.PatientNo,
@@ -389,7 +428,8 @@ namespace Shentun.Peis.PrintReports
g.SignInOrder,
g.SignInPerson,
g.SignInTime,
- g.MobileTelephone
+ g.MobileTelephone,
+ g.SampleGroupName
})
.Select(s => new LisRequestReportDto
{
@@ -403,7 +443,7 @@ namespace Shentun.Peis.PrintReports
PatientRegisterNo = s.Key.PatientRegisterNo,
PatientName = s.Key.PatientName,
Age = s.Key.Age,
- LisRequestNo = s.Key.LisRequestNo,
+ LisRequestNo = lisRequestNoPrintMode == "0" ? s.Key.LisRequestNo : s.Key.PatientRegisterNo,
CustomerOrgName = s.Key.CustomerOrgName,
DepartmentName = s.Key.DepartmentName,
AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)),
@@ -413,7 +453,7 @@ namespace Shentun.Peis.PrintReports
SignInOrder = s.Key.SignInOrder,
SignInPerson = s.Key.SignInPerson,
SignInTime = s.Key.SignInTime,
- SampleGroupName = s.FirstOrDefault().SampleGroupName,
+ SampleGroupName = s.Key.SampleGroupName,
MobileTelephone = s.Key.MobileTelephone,
SamplePrintCount = s.FirstOrDefault().SamplePrintCount
}).ToList();
@@ -434,6 +474,10 @@ namespace Shentun.Peis.PrintReports
[HttpPost("api/app/PrintReport/GetLisRequestReportByLisRequestId")]
public async Task 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()
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on patient.Id equals patientRegister.PatientId
@@ -477,7 +521,7 @@ namespace Shentun.Peis.PrintReports
{
LisRequestId = input.LisRequestId,
- LisRequestNo = lisRequestInfo.lisRequest.LisRequestNo,
+ LisRequestNo = lisRequestNoPrintMode == "0" ? lisRequestInfo.lisRequest.LisRequestNo : lisRequestInfo.patientRegister.PatientRegisterNo,
PatientNo = lisRequestInfo.patient.PatientNo,
PatientRegisterNo = lisRequestInfo.patientRegister.PatientRegisterNo,
PatientName = lisRequestInfo.patientRegister.PatientName,
@@ -768,8 +812,8 @@ namespace Shentun.Peis.PrintReports
PatientName = s.FirstOrDefault().PatientName,
PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
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
});
}
@@ -1159,7 +1203,7 @@ namespace Shentun.Peis.PrintReports
}
//lis审核医生+标本号
- medicalReportRegisterCheckDto.LisSampleNo= registerCheckRow.registerCheck.LisSampleNo;
+ medicalReportRegisterCheckDto.LisSampleNo = registerCheckRow.registerCheck.LisSampleNo;
medicalReportRegisterCheckDto.LisAuditorDoctorName = registerCheckRow.registerCheck.LisAuditorDoctorName;
//显示顺序
diff --git a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
index 9c1758a1..ae3ff0af 100644
--- a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
+++ b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
@@ -1,6 +1,8 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Logging;
+using NPOI.SS.Formula.Functions;
using Shentun.Peis.Asbitems;
using Shentun.Peis.Enums;
using Shentun.Peis.Models;
@@ -9,6 +11,7 @@ using Shentun.Peis.Patients;
using Shentun.Peis.Rooms;
using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -36,6 +39,7 @@ namespace Shentun.Peis.QueueRegisters
private readonly IRepository _roomDetailRepository;
private readonly CacheService _cacheService;
private readonly QueueRegisterManager _queueRegisterManager;
+ private readonly ILogger _logger;
public QueueRegisterAppService(
IRepository queueRegisterRepository,
IRepository itemTypeRepository,
@@ -46,7 +50,8 @@ namespace Shentun.Peis.QueueRegisters
IRepository asbitemRepository,
IRepository roomDetailRepository,
CacheService cacheService,
- QueueRegisterManager queueRegisterManager)
+ QueueRegisterManager queueRegisterManager,
+ ILogger logger)
{
_queueRegisterRepository = queueRegisterRepository;
_itemTypeRepository = itemTypeRepository;
@@ -58,6 +63,7 @@ namespace Shentun.Peis.QueueRegisters
_roomDetailRepository = roomDetailRepository;
_cacheService = cacheService;
_queueRegisterManager = queueRegisterManager;
+ _logger = logger;
}
///
@@ -325,6 +331,8 @@ namespace Shentun.Peis.QueueRegisters
public async Task GetQueueRegisterListByRoomIdAsync(QueueRegisterListByRoomIdInputDto input)
{
var entDto = new GetQueueRegisterListByRoomIdDto();
+
+
var query = from queueRegister in await _queueRegisterRepository.GetQueryableAsync()
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on queueRegister.PatientRegisterId equals patientRegister.Id
@@ -346,24 +354,29 @@ namespace Shentun.Peis.QueueRegisters
if (input.ItemTypeIds.Any())
{
- //筛选项目类别
+ var patientRegisterIds = query.Select(s => s.patientRegisterId).ToList();
+
+ //筛选项目类别
//项目类别下登记的所有组合项目
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));
}
+
var roomGroup = query.ToList().GroupBy(g => g.queueRegisterId).Select(s => new
{
completeFlag = s.FirstOrDefault().completeFlag,
@@ -373,6 +386,7 @@ namespace Shentun.Peis.QueueRegisters
queueRegisterNumber = s.FirstOrDefault().queueRegisterNumber,
}).ToList();
+
entDto.WaitDetail = roomGroup.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait)
.Select(s => new GetQueueRegisterListByRoomIdDetailDto
{
diff --git a/src/Shentun.Peis.Application/Rooms/RoomAppService.cs b/src/Shentun.Peis.Application/Rooms/RoomAppService.cs
index 9d76e62d..ec7a2e3b 100644
--- a/src/Shentun.Peis.Application/Rooms/RoomAppService.cs
+++ b/src/Shentun.Peis.Application/Rooms/RoomAppService.cs
@@ -42,8 +42,8 @@ namespace Shentun.Peis.Rooms
_cacheService = cacheService;
}
-
- ///
+
+ ///
/// 根据ID查询信息
///
///
@@ -53,7 +53,7 @@ namespace Shentun.Peis.Rooms
{
var entity = await _roomRepository.GetAsync(input.RoomId);
var entDto = ObjectMapper.Map(entity);
- entDto.CreatorName=await _cacheService.GetSurnameAsync(entDto.CreatorId);
+ entDto.CreatorName = await _cacheService.GetSurnameAsync(entDto.CreatorId);
entDto.LastModifierName = await _cacheService.GetSurnameAsync(entDto.LastModifierId);
return entDto;
}
@@ -66,7 +66,7 @@ namespace Shentun.Peis.Rooms
[HttpPost("api/app/Room/GetList")]
public async Task> 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,
CreatorId = s.CreatorId,
@@ -80,6 +80,7 @@ namespace Shentun.Peis.Rooms
MedicalCenterId = s.MedicalCenterId,
QueueTime = s.QueueTime,
RoomTypeFlag = s.RoomTypeFlag,
+ RoomNo = s.RoomNo,
LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result,
CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result
}).ToList();
@@ -176,17 +177,17 @@ namespace Shentun.Peis.Rooms
public async Task> GetAsbitemListByRoomIdAsync(RoomIdInputDto input)
{
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;
}
diff --git a/src/Shentun.Peis.Domain/Rooms/RoomManager.cs b/src/Shentun.Peis.Domain/Rooms/RoomManager.cs
index fca9dcd1..c7ebe574 100644
--- a/src/Shentun.Peis.Domain/Rooms/RoomManager.cs
+++ b/src/Shentun.Peis.Domain/Rooms/RoomManager.cs
@@ -45,7 +45,7 @@ namespace Shentun.Peis.Rooms
IsActive = entity.IsActive,
ItemTypeId = entity.ItemTypeId,
QueueTime = entity.QueueTime,
- RoomNo = entity.RoomNo,
+ RoomNo = GenerateRoomNo().Result,
MedicalCenterId = entity.MedicalCenterId,
RoomTypeFlag = entity.RoomTypeFlag
};
@@ -165,7 +165,7 @@ namespace Shentun.Peis.Rooms
/// 生成房间号
///
///
- private async string GenerateRoomNo()
+ private async Task GenerateRoomNo()
{
string roonNo = "001";
var maxRoomEnt = (await _roomRepository.GetQueryableAsync()).OrderByDescending(o => o.RoomNo).FirstOrDefault();
diff --git a/src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs b/src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs
index 5af6b2c8..66ec8893 100644
--- a/src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs
+++ b/src/Shentun.Peis.Domain/SampleGroupDetails/SampleGroupDetailManager.cs
@@ -50,7 +50,7 @@ namespace Shentun.Peis.SampleGroupDetails
{
//删除条码分组明细 批量删
- await _repository.DeleteManyAsync(sampleGroupDetailList);
+ await _repository.DeleteManyAsync(sampleGroupDetailList, true);
}
@@ -98,7 +98,7 @@ namespace Shentun.Peis.SampleGroupDetails
await _repository.DeleteManyAsync(medicalPackageDetailList);
}
-
+
}
}
}