Browse Source

职业病

bjmzak
wxd 2 years ago
parent
commit
9186eba52b
  1. 21
      src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailByPatientRegisterIdDto.cs
  2. 5
      src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailInputDto.cs
  3. 5
      src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterOrNoDto.cs
  4. 5
      src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportDto.cs
  5. 327
      src/Shentun.Peis.Application.Contracts/PrintReports/OccupationalDiseaseMedicalReportDto.cs
  6. 11
      src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
  7. 9
      src/Shentun.Peis.Application/PeisApplicationAutoMapperProfile.cs
  8. 10
      src/Shentun.Peis.Application/PeisReports/PeisReportAppService.cs
  9. 215
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  10. 27
      src/Shentun.Peis.Domain/PatientOccupationalDiseases/PatientOccupationalDiseaseManager.cs

21
src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailByPatientRegisterIdDto.cs

@ -6,16 +6,35 @@ namespace Shentun.Peis.OccupationalDiseases
{ {
public class OccupationalDiseaseWithDetailByPatientRegisterIdDto public class OccupationalDiseaseWithDetailByPatientRegisterIdDto
{ {
/// <summary>
/// 职业病基本信息
/// </summary>
public PatientOccupationalDiseaseDto PatientOccupationalDisease { get; set; } public PatientOccupationalDiseaseDto PatientOccupationalDisease { get; set; }
/// <summary>
/// 毒害因素
/// </summary>
public List<PatientPoisonDto> PatientPoisonDtos { get; set; } public List<PatientPoisonDto> PatientPoisonDtos { get; set; }
/// <summary>
/// 职业病史
/// </summary>
public List<PatientOccupationalMedicalHistoryDto> PatientOccupationalMedicalHistoryDtos { get; set; } public List<PatientOccupationalMedicalHistoryDto> PatientOccupationalMedicalHistoryDtos { get; set; }
/// <summary>
/// 既往病史
/// </summary>
public List<PatientPastMedicalHistoryDto> PatientPastMedicalHistoryDtos { get; set; } public List<PatientPastMedicalHistoryDto> PatientPastMedicalHistoryDtos { get; set; }
public List<PatientSymptomDto> PatientSymptomDtos { get; set; }
/// <summary>
/// 职业史
/// </summary>
public List<PatientOccupationalHistoryDto> PatientOccupationalHistoryDtos { get; set; } public List<PatientOccupationalHistoryDto> PatientOccupationalHistoryDtos { get; set; }
/// <summary>
/// 症状
/// </summary>
public List<PatientSymptomDto> PatientSymptomDtos { get; set; }
} }
} }

5
src/Shentun.Peis.Application.Contracts/OccupationalDiseases/OccupationalDiseaseWithDetailInputDto.cs

@ -226,6 +226,11 @@ namespace Shentun.Peis.OccupationalDiseases
/// 毒害因素ID /// 毒害因素ID
/// </summary> /// </summary>
public Guid PoisonId { get; set; } public Guid PoisonId { get; set; }
/// <summary>
/// 毒害因素ID
/// </summary>
public Guid OccupationalAbnormalId { get; set; }
} }
public class PatientOccupationalHistoryInputDto public class PatientOccupationalHistoryInputDto

5
src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterOrNoDto.cs

@ -330,5 +330,10 @@ namespace Shentun.Peis.PatientRegisters
public List<RegisterCheckAsbitemOrAsbitemDto> RegisterCheckAsbitems { get; set; } public List<RegisterCheckAsbitemOrAsbitemDto> RegisterCheckAsbitems { get; set; }
/// <summary>
/// 是否为职业病
/// </summary>
public char IsPatientOccupationalDisease { get; set; } = 'N';
} }
} }

5
src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportDto.cs

