视图替代初步提交
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-08-30 17:36:23 +08:00
parent 9732b65017
commit facdb3264d
6 changed files with 179 additions and 65 deletions

View File

@ -263,7 +263,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string? TrialSiteCode { get; set; }
public string? SiteCode { get; set; }
public Guid? TrialSiteId { get; set; }

View File

@ -91,7 +91,8 @@ namespace IRaCIS.Application.Services
throw new BusinessValidationFailedException(_localizer["ReadModule_CRCConfirmCanNtoEdit"]);
}
await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.Id, x => new ReadModule() {
await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.Id, x => new ReadModule()
{
SubjectVisitId = inDto.SubjectVisitIdId,
ModuleName = inDto.Name,
});
@ -99,6 +100,111 @@ namespace IRaCIS.Application.Services
return await _readModuleRepository.SaveChangesAsync();
}
[HttpPost]
public async Task<IResponseOutput<PageOutput<GetReadModuleDtoOut>>> GetReadModuleList_New(GetReadModuleDto inQuery)
{
var criterionInfo = _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionName,t.ReadingType } ).FirstOrDefault();
var readingType = (int)criterionInfo.ReadingType;
var query = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SubjectId != null, x => x.Id == inQuery.SubjectId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), x => x.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), x => x.Code.Contains(inQuery.SubjectCode))
.Select(t => new GetReadModuleDtoOut()
{
SubjectCode = t.Code,
SubjectId = t.Id,
TrialSiteCode = t.TrialSite.TrialSiteCode,
TrialSiteId = t.TrialSiteId,
//访视要查询不失访的其次要查在 <= 截止访视的,截止访视没有就查这个受试者所有的
Data = t.SubjectVisitList.Where(t => t.IsLostVisit == false)
.Where(sv => t.FinalSubjectVisitId == null ? true : sv.VisitNum < t.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
{
Id = sv.Id,
CreateTime = sv.CreateTime,
PDState = sv.PDState,
IsBaseLine = sv.IsBaseLine,
SubjectCode = sv.Subject.Code,
IsEnrollmentConfirm = sv.IsEnrollmentConfirm,
IsFinalVisit = sv.IsFinalVisit,
SubjectId = sv.SubjectId,
SubjectVisitId = sv.Id,
IsUrgent = sv.IsUrgent,
SubjectVisitName = sv.VisitName,
IsVisit = true,
Name = sv.VisitName,
TrialSiteId = sv.TrialSiteId,
TrialSiteCode = sv.TrialSite.TrialSiteCode,
TrialId = sv.TrialId,
VisitNum = sv.VisitNum,
TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
OutPlanPreviousVisitId = sv.OutPlanPreviousVisitId,
OutPlanPreviousVisitName = sv.OutPlanPreviousVisit.VisitName,
ModuleType = sv.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit,
//只有阅片期有
CutOffVisitId = null,
CutOffVisitName = null,
ReadingSetType = null,
ReadModuleId = null,
ReadModuleName = "",
///阅片状态 0 1 2 保持访视的任务全做完了就是5 没完成就是4 否则就是3
ReadingStatus = sv.ReadingStatus < ReadingStatusEnum.TaskAllocate ? sv.ReadingStatus :
(sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
&& t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
(sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
&& t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate)),
//是否是截止访视?
IsCanChangeCutOffVisit = false,
//需要签名数量计算 基线包含subject+访视级别的
NeedSignClinicalDataCount = sv.Trial.TrialReadingCriterionList.Where(t=>t.Id==inQuery.TrialReadingCriterionId).SelectMany(u=>u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true).
Where(t => sv.IsBaseLine ? t.TrialClinicalDataSet.ClinicalDataLevel <= ClinicalLevel.SubjectVisit : t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count()
+ (sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true)
.Any(t => t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.Study)?1:0),
//签名的数量
SignClinicalDataCount = sv.ReadingClinicalDataList.Where(t=>t.IsSign==true && t.ClinicalDataTrialSet.ClinicalDataLevel!=ClinicalLevel.Study &&
t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+( (sv.SubmitState==SubmitStateEnum.Submitted && sv.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Study &&
t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Any())?1:0),
//标准名 应该是可以不查询的,只要保证逻辑正确
CriterionName = criterionInfo.CriterionName,
}).ToList()
}) ; ;
var pageList= await query.ToPagedListAsync(inQuery) ;
return ResponseOutput.Ok(pageList);
}
/// <summary>
/// 获取读片模块 //加了标准参数
/// </summary>

View File

@ -164,8 +164,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<Domain.Models.Trial, TrialConfigDTO>().ForMember(t => t.TrialId, u => u.MapFrom(c => c.Id))
.ForMember(t => t.TrialCriterionIds, u => u.MapFrom(c => c.TrialReadingCriterionList.Where(v => v.IsConfirm).OrderBy(x => x.ShowOrder).Select(r => r.Id)))
.ForMember(t => t.TrialCriterionNames, u => u.MapFrom(c => c.TrialReadingCriterionList.Where(v => v.IsConfirm).OrderBy(x => x.ShowOrder).Select(r => r.CriterionName)))
.ForMember(t => t.ClinicalDataTrialSetIds, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.Id)))
.ForMember(t => t.ClinicalDataSetNames, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => isEn_Us ? r.ClinicalDataSetEnName : r.ClinicalDataSetName)))
.ForMember(t => t.ClinicalDataTrialSetIds, u => u.MapFrom(c => c.ClinicalDataTrialSetList.Where(v => v.IsConfirm).Select(r => r.Id)))
.ForMember(t => t.ClinicalDataSetNames, u => u.MapFrom(c => c.ClinicalDataTrialSetList.Where(v => v.IsConfirm).Select(r => isEn_Us ? r.ClinicalDataSetEnName : r.ClinicalDataSetName)))
//.ForMember(t => t.CriterionIds, u => u.MapFrom(c => c.TrialDicList.Where(v => v.KeyName == StaticData.Criterion).Select(r => r.DictionaryId)))
;
CreateMap<Domain.Models.Trial, TrialSubjectConfig>();

View File

@ -28,6 +28,7 @@ namespace IRaCIS.Core.Domain.Models
private readonly List<DomainEvent> _domainEvents = [];
[JsonIgnore]
[NotMapped]
public IReadOnlyCollection<DomainEvent> DomainEvents => _domainEvents.AsReadOnly();

View File

@ -32,6 +32,10 @@ namespace IRaCIS.Core.Domain.Models
public List<VisitTask> VisitTaskList { get; set; }
[JsonIgnore]
public List<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriterionList { get; set; }
#endregion
/// <summary>
/// 系统标准ID

View File

@ -75,9 +75,13 @@ namespace IRaCIS.Core.Domain.Models
[ForeignKey("ReviewModeId")]
public Dictionary ReviewMode { get; set; }
//[JsonIgnore]
//public List<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriterionList { get; set; }
[JsonIgnore]
public List<ClinicalDataTrialSet> clinicalDataTrialSets { get; set; } = new List<ClinicalDataTrialSet> { };
public List<ClinicalDataTrialSet> ClinicalDataTrialSetList { get; set; } = new List<ClinicalDataTrialSet> { };
[JsonIgnore]
public List<TrialStatusDetail> ClinicalTrialProjectDetails { get; set; } = new List<TrialStatusDetail> { };
[JsonIgnore]