From c04aeb78508b107fce87a1dd919de6403a96527e Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Sat, 20 Apr 2024 16:36:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=BB=E6=A3=80=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...datePatientRegisterSummarySuggestionDto.cs | 1 - .../DiagnosisFunctionAppService.cs | 10 +- .../LisRequests/LisRequestAppService.cs | 2 +- .../PatientRegisterAppService.cs | 97 ++++++----- .../PrintReports/PrintReportAppService.cs | 6 +- .../SumSuggestionHeaderAppService.cs | 2 +- .../SumSummaryHeaderAppService.cs | 2 +- .../LisRequests/LisRequest.cs | 43 +++-- .../LisRequests/LisRequestManager.cs | 157 ++++++++---------- .../SampleContainers/SampleContainer.cs | 4 +- .../SampleTypes/SampleType.cs | 4 +- .../SumSummaryHeaderManager.cs | 4 +- .../SysParmValues/SysParmValueManager.cs | 2 +- .../LisRequests/LisRequestDbMapping.cs | 28 ++-- .../PatientRegisterGuideReportRepository.cs | 12 +- 15 files changed, 180 insertions(+), 194 deletions(-) diff --git a/src/Shentun.Peis.Application.Contracts/PatientRegisters/UpdatePatientRegisterSummarySuggestionDto.cs b/src/Shentun.Peis.Application.Contracts/PatientRegisters/UpdatePatientRegisterSummarySuggestionDto.cs index fbb9f532..7eb7ad8c 100644 --- a/src/Shentun.Peis.Application.Contracts/PatientRegisters/UpdatePatientRegisterSummarySuggestionDto.cs +++ b/src/Shentun.Peis.Application.Contracts/PatientRegisters/UpdatePatientRegisterSummarySuggestionDto.cs @@ -55,7 +55,6 @@ namespace Shentun.Peis.PatientRegisters public List DiagnosisIds { get; set; } - public List Details { get; set; } public List MedicalInterpretations { get; set; } public List CommonReasons { get; set; } public List HealthGuidances { get; set; } diff --git a/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs b/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs index 1945e785..d2200e6d 100644 --- a/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs +++ b/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs @@ -542,15 +542,15 @@ namespace Shentun.Peis.DiagnosisFunctions /// private async Task LoadSysParm(Guid medicalCenterId) { - _isAddAbnormalResult = await _sysParmValueManager.GetSysParmValueInMedicalCenterId( + _isAddAbnormalResult = await _sysParmValueManager.GetSysParmValue( medicalCenterId, "doctor_check_lis_summary_mode_add_abnormal_result"); - _isAddReferenceRange = await _sysParmValueManager.GetSysParmValueInMedicalCenterId( + _isAddReferenceRange = await _sysParmValueManager.GetSysParmValue( medicalCenterId, "doctor_check_lis_summary_mode_add_reference_range"); - _isAutoAddSuffix = await _sysParmValueManager.GetSysParmValueInMedicalCenterId( + _isAutoAddSuffix = await _sysParmValueManager.GetSysParmValue( medicalCenterId, "doctor_check_lis_summary_mode_auto_add_suffix"); - _lowerSuffix = await _sysParmValueManager.GetSysParmValueInMedicalCenterId( + _lowerSuffix = await _sysParmValueManager.GetSysParmValue( medicalCenterId, "doctor_check_lis_summary_mode_lower_suffix"); - _highSuffix = await _sysParmValueManager.GetSysParmValueInMedicalCenterId( + _highSuffix = await _sysParmValueManager.GetSysParmValue( medicalCenterId, "doctor_check_lis_summary_mode_high_suffix"); } /// diff --git a/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs b/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs index 5cc10198..8a672ae7 100644 --- a/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs +++ b/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs @@ -68,7 +68,7 @@ namespace Shentun.Peis.LisRequests LastModifierName = EntityHelper.GetUserNameNoSql(userList, s.LastModifierId), LisRequestNo = s.LisRequestNo, SampleGroupId = s.SampleGroupId, - Sampler = s.Sampler, + Sampler = s.SamplerId, SamplingTime = s.SamplingTime, SignInOrder = s.SignInOrder, SignInPerson = s.SignInPerson, diff --git a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs index 08d811ca..d727c857 100644 --- a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs +++ b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs @@ -97,7 +97,7 @@ namespace Shentun.Peis.PatientRegisters private readonly RegisterCheckAsbitemManager _registerAsbitemManager; private readonly SumSummaryHeaderManager _sumSummaryHeaderManager; private readonly SumSummaryContentManager _sumSummaryContentManager; - private readonly SumSuggestionHeaderManager _sumSuggestionHeaderManager; + private readonly SumSuggestionHeaderManager _sumSuggestionHeaderManager; private readonly SumSuggestionContentManager _sumSuggestionContentManager; //private readonly IRepository _customerOrgRepository; //private readonly IRepository _primarykeyBuilderRepository; @@ -109,7 +109,7 @@ namespace Shentun.Peis.PatientRegisters public PatientRegisterAppService( IRepository repository, IRepository patientRepository, - IRepository patientRegisterRepository, + IRepository patientRegisterRepository, IRepository userRepository, IRepository sexRepository, IRepository birthPlaceRepository, @@ -306,7 +306,7 @@ namespace Shentun.Peis.PatientRegisters public async Task GetHaveSumData(PatientRegisterIdInputDto input) { var sumSummaryHeader = await _sumSummaryHeaderRepository.GetListAsync(o => o.PatientRegisterId == input.PatientRegisterId); - if(sumSummaryHeader.Any()) + if (sumSummaryHeader.Any()) { return "Y"; } @@ -1458,31 +1458,32 @@ namespace Shentun.Peis.PatientRegisters [HttpPost("api/app/patientregister/CancelSumCheck")] public async Task CancelSumCheckAsync(PatientRegisterIdInputDto input) { - + if (input == null || input.PatientRegisterId == Guid.Empty) { throw new UserFriendlyException("请求参数有误"); } - - + + var entity = await _repository.GetAsync(input.PatientRegisterId); - if(entity.CompleteFlag != PatientRegisterCompleteFlag.SumCheck) + if (entity.CompleteFlag != PatientRegisterCompleteFlag.SumCheck) { throw new UserFriendlyException("没有总检,无需取消总检"); } - if(entity.IsAudit == 'Y') + if (entity.IsAudit == 'Y') { throw new UserFriendlyException("已审核,请先取消审核"); } - var isSummaryCheckOnlySelfCanCancel = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(entity.MedicalCenterId, "summary_check_only_self_can_cancel"); - if(isSummaryCheckOnlySelfCanCancel == "Y") + var isSummaryCheckOnlySelfCanCancel = await _sysParmValueManager.GetSysParmValue(entity.MedicalCenterId, "summary_check_only_self_can_cancel"); + if (isSummaryCheckOnlySelfCanCancel == "Y") { - if(entity.SummaryDoctorId != CurrentUser.Id) + if (entity.SummaryDoctorId != CurrentUser.Id) { throw new UserFriendlyException("只有本人才能取消总检"); } } - var newentity = await _patientRegisterRepository.UpdateAsync(entity); + entity.CompleteFlag = PatientRegisterCompleteFlag.PartCheck; + var newentity = await _patientRegisterRepository.UpdateAsync(entity); return ObjectMapper.Map(newentity); } /// @@ -1509,7 +1510,7 @@ namespace Shentun.Peis.PatientRegisters //删除对应的诊断数据 await _sumDiagnosisRepository.DeleteAsync(m => m.PatientRegisterId == input.PatientRegisterId, true); //更新综述 - if (input.SumSummarys.Any()) + if (input.SumSummarys != null && input.SumSummarys.Any()) { foreach (var item in input.SumSummarys) { @@ -1518,7 +1519,7 @@ namespace Shentun.Peis.PatientRegisters summaryTitle: item.SummaryTitle, summaryFlag: null, displayOrder: input.SumSummarys.IndexOf(item) + 1); - + var sumSummaryHeaderEnt_New = await _sumSummaryHeaderRepository.InsertAsync(sumSummaryHeaderEnt, true); if (sumSummaryHeaderEnt_New != null) @@ -1530,7 +1531,7 @@ namespace Shentun.Peis.PatientRegisters SumSummaryContent sumSummaryContentEnt = _sumSummaryContentManager.CreateAsync(sumSummaryHeaderId: sumSummaryHeaderEnt_New.Id, summaryContent: item2.SummaryContent, displayOrder: item.Details.IndexOf(item2) + 1); - + sumSummaryContentList.Add(sumSummaryContentEnt); } @@ -1541,15 +1542,19 @@ namespace Shentun.Peis.PatientRegisters } } //更新建议和诊断 - if (input.SumSuggestions.Any()) + if (input.SumSuggestions != null && input.SumSuggestions.Any()) { //判断有没有重复诊断 List diagnosisList = new List(); foreach (var item in input.SumSuggestions) { - diagnosisList.AddRange(item.DiagnosisIds); + if (item.DiagnosisIds != null) + { + diagnosisList.AddRange(item.DiagnosisIds); + } + } - if(diagnosisList.Count() != diagnosisList.Distinct().Count()) + if (diagnosisList.Count() != diagnosisList.Distinct().Count()) { throw new UserFriendlyException("不允许有重复诊断"); } @@ -1567,11 +1572,11 @@ namespace Shentun.Peis.PatientRegisters { #region 插入SumDiagnosis - if(item.DiagnosisIds.Any()) + if (item.DiagnosisIds != null && item.DiagnosisIds.Any()) { - foreach(var diagnosisId in item.DiagnosisIds) + foreach (var diagnosisId in item.DiagnosisIds) { - + SumDiagnosis sumDiagnosis = new SumDiagnosis { DiagnosisId = diagnosisId, @@ -1583,38 +1588,48 @@ namespace Shentun.Peis.PatientRegisters } } - + #endregion #region 插入SumSuggestionContent List sumSuggestionContentList = new List(); - foreach (var item2 in item.MedicalInterpretations) + if (item.MedicalInterpretations != null) { - SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, - suggestionContent: item2.SuggestionContent, - suggestionType: SuggestionTypeFlag.MedicalInterpretation, - displayOrder: item.MedicalInterpretations.IndexOf(item2) + 1); + foreach (var item2 in item.MedicalInterpretations) + { + SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, + suggestionContent: item2.SuggestionContent, + suggestionType: SuggestionTypeFlag.MedicalInterpretation, + displayOrder: item.MedicalInterpretations.IndexOf(item2) + 1); - sumSuggestionContentList.Add(sumSuggestionContentEnt); + sumSuggestionContentList.Add(sumSuggestionContentEnt); + } } - foreach (var item2 in item.CommonReasons) + if (item.CommonReasons != null) { - SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, - suggestionContent: item2.SuggestionContent, - suggestionType: SuggestionTypeFlag.CommonReasons, - displayOrder: item.CommonReasons.IndexOf(item2) + 1); + foreach (var item2 in item.CommonReasons) + { + SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, + suggestionContent: item2.SuggestionContent, + suggestionType: SuggestionTypeFlag.CommonReasons, + displayOrder: item.CommonReasons.IndexOf(item2) + 1); - sumSuggestionContentList.Add(sumSuggestionContentEnt); + sumSuggestionContentList.Add(sumSuggestionContentEnt); + } } - foreach (var item2 in item.HealthGuidances) + if (item.HealthGuidances != null) { - SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, - suggestionContent: item2.SuggestionContent, - suggestionType: SuggestionTypeFlag.HealthGuidance, - displayOrder: item.HealthGuidances.IndexOf(item2) + 1); + foreach (var item2 in item.HealthGuidances) + { + SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, + suggestionContent: item2.SuggestionContent, + suggestionType: SuggestionTypeFlag.HealthGuidance, + displayOrder: item.HealthGuidances.IndexOf(item2) + 1); - sumSuggestionContentList.Add(sumSuggestionContentEnt); + sumSuggestionContentList.Add(sumSuggestionContentEnt); + } } + await _sumSuggestionContentRepository.InsertManyAsync(sumSuggestionContentList); #endregion } @@ -1622,7 +1637,7 @@ namespace Shentun.Peis.PatientRegisters } } - return ObjectMapper.Map(newentity); + return ObjectMapper.Map(newentity); } /// diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs index 14067ad8..9acfe170 100644 --- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs +++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs @@ -140,9 +140,9 @@ namespace Shentun.Peis.PrintReports { #region 系统参数配置 - var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(patientRegisterEnt.MedicalCenterId, "medical_center_address"); - var MedicalCenterFax = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(patientRegisterEnt.MedicalCenterId, "medical_center_fax"); - var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(patientRegisterEnt.MedicalCenterId, "medical_center_telphone"); + var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValue(patientRegisterEnt.MedicalCenterId, "medical_center_address"); + var MedicalCenterFax = await _sysParmValueManager.GetSysParmValue(patientRegisterEnt.MedicalCenterId, "medical_center_fax"); + var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValue(patientRegisterEnt.MedicalCenterId, "medical_center_telphone"); #endregion msg = new PeisReportDto diff --git a/src/Shentun.Peis.Application/SumSuggestionHeaders/SumSuggestionHeaderAppService.cs b/src/Shentun.Peis.Application/SumSuggestionHeaders/SumSuggestionHeaderAppService.cs index a39b6935..3f6f8276 100644 --- a/src/Shentun.Peis.Application/SumSuggestionHeaders/SumSuggestionHeaderAppService.cs +++ b/src/Shentun.Peis.Application/SumSuggestionHeaders/SumSuggestionHeaderAppService.cs @@ -189,7 +189,7 @@ namespace Shentun.Peis.SumSuggestionHeaders } var summaryCheckDefaultSuggestionHeader = await _sysParmValueManager. - GetSysParmValueInMedicalCenterId(patientRegister.MedicalCenterId, + GetSysParmValue(patientRegister.MedicalCenterId, "summary_check_default_suggestion_header"); if (!msg.Any()) { diff --git a/src/Shentun.Peis.Application/SumSummaryHeaders/SumSummaryHeaderAppService.cs b/src/Shentun.Peis.Application/SumSummaryHeaders/SumSummaryHeaderAppService.cs index 748d451e..f58069ab 100644 --- a/src/Shentun.Peis.Application/SumSummaryHeaders/SumSummaryHeaderAppService.cs +++ b/src/Shentun.Peis.Application/SumSummaryHeaders/SumSummaryHeaderAppService.cs @@ -57,7 +57,7 @@ namespace Shentun.Peis.SumSummaryHeaders /// /// /// - [HttpPost("api/app/sumsummaryheader/getsumsummarylist")] + [HttpPost("api/app/sumsummaryheader/GetSumSummaryList")] public async Task> GetSumSummaryListAsync(PatientRegisterSumInputDto input) { if(input is null) diff --git a/src/Shentun.Peis.Domain/LisRequests/LisRequest.cs b/src/Shentun.Peis.Domain/LisRequests/LisRequest.cs index 25426996..239034a5 100644 --- a/src/Shentun.Peis.Domain/LisRequests/LisRequest.cs +++ b/src/Shentun.Peis.Domain/LisRequests/LisRequest.cs @@ -15,6 +15,8 @@ namespace Shentun.Peis.Models [Index(nameof(LisRequestNo), Name = "ix_lis_request", IsUnique = true)] public class LisRequest : AuditedEntity, IHasConcurrencyStamp { + public LisRequest() { } + public LisRequest(Guid id):base(id) { } ///// ///// 病人登记ID ///// @@ -26,24 +28,19 @@ namespace Shentun.Peis.Models /// [Column("lis_request_no")] [StringLength(30)] - public string LisRequestNo { get; set; } + public string LisRequestNo { get; set; } ///// ///// 标本类型 ///// - //[Column("sample_type_id")] - ////[StringLength(4)] - //public Guid SampleTypeId { get; set; } + [Column("sample_type_id")] + + public Guid SampleTypeId { get; set; } ///// ///// 标本容器编号 ///// - //[Column("sample_container_id")] - ////[StringLength(4)] - //public Guid SampleContainerId { get; set; } + [Column("sample_container_id")] + public Guid SampleContainerId { get; set; } - /// - /// 条码分组ID - /// - public Guid SampleGroupId { get; set; } /// /// 是否已打印 @@ -52,11 +49,10 @@ namespace Shentun.Peis.Models [MaxLength(1)] public char IsPrint { get; set; } /// - /// 采样人姓名 + /// 采样人ID /// - [Column("sampler")] - [StringLength(16)] - public string? Sampler { get; set; } + [Column("sampler_id")] + public Guid? SamplerId { get; set; } /// /// 采样时间 /// @@ -105,12 +101,13 @@ namespace Shentun.Peis.Models //[InverseProperty("LisRequests")] //public virtual PatientRegister PatientRegister { get; set; } = null!; - //[ForeignKey(nameof(SampleContainerId))] - //[InverseProperty("LisRequests")] - //public virtual SampleContainer SampleContainer { get; set; } = null!; - //[ForeignKey(nameof(SampleTypeId))] - //[InverseProperty("LisRequests")] - //public virtual SampleType SampleType { get; set; } = null!; + [ForeignKey(nameof(SampleContainerId))] + [InverseProperty("LisRequests")] + public virtual SampleContainer SampleContainer { get; set; } = null!; + + [ForeignKey(nameof(SampleTypeId))] + [InverseProperty("LisRequests")] + public virtual SampleType SampleType { get; set; } = null!; //public override object[] GetKeys() //{ @@ -118,8 +115,6 @@ namespace Shentun.Peis.Models //} - [ForeignKey(nameof(SampleGroupId))] - [InverseProperty("LisRequests")] - public virtual SampleGroup SampleGroup { get; set; } + } } diff --git a/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs b/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs index 8af13597..6f37f9e1 100644 --- a/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs +++ b/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore; using Shentun.Peis.Enums; using Shentun.Peis.Models; +using Shentun.Peis.SysParmValues; using System; using System.Collections.Generic; using System.Linq; @@ -21,14 +22,15 @@ namespace Shentun.Peis.LisRequests private readonly IRepository _sysParmValueRepository; private readonly IRepository _primarykeyBuilderRepository; private readonly IRepository _lisRequestRepository; - + private readonly SysParmValueManager _sysParmValueManager; public LisRequestManager( IRepository registerAsbitemeRepository, IRepository sampleGroupRepository, IRepository sampleGroupDetailRepository, IRepository sysParmValueRepository, IRepository primarykeyBuilderRepository, - IRepository lisRequestRepository + IRepository lisRequestRepository, + SysParmValueManager sysParmValueManager ) { this._registerAsbitemeRepository = registerAsbitemeRepository; @@ -37,6 +39,7 @@ namespace Shentun.Peis.LisRequests this._sysParmValueRepository = sysParmValueRepository; this._primarykeyBuilderRepository = primarykeyBuilderRepository; this._lisRequestRepository = lisRequestRepository; + _sysParmValueManager = sysParmValueManager; } @@ -55,71 +58,61 @@ namespace Shentun.Peis.LisRequests var registerAsbitemeList = (await _registerAsbitemeRepository.GetDbSetAsync()) .Include(x => x.Asbitem) .Include(x => x.PatientRegister) - .Where(m => m.PatientRegisterId == PatientRegisterId) + .Where(m => m.PatientRegisterId == PatientRegisterId && m.LisRequestId == null) .ToList(); - if (registerAsbitemeList.Any()) + //根据登记的组合ID 查找组合项目对应的条码分组 + var sampleGroupDetailList = await _sampleGroupDetailRepository.GetListAsync(m => registerAsbitemeList.Select(s => s.AsbitemId).Contains(m.AsbitemId)); + if (!sampleGroupDetailList.Any()) { + return msg; + } - if (registerAsbitemeList.Where(m => m.LisRequestId != null).Count() == 0) - { - //根据登记的组合ID 查找组合项目对应的条码分组 - var sampleGroupDetailList = await _sampleGroupDetailRepository.GetListAsync(m => registerAsbitemeList.Select(s => s.AsbitemId).Contains(m.AsbitemId)); - if (sampleGroupDetailList.Any()) - { - //查找条码分组信息 根据条码分组ID - var sampleGroupList = (await _sampleGroupRepository.GetDbSetAsync()) - .Include(x => x.SampleContainer) - .Include(x => x.SampleType) - .Where(m => sampleGroupDetailList.Select(s => s.SampleGroupId).Contains(m.Id)); - - foreach (var sampleGroup in sampleGroupList) - { - //根据条码分组生成,一个条码分组生成一个检验单 - #region 生成检验申请单 - - var lisRequestEnt = new LisRequest - { - IsPrint = 'N', - IsSignIn = 'N', - LisRequestNo = await CreateLisRequestNo(registerAsbitemeList.FirstOrDefault().PatientRegister.MedicalCenterId), - SampleGroupId = sampleGroup.Id, - //SampleContainerId = sampleGroup.SampleContainerId, - //SampleTypeId = sampleGroup.SampleTypeId - }; + //查找条码分组信息 根据条码分组ID + var sampleGroupList = (await _sampleGroupRepository.GetDbSetAsync()) + .Include(x => x.SampleContainer) + .Include(x => x.SampleType) + .Where(m => sampleGroupDetailList.Select(s => s.SampleGroupId).Contains(m.Id)); - //生成检验申请单的新实体 - var lisRequestEnt_New = await _lisRequestRepository.InsertAsync(lisRequestEnt, true); + foreach (var sampleGroup in sampleGroupList) + { + //根据条码分组生成,一个条码分组生成一个检验单 + #region 生成检验申请单 - msg.Add(lisRequestEnt_New); + var lisRequestEnt = new LisRequest(GuidGenerator.Create()) + { + IsPrint = 'N', + IsSignIn = 'N', + LisRequestNo = await CreateLisRequestNo(registerAsbitemeList.FirstOrDefault().PatientRegister.MedicalCenterId), + SampleContainerId = sampleGroup.SampleContainerId, + SampleTypeId = sampleGroup.SampleTypeId + }; - #region 修改RegisterAsbitem表 LisRequestId + //生成检验申请单的新实体 + var lisRequestEnt_New = await _lisRequestRepository.InsertAsync(lisRequestEnt, true); - //当前条码分组ID绑定的组合项目 - var AsbitemIds = sampleGroupDetailList.Where(m => m.SampleGroupId == sampleGroup.Id).Select(s => s.AsbitemId); + msg.Add(lisRequestEnt_New); - //获取需要更新的RegisterAsbitem数据 - var registerAsbitemeList_Update = await _registerAsbitemeRepository.GetListAsync(f => f.PatientRegisterId == PatientRegisterId && AsbitemIds.Contains(f.AsbitemId)); - if (registerAsbitemeList_Update.Any()) - { - //更新LisRequestId - registerAsbitemeList_Update.ForEach(m => m.LisRequestId = lisRequestEnt_New.Id); - await _registerAsbitemeRepository.UpdateManyAsync(registerAsbitemeList_Update); - } + #region 修改RegisterAsbitem表 LisRequestId - #endregion + //当前条码分组ID绑定的组合项目 + var AsbitemIds = sampleGroupDetailList.Where(m => m.SampleGroupId == sampleGroup.Id).Select(s => s.AsbitemId); - #endregion - } - } - } - else + //获取需要更新的RegisterAsbitem数据 + var registerAsbitemeList_Update = await _registerAsbitemeRepository.GetListAsync(f => + f.PatientRegisterId == PatientRegisterId && AsbitemIds.Contains(f.AsbitemId) && f.LisRequestId == null); + if (registerAsbitemeList_Update.Any()) { - throw new UserFriendlyException("该人员已申请过检验申请单"); + //更新LisRequestId + registerAsbitemeList_Update.ForEach(m => m.LisRequestId = lisRequestEnt_New.Id); + await _registerAsbitemeRepository.UpdateManyAsync(registerAsbitemeList_Update); } + + #endregion + + #endregion } - return msg; } @@ -247,56 +240,40 @@ namespace Shentun.Peis.LisRequests /// 生成检验申请单条码号(规则,先找体检中心的配置,如未找到,就直接使用全局的) /// 模式(0 日期+尾号 1.顺序递增) /// - /// 体检中心ID + /// 体检中心ID /// - private async Task CreateLisRequestNo(Guid OrganizationUnitId) + private async Task CreateLisRequestNo(Guid medicalCenterId) { string LisRequestNo = ""; //条码号 List spvlist = await _sysParmValueRepository.GetListAsync(); - var spv_tjzx = spvlist.Where(m => m.MedicalCenterId == OrganizationUnitId); //体检中心配置 - var spv_global = spvlist.Where(m => m.MedicalCenterId == Guid.Empty); //全局配置 - - var lis_request_no_rule_coding = "0"; // 模式(0 日期+尾号 1.顺序递增) - var lis_request_no_rule_tail_len = "4"; //尾号长度 - var lis_request_no_rule_prefix_len = "T"; //前缀 - + //var spv_tjzx = spvlist.Where(m => m.MedicalCenterId == medicalCenterId); //体检中心配置 + //var spv_global = spvlist.Where(m => m.MedicalCenterId == Guid.Empty); //全局配置 - if (spv_tjzx.Where(m => m.SysParmId == "lis_request_no_rule_coding").Count() > 0) + string lis_request_no_rule_coding = "0"; // 模式(0 日期+尾号 1.顺序递增) + string lis_request_no_rule_tail_len = "4"; //尾号长度 + string lis_request_no_rule_prefix = "T"; //前缀 + lis_request_no_rule_coding = await _sysParmValueManager.GetSysParmValue(medicalCenterId, "lis_request_no_rule_coding"); + lis_request_no_rule_tail_len = await _sysParmValueManager.GetSysParmValue(medicalCenterId, "lis_request_no_rule_tail_len"); + lis_request_no_rule_prefix = await _sysParmValueManager.GetSysParmValue(medicalCenterId, "lis_request_no_rule_prefix"); + if(string.IsNullOrWhiteSpace(lis_request_no_rule_coding)) { - //获取体检中心配置 - lis_request_no_rule_coding = spv_tjzx.Where(m => m.SysParmId == "lis_request_no_rule_coding").FirstOrDefault().ParmValue; + throw new UserFriendlyException("LIS编码方式不能为空"); } - else + if (string.IsNullOrWhiteSpace(lis_request_no_rule_tail_len)) { - //获取全局配置 - lis_request_no_rule_coding = spv_global.Where(m => m.SysParmId == "lis_request_no_rule_coding").FirstOrDefault().ParmValue; + throw new UserFriendlyException("LIS编码尾号长度不能为空"); } - - if (spv_tjzx.Where(m => m.SysParmId == "lis_request_no_rule_tail_len").Count() > 0) + int i_lis_request_no_rule_tail_len = 0; + if(!int.TryParse(lis_request_no_rule_tail_len, out i_lis_request_no_rule_tail_len)) { - //获取体检中心配置 - lis_request_no_rule_tail_len = spv_tjzx.Where(m => m.SysParmId == "lis_request_no_rule_tail_len").FirstOrDefault().ParmValue; + throw new UserFriendlyException("LIS编码尾号长度不能为空"); } - else + if (string.IsNullOrWhiteSpace(lis_request_no_rule_prefix)) { - //获取全局配置 - lis_request_no_rule_tail_len = spv_global.Where(m => m.SysParmId == "lis_request_no_rule_tail_len").FirstOrDefault().ParmValue; + lis_request_no_rule_prefix = ""; } - - if (spv_tjzx.Where(m => m.SysParmId == "lis_request_no_rule_prefix_len").Count() > 0) - { - //获取体检中心配置 - lis_request_no_rule_prefix_len = spv_tjzx.Where(m => m.SysParmId == "lis_request_no_rule_prefix_len").FirstOrDefault().ParmValue; - } - else - { - //获取全局配置 - lis_request_no_rule_prefix_len = spv_global.Where(m => m.SysParmId == "lis_request_no_rule_prefix_len").FirstOrDefault().ParmValue; - } - - var primarykeyBuilderEnt = await _primarykeyBuilderRepository.FirstOrDefaultAsync(f => f.PrimarykeyBuilderId == "lis_request_no"); @@ -323,7 +300,7 @@ namespace Shentun.Peis.LisRequests } primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号 - LisRequestNo = lis_request_no_rule_prefix_len + date + maxnum.PadLeft(Convert.ToInt32(lis_request_no_rule_tail_len), '0'); + LisRequestNo = lis_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(lis_request_no_rule_tail_len), '0'); await _primarykeyBuilderRepository.UpdateAsync(primarykeyBuilderEnt); } @@ -331,7 +308,7 @@ namespace Shentun.Peis.LisRequests { //初始写入 - LisRequestNo = lis_request_no_rule_prefix_len + date + maxnum.PadLeft(Convert.ToInt32(lis_request_no_rule_tail_len), '0'); + LisRequestNo = lis_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(lis_request_no_rule_tail_len), '0'); primarykeyBuilderEnt = new PrimarykeyBuilder { @@ -371,7 +348,7 @@ namespace Shentun.Peis.LisRequests } - LisRequestNo = lis_request_no_rule_prefix_len + maxnum.PadLeft(Convert.ToInt32(lis_request_no_rule_tail_len), '0'); + LisRequestNo = lis_request_no_rule_prefix + maxnum.PadLeft(Convert.ToInt32(lis_request_no_rule_tail_len), '0'); #endregion } diff --git a/src/Shentun.Peis.Domain/SampleContainers/SampleContainer.cs b/src/Shentun.Peis.Domain/SampleContainers/SampleContainer.cs index b771b7b7..3928b9bb 100644 --- a/src/Shentun.Peis.Domain/SampleContainers/SampleContainer.cs +++ b/src/Shentun.Peis.Domain/SampleContainers/SampleContainer.cs @@ -64,8 +64,8 @@ namespace Shentun.Peis.Models //[StringLength(40)] //public string ConcurrencyStamp { get; set; } = null!; - //[InverseProperty(nameof(LisRequest.SampleContainer))] - //public virtual ICollection LisRequests { get; set; } + [InverseProperty(nameof(LisRequest.SampleContainer))] + public virtual ICollection LisRequests { get; set; } [InverseProperty(nameof(SampleGroup.SampleContainer))] public virtual ICollection SampleGroups { get; set; } diff --git a/src/Shentun.Peis.Domain/SampleTypes/SampleType.cs b/src/Shentun.Peis.Domain/SampleTypes/SampleType.cs index a5102713..496dfcc8 100644 --- a/src/Shentun.Peis.Domain/SampleTypes/SampleType.cs +++ b/src/Shentun.Peis.Domain/SampleTypes/SampleType.cs @@ -46,8 +46,8 @@ namespace Shentun.Peis.Models //[StringLength(40)] //public string ConcurrencyStamp { get; set; } = null!; - //[InverseProperty(nameof(LisRequest.SampleType))] - //public virtual ICollection LisRequests { get; set; } + [InverseProperty(nameof(LisRequest.SampleType))] + public virtual ICollection LisRequests { get; set; } [InverseProperty(nameof(SampleGroup.SampleType))] public virtual ICollection SampleGroups { get; set; } diff --git a/src/Shentun.Peis.Domain/SumSummaryHeaders/SumSummaryHeaderManager.cs b/src/Shentun.Peis.Domain/SumSummaryHeaders/SumSummaryHeaderManager.cs index 2101ab38..3d1b8aa2 100644 --- a/src/Shentun.Peis.Domain/SumSummaryHeaders/SumSummaryHeaderManager.cs +++ b/src/Shentun.Peis.Domain/SumSummaryHeaders/SumSummaryHeaderManager.cs @@ -37,11 +37,11 @@ namespace Shentun.Peis.SumSummaryHeaders var patientRegister = await _patientRegisterRepository.GetAsync(PatientRegisterId); //总检综述包含正常结果 var isSummaryCheckSummayContainNormalResult = await _sysParmValueManager. - GetSysParmValueInMedicalCenterId(patientRegister.MedicalCenterId, + GetSysParmValue(patientRegister.MedicalCenterId, "summary_check_summay_contain_normal_result"); //默认综述 var summaryCheckDefaultSummayHeader = await _sysParmValueManager. - GetSysParmValueInMedicalCenterId(patientRegister.MedicalCenterId, + GetSysParmValue(patientRegister.MedicalCenterId, "summary_check_default_summay_header"); var checklist = (await _registerCheckRepository.GetDbSetAsync()) .Include(x => x.RegisterCheckAsbitems) diff --git a/src/Shentun.Peis.Domain/SysParmValues/SysParmValueManager.cs b/src/Shentun.Peis.Domain/SysParmValues/SysParmValueManager.cs index e17e3617..c47e7fce 100644 --- a/src/Shentun.Peis.Domain/SysParmValues/SysParmValueManager.cs +++ b/src/Shentun.Peis.Domain/SysParmValues/SysParmValueManager.cs @@ -71,7 +71,7 @@ namespace Shentun.Peis.SysParmValues /// 体检中心ID /// 系统参数ID /// - public async Task GetSysParmValueInMedicalCenterId(Guid medicalCenterId, string SysParmId) + public async Task GetSysParmValue(Guid medicalCenterId, string SysParmId) { string msg = ""; diff --git a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/LisRequests/LisRequestDbMapping.cs b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/LisRequests/LisRequestDbMapping.cs index bd5f7628..320fb485 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/LisRequests/LisRequestDbMapping.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/LisRequests/LisRequestDbMapping.cs @@ -17,11 +17,10 @@ namespace Shentun.Peis.DbMapping entity.HasComment("检验申请单"); //entity.Property(t => t.PatientRegisterId).HasComment("病人登记ID"); entity.Property(t => t.LisRequestNo).HasComment("检验申请单号").IsRequired(); - //entity.Property(t => t.SampleTypeId).HasComment("标本类型"); - //entity.Property(t => t.SampleContainerId).HasComment("标本容器编号"); - entity.Property(t => t.SampleGroupId).HasComment("条码分组ID").IsFixedLength(); + entity.Property(t => t.SampleTypeId).HasComment("标本类型").IsRequired(); + entity.Property(t => t.SampleContainerId).HasComment("标本容器编号").IsRequired(); entity.Property(t => t.IsPrint).HasComment("是否已打印").IsRequired().HasDefaultValueSql("'N'"); - entity.Property(t => t.Sampler).HasComment("采样人姓名"); + entity.Property(t => t.SamplerId).HasComment("采样人ID"); entity.Property(t => t.SamplingTime).HasComment("采样时间"); entity.Property(t => t.IsSignIn).HasComment("是签收").IsRequired().HasDefaultValueSql("'N'"); entity.Property(t => t.SignInOrder).HasComment("签收顺序"); @@ -38,17 +37,18 @@ namespace Shentun.Peis.DbMapping // .OnDelete(DeleteBehavior.ClientSetNull) // .HasConstraintName("fk_lis_request_patient_register"); - entity.HasOne(d => d.SampleGroup) - .WithMany(p => p.LisRequests) - .HasForeignKey(d => d.SampleGroupId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("fk_lis_request_sample_group"); - //entity.HasOne(d => d.SampleType) - // .WithMany(p => p.LisRequests) - // .HasForeignKey(d => d.SampleTypeId) - // .OnDelete(DeleteBehavior.ClientSetNull) - // .HasConstraintName("fk_lis_request_sample_type"); + entity.HasOne(d => d.SampleType) + .WithMany(p => p.LisRequests) + .HasForeignKey(d => d.SampleTypeId) + .OnDelete(DeleteBehavior.NoAction) + .HasConstraintName("fk_lis_request_sample_type"); + + entity.HasOne(d => d.SampleContainer) + .WithMany(p => p.LisRequests) + .HasForeignKey(d => d.SampleContainerId) + .OnDelete(DeleteBehavior.NoAction) + .HasConstraintName("fk_lis_request_sample_container"); entity.ConfigureByConvention(); } diff --git a/src/Shentun.Peis.EntityFrameworkCore/PrintReports/PatientRegisterGuideReportRepository.cs b/src/Shentun.Peis.EntityFrameworkCore/PrintReports/PatientRegisterGuideReportRepository.cs index e8cbe62e..6bda37cc 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/PrintReports/PatientRegisterGuideReportRepository.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/PrintReports/PatientRegisterGuideReportRepository.cs @@ -61,9 +61,9 @@ namespace Shentun.Peis.PrintReports #region 系统参数配置 - var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(OrOrganizationUnitId, "medical_center_address"); - var MedicalCenterFax = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(OrOrganizationUnitId, "medical_center_fax"); - var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(OrOrganizationUnitId, "medical_center_telphone"); + var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValue(OrOrganizationUnitId, "medical_center_address"); + var MedicalCenterFax = await _sysParmValueManager.GetSysParmValue(OrOrganizationUnitId, "medical_center_fax"); + var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValue(OrOrganizationUnitId, "medical_center_telphone"); #endregion @@ -126,9 +126,9 @@ namespace Shentun.Peis.PrintReports #region 系统参数配置 - var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(OrOrganizationUnitId, "medical_center_address"); - var MedicalCenterFax = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(OrOrganizationUnitId, "medical_center_fax"); - var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValueInMedicalCenterId(OrOrganizationUnitId, "medical_center_telphone"); + var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValue(OrOrganizationUnitId, "medical_center_address"); + var MedicalCenterFax = await _sysParmValueManager.GetSysParmValue(OrOrganizationUnitId, "medical_center_fax"); + var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValue(OrOrganizationUnitId, "medical_center_telphone"); #endregion var dbContext = await GetDbContextAsync();