@ -113,5 +113,10 @@ namespace Shentun.Peis.PeisReports
/// 地址 /// 地址
/// </summary> /// </summary>
public string? Address { get; set; } public string? Address { get; set; }
/// <summary>
/// 是否为职业病
/// </summary>
public char IsPatientOccupationalDisease { get; set; } = 'N';
} }
} }

327
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
{
/// <summary>
/// 职业病检查类别
/// </summary>
public List<OccupationalDiseaseMedicalReport_OcCheckTypeDto> OcCheckTypeDtos { get; set; }
/// <summary>
/// 职业病基本信息
/// </summary>
public OccupationalDiseaseMedicalReport_PatientOccupationalDiseaseDto PatientOccupationalDisease { get; set; }
/// <summary>
/// 职业史
/// </summary>
public List<OccupationalDiseaseMedicalReport_PatientOccupationalHistoryDto> PatientOccupationalHistoryDtos { get; set; }
/// <summary>
/// 毒害因素
/// </summary>
public List<OccupationalDiseaseMedicalReport_PatientPoisonDto> PatientPoisonDtos { get; set; }
/// <summary>
/// 职业病症状
/// </summary>
public List<OccupationalDiseaseMedicalReport_PatientSymptomDto> PatientSymptomDtos { get; set; }
/// <summary>
/// 职业病史
/// </summary>
public List<OccupationalDiseaseMedicalReport_PatientOccupationalMedicalHistoryDto> PatientOccupationalMedicalHistoryDtos { get; set; }
/// <summary>
/// 既往病史
/// </summary>
public List<OccupationalDiseaseMedicalReport_PatientOccupationalMedicalHistoryDto> PatientPastMedicalHistoryDtos { get; set; }
}
public class OccupationalDiseaseMedicalReport_OcCheckTypeDto
{
/// <summary>
/// ID
/// </summary>
public Guid OcCheckTypeId { get; set; }
/// <summary>
/// 职业病检查类别名称
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// 自定义简码
/// </summary>
public string SimpleCode { get; set; }
/// <summary>
/// 显示顺序
/// </summary>
public int DisplayOrder { get; set; }
}
/// <summary>
/// 职业病基本信息
/// </summary>
public class OccupationalDiseaseMedicalReport_PatientOccupationalDiseaseDto
{
/// <summary>
/// 职业病检查类别
/// </summary>
public Guid OcCheckTypeId { get; set; }
/// <summary>
/// 职业病检查类别名称
/// </summary>
public string OcCheckTypeName { get; set; }
/// <summary>
/// 工种
/// </summary>
public string JobType { get; set; }
/// <summary>
/// 总工龄
/// </summary>
public string TotalWorkTime { get; set; }
/// <summary>
/// 接害工龄
/// </summary>
public string PoisonWorkTime { get; set; }
/// <summary>
/// 接害因素
/// </summary>
public string RiskFactors { get; set; }
/// <summary>
/// 家族遗传病史
/// </summary>
public string FamilyGeneticHistory { get; set; }
/// <summary>
/// 末次月经日期
/// </summary>
public string LastMenstrualPeriodDate { get; set; }
/// <summary>
/// 初潮多少岁
/// </summary>
public int? FirstMenstruation { get; set; }
/// <summary>
/// 经期多少天
/// </summary>
public int? MenstruationTimeLength { get; set; }
/// <summary>
/// 周期多少天
/// </summary>
public int? MenstruationCycle { get; set; }
/// <summary>
/// 停经多少岁
/// </summary>
public int? MenstruationEndAge { get; set; }
/// <summary>
/// 经期
/// </summary>
public char? MenstruationFlag { get; set; }
/// <summary>
/// 现有子女人数
/// </summary>
public int? ChildrenNum { get; set; }
/// <summary>
/// 流产次数
/// </summary>
public int? AbortionTimes { get; set; }
/// <summary>
/// 早产次数
/// </summary>
public int? PrematureBirthTimes { get; set; }
/// <summary>
/// 死产次数
/// </summary>
public int? StillbirthTimes { get; set; }
/// <summary>
/// 异常胎次数
/// </summary>
public int? AbnormalTimes { get; set; }
/// <summary>
/// 抽烟史
/// </summary>
public char? SmokeFlag { get; set; }
/// <summary>
/// 每天多少支
/// </summary>
public int? SmokeNum { get; set; }
/// <summary>
/// 抽烟年限
/// </summary>
public int? SmokeYears { get; set; }
/// <summary>
/// 饮酒史
/// </summary>
public char? DrinkFlag { get; set; }
/// <summary>
/// 每次多少ml
/// </summary>
public int? DrinkNum { get; set; }
/// <summary>
/// 饮酒年限
/// </summary>
public int? DrinkYears { get; set; }
/// <summary>
/// 其他
/// </summary>
public string Other { get; set; }
/// <summary>
/// 职业性异常
/// </summary>
public string OccupationalAbnormal { get; set; }
/// <summary>
/// 非职业性异常
/// </summary>
public string NoOccupationalAbnormal { get; set; }
/// <summary>
/// 职业性异常建议
/// </summary>
public string OccupationalAbSuggestion { get; set; }
/// <summary>
/// 非职业性异常建议
/// </summary>
public string NoOccupAbSuggestion { get; set; }
/// <summary>
/// 处理意见
/// </summary>
public string HandleSuggestion { get; set; }
}
/// <summary>
/// 职业病毒害因素
/// </summary>
public class OccupationalDiseaseMedicalReport_PatientPoisonDto
{
public string PoisonName { get; set; }
/// <summary>
/// 职业体检结论ID
/// </summary>
public string OccupationalAbnormalName { get; set; }
}
/// <summary>
/// 职业病症状
/// </summary>
public class OccupationalDiseaseMedicalReport_PatientSymptomDto
{
public string SymptomName { get; set; }
/// <summary>
/// 程度
/// </summary>
public string Degree { get; set; }
/// <summary>
/// 时间
/// </summary>
public string TimeLength { get; set; }
}
/// <summary>
/// 职业史
/// </summary>
public class OccupationalDiseaseMedicalReport_PatientOccupationalHistoryDto
{
/// <summary>
/// 单位
/// </summary>
public string Org { get; set; }
/// <summary>
/// 开始日期
/// </summary>
public string BeginDate { get; set; }
/// <summary>
/// 结束日期
/// </summary>
public string EndDate { get; set; }
/// <summary>
/// 车间
/// </summary>
public string WorkShop { get; set; }
/// <summary>
/// 工种
/// </summary>
public string WorkType { get; set; }
/// <summary>
/// 毒害因素
/// </summary>
public string Poison { get; set; }
/// <summary>
/// 防护措施
/// </summary>
public string ProtectiveMeasures { get; set; }
}
public class OccupationalDiseaseMedicalReport_PatientOccupationalMedicalHistoryDto
{
/// <summary>
/// 病名
/// </summary>
public string OccupationalDisease { get; set; }
/// <summary>
/// 诊断日期
/// </summary>
public string DiagnosisDate { get; set; }
/// <summary>
/// 诊断单位
/// </summary>
public string DiagnosisHospital { get; set; }
/// <summary>
/// 是否恢复
/// </summary>
public char? IsRecovery { get; set; }
/// <summary>
/// 治疗方式
/// </summary>
public string TreatmentMethods { get; set; }
}
}

11
src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs

@ -15,6 +15,7 @@ using Shentun.Peis.CustomerOrgs;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.LisRequests; using Shentun.Peis.LisRequests;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.PatientOccupationalDiseases;
using Shentun.Peis.PatientRegisterExters; using Shentun.Peis.PatientRegisterExters;
using Shentun.Peis.Patients; using Shentun.Peis.Patients;
using Shentun.Peis.PeisReports; using Shentun.Peis.PeisReports;
@ -111,6 +112,7 @@ namespace Shentun.Peis.PatientRegisters
private readonly IConfiguration _configuration; private readonly IConfiguration _configuration;
private readonly ICurrentUser _currentUser; private readonly ICurrentUser _currentUser;
private readonly IRepository<UserItemType> _userItemTypeRepository; private readonly IRepository<UserItemType> _userItemTypeRepository;
private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager;
public PatientRegisterAppService( public PatientRegisterAppService(
IRepository<PatientRegister, Guid> repository, IRepository<PatientRegister, Guid> repository,
IRepository<Patient, Guid> patientRepository, IRepository<Patient, Guid> patientRepository,
@ -160,7 +162,8 @@ namespace Shentun.Peis.PatientRegisters
IRepository<LisRequest, Guid> lisRequestRepository, IRepository<LisRequest, Guid> lisRequestRepository,
IConfiguration configuration, IConfiguration configuration,
ICurrentUser currentUser, ICurrentUser currentUser,
IRepository<UserItemType> userItemTypeRepository)
IRepository<UserItemType> userItemTypeRepository,
PatientOccupationalDiseaseManager patientOccupationalDiseaseManager)
: base(repository) : base(repository)
{ {
this._repository = repository; this._repository = repository;
@ -212,6 +215,7 @@ namespace Shentun.Peis.PatientRegisters
_configuration = configuration; _configuration = configuration;
_currentUser = currentUser; _currentUser = currentUser;
_userItemTypeRepository = userItemTypeRepository; _userItemTypeRepository = userItemTypeRepository;
_patientOccupationalDiseaseManager = patientOccupationalDiseaseManager;
} }
/// <summary> /// <summary>
/// 获取通过主键 /// 获取通过主键
@ -739,8 +743,6 @@ namespace Shentun.Peis.PatientRegisters
{ {
throw new UserFriendlyException("未找到人员信息"); throw new UserFriendlyException("未找到人员信息");
} }
} }
else if (!string.IsNullOrWhiteSpace(input.PatientNo)) else if (!string.IsNullOrWhiteSpace(input.PatientNo))
@ -836,7 +838,8 @@ namespace Shentun.Peis.PatientRegisters
Telephone = ent.Patient.Telephone, Telephone = ent.Patient.Telephone,
CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).Result, CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).Result,
CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).Result.Id, 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; return entdto;
} }

