修改一版
parent
f3b21e4cd4
commit
f47978bca2
|
@ -865,6 +865,11 @@
|
||||||
阅片期名称
|
阅片期名称
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.PreviewTheReadingListInDto.ReadingSetType">
|
||||||
|
<summary>
|
||||||
|
类型
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.PreviewTheReadingListOutDto">
|
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.PreviewTheReadingListOutDto">
|
||||||
<summary>
|
<summary>
|
||||||
获取影像阅片预览的Dto
|
获取影像阅片预览的Dto
|
||||||
|
|
|
@ -82,7 +82,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public class PreviewTheReadingListInDto : PageInput
|
public class PreviewTheReadingListInDto : PageInput
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 中心ID
|
/// 中心ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -113,6 +112,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ReadingPeriodName { get; set; }
|
public string ReadingPeriodName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 类型
|
||||||
|
/// </summary>
|
||||||
|
public ReadingSetType ReadingSetType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,6 +175,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public string SubjectVisitName { get; set; }
|
public string SubjectVisitName { get; set; }
|
||||||
|
|
||||||
|
public DateTime? EffectOfTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ReadingPeriodSetView
|
public class ReadingPeriodSetView
|
||||||
|
@ -221,6 +228,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 生效时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? EffectOfTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建人
|
/// 创建人
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -420,6 +420,7 @@ namespace IRaCIS.Application.Services
|
||||||
ModuleName = dto.Name,
|
ModuleName = dto.Name,
|
||||||
SubjectVisitId = visit.Id,
|
SubjectVisitId = visit.Id,
|
||||||
ReadingSetType= dto.ReadingSetType,
|
ReadingSetType= dto.ReadingSetType,
|
||||||
|
TrialId= dto.TrialId,
|
||||||
Status = ReadingCommon.GetVisitSubmitStateEnum(visit),
|
Status = ReadingCommon.GetVisitSubmitStateEnum(visit),
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -49,6 +49,14 @@ namespace IRaCIS.Application.Services
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> AddOrUpdateReadingPeriodSet(ReadingPeriodSetAddOrEdit addOrEditReadingPeriodSet)
|
public async Task<IResponseOutput> AddOrUpdateReadingPeriodSet(ReadingPeriodSetAddOrEdit addOrEditReadingPeriodSet)
|
||||||
{
|
{
|
||||||
|
if (await _readingPeriodSetRepository.AnyAsync(x => x.Id != addOrEditReadingPeriodSet.Id && x.ReadingPeriodName == addOrEditReadingPeriodSet.ReadingPeriodName))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("阅片期名称重复,操作失败");
|
||||||
|
}
|
||||||
|
if (addOrEditReadingPeriodSet.ReadingPeriodName == "Global")
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("阅片期名称不能为");
|
||||||
|
}
|
||||||
if (addOrEditReadingPeriodSet.Id == null)
|
if (addOrEditReadingPeriodSet.Id == null)
|
||||||
{
|
{
|
||||||
var entity = _mapper.Map<ReadingPeriodSet>(addOrEditReadingPeriodSet);
|
var entity = _mapper.Map<ReadingPeriodSet>(addOrEditReadingPeriodSet);
|
||||||
|
@ -113,9 +121,18 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
|
||||||
visitQuery = visitQuery.Where(x => inDto.SiteIds.Contains(x.SiteId));
|
visitQuery = visitQuery.Where(x => inDto.SiteIds.Contains(x.SiteId));
|
||||||
|
|
||||||
}
|
}
|
||||||
visitQuery = visitQuery.WhereIf(inDto.ExpirationDate != null, x => x.LatestScanDate <= inDto.ExpirationDate.Value)
|
|
||||||
|
//var
|
||||||
|
var existsBubjectVisits = await _readModuleRepository.Where(y => y.ReadingSetType == inDto.ReadingSetType && y.TrialId == inDto.TrialId).Select(x => x.SubjectVisitId).ToListAsync();
|
||||||
|
visitQuery = visitQuery.Where(x => existsBubjectVisits.Where(y =>x.Id == y).Count() == 0)
|
||||||
|
.WhereIf(inDto.ExpirationDate != null, x => x.LatestScanDate <= inDto.ExpirationDate.Value)
|
||||||
.WhereIf(inDto.ExpirationVisitNum != null, x => x.VisitNum == inDto.ExpirationVisitNum);
|
.WhereIf(inDto.ExpirationVisitNum != null, x => x.VisitNum == inDto.ExpirationVisitNum);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var subjectIdlist = await visitQuery.OrderBy(x => x.SubjectId).Select(x => x.SubjectId).Distinct().Skip((inDto.PageIndex - 1) * inDto.PageSize).Take(inDto.PageSize).ToListAsync();
|
var subjectIdlist = await visitQuery.OrderBy(x => x.SubjectId).Select(x => x.SubjectId).Distinct().Skip((inDto.PageIndex - 1) * inDto.PageSize).Take(inDto.PageSize).ToListAsync();
|
||||||
var totalCount = visitQuery.Select(x => x.SubjectId).Distinct().Count();
|
var totalCount = visitQuery.Select(x => x.SubjectId).Distinct().Count();
|
||||||
var visitlist= await visitQuery.Include(x=>x.Subject).Include(x=>x.TrialSite).Where(x => subjectIdlist.Contains(x.SubjectId)).ToListAsync();
|
var visitlist= await visitQuery.Include(x=>x.Subject).Include(x=>x.TrialSite).Where(x => subjectIdlist.Contains(x.SubjectId)).ToListAsync();
|
||||||
|
@ -216,6 +233,7 @@ namespace IRaCIS.Application.Services
|
||||||
SubjectCode = x.SubjectVisit.Subject.Code,
|
SubjectCode = x.SubjectVisit.Subject.Code,
|
||||||
SubjectId = x.SubjectVisit.SubjectId,
|
SubjectId = x.SubjectVisit.SubjectId,
|
||||||
SubjectVisitName = x.SubjectVisit.VisitName,
|
SubjectVisitName = x.SubjectVisit.VisitName,
|
||||||
|
EffectOfTime=x.ReadingPeriodSet.EffectOfTime,
|
||||||
});
|
});
|
||||||
|
|
||||||
return await plans.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? "SubjectId" : inDto.SortField,
|
return await plans.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? "SubjectId" : inDto.SortField,
|
||||||
|
@ -237,6 +255,11 @@ namespace IRaCIS.Application.Services
|
||||||
.ProjectTo<ReadingPeriodSetView>(_mapper.ConfigurationProvider);
|
.ProjectTo<ReadingPeriodSetView>(_mapper.ConfigurationProvider);
|
||||||
var pageList= await readQuery.ToPagedListAsync(query.PageIndex, query.PageSize, query.SortField == null ? "CreateTime" : query.SortField,
|
var pageList= await readQuery.ToPagedListAsync(query.PageIndex, query.PageSize, query.SortField == null ? "CreateTime" : query.SortField,
|
||||||
query.Asc);
|
query.Asc);
|
||||||
|
|
||||||
|
pageList.CurrentPageData.ForEach(x =>
|
||||||
|
{
|
||||||
|
x.SubjectVisitName = x.ReadingPeriodName == "Global" ? "末次访视" : x.SubjectVisitName;
|
||||||
|
});
|
||||||
return pageList;
|
return pageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -266,10 +289,12 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
if (indto.IsTakeEffect == ReadingPeriodStatus.TakeEffect)
|
if (indto.IsTakeEffect == ReadingPeriodStatus.TakeEffect)
|
||||||
{
|
{
|
||||||
|
var readingPeriodSet =await _readingPeriodSetRepository.FirstOrDefaultAsync(x => x.Id == indto.Id);
|
||||||
var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Include(x=>x.SubjectVisit)
|
var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Include(x=>x.SubjectVisit)
|
||||||
.Include(x => x.ReadingPeriodSet).ToList();
|
.Include(x => x.ReadingPeriodSet).ToList();
|
||||||
var needAddVisitIds = plans.Select(x => x.SubjectVisitId).ToList();
|
var needAddVisitIds = plans.Select(x => x.SubjectVisitId).ToList();
|
||||||
var repeatVisitNames = _readModuleRepository.Where(x => x.ReadingSetType == ReadingSetType.ImageReading && needAddVisitIds.Contains(x.SubjectVisitId)).Select(x => x.SubjectVisit.VisitName).ToList();
|
var repeatVisitNames = _readModuleRepository.Where(x => x.ReadingSetType == ReadingSetType.ImageReading && needAddVisitIds.Contains(x.SubjectVisitId)).Select(x =>x.Subject.Code+"的"+ x.SubjectVisit.VisitName).ToList();
|
||||||
|
|
||||||
if(repeatVisitNames.Count!=0)
|
if(repeatVisitNames.Count!=0)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk($"{string.Join(",", repeatVisitNames)}已经添加过阅片期,无法设置生效");
|
return ResponseOutput.NotOk($"{string.Join(",", repeatVisitNames)}已经添加过阅片期,无法设置生效");
|
||||||
|
@ -288,7 +313,8 @@ namespace IRaCIS.Application.Services
|
||||||
SubjectVisitId = item.SubjectVisitId,
|
SubjectVisitId = item.SubjectVisitId,
|
||||||
ReadingSetType = item.ReadingPeriodSet.ReadingSetType,
|
ReadingSetType = item.ReadingPeriodSet.ReadingSetType,
|
||||||
ReadingPeriodSetId= item.ReadingPeriodSet.Id,
|
ReadingPeriodSetId= item.ReadingPeriodSet.Id,
|
||||||
Status = ReadingCommon.GetVisitSubmitStateEnum(item.SubjectVisit),
|
Status = ReadModuleEnum.TaskAllocation,
|
||||||
|
TrialId = readingPeriodSet.TrialId,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -300,7 +326,8 @@ namespace IRaCIS.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
var readQuery =await _readingPeriodSetRepository.UpdatePartialFromQueryAsync(indto.Id, x => new ReadingPeriodSet() {
|
var readQuery =await _readingPeriodSetRepository.UpdatePartialFromQueryAsync(indto.Id, x => new ReadingPeriodSet() {
|
||||||
IsTakeEffect = indto.IsTakeEffect
|
IsTakeEffect = indto.IsTakeEffect,
|
||||||
|
EffectOfTime= indto.IsTakeEffect== ReadingPeriodStatus.TakeEffect?DateTime.Now:null,
|
||||||
});
|
});
|
||||||
|
|
||||||
var result = await _readingPeriodSetRepository.SaveChangesAsync();
|
var result = await _readingPeriodSetRepository.SaveChangesAsync();
|
||||||
|
|
|
@ -10,6 +10,7 @@ using IRaCIS.Core.Infrastructure;
|
||||||
using IRaCIS.Core.Application.Auth;
|
using IRaCIS.Core.Application.Auth;
|
||||||
using IRaCIS.Core.Domain.Share.Reading;
|
using IRaCIS.Core.Domain.Share.Reading;
|
||||||
using IRaCIS.Core.Infra.EFCore.Common;
|
using IRaCIS.Core.Infra.EFCore.Common;
|
||||||
|
using MassTransit;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Services
|
namespace IRaCIS.Core.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -18,14 +19,20 @@ namespace IRaCIS.Core.Application.Services
|
||||||
{
|
{
|
||||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
private readonly IRepository<ReadModule> _readModuleRepository;
|
private readonly IRepository<ReadModule> _readModuleRepository;
|
||||||
|
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
|
||||||
|
private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository;
|
||||||
private readonly IRepository<Subject> _subjectRepository;
|
private readonly IRepository<Subject> _subjectRepository;
|
||||||
|
|
||||||
public SubjectVisitService(IRepository<SubjectVisit> subjectVisitRepository,
|
public SubjectVisitService(IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<ReadModule> readModuleRepository,
|
IRepository<ReadModule> readModuleRepository,
|
||||||
|
IRepository<ReadingPeriodSet> readingPeriodSetRepository,
|
||||||
|
IRepository<ReadingPeriodPlan> readingPeriodPlanRepository,
|
||||||
IRepository<Subject> subjectRepository)
|
IRepository<Subject> subjectRepository)
|
||||||
{
|
{
|
||||||
_subjectVisitRepository = subjectVisitRepository;
|
_subjectVisitRepository = subjectVisitRepository;
|
||||||
this._readModuleRepository = readModuleRepository;
|
this._readModuleRepository = readModuleRepository;
|
||||||
|
this._readingPeriodSetRepository = readingPeriodSetRepository;
|
||||||
|
this._readingPeriodPlanRepository = readingPeriodPlanRepository;
|
||||||
_subjectRepository = subjectRepository;
|
_subjectRepository = subjectRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,6 +110,32 @@ namespace IRaCIS.Core.Application.Services
|
||||||
// 末次访视添加全局阅片
|
// 末次访视添加全局阅片
|
||||||
if (dbBeforeEntity.IsFinalVisit == false && svCommand.IsFinalVisit == true)
|
if (dbBeforeEntity.IsFinalVisit == false && svCommand.IsFinalVisit == true)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
ReadingPeriodSet? readingPeriodSet =await _readingPeriodSetRepository.FirstOrDefaultNoTrackingAsync(x => x.TrialId == dbBeforeEntity.TrialId && x.ReadingPeriodName == "Global");
|
||||||
|
|
||||||
|
if (readingPeriodSet == null)
|
||||||
|
{
|
||||||
|
readingPeriodSet = new ReadingPeriodSet()
|
||||||
|
{
|
||||||
|
Id = NewId.NextGuid(),
|
||||||
|
ReadingScope = ReadingScopeEnum.All,
|
||||||
|
ReadingSetType = ReadingSetType.ImageReading,
|
||||||
|
IsTakeEffect = ReadingPeriodStatus.TakeEffect,
|
||||||
|
ReadingPeriodName = "Global",
|
||||||
|
TrialId = dbBeforeEntity.TrialId,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
await _readingPeriodSetRepository.AddAsync(readingPeriodSet);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
await _readingPeriodPlanRepository.AddAsync(new ReadingPeriodPlan()
|
||||||
|
{
|
||||||
|
SubjectVisitId = dbBeforeEntity.Id,
|
||||||
|
ReadingPeriodSetId = readingPeriodSet.Id,
|
||||||
|
});
|
||||||
|
|
||||||
// 当前访视没有阅片期才添加
|
// 当前访视没有阅片期才添加
|
||||||
if (!await _readModuleRepository.AnyAsync(x => x.SubjectVisitId == svCommand.Id && x.ReadingSetType == ReadingSetType.ImageReading))
|
if (!await _readModuleRepository.AnyAsync(x => x.SubjectVisitId == svCommand.Id && x.ReadingSetType == ReadingSetType.ImageReading))
|
||||||
{
|
{
|
||||||
|
@ -110,9 +143,9 @@ namespace IRaCIS.Core.Application.Services
|
||||||
{
|
{
|
||||||
IsUrgent = dbBeforeEntity.IsUrgent,
|
IsUrgent = dbBeforeEntity.IsUrgent,
|
||||||
SubjectVisitId = svCommand.Id.Value,
|
SubjectVisitId = svCommand.Id.Value,
|
||||||
Status = ReadingCommon.GetVisitSubmitStateEnum(dbBeforeEntity),
|
Status = ReadModuleEnum.TaskAllocation,
|
||||||
SubjectId = dbBeforeEntity.SubjectId,
|
SubjectId = dbBeforeEntity.SubjectId,
|
||||||
ModuleName="G",// 全局阅片
|
ModuleName= "Global",// 全局阅片
|
||||||
ReadingSetType= ReadingSetType.ImageReading,
|
ReadingSetType= ReadingSetType.ImageReading,
|
||||||
ModuleType=ModuleTypeEnum.Global,
|
ModuleType=ModuleTypeEnum.Global,
|
||||||
});
|
});
|
||||||
|
|
|
@ -113,19 +113,24 @@ namespace IRaCIS.Core.Domain.Share.Reading
|
||||||
ImageQuality = 1,
|
ImageQuality = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 一致性核查及分配
|
/// 一致性核查
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ConsistencyCheck = 2,
|
ConsistencyCheck = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 任务分配
|
||||||
|
/// </summary>
|
||||||
|
TaskAllocation = 3,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 影像阅片
|
/// 影像阅片
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ImageRead = 3,
|
ImageRead = 4,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 阅片完成
|
/// 阅片完成
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ReadComplete = 4,
|
ReadComplete = 5,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid? ReadModuleId { get; set; }
|
public Guid? ReadModuleId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 项目ID
|
||||||
|
/// </summary>
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 对应
|
/// 对应
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -57,6 +57,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ReadingPeriodStatus IsTakeEffect { get; set; }
|
public ReadingPeriodStatus IsTakeEffect { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 生效时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? EffectOfTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建时间
|
/// 创建时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue