修改监控

Uat_Study
hang 2022-05-06 15:08:53 +08:00
parent 839646e410
commit f9183dc6f4
6 changed files with 165 additions and 101 deletions

View File

@ -206,6 +206,8 @@ namespace IRaCIS.Api.Controllers
SubjectId = savedInfo.SubjectId, SubjectId = savedInfo.SubjectId,
SubjectVisitId = savedInfo.SubjectVisitId, SubjectVisitId = savedInfo.SubjectVisitId,
StudyId = archivedStudyIds[0], StudyId = archivedStudyIds[0],
StudyCode= studycode,
UploadStartTime = startTime, UploadStartTime = startTime,
UploadFinishedTime = DateTime.Now, UploadFinishedTime = DateTime.Now,
//TotalMillisecondsInterval = (DateTime.Now- startTime).TotalMilliseconds, //TotalMillisecondsInterval = (DateTime.Now- startTime).TotalMilliseconds,

View File

@ -132,103 +132,160 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
public async Task<PageOutput<UnionStudyMonitorModel>> GetDicomAndNoneDicomStudyMonitorList(StudyQuery studyQuery) public async Task<PageOutput<UnionStudyMonitorModel>> GetDicomAndNoneDicomStudyMonitorList(StudyQuery studyQuery)
{ {
var dicomStudyQuery = _repository.Where<StudyMonitor>(t => t.TrialId == studyQuery.TrialId && t.IsDicom) var StudyMonitorQuery = _repository.Where<StudyMonitor>(t => t.TrialId == studyQuery.TrialId && t.IsDicom)
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
.WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo)) .WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo))
.WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
.Select(t => new UnionStudyMonitorModel() .WhereIf(studyQuery.SubjectId != null, t => t.SubjectId == studyQuery.SubjectId)
{ .WhereIf(studyQuery.SubjectVisitId != null, t => t.SubjectId == studyQuery.SubjectVisitId)
TrialId = t.TrialId, .WhereIf(studyQuery.SiteId != null, t => t.SiteId == studyQuery.SiteId)
SiteId = t.SiteId,
SubjectId = t.SubjectId,
SubjectVisitId = t.SubjectVisitId,
VisitName = t.SubjectVisit.VisitName,
VisitNum = t.SubjectVisit.VisitNum,
SubjectCode = t.Subject.Code,
TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
TrialSiteCode = t.TrialSite.TrialSiteCode,
Uploader = t.Uploader.FullName,
UploadTime = t.CreateTime,
IP = t.IP,
FileCount = t.FileCount,
FileSize = t.FileSize,
UploadFinishedTime = t.UploadFinishedTime,
UploadStartTime = t.UploadStartTime,
TotalMillisecondsInterval = t.TotalMillisecondsInterval,
IsDicomReUpload = t.IsDicomReUpload,
StudyId = t.Id,
IsDicom = t.IsDicom,
StudyCode = t.DicomStudy.StudyCode
//DicomStudyCode = t.DicomStudy.StudyCode,
//NoneDicomCode = 0,
});
//.ProjectTo<UnionStudyViewDodel>(_mapper.ConfigurationProvider);
var nodeDicomStudyQuery = _repository.Where<StudyMonitor>(t => t.TrialId == studyQuery.TrialId && t.IsDicom == false)
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
.WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo))
.WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
.Select(t => new UnionStudyMonitorModel() .Select(t => new UnionStudyMonitorModel()
{ {
TrialId = t.TrialId,
TrialId = t.TrialId, SiteId = t.SiteId,
SiteId = t.SiteId, SubjectId = t.SubjectId,
SubjectId = t.SubjectId, SubjectVisitId = t.SubjectVisitId,
SubjectVisitId = t.SubjectVisitId, VisitName = t.SubjectVisit.VisitName,
VisitName = t.SubjectVisit.VisitName, VisitNum = t.SubjectVisit.VisitNum,
VisitNum = t.SubjectVisit.VisitNum,
SubjectCode = t.Subject.Code,
TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
TrialSiteCode = t.TrialSite.TrialSiteCode, SubjectCode = t.Subject.Code,
Uploader = t.Uploader.FullName,
UploadTime = t.CreateTime,
TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
IP = t.IP,
FileCount = t.FileCount, TrialSiteCode = t.TrialSite.TrialSiteCode,
FileSize = t.FileSize,
UploadFinishedTime = t.UploadFinishedTime, Uploader = t.Uploader.FullName,
UploadStartTime = t.UploadStartTime,
UploadTime = t.CreateTime,
TotalMillisecondsInterval = t.TotalMillisecondsInterval,
IsDicomReUpload = t.IsDicomReUpload, IP = t.IP,
StudyId = t.Id, FileCount = t.FileCount,
IsDicom = t.IsDicom, FileSize = t.FileSize,
UploadFinishedTime = t.UploadFinishedTime,
StudyCode = t.NoneDicomStudy.StudyCode UploadStartTime = t.UploadStartTime,
//DicomStudyCode = string.Empty, TotalMillisecondsInterval = t.TotalMillisecondsInterval,
//NoneDicomCode = t.NoneDicomStudy.Code,
IsDicomReUpload = t.IsDicomReUpload,
}); StudyId = t.Id,
IsDicom = t.IsDicom,
//.ProjectTo<UnionStudyViewDodel>(_mapper.ConfigurationProvider);
StudyCode = t.StudyCode
});
return await StudyMonitorQuery.ToPagedListAsync(studyQuery.PageIndex, studyQuery.PageSize, string.IsNullOrEmpty(studyQuery.SortField) ? "UploadTime" : studyQuery.SortField, studyQuery.Asc);
#region 冗余查询
//var dicomStudyQuery = _repository.Where<StudyMonitor>(t => t.TrialId == studyQuery.TrialId && t.IsDicom)
// .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
// .WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo))
// .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
// .Select(t => new UnionStudyMonitorModel()
// {
// TrialId = t.TrialId,
// SiteId = t.SiteId,
// SubjectId = t.SubjectId,
// SubjectVisitId = t.SubjectVisitId,
// VisitName = t.SubjectVisit.VisitName,
// VisitNum = t.SubjectVisit.VisitNum,
// SubjectCode = t.Subject.Code,
// TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
// TrialSiteCode = t.TrialSite.TrialSiteCode,
// Uploader = t.Uploader.FullName,
// UploadTime = t.CreateTime,
// IP = t.IP,
// FileCount = t.FileCount,
// FileSize = t.FileSize,
// UploadFinishedTime = t.UploadFinishedTime,
// UploadStartTime = t.UploadStartTime,
// TotalMillisecondsInterval = t.TotalMillisecondsInterval,
// IsDicomReUpload = t.IsDicomReUpload,
// StudyId = t.Id,
// IsDicom = t.IsDicom,
// StudyCode = t.DicomStudy.StudyCode
// //DicomStudyCode = t.DicomStudy.StudyCode,
// //NoneDicomCode = 0,
// });
////.ProjectTo<UnionStudyViewDodel>(_mapper.ConfigurationProvider);
//var nodeDicomStudyQuery = _repository.Where<StudyMonitor>(t => t.TrialId == studyQuery.TrialId && t.IsDicom == false)
// .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
// .WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo))
// .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
// .Select(t => new UnionStudyMonitorModel()
// {
// TrialId = t.TrialId,
// SiteId = t.SiteId,
// SubjectId = t.SubjectId,
// SubjectVisitId = t.SubjectVisitId,
// VisitName = t.SubjectVisit.VisitName,
// VisitNum = t.SubjectVisit.VisitNum,
// SubjectCode = t.Subject.Code,
// TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
// TrialSiteCode = t.TrialSite.TrialSiteCode,
// Uploader = t.Uploader.FullName,
// UploadTime = t.CreateTime,
// IP = t.IP,
// FileCount = t.FileCount,
// FileSize = t.FileSize,
// UploadFinishedTime = t.UploadFinishedTime,
// UploadStartTime = t.UploadStartTime,
// TotalMillisecondsInterval = t.TotalMillisecondsInterval,
// IsDicomReUpload = t.IsDicomReUpload,
// StudyId = t.Id,
// IsDicom = t.IsDicom,
// StudyCode = t.NoneDicomStudy.StudyCode
// //DicomStudyCode = string.Empty,
// //NoneDicomCode = t.NoneDicomStudy.Code,
// });
////.ProjectTo<UnionStudyViewDodel>(_mapper.ConfigurationProvider);
//var unionQuery = dicomStudyQuery.Union(nodeDicomStudyQuery)
// .WhereIf(studyQuery.SubjectId != null, t => t.SubjectId == studyQuery.SubjectId)
// .WhereIf(studyQuery.SubjectVisitId != null, t => t.SubjectId == studyQuery.SubjectVisitId)
// .WhereIf(studyQuery.SiteId != null, t => t.SiteId == studyQuery.SiteId);
//return await unionQuery.ToPagedListAsync(studyQuery.PageIndex, studyQuery.PageSize, string.IsNullOrEmpty(studyQuery.SortField) ? "UploadTime" : studyQuery.SortField, studyQuery.Asc);
#endregion
var unionQuery = dicomStudyQuery.Union(nodeDicomStudyQuery)
.WhereIf(studyQuery.SubjectId != null, t => t.SubjectId == studyQuery.SubjectId)
.WhereIf(studyQuery.SubjectVisitId != null, t => t.SubjectId == studyQuery.SubjectVisitId)
.WhereIf(studyQuery.SiteId != null, t => t.SiteId == studyQuery.SiteId);
return await unionQuery.ToPagedListAsync(studyQuery.PageIndex, studyQuery.PageSize, string.IsNullOrEmpty(studyQuery.SortField) ? "UploadTime" : studyQuery.SortField, studyQuery.Asc);
} }

