xiaochan 2 лет назад
Родитель
Сommit
a0556f5879

+ 0 - 5
src/main/java/thyyxxk/webserver/controller/heliyongyao/RationalUseController.java

@@ -27,10 +27,5 @@ public class RationalUseController {
         this.server = server;
     }
 
-    @RequestMapping("/jiaoYan")
-    @PassToken
-    public ResultVo<JSONObject> jiaoYan(@RequestBody XinZhenYiZhu param) {
-        return server.jiaoYan(param);
-    }
 
 }

+ 4 - 15
src/main/java/thyyxxk/webserver/dao/his/heliyongyao/RationalUseDao.java

@@ -60,21 +60,10 @@ public interface RationalUseDao {
             "  and type = 1")
     List<XunHuanJieDian> guoMin(@Param("patNo") String patNo);
 
-    /**
-     * 获取患者诊断
-     *
-     * @param patNo 住院号
-     * @param times 住院次数
-     * @return 诊断
-     */
-    @Select("select type = '0', " +
-            "              rtrim(dis_diag_comment) as name, " +
-            "              rtrim(dis_diag)         as code " +
-            "from ba_first_page1 " +
-            "where inpatient_no = #{patNo} " +
-            "  and admiss_times = #{times}")
-    List<XunHuanJieDian> zhenDuan(@Param("patNo") String patNo,
-                                  @Param("times") Integer times);
+    @Select("select data_element from emr_data_element where pat_no = #{patNo}" +
+            " and times = #{times}")
+    String medicalRecordDiagnosticData(@Param("patNo") String patNo,
+                                       @Param("times") Integer times);
 
     @Select("select national_code, rtrim(pzwh) pzwh, isnull(pack_retprice,1) pack_retprice,rtrim(code) + rtrim(serial) as id " +
             "from yp_zd_dict " +

+ 38 - 9
src/main/java/thyyxxk/webserver/service/heliyongyao/RationalUseServer.java

@@ -1,6 +1,7 @@
 package thyyxxk.webserver.service.heliyongyao;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
@@ -48,8 +49,7 @@ public class RationalUseServer {
         this.publicServer = publicServer;
     }
 
-    public ResultVo<JSONObject> jiaoYan(XinZhenYiZhu param) {
-        log.info("数据:{}", JSON.toJSONString(param));
+    public Map<String, List<String>> jiaoYan(XinZhenYiZhu param) {
         String userCode = "99999".equals(TokenUtil.getTokenUserId()) ? param.getUserCode() : TokenUtil.getTokenUserId();
         // 医生信息
         Map<String, String> doctMap = yiShenXinXi(userCode);
@@ -76,13 +76,31 @@ public class RationalUseServer {
         String detailsXml = yaoPinXinXi(param.getInpatientNo(), param.getAdmissTimes(), param.getCfType(), yp, doct, yaoPinMap);
         String js = String.format("{\"BaseXml\": \"%s\", \"DetailsXml\" : \"%s\"}", baseXml, detailsXml);
         log.info("上传数据:{} ", js);
+        Map<String, List<String>> map = new HashMap<>();
         try {
-            JSONObject fanHuiXinXi = http.rationalUse(js);
-            log.info("返回的数据:{}", fanHuiXinXi);
-            return ResultVoUtil.success(fanHuiXinXi);
+            //            log.info("返回的数据:{}", fanHuiXinXi);
+            JSONObject json = http.rationalUse(js);
+            log.info("返回的数据:{}", json);
+            if (json.getInteger("result_lv") > 0) {
+                JSONArray data = json.getJSONObject("result_xml").getJSONObject("ui_results_xml").getJSONObject("result_data").getJSONArray("result");
+                for (int i = 0; i < data.size(); i++) {
+                    JSONObject item = data.getJSONObject(i);
+                    String[] orderNos = item.getString("oeridid").split("、");
+                    List<String> errorMsg = new ArrayList<>();
+                    errorMsg.add(item.getString("result_title"));
+                    errorMsg.add(item.getString("title"));
+                    errorMsg.add(item.getString("detail"));
+                    for (String str : orderNos) {
+                        map.put(str, errorMsg);
+                    }
+                }
+                log.info("合理用药数据:{}", data);
+            }
+
+            return map;
         } catch (Exception e) {
             e.printStackTrace();
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "网络错误");
+            return map;
         }
     }
 
@@ -189,8 +207,20 @@ public class RationalUseServer {
         sb.append("</skintest_data>");
         // 诊断
         sb.append("<diagnose_data>");
+        List<XunHuanJieDian> zhenDuanShuJu = new ArrayList<>();
+        JSONObject medicalRecordDiagnosticData = JSONObject.parseObject(dao.medicalRecordDiagnosticData(patNo, times));
+        if (medicalRecordDiagnosticData != null) {
+            JSONArray arr = medicalRecordDiagnosticData.getJSONArray("入院诊断");
+            for (int i = 0; i < arr.size(); i++) {
+                JSONObject item = arr.getJSONObject(i);
+                XunHuanJieDian temp = new XunHuanJieDian();
+                temp.setType("0");
+                temp.setCode(item.getString("code"));
+                temp.setName(item.getString("name"));
+                zhenDuanShuJu.add(temp);
+            }
+        }
 
-        List<XunHuanJieDian> zhenDuanShuJu = dao.zhenDuan(patNo, times);
         // 诊断节点
         xunHuanJieDian(sb, zhenDuanShuJu, "diagnose");
         sb.append("</diagnose_data>")
@@ -216,8 +246,7 @@ public class RationalUseServer {
             // 因为我要入库才能生成医嘱号所以这里用雪花算法
             sb.append("<medicine>")
                     .append("<cf_id>").append("0").append("</cf_id>")
-                    // 因为我要入库才能生成医嘱号所以这里用雪花算法
-                    .append("<oeridid>").append(item.getRationalDrugUseId()).append("</oeridid>")
+                    .append("<oeridid>").append(item.getActOrderNo().stripTrailingZeros().toPlainString()).append("</oeridid>")
                     .append("<is_current>").append("1").append("</is_current>")
                     .append("<pres_type>").append("ONCE".equals(item.getFrequCode()) ? "T" : "L").append("</pres_type>")
                     .append("<pres_time>").append(DateUtil.formatDatetime(item.getOrderTime())).append("</pres_time>")

+ 1 - 18
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/EmrServer.java

@@ -83,9 +83,7 @@ public class EmrServer {
         if (data.isEmpty()) {
             return ResultVoUtil.success(tree);
         }
-
         emrArrToTree(data, tree);
-
         return ResultVoUtil.success(tree);
     }
 
@@ -119,21 +117,6 @@ public class EmrServer {
         return ResultVoUtil.success(tree);
     }
 
-    class ExtractData extends Thread {
-        private final EmrPatientData param;
-
-        public ExtractData(EmrPatientData param) {
-            this.param = param;
-        }
-
-        @Override
-        public void run() {
-            log.info("开始提取数据:{}", JSON.toJSONString(param));
-            extractDataElement(param);
-        }
-
-    }
-
     /**
      * 提取患者数据元
      *
@@ -203,7 +186,7 @@ public class EmrServer {
         List<String> strings = new ArrayList<>();
         if (emrDataExtract != null) {
             // 获取 需要提取的数据元
-            strings  = JSON.parseArray(emrDataExtract.getDataExtract(), String.class);
+            strings = JSON.parseArray(emrDataExtract.getDataExtract(), String.class);
             log.info("需要提取的数据:{}", strings);
             // 获取到已经提取的数据
             EmrDataElement emrDataElement = dao.obtainPatientSOriginalData(patientData.getPatNo(), patientData.getTimes());

+ 4 - 5
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/YiZhuLuRuServer.java

@@ -1,6 +1,8 @@
 package thyyxxk.webserver.service.zhuyuanyisheng;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -249,11 +251,8 @@ public class YiZhuLuRuServer {
             }
         }
 
-//        rationalUseServer.jiaoYan(param);
-//        if (1 == 1) {
-//            return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "测试");
-//        }
-
+        // 合理用药校验
+//        Map<String, List<String>> rationalUseOfMedicine = rationalUseServer.jiaoYan(param);
 
         String userCode = TokenUtil.getTokenUserId();
         // 获取医生开药品的权限