修改临床数据配置

Test.EIImageViewer
{872297557@qq.com} 2023-01-29 14:54:00 +08:00
parent 275baf16db
commit 9b46d68729
13 changed files with 238 additions and 120 deletions

View File

@ -10053,6 +10053,12 @@
<param name="outEnrollTime"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.TestService.ModifyClinicalDataTable">
<summary>
维护临床数据 --一定要在同步表前同步数据才行
</summary>
<returns></returns>
</member>
<member name="T:IRaCIS.Application.Contracts.DoctorSearchDTO">
<summary>
Reviewer 列表查询参数

View File

@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.Service
var trialReadingCriterionConfig = await _trialReadingCriterionRepository.Where(t => t.Id == confirmedTrialReadingCriterionId).Select(t => new { TrialReadingCriterionId = t.Id, t.ReadingTool, t.ReadingType, t.IsReadingTaskViewInOrder, t.IsFollowVisitAutoAssign, t.IsFollowGlobalVisitAutoAssign, t.FollowGlobalVisitAutoAssignDefaultState, t.FollowVisitAutoAssignDefaultState, t.TaskAllocateObjEnum, t.CriterionType }).FirstOrDefaultAsync();
//获取确认的临床数据配置
var clinicalDataConfirmList = _trialClinicalDataSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).ToList();
var clinicalDataConfirmList = _trialClinicalDataSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t=>t.TrialClinicalDataSetCriteriaList).ToList();
var visitBlindConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.BlindBaseLineName, t.BlindFollowUpPrefix }).FirstOrDefault();
@ -122,8 +122,8 @@ namespace IRaCIS.Core.Application.Service
{
var blindTaskName = string.Empty;
var isNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionConfig.CriterionType, clinicalDataConfirmList);
var isClinicalDataSign = IsClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionConfig.CriterionType, clinicalDataConfirmList, subjectVisit.Id, trialId);
var isNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionConfig.TrialReadingCriterionId, clinicalDataConfirmList);
var isClinicalDataSign = IsClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionConfig.TrialReadingCriterionId, clinicalDataConfirmList, subjectVisit.Id, trialId);
if (visitNumList.IndexOf(subjectVisit.VisitNum) == 0)
{
@ -291,7 +291,7 @@ namespace IRaCIS.Core.Application.Service
private bool IsNeedClinicalDataSign(ReadingCategory readingCategory, bool isbaseLine, CriterionType criterionType, List<ClinicalDataTrialSet> trialClinicalDataSetList)
private bool IsNeedClinicalDataSign(ReadingCategory readingCategory, bool isbaseLine, Guid trialReadingCriterionId, List<ClinicalDataTrialSet> trialClinicalDataSetList)
{
//访视
if (readingCategory == ReadingCategory.Visit)
@ -300,11 +300,11 @@ namespace IRaCIS.Core.Application.Service
{
//return trialClinicalDataSetList.Where(t=>t.CriterionEnumList.Any(c=>c==(int)criterionType) && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit)).Count()> 0;
return trialClinicalDataSetList.Any(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit));
return trialClinicalDataSetList.Any(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit));
}
else
{
return trialClinicalDataSetList.Any(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.SubjectVisit);
return trialClinicalDataSetList.Any(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.SubjectVisit);
}
}
@ -315,12 +315,12 @@ namespace IRaCIS.Core.Application.Service
//阅片期
else if (readingCategory == ReadingCategory.Global)
{
return trialClinicalDataSetList.Any(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.ImageRead);
return trialClinicalDataSetList.Any(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead);
}
// 肿瘤学
else if (readingCategory == ReadingCategory.Oncology)
{
return trialClinicalDataSetList.Any(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead);
return trialClinicalDataSetList.Any(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead);
}
else
{
@ -331,15 +331,15 @@ namespace IRaCIS.Core.Application.Service
// 有可能在任务生成之前 就签名完了临床数据
private bool IsClinicalDataSign(ReadingCategory readingCategory, bool isbaseLine, CriterionType criterionType, List<ClinicalDataTrialSet> trialClinicalDataSetList, Guid readingId, Guid trialId)
private bool IsClinicalDataSign(ReadingCategory readingCategory, bool isbaseLine, Guid trialReadingCriterionId, List<ClinicalDataTrialSet> trialClinicalDataSetList, Guid readingId, Guid trialId)
{
//不需要签名的 直接返回
if (IsNeedClinicalDataSign(readingCategory, isbaseLine, criterionType, trialClinicalDataSetList) == false)
if (IsNeedClinicalDataSign(readingCategory, isbaseLine, trialReadingCriterionId, trialClinicalDataSetList) == false)
{
return false;
}
var isClinicalDataSign = false;
@ -355,11 +355,11 @@ namespace IRaCIS.Core.Application.Service
if (isbaseLine)
{
//CRC 的自动签名 不用管 只用处理PM 的就好
needSignCount = trialClinicalDataSetList.Where(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit) && t.UploadRole == UploadRole.PM).Count();
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit) && t.UploadRole == UploadRole.PM).Count();
}
else
{
needSignCount = trialClinicalDataSetList.Where(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.SubjectVisit && t.UploadRole == UploadRole.PM).Count();
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.SubjectVisit && t.UploadRole == UploadRole.PM).Count();
}
}
@ -371,17 +371,17 @@ namespace IRaCIS.Core.Application.Service
//阅片期
else if (readingCategory == ReadingCategory.Global)
{
needSignCount = trialClinicalDataSetList.Where(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && 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();
}
// 肿瘤学
else if (readingCategory == ReadingCategory.Oncology)
{
return trialClinicalDataSetList.Any(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead);
return trialClinicalDataSetList.Any(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead);
}
else
{
needSignCount = trialClinicalDataSetList.Where(t => t.CriterionEnumList.Any(c => c == (int)criterionType) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead && t.UploadRole == UploadRole.PM).Count();
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead && t.UploadRole == UploadRole.PM).Count();
}
//可能仅仅CRC 基线 没有PM
@ -410,7 +410,7 @@ namespace IRaCIS.Core.Application.Service
var visitBlindConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.BlindBaseLineName, t.BlindFollowUpPrefix }).FirstOrDefault();
//获取确认的临床数据配置
var clinicalDataConfirmList = _trialClinicalDataSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).ToList();
var clinicalDataConfirmList = _trialClinicalDataSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList();
var dbMaxCode = _visitTaskRepository.Where(t => t.TrialId == trialId).Select(t => t.Code).DefaultIfEmpty().Max();
@ -443,8 +443,8 @@ namespace IRaCIS.Core.Application.Service
var blindTaskName = string.Empty;
var isNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionConfig.CriterionType, clinicalDataConfirmList);
var isClinicalDataSign = IsClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionConfig.CriterionType, clinicalDataConfirmList, subjectVisit.Id, trialId);
var isNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionConfig.TrialReadingCriterionId, clinicalDataConfirmList);
var isClinicalDataSign = IsClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionConfig.TrialReadingCriterionId, clinicalDataConfirmList, subjectVisit.Id, trialId);
if (visitNumList.IndexOf(subjectVisit.VisitNum) == 0)
@ -1229,7 +1229,7 @@ namespace IRaCIS.Core.Application.Service
var originalTaskInfo = await _visitTaskRepository.Where(x => x.Id == generateTaskCommand.OriginalVisitId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
var criterionType = await _trialReadingCriterionRepository.Where(t => t.Id == originalTaskInfo.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
//var criterionType = await _trialReadingCriterionRepository.Where(t => t.Id == originalTaskInfo.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
// 需要添加全局任务再添加
if (originalTaskInfo.TrialReadingCriterion.IsGlobalReading)
@ -1258,8 +1258,8 @@ namespace IRaCIS.Core.Application.Service
ReadingCategory = item.ReadingCategory,
TrialReadingCriterionId = originalTaskInfo.TrialReadingCriterionId,
IsNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Global, false, criterionType, clinicalDataConfirmList),
IsClinicalDataSign = IsClinicalDataSign(ReadingCategory.Global, false, criterionType, clinicalDataConfirmList, item.ReadModuleId, trialId)
IsNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Global, false, originalTaskInfo.TrialReadingCriterionId, clinicalDataConfirmList),
IsClinicalDataSign = IsClinicalDataSign(ReadingCategory.Global, false, originalTaskInfo.TrialReadingCriterionId, clinicalDataConfirmList, item.ReadModuleId, trialId)
});
currentMaxCodeInt = currentMaxCodeInt + 1;
@ -1273,7 +1273,7 @@ namespace IRaCIS.Core.Application.Service
originalTaskInfo = await _visitTaskRepository.Where(x => x.Id == generateTaskCommand.OriginalVisitId).FirstNotNullAsync();
criterionType = await _trialReadingCriterionRepository.Where(t => t.Id == originalTaskInfo.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
//criterionType = await _trialReadingCriterionRepository.Where(t => t.Id == originalTaskInfo.TrialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync();
foreach (var item in generateTaskCommand.ReadingGenerataTaskList)
{
@ -1306,8 +1306,8 @@ namespace IRaCIS.Core.Application.Service
TrialReadingCriterionId = originalTaskInfo.TrialReadingCriterionId,
IsNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Oncology, false, criterionType, clinicalDataConfirmList),
IsClinicalDataSign = IsClinicalDataSign(ReadingCategory.Oncology, false, criterionType, clinicalDataConfirmList, item.ReadModuleId, trialId)
IsNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Oncology, false, originalTaskInfo.TrialReadingCriterionId, clinicalDataConfirmList),
IsClinicalDataSign = IsClinicalDataSign(ReadingCategory.Oncology, false, originalTaskInfo.TrialReadingCriterionId, clinicalDataConfirmList, item.ReadModuleId, trialId)
});

View File

@ -125,7 +125,7 @@ namespace IRaCIS.Core.Application.Contracts
if (userTypeSelectEnum == UserTypeSelectEnum.EnrollOrPD_EMailCopy)
{
userTypeEnums = new List<UserTypeEnum>() { UserTypeEnum.CPM, UserTypeEnum.SPM, UserTypeEnum.SMM, UserTypeEnum.CMM };
userTypeEnums = new List<UserTypeEnum>() { UserTypeEnum.ProjectManager, UserTypeEnum.APM, UserTypeEnum.CPM, UserTypeEnum.SPM, UserTypeEnum.SMM, UserTypeEnum.CMM };
}

View File

@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Service.Reading.Dto;
using MassTransit;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Application.Services
{
@ -130,22 +131,22 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("存在同类型的临床数据,操作失败");
}
indto.CriterionEnumListStr = $"|{String.Join('|', indto.CriterionEnumList)}|";
//indto.CriterionEnumListStr = $"|{String.Join('|', indto.CriterionEnumList)}|";
var entity = await _clinicalDataTrialSetRepository.InsertOrUpdateAsync(indto, true);
//entity.TrialClinicalDataCriterionList = indto.TrialCriterionIdList.Select(t => new TrialClinicalDataCriterion()
//{
// TrialClinicalDataSetId = entity.Id,
// TrialReadingCriterionId = t
//}).ToList();
entity.TrialClinicalDataSetCriteriaList = indto.TrialCriterionIdList.Select(t => new TrialClinicalDataSetCriterion()
{
TrialClinicalDataSetId = entity.Id,
TrialReadingCriterionId = t
}).ToList();
//if (indto.Id != null)
//{
// await _trialClinicalDataCriterionRepository.BatchDeleteNoTrackingAsync(t => t.TrialClinicalDataSetId == entity.Id);
if (indto.Id != null)
{
await _repository.BatchDeleteAsync<TrialClinicalDataSetCriterion>(t => t.TrialClinicalDataSetId == entity.Id);
// await _trialClinicalDataCriterionRepository.AddRangeAsync(entity.TrialClinicalDataCriterionList);
//}
await _repository.AddRangeAsync<TrialClinicalDataSetCriterion>(entity.TrialClinicalDataSetCriteriaList);
}
@ -248,10 +249,10 @@ namespace IRaCIS.Application.Services
#region MyRegion
//不存在的时候,就将系统数据同步到项目临床数据配置
if (!await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null))
{
var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable()/*.Include(t => t.SystemClinicalDataCriterionList)*/.ToListAsync();
var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().ToListAsync();
var systemIds = systemClinicalDataList.Select(x => x.Id).ToList();
var trialSystemClinicalDataSetIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync();
@ -261,7 +262,7 @@ namespace IRaCIS.Application.Services
var systemDataList = systemClinicalDataList.Where(x => needAddids.Contains(x.Id)).ToList();
var readingCriterionList = _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId).Where(t => t.ReadingQuestionCriterionSystemId != null)
.Select(t => new { t.ReadingQuestionCriterionSystemId, TrialReadingCriterionId = t.Id }).ToList();
.Select(t => new { t.ReadingQuestionCriterionSystemId, TrialReadingCriterionId = t.Id ,t.CriterionType}).ToList();
List<ClinicalDataTrialSet> dataSets = systemDataList.Select(x => new ClinicalDataTrialSet()
@ -276,10 +277,11 @@ namespace IRaCIS.Application.Services
Path = x.Path,
TrialId = trialId,
CriterionEnumListStr=x.CriterionEnumListStr
//项目不采用 标准枚举字符串的方式
//CriterionEnumListStr=x.CriterionEnumListStr
//TrialClinicalDataCriterionList = readingCriterionList.Where(t => x.SystemClinicalDataCriterionList.Select(c => (Guid?)c.SystemReadingCriterionId).ToList().Contains(t.ReadingQuestionCriterionSystemId)).Select(c =>
//new TrialClinicalDataCriterion() { TrialReadingCriterionId = c.TrialReadingCriterionId }).ToList()
TrialClinicalDataSetCriteriaList = readingCriterionList.Where(t => x.CriterionEnumList.Contains( (int )t.CriterionType)).Select(c =>
new TrialClinicalDataSetCriterion() { TrialReadingCriterionId = c.TrialReadingCriterionId }).ToList()
}).ToList();

View File

@ -669,14 +669,14 @@ namespace IRaCIS.Application.Services
public async Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto)
{
var criterionType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.CriterionType).FirstNotNullAsync();
//var criterionType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.CriterionType).FirstNotNullAsync();
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
//.WhereIf(inDto.UploadRole == UploadRole.CRC, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
.Where(x => x.ClinicalDataTrialSet.CriterionEnumListStr.Contains($"|{((int)criterionType).ToString()}|"))
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId))
.Select(x => new GetReadingClinicalDataListOutDto()
{
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,

View File

@ -61,11 +61,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string Path { get; set; }
//public List<Guid> TrialCriterionIdList { get; set; }
public List<Guid> TrialCriterionIdList { get; set; }
public string CriterionEnumListStr { get; set; } = String.Empty;
//public string CriterionEnumListStr { get; set; } = String.Empty;
public List<int> CriterionEnumList { get; set; }
//public List<int> CriterionEnumList { get; set; }
}
public class ClinicalDataSystemSetAddOrEdit
@ -129,8 +129,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class ClinicalDataTrialSetView: ClinicalDataTrialSetAddOrEdit
{
//public List<string> TrialCriterionNameList { get; set; }
public List<string> TrialCriterionNameList { get; set; }
/// <summary>
/// 创建时间

View File

@ -57,8 +57,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<ClinicalDataSystemSet, ClinicalDataSystemSetAddOrEdit>().ReverseMap();
CreateMap<ClinicalDataTrialSet, ClinicalDataTrialSetView>()
//.ForMember(t => t.TrialCriterionNameList, u => u.MapFrom(c => c.TrialClinicalDataCriterionList.Select(t => t.TrialReadingCriterion.CriterionName)))
//.ForMember(t => t.TrialCriterionIdList, u => u.MapFrom(c => c.TrialClinicalDataCriterionList.Select(t => t.TrialReadingCriterion.Id)))
.ForMember(t => t.TrialCriterionNameList, u => u.MapFrom(c => c.TrialClinicalDataSetCriteriaList.Select(t => t.TrialReadingCriterion.CriterionName)))
.ForMember(t => t.TrialCriterionIdList, u => u.MapFrom(c => c.TrialClinicalDataSetCriteriaList.Select(t => t.TrialReadingCriterion.Id)))
.ForMember(d => d.IsUsed, u => u.MapFrom(s => s.ReadingClinicalDataList.Count()>0));
CreateMap<ClinicalDataSystemSet, ClinicalDataSystemSetView>();

View File

@ -117,10 +117,10 @@ namespace IRaCIS.Application.Services
//之前已经选择的用户 不放在列表中,现在又要改回去 废弃
var query = _repository.Where<User>(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin)
//正式或者培训的项目不能允许测试用户 同时必须是内部的用户
//正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户
.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IsTestUser == false && t.IsZhiZhun)
//测试用户 或者内部正式用户
//测试项目 可以加入 测试用户 或者内部正式用户
.WhereIf(trialType == TrialType.NoneOfficial, t => t.IsTestUser == true || (t.IsTestUser == false && t.IsZhiZhun))

View File

@ -117,9 +117,9 @@ namespace IRaCIS.Application.Services
//await _visitTaskRepositoryy.UpdatePartialFromQueryAsync( Guid.Parse("78360000-3E2C-0016-9B53-08DA6A002040"), c => new VisitTask() { UpdateTime = DateTime.Now.AddMinutes(1) });
var a= _userInfo.IsTestUser;
var a = _userInfo.IsTestUser;
var list1 = await _repository.Where<Dictionary>().Select(t => t.TranslateValue(t.Value, t.ValueCN,true)).ToListAsync();
var list1 = await _repository.Where<Dictionary>().Select(t => t.TranslateValue(t.Value, t.ValueCN, true)).ToListAsync();
var list2 = await _repository.Where<Dictionary>().Select(t => t.TranslateValue(t.Value, t.ValueCN, false)).ToListAsync();
await _repository.SaveChangesAsync();
@ -146,7 +146,7 @@ namespace IRaCIS.Application.Services
}
[AllowAnonymous]
public async Task<object> GetEnvironmentName( [FromServices] IWebHostEnvironment env)
public async Task<object> GetEnvironmentName([FromServices] IWebHostEnvironment env)
{
@ -241,7 +241,45 @@ namespace IRaCIS.Application.Services
public string PostData(TestModel testModelList)
{
return String.Empty ;
return String.Empty;
}
/// <summary>
/// 维护临床数据 --一定要在同步表前同步数据才行
/// </summary>
/// <returns></returns>
public async Task<IResponseOutput> ModifyClinicalDataTable()
{
var needAddList = _repository.Where<ClinicalDataTrialSet>(t => t.CriterionEnumListStr != String.Empty && t.TrialClinicalDataSetCriteriaList.Count() == 0).ToList();
//遍历项目
foreach (var needAddTrialGroup in needAddList.GroupBy(t => t.TrialId))
{
//找到项目存在的项目标准
var trialCritrialList = _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == needAddTrialGroup.Key).ToList();
//遍历项目下的临床数据
foreach (var needAddTrial in needAddTrialGroup)
{
//遍历每条临床数据配置的标准
foreach (var item in needAddTrial.CriterionEnumList)
{
var find = trialCritrialList.Where(t => (int)t.CriterionType == item).FirstOrDefault();
if (find != null)
{
await _repository.AddAsync(new TrialClinicalDataSetCriterion() { TrialClinicalDataSetId = needAddTrial.Id, TrialReadingCriterionId = find.Id });
}
}
}
}
await _repository.SaveChangesAsync();
return ResponseOutput.Ok();
}
}

View File

@ -9,90 +9,95 @@ using System.Linq;
namespace IRaCIS.Core.Domain.Models
{
///<summary>
/// 临床资料项目配置
///</summary>
[Table("ClinicalDataTrialSet")]
public class ClinicalDataTrialSet : Entity, IAuditAdd
{
///<summary>
/// 临床资料项目配置
///</summary>
[Table("ClinicalDataTrialSet")]
public class ClinicalDataTrialSet : Entity, IAuditAdd
{
/// <summary>
/// 项目ID
/// </summary>
public Guid TrialId { get; set; }
/// <summary>
/// 项目ID
/// </summary>
public Guid TrialId { get; set; }
/// <summary>
/// 名称
/// </summary>
public string ClinicalDataSetName { get; set; }
/// <summary>
/// 名称
/// </summary>
public string ClinicalDataSetName { get; set; }
/// <summary>
/// 临床级别
/// </summary>
public ClinicalLevel ClinicalDataLevel { get; set; }
/// <summary>
/// 临床级别
/// </summary>
public ClinicalLevel ClinicalDataLevel { get; set; }
/// <summary>
/// 上传方式
/// </summary>
public ClinicalUploadType ClinicalUploadType { get; set; }
/// <summary>
/// 上传方式
/// </summary>
public ClinicalUploadType ClinicalUploadType { get; set; }
/// <summary>
/// 系统的ClinicalDataSetId
/// </summary>
public Guid? SystemClinicalDataSetId { get; set; }
/// <summary>
/// 系统的ClinicalDataSetId
/// </summary>
public Guid? SystemClinicalDataSetId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public Guid CreateUserId { get; set; }
/// <summary>
/// 创建人
/// </summary>
public Guid CreateUserId { get; set; }
/// <summary>
/// 是否确认
/// </summary>
public bool IsConfirm { get; set; }
/// <summary>
/// 是否确认
/// </summary>
public bool IsConfirm { get; set; }
/// <summary>
/// 上传角色
/// </summary>
public UploadRole UploadRole { get; set; }
/// <summary>
/// 上传角色
/// </summary>
public UploadRole UploadRole { get; set; }
/// <summary>
/// 模板文件名称
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 模板文件名称
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 文件路径
/// </summary>
public string Path { get; set; }
/// <summary>
/// 文件路径
/// </summary>
public string Path { get; set; }
[JsonIgnore]
/// <summary>
///
/// </summary>
public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }
/// <summary>
///
/// </summary>
public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }
[JsonIgnore]
[ForeignKey("TrialId")]
public Trial Trial { get; set; }
[ForeignKey("TrialId")]
public Trial Trial { get; set; }
public string CriterionEnumListStr { get; set; } = String.Empty;
public List<int> CriterionEnumList => CriterionEnumListStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t) && int.TryParse(t.Trim(), out var s)).Select(t => int.Parse(t.Trim())).ToList();
}
[JsonIgnore]
public List<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriteriaList { get; set; }
public string CriterionEnumListStr { get; set; } = String.Empty;
public List<int> CriterionEnumList => CriterionEnumListStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t) && int.TryParse(t.Trim(), out var s)).Select(t => int.Parse(t.Trim())).ToList();
}

