Merge branch '中心影像_Test环境' of http://192.168.1.2:8033/IRaCIS_Core_Api into 中心影像_Test环境
commit
cc9807846e
|
@ -1204,7 +1204,12 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
// CRC 上传的基线数据签名
|
// CRC 上传的基线数据签名
|
||||||
|
|
||||||
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign==false, x => new ReadingClinicalData()
|
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x =>
|
||||||
|
|
||||||
|
(x.ClinicalDataTrialSet.ClinicalDataLevel== ClinicalLevel.Subject|| x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)&&
|
||||||
|
|
||||||
|
|
||||||
|
x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign==false, x => new ReadingClinicalData()
|
||||||
{
|
{
|
||||||
IsSign = true,
|
IsSign = true,
|
||||||
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
||||||
|
|
|
@ -14,6 +14,7 @@ using MassTransit;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
|
using IRaCIS.Core.Application.Service.Reading.Interface;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
@ -21,8 +22,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// 临床答案
|
/// 临床答案
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ApiExplorerSettings(GroupName = "Reading")]
|
[ApiExplorerSettings(GroupName = "Reading")]
|
||||||
public class ClinicalAnswerService : BaseService
|
public class ClinicalAnswerService : BaseService, IClinicalAnswerService
|
||||||
{
|
{
|
||||||
|
|
||||||
private readonly IRepository<TrialClinicalQuestion> _trialClinicalQuestionRepository;
|
private readonly IRepository<TrialClinicalQuestion> _trialClinicalQuestionRepository;
|
||||||
|
|
||||||
|
@ -106,7 +107,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
x.IsBaseLine,
|
x.IsBaseLine,
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
var clinicalDataList =await _readingClinicalDataRepository.Where(x =>x.TrialId==inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole== UploadRole.CRC).IgnoreAutoIncludes().ToListAsync();
|
var clinicalDataList =await _readingClinicalDataRepository
|
||||||
|
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
||||||
|
.Where(x =>x.TrialId==inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole== UploadRole.CRC).IgnoreAutoIncludes().ToListAsync();
|
||||||
|
|
||||||
List<ReadingClinicalData> readingClinicalDatas = new List<ReadingClinicalData>();
|
List<ReadingClinicalData> readingClinicalDatas = new List<ReadingClinicalData>();
|
||||||
|
|
||||||
|
@ -178,11 +181,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
public async Task<List<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto)
|
public async Task<List<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
await AutoAddCRCClinical(new AutoAddClinicalInDto()
|
//await AutoAddCRCClinical(new AutoAddClinicalInDto()
|
||||||
{
|
//{
|
||||||
|
|
||||||
|
// TrialId = inDto.TrialId
|
||||||
|
//}) ;
|
||||||
|
|
||||||
TrialId = inDto.TrialId
|
|
||||||
}) ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -251,8 +255,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
ClinicalFormIds.ForEach(x =>
|
ClinicalFormIds.ForEach(x =>
|
||||||
{
|
{
|
||||||
var dic = answers.Where(y => y.ClinicalFormId == x).ToDictionary(x => x.QuestionId.ToString(), x => x.Answer);
|
var dic = answers.Where(y => y.ClinicalFormId == x).ToDictionary(x => x.QuestionId.ToString(), x => x.Answer);
|
||||||
dic.Add("clinicalFormId", x.ToString());
|
dic.Add("ClinicalFormId", x.ToString());
|
||||||
result.AnswerList.Add(dic);
|
dic.Add("TrialId", inDto.TrialId.ToString());
|
||||||
|
dic.Add("SubjectId", inDto.SubjectId.ToString());
|
||||||
|
dic.Add("ClinicalDataTrialSetId", inDto.ClinicalDataTrialSetId.ToString());
|
||||||
|
|
||||||
|
result.AnswerList.Add(dic);
|
||||||
|
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
|
@ -264,7 +272,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<GetClinicalFormInfoOutDto> GetClinicalFormInfo(GetClinicalFormInfoInDto inDto)
|
public async Task<List<ClinicalQuestionPreviewDto>> GetClinicalFormInfo(GetClinicalFormInfoInDto inDto)
|
||||||
{
|
{
|
||||||
var formInfo = await _clinicalFormRepository.Where(x => x.Id == inDto.ClinicalFormId).FirstNotNullAsync();
|
var formInfo = await _clinicalFormRepository.Where(x => x.Id == inDto.ClinicalFormId).FirstNotNullAsync();
|
||||||
|
|
||||||
|
@ -285,7 +293,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId)
|
var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId)
|
||||||
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
var tableQuestions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId)
|
var tableQuestions = await _trialClinicalTableQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId)
|
||||||
.ProjectTo<ClinicalTablePreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<ClinicalTablePreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
@ -296,11 +304,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
_iClinicalQuestionService.FindChildQuestion(x, questions, tableQuestions, questionAnswer, tableAnswer);
|
_iClinicalQuestionService.FindChildQuestion(x, questions, tableQuestions, questionAnswer, tableAnswer);
|
||||||
});
|
});
|
||||||
|
|
||||||
return new GetClinicalFormInfoOutDto()
|
return result;
|
||||||
{
|
|
||||||
|
|
||||||
Question = result
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -419,6 +423,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
public async Task<List<GetCRCConfirmListOutDto>> GetCRCConfirmList(GetCRCConfirmListInDto inDto)
|
public async Task<List<GetCRCConfirmListOutDto>> GetCRCConfirmList(GetCRCConfirmListInDto inDto)
|
||||||
{
|
{
|
||||||
List<GetCRCConfirmListOutDto> result = await _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
|
List<GetCRCConfirmListOutDto> result = await _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
|
||||||
|
.WhereIf(inDto.ReadModuleId!=null,x=>x.Id==inDto.ReadModuleId)
|
||||||
.Select(x => new GetCRCConfirmListOutDto()
|
.Select(x => new GetCRCConfirmListOutDto()
|
||||||
{
|
{
|
||||||
SubjectId= x.SubjectId,
|
SubjectId= x.SubjectId,
|
||||||
|
@ -426,46 +431,93 @@ namespace IRaCIS.Core.Application.Service
|
||||||
LatestScanDate = x.SubjectVisit.LatestScanDate,
|
LatestScanDate = x.SubjectVisit.LatestScanDate,
|
||||||
ReadingSetType = x.ReadingSetType,
|
ReadingSetType = x.ReadingSetType,
|
||||||
IsPMConfirm = x.IsPMConfirm,
|
IsPMConfirm = x.IsPMConfirm,
|
||||||
|
SubjectCode=x.Subject.Code,
|
||||||
ReadModuleId = x.Id,
|
ReadModuleId = x.Id,
|
||||||
}).OrderBy(x => x.LatestScanDate).ToListAsync();
|
}).OrderBy(x => x.LatestScanDate).ToListAsync();
|
||||||
var formList = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId)
|
var formList = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId)
|
||||||
.Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
|
.Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
|
||||||
.Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead)
|
.Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead)
|
||||||
.Select(x => new CRCClinicalForm
|
.Include(x=>x.ClinicalDataTrialSet)
|
||||||
|
.Select(x => new CRCClinicalForm
|
||||||
{
|
{
|
||||||
CkeckDate = x.CheckDate,
|
CheckDate = x.CheckDate,
|
||||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||||
ClinicalFormId = x.Id,
|
ClinicalFormId = x.Id,
|
||||||
|
ClinicalDataSetName=x.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||||
|
ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId).ToListAsync();
|
var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId).Include(x=>x.ClinicalForm).Include(x=>x.ClinicalForm.ClinicalDataTrialSet).ToListAsync();
|
||||||
result.ForEach(x =>
|
result.ForEach(x =>
|
||||||
{
|
{
|
||||||
if (x.IsCRCConfirm)
|
if (x.IsCRCConfirm)
|
||||||
{
|
{
|
||||||
x.ClinicalFormIdList = confirmList.Where(y => y.ReadModuleId == x.ReadModuleId).Select(y=>y.ClinicalFormId).ToList();
|
x.ClinicalFormIdList = confirmList.Where(y => y.ReadModuleId == x.ReadModuleId).Select(y=>new GetCRCBeConfirmListOutDto() {
|
||||||
|
CheckDate = y.ClinicalForm.CheckDate??default(DateTime),
|
||||||
|
ClinicalDataSetName= y.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||||
|
ClinicalDataSetEnName= y.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
|
ClinicalFormId=y.ClinicalFormId,
|
||||||
|
}).ToList();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (x.ReadingSetType == ReadingSetType.ImageReading)
|
if (x.ReadingSetType == ReadingSetType.ImageReading)
|
||||||
{
|
{
|
||||||
x.ClinicalFormIdList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.ImageRead&&y.CkeckDate<=x.LatestScanDate).Select(y => y.ClinicalFormId).ToList();
|
x.ClinicalFormIdList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.ImageRead&&y.CheckDate <= x.LatestScanDate)
|
||||||
|
.Select(y => new GetCRCBeConfirmListOutDto()
|
||||||
|
{
|
||||||
|
CheckDate = y.CheckDate ?? default(DateTime),
|
||||||
|
ClinicalDataSetName = y.ClinicalDataSetName,
|
||||||
|
ClinicalDataSetEnName = y.ClinicalDataSetEnName,
|
||||||
|
ClinicalFormId = y.ClinicalFormId,
|
||||||
|
}).ToList();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x.ClinicalFormIdList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.OncologyRead&&y.CkeckDate <= x.LatestScanDate).Select(y => y.ClinicalFormId).ToList();
|
x.ClinicalFormIdList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.OncologyRead&&y.CheckDate <= x.LatestScanDate)
|
||||||
|
.Select(y => new GetCRCBeConfirmListOutDto()
|
||||||
|
{
|
||||||
|
CheckDate = y.CheckDate ?? default(DateTime),
|
||||||
|
ClinicalDataSetName = y.ClinicalDataSetName,
|
||||||
|
ClinicalDataSetEnName = y.ClinicalDataSetEnName,
|
||||||
|
ClinicalFormId = y.ClinicalFormId,
|
||||||
|
}).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC 确认临床数据
|
/// 获取CRC待确认列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
public async Task<List<GetCRCBeConfirmListOutDto>> GetCRCBeConfirmList(GetCRCBeConfirmListInDto inDto)
|
||||||
|
{
|
||||||
|
var result = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
|
{
|
||||||
|
ReadModuleId = inDto.ReadModuleId,
|
||||||
|
TrialId = inDto.TrialId
|
||||||
|
})).SelectMany(x => x.ClinicalFormIdList).ToList();
|
||||||
|
|
||||||
|
result.ForEach(x => {
|
||||||
|
|
||||||
|
x.ClinicalDataSetName = _userInfo.IsEn_Us ? x.ClinicalDataSetEnName : x.ClinicalDataSetName;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return result.OrderBy(x => x.ClinicalDataSetName).ThenBy(x => x.CheckDate).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 确认临床数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> CRCConfirmClinical(CRCConfirmClinicalInDto inDto)
|
public async Task<IResponseOutput> CRCConfirmClinical(CRCConfirmClinicalInDto inDto)
|
||||||
{
|
{
|
||||||
var dataList =await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
var dataList =await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
|
@ -487,7 +539,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
needAddList.Add(new ReadModuleCriterionFrom()
|
needAddList.Add(new ReadModuleCriterionFrom()
|
||||||
{
|
{
|
||||||
ClinicalFormId = y,
|
ClinicalFormId = y.ClinicalFormId,
|
||||||
ReadModuleId = x.ReadModuleId,
|
ReadModuleId = x.ReadModuleId,
|
||||||
SubjectId = x.SubjectId,
|
SubjectId = x.SubjectId,
|
||||||
TrialId = inDto.TrialId,
|
TrialId = inDto.TrialId,
|
||||||
|
|
|
@ -179,10 +179,10 @@ namespace IRaCIS.Application.Services
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<List<GetCRCClinicalDataOutDto>> GetCRCClinicalData(GetCRCClinicalDataInDto inDto)
|
public async Task<List<GetCRCClinicalDataOutDto>> GetCRCClinicalData(GetCRCClinicalDataInDto inDto)
|
||||||
{
|
{
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
|
//if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
|
||||||
{
|
//{
|
||||||
await this.AddCRCClinicalData(inDto);
|
// await this.AddCRCClinicalData(inDto);
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
|
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
|
||||||
|
|
|
@ -57,7 +57,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
{
|
{
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
public Guid ClinicalDataTrialSetId { get; set; }
|
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid ClinicalDataTrialSetId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,6 +102,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public class GetCRCConfirmListInDto
|
public class GetCRCConfirmListInDto
|
||||||
{
|
{
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid? ReadModuleId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CRCCancelConfirmClinicalInDto
|
public class CRCCancelConfirmClinicalInDto
|
||||||
|
@ -108,6 +113,25 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public Guid ReadModuleId { get; set; }
|
public Guid ReadModuleId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class GetCRCBeConfirmListInDto
|
||||||
|
{
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid ReadModuleId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class GetCRCBeConfirmListOutDto
|
||||||
|
{
|
||||||
|
public Guid ClinicalFormId { get; set; }
|
||||||
|
|
||||||
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
|
public string ClinicalDataSetEnName { get; set; }
|
||||||
|
|
||||||
|
public DateTime CheckDate { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class CRCConfirmClinicalInDto
|
public class CRCConfirmClinicalInDto
|
||||||
{
|
{
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
@ -118,7 +142,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public class CRCClinicalForm
|
public class CRCClinicalForm
|
||||||
{
|
{
|
||||||
public DateTime? CkeckDate { get; set; }
|
public DateTime? CheckDate { get; set; }
|
||||||
|
|
||||||
public Guid ClinicalFormId { get; set; }
|
public Guid ClinicalFormId { get; set; }
|
||||||
|
|
||||||
|
@ -126,6 +150,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// 临床级别
|
/// 临床级别
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ClinicalLevel ClinicalDataLevel { get; set; }
|
public ClinicalLevel ClinicalDataLevel { get; set; }
|
||||||
|
|
||||||
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
|
public string ClinicalDataSetEnName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -144,13 +172,14 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public bool IsCRCConfirm { get; set; } = false;
|
public bool IsCRCConfirm { get; set; } = false;
|
||||||
|
|
||||||
|
public string SubjectCode { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 最晚拍片日期
|
/// 最晚拍片日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? LatestScanDate { get; set; }
|
public DateTime? LatestScanDate { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public List<Guid> ClinicalFormIdList { get; set; }
|
public List<GetCRCBeConfirmListOutDto> ClinicalFormIdList { get; set; }
|
||||||
|
|
||||||
public int FormCount
|
public int FormCount
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.Service.Reading.Interface
|
||||||
|
{
|
||||||
|
public interface IClinicalAnswerService
|
||||||
|
{
|
||||||
|
Task AutoAddCRCClinical(AutoAddClinicalInDto inDto);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
using EntityFrameworkCore.Triggered;
|
||||||
|
using IRaCIS.Core.Application.Service.Reading.Interface;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.Triggers
|
||||||
|
{
|
||||||
|
public class AddCRCCliniaclDataTrigger : IAfterSaveTrigger<SubjectVisit>
|
||||||
|
{
|
||||||
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
|
private readonly IRepository _repository;
|
||||||
|
private readonly IClinicalAnswerService _iClinicalAnswerService;
|
||||||
|
|
||||||
|
public AddCRCCliniaclDataTrigger(IRepository<SubjectVisit> subjectVisitRepository, IRepository repository, IClinicalAnswerService iClinicalAnswerService)
|
||||||
|
{
|
||||||
|
_subjectVisitRepository = subjectVisitRepository;
|
||||||
|
|
||||||
|
_repository = repository;
|
||||||
|
this._iClinicalAnswerService = iClinicalAnswerService;
|
||||||
|
}
|
||||||
|
|
||||||
|
//注意删除不能用扩展方法,必须用EF跟踪的实体 否则不能取到 SubjectVisitId
|
||||||
|
public async Task AfterSave(ITriggerContext<SubjectVisit> context, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var subjectVisit = context.Entity;
|
||||||
|
|
||||||
|
await _iClinicalAnswerService.AutoAddCRCClinical(new Service.Reading.Dto.AutoAddClinicalInDto()
|
||||||
|
{
|
||||||
|
TrialId = subjectVisit.TrialId,
|
||||||
|
SubjectId = subjectVisit.SubjectId,
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -45,8 +45,13 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// 创建时间
|
/// 创建时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
}
|
[JsonIgnore]
|
||||||
|
[ForeignKey("ClinicalFormId")]
|
||||||
|
public ClinicalForm ClinicalForm { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue