Browse Source

同步明细项目

master
wxd 1 year ago
parent
commit
82704a83e7
  1. 125
      src/Shentun.Peis.Application/RegisterCheckItems/RegisterCheckItemAppService.cs

125
src/Shentun.Peis.Application/RegisterCheckItems/RegisterCheckItemAppService.cs

@ -4,7 +4,9 @@ using Microsoft.EntityFrameworkCore;
using Shentun.Peis.Enums;
using Shentun.Peis.GuideTypes;
using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters;
using Shentun.Peis.ReferenceRanges;
using Shentun.Peis.RegisterCheckAsbitems;
using System;
using System.Collections.Generic;
using System.Linq;
@ -33,6 +35,9 @@ namespace Shentun.Peis.RegisterCheckItems
private readonly IRepository<Unit, Guid> _unitRepository;
private readonly RegisterCheckItemManager _registerCheckItemManager;
private readonly ReferenceRangeManager _referenceRangeManager;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<AsbitemDetail> _asbitemDetailRepository;
private readonly CacheService _cacheService;
public RegisterCheckItemAppService(
IRepository<RegisterCheckItem> registerCheckItemRepository,
@ -42,7 +47,10 @@ namespace Shentun.Peis.RegisterCheckItems
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<ReferenceRange, Guid> referenceRangeRepository,
IRepository<Unit, Guid> unitRepository,
CacheService cacheService)
CacheService cacheService,
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<AsbitemDetail> asbitemDetailRepository)
{
this._registerCheckItemRepository = registerCheckItemRepository;
this._userRepository = userRepository;
@ -52,6 +60,9 @@ namespace Shentun.Peis.RegisterCheckItems
this._referenceRangeRepository = referenceRangeRepository;
_unitRepository = unitRepository;
_cacheService = cacheService;
_registerCheckRepository = registerCheckRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_asbitemDetailRepository = asbitemDetailRepository;
}
/// <summary>
@ -223,5 +234,117 @@ namespace Shentun.Peis.RegisterCheckItems
await _registerCheckItemManager.CheckAndDeleteAsync(RegisterCheckId, ItemId);
}
/// <summary>
/// 同步明细项目
/// </summary>
/// <returns></returns>
[HttpPost("api/app/RegisterCheckItem/SyncRegisterCheckItem")]
public async Task SyncRegisterCheckItemAsync(PatientRegisterIdInputDto input)
{
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
where patientRegister.Id == input.PatientRegisterId
&& patientRegister.CompleteFlag != PatientRegisterCompleteFlag.SumCheck
&& registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked
select new
{
registerCheckId = registerCheck.Id,
asbitemId = registerCheckAsbitem.AsbitemId
}).ToList();
if (query.Any())
{
List<RegisterCheckItem> registerCheckItemList = new List<RegisterCheckItem>();
foreach (var item in query)
{
//增加register_check_item
var asbitemDetails = (await _asbitemDetailRepository.GetQueryableAsync()).Where(o => o.AsbitemId == item.asbitemId).ToList();
foreach (var asbitemDetail in asbitemDetails)
{
var registerCheckItem = new RegisterCheckItem()
{
RegisterCheckId = item.registerCheckId,
ItemId = asbitemDetail.ItemId,
ResultStatusId = ResultStatusFlag.Normal
};
registerCheckItemList.Add(registerCheckItem);
}
}
//删除原有的明细
await _registerCheckItemRepository.DeleteAsync(d => query.Select(s => s.registerCheckId).Contains(d.RegisterCheckId), true);
//增加新的明细
await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList);
}
else
{
throw new UserFriendlyException("该人员已总检或者项目已检查");
}
}
/// <summary>
/// 临时处理明细项目
/// </summary>
/// <param name="AsbitemId">组合项目ID</param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/RegisterCheckItem/TempHandRegisterCheckItem")]
public async Task TempHandRegisterCheckItemAsync(Guid AsbitemId)
{
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
where registerCheckAsbitem.AsbitemId == AsbitemId
&& patientRegister.CompleteFlag != PatientRegisterCompleteFlag.SumCheck
&& registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked
&& patientRegister.MedicalStartDate > Convert.ToDateTime("2024-05-01")
select new
{
registerCheckId = registerCheck.Id,
asbitemId = registerCheckAsbitem.AsbitemId
}).ToList();
if (query.Any())
{
List<RegisterCheckItem> registerCheckItemList = new List<RegisterCheckItem>();
foreach (var item in query)
{
//增加register_check_item
var asbitemDetails = (await _asbitemDetailRepository.GetQueryableAsync()).Where(o => o.AsbitemId == item.asbitemId).ToList();
foreach (var asbitemDetail in asbitemDetails)
{
var registerCheckItem = new RegisterCheckItem()
{
RegisterCheckId = item.registerCheckId,
ItemId = asbitemDetail.ItemId,
ResultStatusId = ResultStatusFlag.Normal
};
registerCheckItemList.Add(registerCheckItem);
}
}
//删除原有的明细
await _registerCheckItemRepository.DeleteAsync(d => query.Select(s => s.registerCheckId).Contains(d.RegisterCheckId), true);
//增加新的明细
await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList);
}
}
}
}
Loading…
Cancel
Save