修改QC 删除影像逻辑
							parent
							
								
									c477aed30c
								
							
						
					
					
						commit
						998a2177ff
					
				| 
						 | 
				
			
			@ -47,9 +47,9 @@ public static class ExcelExportHelper
 | 
			
		|||
 | 
			
		||||
                        foreach (var needTranslateProperty in needTranslatePropertyList)
 | 
			
		||||
                        {
 | 
			
		||||
                            var beforeValue = itemDic[needTranslateProperty.Name].ToString();
 | 
			
		||||
                            var beforeValue = itemDic[needTranslateProperty.Name]?.ToString();
 | 
			
		||||
 | 
			
		||||
                            itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue.ToLower()).FirstOrDefault()?.ValueCN??String.Empty;
 | 
			
		||||
                            itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).FirstOrDefault()?.ValueCN??String.Empty;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        itemDic.Add("No", no++);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -308,6 +308,7 @@ namespace IRaCIS.Core.Application.Contracts
 | 
			
		|||
 | 
			
		||||
        public string TrialSiteCode { get; set; }
 | 
			
		||||
 | 
			
		||||
        [DictionaryTranslateAttribute("Subject_Visit_Status")]
 | 
			
		||||
        public SubjectStatus SubjectStatus { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -332,7 +333,7 @@ namespace IRaCIS.Core.Application.Contracts
 | 
			
		|||
    public class UnionStudyExportDTO
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        public string Modalities { get; set; } = string.Empty;
 | 
			
		||||
        public string Modality { get; set; } = string.Empty;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public DateTime? StudyTime { get; set; }
 | 
			
		||||
| 
						 | 
				
			
			@ -352,6 +353,10 @@ namespace IRaCIS.Core.Application.Contracts
 | 
			
		|||
 | 
			
		||||
        [DictionaryTranslateAttribute("YesOrNo")]
 | 
			
		||||
        public bool IsDicom { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [DictionaryTranslateAttribute("CheckState")]
 | 
			
		||||
        public CheckStateEnum CheckState { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -394,6 +399,11 @@ namespace IRaCIS.Core.Application.Contracts
 | 
			
		|||
        public bool? IsCheckBack { get; set; }
 | 
			
		||||
 | 
			
		||||
        public string CheckResult { get; set; } = String.Empty;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public string CheckDialogStr { get; set; }
 | 
			
		||||
 | 
			
		||||
        public DateTime? CheckBackTime { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -172,6 +172,7 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
                  
 | 
			
		||||
                  .ProjectTo<ReadPeriodExportDto>(_mapper.ConfigurationProvider).ToListAsync();
 | 
			
		||||
 | 
			
		||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ToList();
 | 
			
		||||
 | 
			
		||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -204,8 +205,8 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
                        VisitName = t.SubjectVisit.VisitName,
 | 
			
		||||
                        VisitNum = t.SubjectVisit.VisitNum,
 | 
			
		||||
                        IsDicom = true,
 | 
			
		||||
                        SubjectCode = t.Subject.Code,                    
 | 
			
		||||
                        Modalities = t.Modalities,                    
 | 
			
		||||
                        SubjectCode = t.Subject.Code,
 | 
			
		||||
                        Modality = t.Modalities,                    
 | 
			
		||||
                        StudyCode = t.StudyCode,                    
 | 
			
		||||
                        StudyTime = t.StudyTime,
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -213,6 +214,7 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
 | 
			
		||||
                        TrialSiteCode = t.TrialSite.TrialSiteCode,
 | 
			
		||||
 | 
			
		||||
                        CheckState=t.SubjectVisit.CheckState,
 | 
			
		||||
                        //Uploader = t.Uploader.UserName,
 | 
			
		||||
                        //UploadTime = t.CreateTime
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -232,8 +234,8 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
                     VisitName = t.SubjectVisit.VisitName,
 | 
			
		||||
                     VisitNum = t.SubjectVisit.VisitNum,
 | 
			
		||||
                     IsDicom = false,
 | 
			
		||||
                     SubjectCode = t.Subject.Code,                
 | 
			
		||||
                     Modalities = t.Modality,                  
 | 
			
		||||
                     SubjectCode = t.Subject.Code,
 | 
			
		||||
                     Modality = t.Modality,                  
 | 
			
		||||
                     StudyCode = t.StudyCode,                  
 | 
			
		||||
                     StudyTime = t.ImageDate,
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -241,6 +243,8 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
 | 
			
		||||
                     TrialSiteCode = t.TrialSite.TrialSiteCode,
 | 
			
		||||
 | 
			
		||||
                     CheckState = t.SubjectVisit.CheckState,
 | 
			
		||||
 | 
			
		||||
                     //Uploader = t.CreateUser.UserName,
 | 
			
		||||
                     //UploadTime = t.CreateTime
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -251,6 +255,8 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
            var list = await dicomStudyQuery.Union(nodeDicomStudyQuery)
 | 
			
		||||
              .ToListAsync();
 | 
			
		||||
 | 
			
		||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t=>t.VisitNum).ToList();
 | 
			
		||||
 | 
			
		||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == studyQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
			
		||||
 | 
			
		||||
            exportInfo.List = list;
 | 
			
		||||
| 
						 | 
				
			
			@ -281,6 +287,8 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
                        .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//CRC 过滤负责的site
 | 
			
		||||
                        .ProjectTo<PMKCheckEXportDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
			
		||||
 | 
			
		||||
            list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
 | 
			
		||||
 | 
			
		||||
            var exportInfo = (await _trialRepository.Where(t => t.Id == checkQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
			
		||||
 | 
			
		||||
            exportInfo.List = list;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1323,6 +1323,10 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
            await VerifyIsCanQCAsync(dbSubjectVisit);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            //删除 软删除的物理文件
 | 
			
		||||
            var instanceIdList = await _repository.Where<DicomInstance>(t => t.DicomSerie.IsDeleted && t.SubjectVisitId == subjectVisitId)
 | 
			
		||||
                .Select(t => new { InstanceId = t.Id, t.SeriesId, t.StudyId, t.SubjectId, t.SiteId }).ToListAsync();
 | 
			
		||||
 | 
			
		||||
            //维护统一状态
 | 
			
		||||
            dbSubjectVisit.ReadingStatus = ReadingStatusEnum.ConsistencyCheck;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1356,12 +1360,29 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
                        //维护统一状态
 | 
			
		||||
                        dbSubjectVisit.ReadingStatus = trialConfig.IsImageConsistencyVerification ? ReadingStatusEnum.ConsistencyCheck : ReadingStatusEnum.TaskAllocate;
 | 
			
		||||
 | 
			
		||||
                        //删除影像
 | 
			
		||||
                        instanceIdList.ForEach(t =>
 | 
			
		||||
                        {
 | 
			
		||||
                            var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
 | 
			
		||||
                            var path =
 | 
			
		||||
 | 
			
		||||
                             FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
 | 
			
		||||
 | 
			
		||||
                            if (System.IO.File.Exists(path))
 | 
			
		||||
                            {
 | 
			
		||||
                                File.Delete(path);
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        return ResponseOutput.NotOk("项目配置影像质控为单审,当前访视影像质控任务不能从当前审核状态变更到 审核通过。");
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                  
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                else if (trialConfig.QCProcessEnum == TrialQCProcess.DoubleAudit)
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			@ -1402,6 +1423,21 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
                        //维护统一状态
 | 
			
		||||
                        dbSubjectVisit.ReadingStatus = trialConfig.IsImageConsistencyVerification ? ReadingStatusEnum.ConsistencyCheck : ReadingStatusEnum.TaskAllocate;
 | 
			
		||||
 | 
			
		||||
                        //删除影像
 | 
			
		||||
                        instanceIdList.ForEach(t =>
 | 
			
		||||
                        {
 | 
			
		||||
                            var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
 | 
			
		||||
                            var path =
 | 
			
		||||
 | 
			
		||||
                             FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
 | 
			
		||||
 | 
			
		||||
                            if (System.IO.File.Exists(path))
 | 
			
		||||
                            {
 | 
			
		||||
                                File.Delete(path);
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
| 
						 | 
				
			
			@ -1460,31 +1496,8 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
            dbSubjectVisit.CurrentActionUserId = null;
 | 
			
		||||
            dbSubjectVisit.CurrentActionUserExpireTime = null;
 | 
			
		||||
 | 
			
		||||
            //删除 软删除的物理文件
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            var instanceIdList = await _repository.Where<DicomInstance>(t => t.DicomSerie.IsDeleted && t.SubjectVisitId == subjectVisitId)
 | 
			
		||||
                .Select(t => new { InstanceId = t.Id, t.SeriesId, t.StudyId, t.SubjectId, t.SiteId }).ToListAsync();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            instanceIdList.ForEach(t =>
 | 
			
		||||
            {
 | 
			
		||||
                var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
 | 
			
		||||
                var path =
 | 
			
		||||
 | 
			
		||||
                 FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
 | 
			
		||||
 | 
			
		||||
                if (System.IO.File.Exists(path))
 | 
			
		||||
                {
 | 
			
		||||
                    File.Delete(path);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            await _repository.SaveChangesAsync();
 | 
			
		||||
 | 
			
		||||
            //var success = await _repository.BatchUpdateAsync<TrialSign>(t => t.Id == signId, u => new TrialSign() { IsCompleted = true });
 | 
			
		||||
 | 
			
		||||
            return ResponseOutput.Result(true);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1492,6 +1505,8 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 设置、取消 访视紧急
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
              .ForMember(d => d.CreateUserName, u => u.MapFrom(s => s.CreateUser.UserName))
 | 
			
		||||
              .ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName))
 | 
			
		||||
 | 
			
		||||
              .ForMember(d=>d.DialogStr,u=>u.MapFrom(t=> string.Join('|', t.DialogList.OrderBy(t => t.CreateTime).Select(c => c.CreateUser.UserName + " " + c.CreateTime.ToString("yyyy-mm-dd hh:mm:ss") + " :" + c.TalkContent))  ))
 | 
			
		||||
              .ForMember(d=>d.DialogStr,u=>u.MapFrom(t=> string.Join(" | ", t.DialogList.OrderBy(t => t.CreateTime).Select(c => c.CreateUser.UserName + " " + c.CreateTime.ToString("yyyy-mm-dd hh:mm:ss") + " :" + c.TalkContent))  ))
 | 
			
		||||
              
 | 
			
		||||
              .ForMember(d => d.SubjectState, u => u.MapFrom(s => s.SubjectVisit.Subject.Status));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -81,7 +81,10 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
            CreateMap<SubjectVisit, PMKCheckEXportDTO>()
 | 
			
		||||
             .ForMember(d => d.TalkContent, u => u.MapFrom(s => s.CheckChallengeDialogList.OrderByDescending(y => y.CreateTime).Select(x => x.TalkContent).FirstOrDefault()))
 | 
			
		||||
             .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
 | 
			
		||||
             .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode));
 | 
			
		||||
             .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
 | 
			
		||||
 | 
			
		||||
             .ForMember(d => d.CheckDialogStr, u => u.MapFrom(t => string.Join(" | ", t.CheckChallengeDialogList.OrderBy(t => t.CreateTime).Select(c => c.CreateUser.UserName + " " + c.CreateTime.ToString("yyyy-mm-dd hh:mm:ss") + " :" + c.TalkContent))))
 | 
			
		||||
             ;
 | 
			
		||||
 | 
			
		||||
            CreateMap<VisitTask, ReadingTaskExportDto>()
 | 
			
		||||
                 .ForMember(o => o.TrialReadingCriterionName, t => t.MapFrom(u => u.TrialReadingCriterion.CriterionName))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue