Browse Source

杭州七院新增规则,增加量表

“wangdsYun 9 months ago
parent
commit
c404c6ed49

+ 58 - 0
dbanaly/src/main/resources/application-pre.yml

@@ -0,0 +1,58 @@
+spring:
+  datasource:
+    name: druidDataSource
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      lantone:
+        driver-class-name: com.mysql.jdbc.Driver
+        url: jdbc:mysql://173.18.12.191:3306/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        username: root
+        password: dsYun8!@#
+        initial-size: 8
+        min-idle: 1
+        max-active: 20
+        max-wait: 60000
+        time-between-eviction-runsMillis: 60000
+        min-evictable-idle-timeMillis: 300000
+        validation-query: select 'x' FROM DUAL
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        pool-prepared-statements: true
+        max-open-prepared-statements: 20
+        max-pool-prepared-statement-per-connection-size: 20
+        filters: stat
+        connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+        use-global-data-source-stat: true
+  #redis
+  redis:
+    database:
+      cache: 2 # cache索引
+      token: 2 # Token索引
+    host: 173.18.12.191  #Redis服务器地址
+    port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
+    password: # Redis服务器连接密码(默认为空)
+    lettuce:
+      pool:
+        max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
+        max-idle: 5 # 连接池中的最大空闲连接
+        max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
+        min-idle: 0 # 连接池中的最小空闲连接
+    timeout: 20000 # 连接超时时间(毫秒)
+
+xml-is-encryped: true
+
+CRF:
+  url: http://173.18.12.190:3456/api/mr_info_ex/entity_predict
+
+Similarity:
+  url: http://173.18.12.190:3456/api/mr_info_ex/similarity
+
+NewSimilarity:
+  url: http://173.18.12.190:23232/api/similarity
+
+NewBatchSimilarity:
+  url: http://173.18.12.190:23232/api/similarity_batch
+
+ChiefPresentSimilarity:
+  url: http://173.18.12.190:3456/api/mr_info_ex/chief_present_similarity

+ 78 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hangzhoudiqi/behospitalized/BEH0561.java

@@ -0,0 +1,78 @@
+package com.lantone.qc.kernel.catalogue.hangzhoudiqi.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.Content;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
+import com.lantone.qc.pub.model.doc.MedicalRecordInfoDoc;
+import com.lantone.qc.pub.model.doc.ScaleDoc;
+import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH0561
+ * @Description : 自杀、冲动、猝死三大量表未在24小时内创建(杭州七院标准版)
+ * @Author : dsYun
+ * @Date: 2024-10-17 17:48
+ */
+@Component
+public class BEH0561 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        StringBuffer sb = new StringBuffer();
+        String admisDate = "";
+        List<ScaleDoc> scaleDocs = inputInfo.getScaleDocs();
+        MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
+        if (medicalRecordInfoDoc == null) {
+            return;
+        }
+        if (medicalRecordInfoDoc.getStructureMap() == null) {
+            return;
+        }
+        //入院日期
+        admisDate = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
+
+        if (CatalogueUtil.isEmpty(admisDate)) {
+            return;
+        }
+        if (!CatalogueUtil.compareTime(
+                StringUtil.parseDateTime(admisDate),
+                StringUtil.parseDateTime(DateUtil.nowString()),
+                Long.valueOf(24 * 60))) {//如果入院还未过24小时规则不判断
+            return;
+        }
+
+        for (ScaleDoc scaleDoc : scaleDocs) {
+            //模板创建日期
+            String firstCreateDate = scaleDoc.getStructureMap().get("firstCreateDate");
+            //模板title
+            String recTitle = scaleDoc.getStructureMap().get("recTitle");
+
+            if (CatalogueUtil.isEmpty(firstCreateDate)) {
+                continue;
+            }
+
+            if (CatalogueUtil.compareTime(
+                    StringUtil.parseDateTime(admisDate),
+                    StringUtil.parseDateTime(firstCreateDate),
+                    Long.valueOf(24 * 60))) {
+                sb.append(recTitle + ":[" + firstCreateDate + "]、");
+            }
+        }
+
+        if (sb.toString().length() > 0) {
+            status.set("-1");
+            info.set(sb.toString().substring(0, sb.toString().length() - 1));
+        }
+
+    }
+}

+ 2 - 0
public/src/main/java/com/lantone/qc/pub/model/InputInfo.java

@@ -101,6 +101,8 @@ public class InputInfo {
     private VTEGradeDoc vteGradeDoc;
     //ADL评分
     private ADLGradeDoc adlGradeDoc;
+    //量表
+    private List<ScaleDoc> scaleDocs = Lists.newArrayList();
 
     //手麻信息
     private List<AnesthesiaRecordDoc> anesthesiaRecordDocs = new ArrayList<>();

+ 17 - 0
public/src/main/java/com/lantone/qc/pub/model/doc/ScaleDoc.java

@@ -0,0 +1,17 @@
+package com.lantone.qc.pub.model.doc;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @ClassName: ScaleDoc
+ * @Description: 量表
+ * @Author dsYun
+ * @Date 2021/3/9
+ * @Version 1.0
+ */
+@Getter
+@Setter
+public class ScaleDoc extends ModelDoc {
+
+}

+ 4 - 0
trans/src/main/java/com/lantone/qc/trans/hangzhoudiqi/HangzhoudiqiDocTrans.java

@@ -99,6 +99,10 @@ public class HangzhoudiqiDocTrans extends DocTrans {
                 case "住院病历信息":
                     QiYuanMedicalRecordInfoDocTrans medicalRecordInfoDocTrans = new QiYuanMedicalRecordInfoDocTrans();
                     inputInfo.setMedicalRecordInfoDoc(medicalRecordInfoDocTrans.extract(i));
+                    break;
+                case "量表":
+                    QiYuanScaleDocTrans ScaleDocDocTrans = new QiYuanScaleDocTrans();
+                    inputInfo.setScaleDocs(ScaleDocDocTrans.extract(i));
                 default:
                     break;
             }

+ 45 - 0
trans/src/main/java/com/lantone/qc/trans/hangzhoudiqi/QiYuanScaleDocTrans.java

@@ -0,0 +1,45 @@
+package com.lantone.qc.trans.hangzhoudiqi;
+
+import com.google.common.collect.Lists;
+import com.lantone.qc.dbanaly.facade.yiwu.QiYuanXmlUtil;
+import com.lantone.qc.dbanaly.util.ModuleMappingUtil;
+import com.lantone.qc.pub.model.doc.MedicalRecordInfoDoc;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.model.doc.ScaleDoc;
+import com.lantone.qc.pub.model.vo.MedrecVo;
+import com.lantone.qc.pub.util.FastJsonUtils;
+import com.lantone.qc.trans.ModelDocTrans;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.comsis.OrdinaryAssistant;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 量表
+ * @author: dsYun
+ * @time: 2020/6/3 15:45
+ */
+public class QiYuanScaleDocTrans extends ModelDocTrans {
+    @Override
+    public List<ScaleDoc> extract(MedrecVo medrecVo) {
+        List<ScaleDoc> retList = Lists.newArrayList();
+        List<Map<String, Object>> contentMaps = (List) medrecVo.getContent().get("content");
+        contentMaps.forEach(contentMap -> {
+            retList.add(getScaleDoc(contentMap));
+        });
+        return retList;
+    }
+
+    private ScaleDoc getScaleDoc(Map<String, Object> contentMap) {
+        Map<String, String> structureMap = new HashMap<>();
+        structureMap.put("firstCreateDate", contentMap.get("firstCreateDate").toString());
+        structureMap.put("recDate", contentMap.get("recDate").toString());
+        structureMap.put("recTitle",contentMap.get("recTitle").toString());
+        ScaleDoc scaleDoc = new ScaleDoc();
+        scaleDoc.setStructureMap(structureMap);
+        return scaleDoc;
+    }
+
+}