9
src/Shentun.Peis.Application/PeisApplicationAutoMapperProfile.cs

@ -1,4 +1,5 @@
using AutoMapper; using AutoMapper;
using AutoMapper.Internal.Mappers;
using Shentun.Peis.AsbitemDetails; using Shentun.Peis.AsbitemDetails;
using Shentun.Peis.AsbitemGuides; using Shentun.Peis.AsbitemGuides;
using Shentun.Peis.Asbitems; using Shentun.Peis.Asbitems;
@ -57,6 +58,7 @@ using Shentun.Peis.PersonnelTypes;
using Shentun.Peis.Poisons; using Shentun.Peis.Poisons;
using Shentun.Peis.PoisonTypes; using Shentun.Peis.PoisonTypes;
using Shentun.Peis.PriceItems; using Shentun.Peis.PriceItems;
using Shentun.Peis.PrintReports;
using Shentun.Peis.ProtectiveMeasuress; using Shentun.Peis.ProtectiveMeasuress;
using Shentun.Peis.ReferenceRanges; using Shentun.Peis.ReferenceRanges;
using Shentun.Peis.RegisterAsbitems; using Shentun.Peis.RegisterAsbitems;
@ -85,6 +87,7 @@ using Shentun.Peis.SysParmValues;
using Shentun.Peis.ThirdInterfaces; using Shentun.Peis.ThirdInterfaces;
using Shentun.Peis.Units; using Shentun.Peis.Units;
using System; using System;
using System.Collections.Generic;
using Volo.Abp.Identity; using Volo.Abp.Identity;
namespace Shentun.Peis; namespace Shentun.Peis;
@ -517,6 +520,8 @@ public class PeisApplicationAutoMapperProfile : Profile
CreateMap<PatientOccupationalMedicalHistoryInputDto, PatientOccupationalMedicalHistory>() CreateMap<PatientOccupationalMedicalHistoryInputDto, PatientOccupationalMedicalHistory>()
.ForMember(d => d.DiagnosisDate, opt => opt.MapFrom(src => PageHelper.ConvertDatetimeV(src.DiagnosisDate))); .ForMember(d => d.DiagnosisDate, opt => opt.MapFrom(src => PageHelper.ConvertDatetimeV(src.DiagnosisDate)));
CreateMap<PatientPastMedicalHistoryInputDto, PatientPastMedicalHistory>();
CreateMap<OccupationalAbnormal, OccupationalAbnormalDto>(); CreateMap<OccupationalAbnormal, OccupationalAbnormalDto>();
CreateMap<CreateOccupationalAbnormalDto, OccupationalAbnormal>(); CreateMap<CreateOccupationalAbnormalDto, OccupationalAbnormal>();
@ -530,7 +535,11 @@ public class PeisApplicationAutoMapperProfile : Profile
CreateMap<CreateSuspectedOccupationalDiseaseDto, SuspectedOccupationalDisease>(); CreateMap<CreateSuspectedOccupationalDiseaseDto, SuspectedOccupationalDisease>();
CreateMap<UpdateSuspectedOccupationalDiseaseDto, SuspectedOccupationalDisease>(); CreateMap<UpdateSuspectedOccupationalDiseaseDto, SuspectedOccupationalDisease>();
//Ö°Òµ²¡±¨¸æ
CreateMap<MedicalReportDto, OccupationalDiseaseMedicalReportDto>();
} }

