Browse Source

入院接收时更新床位

lighter 2 weeks ago
parent
commit
abff6242e9

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/medicaladvice/patientinfo/AdjustBedDao.java

@@ -67,7 +67,7 @@ public interface AdjustBedDao {
     @Select(" select top 1 rtrim(name) name  from mz_patient_mi where patient_id =#{patientId}  ")
     String selectPatientMi(@Param("patientId") String patientId);
 
-    @Select("select rtrim(inpatient_no) as inpatientNo, " +
+    @Select("select rtrim(inpatient_no) as inpatientNo,rtrim(ward) as ward, " +
             "admiss_times,rtrim(name) as name,admiss_date,rtrim(bed_no) as bedNo, " +
             "gender=case when sex='1' then N'男' when sex='2' then N'女' else N'未知' end, " +
             "wardName=(select rtrim(d.name) from zd_unit_code d where d.code=ward), " +

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/zygl/ZyBedMiDao.java

@@ -38,7 +38,7 @@ public interface ZyBedMiDao {
      * @param bedNo
      * @return
      */
-    @Select("SELECT bed_status,bed_no FROM zy_bed_mi WHERE  dept_code =#{deptCode} AND ward_code =#{wardCode} AND bed_no =#{bedNo}")
+    @Select("SELECT ward_code,dept_code,bed_status,bed_no,inpatient_no,admiss_times FROM zy_bed_mi WHERE  dept_code =#{deptCode} AND ward_code =#{wardCode} AND bed_no =#{bedNo}")
     ZyBedMi selectZyBedMi(@Param("deptCode") String deptCode, @Param("wardCode") String wardCode, @Param("bedNo") String bedNo);
 
     /**

+ 23 - 13
src/main/java/thyyxxk/webserver/service/medicaladvice/patientinfo/AdjustBedService.java

@@ -16,9 +16,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
+import thyyxxk.webserver.constants.BedStatusEnum;
 import thyyxxk.webserver.constants.Message;
 import thyyxxk.webserver.dao.his.medicaladvice.patientinfo.AdjustBedDao;
 import thyyxxk.webserver.dao.his.medicaladvice.patientinfo.ZyBedPreMsgDao;
+import thyyxxk.webserver.dao.his.zygl.ZyBedMiDao;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.inpatient.ZyActpatient;
@@ -35,16 +37,9 @@ import thyyxxk.webserver.service.autocreateemr.AutoCreateEmrServer;
 import thyyxxk.webserver.service.externalhttp.WxServer;
 import thyyxxk.webserver.service.hutoolcache.DeptCache;
 import thyyxxk.webserver.service.hutoolcache.UserCache;
-import thyyxxk.webserver.utils.AssertUtil;
-import thyyxxk.webserver.utils.CommonUtil;
-import thyyxxk.webserver.utils.ResultVoUtil;
-import thyyxxk.webserver.utils.SocketMsg;
+import thyyxxk.webserver.utils.*;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description:
@@ -62,6 +57,7 @@ public class AdjustBedService {
     private final UserCache userCache;
     private final DeptCache deptCache;
     private final AutoCreateEmrServer autoCreateEmrServer;
+    private final ZyBedMiDao zyBedMiDao;
 
 
     public ResultVo<String> preAllocationBed(MzZyReq mzZyReq) {
@@ -171,13 +167,27 @@ public class AdjustBedService {
         return dao.getPreAdmPatients(ward);
     }
 
-    public void receivePatient(ZyActpatient actpatient) {
+    public void receivePatient(ZyActpatient act) {
+        ZyBedMi zyBedMi = zyBedMiDao.selectZyBedMi(act.getWard(), act.getWard(), act.getBedNo());
+        if (StringUtil.notBlank(zyBedMi.getInpatientNo()) &&
+                !Objects.equals(zyBedMi.getInpatientNo(), act.getInpatientNo())) {
+            String freeBedNo = zyBedMiDao.selectMaxFreeBedNo(act.getWard(), act.getWard());
+            if (StringUtil.isBlank(freeBedNo)) {
+                throw new BizException(ExceptionEnum.LOGICAL_ERROR, "接收失败,没有空闲床位!");
+            }
+            zyBedMi.setBedNo(freeBedNo);
+        }
+        zyBedMi.setInpatientNo(act.getInpatientNo());
+        zyBedMi.setAdmissTimes(act.getAdmissTimes());
+        zyBedMi.setBedStatus(BedStatusEnum.ARRANGE.code);
+        zyBedMiDao.updateZyBedMi(zyBedMi);
+
         AutoCreateEmrParams.Params params = new AutoCreateEmrParams.Params();
-        params.setPatNo(actpatient.getInpatientNo());
-        params.setTimes(actpatient.getAdmissTimes());
+        params.setPatNo(act.getInpatientNo());
+        params.setTimes(act.getAdmissTimes());
         // 自动创建病程记录
         autoCreateEmrServer.createEmrAsync(params);
-        dao.updateBedStatus(actpatient.getInpatientNo(), actpatient.getPhry());
+        dao.updateBedStatus(act.getInpatientNo(), act.getPhry());
     }
 
     public ResultVo<List<Map>> getIdleBedNoList(ZyBedPreMsg msg) {