修改随机阅片任务盲态名字
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
83111d3338
commit
b9a79f0658
|
|
@ -337,6 +337,12 @@
|
||||||
<param name="taskId"></param>
|
<param name="taskId"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.VisitTaskHelpeService.GenerateTaskNo">
|
||||||
|
<summary>
|
||||||
|
从 NewId 的后 3 个字节(24 位)生成一个 6 位十六进制字符串
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.VisitTaskHelpeService.GetIsClinicalDataSignTest(System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Service.VisitTaskHelpeService.GetIsClinicalDataSignTest(System.Guid)">
|
||||||
<summary>
|
<summary>
|
||||||
获取GetIsClinicalDataSignTest
|
获取GetIsClinicalDataSignTest
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,45 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region 获取随机编号
|
||||||
|
/// <summary>
|
||||||
|
/// 从 NewId 的后 3 个字节(24 位)生成一个 6 位十六进制字符串
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string GenerateTaskNo()
|
||||||
|
{
|
||||||
|
var bytes = NewId.Next().ToByteArray();
|
||||||
|
|
||||||
|
uint value =
|
||||||
|
BitConverter.ToUInt32(bytes, 0)
|
||||||
|
^ BitConverter.ToUInt32(bytes, 4)
|
||||||
|
^ BitConverter.ToUInt32(bytes, 8)
|
||||||
|
^ BitConverter.ToUInt32(bytes, 12);
|
||||||
|
|
||||||
|
return (value & 0xFFFFFF).ToString("X6");
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<string> GetRandomTaskName(Guid trialId, List<string> existList)
|
||||||
|
{
|
||||||
|
var taskName = GenerateTaskNo();
|
||||||
|
|
||||||
|
while (existList.Any(t => t == taskName))
|
||||||
|
{
|
||||||
|
taskName = GenerateTaskNo();
|
||||||
|
}
|
||||||
|
|
||||||
|
while (await _visitTaskRepository.AnyAsync(t => t.TaskBlindName == taskName && t.TrialId == trialId))
|
||||||
|
{
|
||||||
|
taskName = GenerateTaskNo();
|
||||||
|
}
|
||||||
|
|
||||||
|
existList.Add(taskName);
|
||||||
|
|
||||||
|
return taskName;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
//基于标准签名 产生任务 (或者手动选择某些访视生成该标准的任务)
|
//基于标准签名 产生任务 (或者手动选择某些访视生成该标准的任务)
|
||||||
public async Task BaseCritrionGenerateVisitTask(Guid trialId, Guid confirmedTrialReadingCriterionId, bool? isManualSelectVisit = null, List<Guid>? subjectVisitIdList = null)
|
public async Task BaseCritrionGenerateVisitTask(Guid trialId, Guid confirmedTrialReadingCriterionId, bool? isManualSelectVisit = null, List<Guid>? subjectVisitIdList = null)
|
||||||
|
|
@ -155,7 +194,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
int currentMaxCodeInt = cacheMaxCodeInt > dbMaxCode ? cacheMaxCodeInt : dbMaxCode;
|
int currentMaxCodeInt = cacheMaxCodeInt > dbMaxCode ? cacheMaxCodeInt : dbMaxCode;
|
||||||
|
|
||||||
|
var randomTaskBlindNameList = new List<string>();
|
||||||
|
|
||||||
foreach (var subjectGroup in needGenerateVisit.GroupBy(t => t.SubjectId).Select(g => new { SubjectId = g.Key, SubjectVisitList = g.ToList() }))
|
foreach (var subjectGroup in needGenerateVisit.GroupBy(t => t.SubjectId).Select(g => new { SubjectId = g.Key, SubjectVisitList = g.ToList() }))
|
||||||
{
|
{
|
||||||
|
|
@ -185,6 +224,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (trialReadingCriterionConfig.IsReadingTaskViewInOrder == ReadingOrder.Random)
|
||||||
|
{
|
||||||
|
blindTaskName = await GetRandomTaskName(trialId, randomTaskBlindNameList);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
blindTaskName = "Timepoint";
|
blindTaskName = "Timepoint";
|
||||||
|
|
@ -594,7 +637,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
int currentMaxCodeInt = cacheMaxCodeInt > dbMaxCode ? cacheMaxCodeInt : dbMaxCode;
|
int currentMaxCodeInt = cacheMaxCodeInt > dbMaxCode ? cacheMaxCodeInt : dbMaxCode;
|
||||||
|
|
||||||
|
var randomTaskBlindNameList = new List<string>();
|
||||||
|
|
||||||
|
|
||||||
switch (generateTaskCommand.ReadingCategory)
|
switch (generateTaskCommand.ReadingCategory)
|
||||||
|
|
@ -654,6 +697,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var isFrontTaskNeedSignButNotSign = await _visitTaskRepository.AnyAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.TaskState == TaskState.Effect && t.VisitTaskNum < subjectVisit.VisitNum && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false);
|
var isFrontTaskNeedSignButNotSign = await _visitTaskRepository.AnyAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.TaskState == TaskState.Effect && t.VisitTaskNum < subjectVisit.VisitNum && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false);
|
||||||
|
|
||||||
|
|
||||||
var blindTaskName = string.Empty;
|
var blindTaskName = string.Empty;
|
||||||
|
|
||||||
if (trialReadingCriterionConfig.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
|
if (trialReadingCriterionConfig.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
|
||||||
|
|
@ -668,6 +712,11 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (trialReadingCriterionConfig.IsReadingTaskViewInOrder == ReadingOrder.Random)
|
||||||
|
{
|
||||||
|
blindTaskName = await GetRandomTaskName(trialId, randomTaskBlindNameList);
|
||||||
|
}
|
||||||
|
//受试者随机
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
blindTaskName = "Timepoint";
|
blindTaskName = "Timepoint";
|
||||||
|
|
@ -1277,6 +1326,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var reReadingVisitTask = generateTaskCommand.ReReadingTask;
|
var reReadingVisitTask = generateTaskCommand.ReReadingTask;
|
||||||
|
|
||||||
|
|
||||||
Guid? subjectVisitId = Guid.Empty;
|
Guid? subjectVisitId = Guid.Empty;
|
||||||
|
|
||||||
if (reReadingVisitTask.SourceSubjectVisitId == null)
|
if (reReadingVisitTask.SourceSubjectVisitId == null)
|
||||||
|
|
@ -1317,6 +1367,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
//&& t.TrialReadingCriterionId == reReadingVisitTask.TrialReadingCriterionId && t.TaskState == TaskState.Effect
|
//&& t.TrialReadingCriterionId == reReadingVisitTask.TrialReadingCriterionId && t.TaskState == TaskState.Effect
|
||||||
// && t.SourceSubjectVisitId == reReadingVisitTask.SourceSubjectVisitId && t.ArmEnum == reReadingVisitTask.ArmEnum && t.DoctorUserId == reReadingVisitTask.DoctorUserId).FirstOrDefault();
|
// && t.SourceSubjectVisitId == reReadingVisitTask.SourceSubjectVisitId && t.ArmEnum == reReadingVisitTask.ArmEnum && t.DoctorUserId == reReadingVisitTask.DoctorUserId).FirstOrDefault();
|
||||||
|
|
||||||
|
var isRandomReading = trialReadingCriterionConfigList.FirstOrDefault(t => t.TrialReadingCriterionId == reReadingVisitTask.TrialReadingCriterionId)?.IsReadingTaskViewInOrder == ReadingOrder.Random;
|
||||||
|
|
||||||
|
var taskBlindName = isRandomReading ? await GetRandomTaskName(trialId, randomTaskBlindNameList) : reReadingVisitTask.TaskBlindName;
|
||||||
|
|
||||||
|
|
||||||
var newTask = await _visitTaskRepository.AddAsync(new VisitTask()
|
var newTask = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||||
{
|
{
|
||||||
|
|
@ -1325,7 +1379,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
SubjectId = reReadingVisitTask.SubjectId,
|
SubjectId = reReadingVisitTask.SubjectId,
|
||||||
ArmEnum = reReadingVisitTask.ArmEnum,
|
ArmEnum = reReadingVisitTask.ArmEnum,
|
||||||
TaskName = reReadingVisitTask.TaskName,
|
TaskName = reReadingVisitTask.TaskName,
|
||||||
TaskBlindName = reReadingVisitTask.TaskBlindName,
|
TaskBlindName = taskBlindName,
|
||||||
|
|
||||||
IsUrgent = reReadingVisitTask.IsAnalysisCreate ? false : subjectVisitUrgentInfo.IsUrgent,
|
IsUrgent = reReadingVisitTask.IsAnalysisCreate ? false : subjectVisitUrgentInfo.IsUrgent,
|
||||||
TaskUrgentType = reReadingVisitTask.IsAnalysisCreate ? null : taskUrgent,
|
TaskUrgentType = reReadingVisitTask.IsAnalysisCreate ? null : taskUrgent,
|
||||||
|
|
@ -1548,6 +1602,11 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var subjectUser = await _subjectUserRepository.Where(x => x.SubjectId == firstTask.SubjectId && x.ArmEnum == Arm.JudgeArm && x.IsConfirmed && x.TrialReadingCriterionId == firstTask.TrialReadingCriterionId).FirstOrDefaultAsync();
|
var subjectUser = await _subjectUserRepository.Where(x => x.SubjectId == firstTask.SubjectId && x.ArmEnum == Arm.JudgeArm && x.IsConfirmed && x.TrialReadingCriterionId == firstTask.TrialReadingCriterionId).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var isRandom = trialReadingCriterionConfigList.FirstOrDefault(t => t.TrialReadingCriterionId == firstTask.TrialReadingCriterionId)?.IsReadingTaskViewInOrder == ReadingOrder.Random;
|
||||||
|
|
||||||
|
var blindName = isRandom ? await GetRandomTaskName(trialId, randomTaskBlindNameList) : firstTask.TaskBlindName;
|
||||||
|
|
||||||
VisitTask visitTask = new VisitTask()
|
VisitTask visitTask = new VisitTask()
|
||||||
{
|
{
|
||||||
ArmEnum = Arm.JudgeArm,
|
ArmEnum = Arm.JudgeArm,
|
||||||
|
|
@ -1564,7 +1623,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
SouceReadModuleId = firstTask.SouceReadModuleId,
|
SouceReadModuleId = firstTask.SouceReadModuleId,
|
||||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||||
TaskState = TaskState.Effect,
|
TaskState = TaskState.Effect,
|
||||||
TaskBlindName = firstTask.TaskBlindName,
|
TaskBlindName = blindName,
|
||||||
DoctorUserId = subjectUser == null ? null : subjectUser.DoctorUserId,
|
DoctorUserId = subjectUser == null ? null : subjectUser.DoctorUserId,
|
||||||
TaskAllocationState = subjectUser == null ? TaskAllocationState.NotAllocate : TaskAllocationState.Allocated,
|
TaskAllocationState = subjectUser == null ? TaskAllocationState.NotAllocate : TaskAllocationState.Allocated,
|
||||||
AllocateTime = subjectUser == null ? null : DateTime.Now,
|
AllocateTime = subjectUser == null ? null : DateTime.Now,
|
||||||
|
|
|
||||||
|
|
@ -854,7 +854,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
||||||
/// <param name="inQuery"></param>
|
/// <param name="inQuery"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<PageOutput<ReReadingTaskView>> GetIRReReadingTaskList(VisitTaskQuery inQuery)
|
public async Task<IResponseOutput<PageOutput<ReReadingTaskView>> > GetIRReReadingTaskList(VisitTaskQuery inQuery)
|
||||||
{
|
{
|
||||||
|
|
||||||
var visitTaskQueryable = _visitTaskReReadingRepository
|
var visitTaskQueryable = _visitTaskReReadingRepository
|
||||||
|
|
@ -889,7 +889,11 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
||||||
|
|
||||||
var pageList = await visitTaskQueryable.ToPagedListAsync(inQuery, defalutSortArray);
|
var pageList = await visitTaskQueryable.ToPagedListAsync(inQuery, defalutSortArray);
|
||||||
|
|
||||||
return pageList;
|
var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId)
|
||||||
|
.Select(t => new { t.IsReadingTaskViewInOrder }).FirstNotNullAsync();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(pageList, criterionInfo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1242,7 +1246,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
||||||
/// <param name="inQuery"></param>
|
/// <param name="inQuery"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<PageOutput<IRHaveReadView>> GetIRHaveReadTaskList(VisitTaskQuery inQuery)
|
public async Task<IResponseOutput<PageOutput<IRHaveReadView>>> GetIRHaveReadTaskList(VisitTaskQuery inQuery)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1270,7 +1274,10 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
||||||
|
|
||||||
var pageList = await visitTaskQueryable.ToPagedListAsync(inQuery, defalutSortArray);
|
var pageList = await visitTaskQueryable.ToPagedListAsync(inQuery, defalutSortArray);
|
||||||
|
|
||||||
return pageList;
|
var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId)
|
||||||
|
.Select(t => new { t.IsReadingTaskViewInOrder }).FirstNotNullAsync();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(pageList, criterionInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
{
|
{
|
||||||
//subject 随机阅片 或者无序 有上传 才处理任务编号
|
//subject 随机阅片 或者无序 有上传 才处理任务编号
|
||||||
if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId &&
|
if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId &&
|
||||||
(t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom ||
|
(t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom
|
||||||
(t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.Random && t.TrialReadingCriterion.ImageDownloadEnum != ReadingImageDownload.None))))
|
//||(t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.Random && t.TrialReadingCriterion.ImageDownloadEnum != ReadingImageDownload.None)
|
||||||
|
)))
|
||||||
{
|
{
|
||||||
//找到 非一致性分析,未签名,状态正常的 并且任务名称是TimePoint的 任务
|
//找到 非一致性分析,未签名,状态正常的 并且任务名称是TimePoint的 任务
|
||||||
var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && t.DoctorUserId == _userInfo.UserRoleId
|
var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && t.DoctorUserId == _userInfo.UserRoleId
|
||||||
|
|
|
||||||
|
|
@ -910,7 +910,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<GetIRMedicalFeedbackListOutDto> GetNextIRMedicalFeedback(GetNextIRMedicalFeedbackInDto inDto)
|
public async Task<GetIRMedicalFeedbackListOutDto> GetNextIRMedicalFeedback(GetNextIRMedicalFeedbackInDto inDto)
|
||||||
{
|
{
|
||||||
var list = await GetIRMedicalFeedbackList(new GetIRMedicalFeedbackListInDto()
|
var responseOutput = await GetIRMedicalFeedbackList(new GetIRMedicalFeedbackListInDto()
|
||||||
{
|
{
|
||||||
TrialId = inDto.TrialId,
|
TrialId = inDto.TrialId,
|
||||||
TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
||||||
|
|
@ -919,6 +919,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
PageSize = 99999,
|
PageSize = 99999,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var list = responseOutput.Data;
|
||||||
|
|
||||||
var index = list.CurrentPageData.ToList().FindIndex(x => x.Id == inDto.TaskMedicalReviewId);
|
var index = list.CurrentPageData.ToList().FindIndex(x => x.Id == inDto.TaskMedicalReviewId);
|
||||||
|
|
||||||
var result = new GetIRMedicalFeedbackListOutDto() { };
|
var result = new GetIRMedicalFeedbackListOutDto() { };
|
||||||
|
|
@ -949,7 +951,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<PageOutput<GetIRMedicalFeedbackListOutDto>> GetIRMedicalFeedbackList(GetIRMedicalFeedbackListInDto inDto)
|
public async Task<IResponseOutput<PageOutput<GetIRMedicalFeedbackListOutDto>>> GetIRMedicalFeedbackList(GetIRMedicalFeedbackListInDto inDto)
|
||||||
{
|
{
|
||||||
var taskMedicalReviewquery = _taskMedicalReviewRepository.Where(x => x.TrialId == inDto.TrialId).Include(x => x.VisitTask)
|
var taskMedicalReviewquery = _taskMedicalReviewRepository.Where(x => x.TrialId == inDto.TrialId).Include(x => x.VisitTask)
|
||||||
.Where(x => x.VisitTask.DoctorUserId == _userInfo.UserRoleId)
|
.Where(x => x.VisitTask.DoctorUserId == _userInfo.UserRoleId)
|
||||||
|
|
@ -1004,7 +1006,11 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var result = await taskMedicalReviewquery.ToPagedListAsync(inDto, nameof(GetIRMedicalFeedbackListOutDto.AuditState));
|
var result = await taskMedicalReviewquery.ToPagedListAsync(inDto, nameof(GetIRMedicalFeedbackListOutDto.AuditState));
|
||||||
|
|
||||||
return result;
|
var criterionInfo = await _taskMedicalReviewRepository.Where(t => t.Id == inDto.TrialReadingCriterionId)
|
||||||
|
.Select(t => new { t.VisitTask.TrialReadingCriterion.IsReadingTaskViewInOrder }).FirstNotNullAsync();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(result, criterionInfo);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue