Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
commit
4f111a710d
|
@ -2484,11 +2484,66 @@
|
|||
<param name="command"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Service.ClinicalAnswerService">
|
||||
<summary>
|
||||
临床答案
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.GetCRCSubjectClinicalList(IRaCIS.Core.Application.Service.Reading.Dto.GetCRCSubjectClinicalInDto)">
|
||||
<summary>
|
||||
获取CRC受试者临床数据
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.GetClinicalQuestionFormList(IRaCIS.Core.Application.Service.Reading.Dto.GetClinicalQuestionAnswerListInDto)">
|
||||
<summary>
|
||||
获取表单列表
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.GetClinicalFormInfo(IRaCIS.Core.Application.Service.Reading.Dto.GetClinicalFormInfoInDto)">
|
||||
<summary>
|
||||
获取临床数据表单问题
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalAnswerService.SubmitClinicalForm(IRaCIS.Core.Application.Service.Reading.Dto.SubmitClinicalFormInDto)">
|
||||
<summary>
|
||||
提交临床数据表单
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Service.ClinicalQuestionService">
|
||||
<summary>
|
||||
临床数据问题
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalQuestionService.GetSystemClinicalQuestionPreview(IRaCIS.Core.Application.Service.Reading.Dto.GetSystemClinicalQuestionPreviewDto)">
|
||||
<summary>
|
||||
获取系统临床数据预览
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalQuestionService.GetTrialClinicalQuestionPreview(IRaCIS.Core.Application.Service.Reading.Dto.GetTrialClinicalQuestionPreviewDto)">
|
||||
<summary>
|
||||
获取项目临床数据预览
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalQuestionService.FindChildQuestion(IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionPreviewDto,System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionPreviewDto},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.ClinicalTablePreviewDto},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.ClinicalFormQuestionAnswer},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.ClinicalFormTableQuestionAnswer})">
|
||||
<summary>
|
||||
获取子元素
|
||||
</summary>
|
||||
<param name="item"></param>
|
||||
<param name="questions"></param>
|
||||
<param name="tableQuestions"></param>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ClinicalQuestionService.GetTrialClinicalQuestionList(IRaCIS.Core.Application.Service.Reading.Dto.TrialClinicalQuestionQuery)">
|
||||
<summary>
|
||||
获取项目临床问题
|
||||
|
@ -2828,6 +2883,46 @@
|
|||
是否启用
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetSystemClinicalQuestionPreviewDto.SystemClinicalId">
|
||||
<summary>
|
||||
系统临床数据Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialClinicalQuestionPreviewDto.TrialClinicalId">
|
||||
<summary>
|
||||
项目临床数据Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionPreviewDto">
|
||||
<summary>
|
||||
项目预览问题Dto
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionPreviewDto.SystemClinicalId">
|
||||
<summary>
|
||||
系统临床数据Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionPreviewDto.Childrens">
|
||||
<summary>
|
||||
子问题
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionPreviewDto.TableQuestions">
|
||||
<summary>
|
||||
表格问题
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalTablePreviewDto">
|
||||
<summary>
|
||||
项目临床数据问题
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalTablePreviewDto.SystemClinicalId">
|
||||
<summary>
|
||||
系统临床数据Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalQuestionBase">
|
||||
<summary>
|
||||
临床问题基本信息
|
||||
|
@ -3113,6 +3208,16 @@
|
|||
获取系统临床数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TrialClinicalTableQuestionSynchronize.SystemClinicalId">
|
||||
<summary>
|
||||
系统临床数据Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TrialClinicalQuestionSynchronize.SystemClinicalId">
|
||||
<summary>
|
||||
系统临床数据Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.SynchronizationQuestionDto.SystemClinicalId">
|
||||
<summary>
|
||||
系统临床数据Id
|
||||
|
@ -10374,7 +10479,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetCheckToBeDoneList(IRaCIS.Core.Application.Contracts.CheckToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
一致性核查待处理
|
||||
一致性核查待处理 -- PM APM 待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
|
@ -10383,7 +10488,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetReReadingApplyToBeDoneList(IRaCIS.Core.Application.Contracts.ReReadingApplyToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTaskReReading},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
重阅申请待审核
|
||||
重阅申请待审核 -- PM APM 待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_visitTaskReReadingRepository"></param>
|
||||
|
@ -10392,7 +10497,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetPM_ReviewerSelectToBeDoneList(IRaCIS.Core.Application.Contracts.ReviewerSelectToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
PM 阅片人筛选
|
||||
PM 阅片人筛选 -- PM APM 待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_enrollRepository"></param>
|
||||
|
@ -10419,7 +10524,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetImageClinicalDataToBeDoneList(IRaCIS.Core.Application.Contracts.ImageClinicalDataToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
临床数据
|
||||
临床数据 --CRC 待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
|
@ -10427,7 +10532,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetCRCImageQuestionToBeDoneList(IRaCIS.Core.Application.Contracts.ImageQuestionToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
CRC影像质疑待处理
|
||||
CRC影像质疑待处理 --CRC 待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
|
@ -10436,7 +10541,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetImageCheckQuestionToBeDoneList(IRaCIS.Core.Application.Contracts.ImageCheckQuestionToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
核查质疑待处理
|
||||
核查质疑待处理 --CRC 待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
|
@ -10444,7 +10549,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetImageReUploadToBeDoneList(IRaCIS.Core.Application.Contracts.ImageReUploadToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
影像重传
|
||||
影像重传 --CRC 待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
|
@ -10452,7 +10557,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetImageSubmittedToBeDoneList(IRaCIS.Core.Application.Contracts.ImageSubmittedToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
加急影像提交
|
||||
加急影像提交 --CRC 待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
|
@ -10460,7 +10565,7 @@
|
|||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.PersonalWorkstation.GetImageQualityToBeDoneList(IRaCIS.Core.Application.Contracts.ImageQualityToBeDoneQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||
<summary>
|
||||
影像质控 待领取 跟项目配置有关系 --未完成
|
||||
影像质控 待领取 跟项目配置有关系 --IQC待办
|
||||
</summary>
|
||||
<param name="inQuery"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
|
|
|
@ -0,0 +1,185 @@
|
|||
//--------------------------------------------------------------------
|
||||
// 此代码由T4模板自动生成 byzhouhang 20210918
|
||||
// 生成时间 2023-06-15 15:06:06
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using MassTransit;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
/// <summary>
|
||||
/// 临床答案
|
||||
/// </summary>
|
||||
[ApiExplorerSettings(GroupName = "Reading")]
|
||||
public class ClinicalAnswerService : BaseService
|
||||
{
|
||||
|
||||
private readonly IRepository<TrialClinicalQuestion> _trialClinicalQuestionRepository;
|
||||
|
||||
private readonly IRepository<SystemClinicalQuestion> _systemClinicalQuestionRepository;
|
||||
|
||||
|
||||
private readonly IRepository<SystemClinicalTableQuestion> _systemClinicalTableQuestionRepository;
|
||||
|
||||
private readonly IRepository<TrialClinicalTableQuestion> _trialClinicalTableQuestionRepository;
|
||||
|
||||
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
||||
|
||||
private readonly IRepository<ClinicalForm> _clinicalFormRepository;
|
||||
|
||||
private readonly IRepository<ClinicalQuestionAnswer> _clinicalQuestionAnswerRepository;
|
||||
|
||||
private readonly IRepository<ClinicalTableAnswer> _clinicalTableAnswerRepository;
|
||||
|
||||
private readonly IClinicalQuestionService _iClinicalQuestionService;
|
||||
|
||||
|
||||
public ClinicalAnswerService(IRepository<TrialClinicalQuestion> trialClinicalQuestionRepository,
|
||||
IRepository<SystemClinicalTableQuestion> systemClinicalTableQuestionRepository,
|
||||
IRepository<TrialClinicalTableQuestion> trialClinicalTableQuestionRepository,
|
||||
IRepository<ClinicalForm> clinicalFormRepository,
|
||||
IRepository<ClinicalTableAnswer> clinicalTableAnswerRepository,
|
||||
IRepository<ClinicalQuestionAnswer> clinicalQuestionAnswerRepository,
|
||||
IClinicalQuestionService iClinicalQuestionService,
|
||||
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
|
||||
IRepository<SystemClinicalQuestion> systemClinicalQuestionRepository
|
||||
)
|
||||
{
|
||||
_clinicalQuestionAnswerRepository = clinicalQuestionAnswerRepository;
|
||||
_systemClinicalTableQuestionRepository = systemClinicalTableQuestionRepository;
|
||||
_trialClinicalQuestionRepository = trialClinicalQuestionRepository;
|
||||
_trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository;
|
||||
_systemClinicalQuestionRepository = systemClinicalQuestionRepository;
|
||||
_clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
||||
_clinicalFormRepository = clinicalFormRepository;
|
||||
_clinicalTableAnswerRepository = clinicalTableAnswerRepository;
|
||||
_iClinicalQuestionService = iClinicalQuestionService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取CRC受试者临床数据
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto)
|
||||
{
|
||||
var result =await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId).OrderBy(x=>x.ClinicalDataSetName).Select(x => new GetCRCSubjectClinicalOutDto()
|
||||
{
|
||||
ClinicalDataTrialSetId = x.Id,
|
||||
ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us),
|
||||
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
var clinicalData = await _clinicalFormRepository.Where(x => x.SubjectId == inDto.TrialId).ToListAsync();
|
||||
|
||||
result.ForEach(x =>
|
||||
{
|
||||
x.ClinicalCount = clinicalData.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Count();
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取表单列表
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<GetClinicalQuestionAnswerListOutDto> GetClinicalQuestionFormList(GetClinicalQuestionAnswerListInDto inDto)
|
||||
{
|
||||
var result = new GetClinicalQuestionAnswerListOutDto();
|
||||
result.AnswerList = new List<Dictionary<string, string>>();
|
||||
result.QuestionList=await _trialClinicalQuestionRepository.Where(x=>x.TrialClinicalId==inDto.ClinicalDataTrialSetId
|
||||
&&x.ClinicalQuestionType!= ReadingQestionType.Group
|
||||
&& x.ClinicalQuestionType != ReadingQestionType.Table).OrderBy(x=>x.ShowOrder)
|
||||
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
var answers = await _clinicalQuestionAnswerRepository.Where(x => x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
|
||||
.Select(x => new
|
||||
{
|
||||
x.ClinicalFormId,
|
||||
x.ClinicalForm.CheckDate,
|
||||
x.QuestionId,
|
||||
x.Answer
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
var ClinicalFormIds = answers.OrderBy(x=>x.CheckDate).Select(x => x.ClinicalFormId).Distinct().ToList();
|
||||
ClinicalFormIds.ForEach(x =>
|
||||
{
|
||||
var dic = answers.Where(y => y.ClinicalFormId == x).ToDictionary(x => x.QuestionId.ToString(), x => x.Answer);
|
||||
dic.Add("clinicalFormId", x.ToString());
|
||||
result.AnswerList.Add(dic);
|
||||
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取临床数据表单问题
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<GetClinicalFormInfoOutDto> GetClinicalFormInfo(GetClinicalFormInfoInDto inDto)
|
||||
{
|
||||
var formInfo = await _clinicalFormRepository.Where(x => x.Id == inDto.ClinicalFormId).FirstNotNullAsync();
|
||||
|
||||
var questionAnswer = await _clinicalQuestionAnswerRepository.Where(x => x.ClinicalFormId == inDto.ClinicalFormId).Select(x => new ClinicalFormQuestionAnswer
|
||||
{
|
||||
QuestionId = x.QuestionId,
|
||||
Answer = x.Answer
|
||||
}).ToListAsync();
|
||||
|
||||
var tableAnswer = await _clinicalTableAnswerRepository.Where(x => x.ClinicalFormId == inDto.ClinicalFormId).Select(x => new ClinicalFormTableQuestionAnswer
|
||||
{
|
||||
TableQuestionId = x.TableQuestionId,
|
||||
Answer = x.Answer,
|
||||
QuestionId = x.QuestionId,
|
||||
RowIndex = x.ClinicalAnswerRowInfo.RowIndex
|
||||
}).ToListAsync();
|
||||
|
||||
var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId)
|
||||
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
var tableQuestions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId)
|
||||
.ProjectTo<ClinicalTablePreviewDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
|
||||
var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList();
|
||||
|
||||
result.ForEach(x =>
|
||||
{
|
||||
_iClinicalQuestionService.FindChildQuestion(x, questions, tableQuestions, questionAnswer, tableAnswer);
|
||||
});
|
||||
|
||||
return new GetClinicalFormInfoOutDto()
|
||||
{
|
||||
|
||||
Question = result
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 提交临床数据表单
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task SubmitClinicalForm(SubmitClinicalFormInDto inDto)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -61,7 +61,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
result.ForEach(x =>
|
||||
{
|
||||
this.FindChildQuestion(x, questions, tableQuestions);
|
||||
this.FindChildQuestion(x, questions, tableQuestions, new List<ClinicalFormQuestionAnswer>(), new List<ClinicalFormTableQuestionAnswer>());
|
||||
});
|
||||
|
||||
return (result, true);
|
||||
|
@ -87,7 +87,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
result.ForEach(x =>
|
||||
{
|
||||
this.FindChildQuestion(x, questions, tableQuestions);
|
||||
this.FindChildQuestion(x, questions, tableQuestions,new List<ClinicalFormQuestionAnswer> (),new List<ClinicalFormTableQuestionAnswer>());
|
||||
});
|
||||
|
||||
return (result, true);
|
||||
|
@ -101,14 +101,27 @@ namespace IRaCIS.Core.Application.Service
|
|||
/// <param name="item"></param>
|
||||
/// <param name="questions"></param>
|
||||
/// <param name="tableQuestions"></param>
|
||||
public void FindChildQuestion(ClinicalQuestionPreviewDto item, List<ClinicalQuestionPreviewDto> questions, List<ClinicalTablePreviewDto> tableQuestions)
|
||||
public void FindChildQuestion(ClinicalQuestionPreviewDto item, List<ClinicalQuestionPreviewDto> questions, List<ClinicalTablePreviewDto> tableQuestions,List<ClinicalFormQuestionAnswer> answers, List<ClinicalFormTableQuestionAnswer> tableAnswers)
|
||||
{
|
||||
item.Childrens = questions.Where(x => (x.ParentId == item.Id)||(x.GroupId== item.Id&&x.ParentId==null)).ToList();
|
||||
item.Answer = answers.Where(x => x.QuestionId == item.Id).Select(x => x.Answer).FirstOrDefault()??string.Empty;
|
||||
|
||||
item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).ToList();
|
||||
var tableIndexs = tableAnswers.Where(x => x.QuestionId == item.Id).Select(x => x.RowIndex).Distinct().OrderBy(x=>x).ToList();
|
||||
|
||||
item.TableAnswer = new List<Dictionary<Guid, string>>();
|
||||
|
||||
tableIndexs.ForEach(x =>
|
||||
{
|
||||
item.TableAnswer.Add(tableAnswers.Where(y => y.RowIndex == x).ToDictionary(y => y.TableQuestionId, y => y.Answer));
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).OrderBy(x=>x.ShowOrder).ToList();
|
||||
|
||||
item.Childrens.ForEach(x => {
|
||||
this.FindChildQuestion(x, questions, tableQuestions);
|
||||
this.FindChildQuestion(x, questions, tableQuestions, answers, tableAnswers);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -123,7 +136,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
public async Task<PageOutput<TrialClinicalQuestionDto>> GetTrialClinicalQuestionList(TrialClinicalQuestionQuery inQuery)
|
||||
{
|
||||
|
||||
var trialClinicalQuestionQueryable = _trialClinicalQuestionRepository
|
||||
var trialClinicalQuestionQueryable = _trialClinicalQuestionRepository.Where(x=>x.TrialClinicalId==inQuery.TrialClinicalId)
|
||||
.WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName))
|
||||
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider);
|
||||
var pageList = await trialClinicalQuestionQueryable
|
||||
|
@ -415,10 +428,10 @@ namespace IRaCIS.Core.Application.Service
|
|||
}).ToListAsync();
|
||||
|
||||
var newTrialQuestionAll = await _systemClinicalQuestionRepository.Where(x => systemClinicalId.Contains(x.SystemClinicalId))
|
||||
.ProjectTo<TrialClinicalQuestion>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
.ProjectTo<TrialClinicalQuestionSynchronize>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
var newTrialTableQuestionAll = await _systemClinicalTableQuestionRepository.Where(x => systemClinicalId.Contains(x.SystemClinicalId))
|
||||
.ProjectTo<TrialClinicalTableQuestion>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
.ProjectTo<TrialClinicalTableQuestionSynchronize>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
|
||||
List<TrialClinicalQuestion> addTrialDataList = new List<TrialClinicalQuestion>();
|
||||
|
@ -430,7 +443,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
x => x.TrialQuestionId
|
||||
);
|
||||
|
||||
var newTrialQuestionList = newTrialQuestionAll.Where(x => x.SystemClinicalQuestionId == item.SystemClinicalId).ToList();
|
||||
var newTrialQuestionList = newTrialQuestionAll.Where(x => x.SystemClinicalId == item.SystemClinicalId).ToList();
|
||||
newTrialQuestionList.ForEach(x =>
|
||||
{
|
||||
if (questionRelation.ContainsKey(x.Id))
|
||||
|
@ -469,7 +482,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
x => x.TrialQuestionId
|
||||
);
|
||||
|
||||
var newTrialTableQuestionList = newTrialTableQuestionAll.Where(x => x.TrialClinicalId == item.TrialClinicalId)
|
||||
var newTrialTableQuestionList = newTrialTableQuestionAll.Where(x => x.SystemClinicalId == item.SystemClinicalId)
|
||||
.ToList();
|
||||
|
||||
|
||||
|
@ -504,6 +517,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
await _trialClinicalQuestionRepository.AddRangeAsync(addTrialDataList);
|
||||
await _trialClinicalTableQuestionRepository.BatchDeleteNoTrackingAsync(x => trialClinicalId.Contains(x.TrialClinicalId) );
|
||||
await _trialClinicalTableQuestionRepository.AddRangeAsync(addTrialTableList);
|
||||
await _trialClinicalQuestionRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||
{
|
||||
public class GetCRCSubjectClinicalInDto
|
||||
{
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
public Guid TrialId { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class GetCRCSubjectClinicalOutDto
|
||||
{
|
||||
public Guid ClinicalDataTrialSetId { get; set; }
|
||||
|
||||
public string ClinicalDataSetName { get; set; }
|
||||
|
||||
public int ClinicalCount { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public class GetClinicalQuestionAnswerListInDto
|
||||
{
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
public Guid ClinicalDataTrialSetId { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class GetClinicalQuestionAnswerListOutDto
|
||||
{
|
||||
public List<TrialClinicalQuestionDto> QuestionList { get; set; }
|
||||
|
||||
public List<Dictionary<string, string>> AnswerList { get; set; }
|
||||
}
|
||||
|
||||
public class GetClinicalFormInfoInDto
|
||||
{
|
||||
public Guid ClinicalFormId { get; set; }
|
||||
}
|
||||
|
||||
public class GetClinicalFormInfoOutDto
|
||||
{
|
||||
public List<ClinicalQuestionPreviewDto> Question { get; set; }
|
||||
}
|
||||
|
||||
public class ClinicalFormQuestionAnswer
|
||||
{
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
public string Answer { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class ClinicalFormTableQuestionAnswer
|
||||
{
|
||||
public Guid TableQuestionId { get; set; }
|
||||
|
||||
public int RowIndex { get; set; }
|
||||
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
public string Answer { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class SubmitClinicalFormInDto
|
||||
{
|
||||
public Guid? ClinicalFormId { get; set; }
|
||||
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
public Guid ClinicalDataTrialSetId { get; set; }
|
||||
|
||||
|
||||
public List<ClinicalFormQuestionAnswer> QuestionAnswers { get; set; }
|
||||
|
||||
public List<List<ClinicalFormQuestionAnswer>> TableQuestionAnswer { get; set; }
|
||||
}
|
||||
}
|
|
@ -37,6 +37,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
/// </summary>
|
||||
public Guid SystemClinicalId { get; set; }
|
||||
|
||||
public string Answer { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 子问题
|
||||
/// </summary>
|
||||
|
@ -46,11 +48,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
/// 表格问题
|
||||
/// </summary>
|
||||
public List<ClinicalTablePreviewDto> TableQuestions { get; set; } = new List<ClinicalTablePreviewDto>();
|
||||
|
||||
public List<Dictionary<Guid,string>> TableAnswer { get; set; }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 系统临床数据问题
|
||||
/// 项目临床数据问题
|
||||
/// </summary>
|
||||
public class ClinicalTablePreviewDto : TrialClinicalTableQuestionDto
|
||||
{
|
||||
|
@ -399,6 +403,24 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
|
||||
#region 同步临床数据
|
||||
|
||||
|
||||
public class TrialClinicalTableQuestionSynchronize : TrialClinicalTableQuestion
|
||||
{
|
||||
/// <summary>
|
||||
/// 系统临床数据Id
|
||||
/// </summary>
|
||||
public Guid SystemClinicalId { get; set; }
|
||||
}
|
||||
|
||||
public class TrialClinicalQuestionSynchronize : TrialClinicalQuestion
|
||||
{
|
||||
/// <summary>
|
||||
/// 系统临床数据Id
|
||||
/// </summary>
|
||||
public Guid SystemClinicalId { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class SynchronizationQuestionDto
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
@ -17,8 +17,8 @@ namespace IRaCIS.Core.Application.Interfaces
|
|||
|
||||
Task SynchronizationQuestion(List<SynchronizationQuestionDto> inDto);
|
||||
|
||||
|
||||
|
||||
void FindChildQuestion(ClinicalQuestionPreviewDto item, List<ClinicalQuestionPreviewDto> questions, List<ClinicalTablePreviewDto> tableQuestions, List<ClinicalFormQuestionAnswer> answers, List<ClinicalFormTableQuestionAnswer> tableAnswers);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -31,10 +31,16 @@ namespace IRaCIS.Core.Application.Service
|
|||
CreateMap<TrialClinicalTableQuestionDto, TrialClinicalTableQuestion>();
|
||||
|
||||
CreateMap<SystemClinicalQuestion, TrialClinicalQuestion>()
|
||||
.ForMember(d => d.SystemClinicalQuestionId, u => u.MapFrom(s => s.Id));
|
||||
.ForMember(d => d.SystemClinicalQuestionId, opt => opt.MapFrom(src => src.Id));
|
||||
|
||||
CreateMap<SystemClinicalQuestion, TrialClinicalQuestionSynchronize>()
|
||||
.ForMember(d => d.SystemClinicalQuestionId, opt => opt.MapFrom(src => src.Id));
|
||||
|
||||
|
||||
CreateMap<SystemClinicalTableQuestion, TrialClinicalTableQuestion>()
|
||||
.ForMember(d => d.SystemTableQuestionId, u => u.MapFrom(s => s.Id));
|
||||
CreateMap<SystemClinicalTableQuestion, TrialClinicalTableQuestionSynchronize>()
|
||||
.ForMember(d => d.SystemTableQuestionId, opt => opt.MapFrom(src => src.Id));
|
||||
|
||||
|
||||
// 预览
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
//--------------------------------------------------------------------
|
||||
// 此代码由T4模板自动生成 byzhouhang 20210918
|
||||
// 生成时间 2023-06-26 11:01:54
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
///<summary>
|
||||
///ClinicalAnswerRowInfo
|
||||
///</summary>
|
||||
[Table("ClinicalAnswerRowInfo")]
|
||||
public class ClinicalAnswerRowInfo : Entity, IAuditAdd
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 受试者Id
|
||||
/// </summary>
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 表单Id
|
||||
/// </summary>
|
||||
public Guid ClinicalFormId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建日期
|
||||
/// </summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public Guid CreateUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 问题Id
|
||||
/// </summary>
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RowIndex
|
||||
/// </summary>
|
||||
public int RowIndex { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
//--------------------------------------------------------------------
|
||||
// 此代码由T4模板自动生成 byzhouhang 20210918
|
||||
// 生成时间 2023-06-26 11:39:53
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
///<summary>
|
||||
///ClinicalForm
|
||||
///</summary>
|
||||
[Table("ClinicalForm")]
|
||||
public class ClinicalForm : Entity, IAuditAdd
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 受试者Id
|
||||
/// </summary>
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 检查日期
|
||||
/// </summary>
|
||||
public DateTime CheckDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建日期
|
||||
/// </summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
public Guid CreateUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ClinicalDataTrialSetId
|
||||
/// </summary>
|
||||
public Guid ClinicalDataTrialSetId { get; set; }
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
|
||||
//--------------------------------------------------------------------
|
||||
// 此代码由T4模板自动生成 byzhouhang 20210918
|
||||
// 生成时间 2023-06-26 10:58:41
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
///<summary>
|
||||
///ClinicalQuestionAnswer
|
||||
///</summary>
|
||||
[Table("ClinicalQuestionAnswer")]
|
||||
public class ClinicalQuestionAnswer : Entity, IAuditAdd
|
||||
{
|
||||
/// <summary>
|
||||
/// 受试者Id
|
||||
/// </summary>
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 表单Id
|
||||
/// </summary>
|
||||
public Guid ClinicalFormId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建日期
|
||||
/// </summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public Guid CreateUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 问题Id
|
||||
/// </summary>
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Answer
|
||||
/// </summary>
|
||||
public string Answer { get; set; }
|
||||
|
||||
public Guid ClinicalDataTrialSetId { get; set; }
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
[ForeignKey("ClinicalFormId")]
|
||||
public ClinicalForm ClinicalForm { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
|
||||
//--------------------------------------------------------------------
|
||||
// 此代码由T4模板自动生成 byzhouhang 20210918
|
||||
// 生成时间 2023-06-26 11:03:26
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
///<summary>
|
||||
///ClinicalTableAnswer
|
||||
///</summary>
|
||||
[Table("ClinicalTableAnswer")]
|
||||
public class ClinicalTableAnswer : Entity, IAuditAdd
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 受试者Id
|
||||
/// </summary>
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 表单Id
|
||||
/// </summary>
|
||||
public Guid ClinicalFormId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建日期
|
||||
/// </summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public Guid CreateUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 问题Id
|
||||
/// </summary>
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 答案行的Id
|
||||
/// </summary>
|
||||
public Guid RowId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 答案
|
||||
/// </summary>
|
||||
public string Answer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 表格问题id
|
||||
/// </summary>
|
||||
public Guid TableQuestionId { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
[ForeignKey("RowId")]
|
||||
public ClinicalAnswerRowInfo ClinicalAnswerRowInfo { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -85,4 +85,9 @@ WHERE
|
|||
(i.is_primary_key = 1 OR i.is_unique_constraint = 1)
|
||||
AND OBJECTPROPERTY(i.object_id, 'IsSystemTable') = 0
|
||||
AND OBJECTPROPERTY(i.object_id, 'IsMSShipped') = 0
|
||||
AND OBJECT_NAME(i.object_id) <> 'sysdiagrams';
|
||||
AND OBJECT_NAME(i.object_id) <> 'sysdiagrams';
|
||||
|
||||
|
||||
|
||||
---------------------------维护临床数据是否应用 之前默认都是应用 现在添加字段 把状态都改为应用
|
||||
update ClinicalDataTrialSet set IsApply=1
|
|
@ -411,6 +411,15 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
public virtual DbSet<SystemClinicalTableQuestion> SystemClinicalTableQuestion { get; set; }
|
||||
|
||||
public virtual DbSet<TrialClinicalTableQuestion> TrialClinicalTableQuestion { get; set; }
|
||||
|
||||
public virtual DbSet<ClinicalQuestionAnswer> ClinicalQuestionAnswer { get; set; }
|
||||
|
||||
public virtual DbSet<ClinicalAnswerRowInfo> ClinicalAnswerRowInfo { get; set; }
|
||||
|
||||
public virtual DbSet<ClinicalTableAnswer> ClinicalTableAnswer { get; set; }
|
||||
|
||||
|
||||
public virtual DbSet<ClinicalForm> ClinicalForm { get; set; }
|
||||
#endregion
|
||||
|
||||
|
||||
|
|
|
@ -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 = "SystemClinicalTableQuestion";
|
||||
public static readonly string TableName = "ClinicalForm";
|
||||
//具体文件里面 例如service 可以配置是否分页
|
||||
}
|
||||
#>
|
||||
|
|
Loading…
Reference in New Issue