@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Authorization ;
using Microsoft.AspNetCore.Mvc ;
using Microsoft.EntityFrameworkCore ;
using NPOI.SS.Formula.Functions ;
using Shentun.Peis.Enums ;
using Shentun.Peis.Models ;
using Shentun.Peis.SysParmValues ;
@ -22,6 +23,7 @@ namespace Shentun.Peis.OccupationalDiseaseReports
{
private readonly IRepository < PatientRegister , Guid > _patientRegisterRepository ;
private readonly IRepository < Patient , Guid > _patientRepository ;
private readonly IRepository < RegisterCheck , Guid > _registerCheckRepository ;
private readonly IRepository < RegisterCheckAsbitem , Guid > _registerCheckAsbitemRepository ;
private readonly IRepository < Asbitem , Guid > _asbitemRepository ;
@ -34,7 +36,8 @@ namespace Shentun.Peis.OccupationalDiseaseReports
private readonly IRepository < OccupationalAbnormal , Guid > _occupationalAbnormalRepository ;
private readonly IRepository < Poison , Guid > _poisonRepository ;
private readonly IRepository < RegisterCheckSummary , Guid > _registerCheckSummaryRepository ;
private readonly IRepository < SumSummaryHeader , Guid > _sumSummaryHeaderRepository ;
private readonly IRepository < SumSummaryContent , Guid > _sumSummaryContentRepository ;
public OccupationalDiseaseReportAppService (
IRepository < PatientRegister , Guid > patientRegisterRepository ,
IRepository < RegisterCheck , Guid > registerCheckRepository ,
@ -48,7 +51,10 @@ namespace Shentun.Peis.OccupationalDiseaseReports
IRepository < PatientPoison > patientPoisonRepository ,
IRepository < OccupationalAbnormal , Guid > occupationalAbnormalRepository ,
IRepository < Poison , Guid > poisonRepository ,
IRepository < RegisterCheckSummary , Guid > registerCheckSummaryRepository )
IRepository < RegisterCheckSummary , Guid > registerCheckSummaryRepository ,
IRepository < Patient , Guid > patientRepository ,
IRepository < SumSummaryHeader , Guid > sumSummaryHeaderRepository ,
IRepository < SumSummaryContent , Guid > sumSummaryContentRepository )
{
_patientRegisterRepository = patientRegisterRepository ;
_registerCheckRepository = registerCheckRepository ;
@ -63,6 +69,9 @@ namespace Shentun.Peis.OccupationalDiseaseReports
_occupationalAbnormalRepository = occupationalAbnormalRepository ;
_poisonRepository = poisonRepository ;
_registerCheckSummaryRepository = registerCheckSummaryRepository ;
_patientRepository = patientRepository ;
_sumSummaryHeaderRepository = sumSummaryHeaderRepository ;
_sumSummaryContentRepository = sumSummaryContentRepository ;
}
@ -215,7 +224,7 @@ namespace Shentun.Peis.OccupationalDiseaseReports
join registerCheckSummary in await _registerCheckSummaryRepository . GetQueryableAsync ( ) on registerCheck . Id equals registerCheckSummary . RegisterCheckId
join patientOccupationalDisease in await _patientOccupationalDiseaseRepository . GetQueryableAsync ( ) on patientRegister . Id equals patientOccupationalDisease . PatientRegisterId
where patientRegister . CustomerOrgRegisterId = = customerOrgPara . CustomerOrgRegisterId
& & ! registerCheckSummary . Summary . Contains ( "未见异常" )
& & ! registerCheckSummary . Summary . Contains ( "未见异常" )
& & patientRegister . CompleteFlag = = PatientRegisterCompleteFlag . SumCheck
select new
{
@ -251,10 +260,6 @@ 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 ( ) ;
//异常总人数
@ -307,15 +312,21 @@ namespace Shentun.Peis.OccupationalDiseaseReports
from posionHaveEmpty in poisonTemp . DefaultIfEmpty ( )
join occupationalAbnormal in await _occupationalAbnormalRepository . GetQueryableAsync ( ) on patientPoisonHaveEmpty . OccupationalAbnormalId equals occupationalAbnormal . Id into occupationalAbnormalTemp
from occupationalAbnormalHaveEmpty in occupationalAbnormalTemp . DefaultIfEmpty ( )
join ocCheckType in await _ocCheckTypeRepository . GetQueryableAsync ( ) on patientOccupationalDisease . OcCheckTypeId equals ocCheckType . Id into ocCheckTypeTemp
from ocCheckTypeHaveEmpty in ocCheckTypeTemp . DefaultIfEmpty ( )
join sumSummaryHeader in ( await _sumSummaryHeaderRepository . GetQueryableAsync ( ) ) . Include ( x = > x . SumSummaryContents ) on patientRegister . Id equals sumSummaryHeader . PatientRegisterId into sumSummaryHeaderTemp
from sumSummaryHeaderHaveEmpty in sumSummaryHeaderTemp . DefaultIfEmpty ( )
where patientRegister . CustomerOrgRegisterId = = customerOrgPara . CustomerOrgRegisterId
& & patientRegister . CompleteFlag = = PatientRegisterCompleteFlag . SumCheck
& & patientRegister . CompleteFlag ! = PatientRegisterCompleteFlag . PreRegistration
select new
{
patientRegister ,
patientOccupationalDisease ,
posionHaveEmpty ,
patientPoisonHaveEmpty ,
occupationalAbnormalHaveEmpty
occupationalAbnormalHaveEmpty ,
ocCheckTypeHaveEmpty ,
sumSummaryHeaderHaveEmpty
} ;
@ -352,14 +363,9 @@ namespace Shentun.Peis.OccupationalDiseaseReports
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 > ( )
@ -369,10 +375,10 @@ namespace Shentun.Peis.OccupationalDiseaseReports
if ( patientRegisterList . Any ( ) )
{
//人员id
var patientRegisters = query . Select ( m = > m . patientRegister ) . Distinct ( ) . ToList ( ) ;
//人员
var patientRegisters = patientRegisterList . Select ( m = > m . patientRegister ) . Distinct ( ) . ToList ( ) ;
var patientRegisterfisrt = query . First ( ) ;
var patientRegisterfisrt = patientRegisterList . First ( ) ;
msg . CertificateNo = await _sysParmValueManager . GetSysParmValueAsync ( Guid . Empty , "medical_center_qualification_certificate_number" ) ;
msg . CustomerOrgName = await _cacheService . GetTopCustomerOrgNameAsync ( patientRegisterfisrt . patientRegister . CustomerOrgId ) ;
@ -381,12 +387,270 @@ namespace Shentun.Peis.OccupationalDiseaseReports
msg . RecordNumber = await _sysParmValueManager . GetSysParmValueAsync ( Guid . Empty , "medical_center_record_number" ) ;
msg . ReportDate = DateTime . Now . ToString ( "yyyy年MM月dd日" ) ;
msg . OcCheckTypeNames = ( await _ocCheckTypeRepository . GetListAsync ( ) ) . Select ( s = > s . DisplayName ) . ToList ( ) ;
#region 检查情况报告列表
var ocCheckTypeDetails = patientRegisterList . GroupBy ( g = > new { g . patientRegister , g . patientOccupationalDisease . OcCheckTypeId } )
. Select ( s = > new
{
posionNames = string . Join ( "、" , s . Where ( m = > m . posionHaveEmpty ! = null )
. OrderBy ( o = > o . posionHaveEmpty . DisplayOrder ) . Select ( ss = > ss . posionHaveEmpty . DisplayName ) . Distinct ( ) ) ,
ocCheckTypeName = s . FirstOrDefault ( ) . ocCheckTypeHaveEmpty ! = null ? s . FirstOrDefault ( ) . ocCheckTypeHaveEmpty . DisplayName : "" ,
} ) . ToList ( )
. GroupBy ( g = > new { g . ocCheckTypeName , g . posionNames } )
. Select ( ( s , index ) = > new GetCompanyOccupationalDiseaseDetailReportOcCheckTypeSummaryDto
{
DisplayOrder = index + 1 ,
OcCheckTypeName = s . Key . ocCheckTypeName ,
CheckCount = s . Count ( ) ,
PoisonNames = s . Key . posionNames
} ) . ToList ( ) ;
msg . OcCheckTypeDetails = ocCheckTypeDetails ;
#endregion
#region 体检结果总结
var occupationalAbnormalDetails = patientRegisterList . Where ( m = > m . occupationalAbnormalHaveEmpty ! = null ) . ToList ( )
. GroupBy ( g = > new { g . patientRegister , g . occupationalAbnormalHaveEmpty } )
. Select ( s = > new { occupationalAbnormalName = s . Key . occupationalAbnormalHaveEmpty . DisplayName } ) . ToList ( )
. GroupBy ( g = > g . occupationalAbnormalName )
. Select ( ( s , index ) = > new GetCompanyOccupationalDiseaseDetailReportOccupationalAbnormalDetailDto
{
DisplayOrder = index + 1 ,
OccupationalAbnormalCount = s . Count ( ) ,
OccupationalAbnormalName = s . Key ,
OccupationalAbnormalRatio = Decimal . Round ( Convert . ToDecimal ( s . Count ( ) * 1 0 0 ) / patientRegisters . Count , 2 )
} ) . ToList ( ) ;
string occupationalAbnormalDesc = "" ;
foreach ( var item in occupationalAbnormalDetails )
{
if ( occupationalAbnormalDetails . IndexOf ( item ) = = occupationalAbnormalDetails . Count - 1 )
occupationalAbnormalDesc + = $"{item.OccupationalAbnormalName}{item.OccupationalAbnormalCount}人。" ;
else
occupationalAbnormalDesc + = $"{item.OccupationalAbnormalName}{item.OccupationalAbnormalCount}人," ;
}
msg . MedicalResultDesc = $"{Convert.ToDateTime(customerOrgPara.StartDate).ToString(" yyyy - MM - dd ")},{msg.CustomerOrgName}组织{patientRegisters.Count}名接触" +
$"{1}作业工人进行职业健康检查,结果:{occupationalAbnormalDesc}" ;
msg . OccupationalAbnormalDetails = occupationalAbnormalDetails ;
#endregion
#region 体检结果一览表
var medicalResultDetails = patientRegisterList . GroupBy ( g = > g . patientOccupationalDisease )
. Select ( ( s , index ) = > new GetCompanyOccupationalDiseaseDetailReportMedicalResultDetailDto
{
AnomalyIndex = ! string . IsNullOrWhiteSpace ( s . Key . OccupationalAbnormal )
? $"{SetSumSummarys(s.Select(ss => ss.sumSummaryHeaderHaveEmpty).Distinct().ToList())}\n结论:{s.Key.OccupationalAbnormal}"
: $"{SetSumSummarys(s.Select(ss => ss.sumSummaryHeaderHaveEmpty).Distinct().ToList())}" ,
DisplayOrder = index + 1 ,
HandlingSuggestions = s . Key . OccupationalAbSuggestion ,
JobType = s . Key . JobType ,
PatientName = s . FirstOrDefault ( ) . patientRegister . PatientName ,
PatientRegisterNo = s . FirstOrDefault ( ) . patientRegister . PatientRegisterNo ,
PoisonNames = string . Join ( "," , s . Select ( ss = > ss . posionHaveEmpty . DisplayName ) . Distinct ( ) ) ,
PoisonWorkTime = s . Key . PoisonWorkTime
} ) . ToList ( ) ;
msg . MedicalResultDetails = medicalResultDetails ;
#endregion
#region 体检结果异常率明细
var asbitemAbnormalQuery = ( from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
join patient in await _patientRepository . GetQueryableAsync ( ) on patientRegister . PatientId equals patient . Id
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
join patientOccupationalDisease in await _patientOccupationalDiseaseRepository . GetQueryableAsync ( ) on patientRegister . Id equals patientOccupationalDisease . PatientRegisterId
where patientRegister . CustomerOrgRegisterId = = customerOrgPara . CustomerOrgRegisterId
& & ! registerCheckSummary . Summary . Contains ( "未见异常" )
& & patientRegister . CompleteFlag ! = PatientRegisterCompleteFlag . PreRegistration
select new
{
patientRegister ,
asbitemName = asbitemHaveEmpty . DisplayName ,
registerCheckCompleteFlag = registerCheck . CompleteFlag ,
idNo = patient . IdNo
} ) ;
if ( ! string . IsNullOrEmpty ( customerOrgPara . StartDate ) & & ! string . IsNullOrEmpty ( customerOrgPara . EndDate ) )
{
if ( customerOrgPara . DateType = = '1' )
{
asbitemAbnormalQuery = asbitemAbnormalQuery . Where ( m = > m . patientRegister . CreationTime > = Convert . ToDateTime ( customerOrgPara . StartDate ) & &
m . patientRegister . CreationTime < Convert . ToDateTime ( customerOrgPara . EndDate ) . AddDays ( 1 ) ) ;
}
else if ( customerOrgPara . DateType = = '2' )
{
asbitemAbnormalQuery = asbitemAbnormalQuery . 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' )
{
asbitemAbnormalQuery = asbitemAbnormalQuery . 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 ( ) )
{
asbitemAbnormalQuery = asbitemAbnormalQuery . Where ( m = > m . patientRegister . CustomerOrgGroupId ! = null & & customerOrgPara . CustomerOrgGroupId . Contains ( m . patientRegister . CustomerOrgGroupId . Value ) ) ;
}
var asbitemAbnormalList = asbitemAbnormalQuery . ToList ( ) ;
var asbitemAbnormalCount = asbitemAbnormalList . Select ( s = > s . asbitemName ) . Distinct ( ) . Count ( ) ;
var medicalResultAbnormalRateDetails = asbitemAbnormalList . GroupBy ( g = > g . asbitemName )
. Select ( ( s , index ) = > new GetCompanyOccupationalDiseaseDetailReportMedicalResultAbnormalRateDetailDto
{
AbnormalPatientNames = string . Join ( "、" , s . Select ( ss = > ss . patientRegister . PatientName ) . Distinct ( ) ) ,
AsbitemName = s . Key ,
DisplayOrder = index + 1 ,
AbnormalRate = Decimal . Round ( Convert . ToDecimal ( s . Count ( ) * 1 0 0 ) / asbitemAbnormalCount , 2 )
} ) . ToList ( ) ;
msg . MedicalResultAbnormalRateDetails = medicalResultAbnormalRateDetails ;
#endregion
#region 职业健康检查缺项情况表明细
var listOfMissingItemsDetails = asbitemAbnormalList . Where ( m = > m . registerCheckCompleteFlag = = RegisterCheckCompleteFlag . UnChecked )
. GroupBy ( g = > g . patientRegister )
. Select ( ( s , index ) = > new GetCompanyOccupationalDiseaseDetailReportListOfMissingItemsDetailDto
{
DisplayOrder = index + 1 ,
IdNo = s . FirstOrDefault ( ) . idNo ,
PatientName = s . Key . PatientName ,
PatientRegisterNo = s . Key . PatientRegisterNo ,
UnCheckAsbitemName = string . Join ( "、" , s . Select ( ss = > ss . asbitemName ) )
} ) . ToList ( ) ;
msg . ListOfMissingItemsDetails = listOfMissingItemsDetails ;
#endregion
#region 职业病专科复查人员一览表明细
//复查结论ID
Guid reviewId = ( await _occupationalAbnormalRepository . FirstOrDefaultAsync ( f = > f . DisplayName . Contains ( "复查" ) ) ) . Id ;
var patientRegisterAbnormalQuery = ( from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
join patient in await _patientRepository . GetQueryableAsync ( ) on patientRegister . PatientId equals patient . Id
join sumSummaryHeader in ( await _sumSummaryHeaderRepository . GetQueryableAsync ( ) ) . Include ( x = > x . SumSummaryContents ) on patientRegister . Id equals sumSummaryHeader . PatientRegisterId into sumSummaryHeaderTemp
from sumSummaryHeaderHaveEmpty in sumSummaryHeaderTemp . DefaultIfEmpty ( )
//join sumSummaryContent in await _sumSummaryContentRepository.GetQueryableAsync() on sumSummaryHeaderHaveEmpty.Id equals sumSummaryContent.SumSummaryHeaderId into sumSummaryContentTemp
//from sumSummaryContentHaveEmpty in sumSummaryContentTemp.DefaultIfEmpty()
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 poisonHaveEmpty in poisonTemp . DefaultIfEmpty ( )
where patientRegister . CustomerOrgRegisterId = = customerOrgPara . CustomerOrgRegisterId
& & patientRegister . CompleteFlag ! = PatientRegisterCompleteFlag . PreRegistration
select new
{
patientRegister ,
poisonName = poisonHaveEmpty . DisplayName ,
occupationalAbnormalId = patientPoisonHaveEmpty . OccupationalAbnormalId ,
patientOccupationalDisease ,
sumSummaryHeaderHaveEmpty ,
//sumSummaryContentHaveEmpty,
idNo = patient . IdNo
} ) ;
if ( ! string . IsNullOrEmpty ( customerOrgPara . StartDate ) & & ! string . IsNullOrEmpty ( customerOrgPara . EndDate ) )
{
if ( customerOrgPara . DateType = = '1' )
{
patientRegisterAbnormalQuery = patientRegisterAbnormalQuery . Where ( m = > m . patientRegister . CreationTime > = Convert . ToDateTime ( customerOrgPara . StartDate ) & &
m . patientRegister . CreationTime < Convert . ToDateTime ( customerOrgPara . EndDate ) . AddDays ( 1 ) ) ;
}
else if ( customerOrgPara . DateType = = '2' )
{
patientRegisterAbnormalQuery = patientRegisterAbnormalQuery . 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' )
{
patientRegisterAbnormalQuery = patientRegisterAbnormalQuery . 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 ( ) )
{
patientRegisterAbnormalQuery = patientRegisterAbnormalQuery . Where ( m = > m . patientRegister . CustomerOrgGroupId ! = null & & customerOrgPara . CustomerOrgGroupId . Contains ( m . patientRegister . CustomerOrgGroupId . Value ) ) ;
}
var patientRegisterAbnormalList = patientRegisterAbnormalQuery . ToList ( ) ;
var reviewPersonnelDetails = patientRegisterAbnormalList . Where ( m = > m . occupationalAbnormalId = = reviewId ) . GroupBy ( g = > g . patientRegister )
. Select ( ( s , index ) = > new GetCompanyOccupationalDiseaseDetailReportReviewPersonnelDetailDto
{
IdNo = s . FirstOrDefault ( ) . idNo ,
DisplayOrder = index + 1 ,
PatientName = s . Key . PatientName ,
PatientRegisterNo = s . Key . PatientRegisterNo ,
PoisonName = string . Join ( "," , s . Select ( ss = > ss . poisonName ) . Distinct ( ) ) ,
CheckResult = SetSumSummarys ( s . Select ( ss = > ss . sumSummaryHeaderHaveEmpty ) . Distinct ( ) . ToList ( ) ) ,
HandlingSuggestions = $"{s.FirstOrDefault().patientOccupationalDisease.OccupationalAbnormal}\n{s.FirstOrDefault().patientOccupationalDisease.OccupationalAbSuggestion}"
} ) . ToList ( ) ;
msg . ReviewPersonnelDetails = reviewPersonnelDetails ;
#endregion
#region 职业禁忌证人员一览表
//职业禁忌证结论ID
Guid contraindicationId = ( await _occupationalAbnormalRepository . FirstOrDefaultAsync ( f = > f . DisplayName . Contains ( "禁忌" ) ) ) . Id ;
var occupationalContraindicationDetails = patientRegisterAbnormalList . Where ( m = > m . occupationalAbnormalId = = contraindicationId ) . GroupBy ( g = > g . patientRegister )
. Select ( ( s , index ) = > new GetCompanyOccupationalDiseaseDetailReportOccupationalContraindicationDetailDto
{
IdNo = s . FirstOrDefault ( ) . idNo ,
DisplayOrder = index + 1 ,
PatientName = s . Key . PatientName ,
PatientRegisterNo = s . Key . PatientRegisterNo ,
PoisonName = string . Join ( "," , s . Select ( ss = > ss . poisonName ) . Distinct ( ) ) ,
CheckResult = SetSumSummarys ( s . Select ( ss = > ss . sumSummaryHeaderHaveEmpty ) . Distinct ( ) . ToList ( ) ) ,
HandlingSuggestions = $"{s.FirstOrDefault().patientOccupationalDisease.OccupationalAbnormal}\n{s.FirstOrDefault().patientOccupationalDisease.OccupationalAbSuggestion}"
} ) . ToList ( ) ;
msg . OccupationalContraindicationDetails = occupationalContraindicationDetails ;
#endregion
#region 疑似职业病人员一览表
//疑似职业病结论ID
Guid suspectedOccupationalDiseaseId = ( await _occupationalAbnormalRepository . FirstOrDefaultAsync ( f = > f . DisplayName . Contains ( "疑似" ) ) ) . Id ;
var suspectedOccupationalDiseaseDetails = patientRegisterAbnormalList . Where ( m = > m . occupationalAbnormalId = = suspectedOccupationalDiseaseId ) . GroupBy ( g = > g . patientRegister )
. Select ( ( s , index ) = > new GetCompanyOccupationalDiseaseDetailReportSuspectedOccupationalDiseaseDetailDto
{
IdNo = s . FirstOrDefault ( ) . idNo ,
DisplayOrder = index + 1 ,
PatientName = s . Key . PatientName ,
PatientRegisterNo = s . Key . PatientRegisterNo ,
PoisonName = string . Join ( "," , s . Select ( ss = > ss . poisonName ) . Distinct ( ) ) ,
CheckResult = SetSumSummarys ( s . Select ( ss = > ss . sumSummaryHeaderHaveEmpty ) . Distinct ( ) . ToList ( ) ) ,
HandlingSuggestions = $"{s.FirstOrDefault().patientOccupationalDisease.OccupationalAbnormal}\n{s.FirstOrDefault().patientOccupationalDisease.OccupationalAbSuggestion}"
} ) . ToList ( ) ;
msg . SuspectedOccupationalDiseaseDetails = suspectedOccupationalDiseaseDetails ;
#endregion
}
@ -398,5 +662,37 @@ namespace Shentun.Peis.OccupationalDiseaseReports
}
/// <summary>
/// 生成历次综述医生小结
/// </summary>
/// <param name="SumSummaryHeaders"></param>
/// <returns></returns>
private string SetSumSummarys ( List < SumSummaryHeader > SumSummaryHeaders )
{
StringBuilder msg = new StringBuilder ( ) ;
if ( SumSummaryHeaders . Count > 0 )
{
foreach ( var item in SumSummaryHeaders )
{
if ( item ! = null )
{
msg . Append ( $"【{item.SummaryTitle}】\n" ) ;
if ( item . SumSummaryContents . Count > 0 )
{
var SumSummaryContents = item . SumSummaryContents . ToList ( ) ;
foreach ( var item2 in SumSummaryContents )
{
msg . Append ( $"{item2.SummaryContent}\n" ) ;
}
}
}
}
}
return msg . ToString ( ) ;
}
}
}