修改导表
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-12-04 17:45:06 +08:00
parent 137f77cdc5
commit 47eaed78ed
3 changed files with 72 additions and 24 deletions

View File

@ -12,9 +12,11 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using NPOI.POIFS.Properties;
using NPOI.SS.Formula.Functions;
using NPOI.XSSF.UserModel;
using System.ComponentModel.Design;
using System.Globalization;
using System.Linq;
using static IRaCIS.Core.Application.Service.ExcelExportHelper;
using IDictionaryService = IRaCIS.Application.Interfaces.IDictionaryService;
@ -1612,34 +1614,77 @@ namespace IRaCIS.Core.Application.Service.Common
}
else
{
//产生了阅片期
if (resultExceptJudgeList.Any(t => t.IsSubjectHaveReadingPeriod))
//没有产生裁判 有可能一个人没做完,也有可能做完了没产生裁判
//两个人都做了1、两个人都阅片完确实没产生2、两个人都阅片完,还没到阅片期,没产生裁判)
//默认都设置为null 仅仅处理 阅片期读完了没产生裁判 裁判选择标记需要设置的访视
visitItem.IsJudgeSelect = null;
visitItem.IsTrigerJudge = null;
//阅片期访视号
var subjectReadingPeriondVisitNumList = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode).FirstOrDefault()?.SubjectCriterionReadingPeriodVisitNumList;
if (subjectReadingPeriondVisitNumList != null)
{
//没有产生裁判 有可能一个人没做完,也有可能做完了没产生裁判
//两个人都做了
if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2)
//两个人完成最大得任务号
var subjectMaxFinishedVisitTaskNum = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode)
.GroupBy(t => t.VisitTaskNum).Where(g => g.Count() == 2).Select(g => g.Key).DefaultIfEmpty().Max();
var minReadingPeriodVisitNum = subjectReadingPeriondVisitNumList.Min();
var maxReadingPeriodVisitNum = subjectReadingPeriondVisitNumList.Max();
//最小阅片期 最大阅片期 完成访视号 对应存在三种情况
//有阅片期读完了 存在两种
//大于最大阅片期
if (subjectMaxFinishedVisitTaskNum > maxReadingPeriodVisitNum)
{
//不存在裁判 将R1设置
if (visitItem.ArmEnum == Arm.DoubleReadingArm1)
//两个人都做完了 并且当前任务号小于 最大阅片期 才设置裁判 产生标记和裁判选择标记
if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2 && visitItem.VisitTaskNum <= maxReadingPeriodVisitNum)
{
visitItem.IsJudgeSelect = true;
}
else
{
visitItem.IsJudgeSelect = false;
//不存在裁判 将R1设置
if (visitItem.ArmEnum == Arm.DoubleReadingArm1)
{
visitItem.IsJudgeSelect = true;
visitItem.IsTrigerJudge = false;
}
else
{
visitItem.IsJudgeSelect = false;
visitItem.IsTrigerJudge = false;
}
}
}
else
//大于最小阅片期
else if (subjectMaxFinishedVisitTaskNum > minReadingPeriodVisitNum)
{
visitItem.IsJudgeSelect = null;
visitItem.IsTrigerJudge = null;
//找到小于完成最大任务号最近的阅片期号
var latestFinishedReadingPeriodNum = subjectReadingPeriondVisitNumList.Where(t => t < subjectMaxFinishedVisitTaskNum).OrderBy(t => t).Max();
if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2 && visitItem.VisitTaskNum <= latestFinishedReadingPeriodNum)
{
//不存在裁判 将R1设置
if (visitItem.ArmEnum == Arm.DoubleReadingArm1)
{
visitItem.IsJudgeSelect = true;
visitItem.IsTrigerJudge = false;
}
else
{
visitItem.IsJudgeSelect = false;
visitItem.IsTrigerJudge = false;
}
}
}
}
else
{
visitItem.IsJudgeSelect = null;
visitItem.IsTrigerJudge = null;
}

View File

@ -227,7 +227,7 @@ namespace IRaCIS.Core.Application.Contracts
public string SubjectCode { get; set; } = String.Empty;
[DictionaryTranslateAttribute("Subject_Visit_Status")]
public SubjectStatus SubjectStatus { get; set; }
public SubjectStatus SubjectStatus { get; set; }
public String TrialSiteCode { get; set; } = String.Empty;
@ -1159,7 +1159,7 @@ namespace IRaCIS.Core.Application.Contracts
{
public List<CommonQuesionInfo> QuestionAnswerList { get; set; }
public bool IsSubjectHaveReadingPeriod { get; set; }
public List<decimal> SubjectCriterionReadingPeriodVisitNumList { get; set; }
public String TrialSiteCode { get; set; } = String.Empty;
public string SubjectCode { get; set; } = String.Empty;

View File

@ -257,9 +257,12 @@ namespace IRaCIS.Core.Application.Service
false)))
.ForMember(o => o.JudgeNote, t => t.MapFrom(u => u.ReadingCategory==ReadingCategory.Judge? u.JudgeResultRemark : u.JudgeVisitTask.JudgeResultRemark))
.ForMember(o => o.VisitNote, t => t.MapFrom(u => u.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == QuestionType.AdjustReason).FirstOrDefault()!.Answer))
.ForMember(o => o.IsSubjectHaveReadingPeriod, t => t.MapFrom(u => arbitrationRule == ArbitrationRule.Reading ?
u.Subject.ReadModuleList.Any(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading) : false))
//.ForMember(o => o.IsSubjectHaveReadingPeriod, t => t.MapFrom(u => arbitrationRule == ArbitrationRule.Reading ?
//u.Subject.ReadModuleList.Any(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading) : false))
.ForMember(o => o.SubjectCriterionReadingPeriodVisitNumList, t => t.MapFrom(u =>
u.Subject.ReadModuleList.Where(t=>t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading).Select(c=>c.SubjectVisit.VisitNum)))
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.Subject.TrialSite.TrialSiteCode))
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code))
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName))