Browse Source

职业病

bjmzak
wxd 2 years ago
parent
commit
0902a1db53
  1. 187
      src/Shentun.Peis.Application/OccupationalDiseases/OccupationalDiseaseAppService.cs

187
src/Shentun.Peis.Application/OccupationalDiseases/OccupationalDiseaseAppService.cs

@ -1,9 +1,12 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Shentun.Peis.Enums;
using Shentun.Peis.Models;
using Shentun.Peis.OcCheckTypes;
using Shentun.Peis.PatientOccupationalDiseases;
using Shentun.Peis.PatientRegisters;
using Shentun.Peis.SumSummaryReports;
using System;
using System.Collections.Generic;
using System.Linq;
@ -12,6 +15,7 @@ using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.ObjectMapping;
namespace Shentun.Peis.OccupationalDiseases
@ -29,13 +33,44 @@ namespace Shentun.Peis.OccupationalDiseases
private readonly IRepository<PatientSymptom> _patientSymptomRepository;
private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager;
private readonly CacheService _cacheService;
private readonly IRepository<Patient, Guid> _patientRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<IdentityUser, Guid> _identityUserRepository;
private readonly IRepository<ItemType, Guid> _itemTypeRepository;
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
private readonly IRepository<Item, Guid> _itemRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<ResultStatus> _resultStatusRepository;
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
public OccupationalDiseaseAppService(
IRepository<PatientOccupationalDisease, Guid> patientOccupationalDiseaseRepository,
IRepository<PatientOccupationalHistory, Guid> patientOccupationalHistoryRepository,
IRepository<PatientPoison> patientPoisonRepository,
IRepository<PatientSymptom> patientSymptomRepository,
PatientOccupationalDiseaseManager patientOccupationalDiseaseManager,
CacheService cacheService)
CacheService cacheService,
IRepository<Patient, Guid> patientRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<IdentityUser, Guid> identityUserRepository,
IRepository<ItemType, Guid> itemTypeRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<Item, Guid> itemRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<ResultStatus> resultStatusRepository,
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
IRepository<Asbitem, Guid> asbitemRepository)
{
_patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository;
_patientOccupationalHistoryRepository = patientOccupationalHistoryRepository;
@ -43,6 +78,17 @@ namespace Shentun.Peis.OccupationalDiseases
_patientSymptomRepository = patientSymptomRepository;
_patientOccupationalDiseaseManager = patientOccupationalDiseaseManager;
_cacheService = cacheService;
_patientRepository = patientRepository;
_registerCheckRepository = registerCheckRepository;
_identityUserRepository = identityUserRepository;
_itemTypeRepository = itemTypeRepository;
_registerCheckItemRepository = registerCheckItemRepository;
_itemRepository = itemRepository;
_patientRegisterRepository = patientRegisterRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_resultStatusRepository = resultStatusRepository;
_registerCheckSummaryRepository = registerCheckSummaryRepository;
_asbitemRepository = asbitemRepository;
}
/// <summary>
@ -310,5 +356,144 @@ namespace Shentun.Peis.OccupationalDiseases
await _patientOccupationalDiseaseRepository.UpdateAsync(patientOccupationalDiseaseEnt);
}
/// <summary>
/// 获取体征结果
/// </summary>
/// <param name="input">人员登记ID</param>
/// <returns></returns>
[HttpPost("api/app/OccupationalDisease/GetDetailResults")]
public async Task<List<SumSummaryReportDetailResultDto>> GetDetailResultsAsync(PatientRegisterIdInputDto input)
{
List<SumSummaryReportDetailResultDto> msg = new List<SumSummaryReportDetailResultDto>();
var userlist = await _identityUserRepository.GetListAsync();
var resultStatus = await _resultStatusRepository.GetListAsync();
var list = (from patient in await _patientRepository.GetQueryableAsync()
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on patient.Id equals patientRegister.PatientId
join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckSummary.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync()
on registerCheckAsbitem.AsbitemId equals asbitem.Id
join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckItem.RegisterCheckId
join item in await _itemRepository.GetQueryableAsync()
on registerCheckItem.ItemId equals item.Id
join itemType in await _itemTypeRepository.GetQueryableAsync()
on asbitem.ItemTypeId equals itemType.Id
where patientRegister.Id == input.PatientRegisterId
&& registerCheck.CompleteFlag == RegisterCheckCompleteFlag.Checked
&& asbitem.IsCheck == 'Y'
select new
{
patient,
patientRegister,
registerCheck,
registerCheckSummary,
registerCheckAsbitem,
asbitem,
registerCheckItem,
item,
itemType
}).AsNoTracking().ToList();
if (!list.Any())
{
return null;
}
//将子项目类别设置为父项目类别
var itemTypes = await _itemTypeRepository.GetListAsync();
foreach (var listItem in list)
{
var parentItemType = itemTypes.Where(o => o.Id == listItem.itemType.ParentId).FirstOrDefault();
if (parentItemType != null)
{
listItem.asbitem.DisplayOrder = listItem.itemType.DisplayOrder * 1000 + listItem.asbitem.DisplayOrder;
listItem.itemType.DisplayName = parentItemType.DisplayName;
listItem.itemType.DisplayOrder = parentItemType.DisplayOrder;
}
}
var detailedResultsList_Asbitems = new List<SumSummaryReportDetailResultWithAsbitem>();
var registerCheckIds = list.OrderBy(o => o.itemType.DisplayOrder)
.OrderBy(o => o.asbitem.DisplayOrder)
.Select(o => o.registerCheck.Id).Distinct().ToList();
foreach (var registerCheckId in registerCheckIds)
{
var listItem = list.Where(o => o.registerCheck.Id == registerCheckId).First();
var detailedResultsList_Asbitem = new SumSummaryReportDetailResultWithAsbitem()
{
ItemTypeName = listItem.itemType.DisplayName,
AsbitemNames = string.Join(",", list.Where(o => o.registerCheck.Id == registerCheckId)
.OrderBy(o => o.itemType.DisplayOrder).OrderBy(o => o.asbitem.DisplayOrder)
.Select(o => o.asbitem.DisplayName).Distinct().ToList()),
ItemTypeDisplayOrder = listItem.itemType.DisplayOrder,
AsbitemDisplayOrder = listItem.asbitem.DisplayOrder,
CheckDate = ((DateTime)listItem.registerCheck.CheckDate).Date,
CheckDoctorName = EntityHelper.GetCheckDoctorName(listItem.registerCheck.CheckDoctorId, userlist),
Items = list.Where(o => o.registerCheck.Id == registerCheckId)
.OrderBy(o => o.itemType.DisplayOrder)
.OrderBy(o => o.asbitem.DisplayOrder)
.OrderBy(o => o.item.DisplayOrder)
.GroupBy(o => o.registerCheckItem.ItemId)
.Select(o => new SumSummaryReportDetailResultWithItem()
{
ItemId = o.FirstOrDefault().registerCheckItem.ItemId,
ItemName = o.FirstOrDefault().item.DisplayName,
ItemResult = o.FirstOrDefault().registerCheckItem.Result,
ReferenceRangeValue = o.FirstOrDefault().registerCheckItem.ReferenceRangeValue,
CriticalRangeValue = o.FirstOrDefault().registerCheckItem.CriticalRangeValue,
Unit = o.FirstOrDefault().registerCheckItem.Unit,
ResultStatusId = o.FirstOrDefault().registerCheckItem.ResultStatusId,
ResultStatusName = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? "" : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportPrompt,
ReportFontColor = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 0 : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportFontColor,
ReportBackgroundColor = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 16777215 : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportBackgroundColor,
}).ToList(),
Summarys = list.Where(o => o.registerCheck.Id == registerCheckId)
.OrderBy(o => o.registerCheckSummary.DisplayOrder)
.GroupBy(o => o.registerCheckSummary.Summary)
.Select(o => new SumSummaryReportDetailResultWithSummary()
{
Summary = o.FirstOrDefault().registerCheckSummary.Summary
})
.ToList<SumSummaryReportDetailResultWithSummary>(),
};
detailedResultsList_Asbitem.Summarys = detailedResultsList_Asbitem.Summarys.Distinct().ToList();
detailedResultsList_Asbitems.Add(detailedResultsList_Asbitem);
}
var grouplist = detailedResultsList_Asbitems.OrderBy(o => o.ItemTypeDisplayOrder)
.OrderBy(o => o.AsbitemDisplayOrder)
.GroupBy(g => g.ItemTypeName);
foreach (var g in grouplist)
{
var glist = g.OrderBy(o => o.ItemTypeDisplayOrder).OrderBy(o => o.AsbitemDisplayOrder).ToList();
var resultlist = new SumSummaryReportDetailResultDto
{
ItemTypeDisplayOrder = glist.FirstOrDefault().ItemTypeDisplayOrder,
ItemTypeName = glist.FirstOrDefault().ItemTypeName,
Asbitems = glist
};
msg.Add(resultlist);
}
msg = msg.OrderBy(o => o.ItemTypeDisplayOrder).ToList();
return msg;
}
}
}
Loading…
Cancel
Save