Test.EIImageViewer
he 2023-01-16 10:41:14 +08:00
commit b28ef3b82e
5 changed files with 28 additions and 348 deletions

View File

@ -2213,6 +2213,11 @@
文件路径
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingReportDto.LimitEdit">
<summary>
限制编辑
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingReportDto.IsShowInDicom">
<summary>
是否显示在Dicom阅片中

View File

@ -167,6 +167,10 @@ namespace IRaCIS.Core.Application.ViewModel
public ReReadingApplyState ReReadingApplyState { get; set; }
public DateTime? SuggesteFinishedTime { get; set; }
//任务来源访视Id 方便回更访视读片状态
public Guid? SourceSubjectVisitId { get; set; }
public Guid? SouceReadModuleId { get; set; }
}

View File

@ -39,15 +39,19 @@ namespace IRaCIS.Core.Application.Service.Allocation
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
private readonly IRepository<ReadingClinicalData> _readingClinicalDataReposiotry;
public VisitTaskService(IRepository<SubjectVisit> subjectVisitRepository, IRepository<VisitTask> visitTaskRepository, IRepository<Trial> trialRepository,
IRepository<Subject> subjectRepository, IRepository<SubjectUser> subjectUserRepository, IRepository<TaskAllocationRule> taskAllocationRuleRepository,
IRepository<ReadModule> readModuleRepository, IRepository<VisitTaskReReading> visitTaskReReadingRepository,
IRepository<TaskMedicalReview> taskMedicalReviewRepository,
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository
, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository,
IRepository<ReadingClinicalData> readingClinicalDataReposiotry
)
{
_readingClinicalDataReposiotry = readingClinicalDataReposiotry;
_taskAllocationRuleRepository = taskAllocationRuleRepository;
_visitTaskRepository = visitTaskRepository;
_trialRepository = trialRepository;
@ -2188,7 +2192,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
return ResponseOutput.Ok();
}
//包括临床数据签名状态
private async Task VisitBackAsync(Guid? subjectVisitId)
{
var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
@ -2224,6 +2228,18 @@ namespace IRaCIS.Core.Application.Service.Allocation
sv.ReviewAuditUserId = null;
if (sv.IsBaseLine)
{
await _readingClinicalDataReposiotry.UpdatePartialFromQueryAsync(t => t.ReadingId == sv.Id && (t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit),c=>new ReadingClinicalData() { IsSign=false,ReadingClinicalDataState=ReadingClinicalDataStatus.HaveUploaded});
}
else
{
await _readingClinicalDataReposiotry.UpdatePartialFromQueryAsync(t => t.ReadingId == sv.Id && t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit, c => new ReadingClinicalData() { IsSign = false, ReadingClinicalDataState =ReadingClinicalDataStatus.HaveUploaded });
}
//await _repository.AddAsync(new CheckChallengeDialog() { SubjectVisitId = subjectVisitId, TalkContent = "PM/APM同意一致性核查回退。", UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt });
await _repository.BatchDeleteAsync<TrialQCQuestionAnswer>(t => t.SubjectVisitId == subjectVisitId);

View File

@ -44,7 +44,7 @@ namespace IRaCIS.Core.Application.Triggers
//退回或者重阅的任务一致性核查通过了 此时设置Subject 重阅影响状态
if (context.Entity.IsPMBackOrReReading == true)
{
await _subjectRepository.UpdatePartialFromQueryAsync(t => t.Id == context.Entity.SubjectId, u => new Subject() { IsReReadingOrBackInfluenceAnalysis = false });
await _subjectRepository.UpdatePartialFromQueryAsync(context.Entity.SubjectId, u => new Subject() { IsReReadingOrBackInfluenceAnalysis = false });
}
context.Entity.IsPMBackOrReReading = false;

View File

@ -2737,350 +2737,5 @@ namespace IRaCIS.Core.Infra.EFCore.Common
#region 待废弃 -by zhouhang 调整
///// <summary>
///// 传入实体对象
///// </summary>
//public async Task IncomingEntitys(List<EntityEntry> entitys)
//{
// // 修改
// await InsertAddEntitys(
// entitys.Where(x => x.State == EntityState.Modified &&
// (!typeof(ISoftDelete).IsAssignableFrom(x.Entity.GetType()) || !(bool)x.Entity.GetType().GetProperty(nameof(ISoftDelete.IsDeleted)).GetValue(x.Entity) || NodeleteTableTypes.Contains(x.Entity.GetType()))
// ).ToList(), AuditOpt.Update);
// // 新增
// await InsertAddEntitys(entitys.Where(x => x.State == EntityState.Added).ToList(), AuditOpt.Add);
// // 删除
// await InsertAddEntitys(entitys.Where(x => x.State == EntityState.Deleted
// || (typeof(ISoftDelete).IsAssignableFrom(x.Entity.GetType()) && (bool)x.Entity.GetType().GetProperty(nameof(ISoftDelete.IsDeleted)).GetValue(x.Entity) && x.State == EntityState.Modified && !NodeleteTableTypes.Contains(x.Entity.GetType()))
// ).ToList(), AuditOpt.Deleted);
//}
//// 非Dicom文件
//if (entitys.Any(x => x.Entity.GetType() == typeof(NoneDicomStudyFile)))
//{
// var noneDicomStudyfile = entitys.Where(x => x.Entity.GetType() == typeof(NoneDicomStudyFile)).Select(x => x.Entity).FirstOrDefault() as NoneDicomStudyFile;
// var noneDicomStudy = await _dbContext.NoneDicomStudy.Where(x => x.Id == noneDicomStudyfile.NoneDicomStudyId).FirstOrDefaultAsync();
// if (noneDicomStudy != null)
// {
// var filecount = await _dbContext.NoneDicomStudyFile.Where(x => x.NoneDicomStudyId == noneDicomStudyfile.NoneDicomStudyId).CountAsync();
// var count = entitys.Where(x => x.Entity.GetType() == typeof(NoneDicomStudyFile)).ToList().Count;
// if (type == "Deleted")
// {
// filecount = filecount - count;
// }
// else
// {
// filecount = filecount + count;
// }
// await InsertInspection<NoneDicomStudy>(noneDicomStudy, type, null, new
// {
// FileCount = filecount,
// });
// }
//}
/// <summary>
/// 获取稽查通用数据 (每条稽查记录必须查询的)
/// </summary>
/// <param name="inspection"></param>
/// <returns></returns>
public async Task<InspectionGeneralData> GetInspectionGeneralDataAsync(InspectionConvertDTO inspection)
{
InspectionGeneralData generalData = new InspectionGeneralData()
{
SiteCode = inspection.SiteCode,
SiteId = inspection.SiteId,
//SiteName = inspection.SiteName,
SubjectCode = inspection.SubjectCode,
SubjectId = inspection.SubjectId,
SubjectVisitId = inspection.SubjectVisitId,
SubjectVisitName = inspection.SubjectVisitName,
ResearchProgramNo = inspection.ResearchProgramNo,
TrialId = inspection.TrialId,
TrialName = inspection.TrialName
};
#region 访视 阅片期那里关联了访视
//if (generalData.SubjectVisitId != null)
//{
// //添加访视的时候,会带信息过来
// if (string.IsNullOrEmpty(generalData.SubjectVisitName))
// {
// var info = (await _dbContext.SubjectVisit.Where(x => x.Id == generalData.SubjectVisitId).Select(x =>
// new { x.VisitName, x.SubjectId, x.SiteId, SubjectCode = x.Subject.Code, TrialSiteCode = x.TrialSite.TrialSiteCode, x.TrialId, x.Trial.ExperimentName, x.Trial.ResearchProgramNo }).FirstOrDefaultAsync()).IfNullThrowException();
// generalData.SubjectVisitName = info.VisitName;
// generalData.TrialId = info.TrialId;
// generalData.TrialName = info.ExperimentName;
// generalData.ResearchProgramNo = info.ResearchProgramNo;
// generalData.SiteId = info.SiteId;
// generalData.SubjectCode = info.SubjectCode;
// generalData.SubjectId = info.SubjectId;
// generalData.SiteCode = info.TrialSiteCode;
// }
//}
#endregion
#region 受试者
if (generalData.SubjectId != null)
{
// 添加Subject 哪里会带信息过来
if (string.IsNullOrEmpty(generalData.SubjectCode))
{
var info = (await _dbContext.Subject.Where(x => x.Id == generalData.SubjectId).Select(x => new { SubjectId = x.Id, SubjectCode = x.Code, x.SiteId, TrialSiteCode = x.TrialSite.TrialSiteCode, x.TrialId, x.Trial.ExperimentName, x.Trial.ResearchProgramNo }).FirstOrDefaultAsync()).IfNullThrowException();
generalData.TrialId = info.TrialId;
generalData.TrialName = info.ExperimentName;
generalData.ResearchProgramNo = info.ResearchProgramNo;
generalData.SiteId = info.SiteId;
generalData.SubjectCode = info.SubjectCode;
generalData.SubjectId = info.SubjectId;
generalData.SiteCode = info.TrialSiteCode;
}
}
#endregion
#region 中心Code
if (generalData.TrialId != null && generalData.SiteId != null)
{
generalData.SiteCode = (await _dbContext.TrialSite.IgnoreQueryFilters().Where(x => x.TrialId == generalData.TrialId && x.SiteId == generalData.SiteId).Select(t => t.TrialSiteCode).FirstOrDefaultAsync()).IfNullThrowException();
}
#endregion
#region 项目名称
if (generalData.TrialId != null)
{
//项目添加哪里 直接会带信息过来,不用查询数据库 其他的地方需要查询数据库
if (string.IsNullOrEmpty(generalData.ResearchProgramNo) || string.IsNullOrEmpty(generalData.TrialName))
{
var trialdata = (await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == generalData.TrialId)).IfNullThrowException();
generalData.ResearchProgramNo = trialdata.ResearchProgramNo;
generalData.TrialName = trialdata.ExperimentName;
}
}
#endregion
return generalData;
}
///// <summary>
///// 映射数据
///// </summary>
///// <param name="data"></param>
///// <param name="mapData">要赋值的对象</param>
//public void MapData(dynamic data, dynamic mapData)
//{
// List<string> column = new List<string>() { "TrialId", "SiteId", "SubjectId", "SubjectVisitId", "CreateUserName", "TrialName", "SiteName", "SubjectCode", "VisitName", "SubjectVisitName", "RoleName", "SiteCode", "ResearchProgramNo" };
// foreach (var item in column)
// {
// try
// {
// var i = mapData.GetType().GetProperty(item).GetValue(mapData);
// if (i == null || i == default(Guid))
// {
// var value = data.GetType().GetProperty(item).GetValue(data);
// mapData.GetType().GetProperty(item).SetValue(mapData, value);
// }
// }
// catch (Exception)
// {
// continue;
// }
// }
//}
///// <summary>
///// 添加稽查
///// </summary>
///// <param name="add">新增的稽查对象</param>
///// <param name="data">数据</param>
///// <returns></returns>
///// <exception cref="BusinessValidationFailedException"></exception>
//public async Task AddInspectionRecordAsync<T>(T data, InspectionConvertDTO add, object otherItem = null) where T : class
//{
// //MapData(data, add);
// MapEntityPropertyToAuditEntity(data, add);
// InspectionGeneralData generalData = new InspectionGeneralData()
// {
// //CreateUserName = add.CreateUserName,
// SiteCode = add.SiteCode,
// SiteId = add.SiteId,
// //SiteName = add.SiteName,
// SubjectCode = add.SubjectCode,
// SubjectId = add.SubjectId,
// SubjectVisitId = add.SubjectVisitId,
// SubjectVisitName = add.SubjectVisitName,
// ResearchProgramNo = add.ResearchProgramNo,
// //RoleName = add.RoleName,
// TrialId = add.TrialId,
// TrialName = add.TrialName
// };
// await SetInspectionNameValue(generalData);
// #region 处理标识
// var from = await _dbContext.FrontAuditConfig.FirstOrDefaultAsync(x => x.Identification == add.Identification);
// add.ObjectTypeId = from?.ObjectTypeId;
// add.OptTypeId = from?.OptTypeId;
// add.ChildrenTypeId = from?.ChildrenTypeId;
// add.ModuleTypeId = from?.ModuleTypeId;
// #endregion
// if (add.ParentId == null)
// {
// add.ParentId = (await _dbContext.DataInspection.AsQueryable().Where(x => x.TrialId == add.TrialId && x.SubjectVisitId == add.SubjectVisitId && x.SubjectId == add.SubjectId && x.SiteId == add.SiteId && x.VisitStageId == add.VisitStageId && x.GeneralId == add.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id;
// }
// add.CreateUserId = _userInfo.Id;
// add.IP = _userInfo.IP;
// add.CreateTime = add.CreateTime == default(DateTime) ? DateTime.Now : add.CreateTime;
// if (_userInfo.SignId != null)
// {
// add.SignId = _userInfo.SignId;
// add.IsSign = true;
// }
// var inspectionData = new InspectionJsonDetail()
// {
// //稽查实体,加上扩充的信息
// Data = AddJsonItem(data, otherItem),
// //通用信息
// CommonData = generalData
// };
// add.JsonDetail = inspectionData.ToJsonStr();
// add.BatchId = _userInfo.BatchId.Value;
// await _dbContext.DataInspection.AddAsync(add);
//}
///// <summary>
///// 设置项目以及名称
///// </summary>
///// <param name="generalData"></param>
///// <returns></returns>
//public async Task SetInspectionNameValue(InspectionGeneralData generalData)
//{
// #region 项目名称
// if (generalData.TrialId != null)
// {
// //项目添加哪里 直接会带信息过来,不用查询数据库 其他的地方需要查询数据库
// if (string.IsNullOrEmpty(generalData.ResearchProgramNo) || string.IsNullOrEmpty(generalData.TrialName))
// {
// var trialdata = (await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == generalData.TrialId)).IfNullThrowException();
// generalData.ResearchProgramNo = trialdata.ResearchProgramNo;
// generalData.TrialName = trialdata.ExperimentName;
// }
// }
// #endregion
// #region 测试中心名称
// if (generalData.TrialId != null && generalData.SiteId != null)
// {
// generalData.SiteCode = (await _dbContext.TrialSite.IgnoreQueryFilters().Where(x => x.TrialId == generalData.TrialId && x.SiteId == generalData.SiteId).Select(t => t.TrialSiteCode).FirstOrDefaultAsync()).IfNullThrowException();
// //// 添加Site 哪里会带信息过来
// //if (string.IsNullOrEmpty(generalData.SiteName))
// //{
// // generalData.SiteName = (await _dbContext.Site.Where(x => x.Id == generalData.SiteId).Select(x => x.SiteName).FirstOrDefaultAsync()).IfNullThrowException();
// //}
// }
// #endregion
// #region 受试者
// if (generalData.SubjectId != null)
// {
// // 添加Subject 哪里会带信息过来
// if (string.IsNullOrEmpty(generalData.SubjectCode))
// {
// generalData.SubjectCode = (await _dbContext.Subject.Where(x => x.Id == generalData.SubjectId).Select(x => x.Code).FirstOrDefaultAsync()).IfNullThrowException();
// }
// }
// #endregion
// #region 访视
// if (generalData.SubjectVisitId != null)
// {
// //添加访视的时候,会带信息过来
// if (string.IsNullOrEmpty(generalData.SubjectVisitName))
// {
// generalData.SubjectVisitName = (await _dbContext.SubjectVisit.Where(x => x.Id == generalData.SubjectVisitId).Select(x => x.VisitName).FirstOrDefaultAsync()).IfNullThrowException();
// }
// }
// #endregion
//}
#endregion
}
}