Compare commits
No commits in common. "cc4d879defba86af042fd435de5556a761fda3b4" and "fc392e869c1af7ca99b184fad7f8d94992835c8a" have entirely different histories.
cc4d879def
...
fc392e869c
|
|
@ -2,22 +2,6 @@
|
||||||
{
|
{
|
||||||
public class TrialExperienceCommand
|
public class TrialExperienceCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 数据类型
|
|
||||||
/// </summary>
|
|
||||||
public ExperienceDataType ExperienceDataType { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 项目Id
|
|
||||||
/// </summary>
|
|
||||||
public Guid? TrialId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 适应症的枚举
|
|
||||||
/// </summary>
|
|
||||||
public int IndicationEnum { get; set; } = -1;
|
|
||||||
|
|
||||||
public Guid? Id { get; set; }
|
public Guid? Id { get; set; }
|
||||||
|
|
||||||
public Guid DoctorId { get; set; }
|
public Guid DoctorId { get; set; }
|
||||||
|
|
@ -51,23 +35,10 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetTrialExperienceListInDto
|
|
||||||
{
|
|
||||||
public Guid DoctorId { get; set; }
|
|
||||||
public Guid? TrialId { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class TrialExperienceListDTO : TrialExperienceCommand
|
public class TrialExperienceListDTO : TrialExperienceCommand
|
||||||
{
|
{
|
||||||
public string Phase { get; set; } = String.Empty;
|
public string Phase { get; set; } = String.Empty;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 阅片标准
|
|
||||||
/// </summary>
|
|
||||||
public CriterionType? CriterionType { get; set; }
|
|
||||||
|
|
||||||
public List<string> EvaluationCriteriaList { get; set; } = new List<string>();
|
public List<string> EvaluationCriteriaList { get; set; } = new List<string>();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,11 +24,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var doctor = await _doctorRepository.Where(o => o.Id == indto.DoctorId)
|
var doctor = await _doctorRepository.Where(o => o.Id == indto.DoctorId)
|
||||||
.ProjectTo<TrialExperienceModel>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
.ProjectTo<TrialExperienceModel>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
||||||
|
|
||||||
trialExperience.ClinicalTrialExperienceList = await GetTrialExperienceList(new GetTrialExperienceListInDto()
|
trialExperience.ClinicalTrialExperienceList = await GetTrialExperienceList(indto.DoctorId);
|
||||||
{
|
|
||||||
DoctorId = indto.DoctorId,
|
|
||||||
TrialId = indto.TrialId,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (doctor != null)
|
if (doctor != null)
|
||||||
{
|
{
|
||||||
|
|
@ -94,41 +90,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return doctorInfo;
|
return doctorInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<List<TrialExperienceListDTO>> GetTrialExperienceList(GetTrialExperienceListInDto inDto)
|
private async Task<List<TrialExperienceListDTO>> GetTrialExperienceList(Guid doctorId)
|
||||||
{
|
{
|
||||||
if (inDto.TrialId == null)
|
var doctorClinicalTrialExperienceList = await _trialExperienceRepository.Where(o => o.DoctorId == doctorId).OrderBy(t => t.CreateTime)
|
||||||
{
|
|
||||||
var doctorClinicalTrialExperienceList = await _trialExperienceRepository
|
|
||||||
.Where(o => o.DoctorId == inDto.DoctorId)
|
|
||||||
.Where(x => x.ExperienceDataType == ExperienceDataType.System)
|
|
||||||
.OrderBy(t => t.CreateTime)
|
|
||||||
.ProjectTo<TrialExperienceListDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<TrialExperienceListDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
return doctorClinicalTrialExperienceList;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 当前项目没有则复制
|
|
||||||
if (!(await _trialExperienceRepository.AnyAsync(x => x.TrialId == inDto.TrialId)))
|
|
||||||
{
|
|
||||||
var trialExperienceList = await _trialExperienceRepository.Where(o => o.DoctorId == inDto.DoctorId)
|
|
||||||
.Where(x => x.ExperienceDataType == ExperienceDataType.System || x.ExperienceDataType == ExperienceDataType.SystemAuto).ToListAsync();
|
|
||||||
foreach (var item in trialExperienceList)
|
|
||||||
{
|
|
||||||
item.Trial = null;
|
|
||||||
item.TrialId = inDto.TrialId;
|
|
||||||
item.ExperienceDataType = ExperienceDataType.Trial;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var doctorClinicalTrialExperienceList = await _trialExperienceRepository
|
|
||||||
.Where(o => o.DoctorId == inDto.DoctorId)
|
|
||||||
.Where(x => x.ExperienceDataType == ExperienceDataType.Trial|| x.ExperienceDataType == ExperienceDataType.TrialAuto)
|
|
||||||
.Where(x => x.TrialId == inDto.TrialId.Value)
|
|
||||||
.OrderBy(t => t.CreateTime)
|
|
||||||
.ProjectTo<TrialExperienceListDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
|
||||||
return doctorClinicalTrialExperienceList;
|
return doctorClinicalTrialExperienceList;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
/// <summary> 添加或更新医生临床经验列表项</summary>
|
/// <summary> 添加或更新医生临床经验列表项</summary>
|
||||||
|
|
|
||||||
|
|
@ -95,12 +95,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(d => d.RealName, u => u.MapFrom(user => string.IsNullOrEmpty(user.FirstName) ? user.LastName : user.LastName + " / " + user.FirstName));
|
.ForMember(d => d.RealName, u => u.MapFrom(user => string.IsNullOrEmpty(user.FirstName) ? user.LastName : user.LastName + " / " + user.FirstName));
|
||||||
|
|
||||||
CreateMap<TrialExperience, TrialExperienceListDTO>()
|
CreateMap<TrialExperience, TrialExperienceListDTO>()
|
||||||
.ForMember(x=>x.VisitReadingCount, u => u.MapFrom(t => (t.ExperienceDataType==ExperienceDataType.TrialAuto||t.ExperienceDataType==ExperienceDataType.SystemAuto)?
|
|
||||||
|
|
||||||
// 统计数量
|
|
||||||
t.Trial.VisitTaskList.Where(x=>x.ReadingTaskState==ReadingTaskState.HaveSigned&&x.TaskState== TaskState.Effect&&x.DoctorUser.DoctorId==t.DoctorId &&x.TrialReadingCriterion.CriterionType==t.CriterionType).Count():
|
|
||||||
t.VisitReadingCount
|
|
||||||
))
|
|
||||||
.ForMember(d => d.Phase, u => u.MapFrom(t => t.Phase.Value))
|
.ForMember(d => d.Phase, u => u.MapFrom(t => t.Phase.Value))
|
||||||
.ForMember(d => d.EvaluationCriteriaList, u => u.MapFrom(t => t.ExperienceCriteriaList.Select(t => t.EvaluationCriteria.Value)))
|
.ForMember(d => d.EvaluationCriteriaList, u => u.MapFrom(t => t.ExperienceCriteriaList.Select(t => t.EvaluationCriteria.Value)))
|
||||||
.ForMember(d => d.EvaluationCriteriaIdList, u => u.MapFrom(t => t.ExperienceCriteriaList.Select(t => t.EvaluationCriteriaId)));
|
.ForMember(d => d.EvaluationCriteriaIdList, u => u.MapFrom(t => t.ExperienceCriteriaList.Select(t => t.EvaluationCriteriaId)));
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
using DocumentFormat.OpenXml.Vml.Spreadsheet;
|
using IRaCIS.Core.Application.Filter;
|
||||||
using IRaCIS.Core.Application.Filter;
|
|
||||||
using IRaCIS.Core.Application.Service.WorkLoad.DTO;
|
using IRaCIS.Core.Application.Service.WorkLoad.DTO;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infra.EFCore.Common;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
|
@ -18,13 +16,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
IRepository<Workload> _workloadRepository,
|
IRepository<Workload> _workloadRepository,
|
||||||
IRepository<User> _userRepository,
|
IRepository<User> _userRepository,
|
||||||
IRepository<TrialUser> _trialUserRepository,
|
IRepository<TrialUser> _trialUserRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> _ReadingQuestionCriterionTrialRepository,
|
|
||||||
|
|
||||||
IRepository<TrialExperience> _trialExperienceRepository,
|
|
||||||
|
|
||||||
IRepository<Dictionary> _dictionaryRepository,
|
|
||||||
|
|
||||||
IRepository<TrialExperienceCriteria> _trialExperienceCriteriaRepository,
|
|
||||||
IMailVerificationService _mailVerificationService, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IEnrollService
|
IMailVerificationService _mailVerificationService, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IEnrollService
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -386,16 +377,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return ResponseOutput.NotOk(string.Join(',', _localizer["Enroll_EmailFormat"], errorList.Select(c => c.LastName + " / " + c.FirstName)));
|
return ResponseOutput.NotOk(string.Join(',', _localizer["Enroll_EmailFormat"], errorList.Select(c => c.LastName + " / " + c.FirstName)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var readingQuestionCriterionTrial = await _ReadingQuestionCriterionTrialRepository.Where(x => x.TrialId == confirmReviewerCommand.TrialId && x.IsConfirm).ToListAsync();
|
|
||||||
|
|
||||||
|
|
||||||
List<TrialExperience> trialExperienceList = new List<TrialExperience>();
|
|
||||||
// 获取标准字典
|
|
||||||
|
|
||||||
var criterionTypeList = await _dictionaryRepository.Where(x => x.Parent.Code == "CriterionType").ToListAsync();
|
|
||||||
|
|
||||||
if (confirmReviewerCommand.ConfirmState == 1) //确认入组
|
if (confirmReviewerCommand.ConfirmState == 1) //确认入组
|
||||||
{
|
{
|
||||||
foreach (var intoGroupItem in intoGroupList)
|
foreach (var intoGroupItem in intoGroupList)
|
||||||
|
|
@ -431,9 +412,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
intoGroupItem.EnrollStatus = EnrollStatus.ConfirmIntoGroup;
|
intoGroupItem.EnrollStatus = EnrollStatus.ConfirmIntoGroup;
|
||||||
intoGroupItem.EnrollTime = DateTime.Now;
|
intoGroupItem.EnrollTime = DateTime.Now;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
|
|
@ -444,50 +422,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<ExperienceDataType> dataTypes = new List<ExperienceDataType>()
|
|
||||||
{
|
|
||||||
ExperienceDataType.TrialAuto,
|
|
||||||
ExperienceDataType.SystemAuto,
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// 添加临床试验经历
|
|
||||||
if (trial.TrialType == TrialType.OfficialTrial)
|
|
||||||
{
|
|
||||||
foreach (var doctorId in confirmReviewerCommand.DoctorIdArray)
|
|
||||||
{
|
|
||||||
foreach (var item in readingQuestionCriterionTrial)
|
|
||||||
{
|
|
||||||
foreach (var dataType in dataTypes)
|
|
||||||
{
|
|
||||||
trialExperienceList.Add(new TrialExperience()
|
|
||||||
{
|
|
||||||
CriterionType = item.CriterionType,
|
|
||||||
DoctorId = doctorId,
|
|
||||||
PhaseId = trial.PhaseId,
|
|
||||||
StartTime = DateTime.Now,
|
|
||||||
IndicationEnum = trial.IndicationEnum,
|
|
||||||
ExperienceDataType = dataType,
|
|
||||||
TrialId = trial.Id,
|
|
||||||
VisitReadingCount = 0,
|
|
||||||
ExperienceCriteriaList = new List<TrialExperienceCriteria>() {
|
|
||||||
|
|
||||||
new TrialExperienceCriteria()
|
|
||||||
{
|
|
||||||
EvaluationCriteriaId=criterionTypeList.Where(x=>x.Code==item.CriterionType.GetEnumInt()).Select(x=>x.Id).FirstOrDefault()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await _trialExperienceRepository.AddRangeAsync(trialExperienceList);
|
|
||||||
await _trialExperienceRepository.SaveChangesAsync();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (confirmReviewerCommand.ConfirmState == 0)//回退上一步
|
else if (confirmReviewerCommand.ConfirmState == 0)//回退上一步
|
||||||
{
|
{
|
||||||
|
|
@ -510,9 +444,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await _enrollRepository.SaveChangesAsync();
|
await _enrollRepository.SaveChangesAsync();
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,8 @@ namespace IRaCIS.Core.Domain.Models;
|
||||||
[Table("TrialExperience")]
|
[Table("TrialExperience")]
|
||||||
public partial class TrialExperience : BaseFullAuditEntity
|
public partial class TrialExperience : BaseFullAuditEntity
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region µ¼º½ÊôÐÔ
|
#region µ¼º½ÊôÐÔ
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
[ForeignKey("TrialId")]
|
|
||||||
public Trial? Trial { get; set; }
|
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<TrialExperienceCriteria> ExperienceCriteriaList { get; set; }
|
public List<TrialExperienceCriteria> ExperienceCriteriaList { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -67,22 +59,17 @@ public partial class TrialExperience : BaseFullAuditEntity
|
||||||
public enum ExperienceDataType
|
public enum ExperienceDataType
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统手动添加
|
/// 系统
|
||||||
/// </summary>
|
/// </summary>
|
||||||
System = 0,
|
System = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 项目手动添加或者同系统复制过来的
|
/// 项目
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Trial=1,
|
Trial=1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 项目自动添加
|
/// 自动添加
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TrialAuto = 2,
|
Auto = 2,
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 系统自动添加
|
|
||||||
/// </summary>
|
|
||||||
SystemAuto = 3,
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue