Browse Source

高危逻辑初步迁移

kongwz 6 years ago
parent
commit
cc9b2b3207

+ 2 - 2
graph/src/main/java/org/diagbot/graph/Diagnose/DiagnoseMain.java

@@ -17,8 +17,8 @@ public class DiagnoseMain {
 //        Map<String, String> diagnose = new DiagnoseProcess().getDiagnose(
 //                  "耳鸣","视力下降","EB病毒早期抗原(EA-IgA)升高","咽部充血","暴饮暴食","右上腹痛","胸痛", "放射", "左肩", "胸闷", "第二心音","逆分裂","高血压");
         Map<String, String> diagnose = new DiagnoseProcess().getDiagnose(
-                "恶心","二便正常","右上腹痛","右上腹","上腹隐痛","放射","背部","畏寒","呕吐","腹痛","绞痛","Murphy征阳性","阵发性","发热","肌紧张","暴饮暴食"
-        ,"反跳痛","突发");
+                "恶心","二便正常","右上腹","放射","背部","畏寒","呕吐","腹痛","绞痛","Murphy征阳性","阵发性","发热","肌紧张","上腹痛","暴饮暴食"
+        ,"反跳痛","右上腹压痛 ","突发");
         for (Map.Entry<String,String> disease:diagnose.entrySet()) {
             System.out.println(disease.getKey()+"\t"+disease.getValue());
         }

+ 159 - 0
graphdb/src/main/java/org/diagbot/pub/Constants.java

@@ -0,0 +1,159 @@
+/**   
+* @Company: 杭州朗通信息技术有限公司 
+* @Department: 系统软件部 
+* @Description: 朗通智能辅助诊疗系统 
+* @Address: 浙江省杭州市西湖区西斗门路3号 天堂软件园D-7B 
+*/
+package org.diagbot.pub;
+
+/**
+* @Title: Constants.java 
+* @Package org.diagbot.public 
+* @Description: 通用常数接口定义  
+* @author 楼辉荣(Fyeman)   
+* @date 2015年4月23日 下午11:25:37 
+* @version V1.0
+ */
+public interface Constants {
+    /**
+     * 操作名称
+     */
+    String OP_NAME = "op";
+    /**
+     * 消息key
+     */
+    String MESSAGE = "message";
+    /**
+     * 错误key
+     */
+    String ERROR = "error";
+    /**
+     * 上个页面地址
+     */
+    String BACK_URL = "BackURL";
+    String IGNORE_BACK_URL = "ignoreBackURL";
+    /**
+     * 当前请求的地址 带参数
+     */
+    String CURRENT_URL = "currentURL";
+    /**
+     * 当前请求的地址 不带参数
+     */
+    String NO_QUERYSTRING_CURRENT_URL = "noQueryStringCurrentURL";
+    /**
+     * 上下文
+     */
+    String CONTEXT_PATH = "ctx";
+    /**
+     * 当前登录的用户
+     */
+    String CURRENT_APPLICATION = "c_app";
+    String CURRENT_USER = "c_user";
+    String CURRENT_USERNAME = "username";
+    String USER_MENUS = "menus";
+    
+    /**
+     * 管理控制台应用ID=0
+     */
+    long ADMIN_APPLICATION = 0;
+    /**
+     * 一级菜单grade标识
+     */
+    int FIRST_MENU = 1;
+    /**
+     * 二级菜单grade标识
+     */
+    int SECOND_MENU = 2;
+    /**
+     * 操作按钮等级标识
+     */
+    int MENU_GRADE = 3;
+    /**
+     * 最高级资源grade标识
+     */
+    int TOP_REC = 0;
+    /**
+     * 编码方式
+     */
+    String ENCODING = "UTF-8";
+    /**
+     * 系统用户状态--启用
+     */
+    int USER_STATUS_UNLOCK = 1;
+    /**
+     * 系统用户状态--禁用
+     */
+    int USER_STATUS_LOCK = 0;
+    /**
+     * 通用值0
+     */
+    int COMMON_INT_0 = 0;
+    /**
+     * 通用值1
+     */
+    int COMMON_INT_1 = 1;
+    /**
+     * 通用值-1
+     */
+    int COMMON_INT_NEG_1 = -1;
+    /**
+     * 通用值0
+     */
+    long COMMON_LONG_0 = 0L;
+    /**
+     * 通用值1
+     */
+    long COMMON_LONG_1 = 1L;
+    /**
+     * 通用值-1
+     */
+    long COMMON_LONG_NEG_1 = -1L;
+    /**
+     * 通用值"0"
+     */
+    String COMMON_STRING_0 = "0";
+    /**
+     * 通用值"1"
+     */
+    String COMMON_STRING_1 = "1";
+    /**
+     * 通用值"-1"
+     */
+    String COMMON_STRING_NEG_1 = "-1";
+    
+    /**
+     * 通用值"-1"
+     */
+    String COMMON_STRING_99 = "99";
+    /**
+     * 登录页面
+     */
+    String LOGIN_URL = "/login";
+    /**
+     * 上传文件夹
+     */
+    String UPLOAD_FOLDER_NAME = "upload";
+    /**
+     * 临时文件夹
+     */
+    String TEMP_FOLDER_NAME = "temp";
+    /**
+     * 地域标示
+     */
+    public static final String DEFAULT_LOCALE = "zh_CN";
+    /**
+     * 缺省字符集
+     */
+    public static final String DEFAULT_ENCODE = "UTF-8";
+    /**
+     * 以下为接口返回公共属性定义常量
+     */
+    public static final String MSG_SUCCESS = "操作成功";	//操作成功
+    public static final String MSG_FALURE = "操作失败";	//操作失败
+    
+    public static final long INVALIDATE_VALUE = -1;		//起止时间定义
+    public static final int RET_SUCCESS = 0; 			//成功
+	public static final int RET_FAIL = 1; 				//失败
+	public static final int RET_ERROR_PARAM = -1; 		//参数校验失败
+	public static final int RET_NO_TOKEN = -2; 	//用户token丢失
+}

+ 131 - 0
graphdb/src/main/java/org/diagbot/pub/Status.java

@@ -0,0 +1,131 @@
+package org.diagbot.pub;
+
+public enum Status {
+	/**
+	 * <code>PENDING = 1;</code>
+	 *
+	 * <pre>
+	 * 操作尚未开始
+	 * </pre>
+	 */
+	PENDING(1),
+	/**
+	 * <code>RUNNING = 2;</code>
+	 *
+	 * <pre>
+	 * 操作开始
+	 * </pre>
+	 */
+	RUNNING(2),
+	/**
+	 * <code>OK = 3;</code>
+	 *
+	 * <pre>
+	 * 操作正常结束
+	 * </pre>
+	 */
+	OK(3),
+	/**
+	 * <code>WARN = 4;</code>
+	 *
+	 * <pre>
+	 * 有警告,但是正常结束
+	 * </pre>
+	 */
+	WARN(4),
+	/**
+	 * <code>ERROR = 5;</code>
+	 *
+	 * <pre>
+	 * 有错误,但是完整结束
+	 * </pre>
+	 */
+	ERROR(5),
+	/**
+	 * <code>FAIL = 6;</code>
+	 *
+	 * <pre>
+	 * 操作失败
+	 * </pre>
+	 */
+	FAIL(6), ;
+
+	/**
+	 * <code>PENDING = 1;</code>
+	 *
+	 * <pre>
+	 * 操作尚未开始
+	 * </pre>
+	 */
+	public static final int PENDING_VALUE = 1;
+	/**
+	 * <code>RUNNING = 2;</code>
+	 *
+	 * <pre>
+	 * 操作开始
+	 * </pre>
+	 */
+	public static final int RUNNING_VALUE = 2;
+	/**
+	 * <code>OK = 3;</code>
+	 *
+	 * <pre>
+	 * 操作正常结束
+	 * </pre>
+	 */
+	public static final int OK_VALUE = 3;
+	/**
+	 * <code>WARN = 4;</code>
+	 *
+	 * <pre>
+	 * 有警告,但是正常结束
+	 * </pre>
+	 */
+	public static final int WARN_VALUE = 4;
+	/**
+	 * <code>ERROR = 5;</code>
+	 *
+	 * <pre>
+	 * 有错误,但是完整结束
+	 * </pre>
+	 */
+	public static final int ERROR_VALUE = 5;
+	/**
+	 * <code>FAIL = 6;</code>
+	 *
+	 * <pre>
+	 * 操作失败
+	 * </pre>
+	 */
+	public static final int FAIL_VALUE = 6;
+
+	public final int getNumber() {
+		return value;
+	}
+
+	public static Status valueOf(int value) {
+		switch (value) {
+		case 1:
+			return PENDING;
+		case 2:
+			return RUNNING;
+		case 3:
+			return OK;
+		case 4:
+			return WARN;
+		case 5:
+			return ERROR;
+		case 6:
+			return FAIL;
+		default:
+			return null;
+		}
+	}
+
+	private final int value;
+
+	private Status(int value) {
+		this.value = value;
+	}
+
+}

+ 3 - 0
graphdb/src/main/java/org/diagbot/repository/BaseNodeRepository.java

@@ -18,4 +18,7 @@ public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
     List<Map<String, Object>> getAllNode();
 
 //    Stream<BaseNode> findAllBy();
+    //get high risk
+    @Query("match(d:Disease) where d.name in {0} return d.name as name, d.high_risk as risk")
+    Map<String,String> getHighRisk(List diagList);
 }

+ 4 - 4
graphdb/src/main/java/org/diagbot/service/KnowledgeService.java

@@ -2,10 +2,7 @@ package org.diagbot.service;
 
 import org.diagbot.entity.node.LIS;
 import org.diagbot.entity.node.Symptom;
-import org.diagbot.vo.AmendRelationVo;
-import org.diagbot.vo.PageVo;
-import org.diagbot.vo.QueryVo;
-import org.diagbot.vo.RelationVo;
+import org.diagbot.vo.*;
 import org.diagbot.entity.node.Disease;
 import org.diagbot.entity.node.base.BaseNode;
 
@@ -41,6 +38,9 @@ public interface KnowledgeService {
     // 获取高危疾病列表
     List<Map<String, Object>> findHighRiskDisease(QueryVo queryVo);
 
+    // 获取高危疾病列表
+    Map<String, String> getHighRiskDisease(SearchData searchData);
+
     // 获取推荐项目
     List<Map<String, Object>> getRecommendItem(QueryVo queryVo);
 

+ 12 - 4
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -5,10 +5,7 @@ import org.diagbot.entity.node.LIS;
 import org.diagbot.entity.node.Symptom;
 import org.diagbot.mapper.KnowledgeMapper;
 import org.diagbot.service.KnowledgeService;
-import org.diagbot.vo.AmendRelationVo;
-import org.diagbot.vo.PageVo;
-import org.diagbot.vo.QueryVo;
-import org.diagbot.vo.RelationVo;
+import org.diagbot.vo.*;
 import org.diagbot.entity.node.Disease;
 import org.diagbot.entity.node.base.BaseNode;
 import org.apache.commons.collections4.IteratorUtils;
@@ -182,6 +179,17 @@ public class KnowledgeServiceImpl implements KnowledgeService {
         return hrlist;
     }
 
+    @Override
+    public Map<String, String> getHighRiskDisease(SearchData searchData) {
+        String diag = searchData.getDiag();
+        String[] diseaseArray = diag.split(",|,|、");
+        List<String> diseaseList = new ArrayList<>();
+        for (String di : diseaseArray) {
+            diseaseList.add("'" + di + "'");
+        }
+        return baseNodeRepository.getHighRisk(diseaseList);
+    }
+
     @Override
     public List<Map<String, Object>> getRecommendItem(QueryVo queryVo) {
         List<Map<String, Object>> llist = relationRepository.getRecommendItem(queryVo.getDiseaselist());

+ 13 - 0
graphdb/src/main/java/org/diagbot/vo/FeatureRate.java

@@ -0,0 +1,13 @@
+package org.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class FeatureRate {
+    private String featureName;
+    private String extraProperty;
+    private String desc;
+    private String rate;
+}

+ 11 - 0
graphdb/src/main/java/org/diagbot/vo/GdbResponse.java

@@ -0,0 +1,11 @@
+package org.diagbot.vo;
+import lombok.Getter;
+import lombok.Setter;
+import java.util.HashMap;
+import java.util.Map;
+@Getter
+@Setter
+public class GdbResponse {
+    private Map<String, String> Result = new HashMap<>();
+    private String status = "unknown";
+}

+ 17 - 0
graphdb/src/main/java/org/diagbot/vo/LisDetail.java

@@ -0,0 +1,17 @@
+package org.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class LisDetail {
+    private String detailName;
+    private String uniqueName;
+    private Double maxValue;
+    private Double minValue;
+    private String name;
+    private String otherValue;
+    private String units;
+    private Double value;
+}

+ 24 - 0
graphdb/src/main/java/org/diagbot/vo/Response.java

@@ -0,0 +1,24 @@
+package org.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.diagbot.pub.Constants;
+import org.diagbot.pub.Status;
+
+@Getter
+@Setter
+public class Response<T> implements java.io.Serializable  {
+    private static final long serialVersionUID = 8206448610408409499L;
+    private Status status =  Status.PENDING;  //状态
+    private long startTime = Constants.INVALIDATE_VALUE;                                  //起始时间
+    private long endTime = Constants.INVALIDATE_VALUE;                                    //结束时间
+    private String version="1.0";
+    private String msg = Constants.MSG_SUCCESS;                                  //消息
+    private T data = null;                                                                //序列化后的结果数据
+    // 返回结果标志,默认成功0,失败 1 参数错误 -1 token丢失-2
+    private int ret = Constants.RET_SUCCESS;
+
+    private String token;
+    //耗时
+    private long timeConsum;
+}

+ 51 - 0
graphdb/src/main/java/org/diagbot/vo/SearchData.java

@@ -0,0 +1,51 @@
+package org.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Getter
+@Setter
+public class SearchData {
+    protected int length = 10;
+    protected int age_start = 0;
+    protected int age_end = 200;
+    protected int age = 0;
+    protected String sex;
+    // 搜索结果的贝叶斯阈值
+    protected String threshold = "0";
+    //特征类别
+    protected String featureType;
+    //诊断类别
+    protected String diseaseType; //0:复诊,1:急诊
+    //特征类别对","进行分割后数据
+    protected String[] featureTypes;
+    //门诊 住院分类
+    protected String resourceType;
+    //外部系统编码 用于返回映射数据,如果sysCode为空或null,则返回kl_standard_info标准名称
+    protected String sysCode;
+    private List<LisDetail> lisArr = new ArrayList<>();
+    protected String symptom = "";
+    protected String vital = "";
+    protected String lis = "";
+    protected String pacs = "";
+    protected String diag = "";
+    protected String past = "";
+    protected String other = "";
+    //大数据推送诊断结果信息
+    protected List<FeatureRate> pushDiags = new ArrayList<>();
+
+    //量表
+    protected String scaleName = "";
+
+    //模型
+    protected String algorithmClassifyValue;
+    //推送条件
+    private Map<String, Map<String, String>> inputs = new HashMap<>(10, 0.8f);
+    //阴性 页面录入数据需要对结果过滤的集合
+    private Map<String, Map<String, String>> filters = new HashMap<>(10, 0.8f);
+}

+ 9 - 4
graphdb/src/main/java/org/diagbot/web/KnowledgeController.java

@@ -1,14 +1,11 @@
 package org.diagbot.web;
 
-import org.diagbot.vo.AmendRelationVo;
+import org.diagbot.vo.*;
 import org.diagbot.entity.node.LIS;
 import org.diagbot.entity.node.Disease;
 import org.diagbot.entity.node.Symptom;
 import org.diagbot.entity.node.base.BaseNode;
 import org.diagbot.service.KnowledgeService;
-import org.diagbot.vo.PageVo;
-import org.diagbot.vo.QueryVo;
-import org.diagbot.vo.RelationVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -144,6 +141,14 @@ public class KnowledgeController {
         return knowledgeService.findHighRiskDisease(queryVo);
     }
 
+    /**
+     * 获取高危疾病列表
+     */
+    @RequestMapping("/getHighRisk")
+    public Map<String, String> getHighRisk(@Valid @RequestBody SearchData searchData){
+        return knowledgeService.getHighRiskDisease(searchData);
+    }
+
     /**
      * 给定疾病,获取推荐的化验或辅检项目
      */