Browse Source

病案首页优化。

lighter 3 years ago
parent
commit
553f2fc830

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

@@ -84,7 +84,7 @@ public class CaseFrontSheetController {
     }
 
     @PostMapping("/printVerify")
-    public ResultVo<List<PureCodeName>> infoVerification(@RequestBody OpCaseFrontsheet param) {
+    public ResultVo<Map<String, List<PureCodeName>>> infoVerification(@RequestBody OpCaseFrontsheet param) {
         param.setStaffId(TokenUtil.getTokenUserId());
         return service.infoVerification(param);
     }

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

@@ -527,7 +527,7 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
     @Select("select rtrim(dis_diag_no) no, rtrim(dis_diag) code, " +
             "rtrim(dis_diag_comment) name, rtrim(dis_diag_status) cyzg, " +
             "rtrim(op_id_code) operId, convert(varchar(19), op_diag_date, 21) opDate, " +
-            "diagType='13', bzfx='普通' " +
+            "diagType='13', bzfx='普通', admiss_cond " +
             "from zy_dis_diag_yb where inpatient_no=#{bah} and admiss_times=#{times}")
     List<YiBaoDisdiag> getYbDiags(@Param("bah") String bah, @Param("times") int times);
 
@@ -537,9 +537,10 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
     @Delete("delete from zy_dis_diag_yb where inpatient_no=#{bah} and admiss_times=#{times}")
     void deleteOldYbDiag(@Param("bah") String bah, @Param("times") int times);
 
-    @Insert("exec p_set_zy_dis_diag_yb #{bah},#{times},#{no},13,#{code}," +
-            "#{name},#{operId},#{opDate},'普通',#{cyzg}")
-    void saveYbDiag(YiBaoDisdiag diag);
+    @Insert("insert into zy_dis_diag_yb (inpatient_no, admiss_times, dis_diag_no, dis_diag_type, dis_diag, " +
+            "dis_diag_comment, op_id_code, op_diag_date, dis_diag_bzfx, dis_diag_status, si_diag_type, admiss_cond) " +
+            "values (#{bah},#{times},#{no},13,#{code},#{name},#{operId},#{opDate},'普通',#{cyzg},#{siDiagType},#{admissCond})    ")
+    void insertNewYbDiag(YiBaoDisdiag diag);
 
     @Update("update zy_actpatient set lend_flag=1 where inpatient_no=#{bah} " +
             "and admiss_times=#{times}")

+ 2 - 0
src/main/java/thyyxxk/webserver/entity/casefrontsheet/YiBaoDisdiag.java

@@ -14,4 +14,6 @@ public class YiBaoDisdiag {
     private String opDate;
     private String diagType;
     private String bzfx;
+    private Integer siDiagType;
+    private Integer admissCond;
 }

+ 16 - 7
src/main/java/thyyxxk/webserver/service/casefrontsheet/CaseFrontSheetService.java

@@ -448,27 +448,31 @@ public class CaseFrontSheetService {
         return result;
     }
 
-    public ResultVo<List<PureCodeName>> infoVerification(OpCaseFrontsheet param) {
+    public ResultVo<Map<String, List<PureCodeName>>> infoVerification(OpCaseFrontsheet param) {
         CaseFrontsheetMain sheet = param.getSheet();
         if (sheet.getFileStatus() == 2) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "已最终归档病案首页无法打印!");
         }
-        List<PureCodeName> message = VerifyCaseFrontSheet.getInstance().printVerify(sheet);
+        List<PureCodeName> force = VerifyCaseFrontSheet.getInstance().printVerify(sheet);
+        List<PureCodeName> advice = new ArrayList<>();
         JSONObject powersi = qualityControl(sheet);
         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++) {
-                    message.add(new PureCodeName("", retarr.getJSONObject(i).getString("result_msg")));
+                    advice.add(new PureCodeName("", retarr.getJSONObject(i).getString("result_msg")));
                 }
             }
         }
-        log.info("打印前病案逻辑校验, 操作员:{} >>> {}", param.getStaffId(), message);
-        if (message.isEmpty()) {
+        log.info("打印前病案逻辑校验, 操作员:{} >>> {}", param.getStaffId(), force);
+        if (force.isEmpty() && advice.isEmpty()) {
             return ResultVoUtil.success();
         }
-        return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", message);
+        Map<String, List<PureCodeName>> map = new HashMap<>();
+        map.put("force", force);
+        map.put("advice", advice);
+        return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", map);
     }
 
     public ResultVo<List<PureCodeName>> saveVerify(OpCaseFrontsheet info) {
@@ -515,15 +519,20 @@ public class CaseFrontSheetService {
     public ResultVo<String> saveYbDiags(SaveYbDiagParam param) {
         dao.updateOperation(param.getBah(), param.getOperation());
         dao.deleteOldYbDiag(param.getBah(), param.getTimes());
+        List<String> diagCodes = new ArrayList<>();
         for (int i = 0; i < param.getYbDiags().size(); i++) {
             YiBaoDisdiag diag = param.getYbDiags().get(i);
             if (diag.getCode() == null) {
                 break;
             }
+            if (diagCodes.contains(diag.getCode())) {
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "【诊断编码:" + diag.getCode() + "】请勿填入重复的诊断!");
+            }
+            diagCodes.add(diag.getCode());
             diag.setNo(i + 1);
             diag.setBah(param.getBah());
             diag.setTimes(param.getTimes());
-            dao.saveYbDiag(diag);
+            dao.insertNewYbDiag(diag);
             log.info("保存医保诊断>>> {}", diag);
         }
         return ResultVoUtil.success();