diff --git a/src/Shentun.WebPeis.Application.Contracts/Asbitems/BasicAsbitemDto.cs b/src/Shentun.WebPeis.Application.Contracts/Asbitems/BasicAsbitemDto.cs new file mode 100644 index 0000000..c5ea968 --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/Asbitems/BasicAsbitemDto.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.Asbitems +{ + public class BasicAsbitemDto + { + /// + /// 编号 + /// + public Guid AsbitemId { get; set; } + + /// + /// 名称 + /// + public string AsbitemName { get; set; } = null!; + + /// + /// 简称 + /// + public string? ShortName { get; set; } + public string SimpleCode { get; set; } + + + public int DisplayOrder { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/CreateDiseaseRiskLevelAnswerDto.cs b/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/CreateDiseaseRiskLevelAnswerDto.cs new file mode 100644 index 0000000..412caa2 --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/CreateDiseaseRiskLevelAnswerDto.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.DiseaseRiskLevels +{ + public class CreateDiseaseRiskLevelAnswerDto + { + /// + /// 疾病风险级别ID + /// + public Guid DiseaseRiskLevelId { get; set; } + + /// + /// 问卷答案ID 集合 + /// + public List QuestionAnswerIds { get; set; } = new List(); + + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/CreateDiseaseRiskLevelAsbitemDto.cs b/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/CreateDiseaseRiskLevelAsbitemDto.cs new file mode 100644 index 0000000..2ee311c --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/CreateDiseaseRiskLevelAsbitemDto.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.DiseaseRiskLevels +{ + public class CreateDiseaseRiskLevelAsbitemDto + { + /// + /// 疾病风险级别ID + /// + public Guid DiseaseRiskLevelId { get; set; } + + public List Details { get; set; } = new List(); + + } + + public class CreateDiseaseRiskLevelAsbitemDetail + { + /// + /// 组合项目ID + /// + + public Guid AsbitemId { get; set; } + /// + /// 推荐组合项目级别 1-一级推荐,2-2级推荐,3-3级推荐 + /// + + public short AsbitemRecommendLevelId { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/DiseaseRiskLevelAnswerDto.cs b/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/DiseaseRiskLevelAnswerDto.cs new file mode 100644 index 0000000..fef45cf --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/DiseaseRiskLevelAnswerDto.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.DiseaseRiskLevels +{ + public class DiseaseRiskLevelAnswerDto + { + + /// + /// 疾病风险疾病ID + /// + public Guid DiseaseRiskLevelId { get; set; } + + /// + /// 问卷答案ID + /// + public Guid QuestionAnswerId { get; set; } + + /// + /// 问卷答案名称 + /// + public string QuestionAnswerName { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/DiseaseRiskLevelAsbitemDto.cs b/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/DiseaseRiskLevelAsbitemDto.cs new file mode 100644 index 0000000..88762f3 --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/DiseaseRiskLevelAsbitemDto.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.DiseaseRiskLevels +{ + public class DiseaseRiskLevelAsbitemDto + { + /// + /// 疾病风险级别ID + /// + public Guid DiseaseRiskLevelId { get; set; } + /// + /// 组合项目ID + /// + public Guid AsbitemId { get; set; } + /// + /// 组合项目名称 + /// + public string AsbitemName { get; set; } + + + + } +} diff --git a/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs b/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs index 230fe75..5599e01 100644 --- a/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs +++ b/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs @@ -61,7 +61,7 @@ namespace Shentun.WebPeis.Asbitems DiseaseScreeningTypeId = CheckTypeFlag.Radiology.ToString(),DiseaseScreeningTypeName = "放射",DisplayOrder = 4*1000} }; - var diseaseScreeningTypes = (await _diseaseScreeningTypeRepository.GetListAsync()).OrderBy(o=>o.DisplayOrder).ToList(); + var diseaseScreeningTypes = (await _diseaseScreeningTypeRepository.GetListAsync()).OrderBy(o => o.DisplayOrder).ToList(); diseaseScreeningTypes.ForEach(o => { diseaseScreeningTypeAsbitemDtos.Add(new DiseaseScreeningTypeAsbitemDto() @@ -76,7 +76,7 @@ namespace Shentun.WebPeis.Asbitems var diseaseScreeningTypeAsbitems = new List(); foreach (var asbitem in asbitems) { - var diseaseScreeningTypeAsbitem = new DiseaseScreeningTypeAsbitem() + var diseaseScreeningTypeAsbitem = new DiseaseScreeningTypeAsbitem() { AsbitemId = asbitem.AsbitemId, AsbitemName = asbitem.AsbitemName, @@ -99,7 +99,7 @@ namespace Shentun.WebPeis.Asbitems itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).Single(); asbitem.ItemTypeId = itemType.ItemTypeId; } - if(string.IsNullOrWhiteSpace(diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId)) + if (string.IsNullOrWhiteSpace(diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId)) { diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId = itemType.CheckTypeFlag.ToString(); } @@ -107,14 +107,37 @@ namespace Shentun.WebPeis.Asbitems } //设置检查类别对应的组合项目 - foreach(var diseaseScreeningTypeAsbitemDto in diseaseScreeningTypeAsbitemDtos) + foreach (var diseaseScreeningTypeAsbitemDto in diseaseScreeningTypeAsbitemDtos) { - diseaseScreeningTypeAsbitemDto.Asbitems = diseaseScreeningTypeAsbitems.Where(o=> + diseaseScreeningTypeAsbitemDto.Asbitems = diseaseScreeningTypeAsbitems.Where(o => o.DiseaseScreeningTypeId == diseaseScreeningTypeAsbitemDto.DiseaseScreeningTypeId).ToList(); } return diseaseScreeningTypeAsbitemDtos; } + /// + /// 获取组合项目列表 + /// + /// + [HttpPost("api/app/Asbitem/GetBasicList")] + public async Task> GetBasicListAsync() + { + + var query = await _repository.GetQueryableAsync(); + + + var entdto = query.Select(s => new BasicAsbitemDto + { + AsbitemId = s.AsbitemId, + AsbitemName = s.AsbitemName, + DisplayOrder = s.DisplayOrder, + ShortName = s.ShortName, + SimpleCode = s.SimpleCode + }).OrderBy(o => o.DisplayOrder).ToList(); + + return entdto; + } + } } diff --git a/src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs b/src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs index 4ce6720..fe5bc3c 100644 --- a/src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs +++ b/src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs @@ -17,21 +17,33 @@ namespace Shentun.WebPeis.DiseaseRiskLevels /// [ApiExplorerSettings(GroupName = "Work")] [Authorize] - public class DiseaseRiskLevelAppService:ApplicationService + public class DiseaseRiskLevelAppService : ApplicationService { private readonly IRepository _diseaseRiskLevelRepository; + private readonly IRepository _diseaseRiskLevelAnswerRepository; + private readonly IRepository _diseaseRiskLevelAsbitemRepository; + private readonly IRepository _questionAnswerRepository; + private readonly IRepository _asbitemRepository; private readonly DiseaseRiskLevelManager _diseaseRiskLevelManager; private readonly CacheService _cacheService; public DiseaseRiskLevelAppService( IRepository diseaseRiskLevelRepository, DiseaseRiskLevelManager diseaseRiskLevelManager, - CacheService cacheService) + CacheService cacheService, + IRepository diseaseRiskLevelAnswerRepository, + IRepository questionAnswerRepository, + IRepository diseaseRiskLevelAsbitemRepository, + IRepository asbitemRepository) { _diseaseRiskLevelRepository = diseaseRiskLevelRepository; _diseaseRiskLevelManager = diseaseRiskLevelManager; _cacheService = cacheService; + _diseaseRiskLevelAnswerRepository = diseaseRiskLevelAnswerRepository; + _questionAnswerRepository = questionAnswerRepository; + _diseaseRiskLevelAsbitemRepository = diseaseRiskLevelAsbitemRepository; + _asbitemRepository = asbitemRepository; } @@ -70,6 +82,9 @@ namespace Shentun.WebPeis.DiseaseRiskLevels return dto; } + + + /// /// 删除 /// @@ -81,6 +96,121 @@ namespace Shentun.WebPeis.DiseaseRiskLevels await _diseaseRiskLevelManager.CheckAndDeleteAsync(input.DiseaseRiskLevelId); } + + /// + /// 设置疾病风险级别对应的答案 + /// + /// + [HttpPost("api/app/DiseaseRiskLevel/CreateDiseaseRiskLevelAnswer")] + public async Task CreateDiseaseRiskLevelAnswerAsync(CreateDiseaseRiskLevelAnswerDto input) + { + await _diseaseRiskLevelAnswerRepository.DeleteAsync(d => d.DiseaseRiskLevelId == input.DiseaseRiskLevelId); + if (input.QuestionAnswerIds.Any()) + { + foreach (var questionAnswerId in input.QuestionAnswerIds) + { + var isQuestionAnswer = await _diseaseRiskLevelAnswerRepository.FirstOrDefaultAsync(f => f.QuestionAnswerId == questionAnswerId && f.DiseaseRiskLevelId == input.DiseaseRiskLevelId); + if (isQuestionAnswer == null) + { + await _diseaseRiskLevelAnswerRepository.InsertAsync(new DiseaseRiskLevelAnswer + { + DiseaseRiskLevelId = input.DiseaseRiskLevelId, + QuestionAnswerId = questionAnswerId + }); + } + } + } + } + + /// + /// 根据疾病风险级别ID获取对应的答案 + /// + /// + /// + [HttpPost("api/app/DiseaseRiskLevel/GetDiseaseRiskLevelAnswerByDiseaseRiskLevelId")] + public async Task> GetDiseaseRiskLevelAnswerByDiseaseRiskLevelIdAsync(DiseaseRiskLevelIdInputDto input) + { + var query = from diseaseRiskLevelAnswer in await _diseaseRiskLevelAnswerRepository.GetQueryableAsync() + join questionAnswer in await _questionAnswerRepository.GetQueryableAsync() + on diseaseRiskLevelAnswer.QuestionAnswerId equals questionAnswer.QuestionAnswerId + where diseaseRiskLevelAnswer.DiseaseRiskLevelId == input.DiseaseRiskLevelId + orderby questionAnswer.DisplayOrder ascending + select new + { + diseaseRiskLevelAnswer.DiseaseRiskLevelId, + questionAnswer.QuestionAnswerId, + questionAnswer.QuestionAnswerName + }; + + var entListDto = query.Select(s => new DiseaseRiskLevelAnswerDto + { + DiseaseRiskLevelId = s.DiseaseRiskLevelId, + QuestionAnswerId = s.QuestionAnswerId, + QuestionAnswerName = s.QuestionAnswerName + }).ToList(); + + return entListDto; + + } + + + /// + /// 设置疾病风险级别推荐的组合项目 + /// + /// + [HttpPost("api/app/DiseaseRiskLevel/CreateDiseaseRiskLevelAsbitem")] + public async Task CreateDiseaseRiskLevelAsbitemAsync(CreateDiseaseRiskLevelAsbitemDto input) + { + await _diseaseRiskLevelAsbitemRepository.DeleteAsync(d => d.DiseaseRiskLevelId == input.DiseaseRiskLevelId); + if (input.Details.Any()) + { + foreach (var item in input.Details) + { + var isAsbitem = await _diseaseRiskLevelAsbitemRepository.FirstOrDefaultAsync(f => f.AsbitemId == item.AsbitemId && f.DiseaseRiskLevelId == input.DiseaseRiskLevelId); + if (isAsbitem == null) + { + await _diseaseRiskLevelAsbitemRepository.InsertAsync(new DiseaseRiskLevelAsbitem + { + DiseaseRiskLevelId = input.DiseaseRiskLevelId, + AsbitemId = item.AsbitemId, + AsbitemRecommendLevelId = item.AsbitemRecommendLevelId + }); + } + } + } + } + + /// + /// 根据疾病风险级别ID获取推荐的组合项目 + /// + /// + /// + [HttpPost("api/app/DiseaseRiskLevel/GetDiseaseRiskLevelAsbitemByDiseaseRiskLevelId")] + public async Task> GetDiseaseRiskLevelAsbitemByDiseaseRiskLevelIdAsync(DiseaseRiskLevelIdInputDto input) + { + var query = from diseaseRiskLevelAsbitem in await _diseaseRiskLevelAsbitemRepository.GetQueryableAsync() + join asbitem in await _asbitemRepository.GetQueryableAsync() + on diseaseRiskLevelAsbitem.AsbitemId equals asbitem.AsbitemId + where diseaseRiskLevelAsbitem.DiseaseRiskLevelId == input.DiseaseRiskLevelId + orderby asbitem.DisplayOrder ascending + select new + { + diseaseRiskLevelAsbitem.DiseaseRiskLevelId, + asbitem.AsbitemId, + asbitem.AsbitemName + }; + + var entListDto = query.Select(s => new DiseaseRiskLevelAsbitemDto + { + DiseaseRiskLevelId = s.DiseaseRiskLevelId, + AsbitemId = s.AsbitemId, + AsbitemName = s.AsbitemName + }).ToList(); + + return entListDto; + + } + /// /// 修改排序 置顶,置底 /// diff --git a/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs b/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs index ed6c53e..a9e5be9 100644 --- a/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs +++ b/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs @@ -35,39 +35,44 @@ namespace Shentun.WebPeis.QuestionAnswers _questionAnswerManager = questionAnswerManager; } - ///// - ///// 获取列表 - ///// - ///// - //[HttpPost("api/app/QuestionAnswer/GetList")] - //public async Task> GetListAsync() - //{ - // var entlist = await _questionRepository.GetQueryableAsync(); - - // var entdto = entlist.Select(s => new QuestionDto - // { - // CreationTime = s.CreationTime, - // CreatorId = s.CreatorId, - // DisplayOrder = s.DisplayOrder, - // LastModificationTime = s.LastModificationTime, - // LastModifierId = s.LastModifierId, - // SimpleCode = s.SimpleCode, - // QuestionTypeId = s.QuestionTypeId, - // QuestionSubjectTypeId = s.QuestionSubjectTypeId, - // QuestionName = s.QuestionName, - // QuestionId = s.QuestionId, - // PathCode = s.PathCode, - // ParentId = s.ParentId, - // IsActive = s.IsActive, - // AnswerType = s.AnswerType, - // CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result, - // LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result - // }).OrderBy(o => o.DisplayOrder).ToList(); - - // return entdto; - - - //} + /// + /// 获取问卷答案列表 疾病风险级别设置对应答案时用 + /// + /// + [HttpPost("api/app/QuestionAnswer/GetList")] + public async Task> GetListAsync() + { + var entlist = await _questionAnswerRepository.GetQueryableAsync(); + + var entdto = entlist.Select(s => new QuestionAnswerDto + { + CreationTime = s.CreationTime, + CreatorId = s.CreatorId, + DisplayOrder = s.DisplayOrder, + LastModificationTime = s.LastModificationTime, + LastModifierId = s.LastModifierId, + SimpleCode = s.SimpleCode, + Aliases = s.Aliases, + QuestionAnswerName = s.QuestionAnswerName, + AnswerResultType = s.AnswerResultType, + QuestionAnswerId = s.QuestionAnswerId, + ChildAnswerTitle = s.ChildAnswerTitle, + ChildAnswerType = s.ChildAnswerType, + HealthGuidance = s.HealthGuidance, + IsNone = s.IsNone, + Overview = s.Overview, + Reason = s.Reason, + QuestionId = s.QuestionId, + PathCode = s.PathCode, + ParentId = s.ParentId, + CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result, + LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result + }).OrderBy(o => o.DisplayOrder).ToList(); + + return entdto; + + + } /// diff --git a/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevelAnswer.cs b/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevelAnswer.cs new file mode 100644 index 0000000..7bd4b5b --- /dev/null +++ b/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevelAnswer.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.Domain.Entities; + +namespace Shentun.WebPeis.Models +{ + /// + /// 疾病风险级别对应的答案 + /// + public class DiseaseRiskLevelAnswer : Entity, IHasConcurrencyStamp + { + public Guid DiseaseRiskLevelId { get; set; } + + public Guid QuestionAnswerId { get; set; } + + public string ConcurrencyStamp { get; set; } + + public override object?[] GetKeys() + { + return [DiseaseRiskLevelId, QuestionAnswerId]; + } + } +} diff --git a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/DiseaseRiskLevelAnswerConfigure.cs b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/DiseaseRiskLevelAnswerConfigure.cs new file mode 100644 index 0000000..d8880ed --- /dev/null +++ b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/DiseaseRiskLevelAnswerConfigure.cs @@ -0,0 +1,21 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using Shentun.WebPeis.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shentun.WebPeis.Configures +{ + internal class DiseaseRiskLevelAnswerConfigure : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder entity) + { + entity.HasKey(e => new { e.DiseaseRiskLevelId, e.QuestionAnswerId }).HasName("pk_disease_risk_level_answer"); + + entity.ToTable("medical_package_detail", tb => tb.HasComment("疾病风险对应的答案")); + } + } +}