Explorar el Código

病案首页校验加强

lighter hace 2 años
padre
commit
03853a125b

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

@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.*;
 import thyyxxk.webserver.entity.casefrontsheet.*;
 import thyyxxk.webserver.entity.covid.Region;
 import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.dictionary.HisWjwMatchEntity;
 
 import java.util.Date;
 import java.util.List;
@@ -687,6 +688,24 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
                                                        @Param("city") int city,
                                                        @Param("district") int district);
 
+    @Select("<script>" +
+            "select rtrim(code) as code,rtrim(name) as name,charge_code as wjwCode,charge_name as wjwName from zd_icd9_cm3 " +
+            "where code in " +
+            "<foreach collection='surgeries' item='surgery' open='(' separator=',' close=')'>" +
+            "#{surgery.code}" +
+            "</foreach>" +
+            "</script>")
+    List<HisWjwMatchEntity> selectSurgeryChargeCode(List<CaseFrontsheetSurgery> surgeries);
+
+    @Select("<script>" +
+            "select sum(charge_amount) from zy_detail_charge where inpatient_no=#{patNo} and admiss_times=#{times} " +
+            "and charge_code_mx in " +
+            "<foreach collection='list' item='code' open='(' separator=',' close=')'>" +
+            "#{code}" +
+            "</foreach>" +
+            "</script>")
+    int selectChargeSumamt(@Param("patNo") String patNo, @Param("times") int times, @Param("list") String[] list);
+
     @Select("select code,yb_name as name,yb_code from zd_anaesthesia where yb_code is not null")
     List<CodeName> selectZdAnstWays();
 

+ 27 - 3
src/main/java/thyyxxk/webserver/service/casefrontsheet/CaseFrontSheetMainService.java

@@ -22,6 +22,7 @@ import thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck.Qua
 import thyyxxk.webserver.entity.casefrontsheet.*;
 import thyyxxk.webserver.entity.covid.Region;
 import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.dictionary.HisWjwMatchEntity;
 import thyyxxk.webserver.service.externalhttp.PowersiSrvc;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.service.zhuyuanyisheng.EmrServer;
@@ -449,7 +450,7 @@ public class CaseFrontSheetMainService {
         Integer status = dao.getSignApplyStatus(sheet.getBah(), sheet.getAdmissTimes());
         if (null == status) {
             sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
-            List<CodeName> message = VerifyCaseFrontSheet.getInstance().printVerify(sheet, 1);
+            List<CodeName> message = printVerification(sheet, 1);
             if (message.isEmpty()) {
                 dao.insertNewSignApply(sheet.getBah(), sheet.getAdmissTimes(),
                         sheet.getName(), sheet.getSex(), TokenUtil.getTokenUserId());
@@ -592,7 +593,7 @@ public class CaseFrontSheetMainService {
         }
         sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
         sheet.setIsDoctorPrint(true);
-        List<CodeName> force = VerifyCaseFrontSheet.getInstance().printVerify(sheet, param.getOpType());
+        List<CodeName> force = printVerification(sheet, param.getOpType());
         CaseFrontsheetDisdiag disdiag = sheet.getDisdiagList().get(0);
         List<CodeName> advice = VerifyCaseFrontSheet.getInstance().adviseVerification(sheet.getSocialNo(), disdiag.getCode());
         JSONObject powersi = qualityControl(sheet);
@@ -630,7 +631,7 @@ public class CaseFrontSheetMainService {
         int optype = info.getOpType();
         sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
         List<CodeName> message = optype == 1 ? VerifyCaseFrontSheet.getInstance().saveVerify(sheet) :
-                VerifyCaseFrontSheet.getInstance().printVerify(sheet, optype);
+                printVerification(sheet, optype);
         if (message.isEmpty()) {
             final String bah = sheet.getBah();
             final int times = sheet.getAdmissTimes();
@@ -767,6 +768,29 @@ public class CaseFrontSheetMainService {
         return dao.selectStandardAddressMember2(addrs[0], addrs[1], addrs[2]);
     }
 
+    private List<CodeName> printVerification(CaseFrontsheetMain sheet, int opType) {
+        List<CodeName> messages = VerifyCaseFrontSheet.getInstance().printVerify(sheet, opType);
+        List<CaseFrontsheetSurgery> surgeries = sheet.getSurgeryList();
+        if (null != surgeries && !surgeries.isEmpty()) {
+            String patNo = sheet.getBah();
+            int times = sheet.getAdmissTimes();
+            List<HisWjwMatchEntity> surgeryChargeCode = dao.selectSurgeryChargeCode(surgeries);
+            for (HisWjwMatchEntity entity : surgeryChargeCode) {
+                if (StringUtil.notBlank(entity.getWjwCode())) {
+                    entity.setChargeCode(entity.getWjwCode().split("\\^"));
+                    entity.setChargeName(entity.getWjwName().split("\\^"));
+                    int chargeSumamt = dao.selectChargeSumamt(patNo, times, entity.getChargeCode());
+                    if (chargeSumamt < 1) {
+                        String charges = entity.getWjwName().replaceAll("\\^", ",");
+                        messages.add(new CodeName("surgeryTable", "患者有手术【" + entity.getName() +
+                                "】,但没有找到对应的收费项目【" + charges + "】。"));
+                    }
+                }
+            }
+        }
+        return messages;
+    }
+
     public ResultVo<String> frontsheetQualityCheck(CaseFrontsheetMain sheet) {
 
 //        JSONArray diagList = emrService.getEmrData(sheet.getBah(), sheet.getAdmissTimes(), EmrType.DIAGNOSIS);

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

@@ -450,7 +450,8 @@ public class VerifyCaseFrontSheet {
     }
 
     private boolean needAnstTimeButNotPresent(CaseFrontsheetSurgery surgery) {
-        if (StringUtil.isBlank(surgery.getAnaesthesia()) || surgery.getAnaesthesia().equals("23")) {
+        if (StringUtil.isBlank(surgery.getAnaesthesia()) || surgery.getAnaesthesia().equals("23")
+                || surgery.getAnaesthesia().equals("29")) {
             return false;
         }
         return StringUtil.notBlank(surgery.getAnaesthesiaor()) &&