查询增加 subject退出状态

This commit is contained in:
2025-06-24 13:43:26 +08:00
parent d9326a1e8e
commit 814f27244a
16 changed files with 57 additions and 15 deletions
@@ -53,8 +53,8 @@ namespace IRaCIS.Core.Application.Service
decimal thisVisitNum = 0;
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.Id).Include(x=>x.SubjectVisit).FirstOrDefaultAsync();
if(readModule!=null)
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.Id).Include(x => x.SubjectVisit).FirstOrDefaultAsync();
if (readModule != null)
{
thisVisitNum = readModule.SubjectVisit.VisitNum;
}
@@ -66,7 +66,7 @@ namespace IRaCIS.Core.Application.Service
var readModulequery = _readModuleRepository.AsQueryable().Where(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId);
var resultlist = await visitQuery.WhereIf(finalVisitNum != null && finalVisitNum != 0, x => x.VisitNum <= finalVisitNum)
.Where(x => x.VisitNum > mixReadVisitNum|| x.VisitNum==thisVisitNum)
.Where(x => x.VisitNum > mixReadVisitNum || x.VisitNum == thisVisitNum)
//.Where(x => !x.IsBaseLine) // 排除基线
.WhereIf(inDto.ReadingSetType == ReadingSetType.TumorReading, x => readModulequery.Where(y => y.SubjectVisitId == x.Id && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId && y.ReadingSetType == ReadingSetType.ImageReading).Count() > 0)
.WhereIf(inDto.ReadingSetType == ReadingSetType.ImageReading, x => readModulequery.Where(y => y.Id != inDto.Id && y.SubjectVisitId == x.Id && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId && y.ReadingSetType == ReadingSetType.ImageReading).Count() == 0)
@@ -526,6 +526,7 @@ namespace IRaCIS.Core.Application.Service
#region
var subjectVisitQuery = _subjectVisitRepository.Where(t => t.TrialId == inQuery.TrialId)/*.Where(t => t.IsLostVisit == false)*/
.Where(t => t.Subject.IsSubjectQuit == false || (t.Subject.IsSubjectQuit == true && t.SubmitState == SubmitStateEnum.Submitted))
.Where(sv => sv.Subject.FinalSubjectVisitId == null ? true : sv.VisitNum <= sv.Subject.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
{
Id = sv.Id,
@@ -533,6 +534,7 @@ namespace IRaCIS.Core.Application.Service
PDState = sv.PDState,
IsBaseLine = sv.IsBaseLine,
SubjectCode = sv.Subject.Code,
IsSubjectQuit = sv.Subject.IsSubjectQuit,
IsEnrollmentConfirm = sv.IsEnrollmentConfirm,
IsFinalVisit = sv.IsFinalVisit,
SubjectId = sv.SubjectId,
@@ -600,6 +602,7 @@ namespace IRaCIS.Core.Application.Service
});
var readMouduleQuery = _readModuleRepository.Where(t => t.TrialId == inQuery.TrialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
.Where(t => t.Subject.IsSubjectQuit == false || (t.Subject.IsSubjectQuit == true && t.SubjectVisit.SubmitState == SubmitStateEnum.Submitted))
.Select(rm => new ReadModuleView()
{
Id = rm.Id,
@@ -607,6 +610,7 @@ namespace IRaCIS.Core.Application.Service
PDState = PDStateEnum.None,
IsBaseLine = false,
SubjectCode = rm.SubjectVisit.Subject.Code,
IsSubjectQuit = rm.SubjectVisit.Subject.IsSubjectQuit,
IsEnrollmentConfirm = false,
IsFinalVisit = false,
SubjectId = rm.SubjectId,
@@ -699,13 +703,14 @@ namespace IRaCIS.Core.Application.Service
var viewList = await query.Where(x => subjectIds.Contains(x.SubjectId)).SortToListAsync(inQuery);
var list = viewList.GroupBy(x => new { x.SubjectId, x.TrialSiteId, x.TrialSiteCode, x.SubjectCode })
var list = viewList.GroupBy(x => new { x.SubjectId, x.TrialSiteId, x.TrialSiteCode, x.SubjectCode, x.IsSubjectQuit })
.Select(x => new GetReadModuleDtoOut()
{
TrialSiteCode = x.Key.TrialSiteCode,
TrialSiteId = x.Key.TrialSiteId,
SubjectCode = x.Key.SubjectCode,
SubjectId = x.Key.SubjectId,
IsSubjectQuit = x.Key.IsSubjectQuit,
Data = x.OrderBy(x => x.ModuleType).ThenBy(x => x.VisitNum).ToList(),
}).ToList();
@@ -929,7 +934,7 @@ namespace IRaCIS.Core.Application.Service
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
[TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> AddReadModule(ReadModuleAddDto dto)
{
@@ -1095,7 +1100,7 @@ namespace IRaCIS.Core.Application.Service
/// <param name="readModuleId"></param>
/// <returns></returns>
[HttpDelete("{readModuleId:guid}")]
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
[TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> DeleteReadModule(Guid readModuleId)
{