Browse Source

病案首页自动填充部分内容

lighter 2 years ago
parent
commit
c3432a39ba

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

@@ -9,6 +9,7 @@ import thyyxxk.webserver.entity.dictionary.HisWjwMatchEntity;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author dj
@@ -683,4 +684,25 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
 
     @Select("select top 1 isnull(op_type,9) from zd_icd9_cm3 where code=#{code}")
     Integer selectOperationType(@Param("code") String code);
+
+    // 病历分型
+    @Select("select data_element from emr_data_element where pat_no=#{patNo} and times=#{times}")
+    String selectBlfxElement(String patNo, int times);
+
+    // 细菌培养次数
+    @Select("select count(1) from ysh_yj_req where inpatient_no=#{patNo} and admiss_times=#{times} " +
+            "and req_type=2 and order_type='011'")
+    int selectBacillicultureCount(String patNo, int times);
+
+    // 法定传染病
+    @Select("SELECT rtrim(contagion) as a,rtrim(contagion2) as b,rtrim(contagion3) as c " +
+            "FROM crb_main_card where patient_id=#{patNo} and times=#{times}")
+    Map<String, String> selectStatutoryEpidemic(String patNo, int times);
+
+    // 抗生素使用次数
+    @Select("select count(1) from zy_detail_charge a left join yp_zd_dict b on (code=charge_code_mx " +
+            "and b.serial='01') where a.serial!='00' and ori_detail_sn is null and trans_flag_yb!='2' " +
+            "and kss_flag='1' and inpatient_no=#{patNo} and admiss_times=#{times}")
+    int selectAntibiotics(String patNo, int times);
+
 }

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

@@ -730,12 +730,12 @@ public class CaseFrontsheetMain implements Serializable {
     private String drgsManagement;
 
     /**
-     * 抗生素使用
+     * 抗生素使用(1是 2否)
      */
     private String useAntibiotic;
 
     /**
-     * 细菌培养标本送检
+     * 细菌培养标本送检(1是 2否)
      */
     private String bacilliculture;
 

+ 38 - 0
src/main/java/thyyxxk/webserver/service/casefrontsheet/CaseFrontSheetMainService.java

@@ -237,6 +237,7 @@ public class CaseFrontSheetMainService {
                 Integer days = DateUtil.daysBetween(sheet.getDismissDate(), sheet.getAdmissDate());
                 sheet.setAdmissDays(0 == days ? "1" : String.valueOf(days));
             }
+            autoFillPart(sheet);
             return ResultVoUtil.success(sheet);
         }
         int flag = overview.getInOutFlag();
@@ -306,9 +307,46 @@ public class CaseFrontSheetMainService {
             sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
             sheet.setLivePlaceCombo(standardAddressMember.makeAddressCombo() + sheet.getLivePlace());
         }
+        autoFillPart(sheet);
         return ResultVoUtil.success(sheet);
     }
 
+    private void autoFillPart(CaseFrontsheetMain sheet) {
+        String patNo = sheet.getBah();
+        int times = sheet.getAdmissTimes();
+        if (StringUtil.isBlank(sheet.getCaseClassification())) {
+            String blfxElement = dao.selectBlfxElement(patNo, times);
+            if (StringUtil.notBlank(blfxElement)) {
+                JSONObject blfxObj = JSONObject.parseObject(blfxElement);
+                JSONArray blfxArray = blfxObj.getJSONArray("病例分型");
+                if (null != blfxArray && blfxArray.size() > 0) {
+                    JSONObject blfxItem = blfxArray.getJSONObject(0);
+                    sheet.setCaseClassification(blfxItem.getString("code"));
+                }
+            }
+        }
+        if (StringUtil.isBlank(sheet.getBacilliculture())) {
+            int bacillicultureCount = dao.selectBacillicultureCount(patNo, times);
+            sheet.setBacilliculture(bacillicultureCount > 0 ? "1" : "2");
+        }
+        if (StringUtil.isBlank(sheet.getStatutoryEpidemic())) {
+            Map<String, String> epidemic = dao.selectStatutoryEpidemic(patNo, times);
+            if (null != epidemic) {
+                if (StringUtil.notBlank(epidemic.get("a"))) {
+                    sheet.setStatutoryEpidemic("1");
+                } else if (StringUtil.notBlank(epidemic.get("b"))) {
+                    sheet.setStatutoryEpidemic("2");
+                } else if (StringUtil.notBlank(epidemic.get("c"))) {
+                    sheet.setStatutoryEpidemic("3");
+                }
+            }
+        }
+        if (StringUtil.isBlank(sheet.getUseAntibiotic())) {
+            int antibioticCounts = dao.selectAntibiotics(patNo, times);
+            sheet.setUseAntibiotic(antibioticCounts > 0 ? "1" : "2");
+        }
+    }
+
     private StandardAddressMember getStandardAddressMember(String bah) {
         StandardAddressMember member = dao.selectStandardAddressMember(bah);
         if (null != member) {