瀏覽代碼

修改计算公式接口

hujing 6 年之前
父節點
當前提交
3a7b43f5cc

+ 2 - 2
algorithm/src/main/resources/algorithm.properties

@@ -1,8 +1,8 @@
 ################################ model basic url ###################################
 
 #basicPath=E:/git/push/algorithm/src/main/models/model_version_replacement/model
-#basicPath=/opt/models/dev/models/model_version_replacement/model
-basicPath=E:/models/model_version_replacement/model
+basicPath=/opt/models/dev/models/model_version_replacement/model
+#basicPath=E:/models/model_version_replacement/model
 
 ############################### current model version ################################
 diagnosisPredict.version=outpatient_556_IOE_1

+ 1 - 1
graph-web/src/main/java/org/diagbot/graphWeb/work/GraphCalculate.java

@@ -406,7 +406,7 @@ public class GraphCalculate {
         if (type == 2) {
             JSONObject content = medicalIndicationDetail.getContent();
             JSONArray contentDetails = content.getJSONArray("details");
-            if ("肾小球滤过率".equals(content.get("name"))){
+            if ("肾小球滤过率".equals(content.get("name"))) {
                 int age = 0;
                 double scr = 0.00;
                 float k = 0.0f;

+ 88 - 0
graph-web/src/main/java/org/diagbot/graphWeb/work/ScaleCalculate.java

@@ -1,8 +1,10 @@
 package org.diagbot.graphWeb.work;
 
+import com.alibaba.fastjson.JSONObject;
 import org.diagbot.graph.jdbc.DriverManager;
 import org.diagbot.graph.jdbc.Neo4jAPI;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -57,4 +59,90 @@ public class ScaleCalculate {
         }
         return final_result;
     }
+
+    public Map<String, Object> scaleCalcMethod(JSONObject jsonObject) throws Exception {
+        Map<String, Object> scaleCalcResult = new HashMap<>();
+        Map<String, Object> data = (Map<String, Object>) jsonObject.get("data");
+        int type = (int) data.get("type");
+        if (type == 2) {
+            Map<String, Object> content = (Map<String, Object>) data.get("content");
+            List<Map<String, Object>> mapList = (List<Map<String, Object>>) content.get("details");
+            if ("肾小球滤过率".equals(content.get("name"))) {
+                int age = 0;
+                double scr = 0.00;
+                float k = 0.0f;
+                double a = 0.00;
+                double denger = 0.00;
+                for (int i = 0; i < mapList.size(); i++) {
+                    Map<String, Object> detailSub = mapList.get(i);
+                    if ("年龄".equals(detailSub.get("name"))) {
+                        if ("".equals(detailSub.get("value"))) {
+                            //如果拿到的年龄为空,
+                            break;
+                        } else {
+                            age = Integer.valueOf(detailSub.get("value").toString());
+                        }
+                    } else if ("血肌酐".equals(detailSub.get("name"))) {
+                        if ("".equals(detailSub.get("value"))) {
+                            //如果给的value是空,给的2.2621是假数据
+                            break;
+                        } else {
+                            if ("umol/L".equals(detailSub.get("uint"))) {
+                                scr = Double.valueOf(detailSub.get("value").toString()) / 88.41;
+                            } else if ("mg/dL".equals(detailSub.get("uint"))) {
+                                scr = Double.valueOf(detailSub.get("value").toString());
+                            }
+                        }
+                    } else if ("性别".equals(detailSub.get("name"))) {
+                        List<Map<String, Object>> genderDetails = (List<Map<String, Object>>) detailSub.get("details");
+                        for (int j = 0; j < genderDetails.size(); j++) {
+                            Map<String, Object> genderDetail = genderDetails.get(j);
+                            //返回的数据结构性别暂时是写死(默认女性)
+                            if ((int) genderDetail.get("state") == 1) {
+                                if ("男".equals(genderDetail.get("detailName"))) {
+                                    k = 0.9f;
+                                    denger = (double) genderDetail.get("value");
+                                    if (scr <= 0.90) {
+                                        a = -0.411;
+                                    } else {
+                                        a = -1.209;
+                                    }
+                                } else if ("女".equals(genderDetail.get("detailName"))) {
+                                    k = 0.7f;
+                                    denger = (double) genderDetail.get("value");
+                                    if (scr <= 0.70) {
+                                        a = -0.329;
+                                    } else {
+                                        a = -1.209;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                double eGFR3 = 141 * Math.pow((scr / k), a) * Math.pow(0.993, age) * denger;
+                String unit = "ml/min•1.73m2";
+                String text = null;
+                if (eGFR3 <= 0) {
+                    text = "指标值缺少";
+                } else if (eGFR3 > 0 && eGFR3 < 15) {
+                    text = "肾功能衰竭";
+                } else if (eGFR3 >= 15 && eGFR3 <= 29) {
+                    text = "重度下降";
+                } else if (eGFR3 > 29 && eGFR3 < 60) {
+                    text = "中度下降";
+                } else if (eGFR3 >= 60 && eGFR3 <= 89) {
+                    text = "轻度下降";
+                } else if (eGFR3 > 89) {
+                    text = "正常或肾损伤代偿期";
+                }
+
+                scaleCalcResult.put("text", text);
+                scaleCalcResult.put("unit", unit);
+                scaleCalcResult.put("value", eGFR3);
+                System.out.println("text:" + text + "\tunit:" + unit + "\tvalue:" + eGFR3);
+            }
+        }
+        return scaleCalcResult;
+    }
 }

+ 11 - 16
push-web/src/main/java/org/diagbot/push/controller/GraphController.java

@@ -1,5 +1,6 @@
 package org.diagbot.push.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import org.diagbot.common.javabean.MedicalIndication;
 import org.diagbot.common.javabean.MedicalIndicationDetail;
 import org.diagbot.common.work.ResponseData;
@@ -10,6 +11,7 @@ import org.diagbot.graph.jdbc.Neo4jAPI;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.HighRiskCalculate;
 import org.diagbot.graphWeb.work.LisPacsCalculate;
+import org.diagbot.graphWeb.work.ScaleCalculate;
 import org.diagbot.pub.api.Response;
 import org.diagbot.pub.web.BaseController;
 import org.neo4j.driver.v1.Driver;
@@ -102,32 +104,25 @@ public class GraphController extends BaseController {
         return scale;
     }
 
+    //测试用
     @RequestMapping(value = "/scaleTest", method = RequestMethod.POST)
     @ResponseBody
     public Map<String, Object> scaleTest(HttpServletRequest request, @RequestBody SearchData searchData) throws Exception {
-        Driver driver = DriverManager.newDrive("192.168.2.233", "neo4j", "root");
+        Driver driver = DriverManager.newDrive();
         Neo4jAPI neo4jAPI = new Neo4jAPI(driver);
-
-        Map<String, Object> scale = neo4jAPI.getScaleCalc2( searchData.getScaleName());
+        Map<String, Object> scale = neo4jAPI.getScaleCalc2(searchData.getScaleName());
         return scale;
     }
 
     @RequestMapping(value = "/scaleCalc", method = RequestMethod.POST)
     @ResponseBody
-    public Map<String, Object> scaleCalc(HttpServletRequest request, @RequestBody SearchData searchData) throws Exception {
+    public Map<String, Object> scaleCalc(HttpServletRequest request, @RequestBody JSONObject jsonObject) throws Exception {
         Map<String, Object> maps = null;
-        GraphCalculate graphCalculate = new GraphCalculate();
-        ResponseData responseData = graphCalculate.calculate(request, searchData);
-        List<MedicalIndication> medicalIndications = responseData.getMedicalIndications();
-        for (MedicalIndication medicalIndication : medicalIndications) {
-            List<MedicalIndicationDetail> details = medicalIndication.getDetails();
-            for (MedicalIndicationDetail medicalIndicationDetail : details) {
-                if (medicalIndicationDetail.getType() == 2) {
-                    if ("肾小球滤过率".equals(medicalIndicationDetail.getContent().get("name"))) {
-                        maps = graphCalculate.scaleCalcMethod(medicalIndicationDetail);
-                    }
-                }
-            }
+        ScaleCalculate scaleCalculate = new ScaleCalculate();
+        if (Integer.parseInt(jsonObject.get("type").toString()) == 1) {
+
+        } else {
+            maps = scaleCalculate.scaleCalcMethod(jsonObject);
         }
         return maps;
     }