修改字典枚举

Uat_Study
he 2023-02-07 10:45:07 +08:00
parent ebd9596a5f
commit 707e55fe31
2 changed files with 99 additions and 11 deletions

View File

@ -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)

View File

@ -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()
{