فهرست منبع

开放首页校验接口和部分优化。

lighter 2 سال پیش
والد
کامیت
03ab22738a

+ 1 - 0
src/main/java/thyyxxk/webserver/controller/casefrontsheet/CaseFrontSheetController.java

@@ -137,4 +137,5 @@ public class CaseFrontSheetController {
     public ResultVo<String> isMedinsSetl(@RequestParam("patNo") String patNo, @RequestParam("times") Integer times) {
         return service.isMedinsSetl(patNo, times);
     }
+
 }

+ 2 - 2
src/main/java/thyyxxk/webserver/dao/his/casefrontsheet/CaseFrontSheetDao.java

@@ -677,8 +677,8 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
     @Select("select name from t_region where code=#{region}")
     String selectRegionName(@Param("region") Integer region);
 
-    @Select("select med_type from t_si_pat_info where pat_no=#{patNo} and times=#{times} and ledger_sn=" +
-            "(select max(t.ledger_sn) from zy_ledger_file t where t.inpatient_no=#{patNo} and t.admiss_times=#{times})")
+    @Select("select top 1 med_type from t_si_pat_info where pat_no=#{patNo} and times=#{times} order by " +
+            "ledger_sn desc")
     String selectMedType(@Param("patNo") String patNo,
                          @Param("times") int times);
 

+ 0 - 6
src/main/java/thyyxxk/webserver/entity/casefrontsheet/CaseFrontsheetMain.java

@@ -811,9 +811,6 @@ public class CaseFrontsheetMain implements Serializable {
     @TableField(exist = false)
     private StandardAddressMember addressMember;
 
-    @TableField(exist = false)
-    private Boolean isDoctorPrint;
-
     public List<CaseFrontsheetDisdiag> getDisdiagList() {
         return null == disdiagList ? new ArrayList<>() : disdiagList;
     }
@@ -878,7 +875,4 @@ public class CaseFrontsheetMain implements Serializable {
         return isBlank(icuHours) ? "0" : icuHours;
     }
 
-    public Boolean isDoctorPrint() {
-        return null != isDoctorPrint && isDoctorPrint;
-    }
 }

+ 82 - 70
src/main/java/thyyxxk/webserver/service/casefrontsheet/CaseFrontSheetMainService.java

