@ -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 ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}