Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
commit
23673ba60c
|
@ -254,6 +254,24 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC撤销临床数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="opt"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, Route("Inspection/ClinicalAnswer/CRCCancelConfirmClinical")]
|
||||||
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
||||||
|
[UnitOfWork]
|
||||||
|
public async Task<IResponseOutput> CRCCancelConfirmClinical(DataInspectionDto<CRCCancelConfirmClinicalInDto> opt)
|
||||||
|
{
|
||||||
|
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
||||||
|
var result = await _clinicalAnswerService.CRCCancelConfirmClinical(opt.Data);
|
||||||
|
await _inspectionService.CompletedSign(singid, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// PM确认临床数据
|
/// PM确认临床数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -146,6 +146,13 @@
|
||||||
<param name="opt"></param>
|
<param name="opt"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.CRCCancelConfirmClinical(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.CRCCancelConfirmClinicalInDto})">
|
||||||
|
<summary>
|
||||||
|
CRC撤销临床数据
|
||||||
|
</summary>
|
||||||
|
<param name="opt"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.PMConfirmClinical(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.CRCConfirmClinicalInDto})">
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.PMConfirmClinical(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Reading.Dto.CRCConfirmClinicalInDto})">
|
||||||
<summary>
|
<summary>
|
||||||
PM确认临床数据
|
PM确认临床数据
|
||||||
|
|
|
@ -414,8 +414,8 @@ var abp = abp || {};
|
||||||
|
|
||||||
//Inputs
|
//Inputs
|
||||||
createInput(modalUxContent, 'tenancyName', 'Tenancy Name (Leave empty for Host)');
|
createInput(modalUxContent, 'tenancyName', 'Tenancy Name (Leave empty for Host)');
|
||||||
createInput(modalUxContent, 'userName', 'Username or email address','text','admin');
|
createInput(modalUxContent, 'userName', 'Username or email address','text','cyldev');
|
||||||
createInput(modalUxContent, 'password', 'Password','password');
|
createInput(modalUxContent, 'password', 'Password','password','123456');
|
||||||
|
|
||||||
//Buttons
|
//Buttons
|
||||||
var authBtnWrapper = document.createElement('div');
|
var authBtnWrapper = document.createElement('div');
|
||||||
|
|
|
@ -2806,6 +2806,11 @@
|
||||||
模块名称
|
模块名称
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListOutDto.IsCRCApplicationRevoke">
|
||||||
|
<summary>
|
||||||
|
CRC是否正在申请撤回
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListOutDto.LatestScanDate">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetCRCConfirmListOutDto.LatestScanDate">
|
||||||
<summary>
|
<summary>
|
||||||
最晚拍片日期
|
最晚拍片日期
|
||||||
|
@ -3156,6 +3161,11 @@
|
||||||
最大长度
|
最大长度
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionBase.MaxQuestionCount">
|
||||||
|
<summary>
|
||||||
|
最大行数
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionBase.ClinicalOptionTypeEnum">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionBase.ClinicalOptionTypeEnum">
|
||||||
<summary>
|
<summary>
|
||||||
临床数据选项类型(无,自定义)
|
临床数据选项类型(无,自定义)
|
||||||
|
@ -3881,6 +3891,21 @@
|
||||||
路径
|
路径
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.ClinicalDataTrialSetId">
|
||||||
|
<summary>
|
||||||
|
临床数据类型Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.GetClinicalType">
|
||||||
|
<summary>
|
||||||
|
1 PM上传的所有的 2CRC上传的所有已确认的 3 所有已经签名的
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.IsOnlyGetCRCReadModule">
|
||||||
|
<summary>
|
||||||
|
只获取CRC上传的阅片模块结构化录入
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.SelectIsSign">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingOrTaskClinicalDataListInDto.SelectIsSign">
|
||||||
<summary>
|
<summary>
|
||||||
只查询已经签名的临床数据
|
只查询已经签名的临床数据
|
||||||
|
@ -3891,6 +3916,16 @@
|
||||||
获取访视列表
|
获取访视列表
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.ClinicalDataTrialSetId">
|
||||||
|
<summary>
|
||||||
|
临床数据类型Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.GetClinicalType">
|
||||||
|
<summary>
|
||||||
|
1 PM上传的所有的 2CRC上传的所有已确认的 3 所有已经签名的
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.IsVisit">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.IsVisit">
|
||||||
<summary>
|
<summary>
|
||||||
是否是访视
|
是否是访视
|
||||||
|
@ -3956,6 +3991,11 @@
|
||||||
访视Id 或者模块Id
|
访视Id 或者模块Id
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListOutDto.IsCRCApplicationRevoke">
|
||||||
|
<summary>
|
||||||
|
CRC是否正在申请撤回
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListOutDto.ClinicalDataSetName">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListOutDto.ClinicalDataSetName">
|
||||||
<summary>
|
<summary>
|
||||||
项目配置临床类型Name
|
项目配置临床类型Name
|
||||||
|
@ -4026,6 +4066,16 @@
|
||||||
文件数量
|
文件数量
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalFromData.ClinicalFormId">
|
||||||
|
<summary>
|
||||||
|
表单Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalFromData.CheckDate">
|
||||||
|
<summary>
|
||||||
|
检查日期
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetFileDto.Id">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetFileDto.Id">
|
||||||
<summary>
|
<summary>
|
||||||
Id
|
Id
|
||||||
|
|
|
@ -459,6 +459,13 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var haveSignedCount = _readingClinicalDataRepository
|
var haveSignedCount = _readingClinicalDataRepository
|
||||||
.Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
|
.Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
|
||||||
|
|
||||||
|
|
||||||
|
var readModule = _readModuleRepository.Where(t => t.Id == readingId).FirstOrDefault();
|
||||||
|
//CRC 阅片期自定义结构化录入是否签名
|
||||||
|
bool crcReadModuleSign = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//访视
|
//访视
|
||||||
if (readingCategory == ReadingCategory.Visit)
|
if (readingCategory == ReadingCategory.Visit)
|
||||||
{
|
{
|
||||||
|
@ -478,16 +485,37 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//阅片期
|
//阅片期
|
||||||
else if (readingCategory == ReadingCategory.Global)
|
else if (readingCategory == ReadingCategory.Global)
|
||||||
{
|
{
|
||||||
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead && t.UploadRole == UploadRole.PM).Count();
|
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead && t.UploadRole == UploadRole.PM).Count();
|
||||||
|
|
||||||
|
if (readModule != null)
|
||||||
|
{
|
||||||
|
// 不存在需要CRC上传的临床数据 或者 PM已确认
|
||||||
|
crcReadModuleSign =
|
||||||
|
!trialClinicalDataSetList.Any(x =>
|
||||||
|
x.UploadRole == UploadRole.CRC
|
||||||
|
&& x.ClinicalDataLevel == ClinicalLevel.ImageRead
|
||||||
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring
|
||||||
|
&& x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId)) || readModule.IsPMConfirm;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 肿瘤学
|
// 肿瘤学
|
||||||
else if (readingCategory == ReadingCategory.Oncology)
|
else if (readingCategory == ReadingCategory.Oncology)
|
||||||
{
|
{
|
||||||
return trialClinicalDataSetList.Any(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead);
|
needSignCount= trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead && t.UploadRole == UploadRole.PM).Count();
|
||||||
|
if (readModule != null)
|
||||||
|
{
|
||||||
|
// 不存在需要CRC上传的临床数据 或者 PM已确认
|
||||||
|
crcReadModuleSign =
|
||||||
|
!trialClinicalDataSetList.Any(x =>
|
||||||
|
x.UploadRole == UploadRole.CRC
|
||||||
|
&& x.ClinicalDataLevel == ClinicalLevel.OncologyRead
|
||||||
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring
|
||||||
|
&& x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId)) || readModule.IsPMConfirm;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -495,7 +523,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
//可能仅仅CRC 基线 没有PM
|
//可能仅仅CRC 基线 没有PM
|
||||||
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
|
if (needSignCount == haveSignedCount && crcReadModuleSign )
|
||||||
{
|
{
|
||||||
isClinicalDataSign = true;
|
isClinicalDataSign = true;
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ 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;
|
using IRaCIS.Core.Application.Service.Reading.Interface;
|
||||||
|
using IRaCIS.Core.Application.Contracts;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
@ -51,6 +52,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
private readonly IClinicalQuestionService _iClinicalQuestionService;
|
private readonly IClinicalQuestionService _iClinicalQuestionService;
|
||||||
|
|
||||||
|
private readonly IReadingClinicalDataService _iReadingClinicalDataService;
|
||||||
|
|
||||||
|
|
||||||
public ClinicalAnswerService(IRepository<TrialClinicalQuestion> trialClinicalQuestionRepository,
|
public ClinicalAnswerService(IRepository<TrialClinicalQuestion> trialClinicalQuestionRepository,
|
||||||
IRepository<SystemClinicalTableQuestion> systemClinicalTableQuestionRepository,
|
IRepository<SystemClinicalTableQuestion> systemClinicalTableQuestionRepository,
|
||||||
|
@ -58,7 +61,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
||||||
IRepository<ClinicalForm> clinicalFormRepository,
|
IRepository<ClinicalForm> clinicalFormRepository,
|
||||||
IRepository<Subject> subjectRepository,
|
IRepository<Subject> subjectRepository,
|
||||||
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
IReadingClinicalDataService iReadingClinicalDataService,
|
||||||
|
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
||||||
IRepository<ReadModule> readModuleRepository,
|
IRepository<ReadModule> readModuleRepository,
|
||||||
IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<ClinicalTableAnswer> clinicalTableAnswerRepository,
|
IRepository<ClinicalTableAnswer> clinicalTableAnswerRepository,
|
||||||
|
@ -78,8 +82,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
_trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository;
|
_trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository;
|
||||||
_systemClinicalQuestionRepository = systemClinicalQuestionRepository;
|
_systemClinicalQuestionRepository = systemClinicalQuestionRepository;
|
||||||
_clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
_clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
||||||
|
_iReadingClinicalDataService = iReadingClinicalDataService;
|
||||||
_clinicalFormRepository = clinicalFormRepository;
|
_clinicalFormRepository = clinicalFormRepository;
|
||||||
this._subjectRepository = subjectRepository;
|
this._subjectRepository = subjectRepository;
|
||||||
this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
|
this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
|
||||||
this._readModuleRepository = readModuleRepository;
|
this._readModuleRepository = readModuleRepository;
|
||||||
|
@ -128,7 +132,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var clinicalDataList =await _readingClinicalDataRepository
|
var clinicalDataList =await _readingClinicalDataRepository
|
||||||
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
||||||
.Where(x =>x.TrialId==inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole== UploadRole.CRC).IgnoreAutoIncludes().ToListAsync();
|
.Where(x =>x.TrialId==inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole== UploadRole.CRC)
|
||||||
|
.Select(x=>new
|
||||||
|
{
|
||||||
|
ClinicalDataTrialSetId=x.ClinicalDataTrialSetId,
|
||||||
|
SubjectId=x.SubjectId,
|
||||||
|
x.ReadingId,
|
||||||
|
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
List<ReadingClinicalData> readingClinicalDatas = new List<ReadingClinicalData>();
|
List<ReadingClinicalData> readingClinicalDatas = new List<ReadingClinicalData>();
|
||||||
|
|
||||||
|
@ -184,12 +195,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}).ToList());
|
}).ToList());
|
||||||
});
|
});
|
||||||
|
|
||||||
await _readingClinicalDataRepository.AddRangeAsync(readingClinicalDatas);
|
|
||||||
|
await _readingClinicalDataRepository.AddRangeAsync(readingClinicalDatas);
|
||||||
await _readingClinicalDataRepository.SaveChangesAsync();
|
await _readingClinicalDataRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取CRC受试者临床数据
|
/// 获取CRC受试者临床数据
|
||||||
|
@ -347,13 +358,17 @@ namespace IRaCIS.Core.Application.Service
|
||||||
ReadingId = inDto.ReadingId,
|
ReadingId = inDto.ReadingId,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (inDto.ClinicalFormId!=null&&(await _readModuleCriterionFromRepository.AnyAsync(x => x.ClinicalFormId == inDto.ClinicalFormId.Value)))
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException("当前表单已确认,无法修改!");
|
||||||
|
}
|
||||||
|
|
||||||
var existsClinical = await _clinicalFormRepository.Where(x =>
|
var existsClinical = await _clinicalFormRepository.Where(x =>
|
||||||
x.SubjectId == inDto.SubjectId
|
x.SubjectId == inDto.SubjectId
|
||||||
&& x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId
|
&& x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId
|
||||||
).WhereIf(inDto.ReadingId != null, x => x.ReadingId == inDto.ReadingId)
|
).WhereIf(inDto.ReadingId != null, x => x.ReadingId == inDto.ReadingId)
|
||||||
.Where(x => x.ClinicalDataTrialSet.UploadRole != UploadRole.CRC && (x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.ImageRead
|
.Where(x => x.ClinicalDataTrialSet.UploadRole != UploadRole.CRC && !(x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead
|
||||||
|| x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.OncologyRead)).AnyAsync();
|
|| x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead)).AnyAsync();
|
||||||
|
|
||||||
if (existsClinical)
|
if (existsClinical)
|
||||||
{
|
{
|
||||||
|
@ -433,13 +448,13 @@ namespace IRaCIS.Core.Application.Service
|
||||||
await _clinicalAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
await _clinicalAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
||||||
await _clinicalTableAnswerRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
await _clinicalTableAnswerRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId);
|
||||||
}
|
}
|
||||||
if(inDto.ReadingId!=null)
|
//if(inDto.ReadingId!=null)
|
||||||
{
|
//{
|
||||||
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ReadingId == inDto.ReadingId && x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId, x => new ReadingClinicalData()
|
// await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ReadingId == inDto.ReadingId && x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId, x => new ReadingClinicalData()
|
||||||
{
|
// {
|
||||||
IsSign = true
|
// IsSign = true
|
||||||
});
|
// });
|
||||||
}
|
//}
|
||||||
await _clinicalFormRepository.AddAsync(clinicalForm);
|
await _clinicalFormRepository.AddAsync(clinicalForm);
|
||||||
await _clinicalQuestionAnswerRepository.AddRangeAsync(clinicalQuestionAnswers);
|
await _clinicalQuestionAnswerRepository.AddRangeAsync(clinicalQuestionAnswers);
|
||||||
await _clinicalAnswerRowInfoRepository.AddRangeAsync(clinicalAnswerRowInfos);
|
await _clinicalAnswerRowInfoRepository.AddRangeAsync(clinicalAnswerRowInfos);
|
||||||
|
@ -511,6 +526,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
SubjectId = x.SubjectId,
|
SubjectId = x.SubjectId,
|
||||||
IsCRCConfirm = x.IsCRCConfirm,
|
IsCRCConfirm = x.IsCRCConfirm,
|
||||||
|
IsCRCApplicationRevoke=x.IsCRCApplicationRevoke,
|
||||||
VisitBlindName=x.SubjectVisit.BlindName,
|
VisitBlindName=x.SubjectVisit.BlindName,
|
||||||
LatestScanDate = x.SubjectVisit.LatestScanDate,
|
LatestScanDate = x.SubjectVisit.LatestScanDate,
|
||||||
ReadingSetType = x.ReadingSetType,
|
ReadingSetType = x.ReadingSetType,
|
||||||
|
@ -641,11 +657,13 @@ namespace IRaCIS.Core.Application.Service
|
||||||
})).CurrentPageData.SelectMany(x => x.ClinicalFormList).ToList();
|
})).CurrentPageData.SelectMany(x => x.ClinicalFormList).ToList();
|
||||||
|
|
||||||
var clinicalDataTrialSetIds = confirmList.Select(x => x.ClinicalDataTrialSetId).Distinct().ToList();
|
var clinicalDataTrialSetIds = confirmList.Select(x => x.ClinicalDataTrialSetId).Distinct().ToList();
|
||||||
var questionList = await _trialClinicalQuestionRepository.Where(x => clinicalDataTrialSetIds.Contains( x.TrialClinicalId)
|
var clinicalFormIds = confirmList.Select(x => x.ClinicalFormId).ToList();
|
||||||
|
|
||||||
|
var questionList = await _trialClinicalQuestionRepository.Where(x => clinicalDataTrialSetIds.Contains( x.TrialClinicalId)
|
||||||
&& x.ClinicalQuestionType != ReadingQestionType.Group
|
&& x.ClinicalQuestionType != ReadingQestionType.Group
|
||||||
&& x.ClinicalQuestionType != ReadingQestionType.Table).OrderBy(x=>x.TrialClinicalId).ThenBy(x => x.ShowOrder)
|
&& x.ClinicalQuestionType != ReadingQestionType.Table).OrderBy(x=>x.TrialClinicalId).ThenBy(x => x.ShowOrder)
|
||||||
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
var answers = await _clinicalQuestionAnswerRepository.Where(x => x.SubjectId == readModule.SubjectId && clinicalDataTrialSetIds.Contains( x.ClinicalDataTrialSetId))
|
var answers = await _clinicalQuestionAnswerRepository.Where(x => clinicalFormIds.Contains(x.ClinicalFormId))
|
||||||
.Select(x => new
|
.Select(x => new
|
||||||
{
|
{
|
||||||
x.ClinicalDataTrialSetId,
|
x.ClinicalDataTrialSetId,
|
||||||
|
@ -734,19 +752,18 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
|
|
||||||
var dataList =(await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
var confirmlist = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto()
|
||||||
{
|
{
|
||||||
TrialId = inDto.TrialId,
|
TrialId = inDto.TrialId,
|
||||||
SubjectId= readModule.SubjectId,
|
SubjectId= readModule.SubjectId,
|
||||||
TrialReadingCriterionId= readModule.TrialReadingCriterionId,
|
ReadModuleId= inDto.ReadModuleId,
|
||||||
|
TrialReadingCriterionId = readModule.TrialReadingCriterionId,
|
||||||
PageIndex=1,
|
PageIndex=1,
|
||||||
PageSize=9999,
|
PageSize=9999,
|
||||||
})).CurrentPageData;
|
})).CurrentPageData;
|
||||||
|
|
||||||
var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First();
|
|
||||||
var confirmlist= dataList.Where(x =>(x.LatestScanDate < presentData.LatestScanDate && x.ReadingSetType == presentData.ReadingSetType)
|
|
||||||
|| x.ReadModuleId == presentData.ReadModuleId).Where(x => !x.IsCRCConfirm).ToList();
|
|
||||||
|
|
||||||
|
await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== inDto.ReadModuleId);
|
||||||
List<ReadModuleCriterionFrom> needAddList = new List<ReadModuleCriterionFrom>()
|
List<ReadModuleCriterionFrom> needAddList = new List<ReadModuleCriterionFrom>()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -811,10 +828,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => presentData.ReadModuleId==x.Id, x => new ReadModule()
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => presentData.ReadModuleId==x.Id, x => new ReadModule()
|
||||||
{
|
{
|
||||||
IsCRCConfirm = false
|
IsCRCApplicationRevoke = true
|
||||||
});
|
});
|
||||||
|
|
||||||
await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== presentData.ReadModuleId);
|
//await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== presentData.ReadModuleId);
|
||||||
|
|
||||||
await _readModuleCriterionFromRepository.SaveChangesAsync();
|
await _readModuleCriterionFromRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
@ -833,15 +850,44 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var readModuleData = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
var readModuleData = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
if (!readModuleData.IsCRCConfirm)
|
if (!readModuleData.IsCRCConfirm)
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("CRC还未确认数据,PM无法确认");
|
throw new BusinessValidationFailedException("CRC还未确认数据,PM无法操作");
|
||||||
}
|
}
|
||||||
|
|
||||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule()
|
if (readModuleData.IsCRCApplicationRevoke && inDto.IsConfirm)
|
||||||
{
|
{
|
||||||
IsPMConfirm = true
|
throw new BusinessValidationFailedException("CRC正在申请退回,PM无法确认");
|
||||||
});
|
}
|
||||||
|
|
||||||
await _readModuleRepository.SaveChangesAsync();
|
if (!readModuleData.IsCRCApplicationRevoke && !inDto.IsConfirm)
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException("CRC未申请退回,PM无法撤销");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inDto.IsConfirm)
|
||||||
|
{
|
||||||
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule()
|
||||||
|
{
|
||||||
|
IsPMConfirm = true
|
||||||
|
});
|
||||||
|
await _readModuleRepository.SaveChangesAsync();
|
||||||
|
await _iReadingClinicalDataService.DealVisiTaskClinicalDataSignedAsync(inDto.TrialId, inDto.SubjectId, inDto.ReadModuleId, false, readModuleData.TrialReadingCriterionId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule()
|
||||||
|
{
|
||||||
|
IsCRCConfirm = false,
|
||||||
|
IsCRCApplicationRevoke=false,
|
||||||
|
});
|
||||||
|
await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== x.Id);
|
||||||
|
|
||||||
|
await _readModuleRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return ResponseOutput.Ok(true);
|
return ResponseOutput.Ok(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,6 +144,8 @@ namespace IRaCIS.Application.Services
|
||||||
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
|
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
|
||||||
.Where(x => x.ClinicalDataSetName == indto.ClinicalDataSetName||x.ClinicalDataSetEnName==indto.ClinicalDataSetEnName);
|
.Where(x => x.ClinicalDataSetName == indto.ClinicalDataSetName||x.ClinicalDataSetEnName==indto.ClinicalDataSetEnName);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (await existsQuery.AnyAsync())
|
if (await existsQuery.AnyAsync())
|
||||||
{
|
{
|
||||||
//---存在同类型的临床数据,操作失败
|
//---存在同类型的临床数据,操作失败
|
||||||
|
|
|
@ -233,6 +233,16 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.IsCheckDate == inDto.IsCheckDate&&inDto.IsCheckDate))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("已经添加过类型为检查日期的问题!");
|
||||||
|
}
|
||||||
|
|
||||||
var entity = await _trialClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
var entity = await _trialClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
|
|
||||||
|
@ -293,6 +303,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
||||||
var systemClinicalQuestionQueryable = _systemClinicalQuestionRepository
|
var systemClinicalQuestionQueryable = _systemClinicalQuestionRepository
|
||||||
|
.Where(x=>x.SystemClinicalId==inQuery.SystemClinicalId)
|
||||||
.WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName))
|
.WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName))
|
||||||
.ProjectTo<SystemClinicalQuestionDto>(_mapper.ConfigurationProvider);
|
.ProjectTo<SystemClinicalQuestionDto>(_mapper.ConfigurationProvider);
|
||||||
var pageList = await systemClinicalQuestionQueryable
|
var pageList = await systemClinicalQuestionQueryable
|
||||||
|
@ -315,6 +326,15 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||||
|
}
|
||||||
|
if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.IsCheckDate == inDto.IsCheckDate && inDto.IsCheckDate))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("已经添加过类型为检查日期的问题!");
|
||||||
|
}
|
||||||
var entity = await _systemClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
var entity = await _systemClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
|
|
||||||
|
@ -401,6 +421,11 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||||
|
}
|
||||||
|
|
||||||
var entity = await _systemClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
var entity = await _systemClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
|
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
|
@ -455,6 +480,11 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||||
|
}
|
||||||
var entity = await _trialClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
var entity = await _trialClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
|
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
|
|
|
@ -25,6 +25,7 @@ namespace IRaCIS.Application.Services
|
||||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
private readonly IRepository<PreviousHistory> _previousHistoryRepository;
|
private readonly IRepository<PreviousHistory> _previousHistoryRepository;
|
||||||
private readonly IRepository<ReadModuleCriterionFrom> _readModuleCriterionFromRepository;
|
private readonly IRepository<ReadModuleCriterionFrom> _readModuleCriterionFromRepository;
|
||||||
|
private readonly IRepository<ClinicalForm> _clinicalFormRepository;
|
||||||
private readonly IRepository<PreviousOther> _previousOtherRepository;
|
private readonly IRepository<PreviousOther> _previousOtherRepository;
|
||||||
private readonly IRepository<PreviousSurgery> _previousSurgeryRepository;
|
private readonly IRepository<PreviousSurgery> _previousSurgeryRepository;
|
||||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
||||||
|
@ -39,6 +40,7 @@ namespace IRaCIS.Application.Services
|
||||||
IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<PreviousHistory> previousHistoryRepository,
|
IRepository<PreviousHistory> previousHistoryRepository,
|
||||||
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
|
||||||
|
IRepository<ClinicalForm> clinicalFormRepository,
|
||||||
IRepository<PreviousOther> previousOtherRepository,
|
IRepository<PreviousOther> previousOtherRepository,
|
||||||
IRepository<PreviousSurgery> previousSurgeryRepository,
|
IRepository<PreviousSurgery> previousSurgeryRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||||
|
@ -55,6 +57,7 @@ namespace IRaCIS.Application.Services
|
||||||
this._subjectVisitRepository = subjectVisitRepository;
|
this._subjectVisitRepository = subjectVisitRepository;
|
||||||
this._previousHistoryRepository = previousHistoryRepository;
|
this._previousHistoryRepository = previousHistoryRepository;
|
||||||
this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
|
this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
|
||||||
|
this._clinicalFormRepository = clinicalFormRepository;
|
||||||
this._previousOtherRepository = previousOtherRepository;
|
this._previousOtherRepository = previousOtherRepository;
|
||||||
this._previousSurgeryRepository = previousSurgeryRepository;
|
this._previousSurgeryRepository = previousSurgeryRepository;
|
||||||
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||||
|
@ -181,12 +184,6 @@ 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)
|
|
||||||
//{
|
|
||||||
// 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)
|
||||||
.WhereIf(inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
.WhereIf(inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||||
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||||
|
@ -203,29 +200,26 @@ namespace IRaCIS.Application.Services
|
||||||
Path = x.ClinicalDataTrialSet.Path,
|
Path = x.ClinicalDataTrialSet.Path,
|
||||||
IsBlind = x.IsBlind,
|
IsBlind = x.IsBlind,
|
||||||
IsComplete = x.IsComplete,
|
IsComplete = x.IsComplete,
|
||||||
|
ClinicalFromList=x.Subject.ClinicalFormList.Where(y=>y.ReadingId==x.ReadingId&&y.ClinicalDataTrialSetId==x.ClinicalDataTrialSetId).Select(y=> new ClinicalFromData() {
|
||||||
|
CheckDate=y.CheckDate,
|
||||||
|
ClinicalFormId=y.Id
|
||||||
|
}).ToList(),
|
||||||
PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
|
PDFFileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
|
||||||
{
|
{
|
||||||
Id = y.Id,
|
Id = y.Id,
|
||||||
FileName = y.FileName,
|
FileName = y.FileName,
|
||||||
Path = y.Path,
|
Path = y.Path,
|
||||||
CreateTime = y.CreateTime,
|
CreateTime = y.CreateTime,
|
||||||
}).ToList()
|
}).ToList(),
|
||||||
|
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
List<GetReadingClinicalDataListOutDto> clinicalData = (await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto()
|
|
||||||
{
|
|
||||||
SubjectId = inDto.SubjectId,
|
|
||||||
ReadingId = inDto.SubjectVisitId,
|
|
||||||
TrialId = inDto.TrialId,
|
|
||||||
})).Item1;
|
|
||||||
|
|
||||||
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
|
var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousHistoryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
|
var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousOtherView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
|
var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo<PreviousSurgeryView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
foreach (var item in cRCClinicalDataList)
|
foreach (var item in cRCClinicalDataList)
|
||||||
{
|
{
|
||||||
//item.PDFFileList = clinicalData.Where(y => y.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).SelectMany(x => x.FileList).ToList();
|
|
||||||
item.ClinicalTableData = new ClinicalDataTable()
|
item.ClinicalTableData = new ClinicalDataTable()
|
||||||
{
|
{
|
||||||
PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
|
PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(),
|
||||||
|
@ -312,7 +306,7 @@ namespace IRaCIS.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理 任务 临床数据是否签名
|
//处理 任务 临床数据是否签名
|
||||||
private async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId)
|
public async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId)
|
||||||
{
|
{
|
||||||
//获取确认的临床数据配置
|
//获取确认的临床数据配置
|
||||||
var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList();
|
var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList();
|
||||||
|
@ -330,6 +324,8 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync();
|
var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//判断是否基线
|
//判断是否基线
|
||||||
if (isBaseLine)
|
if (isBaseLine)
|
||||||
{
|
{
|
||||||
|
@ -358,21 +354,43 @@ namespace IRaCIS.Application.Services
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//判断是影像学 还是肿瘤学阅片
|
//判断是影像学 还是肿瘤学阅片
|
||||||
var readingSetType = await _readModuleRepository.Where(t => t.Id == readingId).Select(t => t.ReadingSetType).FirstOrDefaultAsync();
|
var readModule = await _readModuleRepository.Where(t => t.Id == readingId).FirstNotNullAsync();
|
||||||
|
|
||||||
|
//CRC 阅片期自定义结构化录入是否签名
|
||||||
|
bool crcReadModuleSign = true;
|
||||||
|
|
||||||
//影像学
|
//影像学
|
||||||
if (readingSetType == ReadingSetType.ImageReading)
|
if (readModule.ReadingSetType == ReadingSetType.ImageReading)
|
||||||
{
|
{
|
||||||
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead).Count();
|
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead).Count();
|
||||||
|
|
||||||
|
// 不存在需要CRC上传的临床数据 或者 PM已确认
|
||||||
|
crcReadModuleSign =
|
||||||
|
!trialClinicalDataSetList.Any(x =>
|
||||||
|
x.UploadRole == UploadRole.CRC
|
||||||
|
&& x.ClinicalDataLevel == ClinicalLevel.ImageRead
|
||||||
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring
|
||||||
|
&& x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId)) || readModule.IsPMConfirm;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//肿瘤学
|
//肿瘤学
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead).Count();
|
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead).Count();
|
||||||
|
|
||||||
|
// 不存在需要CRC上传的临床数据 或者 PM已确认
|
||||||
|
crcReadModuleSign =
|
||||||
|
!trialClinicalDataSetList.Any(x =>
|
||||||
|
x.UploadRole == UploadRole.CRC
|
||||||
|
&& x.ClinicalDataLevel == ClinicalLevel.OncologyRead
|
||||||
|
&& x.ClinicalUploadType == ClinicalUploadType.Structuring
|
||||||
|
&& x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId)) || readModule.IsPMConfirm;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//可能仅仅CRC 基线 没有PM
|
//可能仅仅CRC 基线 没有PM
|
||||||
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
|
if (needSignCount == haveSignedCount && crcReadModuleSign/*&& needSignCount != 0*/)
|
||||||
{
|
{
|
||||||
//将该标准 该subject 该阅片期|肿瘤学 任务临床数据状态变更
|
//将该标准 该subject 该阅片期|肿瘤学 任务临床数据状态变更
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask()
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask()
|
||||||
|
@ -608,10 +626,6 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
var clinicalDataList = await this.GetTrialClinicalDataSelect(getTrialClinicalDataSelectIndto);
|
var clinicalDataList = await this.GetTrialClinicalDataSelect(getTrialClinicalDataSelectIndto);
|
||||||
|
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC)
|
|
||||||
{
|
|
||||||
inDto.UploadRole = UploadRole.CRC;
|
|
||||||
}
|
|
||||||
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
|
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
|
||||||
|
|
||||||
|
|
||||||
|
@ -648,9 +662,9 @@ namespace IRaCIS.Application.Services
|
||||||
inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId;
|
inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||||
.WhereIf(inDto.ReadingClinicalDataId != null, x => x.Id == inDto.ReadingClinicalDataId)
|
.WhereIf(inDto.ReadingClinicalDataId != null, x => x.Id == inDto.ReadingClinicalDataId)
|
||||||
|
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
|
||||||
.WhereIf(inDto.SelectIsSign, x => x.IsSign == true)
|
.WhereIf(inDto.SelectIsSign, x => x.IsSign == true)
|
||||||
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
|
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
|
||||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
|
@ -658,13 +672,13 @@ namespace IRaCIS.Application.Services
|
||||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||||
SubjectId = x.SubjectId,
|
SubjectId = x.SubjectId,
|
||||||
ReadingId = x.ReadingId,
|
ReadingId = x.ReadingId,
|
||||||
ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
ClinicalDataSetEnName = x.ClinicalDataTrialSet.ClinicalDataSetEnName,
|
||||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName.LanguageName(x.ClinicalDataTrialSet.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
|
ClinicalDataTrialSetId = x.ClinicalDataTrialSetId,
|
||||||
IsSign = x.IsSign,
|
IsSign = x.IsSign,
|
||||||
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||||
CriterionEnumList = x.ClinicalDataTrialSet.CriterionEnumList,
|
CriterionEnumList = x.ClinicalDataTrialSet.CriterionEnumList,
|
||||||
TrialClinicalDataSetCriteriaList=x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
|
TrialClinicalDataSetCriteriaList = x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||||
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
||||||
|
@ -677,20 +691,35 @@ namespace IRaCIS.Application.Services
|
||||||
}).ToList()
|
}).ToList()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var result = new List<GetReadingClinicalDataListOutDto>();
|
||||||
|
if (!inDto.IsOnlyGetCRCReadModule)
|
||||||
|
{
|
||||||
|
result = await resultQuery.ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||||
|
var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId??default(Guid))).ToListAsync();
|
||||||
|
result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x => {
|
||||||
|
|
||||||
|
x.ClinicalFromList = clinical.Where(y => y.ReadingId == x.ReadingId&&y.ClinicalDataTrialSetId==x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData()
|
||||||
|
{
|
||||||
|
CheckDate = y.CheckDate,
|
||||||
|
ClinicalFormId = y.Id
|
||||||
|
}).ToList();
|
||||||
|
x.FileCount = x.ClinicalFromList.Count();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
var result = await resultQuery.ToListAsync();
|
// 这里处理CRC上传 阅片期的临床数据
|
||||||
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId)
|
||||||
|
|
||||||
|
|
||||||
// 这里处理CRC上传 阅片期的临床数据
|
|
||||||
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId)
|
|
||||||
.WhereIf(inDto.SelectIsSign,x=>x.IsPMConfirm)
|
.WhereIf(inDto.SelectIsSign,x=>x.IsPMConfirm)
|
||||||
.WhereIf(!inDto.SelectIsSign, x => x.IsCRCConfirm)
|
.WhereIf(!inDto.SelectIsSign, x => x.IsCRCConfirm)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
if (readModule != null)
|
if (readModule != null)
|
||||||
{
|
{
|
||||||
var moduleCriterionFromList = await _readModuleCriterionFromRepository.Where(x => x.ReadModuleId == readModule.Id).Select(x => new{
|
var moduleCriterionFromList = await _readModuleCriterionFromRepository
|
||||||
|
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
|
||||||
|
.Where(x => x.ReadModuleId == readModule.Id).Select(x => new{
|
||||||
ClinicalFormId= x.ClinicalFormId,
|
ClinicalFormId= x.ClinicalFormId,
|
||||||
CheckDate= x.ClinicalForm.CheckDate,
|
CheckDate= x.ClinicalForm.CheckDate,
|
||||||
ClinicalDataTrialSetId= x.ClinicalForm.ClinicalDataTrialSetId
|
ClinicalDataTrialSetId= x.ClinicalForm.ClinicalDataTrialSetId
|
||||||
|
@ -701,12 +730,16 @@ namespace IRaCIS.Application.Services
|
||||||
var setIds = moduleCriterionFromList.Select(x=>x.ClinicalDataTrialSetId).Distinct().ToList();
|
var setIds = moduleCriterionFromList.Select(x=>x.ClinicalDataTrialSetId).Distinct().ToList();
|
||||||
var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC && (x.ClinicalDataLevel == ClinicalLevel.OncologyRead || x.ClinicalDataLevel == ClinicalLevel.ImageRead))
|
var clinicalresult = await _clinicalDataTrialSetRepository.Where(x => x.UploadRole == UploadRole.CRC && (x.ClinicalDataLevel == ClinicalLevel.OncologyRead || x.ClinicalDataLevel == ClinicalLevel.ImageRead))
|
||||||
.Where(x => setIds.Contains(x.Id))
|
.Where(x => setIds.Contains(x.Id))
|
||||||
|
|
||||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
{
|
{
|
||||||
|
|
||||||
ClinicalDataLevel = x.ClinicalDataLevel,
|
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||||
SubjectId = inDto.SubjectId,
|
SubjectId = inDto.SubjectId,
|
||||||
ReadingId = default(Guid),
|
ReadingId = default(Guid),
|
||||||
|
IsCRCApplicationRevoke=readModule.IsCRCApplicationRevoke,
|
||||||
|
IsCRCConfirm= readModule.IsCRCConfirm,
|
||||||
|
IsPMConfirm= readModule.IsPMConfirm,
|
||||||
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
ClinicalDataSetEnName = x.ClinicalDataSetEnName,
|
ClinicalDataSetEnName = x.ClinicalDataSetEnName,
|
||||||
ClinicalDataTrialSetId = x.Id,
|
ClinicalDataTrialSetId = x.Id,
|
||||||
|
@ -740,8 +773,8 @@ namespace IRaCIS.Application.Services
|
||||||
ClinicalFormId = x.ClinicalFormId
|
ClinicalFormId = x.ClinicalFormId
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
x.IsSign = readModule.IsPMConfirm ? true : false;
|
||||||
x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
|
x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -750,30 +783,47 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 根据标准
|
// 根据标准
|
||||||
if (inDto.VisitTaskId != null)
|
if (inDto.VisitTaskId != null)
|
||||||
{
|
{
|
||||||
var visitTaskInfo = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
|
var visitTaskInfo = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
|
||||||
|
|
||||||
result = result.Where(x => x.TrialClinicalDataSetCriteriaList.Any(z=>z.TrialReadingCriterionId==visitTaskInfo.TrialReadingCriterionId)).ToList();
|
result = result.Where(x => x.TrialClinicalDataSetCriteriaList.Any(z => z.TrialReadingCriterionId == visitTaskInfo.TrialReadingCriterionId)).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
result = result.Where(x => !(x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
if (inDto.GetClinicalType != null)
|
||||||
// 需要排除表格为空的数据
|
|
||||||
|
|
||||||
|
|
||||||
var readingIds = result.Select(x => x.ReadingId).ToList();
|
|
||||||
|
|
||||||
var tablecount = (await _previousHistoryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync()) +
|
|
||||||
(await _previousOtherRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync()) +
|
|
||||||
(await _previousSurgeryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync());
|
|
||||||
|
|
||||||
if (tablecount == 0)
|
|
||||||
{
|
{
|
||||||
result = result.Where(x => x.ClinicalUploadType != ClinicalUploadType.Table).ToList();
|
switch (inDto.GetClinicalType)
|
||||||
|
{
|
||||||
|
case GetClinicalType.PMUpload:
|
||||||
|
result = result.Where(x => x.UploadRole == UploadRole.PM).ToList();
|
||||||
|
break;
|
||||||
|
case GetClinicalType.CRCConfirm:
|
||||||
|
result = result.Where(x => x.UploadRole == UploadRole.CRC&&x.IsCRCConfirm&&!x.IsPMConfirm).ToList();
|
||||||
|
break;
|
||||||
|
case GetClinicalType.HasSign:
|
||||||
|
result = result.Where(x => x.IsSign).ToList();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//result = result.Where(x => !(x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
||||||
|
//// 需要排除表格为空的数据
|
||||||
|
|
||||||
|
|
||||||
|
//var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||||
|
|
||||||
|
//var tablecount = (await _previousHistoryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync()) +
|
||||||
|
// (await _previousOtherRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync()) +
|
||||||
|
// (await _previousSurgeryRepository.Where(x => readingIds.Contains(x.SubjectVisitId)).CountAsync());
|
||||||
|
|
||||||
|
//if (tablecount == 0)
|
||||||
|
//{
|
||||||
|
// result = result.Where(x => x.ClinicalUploadType != ClinicalUploadType.Table).ToList();
|
||||||
|
//}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -785,14 +835,9 @@ namespace IRaCIS.Application.Services
|
||||||
[NonDynamicMethod]
|
[NonDynamicMethod]
|
||||||
public async Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto)
|
public async Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
//var criterionType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.CriterionType).FirstNotNullAsync();
|
|
||||||
|
|
||||||
|
|
||||||
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||||
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
|
.Where(x => x.ReadingId == inDto.ReadingId)
|
||||||
//.WhereIf(inDto.UploadRole == UploadRole.CRC, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
|
.WhereIf(inDto.ClinicalDataTrialSetId!=null, x=>x.ClinicalDataTrialSetId==inDto.TrialReadingCriterionId)
|
||||||
|
|
||||||
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId))
|
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId))
|
||||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
{
|
{
|
||||||
|
@ -824,13 +869,28 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
var result = await resultQuery.ToListAsync();
|
var result = await resultQuery.ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||||
|
var clinical = await _clinicalFormRepository.Where(x => readingIds.Contains(x.ReadingId ?? default(Guid))).ToListAsync();
|
||||||
|
result.Where(x => x.ClinicalUploadType == ClinicalUploadType.Structuring).ForEach(x => {
|
||||||
|
|
||||||
|
x.ClinicalFromList = clinical.Where(y => y.ReadingId == x.ReadingId && y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Select(y => new ClinicalFromData()
|
||||||
|
{
|
||||||
|
CheckDate = y.CheckDate,
|
||||||
|
ClinicalFormId = y.Id
|
||||||
|
}).ToList();
|
||||||
|
x.FileCount = x.ClinicalFromList.Count();
|
||||||
|
});
|
||||||
|
|
||||||
// 这里处理CRC上传 阅片期的临床数据
|
// 这里处理CRC上传 阅片期的临床数据
|
||||||
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId&&x.IsCRCConfirm)
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadingId&&x.IsCRCConfirm)
|
||||||
|
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
if (readModule != null)
|
if (readModule != null)
|
||||||
{
|
{
|
||||||
var moduleCriterionFromList = await _readModuleCriterionFromRepository.Where(x => x.ReadModuleId == readModule.Id).Select(x => new {
|
var moduleCriterionFromList = await _readModuleCriterionFromRepository.Where(x => x.ReadModuleId == readModule.Id)
|
||||||
|
|
||||||
|
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalForm.ClinicalDataTrialSetId == inDto.TrialReadingCriterionId)
|
||||||
|
.Select(x => new {
|
||||||
ClinicalFormId = x.ClinicalFormId,
|
ClinicalFormId = x.ClinicalFormId,
|
||||||
CheckDate = x.ClinicalForm.CheckDate,
|
CheckDate = x.ClinicalForm.CheckDate,
|
||||||
ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId
|
ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSetId
|
||||||
|
@ -847,7 +907,11 @@ namespace IRaCIS.Application.Services
|
||||||
ClinicalDataLevel = x.ClinicalDataLevel,
|
ClinicalDataLevel = x.ClinicalDataLevel,
|
||||||
SubjectId = inDto.SubjectId,
|
SubjectId = inDto.SubjectId,
|
||||||
ReadingId = default(Guid),
|
ReadingId = default(Guid),
|
||||||
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
IsCRCApplicationRevoke= readModule.IsCRCApplicationRevoke,
|
||||||
|
IsCRCConfirm = readModule.IsCRCConfirm,
|
||||||
|
IsPMConfirm=readModule.IsPMConfirm,
|
||||||
|
|
||||||
|
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||||
ClinicalDataSetEnName = x.ClinicalDataSetEnName,
|
ClinicalDataSetEnName = x.ClinicalDataSetEnName,
|
||||||
ClinicalDataTrialSetId = x.Id,
|
ClinicalDataTrialSetId = x.Id,
|
||||||
IsSign = readModule.IsPMConfirm,
|
IsSign = readModule.IsPMConfirm,
|
||||||
|
@ -881,16 +945,32 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
|
x.IsSign = readModule.IsPMConfirm ?true : false;
|
||||||
|
x.ReadingClinicalDataState = readModule.IsPMConfirm ? ReadingClinicalDataStatus.HaveSigned : ReadingClinicalDataStatus.HaveChecked;
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
result.AddRange(clinicalresult);
|
result.AddRange(clinicalresult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//result = result.Where(x => !(x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
|
if (inDto.GetClinicalType != null)
|
||||||
|
{
|
||||||
|
switch (inDto.GetClinicalType)
|
||||||
|
{
|
||||||
|
case GetClinicalType.PMUpload:
|
||||||
|
result = result.Where(x => x.UploadRole == UploadRole.PM).ToList();
|
||||||
|
break;
|
||||||
|
case GetClinicalType.CRCConfirm:
|
||||||
|
result = result.Where(x => x.UploadRole == UploadRole.CRC&&x.IsCRCConfirm&&!x.IsPMConfirm).ToList();
|
||||||
|
break;
|
||||||
|
case GetClinicalType.HasSign:
|
||||||
|
result = result.Where(x => x.IsSign).ToList();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -221,7 +221,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
public Guid ReadModuleId { get; set; }
|
public Guid ReadModuleId { get; set; }
|
||||||
}
|
|
||||||
|
public bool IsConfirm { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public class CRCClinicalForm
|
public class CRCClinicalForm
|
||||||
|
@ -272,6 +275,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public bool IsCRCConfirm { get; set; } = false;
|
public bool IsCRCConfirm { get; set; } = false;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC是否正在申请撤回
|
||||||
|
/// </summary>
|
||||||
|
public bool IsCRCApplicationRevoke { get; set; } = false;
|
||||||
|
|
||||||
public string SubjectCode { get; set; }
|
public string SubjectCode { get; set; }
|
||||||
|
|
||||||
public bool IsHaveTableQuestion
|
public bool IsHaveTableQuestion
|
||||||
|
|
|
@ -181,6 +181,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? MaxAnswerLength { get; set; }
|
public int? MaxAnswerLength { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 最大行数
|
||||||
|
/// </summary>
|
||||||
|
public int? MaxQuestionCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 临床数据选项类型(无,自定义)
|
/// 临床数据选项类型(无,自定义)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -113,9 +113,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? IsComplete { get; set; }
|
public bool? IsComplete { get; set; }
|
||||||
|
|
||||||
//public List<GetReadingClinicalDataListOutDto> ReadingClinicalDataList { get; set; }
|
public List<ClinicalFromData> ClinicalFromList { get; set; }
|
||||||
|
|
||||||
public List<GetFileDto> PDFFileList { get; set; } = new List<GetFileDto>();
|
//public List<GetReadingClinicalDataListOutDto> ReadingClinicalDataList { get; set; }
|
||||||
|
|
||||||
|
public List<GetFileDto> PDFFileList { get; set; } = new List<GetFileDto>();
|
||||||
|
|
||||||
public ClinicalDataTable ClinicalTableData { get; set; }
|
public ClinicalDataTable ClinicalTableData { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -182,14 +184,29 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public Guid? ReadingId { get; set; }
|
public Guid? ReadingId { get; set; }
|
||||||
|
|
||||||
public Guid? VisitTaskId { get; set; }
|
/// <summary>
|
||||||
|
/// 临床数据类型Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid? ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
public Guid? ReadingClinicalDataId { get; set; }
|
public Guid? VisitTaskId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 1 PM上传的所有的 2CRC上传的所有已确认的 3 所有已经签名的
|
||||||
|
/// </summary>
|
||||||
|
public GetClinicalType? GetClinicalType { get; set; }
|
||||||
|
|
||||||
|
public Guid? ReadingClinicalDataId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 只查询已经签名的临床数据
|
/// 只获取CRC上传的阅片模块结构化录入
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool SelectIsSign { get; set; } = true;
|
public bool IsOnlyGetCRCReadModule { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 只查询已经签名的临床数据
|
||||||
|
/// </summary>
|
||||||
|
public bool SelectIsSign { get; set; } = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -202,9 +219,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
public Guid ReadingId { get; set; }
|
public Guid ReadingId { get; set; }
|
||||||
|
|
||||||
public UploadRole? UploadRole { get; set; }
|
/// <summary>
|
||||||
|
/// 临床数据类型Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid? ClinicalDataTrialSetId { get; set; }
|
||||||
|
|
||||||
[NotDefault]
|
/// <summary>
|
||||||
|
/// 1 PM上传的所有的 2CRC上传的所有已确认的 3 所有已经签名的
|
||||||
|
/// </summary>
|
||||||
|
public GetClinicalType? GetClinicalType { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
public Guid TrialReadingCriterionId { get; set; }
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
|
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
@ -310,11 +335,18 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid ReadingId { get; set; }
|
public Guid ReadingId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC是否正在申请撤回
|
||||||
|
/// </summary>
|
||||||
|
public bool IsCRCApplicationRevoke { get; set; } = false;
|
||||||
|
public bool IsCRCConfirm { get; set; } = false;
|
||||||
|
|
||||||
/// <summary>
|
public bool IsPMConfirm { get; set; } = false;
|
||||||
/// 项目配置临床类型Name
|
|
||||||
/// </summary>
|
/// <summary>
|
||||||
public string ClinicalDataSetName { get; set; }
|
/// 项目配置临床类型Name
|
||||||
|
/// </summary>
|
||||||
|
public string ClinicalDataSetName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 英文名称
|
/// 英文名称
|
||||||
|
|
|
@ -17,5 +17,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Interface
|
||||||
|
|
||||||
Task<IResponseOutput> SubmitClinicalForm(SubmitClinicalFormInDto inDto);
|
Task<IResponseOutput> SubmitClinicalForm(SubmitClinicalFormInDto inDto);
|
||||||
|
|
||||||
|
Task<IResponseOutput> CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,5 +23,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
// Task<(List<GetReadingClinicalDataListOutDto>, object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto);
|
// Task<(List<GetReadingClinicalDataListOutDto>, object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto);
|
||||||
|
|
||||||
Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto);
|
Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto);
|
||||||
|
|
||||||
|
Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2211,6 +2211,7 @@ namespace IRaCIS.Application.Services
|
||||||
SubjectId = taskInfo.SubjectId,
|
SubjectId = taskInfo.SubjectId,
|
||||||
TrialId = taskInfo.TrialId,
|
TrialId = taskInfo.TrialId,
|
||||||
VisitTaskId = taskInfo.Id,
|
VisitTaskId = taskInfo.Id,
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var isBaseLine = false;
|
var isBaseLine = false;
|
||||||
|
|
|
@ -203,6 +203,7 @@ namespace IRaCIS.Core.Application
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> AsyncTrialCriterionDictionary(AsyncTrialCriterionDictionaryInDto inDto)
|
public async Task<IResponseOutput> AsyncTrialCriterionDictionary(AsyncTrialCriterionDictionaryInDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync();
|
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync();
|
||||||
|
|
||||||
if (trialCriterion.ReadingQuestionCriterionSystemId != null)
|
if (trialCriterion.ReadingQuestionCriterionSystemId != null)
|
||||||
|
@ -1041,9 +1042,17 @@ namespace IRaCIS.Core.Application
|
||||||
//}); ;
|
//}); ;
|
||||||
|
|
||||||
|
|
||||||
|
var result = await _repository.SaveChangesAsync();
|
||||||
|
|
||||||
|
var criterionTrialList = await _readingQuestionCriterionTrialRepository.Where(x =>x.IsConfirm&& x.TrialId == trialConfig.TrialId&&x.ReadingQuestionCriterionSystemId!=null&&x.SynchronizeOriginalTime==null).ToListAsync();
|
||||||
return ResponseOutput.Ok(await _repository.SaveChangesAsync());
|
foreach (var item in criterionTrialList)
|
||||||
|
{
|
||||||
|
await AsyncTrialCriterionDictionary(new AsyncTrialCriterionDictionaryInDto()
|
||||||
|
{
|
||||||
|
TrialReadingCriterionId = item.Id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return ResponseOutput.Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -98,36 +98,36 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
|
|
||||||
}
|
}
|
||||||
// 触发临床数据
|
// 触发临床数据
|
||||||
if (context.ChangeType == ChangeType.Added)
|
//if (context.ChangeType == ChangeType.Added)
|
||||||
{
|
//{
|
||||||
var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == context.Entity.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm)
|
// var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == context.Entity.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm)
|
||||||
|
|
||||||
.Select(x => new
|
// .Select(x => new
|
||||||
{
|
// {
|
||||||
x.Id,
|
// x.Id,
|
||||||
x.ClinicalDataLevel,
|
// x.ClinicalDataLevel,
|
||||||
}).ToListAsync();
|
// }).ToListAsync();
|
||||||
|
|
||||||
List<ReadingClinicalData> readingClinicals = new List<ReadingClinicalData>();
|
// List<ReadingClinicalData> readingClinicals = new List<ReadingClinicalData>();
|
||||||
readingClinicals.AddRange(
|
// readingClinicals.AddRange(
|
||||||
|
|
||||||
cRCClinicalDatas.WhereIf(!context.Entity.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Select(x => new ReadingClinicalData()
|
// cRCClinicalDatas.WhereIf(!context.Entity.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Select(x => new ReadingClinicalData()
|
||||||
{
|
// {
|
||||||
ClinicalDataTrialSetId = x.Id,
|
// ClinicalDataTrialSetId = x.Id,
|
||||||
IsVisit = true,
|
// IsVisit = true,
|
||||||
SubjectId = context.Entity.SubjectId,
|
// SubjectId = context.Entity.SubjectId,
|
||||||
ReadingId = context.Entity.Id,
|
// ReadingId = context.Entity.Id,
|
||||||
TrialId = context.Entity.TrialId
|
// TrialId = context.Entity.TrialId
|
||||||
|
|
||||||
}).ToList()
|
// }).ToList()
|
||||||
|
|
||||||
);
|
// );
|
||||||
|
|
||||||
|
|
||||||
await _readingClinicalDataRepository.AddRangeAsync(readingClinicals);
|
// await _readingClinicalDataRepository.AddRangeAsync(readingClinicals);
|
||||||
await _readingClinicalDataRepository.SaveChangesAsync();
|
// await _readingClinicalDataRepository.SaveChangesAsync();
|
||||||
|
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,29 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
public static readonly string Group = "group";
|
public static readonly string Group = "group";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GetClinicalType
|
||||||
|
/// </summary>
|
||||||
|
public enum GetClinicalType
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PM上传
|
||||||
|
/// </summary>
|
||||||
|
PMUpload = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC 上传 过确认
|
||||||
|
/// </summary>
|
||||||
|
CRCConfirm = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 已审核
|
||||||
|
/// </summary>
|
||||||
|
HasSign = 3
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 临床表格问题标识
|
/// 临床表格问题标识
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -96,8 +96,10 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<ReadingClinicalDataPDF> ReadingClinicalDataPDFList { get; set; }
|
public List<ReadingClinicalDataPDF> ReadingClinicalDataPDFList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? MaxAnswerLength { get; set; }
|
public int? MaxAnswerLength { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 最大行数
|
||||||
|
/// </summary>
|
||||||
|
public int? MaxQuestionCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 临床数据选项类型(无,自定义)
|
/// 临床数据选项类型(无,自定义)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -47,6 +47,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
/// 最大长度
|
/// 最大长度
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? MaxAnswerLength { get; set; }
|
public int? MaxAnswerLength { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 最大行数
|
||||||
|
/// </summary>
|
||||||
|
public int? MaxQuestionCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 临床数据选项类型(无,自定义)
|
/// 临床数据选项类型(无,自定义)
|
||||||
|
|
|
@ -54,6 +54,10 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[ForeignKey("ClinicalDataTrialSetId")]
|
[ForeignKey("ClinicalDataTrialSetId")]
|
||||||
public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; }
|
public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; }
|
||||||
|
|
||||||
}
|
[JsonIgnore]
|
||||||
|
[ForeignKey("SubjectId")]
|
||||||
|
public Subject Subject { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,12 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public bool IsCRCConfirm { get; set; } = false;
|
public bool IsCRCConfirm { get; set; } = false;
|
||||||
|
|
||||||
public bool IsPMConfirm { get; set; } = false;
|
public bool IsPMConfirm { get; set; } = false;
|
||||||
public bool IsDeleted { get; set; }
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC是否正在申请撤回
|
||||||
|
/// </summary>
|
||||||
|
public bool IsCRCApplicationRevoke { get; set; } = false;
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
public DateTime? DeletedTime { get; set; }
|
public DateTime? DeletedTime { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,8 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public Guid? DeleteUserId { get; set; }
|
public Guid? DeleteUserId { get; set; }
|
||||||
|
|
||||||
public bool IsReReadingOrBackInfluenceAnalysis { get; set; }
|
public bool IsReReadingOrBackInfluenceAnalysis { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ClinicalForm> ClinicalFormList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
//是否分配了读片医生
|
//是否分配了读片医生
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
|
||||||
|
{
|
||||||
|
//public class ClinicalFromConfigration : IEntityTypeConfiguration<ClinicalForm>
|
||||||
|
//{
|
||||||
|
|
||||||
|
|
||||||
|
// public void Configure(EntityTypeBuilder<ClinicalForm> builder)
|
||||||
|
// {
|
||||||
|
// builder
|
||||||
|
// .HasOne(s => s.ReadingClinicalData)
|
||||||
|
// .WithMany(c => c.ClinicalFormList)
|
||||||
|
// .HasForeignKey(s => new { s.SubjectId, s.ReadingId })
|
||||||
|
// .HasPrincipalKey(c => new { c.SubjectId, c.ReadingId });
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
//}
|
||||||
|
}
|
Loading…
Reference in New Issue