From da43bfaeb392e384a75b07dfcb0c168beb8e442f Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Sun, 12 May 2024 15:31:50 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E8=AE=B0=E4=BF=A1?=
 =?UTF-8?q?=E6=81=AF=E6=98=AF=E5=A4=84=E7=90=86=E4=BD=93=E6=A3=80=E6=97=A5?=
 =?UTF-8?q?=E6=9C=9F=E8=B7=9F=E7=8A=B6=E6=80=81=E3=80=81=E5=A2=9E=E5=8A=A0?=
 =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=BA=E5=91=98=E6=9D=A1=E7=A0=81=E5=8F=B7?=
 =?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 .../CheckRequestNoInputDto.cs                 | 14 ++++
 .../PatientRegisters/LisRequestNoInputDto.cs  | 14 ++++
 .../PatientRegisterSimpleDto.cs               | 11 +++
 .../PatientRegisterAppService.cs              | 82 +++++++++++++++++--
 .../PatientRegisterManager.cs                 |  9 ++
 5 files changed, 124 insertions(+), 6 deletions(-)
 create mode 100644 src/Shentun.Peis.Application.Contracts/PatientRegisters/CheckRequestNoInputDto.cs
 create mode 100644 src/Shentun.Peis.Application.Contracts/PatientRegisters/LisRequestNoInputDto.cs
 create mode 100644 src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterSimpleDto.cs
diff --git a/src/Shentun.Peis.Application.Contracts/PatientRegisters/CheckRequestNoInputDto.cs b/src/Shentun.Peis.Application.Contracts/PatientRegisters/CheckRequestNoInputDto.cs
new file mode 100644
index 0000000..0a73be1
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/PatientRegisters/CheckRequestNoInputDto.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.PatientRegisters
+{
+    public class CheckRequestNoInputDto
+    {
+        /// 
+        /// 检查单号
+        /// 
+        public string CheckRequestNo { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application.Contracts/PatientRegisters/LisRequestNoInputDto.cs b/src/Shentun.Peis.Application.Contracts/PatientRegisters/LisRequestNoInputDto.cs
new file mode 100644
index 0000000..926c44f
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/PatientRegisters/LisRequestNoInputDto.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.PatientRegisters
+{
+    public class LisRequestNoInputDto
+    {
+        /// 
+        /// Lis申请单号
+        /// 
+        public string LisRequestNo { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterSimpleDto.cs b/src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterSimpleDto.cs
new file mode 100644
index 0000000..1f7a6e7
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterSimpleDto.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.PatientRegisters
+{
+    public class PatientRegisterSimpleDto
+    {
+        public string PatientRegisterNo { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
index d4128d6..ebb7db0 100644
--- a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
+++ b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
@@ -12,6 +12,7 @@ using Shentun.Peis.CommonCharTypes;
 using Shentun.Peis.CustomerOrgRegisters;
 using Shentun.Peis.CustomerOrgs;
 using Shentun.Peis.Enums;
+using Shentun.Peis.LisRequests;
 using Shentun.Peis.Models;
 using Shentun.Peis.PatientRegisterExters;
 using Shentun.Peis.Patients;
@@ -104,6 +105,7 @@ namespace Shentun.Peis.PatientRegisters
         private readonly SysParmValueManager _sysParmValueManager;
         private readonly IRepository _patientRegisterExterRepository;
         private readonly PatientRegisterExterManager _patientRegisterExterManager;
+        private readonly IRepository _lisRequestRepository;
         public PatientRegisterAppService(
             IRepository repository,
             IRepository patientRepository,
@@ -149,7 +151,8 @@ namespace Shentun.Peis.PatientRegisters
             SumSuggestionContentManager sumSuggestionContentManager,
             SysParmValueManager sysParmValueManager,
             IRepository patientRegisterExterRepository,
-            PatientRegisterExterManager patientRegisterExterManager)
+            PatientRegisterExterManager patientRegisterExterManager,
+            IRepository lisRequestRepository)
             : base(repository)
         {
             this._repository = repository;
@@ -197,6 +200,7 @@ namespace Shentun.Peis.PatientRegisters
             _sysParmValueManager = sysParmValueManager;
             _patientRegisterExterRepository = patientRegisterExterRepository;
             _patientRegisterExterManager = patientRegisterExterManager;
+            _lisRequestRepository = lisRequestRepository;
         }
         /// 
         /// 获取通过主键
@@ -209,6 +213,72 @@ namespace Shentun.Peis.PatientRegisters
         }
 
 
+        /// 
+        /// 根据lis申请单号 获取人员条码号
+        /// 
+        /// 
+        /// 
+        /// 
+        [HttpPost("api/app/PatientRegister/GetPatientRegisterNoByLisRequestNo")]
+        public async Task GetPatientRegisterNoByLisRequestNoAsync(LisRequestNoInputDto input)
+        {
+            if (input == null)
+            {
+                throw new UserFriendlyException("请求参数有误");
+            }
+
+            var patientRegisterNo = (from lisRequest in await _lisRequestRepository.GetQueryableAsync()
+                                     join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId
+                                     join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id
+                                     join patientRegister in await Repository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id
+                                     where lisRequest.LisRequestNo == input.LisRequestNo
+                                     select patientRegister.PatientRegisterNo).FirstOrDefault();
+
+            if (!string.IsNullOrEmpty(patientRegisterNo))
+            {
+                return new PatientRegisterSimpleDto
+                {
+                    PatientRegisterNo = patientRegisterNo
+                };
+            }
+            else
+            {
+                throw new UserFriendlyException("Lis申请单有误");
+            }
+        }
+
+        /// 
+        /// 根据检查单号 获取人员条码号
+        /// 
+        /// 
+        /// 
+        /// 
+        [HttpPost("api/app/PatientRegister/GetPatientRegisterNoByCheckRequestNo")]
+        public async Task GetPatientRegisterNoByCheckRequestNoAsync(CheckRequestNoInputDto input)
+        {
+            if (input == null)
+            {
+                throw new UserFriendlyException("请求参数有误");
+            }
+
+            var patientRegisterNo = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
+                                     join patientRegister in await Repository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id
+                                     where registerCheck.CheckRequestNo == input.CheckRequestNo
+                                     select patientRegister.PatientRegisterNo).FirstOrDefault();
+
+            if (!string.IsNullOrEmpty(patientRegisterNo))
+            {
+                return new PatientRegisterSimpleDto
+                {
+                    PatientRegisterNo = patientRegisterNo
+                };
+            }
+            else
+            {
+                throw new UserFriendlyException("检查单有误");
+            }
+        }
+
 
         /// 
         /// 编辑反写接口,包含档案表跟登记表的信息
@@ -820,7 +890,7 @@ namespace Shentun.Peis.PatientRegisters
             }
             //创建人员登记信息
             createPatientRegisterArg.PatientId = patient.Id;
-            if(patient.BirthDate != null)
+            if (patient.BirthDate != null)
             {
                 createPatientRegisterArg.BirthDate = patient.BirthDate;
             }
@@ -1162,7 +1232,7 @@ namespace Shentun.Peis.PatientRegisters
             }
 
 
-           
+
 
             int totalCount = sumquery.Count();
 
@@ -2791,9 +2861,9 @@ namespace Shentun.Peis.PatientRegisters
                 }
 
 
-                patientRegisterList.ForEach(f => 
+                patientRegisterList.ForEach(f =>
                     {
-                        if(f.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration 
+                        if (f.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration
                         && input.CompleteFlag == PatientRegisterCompleteFlag.Registration)
                         {
                             f.MedicalStartDate = DateTime.Now;
@@ -2809,7 +2879,7 @@ namespace Shentun.Peis.PatientRegisters
                     patientRegisterList.ForEach(f => f.MedicalStartDate = PageHelper.ConvertDatetimeV(input.MedicalStartDate));
 
                 }
-               
+
 
                 await _repository.UpdateManyAsync(patientRegisterList);
 
diff --git a/src/Shentun.Peis.Domain/PatientRegisters/PatientRegisterManager.cs b/src/Shentun.Peis.Domain/PatientRegisters/PatientRegisterManager.cs
index fba9a12..fa03e37 100644
--- a/src/Shentun.Peis.Domain/PatientRegisters/PatientRegisterManager.cs
+++ b/src/Shentun.Peis.Domain/PatientRegisters/PatientRegisterManager.cs
@@ -672,6 +672,15 @@ namespace Shentun.Peis.PatientRegisters
                 throw new UserFriendlyException("人员信息姓名和性别和原来的信息都不一致,禁止修改");
             }
 
+            //预登记改正式登记  修改体检日期跟状态
+            if (targetEntity.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration 
+                && sourceEntity.CompleteFlag == PatientRegisterCompleteFlag.Registration)
+            {
+                targetEntity.MedicalStartDate = DateTime.Now;
+                targetEntity.IsMedicalStart = 'Y';
+            }
+
+
             //targetEntity.AuditDate = sourceEntity.AuditDate;
             //targetEntity.AuditDoctor = sourceEntity.AuditDoctor;
             targetEntity.BirthDate = sourceEntity.BirthDate;