10
src/Shentun.Peis.Application/PeisReports/PeisReportAppService.cs

@ -4,6 +4,7 @@ using Microsoft.EntityFrameworkCore;
using Shentun.Peis.CustomerOrgs; using Shentun.Peis.CustomerOrgs;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.PatientOccupationalDiseases;
using Shentun.Peis.PatientRegisters; using Shentun.Peis.PatientRegisters;
using Shentun.Peis.SampleTypes; using Shentun.Peis.SampleTypes;
using System; using System;
@ -37,7 +38,7 @@ namespace Shentun.Peis.PeisReports
private readonly IRepository<Asbitem, Guid> _asbitemRepository; private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly CustomerOrgManager _customerOrgManager; private readonly CustomerOrgManager _customerOrgManager;
private readonly CacheService _cacheService; private readonly CacheService _cacheService;
private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager;
public PeisReportAppService( public PeisReportAppService(
IRepository<PatientRegister, Guid> patientRegisterRepository, IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<Patient, Guid> patientRepository, IRepository<Patient, Guid> patientRepository,
@ -51,7 +52,8 @@ namespace Shentun.Peis.PeisReports
IRepository<RegisterCheck, Guid> registerCheckRepository, IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<Asbitem, Guid> asbitemRepository, IRepository<Asbitem, Guid> asbitemRepository,
CustomerOrgManager customerOrgManager, CustomerOrgManager customerOrgManager,
CacheService cacheService)
CacheService cacheService,
PatientOccupationalDiseaseManager patientOccupationalDiseaseManager)
{ {
this._patientRegisterRepository = patientRegisterRepository; this._patientRegisterRepository = patientRegisterRepository;
this._patientRepository = patientRepository; this._patientRepository = patientRepository;
@ -66,6 +68,7 @@ namespace Shentun.Peis.PeisReports
this._asbitemRepository = asbitemRepository; this._asbitemRepository = asbitemRepository;
this._customerOrgManager = customerOrgManager; this._customerOrgManager = customerOrgManager;
this._cacheService = cacheService; this._cacheService = cacheService;
_patientOccupationalDiseaseManager = patientOccupationalDiseaseManager;
} }
@ -342,7 +345,8 @@ namespace Shentun.Peis.PeisReports
PersonnelTypeName = s.FirstOrDefault().af.DisplayName, PersonnelTypeName = s.FirstOrDefault().af.DisplayName,
SexName = s.FirstOrDefault().ag.DisplayName, SexName = s.FirstOrDefault().ag.DisplayName,
Telephone = s.FirstOrDefault().ab.Telephone, Telephone = s.FirstOrDefault().ab.Telephone,
PatientRegisterId = s.FirstOrDefault().a.Id
PatientRegisterId = s.FirstOrDefault().a.Id,
IsPatientOccupationalDisease = _patientOccupationalDiseaseManager.GetPatientRegisterIsOccupationalDisease(s.FirstOrDefault().a.Id).Result
}); });
} }

