Browse Source

优化检查危急值

lighter 1 year ago
parent
commit
83339ca2a6

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>web-server</artifactId>
-    <version>12.0.3</version>
+    <version>12.0.8</version>
     <name>web-server</name>
     <description>server for yibao-web</description>
     <properties>

+ 3 - 5
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/PatientCriticalValuesDao.java

@@ -44,11 +44,9 @@ public interface PatientCriticalValuesDao {
             "(select isnull(ward,admiss_ward) from zy_actpatient where inpatient_no=#{patNo})")
     CodeName selectTargetDept(String patNo);
 
+    @Select("select code,name from zd_unit_code where code=#{code}")
+    CodeName selectTargetDeptByCode(String code);
+
     @Select("select top 1 code,name from zd_unit_code where name=#{name}")
     CodeName selectTargetDeptByName(String name);
-
-    @Select("select code,name from zd_unit_code where code=" +
-            "(select visit_dept_code from mz_visit_table " +
-            "where patient_id=#{patNo} and times=#{times})")
-    CodeName selectTargetDept2(String patNo, int times);
 }

+ 2 - 0
src/main/java/thyyxxk/webserver/entity/criticalValue/request/CriticalValueFromTest.java

@@ -1,6 +1,7 @@
 package thyyxxk.webserver.entity.criticalValue.request;
 
 import lombok.Data;
+import thyyxxk.webserver.entity.criticalValue.PatientType;
 
 @Data
 public class CriticalValueFromTest {
@@ -16,4 +17,5 @@ public class CriticalValueFromTest {
     private String roomcood;
     private String commitman;
     private String reqName;
+    private PatientType patientType;
 }

+ 24 - 9
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/PatientCriticalValuesService.java

@@ -151,29 +151,44 @@ public class PatientCriticalValuesService {
         return employeeList;
     }
 
-    public CodeName getTargetDept(String patNo, String sentDept, PatientType patientType) {
+    public CodeName getTargetDept(CriticalValueFromTest value) {
+        if (StringUtil.notBlank(value.getSentByDepartmentCode())
+                && StringUtil.notBlank(value.getSentByDepartment())) {
+            return new CodeName(value.getSentByDepartmentCode(), value.getSentByDepartment());
+        }
         CodeName targetDept = null;
-        if (patientType == PatientType.INPATIENT) {
-            targetDept = dao.selectTargetDept(patNo);
+        if (value.getPatientType() == PatientType.INPATIENT) {
+            targetDept = dao.selectTargetDept(value.getPatNo());
         }
         if (null == targetDept) {
-            targetDept = dao.selectTargetDeptByName(sentDept);
+            if (StringUtil.notBlank(value.getSentByDepartmentCode())) {
+                targetDept = dao.selectTargetDeptByCode(value.getSentByDepartmentCode());
+            } else {
+                targetDept = dao.selectTargetDeptByName(value.getSentByDepartment());
+            }
         }
         return targetDept;
     }
 
     public ResultVo<String> checkTheCriticalValue(CriticalValueFromTest value) {
         log.info("收到检查危急值消息:{}", JSON.toJSON(value));
+        if (StringUtil.isBlank(value.getPatNo())) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "住院/门诊号不能为空。");
+        }
         if (null == value.getFlag()) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR,
-                    "flag 门诊住院标志不存在 1=住院 2=门诊");
+                    "门诊住院标志[flag]不存在(1=住院,2=门诊)。");
+        }
+        if (1 != value.getFlag() && 2 != value.getFlag()) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR,
+                    "门诊住院标志[flag=" + value.getFlag() + "]值域错误(1=住院,2=门诊)。");
         }
-        if (StringUtil.isBlank(value.getSentByDepartment())) {
+        if (StringUtil.isBlank(value.getSentByDepartment()) && StringUtil.isBlank(value.getSentByDepartmentCode())) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "送检科室不能为空。");
         }
-        PatientType patientType = value.getFlag() == 1 ?
-                PatientType.INPATIENT : PatientType.OUTPATIENT;
-        CodeName targetDept = getTargetDept(value.getPatNo(), value.getSentByDepartment(), patientType);
+        PatientType patientType = value.getFlag() == 1 ? PatientType.INPATIENT : PatientType.OUTPATIENT;
+        value.setPatientType(patientType);
+        CodeName targetDept = getTargetDept(value);
         if (null == targetDept) {
             return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "无法找到患者的送检科室。");
         }