diff --git a/src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailByPatientRegisterIdDto.cs b/src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailByPatientRegisterIdDto.cs index b42548f8..fbf0980d 100644 --- a/src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailByPatientRegisterIdDto.cs +++ b/src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailByPatientRegisterIdDto.cs @@ -6,16 +6,35 @@ namespace Shentun.Peis.OccupationalDiseases { public class OccupationalDiseaseWithDetailByPatientRegisterIdDto { + /// + /// 职业病基本信息 + /// public PatientOccupationalDiseaseDto PatientOccupationalDisease { get; set; } + /// + /// 毒害因素 + /// public List PatientPoisonDtos { get; set; } + /// + /// 职业病史 + /// public List PatientOccupationalMedicalHistoryDtos { get; set; } + /// + /// 既往病史 + /// public List PatientPastMedicalHistoryDtos { get; set; } - public List PatientSymptomDtos { get; set; } + /// + /// 职业史 + /// public List PatientOccupationalHistoryDtos { get; set; } + + /// + /// 症状 + /// + public List PatientSymptomDtos { get; set; } } } diff --git a/src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailInputDto.cs b/src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailInputDto.cs index 24cba204..65c6dfee 100644 --- a/src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailInputDto.cs +++ b/src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailInputDto.cs @@ -226,6 +226,11 @@ namespace Shentun.Peis.OccupationalDiseases /// 毒害因素ID /// public Guid PoisonId { get; set; } + + /// + /// 毒害因素ID + /// + public Guid OccupationalAbnormalId { get; set; } } public class PatientOccupationalHistoryInputDto diff --git a/src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterOrNoDto.cs b/src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterOrNoDto.cs index 345f9fae..17268a31 100644 --- a/src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterOrNoDto.cs +++ b/src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterOrNoDto.cs @@ -330,5 +330,10 @@ namespace Shentun.Peis.PatientRegisters public List RegisterCheckAsbitems { get; set; } + /// + /// 是否为职业病 + /// + public char IsPatientOccupationalDisease { get; set; } = 'N'; + } } diff --git a/src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportDto.cs b/src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportDto.cs index 703b0d60..837953ee 100644 --- a/src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportDto.cs +++ b/src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportDto.cs @@ -113,5 +113,10 @@ namespace Shentun.Peis.PeisReports /// 地址 /// public string? Address { get; set; } + + /// + /// 是否为职业病 + /// + public char IsPatientOccupationalDisease { get; set; } = 'N'; } } diff --git a/src/Shentun.Peis.Application.Contracts/PrintReports/OccupationalDiseaseMedicalReportDto.cs b/src/Shentun.Peis.Application.Contracts/PrintReports/OccupationalDiseaseMedicalReportDto.cs new file mode 100644 index 00000000..1bcd608c --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/PrintReports/OccupationalDiseaseMedicalReportDto.cs @@ -0,0 +1,327 @@ +using Shentun.Peis.OcCheckTypes; +using Shentun.Peis.OccupationalDiseases; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text; + +namespace Shentun.Peis.PrintReports +{ + public class OccupationalDiseaseMedicalReportDto: MedicalReportDto + { + /// + /// 职业病检查类别 + /// + public List OcCheckTypeDtos { get; set; } + + /// + /// 职业病基本信息 + /// + public OccupationalDiseaseMedicalReport_PatientOccupationalDiseaseDto PatientOccupationalDisease { get; set; } + + /// + /// 职业史 + /// + public List PatientOccupationalHistoryDtos { get; set; } + + /// + /// 毒害因素 + /// + public List PatientPoisonDtos { get; set; } + + /// + /// 职业病症状 + /// + public List PatientSymptomDtos { get; set; } + + /// + /// 职业病史 + /// + public List PatientOccupationalMedicalHistoryDtos { get; set; } + + /// + /// 既往病史 + /// + public List PatientPastMedicalHistoryDtos { get; set; } + } + + public class OccupationalDiseaseMedicalReport_OcCheckTypeDto + { + /// + /// ID + /// + public Guid OcCheckTypeId { get; set; } + + /// + /// 职业病检查类别名称 + /// + public string DisplayName { get; set; } + /// + /// 自定义简码 + /// + public string SimpleCode { get; set; } + /// + /// 显示顺序 + /// + public int DisplayOrder { get; set; } + } + + + /// + /// 职业病基本信息 + /// + public class OccupationalDiseaseMedicalReport_PatientOccupationalDiseaseDto + { + /// + /// 职业病检查类别 + /// + public Guid OcCheckTypeId { get; set; } + + /// + /// 职业病检查类别名称 + /// + public string OcCheckTypeName { get; set; } + + /// + /// 工种 + /// + public string JobType { get; set; } + + + /// + /// 总工龄 + /// + public string TotalWorkTime { get; set; } + + /// + /// 接害工龄 + /// + public string PoisonWorkTime { get; set; } + + /// + /// 接害因素 + /// + public string RiskFactors { get; set; } + + /// + /// 家族遗传病史 + /// + public string FamilyGeneticHistory { get; set; } + + + + /// + /// 末次月经日期 + /// + public string LastMenstrualPeriodDate { get; set; } + + /// + /// 初潮多少岁 + /// + public int? FirstMenstruation { get; set; } + + /// + /// 经期多少天 + /// + public int? MenstruationTimeLength { get; set; } + + /// + /// 周期多少天 + /// + public int? MenstruationCycle { get; set; } + + /// + /// 停经多少岁 + /// + public int? MenstruationEndAge { get; set; } + + /// + /// 经期 + /// + public char? MenstruationFlag { get; set; } + + /// + /// 现有子女人数 + /// + public int? ChildrenNum { get; set; } + + /// + /// 流产次数 + /// + public int? AbortionTimes { get; set; } + + /// + /// 早产次数 + /// + public int? PrematureBirthTimes { get; set; } + + /// + /// 死产次数 + /// + public int? StillbirthTimes { get; set; } + + /// + /// 异常胎次数 + /// + public int? AbnormalTimes { get; set; } + + /// + /// 抽烟史 + /// + public char? SmokeFlag { get; set; } + + /// + /// 每天多少支 + /// + public int? SmokeNum { get; set; } + + /// + /// 抽烟年限 + /// + public int? SmokeYears { get; set; } + + /// + /// 饮酒史 + /// + public char? DrinkFlag { get; set; } + + /// + /// 每次多少ml + /// + public int? DrinkNum { get; set; } + + /// + /// 饮酒年限 + /// + public int? DrinkYears { get; set; } + + /// + /// 其他 + /// + public string Other { get; set; } + + /// + /// 职业性异常 + /// + public string OccupationalAbnormal { get; set; } + + /// + /// 非职业性异常 + /// + public string NoOccupationalAbnormal { get; set; } + + /// + /// 职业性异常建议 + /// + public string OccupationalAbSuggestion { get; set; } + + /// + /// 非职业性异常建议 + /// + public string NoOccupAbSuggestion { get; set; } + + /// + /// 处理意见 + /// + public string HandleSuggestion { get; set; } + } + + + /// + /// 职业病毒害因素 + /// + public class OccupationalDiseaseMedicalReport_PatientPoisonDto + { + public string PoisonName { get; set; } + + /// + /// 职业体检结论ID + /// + public string OccupationalAbnormalName { get; set; } + } + + /// + /// 职业病症状 + /// + public class OccupationalDiseaseMedicalReport_PatientSymptomDto + { + + public string SymptomName { get; set; } + /// + /// 程度 + /// + public string Degree { get; set; } + + /// + /// 时间 + /// + public string TimeLength { get; set; } + } + + /// + /// 职业史 + /// + public class OccupationalDiseaseMedicalReport_PatientOccupationalHistoryDto + { + /// + /// 单位 + /// + public string Org { get; set; } + /// + /// 开始日期 + /// + public string BeginDate { get; set; } + + /// + /// 结束日期 + /// + public string EndDate { get; set; } + + /// + /// 车间 + /// + public string WorkShop { get; set; } + + /// + /// 工种 + /// + public string WorkType { get; set; } + + /// + /// 毒害因素 + /// + public string Poison { get; set; } + + /// + /// 防护措施 + /// + public string ProtectiveMeasures { get; set; } + } + + public class OccupationalDiseaseMedicalReport_PatientOccupationalMedicalHistoryDto + { + /// + /// 病名 + /// + public string OccupationalDisease { get; set; } + /// + /// 诊断日期 + /// + public string DiagnosisDate { get; set; } + + /// + /// 诊断单位 + /// + public string DiagnosisHospital { get; set; } + + /// + /// 是否恢复 + /// + public char? IsRecovery { get; set; } + + /// + /// 治疗方式 + /// + public string TreatmentMethods { get; set; } + } +} diff --git a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs index d3c574ee..3c42d4bb 100644 --- a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs +++ b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs @@ -15,6 +15,7 @@ using Shentun.Peis.CustomerOrgs; using Shentun.Peis.Enums; using Shentun.Peis.LisRequests; using Shentun.Peis.Models; +using Shentun.Peis.PatientOccupationalDiseases; using Shentun.Peis.PatientRegisterExters; using Shentun.Peis.Patients; using Shentun.Peis.PeisReports; @@ -111,6 +112,7 @@ namespace Shentun.Peis.PatientRegisters private readonly IConfiguration _configuration; private readonly ICurrentUser _currentUser; private readonly IRepository _userItemTypeRepository; + private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager; public PatientRegisterAppService( IRepository repository, IRepository patientRepository, @@ -160,7 +162,8 @@ namespace Shentun.Peis.PatientRegisters IRepository lisRequestRepository, IConfiguration configuration, ICurrentUser currentUser, - IRepository userItemTypeRepository) + IRepository userItemTypeRepository, + PatientOccupationalDiseaseManager patientOccupationalDiseaseManager) : base(repository) { this._repository = repository; @@ -212,6 +215,7 @@ namespace Shentun.Peis.PatientRegisters _configuration = configuration; _currentUser = currentUser; _userItemTypeRepository = userItemTypeRepository; + _patientOccupationalDiseaseManager = patientOccupationalDiseaseManager; } /// /// 获取通过主键 @@ -739,8 +743,6 @@ namespace Shentun.Peis.PatientRegisters { throw new UserFriendlyException("未找到人员信息"); } - - } else if (!string.IsNullOrWhiteSpace(input.PatientNo)) @@ -836,7 +838,8 @@ namespace Shentun.Peis.PatientRegisters Telephone = ent.Patient.Telephone, CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).Result, CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).Result.Id, - CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).Result.DisplayName + CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).Result.DisplayName, + IsPatientOccupationalDisease = _patientOccupationalDiseaseManager.GetPatientRegisterIsOccupationalDisease(ent.Id).Result }; return entdto; } diff --git a/src/Shentun.Peis.Application/PeisApplicationAutoMapperProfile.cs b/src/Shentun.Peis.Application/PeisApplicationAutoMapperProfile.cs index 8bca1321..9013cec3 100644 --- a/src/Shentun.Peis.Application/PeisApplicationAutoMapperProfile.cs +++ b/src/Shentun.Peis.Application/PeisApplicationAutoMapperProfile.cs @@ -1,4 +1,5 @@ using AutoMapper; +using AutoMapper.Internal.Mappers; using Shentun.Peis.AsbitemDetails; using Shentun.Peis.AsbitemGuides; using Shentun.Peis.Asbitems; @@ -57,6 +58,7 @@ using Shentun.Peis.PersonnelTypes; using Shentun.Peis.Poisons; using Shentun.Peis.PoisonTypes; using Shentun.Peis.PriceItems; +using Shentun.Peis.PrintReports; using Shentun.Peis.ProtectiveMeasuress; using Shentun.Peis.ReferenceRanges; using Shentun.Peis.RegisterAsbitems; @@ -85,6 +87,7 @@ using Shentun.Peis.SysParmValues; using Shentun.Peis.ThirdInterfaces; using Shentun.Peis.Units; using System; +using System.Collections.Generic; using Volo.Abp.Identity; namespace Shentun.Peis; @@ -517,6 +520,8 @@ public class PeisApplicationAutoMapperProfile : Profile CreateMap() .ForMember(d => d.DiagnosisDate, opt => opt.MapFrom(src => PageHelper.ConvertDatetimeV(src.DiagnosisDate))); + CreateMap(); + CreateMap(); CreateMap(); @@ -530,7 +535,11 @@ public class PeisApplicationAutoMapperProfile : Profile CreateMap(); CreateMap(); + + + //ְҵ + CreateMap(); } diff --git a/src/Shentun.Peis.Application/PeisReports/PeisReportAppService.cs b/src/Shentun.Peis.Application/PeisReports/PeisReportAppService.cs index 0a88fff3..92bfe188 100644 --- a/src/Shentun.Peis.Application/PeisReports/PeisReportAppService.cs +++ b/src/Shentun.Peis.Application/PeisReports/PeisReportAppService.cs @@ -4,6 +4,7 @@ using Microsoft.EntityFrameworkCore; using Shentun.Peis.CustomerOrgs; using Shentun.Peis.Enums; using Shentun.Peis.Models; +using Shentun.Peis.PatientOccupationalDiseases; using Shentun.Peis.PatientRegisters; using Shentun.Peis.SampleTypes; using System; @@ -37,7 +38,7 @@ namespace Shentun.Peis.PeisReports private readonly IRepository _asbitemRepository; private readonly CustomerOrgManager _customerOrgManager; private readonly CacheService _cacheService; - + private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager; public PeisReportAppService( IRepository patientRegisterRepository, IRepository patientRepository, @@ -51,7 +52,8 @@ namespace Shentun.Peis.PeisReports IRepository registerCheckRepository, IRepository asbitemRepository, CustomerOrgManager customerOrgManager, - CacheService cacheService) + CacheService cacheService, + PatientOccupationalDiseaseManager patientOccupationalDiseaseManager) { this._patientRegisterRepository = patientRegisterRepository; this._patientRepository = patientRepository; @@ -66,6 +68,7 @@ namespace Shentun.Peis.PeisReports this._asbitemRepository = asbitemRepository; this._customerOrgManager = customerOrgManager; this._cacheService = cacheService; + _patientOccupationalDiseaseManager = patientOccupationalDiseaseManager; } @@ -342,7 +345,8 @@ namespace Shentun.Peis.PeisReports PersonnelTypeName = s.FirstOrDefault().af.DisplayName, SexName = s.FirstOrDefault().ag.DisplayName, Telephone = s.FirstOrDefault().ab.Telephone, - PatientRegisterId = s.FirstOrDefault().a.Id + PatientRegisterId = s.FirstOrDefault().a.Id, + IsPatientOccupationalDisease = _patientOccupationalDiseaseManager.GetPatientRegisterIsOccupationalDisease(s.FirstOrDefault().a.Id).Result }); } diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs index fa1b8267..0568d320 100644 --- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs +++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs @@ -8,6 +8,8 @@ using Shentun.Peis.AsbitemGuides; using Shentun.Peis.Enums; using Shentun.Peis.LisRequests; using Shentun.Peis.Models; +using Shentun.Peis.OcCheckTypes; +using Shentun.Peis.OccupationalDiseases; using Shentun.Peis.PatientRegisters; using Shentun.Peis.SumSuggestionContents; using Shentun.Peis.SumSuggestionHeaders; @@ -15,6 +17,7 @@ using Shentun.Peis.SumSummaryContents; using Shentun.Peis.SumSummaryHeaders; using Shentun.Peis.SumSummaryReports; using Shentun.Peis.SysParmValues; +using SqlSugar.Extensions; using System; using System.Collections.Generic; using System.Linq; @@ -24,6 +27,7 @@ using Volo.Abp; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; +using Volo.Abp.ObjectMapping; using Volo.Abp.Uow; namespace Shentun.Peis.PrintReports @@ -72,6 +76,18 @@ namespace Shentun.Peis.PrintReports private readonly IUnitOfWorkManager _unitOfWorkManager; private static AsbitemGuideManager _asbitemGuideManager; private readonly IConfiguration _configuration; + private readonly IRepository _patientOccupationalDiseaseRepository; + private readonly IRepository _patientOccupationalHistoryRepository; + private readonly IRepository _patientPoisonRepository; + private readonly IRepository _patientSymptomRepository; + private readonly IRepository _patientOccupationalMedicalHistoryRepository; + private readonly IRepository _patientPastMedicalHistoryRepository; + private readonly IRepository _ocCheckTypeRepository; + private readonly IRepository _poisonRepository; + private readonly IRepository _occupationalAbnormalRepository; + private readonly IRepository _symptomRepository; + + public PrintReportAppService( IRepository patientRepository, IRepository customerOrgRepository, @@ -109,8 +125,18 @@ namespace Shentun.Peis.PrintReports LisRequestManager lisRequestManager, IUnitOfWorkManager unitOfWorkManager, AsbitemGuideManager asbitemGuideManager, - IConfiguration configuration - ) + IConfiguration configuration, + IRepository patientOccupationalDiseaseRepository, + IRepository patientOccupationalHistoryRepository, + IRepository patientPoisonRepository, + IRepository patientSymptomRepository, + IRepository patientOccupationalMedicalHistoryRepository, + IRepository patientPastMedicalHistoryRepository +, + IRepository ocCheckTypeRepository, + IRepository poisonRepository, + IRepository occupationalAbnormalRepository, + IRepository symptomRepository) { this._customerOrgRepository = customerOrgRepository; this._patientRegisterRepository = patientRegisterRepository; @@ -149,6 +175,16 @@ namespace Shentun.Peis.PrintReports _personnelTypeRepository = personnelTypeRepository; _configuration = configuration; _organizationUnitRepository = organizationUnitRepository; + _patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository; + _patientOccupationalHistoryRepository = patientOccupationalHistoryRepository; + _patientPoisonRepository = patientPoisonRepository; + _patientSymptomRepository = patientSymptomRepository; + _patientOccupationalMedicalHistoryRepository = patientOccupationalMedicalHistoryRepository; + _patientPastMedicalHistoryRepository = patientPastMedicalHistoryRepository; + _ocCheckTypeRepository = ocCheckTypeRepository; + _poisonRepository = poisonRepository; + _occupationalAbnormalRepository = occupationalAbnormalRepository; + _symptomRepository = symptomRepository; } @@ -463,6 +499,177 @@ namespace Shentun.Peis.PrintReports + /// + /// 获取职业病体检报告 + /// + /// + /// + [HttpPost("api/app/PrintReport/GetOccupationalDiseaseMedicalReport")] + public async Task GetOccupationalDiseaseMedicalReportAsync(PatientRegisterIdInputDto input) + { + var result = new OccupationalDiseaseMedicalReportDto(); + + var patientOccupationalDiseaseEnt = (from patientOccupationalDisease in await _patientOccupationalDiseaseRepository.GetQueryableAsync() + join ocCheckType in await _ocCheckTypeRepository.GetQueryableAsync() on patientOccupationalDisease.OcCheckTypeId equals ocCheckType.Id + where patientOccupationalDisease.PatientRegisterId == input.PatientRegisterId + select new + { + ocCheckTypeName = ocCheckType.DisplayName, + patientOccupationalDisease + }).FirstOrDefault(); + + if (patientOccupationalDiseaseEnt == null) + { + throw new UserFriendlyException("当前人员无职业病信息"); + } + //基础报告信息 + var medicalReportDto = await GetMedicalReportAsync(input); + result = ObjectMapper.Map(medicalReportDto); + + #region 检查类别 + + var ocCheckTypeList = await _ocCheckTypeRepository.GetListAsync(); + if (ocCheckTypeList.Any()) + { + result.OcCheckTypeDtos = ocCheckTypeList.Select(s => new OccupationalDiseaseMedicalReport_OcCheckTypeDto + { + DisplayName = s.DisplayName, + DisplayOrder = s.DisplayOrder, + OcCheckTypeId = s.Id, + SimpleCode = s.SimpleCode + }).ToList(); + } + #endregion + + #region 职业病基本信息 + + result.PatientOccupationalDisease = new OccupationalDiseaseMedicalReport_PatientOccupationalDiseaseDto + { + OcCheckTypeName = patientOccupationalDiseaseEnt.ocCheckTypeName, + AbnormalTimes = patientOccupationalDiseaseEnt.patientOccupationalDisease.AbnormalTimes, + AbortionTimes = patientOccupationalDiseaseEnt.patientOccupationalDisease.AbortionTimes, + ChildrenNum = patientOccupationalDiseaseEnt.patientOccupationalDisease.ChildrenNum, + DrinkFlag = patientOccupationalDiseaseEnt.patientOccupationalDisease.DrinkFlag, + DrinkNum = patientOccupationalDiseaseEnt.patientOccupationalDisease.DrinkNum, + DrinkYears = patientOccupationalDiseaseEnt.patientOccupationalDisease.DrinkYears, + FirstMenstruation = patientOccupationalDiseaseEnt.patientOccupationalDisease.FirstMenstruation, + HandleSuggestion = patientOccupationalDiseaseEnt.patientOccupationalDisease.HandleSuggestion, + JobType = patientOccupationalDiseaseEnt.patientOccupationalDisease.JobType, + LastMenstrualPeriodDate = DataHelper.ConversionDateToString(patientOccupationalDiseaseEnt.patientOccupationalDisease.LastMenstrualPeriodDate), + MenstruationCycle = patientOccupationalDiseaseEnt.patientOccupationalDisease.MenstruationCycle, + MenstruationEndAge = patientOccupationalDiseaseEnt.patientOccupationalDisease.MenstruationEndAge, + MenstruationFlag = patientOccupationalDiseaseEnt.patientOccupationalDisease.MenstruationFlag, + MenstruationTimeLength = patientOccupationalDiseaseEnt.patientOccupationalDisease.MenstruationTimeLength, + NoOccupAbSuggestion = patientOccupationalDiseaseEnt.patientOccupationalDisease.NoOccupAbSuggestion, + NoOccupationalAbnormal = patientOccupationalDiseaseEnt.patientOccupationalDisease.NoOccupationalAbnormal, + OcCheckTypeId = patientOccupationalDiseaseEnt.patientOccupationalDisease.OcCheckTypeId, + OccupationalAbnormal = patientOccupationalDiseaseEnt.patientOccupationalDisease.OccupationalAbnormal, + OccupationalAbSuggestion = patientOccupationalDiseaseEnt.patientOccupationalDisease.OccupationalAbSuggestion, + Other = patientOccupationalDiseaseEnt.patientOccupationalDisease.Other, + PoisonWorkTime = patientOccupationalDiseaseEnt.patientOccupationalDisease.PoisonWorkTime, + PrematureBirthTimes = patientOccupationalDiseaseEnt.patientOccupationalDisease.PrematureBirthTimes, + FamilyGeneticHistory = patientOccupationalDiseaseEnt.patientOccupationalDisease.FamilyGeneticHistory, + RiskFactors = patientOccupationalDiseaseEnt.patientOccupationalDisease.RiskFactors, + SmokeFlag = patientOccupationalDiseaseEnt.patientOccupationalDisease.SmokeFlag, + SmokeNum = patientOccupationalDiseaseEnt.patientOccupationalDisease.SmokeNum, + SmokeYears = patientOccupationalDiseaseEnt.patientOccupationalDisease.SmokeYears, + StillbirthTimes = patientOccupationalDiseaseEnt.patientOccupationalDisease.StillbirthTimes, + TotalWorkTime = patientOccupationalDiseaseEnt.patientOccupationalDisease.TotalWorkTime + }; + #endregion + + #region 职业史 + + var patientOccupationalHistoryList = await _patientOccupationalHistoryRepository.GetListAsync(m => m.PatientRegisterId == input.PatientRegisterId); + result.PatientOccupationalHistoryDtos = patientOccupationalHistoryList.Select(s => new OccupationalDiseaseMedicalReport_PatientOccupationalHistoryDto + { + BeginDate = DataHelper.ConversionDateToString(s.BeginDate), + EndDate = DataHelper.ConversionDateToString(s.EndDate), + Org = s.Org, + Poison = s.Poison, + ProtectiveMeasures = s.ProtectiveMeasures, + WorkShop = s.WorkShop, + WorkType = s.WorkType + + }).ToList(); + #endregion + + + #region 毒害因素 + var patientPoisonDtoList = from patientPoison in await _patientPoisonRepository.GetQueryableAsync() + join poison in await _poisonRepository.GetQueryableAsync() on patientPoison.PoisonId equals poison.Id into poisonTemp + from poisonHaveEmpty in poisonTemp.DefaultIfEmpty() + join occupationalAbnormal in await _occupationalAbnormalRepository.GetQueryableAsync() on patientPoison.OccupationalAbnormalId equals occupationalAbnormal.Id into occupationalAbnormalTemp + from occupationalAbnormalHaveEmpty in occupationalAbnormalTemp.DefaultIfEmpty() + where patientPoison.PatientRegisterId == input.PatientRegisterId + select new + { + OccupationalAbnormalName = occupationalAbnormalHaveEmpty != null ? occupationalAbnormalHaveEmpty.DisplayName : "", + PoisonName = poisonHaveEmpty != null ? poisonHaveEmpty.DisplayName : "" + }; + result.PatientPoisonDtos = patientPoisonDtoList.Select(s => new OccupationalDiseaseMedicalReport_PatientPoisonDto + { + OccupationalAbnormalName = s.OccupationalAbnormalName, + PoisonName = s.PoisonName + }).ToList(); + + #endregion + + #region 职业病症状 + var patientSymptomList = from patientSymptom in await _patientSymptomRepository.GetQueryableAsync() + join symptom in await _symptomRepository.GetQueryableAsync() on patientSymptom.SymptomId equals symptom.Id into symptomTemp + from symptomHaveEmpty in symptomTemp.DefaultIfEmpty() + where patientSymptom.PatientRegisterId == input.PatientRegisterId + select new + { + patientSymptom, + SymptomName = symptomHaveEmpty != null ? symptomHaveEmpty.DisplayName : "" + }; + + result.PatientSymptomDtos = patientSymptomList.Select(s => new OccupationalDiseaseMedicalReport_PatientSymptomDto + { + Degree = s.patientSymptom.Degree, + SymptomName = s.SymptomName, + TimeLength = s.patientSymptom.TimeLength + }).ToList(); + #endregion + + #region 职业病史 + + var patientOccupationalMedicalHistoryList = await _patientOccupationalMedicalHistoryRepository.GetListAsync(m => m.PatientRegisterId == input.PatientRegisterId); + result.PatientOccupationalMedicalHistoryDtos = patientOccupationalMedicalHistoryList.Select(s => new OccupationalDiseaseMedicalReport_PatientOccupationalMedicalHistoryDto + { + DiagnosisDate = DataHelper.ConversionDateToString(s.DiagnosisDate), + DiagnosisHospital = s.DiagnosisHospital, + IsRecovery = s.IsRecovery, + OccupationalDisease = s.OccupationalDisease, + TreatmentMethods = s.TreatmentMethods + }).ToList(); + + + #endregion + + #region 既往病史 + + var patientPastMedicalHistoryList = await _patientPastMedicalHistoryRepository.GetListAsync(m => m.PatientRegisterId == input.PatientRegisterId); + result.PatientPastMedicalHistoryDtos = patientPastMedicalHistoryList.Select(s => new OccupationalDiseaseMedicalReport_PatientOccupationalMedicalHistoryDto + { + DiagnosisDate = DataHelper.ConversionDateToString(s.DiagnosisDate), + DiagnosisHospital = s.DiagnosisHospital, + IsRecovery = s.IsRecovery, + OccupationalDisease = s.OccupationalDisease, + TreatmentMethods = s.TreatmentMethods + }).ToList(); + + #endregion + + return result; + + + + } + + /// /// 打印Pacs条码数据 /// @@ -614,9 +821,9 @@ namespace Shentun.Peis.PrintReports DepartmentName = "" }; } - + } - + } return pacsNoReportDto; diff --git a/src/Shentun.Peis.Domain/PatientOccupationalDiseases/PatientOccupationalDiseaseManager.cs b/src/Shentun.Peis.Domain/PatientOccupationalDiseases/PatientOccupationalDiseaseManager.cs index 764c2144..6651a343 100644 --- a/src/Shentun.Peis.Domain/PatientOccupationalDiseases/PatientOccupationalDiseaseManager.cs +++ b/src/Shentun.Peis.Domain/PatientOccupationalDiseases/PatientOccupationalDiseaseManager.cs @@ -14,8 +14,13 @@ namespace Shentun.Peis.PatientOccupationalDiseases { public class PatientOccupationalDiseaseManager : DomainService { - public PatientOccupationalDiseaseManager() + + private readonly IRepository _patientOccupationalDiseaseRepository; + public PatientOccupationalDiseaseManager( + IRepository patientOccupationalDiseaseRepository + ) { + _patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository; } /// @@ -102,5 +107,25 @@ namespace Shentun.Peis.PatientOccupationalDiseases targetEntity.FamilyGeneticHistory = sourceEntity.FamilyGeneticHistory; targetEntity.RiskFactors = sourceEntity.RiskFactors; } + + + /// + /// 判断人员是否登记职业病信息 + /// + /// + /// + public async Task GetPatientRegisterIsOccupationalDisease(Guid PatientRegisterId) + { + var isPatientOccupationalDisease = await _patientOccupationalDiseaseRepository.FirstOrDefaultAsync(c => c.PatientRegisterId == PatientRegisterId); + if (isPatientOccupationalDisease != null) + { + return 'Y'; + } + else + { + return 'N'; + } + } + } }