修改字典枚举
parent
ebd9596a5f
commit
707e55fe31
|
@ -21,14 +21,20 @@ namespace IRaCIS.Application.Services
|
|||
private readonly IRepository<Doctor> _doctorRepository;
|
||||
private readonly IRepository<Trial> _trialRepository;
|
||||
private readonly IRepository<SystemCriterionDictionaryCode> _systemCriterionDictionaryCodeRepository;
|
||||
private readonly IRepository<TrialCriterionDictionaryCode> _trialCriterionDictionaryCode;
|
||||
private readonly IRepository<ReadingCriterionDictionary> _readingCriterionDictionaryRepository;
|
||||
private readonly IRepository<ReadingQuestionCriterionSystem> _readingQuestionCriterionSystem;
|
||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrial;
|
||||
private readonly IReadingQuestionService _readingQuestionService;
|
||||
|
||||
public DictionaryService(IRepository<Dictionary> sysDicRepository, IRepository<DoctorDictionary> doctorDictionaryRepository, IRepository<TrialDictionary> trialDictionaryRepository,
|
||||
IRepository<Doctor> doctorRepository, IRepository<Trial> trialRepository,
|
||||
|
||||
IRepository<SystemCriterionDictionaryCode> systemCriterionDictionaryCodeRepository,
|
||||
IRepository<TrialCriterionDictionaryCode> trialCriterionDictionaryCode,
|
||||
IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository,
|
||||
IRepository<ReadingQuestionCriterionSystem> readingQuestionCriterionSystem,
|
||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrial,
|
||||
IReadingQuestionService readingQuestionService
|
||||
|
||||
|
||||
|
@ -40,7 +46,10 @@ namespace IRaCIS.Application.Services
|
|||
_doctorRepository = doctorRepository;
|
||||
_trialRepository = trialRepository;
|
||||
this._systemCriterionDictionaryCodeRepository = systemCriterionDictionaryCodeRepository;
|
||||
this._trialCriterionDictionaryCode = trialCriterionDictionaryCode;
|
||||
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
||||
this._readingQuestionCriterionSystem = readingQuestionCriterionSystem;
|
||||
this._readingQuestionCriterionTrial = readingQuestionCriterionTrial;
|
||||
this._readingQuestionService = readingQuestionService;
|
||||
}
|
||||
|
||||
|
@ -276,6 +285,31 @@ namespace IRaCIS.Application.Services
|
|||
}
|
||||
else
|
||||
{
|
||||
List<string> selectCode = new List<string>();
|
||||
|
||||
var isSystemCriterion = await _readingQuestionCriterionSystem.AnyAsync(x => x.Id == inDto.ReadingCriterionId);
|
||||
if (isSystemCriterion)
|
||||
{
|
||||
selectCode = await _systemCriterionDictionaryCodeRepository.Where(x => x.SystemCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
selectCode = await _trialCriterionDictionaryCode.Where(x => x.TrialCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync();
|
||||
}
|
||||
|
||||
|
||||
var criterionCode = await _dicRepository.Where(x => x.ConfigDictionary.Code == "Reading_eCRF_Criterion").Select(x => x.Code).ToListAsync();
|
||||
|
||||
|
||||
foreach (var item in criterionCode)
|
||||
{
|
||||
if (result.ContainsKey(item))
|
||||
{
|
||||
result[item] = new List<BasicDicSelect> ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var criterionDictionList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.ReadingCriterionId).Select(x => new BasicDicSelect()
|
||||
{
|
||||
ChildGroup = x.Dictionary.ChildGroup,
|
||||
|
@ -291,6 +325,8 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
}).ToListAsync();
|
||||
|
||||
criterionDictionList = criterionDictionList.Where(x => selectCode.Contains(x.ParentCode)).ToList();
|
||||
|
||||
var criterionDic = criterionDictionList.GroupBy(x => x.ParentCode).ToDictionary(g => g.Key, g => g.OrderBy(t => t.ShowOrder).ToList());
|
||||
|
||||
foreach (var item in criterionDic)
|
||||
|
@ -326,6 +362,23 @@ namespace IRaCIS.Application.Services
|
|||
}
|
||||
else
|
||||
{
|
||||
List<string> selectCode = await _trialCriterionDictionaryCode.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).Select(x => x.Code).ToListAsync();
|
||||
|
||||
|
||||
var criterionCode = await _dicRepository.Where(x => x.ConfigDictionary.Code == "Reading_eCRF_Criterion").Select(x => x.Code).ToListAsync();
|
||||
|
||||
|
||||
foreach (var item in criterionCode)
|
||||
{
|
||||
if (result.ContainsKey(item))
|
||||
{
|
||||
result[item] = new List<BasicDicSelect>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var criterionDictionList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId).Select(x => new BasicDicSelect()
|
||||
{
|
||||
ChildGroup = x.Dictionary.ChildGroup,
|
||||
|
@ -342,6 +395,8 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
}).ToListAsync();
|
||||
|
||||
criterionDictionList = criterionDictionList.Where(x => selectCode.Contains(x.ParentCode)).ToList();
|
||||
|
||||
var criterionDic = criterionDictionList.GroupBy(x => x.ParentCode).ToDictionary(g => g.Key, g => g.OrderBy(t => t.ShowOrder).ToList());
|
||||
|
||||
foreach (var item in criterionDic)
|
||||
|
|
|
@ -26,6 +26,8 @@ namespace IRaCIS.Core.Application
|
|||
private readonly IRepository<TrialQCQuestion> _trialQCQuestionRepository;
|
||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
||||
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
||||
private readonly IRepository<TrialCriterionDictionaryCode> _trialCriterionDictionaryCode;
|
||||
private readonly IRepository<SystemCriterionDictionaryCode> _systemCriterionDictionaryCode;
|
||||
private readonly IRepository<ReadingQuestionCriterionSystem> _readingQuestionCriterionSystemRepository;
|
||||
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
||||
private readonly IRepository<ReadingCriterionPage> _readingCriterionPageRepository;
|
||||
|
@ -48,6 +50,8 @@ namespace IRaCIS.Core.Application
|
|||
IRepository<TrialQCQuestion> trialQCQuestionRepository,
|
||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
|
||||
IRepository<TrialCriterionDictionaryCode> trialCriterionDictionaryCode,
|
||||
IRepository<SystemCriterionDictionaryCode> systemCriterionDictionaryCode,
|
||||
IRepository<ReadingQuestionCriterionSystem> readingQuestionCriterionSystemRepository,
|
||||
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
|
||||
IRepository<ReadingCriterionPage> readingCriterionPageRepository,
|
||||
|
@ -72,6 +76,8 @@ namespace IRaCIS.Core.Application
|
|||
this._trialQCQuestionRepository = trialQCQuestionRepository;
|
||||
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
|
||||
this._trialCriterionDictionaryCode = trialCriterionDictionaryCode;
|
||||
this._systemCriterionDictionaryCode = systemCriterionDictionaryCode;
|
||||
this._readingQuestionCriterionSystemRepository = readingQuestionCriterionSystemRepository;
|
||||
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
||||
this._provider = provider;
|
||||
|
@ -190,16 +196,7 @@ namespace IRaCIS.Core.Application
|
|||
|
||||
if (trialCriterion.ReadingQuestionCriterionSystemId != null)
|
||||
{
|
||||
await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id);
|
||||
var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value)
|
||||
.ToListAsync();
|
||||
criterionDictionaryList.ForEach(x =>
|
||||
{
|
||||
x.Id = NewId.NextGuid();
|
||||
x.Dictionary = null;
|
||||
x.IsSystemCriterion = false;
|
||||
x.CriterionId = inDto.TrialReadingCriterionId;
|
||||
});
|
||||
|
||||
|
||||
if (trialCriterion.SynchronizeOriginalTime == null)
|
||||
{
|
||||
|
@ -217,6 +214,40 @@ namespace IRaCIS.Core.Application
|
|||
TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
||||
});
|
||||
|
||||
// 同步字典
|
||||
#region 同步字典
|
||||
|
||||
|
||||
|
||||
await _trialCriterionDictionaryCode.BatchDeleteNoTrackingAsync(x => x.TrialCriterionId == trialCriterion.Id);
|
||||
await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id);
|
||||
|
||||
var criterionDictionaryCodeList=await _systemCriterionDictionaryCode.Where(x => x.SystemCriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value)
|
||||
.Select(x=>new TrialCriterionDictionaryCode() {
|
||||
Code=x.Code,
|
||||
TrialCriterionId= trialCriterion.Id,
|
||||
}).ToListAsync();
|
||||
|
||||
criterionDictionaryCodeList.ForEach(x =>
|
||||
{
|
||||
x.Id = NewId.NextGuid();
|
||||
});
|
||||
|
||||
|
||||
var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value)
|
||||
.ToListAsync();
|
||||
criterionDictionaryList.ForEach(x =>
|
||||
{
|
||||
x.Id = NewId.NextGuid();
|
||||
x.Dictionary = null;
|
||||
x.IsSystemCriterion = false;
|
||||
x.CriterionId = inDto.TrialReadingCriterionId;
|
||||
});
|
||||
await _readingCriterionDictionaryRepository.AddRangeAsync(criterionDictionaryList);
|
||||
|
||||
await _trialCriterionDictionaryCode.AddRangeAsync(criterionDictionaryCodeList);
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
var systemCriterion = await _readingQuestionCriterionSystemRepository.Where(x => x.Id == trialCriterion.ReadingQuestionCriterionSystemId).FirstNotNullAsync();
|
||||
|
@ -226,6 +257,8 @@ namespace IRaCIS.Core.Application
|
|||
IsOncologyReading = systemCriterion.IsOncologyReading,
|
||||
IseCRFShowInDicomReading = systemCriterion.IseCRFShowInDicomReading,
|
||||
});
|
||||
|
||||
|
||||
await _readingCriterionDictionaryRepository.SaveChangesAsync();
|
||||
// 清除多余答案 --
|
||||
var questionQuery = _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId).AsQueryable();
|
||||
|
@ -238,7 +271,7 @@ namespace IRaCIS.Core.Application
|
|||
|
||||
|
||||
}
|
||||
await _readingCriterionDictionaryRepository.AddRangeAsync(criterionDictionaryList);
|
||||
|
||||
|
||||
await _readingQuestionCriterionTrialRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue