修改登录逻辑
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-06-12 10:50:18 +08:00
parent f324d207dd
commit c49cf0ed12
5 changed files with 51 additions and 18 deletions
@@ -29,12 +29,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
{
private readonly IEasyCachingProvider _provider;
private readonly IRepository<SystemAnonymization> _systemAnonymizationRepository;
private readonly IRepository<VisitTask> _visitTaskRepository;
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IOSSService _oSSService;
private readonly IRepository<StudyMonitor> _studyMonitorRepository;
private readonly IDistributedLockProvider _distributedLockProvider;
public DownloadAndUploadService(IEasyCachingProvider provider, IRepository<SystemAnonymization> systemAnonymizationRepository, IRepository<SubjectVisit> subjectVisitRepository, IOSSService oSSService,
IRepository<StudyMonitor> studyMonitorRepository, IDistributedLockProvider distributedLockProvider)
IRepository<StudyMonitor> studyMonitorRepository, IDistributedLockProvider distributedLockProvider, IRepository<VisitTask> visitTaskRepository)
{
_systemAnonymizationRepository = systemAnonymizationRepository;
@@ -44,6 +45,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
_studyMonitorRepository = studyMonitorRepository;
_distributedLockProvider = distributedLockProvider;
_provider = provider;
_visitTaskRepository = visitTaskRepository;
}
/// <summary>
@@ -52,9 +54,39 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
/// 根据当前受试者该标准已阅任务数量(生效失效的任务都算,考虑重阅,最后编号不重复) 第一个就是TimePoint Ran1,后面依次随机挑选出来的阅片序号依次递增
/// </summary>
/// <param name="subjectId"></param>
/// <param name="trialReadingCriterionId"></param>
/// <returns></returns>
public async Task<IResponseOutput> SubejctRandomReadingTaskNameDeal(Guid subjectId)
public async Task<IResponseOutput> SubejctRandomReadingTaskNameDeal(Guid subjectId, Guid trialReadingCriterionId)
{
//subject 随机阅片 才处理任务编号
if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom))
{
//找到 非一致性分析,未签名,状态正常的 并且任务名称不是TimePoint的 任务
var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false
&& t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskBlindName != "Timepoint" && t.ReadingCategory == ReadingCategory.Visit
&& (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze), true).ToListAsync();
if (needDealTaskList.Count>0)
{
//已完成的访视任务数量(包含重阅的)
var haveFinishedTaskCount = await _visitTaskRepository.CountAsync(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false
&& t.ReadingTaskState == ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Visit);
//随机赋值编号 比如要处理5个任务,实例化一个包含1-5的数组,每次随机取出一个
List<int> availableNumbers = Enumerable.Range(haveFinishedTaskCount + 1, needDealTaskList.Count).ToList();
Random rng = new Random();
foreach (var visitTask in needDealTaskList)
{
int randomIndex = rng.Next(availableNumbers.Count);
visitTask.TaskBlindName = $"Timepoint Ran {availableNumbers[randomIndex]}";
availableNumbers.RemoveAt(randomIndex);
}
await _visitTaskRepository.SaveChangesAsync();
}
}
return ResponseOutput.Ok();
}
@@ -62,10 +94,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
/// 获取该受试者任务上传列表(展示已上传情况)
/// </summary>
/// <param name="subjectId"></param>
/// <param name="trialReadingCriterionId"></param>
/// <returns></returns>
public async Task<IResponseOutput<List<SubjectImageUploadDTO>>> GetSubjectImageUploadList(Guid subjectId)
public async Task<IResponseOutput<List<SubjectImageUploadDTO>>> GetSubjectImageUploadList(Guid subjectId,Guid trialReadingCriterionId)
{
var query = _repository.Where<VisitTask>(t => t.SubjectId == subjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id)
var query = _repository.Where<VisitTask>(t => t.SubjectId == subjectId &&t.TrialReadingCriterionId== trialReadingCriterionId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id)
.Select(u => new SubjectImageUploadDTO()
{
VisitTaskId = u.Id,
@@ -76,11 +109,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TrialSiteId = u.Subject.TrialSiteId,
IsImageFilter=u.TrialReadingCriterion.IsImageFilter,
IsImageFilter = u.TrialReadingCriterion.IsImageFilter,
CriterionModalitys= u.TrialReadingCriterion.CriterionModalitys,
CriterionModalitys = u.TrialReadingCriterion.CriterionModalitys,
SubjectCode = u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code ,
SubjectCode = u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code,
TaskBlindName = u.TaskBlindName,
TaskName = u.TaskName,
@@ -328,7 +361,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
else
{
var studyId = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), findOriginStudy.VisitTaskId.ToString());
var studyId = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), findOriginStudy.VisitTaskId.ToString());
var study = await _repository.FirstOrDefaultAsync<TaskStudy>(t => t.Id == studyId);
@@ -339,7 +372,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//特殊处理逻辑
study.Modalities = string.Join("、", incommand.Study.SeriesList.Select(t => t.Modality).Union(study.Modalities.Split("、", StringSplitOptions.RemoveEmptyEntries)).Distinct());
SpecialArchiveStudyDeal(study);
modalitys = study.Modalities;
modalitys = study.Modalities;
// 少了整个序列
@@ -552,7 +585,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
{
//受试者随机阅片,需要匿名化检查时间
DicomFile dicomFile = await DicomFile.OpenAsync(destinationPath, Encoding.Default);
DicomDataset dataset = dicomFile.Dataset;
DicomDataset dataset = dicomFile.Dataset;
dataset.AddOrUpdate(DicomTag.StudyDate, string.Empty);
dataset.AddOrUpdate(DicomTag.StudyTime, string.Empty);