|
|
|
@ -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); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |