Browse Source

1、修改规则条目BUG

louhr 5 years ago
parent
commit
39addee238

+ 1 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java

@@ -26,14 +26,13 @@ public class BEH0011 extends QCCatalogue {
     @Autowired
     private RedisUtil redisUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-
+        Map<String, Map<String, Object>> diagMap = redisUtil.getJsonStringValue(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP);
         String initDiagText = CatalogueUtil.removeSpecialChar(inputInfo.getBeHospitalizedDoc().getInitialDiagLabel().getText());
         List<Diag> diags = inputInfo.getBeHospitalizedDoc().getPastLabel().getDiags();
         if(StringUtils.isNotEmpty(initDiagText)){
             List<String> initDiags = Arrays.asList(initDiagText.split(","));
             if(diags.size()>0){
                 for (Diag diag:diags) {
-                    Map<String, Map<String, Object>> diagMap = redisUtil.getJsonStringValue(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP);
                     Map<String, Object> map = (Map<String, Object>) diagMap.get(diag.getName());
                     if(map != null || map.size() >0){
                         String chronic = (String) map.get("chronic");//1是慢病

+ 6 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0014.java

@@ -27,7 +27,12 @@ public class BEH0014 extends QCCatalogue {
             String clinicalName = clinical.getName();
             Cause cause = clinical.getCause();
             if(cause == null){
-                info.set(clinicalName);
+                int causeIndex = inputInfo.getBeHospitalizedDoc().getPresentLabel().getText().indexOf("因");
+                if (causeIndex < 15) {
+                    status.set("0");
+                } else {
+                    info.set(clinicalName);
+                }
             }else {
                 status.set("0");
             }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0441.java

@@ -22,7 +22,7 @@ public class BEH0441 extends QCCatalogue {
         List<GeneralDesc> generals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGenerals();
         if(generals.size() > 0 || generals != null){
             for (GeneralDesc general:generals) {
-                if(general.getName().contains("纳")){
+                if(general.getName().contains("纳")){
                     status.set("0");
                     break;
                 }

+ 19 - 0
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/AIAnalyze.java

@@ -25,11 +25,30 @@ public class AIAnalyze {
     }
 
     public void aiProcess(InputInfo inputInfo) {
+        long start = System.currentTimeMillis();
         beHospitalizedAI.medrec(inputInfo, crfServiceClient);
+        long end = System.currentTimeMillis();
+        System.out.println("入院记录 AI处理....." + (end - start));
+        start = System.currentTimeMillis();
+
         firstCourseRecordAI.medrec(inputInfo, crfServiceClient, similarityServiceClient);
+        end = System.currentTimeMillis();
+        System.out.println("首次病程录 AI处理....." + (end - start));
+        start = System.currentTimeMillis();
+
         leaveHospitalAI.medrec(inputInfo, crfServiceClient);
+        end = System.currentTimeMillis();
+        System.out.println("出院小结 AI处理....." + (end - start));
+        start = System.currentTimeMillis();
+
         threeLevelWardAI.medrec(inputInfo, crfServiceClient);
+        end = System.currentTimeMillis();
+        System.out.println("三级查房 AI处理....." + (end - start));
+        start = System.currentTimeMillis();
+
         operationAI.medrec(inputInfo, crfServiceClient);
+        end = System.currentTimeMillis();
+        System.out.println("手术 AI处理....." + (end - start));
     }
 
 

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/model/EntityEnum.java

@@ -15,7 +15,7 @@ public enum EntityEnum {
     OPERATION_KEYWORD("手术史"), OPERATION_RESULT("手术结果"), INJURY("外伤史"), ALLERGY("过敏"),
     FOOD_ALLERGY("食物过敏原"), DRUG_ALLERGY("药物过敏原"), ALLERGY_SYMPTOM("过敏表现"), BLOOD_TRANSFUSION("输血史"),
     TRANSFUSION_REACTION("输血反应"), VACCINATION("预防接种史"), DISEASE_KEYWORD("疾病史"), INFECTIOUS_KEYWORD("传染病史"),
-    UNKNOWN("情况不详"), HEALTH("健康况"), AGE("年龄"), SMOKING_HISTORY("吸烟史"),
+    UNKNOWN("情况不详"), HEALTH("健康况"), AGE("年龄"), SMOKING_HISTORY("吸烟史"),
     HISTORY_OF_ALCOHOL_INTAKE("饮酒史"), USAGE("用量"), MENSES("月经"), LEUKORRHEA("白带"),
     BIRTH_HIS("生育情况"), CONJUGAL_RELATION("夫妻关系"), RELATIVES("家属"), GROUP_CONSULTATION("会诊"), ORGANISM("生物体"),
     OCCUPATION("职业"), LOCATION("地点"), DEAD("死亡"), DEAD_REASON("死亡原因"),

+ 3 - 2
kernel/src/main/java/com/lantone/qc/kernel/web/controller/QCTestController.java

@@ -69,8 +69,9 @@ public class QCTestController {
         for (Map.Entry<String, QueryVo> entry : queryVoMap.entrySet()) {
             System.out.println("患者就诊号:" + entry.getKey() + "..........");
 //            modelDataUtil.executor(entry.getKey(), entry.getValue());//AI所需模块数据存入DB
+            long start = System.currentTimeMillis();
             OutputInfo outputInfo = qCAnalysis.anlysis(entry.getValue());
-
+            System.out.println("耗时......." + (System.currentTimeMillis() - start));
             Map<String, String> passMap = inputCaseMappingMap.get(entry.getKey());
             if (passMap != null) {
                 for (Map.Entry<String, String> e : passMap.entrySet()) {
@@ -150,7 +151,7 @@ public class QCTestController {
                 modeIds.add(r1);
             }
 
-            sql = "select code, name, precond from qc_cases_entry q1, qc_cases_entry_hospital q2 where q1.id = q2.cases_entry_id ";   //查询所有条目
+            sql = "select code, name, precond from qc_cases_entry q1, qc_cases_entry_hospital q2 where q1.id = q2.cases_entry_id and q2.is_used = 1 ";   //查询所有条目
             if (StringUtils.isNotEmpty(hospitalId)) {
                 sql = sql + " and q2.hospital_id = " + hospitalId;
             }

+ 49 - 49
kernel/src/test/java/com/lantone/qc/kernel/TaizDataImportApiTest.java

@@ -27,8 +27,8 @@ import java.util.zip.GZIPInputStream;
  * @Date: 2020-03-31 19:34
  */
 public class TaizDataImportApiTest {
-    private static String hospitalId = "1";
-    private static String cid = "changx";
+    private static String hospitalId = "3";
+    private static String cid = "taizhou";
 
     private Map<String,String> caseMap = new HashMap<>();
     private List<String> deletePatient = new ArrayList<>();
@@ -62,7 +62,7 @@ public class TaizDataImportApiTest {
         test.loadModelHospital();
         //患者信息
         test.insertPatient(test.loadOraclePatients(tableMap.get("BR_INPATIENTINFO")));
-        test.insertDoctor(test.loadOracleDoctorInfos(tableMap.get("GI_USERINFO"), tableMap.get("HI_DEPTINFO")));
+//        test.insertDoctor(test.loadOracleDoctorInfos(tableMap.get("GI_USERINFO"), tableMap.get("HI_DEPTINFO")));
 
         //病人流水号获取    病历号--->id
         Map<String, String> patientMap = test.loadPatients(hospitalId);
@@ -79,7 +79,7 @@ public class TaizDataImportApiTest {
             patientMap.put("hospital_id", hospitalId);
             list.add(patientMap);
         }
-        initMysqlJdbc().insert(list, "qc_cases_number_copy", new String[]{"hospital_id", "case_number"});
+        initMysqlJdbc().insert(list, "qc_cases_number", new String[]{"hospital_id", "case_number"});
     }
 
     private void insertDoctor(List<Doctor> doctors) {
@@ -101,59 +101,59 @@ public class TaizDataImportApiTest {
         for (Map.Entry<String, String> entry : patientMap.entrySet()) {
             List<PatientText> patientTexts = new ArrayList<>();
             //病人的病案首页内容
-            List<Map<String, Object>> homePageList = DataTest.loadHomePage(tableMap.get("BR_RECHOME"), entry.getKey());
-            if (homePageList == null || homePageList.isEmpty()) { //没病案首页直接不导入
-                deletePatient.add(entry.getKey()); //没病案首页的患者也要删除
-                continue;
-            }
-            Map<String, Object> homePageMap = homePageList.get(0);
-            homePageMap.put("门急诊诊断", FastJsonUtils.getBeanToJson(DataTest.loadHomePageDiagnose(tableMap.get("BR_RECDIAGNOSE"), "1", entry.getKey())).replaceAll("\"", "'"));
-            homePageMap.put("出院诊断", FastJsonUtils.getBeanToJson(DataTest.loadHomePageDiagnose(tableMap.get("BR_RECDIAGNOSE"),"2", entry.getKey())).replaceAll("\"", "'"));
-            homePageMap.put("损伤、中毒外部原因", FastJsonUtils.getBeanToJson(DataTest.loadHomePageDiagnose(tableMap.get("BR_RECDIAGNOSE"),"3", entry.getKey())).replaceAll("\"", "'"));
-            homePageMap.put("病理诊断", FastJsonUtils.getBeanToJson(DataTest.loadHomePageDiagnose(tableMap.get("BR_RECDIAGNOSE"), "4", entry.getKey())).replaceAll("\"", "'"));
-            homePageMap.put("手术信息", FastJsonUtils.getBeanToJson(DataTest.loadHomePageOperation(tableMap.get("BR_RECOPERATION"), tableMap.get("GI_USERINFO"), entry.getKey())).replaceAll("\"", "'"));
-
-            Map<String, Object> firstPageTextMap = new HashMap<>();
-            firstPageTextMap.put("case_number", entry.getKey());
-            firstPageTextMap.put("case_number_id", patientMap.get(entry.getKey()));
-            firstPageTextMap.put("hospital_id", hospitalId);
-            firstPageTextMap.put("mode_id", 6);
-            firstPageTextMap.put("origin_mode", "病案首页");
-            firstPageTextMap.put("origin_text", FastJsonUtils.getBeanToJson(homePageMap));
-            String pagetext = "";
-            for (Map.Entry<String, Object> e : homePageMap.entrySet()) {
-                pagetext = pagetext + "【" + e.getKey() + "】:" + e.getValue().toString() + "\n";
-            }
-            firstPageTextMap.put("text", pagetext);
+//            List<Map<String, Object>> homePageList = DataTest.loadHomePage(tableMap.get("BR_RECHOME"), entry.getKey());
+//            if (homePageList == null || homePageList.isEmpty()) { //没病案首页直接不导入
+//                deletePatient.add(entry.getKey()); //没病案首页的患者也要删除
+//                continue;
+//            }
+//            Map<String, Object> homePageMap = homePageList.get(0);
+//            homePageMap.put("门急诊诊断", FastJsonUtils.getBeanToJson(DataTest.loadHomePageDiagnose(tableMap.get("BR_RECDIAGNOSE"), "1", entry.getKey())).replaceAll("\"", "'"));
+//            homePageMap.put("出院诊断", FastJsonUtils.getBeanToJson(DataTest.loadHomePageDiagnose(tableMap.get("BR_RECDIAGNOSE"),"2", entry.getKey())).replaceAll("\"", "'"));
+//            homePageMap.put("损伤、中毒外部原因", FastJsonUtils.getBeanToJson(DataTest.loadHomePageDiagnose(tableMap.get("BR_RECDIAGNOSE"),"3", entry.getKey())).replaceAll("\"", "'"));
+//            homePageMap.put("病理诊断", FastJsonUtils.getBeanToJson(DataTest.loadHomePageDiagnose(tableMap.get("BR_RECDIAGNOSE"), "4", entry.getKey())).replaceAll("\"", "'"));
+//            homePageMap.put("手术信息", FastJsonUtils.getBeanToJson(DataTest.loadHomePageOperation(tableMap.get("BR_RECOPERATION"), tableMap.get("GI_USERINFO"), entry.getKey())).replaceAll("\"", "'"));
+//
+//            Map<String, Object> firstPageTextMap = new HashMap<>();
+//            firstPageTextMap.put("case_number", entry.getKey());
+//            firstPageTextMap.put("case_number_id", patientMap.get(entry.getKey()));
+//            firstPageTextMap.put("hospital_id", hospitalId);
+//            firstPageTextMap.put("mode_id", 6);
+//            firstPageTextMap.put("origin_mode", "病案首页");
+//            firstPageTextMap.put("origin_text", FastJsonUtils.getBeanToJson(homePageMap));
+//            String pagetext = "";
+//            for (Map.Entry<String, Object> e : homePageMap.entrySet()) {
+//                pagetext = pagetext + "【" + e.getKey() + "】:" + e.getValue().toString() + "\n";
+//            }
+//            firstPageTextMap.put("text", pagetext);
             if ("changx".equals(cid)) {
                 patientTexts = loadChangxOraclePatientTexts(entry.getKey());
             }
             if ("taizhou".equals(cid)) {
                 patientTexts = loadTaizhouOraclePatientTexts(entry.getKey());
             }
-            if (!wholePatientRecord(patientTexts, modelMap) || patientTexts.size() == 0) {
+            if (patientTexts.size() == 0 || !wholePatientRecord(patientTexts, modelMap)) {
                 continue;
             }
             //数据完整后才放入病案首页
-            list.add(firstPageTextMap);
+//            list.add(firstPageTextMap);
 
             //病人医嘱信息
-            List<Map<String, Object>> docAdviceMap = DataTest.loadHomePage(tableMap.get("BR_DOCTADVICE"), entry.getKey());
-            for (Map<String, Object> docMap : docAdviceMap) {
-                Map<String, Object> docAdviceTextMap = new HashMap<>();
-                docAdviceTextMap.put("case_number", entry.getKey());
-                docAdviceTextMap.put("case_number_id", patientMap.get(entry.getKey()));
-                docAdviceTextMap.put("hospital_id", hospitalId);
-                docAdviceTextMap.put("mode_id", 8);
-                docAdviceTextMap.put("origin_mode", "医嘱信息");
-                docAdviceTextMap.put("origin_text", FastJsonUtils.getBeanToJson(docMap));
-                pagetext = "";
-                for (Map.Entry<String, Object> e : docMap.entrySet()) {
-                    pagetext = pagetext + "【" + e.getKey() + "】:" + e.getValue().toString() + "\n";
-                }
-                docAdviceTextMap.put("text", pagetext);
-                list.add(docAdviceTextMap);
-            }
+//            List<Map<String, Object>> docAdviceMap = DataTest.loadHomePage(tableMap.get("BR_DOCTADVICE"), entry.getKey());
+//            for (Map<String, Object> docMap : docAdviceMap) {
+//                Map<String, Object> docAdviceTextMap = new HashMap<>();
+//                docAdviceTextMap.put("case_number", entry.getKey());
+//                docAdviceTextMap.put("case_number_id", patientMap.get(entry.getKey()));
+//                docAdviceTextMap.put("hospital_id", hospitalId);
+//                docAdviceTextMap.put("mode_id", 8);
+//                docAdviceTextMap.put("origin_mode", "医嘱信息");
+//                docAdviceTextMap.put("origin_text", FastJsonUtils.getBeanToJson(docMap));
+//                pagetext = "";
+//                for (Map.Entry<String, Object> e : docMap.entrySet()) {
+//                    pagetext = pagetext + "【" + e.getKey() + "】:" + e.getValue().toString() + "\n";
+//                }
+//                docAdviceTextMap.put("text", pagetext);
+//                list.add(docAdviceTextMap);
+//            }
             //病人其他文书信息
             for (PatientText patientText : patientTexts) {
                 Map<String, Object> patientTextMap = new HashMap<>();
@@ -182,7 +182,7 @@ public class TaizDataImportApiTest {
                 list.add(patientTextMap);
             }
         }
-        initMysqlJdbc().insert(list, "qc_model_mapping_copy", new String[]{"case_number", "case_number_id", "origin_text", "mode_id", "text", "origin_mode"});
+        initMysqlJdbc().insert(list, "qc_model_mapping", new String[]{"case_number", "case_number_id", "origin_text", "mode_id", "text", "origin_mode"});
 
         deletePatientInfos(deletePatient);
     }
@@ -279,8 +279,8 @@ public class TaizDataImportApiTest {
         List<PatientText> patientTexts = new ArrayList<>();
         try {
             st = conn.createStatement();
-            String sql = "select brzyid,bljlmc,bljlnr from mr_medicalrecords_TZ20200330 a " +
-                    "left join mr_mrcontent_TZ20200330 b on a.bljlid=b.bljlid " +
+            String sql = "select brzyid,bljlmc,bljlnr from mr_medicalrecords_TZ a " +
+                    "left join mr_mrcontent_TZ b on a.bljlid=b.bljlid " +
                     "where bljlnr is not null and brzyid = '" + brzyid + "' " +
                     "order by brzyid";
             rs = st.executeQuery(sql);