DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
194e06aeb4
  1. 28
      src/Shentun.WebPeis.Application.Contracts/Asbitems/BasicAsbitemDto.cs
  2. 20
      src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/CreateDiseaseRiskLevelAnswerDto.cs
  3. 31
      src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/CreateDiseaseRiskLevelAsbitemDto.cs
  4. 25
      src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/DiseaseRiskLevelAnswerDto.cs
  5. 25
      src/Shentun.WebPeis.Application.Contracts/DiseaseRiskLevels/DiseaseRiskLevelAsbitemDto.cs
  6. 33
      src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs
  7. 134
      src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs
  8. 71
      src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs
  9. 27
      src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevelAnswer.cs
  10. 21
      src/Shentun.WebPeis.EntityFrameworkCore/Configures/DiseaseRiskLevelAnswerConfigure.cs

28
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
{
/// <summary>
/// 编号
/// </summary>
public Guid AsbitemId { get; set; }
/// <summary>
/// 名称
/// </summary>
public string AsbitemName { get; set; } = null!;
/// <summary>
/// 简称
/// </summary>
public string? ShortName { get; set; }
public string SimpleCode { get; set; }
public int DisplayOrder { get; set; }
}
}

20
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
{
/// <summary>
/// 疾病风险级别ID
/// </summary>
public Guid DiseaseRiskLevelId { get; set; }
/// <summary>
/// 问卷答案ID 集合
/// </summary>
public List<Guid> QuestionAnswerIds { get; set; } = new List<Guid>();
}
}

31
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
{
/// <summary>
/// 疾病风险级别ID
/// </summary>
public Guid DiseaseRiskLevelId { get; set; }
public List<CreateDiseaseRiskLevelAsbitemDetail> Details { get; set; } = new List<CreateDiseaseRiskLevelAsbitemDetail>();
}
public class CreateDiseaseRiskLevelAsbitemDetail
{
/// <summary>
/// 组合项目ID
/// </summary>
public Guid AsbitemId { get; set; }
/// <summary>
/// 推荐组合项目级别 1-一级推荐,2-2级推荐,3-3级推荐
/// </summary>
public short AsbitemRecommendLevelId { get; set; }
}
}

25
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
{
/// <summary>
/// 疾病风险疾病ID
/// </summary>
public Guid DiseaseRiskLevelId { get; set; }
/// <summary>
/// 问卷答案ID
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// <summary>
/// 问卷答案名称
/// </summary>
public string QuestionAnswerName { get; set; }
}
}

25
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
{
/// <summary>
/// 疾病风险级别ID
/// </summary>
public Guid DiseaseRiskLevelId { get; set; }
/// <summary>
/// 组合项目ID
/// </summary>
public Guid AsbitemId { get; set; }
/// <summary>
/// 组合项目名称
/// </summary>
public string AsbitemName { get; set; }
}
}

33
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<DiseaseScreeningTypeAsbitem>();
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;
}
/// <summary>
/// 获取组合项目列表
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Asbitem/GetBasicList")]
public async Task<List<BasicAsbitemDto>> 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;
}
}
}

134
src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs

@ -17,21 +17,33 @@ namespace Shentun.WebPeis.DiseaseRiskLevels
/// </summary>
[ApiExplorerSettings(GroupName = "Work")]
[Authorize]
public class DiseaseRiskLevelAppService:ApplicationService
public class DiseaseRiskLevelAppService : ApplicationService
{
private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository;
private readonly IRepository<DiseaseRiskLevelAnswer> _diseaseRiskLevelAnswerRepository;
private readonly IRepository<DiseaseRiskLevelAsbitem> _diseaseRiskLevelAsbitemRepository;
private readonly IRepository<QuestionAnswer> _questionAnswerRepository;
private readonly IRepository<Asbitem> _asbitemRepository;
private readonly DiseaseRiskLevelManager _diseaseRiskLevelManager;
private readonly CacheService _cacheService;
public DiseaseRiskLevelAppService(
IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository,
DiseaseRiskLevelManager diseaseRiskLevelManager,
CacheService cacheService)
CacheService cacheService,
IRepository<DiseaseRiskLevelAnswer> diseaseRiskLevelAnswerRepository,
IRepository<QuestionAnswer> questionAnswerRepository,
IRepository<DiseaseRiskLevelAsbitem> diseaseRiskLevelAsbitemRepository,
IRepository<Asbitem> 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;
}
/// <summary>
/// 删除
/// </summary>
@ -81,6 +96,121 @@ namespace Shentun.WebPeis.DiseaseRiskLevels
await _diseaseRiskLevelManager.CheckAndDeleteAsync(input.DiseaseRiskLevelId);
}
/// <summary>
/// 设置疾病风险级别对应的答案
/// </summary>
/// <returns></returns>
[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
});
}
}
}
}
/// <summary>
/// 根据疾病风险级别ID获取对应的答案
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/DiseaseRiskLevel/GetDiseaseRiskLevelAnswerByDiseaseRiskLevelId")]
public async Task<List<DiseaseRiskLevelAnswerDto>> 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;
}
/// <summary>
/// 设置疾病风险级别推荐的组合项目
/// </summary>
/// <returns></returns>
[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
});
}
}
}
}
/// <summary>
/// 根据疾病风险级别ID获取推荐的组合项目
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/DiseaseRiskLevel/GetDiseaseRiskLevelAsbitemByDiseaseRiskLevelId")]
public async Task<List<DiseaseRiskLevelAsbitemDto>> 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;
}
/// <summary>
/// 修改排序 置顶,置底
/// </summary>

71
src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs

@ -35,39 +35,44 @@ namespace Shentun.WebPeis.QuestionAnswers
_questionAnswerManager = questionAnswerManager;
}
///// <summary>
///// 获取列表
///// </summary>
///// <returns></returns>
//[HttpPost("api/app/QuestionAnswer/GetList")]
//public async Task<List<QuestionDto>> 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;
//}
/// <summary>
/// 获取问卷答案列表 疾病风险级别设置对应答案时用
/// </summary>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/GetList")]
public async Task<List<QuestionAnswerDto>> 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;
}
/// <summary>

27
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
{
/// <summary>
/// 疾病风险级别对应的答案
/// </summary>
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];
}
}
}

21
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<DiseaseRiskLevelAnswer>
{
public void Configure(EntityTypeBuilder<DiseaseRiskLevelAnswer> entity)
{
entity.HasKey(e => new { e.DiseaseRiskLevelId, e.QuestionAnswerId }).HasName("pk_disease_risk_level_answer");
entity.ToTable("medical_package_detail", tb => tb.HasComment("疾病风险对应的答案"));
}
}
}
Loading…
Cancel
Save