215
src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs

@ -8,6 +8,8 @@ using Shentun.Peis.AsbitemGuides;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.LisRequests; using Shentun.Peis.LisRequests;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.OcCheckTypes;
using Shentun.Peis.OccupationalDiseases;
using Shentun.Peis.PatientRegisters; using Shentun.Peis.PatientRegisters;
using Shentun.Peis.SumSuggestionContents; using Shentun.Peis.SumSuggestionContents;
using Shentun.Peis.SumSuggestionHeaders; using Shentun.Peis.SumSuggestionHeaders;
@ -15,6 +17,7 @@ using Shentun.Peis.SumSummaryContents;
using Shentun.Peis.SumSummaryHeaders; using Shentun.Peis.SumSummaryHeaders;
using Shentun.Peis.SumSummaryReports; using Shentun.Peis.SumSummaryReports;
using Shentun.Peis.SysParmValues; using Shentun.Peis.SysParmValues;
using SqlSugar.Extensions;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -24,6 +27,7 @@ using Volo.Abp;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow; using Volo.Abp.Uow;
namespace Shentun.Peis.PrintReports namespace Shentun.Peis.PrintReports
@ -72,6 +76,18 @@ namespace Shentun.Peis.PrintReports
private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IUnitOfWorkManager _unitOfWorkManager;
private static AsbitemGuideManager _asbitemGuideManager; private static AsbitemGuideManager _asbitemGuideManager;
private readonly IConfiguration _configuration; private readonly IConfiguration _configuration;
private readonly IRepository<PatientOccupationalDisease, Guid> _patientOccupationalDiseaseRepository;
private readonly IRepository<PatientOccupationalHistory, Guid> _patientOccupationalHistoryRepository;
private readonly IRepository<PatientPoison> _patientPoisonRepository;
private readonly IRepository<PatientSymptom> _patientSymptomRepository;
private readonly IRepository<PatientOccupationalMedicalHistory, Guid> _patientOccupationalMedicalHistoryRepository;
private readonly IRepository<PatientPastMedicalHistory, Guid> _patientPastMedicalHistoryRepository;
private readonly IRepository<OcCheckType, Guid> _ocCheckTypeRepository;
private readonly IRepository<Poison, Guid> _poisonRepository;
private readonly IRepository<OccupationalAbnormal, Guid> _occupationalAbnormalRepository;
private readonly IRepository<Symptom, Guid> _symptomRepository;
public PrintReportAppService( public PrintReportAppService(
IRepository<Patient, Guid> patientRepository, IRepository<Patient, Guid> patientRepository,
IRepository<CustomerOrg, Guid> customerOrgRepository, IRepository<CustomerOrg, Guid> customerOrgRepository,
@ -109,8 +125,18 @@ namespace Shentun.Peis.PrintReports
LisRequestManager lisRequestManager, LisRequestManager lisRequestManager,
IUnitOfWorkManager unitOfWorkManager, IUnitOfWorkManager unitOfWorkManager,
AsbitemGuideManager asbitemGuideManager, AsbitemGuideManager asbitemGuideManager,
IConfiguration configuration
)
IConfiguration configuration,
IRepository<PatientOccupationalDisease, Guid> patientOccupationalDiseaseRepository,
IRepository<PatientOccupationalHistory, Guid> patientOccupationalHistoryRepository,
IRepository<PatientPoison> patientPoisonRepository,
IRepository<PatientSymptom> patientSymptomRepository,
IRepository<PatientOccupationalMedicalHistory, Guid> patientOccupationalMedicalHistoryRepository,
IRepository<PatientPastMedicalHistory, Guid> patientPastMedicalHistoryRepository
,
IRepository<OcCheckType, Guid> ocCheckTypeRepository,
IRepository<Poison, Guid> poisonRepository,
IRepository<OccupationalAbnormal, Guid> occupationalAbnormalRepository,
IRepository<Symptom, Guid> symptomRepository)
{ {
this._customerOrgRepository = customerOrgRepository; this._customerOrgRepository = customerOrgRepository;
this._patientRegisterRepository = patientRegisterRepository; this._patientRegisterRepository = patientRegisterRepository;
@ -149,6 +175,16 @@ namespace Shentun.Peis.PrintReports
_personnelTypeRepository = personnelTypeRepository; _personnelTypeRepository = personnelTypeRepository;
_configuration = configuration; _configuration = configuration;
_organizationUnitRepository = organizationUnitRepository; _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
/// <summary>
/// 获取职业病体检报告
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PrintReport/GetOccupationalDiseaseMedicalReport")]
public async Task<OccupationalDiseaseMedicalReportDto> 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, OccupationalDiseaseMedicalReportDto>(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;
}
/// <summary> /// <summary>
/// 打印Pacs条码数据 /// 打印Pacs条码数据
/// </summary> /// </summary>
@ -614,9 +821,9 @@ namespace Shentun.Peis.PrintReports
DepartmentName = "" DepartmentName = ""
}; };
} }
} }
} }
return pacsNoReportDto; return pacsNoReportDto;

