|
@@ -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;
|
|
|
+ }
|
|
|
}
|