You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
5.4 KiB
116 lines
5.4 KiB
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Shentun.WebPeis.Enums;
|
|
using Shentun.WebPeis.Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp.Application.Services;
|
|
using Volo.Abp.Domain.Repositories;
|
|
|
|
namespace Shentun.WebPeis.Asbitems
|
|
{
|
|
/// <summary>
|
|
/// 组合项目
|
|
/// </summary>
|
|
[ApiExplorerSettings(GroupName = "Work")]
|
|
[Authorize]
|
|
public class AsbitemAppService : ApplicationService
|
|
{
|
|
private readonly IRepository<Asbitem> _repository;
|
|
private readonly IRepository<ItemType> _itemTypeRepository;
|
|
private readonly IRepository<DiseaseScreeningType> _diseaseScreeningTypeRepository;
|
|
private readonly CacheService _cacheService;
|
|
|
|
public AsbitemAppService(IRepository<Asbitem> repository,
|
|
CacheService cacheService,
|
|
IRepository<ItemType> itemTypeRepository,
|
|
IRepository<DiseaseScreeningType> diseaseScreeningTypeRepository
|
|
)
|
|
{
|
|
_repository = repository;
|
|
_cacheService = cacheService;
|
|
_itemTypeRepository = itemTypeRepository;
|
|
_diseaseScreeningTypeRepository = diseaseScreeningTypeRepository;
|
|
|
|
}
|
|
[HttpPost("api/app/Asbitem/GetDiseaseScreeningTypeAsbitemList")]
|
|
//[AllowAnonymous]
|
|
public async Task<List<DiseaseScreeningTypeAsbitemDto>> GetDiseaseScreeningTypeAsbitemListAsync()
|
|
{
|
|
var asbitems = (await _repository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y'))
|
|
.OrderBy(o => o.DisplayOrder).ToList();
|
|
|
|
//获取检查分类
|
|
var diseaseScreeningTypeAsbitemDtos = new List<DiseaseScreeningTypeAsbitemDto>()
|
|
{
|
|
//排序乘以1000,确保排在疾病筛查类别后面
|
|
new DiseaseScreeningTypeAsbitemDto(){
|
|
DiseaseScreeningTypeId = CheckTypeFlag.Regular.ToString(),DiseaseScreeningTypeName = "科室检查",DisplayOrder = 1*1000},
|
|
new DiseaseScreeningTypeAsbitemDto(){
|
|
DiseaseScreeningTypeId = CheckTypeFlag.Laboratory.ToString(),DiseaseScreeningTypeName = "检验",DisplayOrder = 2*1000},
|
|
new DiseaseScreeningTypeAsbitemDto(){
|
|
DiseaseScreeningTypeId =CheckTypeFlag.SpecialInspection.ToString(),DiseaseScreeningTypeName = "特检",DisplayOrder = 3 * 1000},
|
|
new DiseaseScreeningTypeAsbitemDto(){
|
|
DiseaseScreeningTypeId = CheckTypeFlag.Radiology.ToString(),DiseaseScreeningTypeName = "放射",DisplayOrder = 4*1000}
|
|
};
|
|
|
|
var diseaseScreeningTypes = (await _diseaseScreeningTypeRepository.GetListAsync()).OrderBy(o=>o.DisplayOrder).ToList();
|
|
diseaseScreeningTypes.ForEach(o =>
|
|
{
|
|
diseaseScreeningTypeAsbitemDtos.Add(new DiseaseScreeningTypeAsbitemDto()
|
|
{
|
|
DiseaseScreeningTypeId = o.DiseaseScreeningTypeId.ToString(),
|
|
DiseaseScreeningTypeName = o.DiseaseScreeningTypeName,
|
|
DisplayOrder = o.DisplayOrder
|
|
});
|
|
});
|
|
//设置组合项目的筛查类别
|
|
var itemTypes = await _itemTypeRepository.GetListAsync();
|
|
var diseaseScreeningTypeAsbitems = new List<DiseaseScreeningTypeAsbitem>();
|
|
foreach (var asbitem in asbitems)
|
|
{
|
|
var diseaseScreeningTypeAsbitem = new DiseaseScreeningTypeAsbitem()
|
|
{
|
|
AsbitemId = asbitem.AsbitemId,
|
|
AsbitemName = asbitem.AsbitemName,
|
|
ShortName = asbitem.ShortName,
|
|
Price = asbitem.Price,
|
|
ForSexId = asbitem.ForSexId,
|
|
ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result,
|
|
IsBeforeEat = asbitem.IsBeforeEat,
|
|
ClinicalMeaning = asbitem.ClinicalMeaning,
|
|
IsCheck = asbitem.IsCheck,
|
|
Warn = asbitem.Warn,
|
|
DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId == null ? "" : ((Guid)asbitem.DiseaseScreeningTypeId).ToString(),
|
|
SimpleCode = asbitem.SimpleCode,
|
|
DisplayOrder = asbitem.DisplayOrder,
|
|
};
|
|
|
|
var itemType = itemTypes.Where(o => o.ItemTypeId == asbitem.ItemTypeId).Single();
|
|
if (itemType.PathCode.Length > 5)
|
|
{
|
|
itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).Single();
|
|
asbitem.ItemTypeId = itemType.ItemTypeId;
|
|
}
|
|
if(string.IsNullOrWhiteSpace(diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId))
|
|
{
|
|
diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId = itemType.CheckTypeFlag.ToString();
|
|
}
|
|
diseaseScreeningTypeAsbitems.Add(diseaseScreeningTypeAsbitem);
|
|
}
|
|
|
|
//设置检查类别对应的组合项目
|
|
foreach(var diseaseScreeningTypeAsbitemDto in diseaseScreeningTypeAsbitemDtos)
|
|
{
|
|
diseaseScreeningTypeAsbitemDto.Asbitems = diseaseScreeningTypeAsbitems.Where(o=>
|
|
o.DiseaseScreeningTypeId == diseaseScreeningTypeAsbitemDto.DiseaseScreeningTypeId).ToList();
|
|
}
|
|
return diseaseScreeningTypeAsbitemDtos;
|
|
}
|
|
|
|
|
|
}
|
|
}
|