27
src/Shentun.Peis.Domain/PatientOccupationalDiseases/PatientOccupationalDiseaseManager.cs

@ -14,8 +14,13 @@ namespace Shentun.Peis.PatientOccupationalDiseases
{ {
public class PatientOccupationalDiseaseManager : DomainService public class PatientOccupationalDiseaseManager : DomainService
{ {
public PatientOccupationalDiseaseManager()
private readonly IRepository<PatientOccupationalDisease, Guid> _patientOccupationalDiseaseRepository;
public PatientOccupationalDiseaseManager(
IRepository<PatientOccupationalDisease, Guid> patientOccupationalDiseaseRepository
)
{ {
_patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository;
} }
/// <summary> /// <summary>
@ -102,5 +107,25 @@ namespace Shentun.Peis.PatientOccupationalDiseases
targetEntity.FamilyGeneticHistory = sourceEntity.FamilyGeneticHistory; targetEntity.FamilyGeneticHistory = sourceEntity.FamilyGeneticHistory;
targetEntity.RiskFactors = sourceEntity.RiskFactors; targetEntity.RiskFactors = sourceEntity.RiskFactors;
} }
/// <summary>
/// 判断人员是否登记职业病信息
/// </summary>
/// <param name="PatientRegisterId"></param>
/// <returns></returns>
public async Task<char> GetPatientRegisterIsOccupationalDisease(Guid PatientRegisterId)
{
var isPatientOccupationalDisease = await _patientOccupationalDiseaseRepository.FirstOrDefaultAsync(c => c.PatientRegisterId == PatientRegisterId);
if (isPatientOccupationalDisease != null)
{
return 'Y';
}
else
{
return 'N';
}
}
} }
} }
Loading…
Cancel
Save