增加验证接口
parent
0e59617691
commit
f1601e7017
|
@ -229,6 +229,30 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class TaskStudyAchivePreConfirmCommand
|
||||||
|
{
|
||||||
|
public List<string> StudyInstanceUidList { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
|
public Guid SubjectId { get; set; }
|
||||||
|
[NotDefault]
|
||||||
|
public string SubjectCode { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TaskStudyArchiveConfirmResult
|
||||||
|
{
|
||||||
|
public string StudyInstanceUid { get; set; }
|
||||||
|
|
||||||
|
public bool IsAllowUpload { get; set; }
|
||||||
|
|
||||||
|
public bool IsAllowReUpload { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public class TaskArchiveStudyCommand
|
public class TaskArchiveStudyCommand
|
||||||
{
|
{
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
|
|
|
@ -241,11 +241,49 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 在调用预归档前验证 这些检查是否可以全新上传还是已存在补充 目前前端允许 IsAllowUpload==true 全新、IsAllowReUpload==true 补充的study ,全部丢到后端,后端判断存在,就删除之前的检查,全新插入
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inCommand"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<TaskStudyArchiveConfirmResult>> VerifyIRStudyAllowUpload(TaskStudyAchivePreConfirmCommand inCommand)
|
||||||
|
{
|
||||||
|
|
||||||
//public async Task<List<VerifyStudyUploadResult>> VerifyIRStudyAllowUpload(VerifyUploadOrReupload inCommand)
|
|
||||||
//{
|
|
||||||
|
|
||||||
//}
|
var notAllowedUidList = _taskStudyRepository.Where(t => t.TrialId == inCommand.TrialId && inCommand.StudyInstanceUidList.Contains(t.StudyInstanceUid)).Select(t => new
|
||||||
|
{
|
||||||
|
t.StudyInstanceUid,
|
||||||
|
t.SubjectId,
|
||||||
|
SubejectCode = t.VisitTask.IsAnalysisCreate ? t.VisitTask.BlindSubjectCode : t.Subject.Code
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
var result = new List<TaskStudyArchiveConfirmResult>();
|
||||||
|
|
||||||
|
foreach (var studyUid in inCommand.StudyInstanceUidList)
|
||||||
|
{
|
||||||
|
var findStudy = notAllowedUidList.Where(t => t.StudyInstanceUid == studyUid).FirstOrDefault();
|
||||||
|
if (findStudy != null)
|
||||||
|
{
|
||||||
|
//同一个subject 同一份影响
|
||||||
|
if (findStudy.SubejectCode == inCommand.SubjectCode && findStudy.SubjectId == inCommand.SubjectId)
|
||||||
|
{
|
||||||
|
result.Add(new TaskStudyArchiveConfirmResult() { StudyInstanceUid = studyUid, IsAllowReUpload = true });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.Add(new TaskStudyArchiveConfirmResult() { StudyInstanceUid = studyUid, IsAllowReUpload = false, IsAllowUpload = false });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//说明没上传 不用管
|
||||||
|
result.Add(new TaskStudyArchiveConfirmResult() { StudyInstanceUid = studyUid, IsAllowUpload = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
@ -276,6 +314,28 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
//总数为0的检查不允许提交
|
||||||
|
if (incommand.Study.SeriesList.SelectMany(t => t.InstanceList).Count() == 0)
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("Study_InstanceCountZero");
|
||||||
|
}
|
||||||
|
|
||||||
|
var @uploadLock = _distributedLockProvider.CreateLock($"UploadTaskDicom");
|
||||||
|
|
||||||
|
using (await @uploadLock.AcquireAsync())
|
||||||
|
{
|
||||||
|
if (_fusionCache.GetOrDefault<Guid>(CacheKeys.TrialStudyUidDBLock(incommand.TrialId, incommand.Study.StudyInstanceUid)) != Guid.Empty)
|
||||||
|
{
|
||||||
|
//---当前已有人正在上传和归档该检查!
|
||||||
|
return ResponseOutput.NotOk(StaticData.International("UploadDownLoad_ArchiveInProgress"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//在事务未完成前 防止前端重复提交
|
||||||
|
await _fusionCache.SetAsync(CacheKeys.TrialStudyUidDBLock(incommand.TrialId, incommand.Study.StudyInstanceUid), _userInfo.Id, TimeSpan.FromMinutes(3));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var visiTaskId = incommand.VisitTaskId;
|
var visiTaskId = incommand.VisitTaskId;
|
||||||
|
|
||||||
var modalitys = string.Empty;
|
var modalitys = string.Empty;
|
||||||
|
@ -295,6 +355,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
//上传
|
//上传
|
||||||
if (studyMonitor.IsDicomReUpload == false)
|
if (studyMonitor.IsDicomReUpload == false)
|
||||||
{
|
{
|
||||||
|
//目前不考虑重传的问题,后面的直接覆盖前面的,全部删除
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var study = _mapper.Map<TaskStudy>(incommand.Study);
|
var study = _mapper.Map<TaskStudy>(incommand.Study);
|
||||||
|
|
||||||
var @lock = _distributedLockProvider.CreateLock($"StudyCode");
|
var @lock = _distributedLockProvider.CreateLock($"StudyCode");
|
||||||
|
|
Loading…
Reference in New Issue