访视计划废除

This commit is contained in:
2022-04-13 10:50:14 +08:00
parent af15ff58d4
commit 440a3f0554
4 changed files with 68 additions and 23 deletions
@@ -23,6 +23,9 @@ namespace IRaCIS.Application.Contracts
public class VisitStageDTO : VisitPlanCommand
{
public DateTime CreateTime { get; set; }
public bool IsHaveFirstConfirmed { get; set; }
}
public class VisitPlanView
@@ -60,6 +63,8 @@ namespace IRaCIS.Application.Contracts
public int VisitWindowLeft { get; set; }
public int VisitWindowRight { get; set; }
public bool IsDeleted { get; set; }
}
@@ -43,7 +43,7 @@ namespace IRaCIS.Application.Services
/// <summary> 获取项目访视计划</summary>
public async Task<PageOutput<VisitStageDTO>> GetTrialVisitStageList(VisitPlanQueryDTO param)
{
var visitStageQuery = _visitStageRepository.Where(u => u.TrialId == param.TrialId)
var visitStageQuery = _visitStageRepository.AsQueryable(true).Where(u => u.TrialId == param.TrialId)
.WhereIf(!string.IsNullOrWhiteSpace(param.Keyword), t => t.VisitName.Contains(param.Keyword))
.ProjectTo<VisitStageDTO>(_mapper.ConfigurationProvider);
@@ -93,12 +93,12 @@ namespace IRaCIS.Application.Services
{
DateTime createtime = DateTime.Now;
List<DataInspection> datas = new List<DataInspection>();
if (!await _repository.Where<Trial>(t => t.Id == visitPlan.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialOngoing || t.TrialStatusStr == StaticData.TrialInitializing))
if (!await _trialRepository.Where(t => t.Id == visitPlan.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialOngoing || t.TrialStatusStr == StaticData.TrialInitializing))
{
return ResponseOutput.NotOk(" only in Initializing or Ongoing State can operate ");
}
var visitPlanList = await _visitStageRepository.Where(t => t.TrialId == visitPlan.TrialId)
var visitPlanList = await _visitStageRepository.Where(t => t.TrialId == visitPlan.TrialId,ignoreQueryFilters:true)
.Select(t => new { t.Id, t.VisitNum, t.VisitDay }).OrderBy(t => t.VisitNum).ToListAsync();
//更新的时候,需要排除自己
@@ -127,20 +127,20 @@ namespace IRaCIS.Application.Services
if (visitPlan.Id == Guid.Empty || visitPlan.Id == null)//add
{
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum)))
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum), true))
{
return ResponseOutput.NotOk("A visit with the same VisitName/VisitNum already existed in the current visit plan.");
}
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine) && visitPlan.IsBaseLine)
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine, true) && visitPlan.IsBaseLine)
{
return ResponseOutput.NotOk("A visit already is baseline in the current visit plan.");
}
//已添加受试者 都不存在该新增的计划名称 那么该项目所有受试者都增加一个访视记录
if (!await _repository.AnyAsync<SubjectVisit>(t => t.VisitName == visitPlan.VisitName && t.TrialId == visitPlan.TrialId))
if (!await _subjectVisitRepository.AnyAsync(t => t.VisitName == visitPlan.VisitName && t.TrialId == visitPlan.TrialId))
{
var subjectSVS = await _repository.Where<SubjectVisit>(t => t.TrialId == visitPlan.TrialId).Select(t => new { t.SubjectId, t.SiteId,t.IsFinalVisit }).Distinct().ToListAsync();
var subjectSVS = await _subjectVisitRepository.Where(t => t.TrialId == visitPlan.TrialId).Select(t => new { t.SubjectId, t.SiteId,t.IsFinalVisit }).Distinct().ToListAsync();
var subjects = subjectSVS.Select(t => new { t.SubjectId, t.SiteId }).Distinct().ToList();
@@ -198,7 +198,7 @@ namespace IRaCIS.Application.Services
visitPlan.Id = result.Id;
//更新项目访视计划状态为未确认
await _repository.UpdateFromQueryAsync<Trial>(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false });
await _trialRepository.UpdateFromQueryAsync(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false });
await _repository.SaveChangesAsync();
@@ -211,19 +211,19 @@ namespace IRaCIS.Application.Services
{
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum) && t.Id != visitPlan.Id))
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum) && t.Id != visitPlan.Id,true))
{
return ResponseOutput.NotOk("A visit with the same VisitName/VisitNum already existed in the current visit plan.");
}
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine && t.Id != visitPlan.Id) && visitPlan.IsBaseLine)
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine && t.Id != visitPlan.Id,true) && visitPlan.IsBaseLine)
{
return ResponseOutput.NotOk("A visit already is baseline in the current visit plan.");
}
var stage = await _visitStageRepository.FirstOrDefaultAsync(t => t.Id == visitPlan.Id);
var stage = await _visitStageRepository.FirstOrDefaultAsync(t => t.Id == visitPlan.Id,true);
if (stage == null) return ResponseOutput.NotOk("None");
//修改是否是基线
@@ -240,7 +240,7 @@ namespace IRaCIS.Application.Services
stage.BlindName = "B" + ((int)visitPlan.VisitNum * 10).ToString("D3");
//更新项目访视计划状态为未确认
await _repository.UpdateFromQueryAsync<Trial>(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false });
//await _trialRepository.UpdateFromQueryAsync(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false });
await _repository.SaveChangesAsync();
@@ -296,11 +296,8 @@ namespace IRaCIS.Application.Services
await _inspectionService.AddListInspectionRecordAsync(datas);
await _repository.DeleteFromQueryAsync<SubjectVisit>(t => t.TrialId == visitPlan.TrialId && t.VisitName == visitPlan.VisitName);
var result = await _visitStageRepository.DeleteFromQueryAsync(u => u.Id == id);
return ResponseOutput.Result(result);
}
@@ -363,7 +360,7 @@ namespace IRaCIS.Application.Services
//访视计划 整体状态变更为 确认
await _visitStageRepository.UpdateFromQueryAsync(u => u.TrialId == trialId, t => new VisitStage() { IsConfirmed = true });
await _visitStageRepository.UpdateFromQueryAsync(u => u.TrialId == trialId, t => new VisitStage() { IsConfirmed = true ,IsHaveFirstConfirmed = true});
var stat = new VisitPlanInfluenceStat() { TrialId = trialId };