Browse Source

职业病报表

master
wxd 1 year ago
parent
commit
c67b362b82
  1. 115
      src/Shentun.Peis.Application/OccupationalDiseaseReports/OccupationalDiseaseReportAppService.cs

115
src/Shentun.Peis.Application/OccupationalDiseaseReports/OccupationalDiseaseReportAppService.cs

@ -132,7 +132,7 @@ namespace Shentun.Peis.OccupationalDiseaseReports
#endregion
var patientRegisterList = query.ToList();
var msg = new GetCompanyOccupationalDiseaseSummaryReportDto
@ -190,7 +190,7 @@ namespace Shentun.Peis.OccupationalDiseaseReports
foreach (var item in occupationalAbnormalList)
{
var conclusionCount = patientRegisterList.Where(m => m.patientPoisonHaveEmpty.OccupationalAbnormalId == item.Id).Select(s => s.patientRegister.Id).Distinct().Count();
var conclusionRatio = Convert.ToDecimal(conclusionCount * 100) / patientRegisters.Count;
var conclusionRatio = Decimal.Round(Convert.ToDecimal(conclusionCount * 100) / patientRegisters.Count, 2);
var conclusionDetail = new GetCompanyOccupationalDiseaseSummaryReportConclusionDetailDto
{
ConclusionName = item.DisplayName,
@ -207,19 +207,25 @@ namespace Shentun.Peis.OccupationalDiseaseReports
//相关检查情况
var asbitemAbnormalQuery = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
var asbitemAbnormalQuery = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
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 asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id into asbitemTemp
from asbitemHaveEmpty in asbitemTemp.DefaultIfEmpty()
join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckSummary.RegisterCheckId
//where !registerCheckSummary.Summary.Contains("未见异常")
join patientOccupationalDisease in await _patientOccupationalDiseaseRepository.GetQueryableAsync() on patientRegister.Id equals patientOccupationalDisease.PatientRegisterId
where patientRegister.CustomerOrgRegisterId == customerOrgPara.CustomerOrgRegisterId
&&!registerCheckSummary.Summary.Contains("未见异常")
&& patientRegister.CompleteFlag == PatientRegisterCompleteFlag.SumCheck
select new
{
patientRegister,
asbitemName = asbitemHaveEmpty.DisplayName
});
if (!string.IsNullOrEmpty(customerOrgPara.StartDate) && !string.IsNullOrEmpty(customerOrgPara.EndDate))
{
if (customerOrgPara.DateType == '1')
@ -245,7 +251,9 @@ namespace Shentun.Peis.OccupationalDiseaseReports
asbitemAbnormalQuery = asbitemAbnormalQuery.Where(m => m.patientRegister.CustomerOrgGroupId != null && customerOrgPara.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value));
}
var ggggg = asbitemAbnormalQuery.ToQueryString();
var asbitemAbnormalList = asbitemAbnormalQuery.ToList();
@ -257,7 +265,7 @@ namespace Shentun.Peis.OccupationalDiseaseReports
{
AbnormalAsbitemName = s.Key,
AbnormalCount = s.Select(ss => ss.patientRegister.Id).Distinct().Count(),
AbnormalRatio = Convert.ToDecimal(s.Select(ss => ss.patientRegister.Id).Distinct().Count() * 100) / abnormalSumCount,
AbnormalRatio = Decimal.Round(Convert.ToDecimal(s.Select(ss => ss.patientRegister.Id).Distinct().Count() * 100) / abnormalSumCount, 2),
DisplayOrder = index + 1
}).ToList();
@ -290,10 +298,103 @@ namespace Shentun.Peis.OccupationalDiseaseReports
if (customerOrgPara.CustomerOrgRegisterId == null || customerOrgPara.CustomerOrgRegisterId == Guid.Empty)
throw new UserFriendlyException("单位体检次数不能为空");
#region 人员信息
var query = from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join patientOccupationalDisease in await _patientOccupationalDiseaseRepository.GetQueryableAsync() on patientRegister.Id equals patientOccupationalDisease.PatientRegisterId
join patientPoison in await _patientPoisonRepository.GetQueryableAsync() on patientRegister.Id equals patientPoison.PatientRegisterId into patientPoisonTemp
from patientPoisonHaveEmpty in patientPoisonTemp.DefaultIfEmpty()
join poison in await _poisonRepository.GetQueryableAsync() on patientPoisonHaveEmpty.PoisonId equals poison.Id into poisonTemp
from posionHaveEmpty in poisonTemp.DefaultIfEmpty()
join occupationalAbnormal in await _occupationalAbnormalRepository.GetQueryableAsync() on patientPoisonHaveEmpty.OccupationalAbnormalId equals occupationalAbnormal.Id into occupationalAbnormalTemp
from occupationalAbnormalHaveEmpty in occupationalAbnormalTemp.DefaultIfEmpty()
where patientRegister.CustomerOrgRegisterId == customerOrgPara.CustomerOrgRegisterId
&& patientRegister.CompleteFlag == PatientRegisterCompleteFlag.SumCheck
select new
{
patientRegister,
patientOccupationalDisease,
posionHaveEmpty,
patientPoisonHaveEmpty,
occupationalAbnormalHaveEmpty
};
if (!string.IsNullOrEmpty(customerOrgPara.StartDate) && !string.IsNullOrEmpty(customerOrgPara.EndDate))
{
if (customerOrgPara.DateType == '1')
{
query = query.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(customerOrgPara.StartDate) &&
m.patientRegister.CreationTime < Convert.ToDateTime(customerOrgPara.EndDate).AddDays(1));
}
else if (customerOrgPara.DateType == '2')
{
query = query.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate.Value >= Convert.ToDateTime(customerOrgPara.StartDate) &&
m.patientRegister.MedicalStartDate.Value < Convert.ToDateTime(customerOrgPara.EndDate).AddDays(1));
}
else if (customerOrgPara.DateType == '3')
{
query = query.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate.Value >= Convert.ToDateTime(customerOrgPara.StartDate) &&
m.patientRegister.SummaryDate.Value < Convert.ToDateTime(customerOrgPara.EndDate).AddDays(1));
}
}
if (customerOrgPara.CustomerOrgGroupId.Any())
{
query = query.Where(m => m.patientRegister.CustomerOrgGroupId != null && customerOrgPara.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value));
}
#endregion
var patientRegisterList = query.ToList();
var msg = new GetCompanyOccupationalDiseaseDetailReportDto
{
MedicalResultDesc = "",
DiagnosisAndTreatmentDetails = new List<GetCompanyOccupationalDiseaseDetailReportDiagnosisAndTreatmentDetailDto>(),
ListOfMissingItemsDetails = new List<GetCompanyOccupationalDiseaseDetailReportListOfMissingItemsDetailDto>(),
MedicalResultAbnormalRateDetails = new List<GetCompanyOccupationalDiseaseDetailReportMedicalResultAbnormalRateDetailDto>(),
MedicalResultDetails = new List<GetCompanyOccupationalDiseaseDetailReportMedicalResultDetailDto>(),
OcCheckTypeDetails = new List<GetCompanyOccupationalDiseaseDetailReportOcCheckTypeSummaryDto>(),
OcCheckTypeNames = new List<string>(),
OccupationalAbnormalDetails = new List<GetCompanyOccupationalDiseaseDetailReportOccupationalAbnormalDetailDto>(),
OccupationalContraindicationDetails = new List<GetCompanyOccupationalDiseaseDetailReportOccupationalContraindicationDetailDto>(),
ReviewPersonnelDetails = new List<GetCompanyOccupationalDiseaseDetailReportReviewPersonnelDetailDto>(),
SuspectedOccupationalDiseaseDetails = new List<GetCompanyOccupationalDiseaseDetailReportSuspectedOccupationalDiseaseDetailDto>()
};
if (patientRegisterList.Any())
{
//人员id
var patientRegisters = query.Select(m => m.patientRegister).Distinct().ToList();
var patientRegisterfisrt = query.First();
msg.CertificateNo = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "medical_center_qualification_certificate_number");
msg.CustomerOrgName = await _cacheService.GetTopCustomerOrgNameAsync(patientRegisterfisrt.patientRegister.CustomerOrgId);
msg.MedicalCenterName = (await _organizationUnitRepository.GetAsync(patientRegisterfisrt.patientRegister.MedicalCenterId)).DisplayName;
msg.MedicalStartDate = Convert.ToDateTime(customerOrgPara.StartDate).ToString("yyyy年MM月dd日");
msg.RecordNumber = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "medical_center_record_number");
msg.ReportDate = DateTime.Now.ToString("yyyy年MM月dd日");
return new GetCompanyOccupationalDiseaseDetailReportDto();
}
return msg;
}

Loading…
Cancel
Save