View File

@ -0,0 +1,64 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2023-01-29 13:40:06
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Domain.Models
{
///<summary>
///TrialClinicalDataSetCriterion
///</summary>
[Table("TrialClinicalDataSetCriterion")]
public class TrialClinicalDataSetCriterion : Entity, IAuditUpdate, IAuditAdd
{
/// <summary>
/// TrialClinicalDataSetId
/// </summary>
[Required]
public Guid TrialClinicalDataSetId { get; set; }
/// <summary>
/// TrialReadingCriterionId
/// </summary>
[Required]
public Guid TrialReadingCriterionId { get; set; }
/// <summary>
/// CreateUserId
/// </summary>
[Required]
public Guid CreateUserId { get; set; }
/// <summary>
/// CreateTime
/// </summary>
[Required]
public DateTime CreateTime { get; set; }
/// <summary>
/// UpdateTime
/// </summary>
[Required]
public DateTime UpdateTime { get; set; }
/// <summary>
/// UpdateUserId
/// </summary>
[Required]
public Guid UpdateUserId { get; set; }
[ForeignKey("TrialClinicalDataSetId")]
public ClinicalDataTrialSet TrialClinicalDataSet { get; set; }
[ForeignKey("TrialReadingCriterionId")]
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
}
}

View File

@ -261,6 +261,9 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<TumorAssessment> TumorAssessment { get; set; }
public virtual DbSet<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriterion { get; set; }
//public virtual DbSet<TrialClinicalDataCriterion> TrialClinicalDataCriterion { get; set; }
//public virtual DbSet<SystemClinicalDataCriterion> SystemClinicalDataCriterion { get; set; }

View File

@ -4,7 +4,7 @@
public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=IRaCIS_New_Tet;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true";
public static readonly string DbDatabase = "IRaCIS_New_Tet";
//表名称用字符串,拼接
public static readonly string TableName = "DoctorCriterionFile";
public static readonly string TableName = "TrialClinicalDataSetCriterion";
//具体文件里面 例如service 可以配置是否分页
}
#>