View File

@ -36,6 +36,8 @@ namespace IRaCIS.Core.Application.Contracts
///<summary> TypeValue</summary> ///<summary> TypeValue</summary>
public string Type { get; set; } = String.Empty; public string Type { get; set; } = String.Empty;
public bool? IsEnable { get; set; }
} }
///<summary> QCQuestionAddOrEdit 列表查询参数模型</summary> ///<summary> QCQuestionAddOrEdit 列表查询参数模型</summary>

View File

@ -119,17 +119,17 @@ namespace IRaCIS.Core.Application.Contracts
} }
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
[HttpDelete("{noneDicomStudyId:guid}/{trialId:guid}")] [HttpDelete("{trialId:guid}/{noneDicomStudyId:guid}")]
public async Task<IResponseOutput> DeleteNoneDicomStudy(Guid noneDicomStudyId) public async Task<IResponseOutput> DeleteNoneDicomStudy(Guid noneDicomStudyId)
{ {
var noneDicomStudy = (await _noneDicomStudyRepository.FirstOrDefaultAsync(t => t.Id == noneDicomStudyId)).IfNullThrowException();
await _noneDicomStudyRepository.DeleteAsync(noneDicomStudy); await _noneDicomStudyRepository.DeleteFromQueryAsync( noneDicomStudyId);
await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => t.NoneDicomStudyId == noneDicomStudyId); await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => t.NoneDicomStudyId == noneDicomStudyId);
await _studyMonitorRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == noneDicomStudyId); //确认需求 不删除
//await _studyMonitorRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == noneDicomStudyId);
await _noneDicomStudyRepository.SaveChangesAsync(); await _noneDicomStudyRepository.SaveChangesAsync();
@ -137,14 +137,13 @@ namespace IRaCIS.Core.Application.Contracts
} }
[HttpDelete("{noneDicomStudyFileId:guid}")] [HttpDelete("{trialId:guid}/{noneDicomStudyFileId:guid}")]
public async Task<IResponseOutput> DeleteNoneDicomStudyFile(Guid noneDicomStudyFileId) public async Task<IResponseOutput> DeleteNoneDicomStudyFile(Guid noneDicomStudyFileId)
{ {
var subjectVisitId = await _noneDicomStudyFileRepository.Where(t => t.Id == noneDicomStudyFileId).Select(t => t.NoneDicomStudy.SubjectVisitId).FirstOrDefaultAsync(); //var subjectVisitId = await _noneDicomStudyFileRepository.Where(t => t.Id == noneDicomStudyFileId).Select(t => t.NoneDicomStudy.SubjectVisitId).FirstOrDefaultAsync();
var success = await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => t.Id == noneDicomStudyFileId); var success = await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => t.Id == noneDicomStudyFileId);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
@ -231,6 +230,8 @@ namespace IRaCIS.Core.Application.Contracts
// 上传非Dicom 后 将状态改为待提交 分为普通上传 和QC后重传 普通上传时才改为待提交 // 上传非Dicom 后 将状态改为待提交 分为普通上传 和QC后重传 普通上传时才改为待提交
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.None, u => new SubjectVisit() { SubmitState = SubmitStateEnum.ToSubmit }); await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.None, u => new SubjectVisit() { SubmitState = SubmitStateEnum.ToSubmit });
var studyCode= await _noneDicomStudyRepository.Where(t=>t.Id== noneDicomStudyId).Select(t => t.StudyCode).FirstOrDefaultAsync();
await _studyMonitorRepository.AddAsync(new StudyMonitor() await _studyMonitorRepository.AddAsync(new StudyMonitor()
{ {
FileCount = formCollection.Files.Count, FileCount = formCollection.Files.Count,
@ -238,7 +239,7 @@ namespace IRaCIS.Core.Application.Contracts
IsDicom = false, IsDicom = false,
IsDicomReUpload = false, IsDicomReUpload = false,
StudyId = noneDicomStudyId, StudyId = noneDicomStudyId,
StudyCode= studyCode,
UploadStartTime = startTime, UploadStartTime = startTime,
UploadFinishedTime = DateTime.Now, UploadFinishedTime = DateTime.Now,
IP = _userInfo.IP, IP = _userInfo.IP,

View File

@ -30,6 +30,7 @@ namespace IRaCIS.Core.Application.Contracts
var QCQuestionQueryable = _qcQuestionRepository var QCQuestionQueryable = _qcQuestionRepository
.WhereIf(!string.IsNullOrWhiteSpace(queryQCQuestionConfigure.QuestionName), t => t.QuestionName.Contains(queryQCQuestionConfigure.QuestionName)) .WhereIf(!string.IsNullOrWhiteSpace(queryQCQuestionConfigure.QuestionName), t => t.QuestionName.Contains(queryQCQuestionConfigure.QuestionName))
.WhereIf(!string.IsNullOrWhiteSpace(queryQCQuestionConfigure.Type), t => t.Type.Contains(queryQCQuestionConfigure.Type)) .WhereIf(!string.IsNullOrWhiteSpace(queryQCQuestionConfigure.Type), t => t.Type.Contains(queryQCQuestionConfigure.Type))
.WhereIf(queryQCQuestionConfigure.IsEnable!=null, t => t.IsEnable==queryQCQuestionConfigure.IsEnable)
.ProjectTo<QCQuestionConfigureView>(_mapper.ConfigurationProvider); .ProjectTo<QCQuestionConfigureView>(_mapper.ConfigurationProvider);
return await QCQuestionQueryable.ToListAsync(); return await QCQuestionQueryable.ToListAsync();

View File

@ -50,6 +50,7 @@ namespace IRaCIS.Core.Domain.Models
public int FileCount { get; set; } public int FileCount { get; set; }
public string StudyCode { get; set; } = string.Empty;
public Guid TrialId { get; set; } public Guid TrialId { get; set; }