@@ -199,33 +199,29 @@ public class CaseFrontSheetMainService {
     }
 
     public ResultVo<CaseFrontsheetMain> getPatientInfo(SheetOverview overview) {
-        CaseFrontsheetMain sheet;
         String bah = overview.getBah();
         Integer times = overview.getTimes();
         StandardAddressMember standardAddressMember = getStandardAddressMember(bah);
-        int fileStatus = overview.getFileStatus();
-        if (fileStatus == 1) {
-            sheet = dao.selectSignedSheetMain(bah, times);
-            if (null != sheet) {
-                sheet.setDisdiagList(getSheetDisDiags(bah, times, fileStatus));
-                sheet.setSurgeryList(getSheetSurgeries(bah, times, fileStatus));
-                if (null != standardAddressMember) {
-                    sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
-                }
-                if (sheet.getAge() == 0 && null == sheet.getAgeDays()) {
-                    sheet.setAgeDays(DateUtil.calculateNewBornAge(sheet.getBirthDate(), sheet.getAdmissDate()));
-                    dao.updateNewBornAge(bah, times, sheet.getAgeDays());
-                }
-                if (StringUtil.isBlank(sheet.getMedType())) {
-                    String psnmedtype = dao.selectMedType(sheet.getBah(), sheet.getAdmissTimes());
-                    MedType medType = MedType.get(psnmedtype);
-                    if (null != medType) {
-                        sheet.setMedType(psnmedtype);
-                        sheet.setMedTypeName(medType.getName());
-                    }
+        CaseFrontsheetMain sheet = dao.selectSignedSheetMain(bah, times);
+        if (null != sheet) {
+            sheet.setDisdiagList(getSheetDisDiags(bah, times, 1));
+            sheet.setSurgeryList(getSheetSurgeries(bah, times, 1));
+            if (null != standardAddressMember) {
+                sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
+            }
+            if (sheet.getAge() == 0 && null == sheet.getAgeDays()) {
+                sheet.setAgeDays(DateUtil.calculateNewBornAge(sheet.getBirthDate(), sheet.getAdmissDate()));
+                dao.updateNewBornAge(bah, times, sheet.getAgeDays());
+            }
+            if (StringUtil.isBlank(sheet.getMedType())) {
+                String psnmedtype = dao.selectMedType(sheet.getBah(), sheet.getAdmissTimes());
+                MedType medType = MedType.get(psnmedtype);
+                if (null != medType) {
+                    sheet.setMedType(psnmedtype);
+                    sheet.setMedTypeName(medType.getName());
                 }
-                return ResultVoUtil.success(sheet);
             }
+            return ResultVoUtil.success(sheet);
         }
         int flag = overview.getInOutFlag();
         if (flag == 2) {
@@ -260,20 +256,16 @@ public class CaseFrontSheetMainService {
             sheet2.setDismissDate(dismissDate);
         }
         CaseFrontsheetMain sheet3 = dao.getBatjBa1(bah, times);
-        if (sheet3 == null) {
-            if (dao.isBatjBa1Exist(bah, times) == 0) {
-                dao.createBatjBa1(bah, times, sheet.getName(), sheet2.getAdmissDate(),
-                        sheet2.getAdmissDept(), sheet2.getAdmissWard());
-                log.info("insert batjBa1>>> " + bah + ", " + times);
-            }
+        if (sheet3 == null && dao.isBatjBa1Exist(bah, times) == 0) {
+            dao.createBatjBa1(bah, times, sheet.getName(), sheet2.getAdmissDate(),
+                    sheet2.getAdmissDept(), sheet2.getAdmissWard());
+            log.info("insert batjBa1>>> " + bah + ", " + times);
         }
         CaseFrontsheetMain sheet4 = flag == 1 ? dao.getBatjBa2ForInPatient(bah, times) :
                 dao.getBatjBa2ForOutPatient(bah, times);
-        if (sheet4 == null) {
-            if (dao.isBatjBa2Exist(bah, times) == 0) {
-                dao.createBatjBa2(bah, times);
-                log.info("insert batjBa2>>> " + bah + ", " + times);
-            }
+        if (sheet4 == null && dao.isBatjBa2Exist(bah, times) == 0) {
+            dao.createBatjBa2(bah, times);
+            log.info("insert batjBa2>>> " + bah + ", " + times);
         }
         mergeObject(sheet1, sheet);
         mergeObject(sheet2, sheet);
@@ -286,23 +278,17 @@ public class CaseFrontSheetMainService {
             sheet.setZyDismissWay("4");
         }
         Integer days = DateUtil.daysBetween(sheet.getDismissDate(), sheet.getAdmissDate());
-        if (0 == days) {
-            days = 1;
-        }
-        if (days > 0) {
-            sheet.setAdmissDays(String.valueOf(days));
-        }
-
+        sheet.setAdmissDays(0 == days ? "1" : String.valueOf(days));
         if (null == sheet.getQualityControlDate()) {
             sheet.setQualityControlDate(new Date());
         }
-        sheet.setDisdiagList(getSheetDisDiags(bah, times, fileStatus));
-        sheet.setSurgeryList(getSheetSurgeries(bah, times, fileStatus));
-        if (null != standardAddressMember) {
+        sheet.setDisdiagList(getSheetDisDiags(bah, times, 0));
+        sheet.setSurgeryList(getSheetSurgeries(bah, times, 0));
+        if (null == standardAddressMember) {
+            sheet.setLivePlaceCombo(sheet.getLivePlace());
+        } else {
             sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
             sheet.setLivePlaceCombo(standardAddressMember.makeAddressCombo() + sheet.getLivePlace());
-        } else {
-            sheet.setLivePlaceCombo(sheet.getLivePlace());
         }
         return ResultVoUtil.success(sheet);
     }
@@ -618,38 +604,18 @@ public class CaseFrontSheetMainService {
             return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", map);
         }
         sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
-        sheet.setIsDoctorPrint(true);
-        List<CodeName> force = VerifyCaseFrontSheet.getInstance().printVerify(sheet, param.getOpType());
-        CaseFrontsheetDisdiag disdiag = sheet.getDisdiagList().get(0);
-        List<CodeName> advice = VerifyCaseFrontSheet.getInstance().adviseVerification(sheet.getSocialNo(), disdiag.getCode());
-        setlQualityControlPass(sheet, advice);
-        surgeryChargesVerify(sheet, advice);
-        JSONObject powersi = powersiQualityCheck(sheet);
-        if (null != powersi) {
-            JSONObject responseEntity = powersi.getJSONObject("responseEntity");
-            if (null != responseEntity) {
-                JSONArray retarr = responseEntity.getJSONArray("newSettleMemInfo");
-                if (null != retarr && retarr.size() > 0) {
-                    for (int i = 0; i < retarr.size(); i++) {
-                        advice.add(new CodeName("", retarr.getJSONObject(i).getString("result_msg")));
-                    }
-                }
-            }
-        }
-        if (force.isEmpty()) {
+        Map<String, List<CodeName>> warnings = beginAnalyzeSheet(sheet, param.getOpType());
+        if (warnings.get("force").isEmpty()) {
             saveSheet(sheet);
             if (param.getPage() == 2) {
                 sheet.setFileStatus(0);
                 insertSheetData(sheet);
             }
-            if (advice.isEmpty()) {
+            if (warnings.get("advice").isEmpty()) {
                 return ResultVoUtil.success();
             }
         }
-        Map<String, List<CodeName>> map = new HashMap<>();
-        map.put("force", force);
-        map.put("advice", advice);
-        return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", map);
+        return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", warnings);
     }
 
     public ResultVo<List<CodeName>> saveVerify(OpCaseFrontsheet info) {
@@ -670,6 +636,53 @@ public class CaseFrontSheetMainService {
         return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", message);
     }
 
+    private Map<String, List<CodeName>> beginAnalyzeSheet(CaseFrontsheetMain sheet, int optype) {
+        List<CodeName> force = VerifyCaseFrontSheet.getInstance().printVerify(sheet, optype);
+        CaseFrontsheetDisdiag disdiag = sheet.getDisdiagList().get(0);
+        List<CodeName> advice = VerifyCaseFrontSheet.getInstance().adviseVerification(sheet.getSocialNo(), disdiag.getCode());
+        setlQualityControlPass(sheet, advice);
+        surgeryChargesVerify(sheet, advice);
+        JSONObject powersi = powersiQualityCheck(sheet);
+        if (null != powersi) {
+            JSONObject responseEntity = powersi.getJSONObject("responseEntity");
+            if (null != responseEntity) {
+                JSONArray retarr = responseEntity.getJSONArray("newSettleMemInfo");
+                if (null != retarr && retarr.size() > 0) {
+                    for (int i = 0; i < retarr.size(); i++) {
+                        advice.add(new CodeName("", retarr.getJSONObject(i).getString("result_msg")));
+                    }
+                }
+            }
+        }
+        Map<String, List<CodeName>> map = new HashMap<>();
+        map.put("force", force);
+        map.put("advice", advice);
+        return map;
+    }
+
+    public ResultVo<Map<String, List<CodeName>>> sheetVerification(SheetOverview view) {
+        if (StringUtil.isBlank(view.getBah()) || null == view.getTimes() || null == view.getInOutFlag()) {
+            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "住院号、住院次数、在院状态不能为空。");
+        }
+        CaseFrontsheetMain sheet = getPatientInfo(view).getData();
+        if (null == sheet) {
+            return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到病案数据。");
+        }
+        Map<String, List<CodeName>> warnings = beginAnalyzeSheet(sheet, 4);
+        if (warnings.get("force").isEmpty()) {
+            Integer status = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
+            status = null == status ? -1 : status;
+            if (status == 0) {
+                dao.deleteSheetInfo(view.getBah(), view.getTimes());
+            }
+            if (status < 1) {
+                sheet.setFileStatus(0);
+                insertSheetData(sheet);
+            }
+        }
+        return ResultVoUtil.success(warnings);
+    }
+
     public ResultVo<List<YiBaoDisdiag>> getYbDiags(String bah, int times) {
         List<YiBaoDisdiag> diags = dao.getYbDiags(bah, times);
         return ResultVoUtil.success(diags);
@@ -705,7 +718,6 @@ public class CaseFrontSheetMainService {
         return ResultVoUtil.success();
     }
 
-
     public ResultVo<List<SheetOverview>> advanceSearch(AdvanceSearchParam param) {
         return ResultVoUtil.success(dao.advanceSearch(param));
     }

+ 0 - 1
src/main/java/thyyxxk/webserver/service/casefrontsheet/VerifyCaseFrontSheet.java

@@ -305,7 +305,6 @@ public class VerifyCaseFrontSheet {
                 array.add(new CodeName("ageDays","新生儿年龄不能为空!"));
             }
         }
-
         return connectedVerify(array, info, opType);
     }