DESKTOP-0GD05B0\Administrator 2 rokov pred
rodič
commit
688490ed42

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

@@ -68,6 +68,6 @@ public interface RationalUseDao {
     @Select("select national_code, rtrim(pzwh) pzwh, isnull(pack_retprice,1) pack_retprice,rtrim(code) + rtrim(serial) as id " +
             "from yp_zd_dict " +
             "${ew.customSqlSegment}")
-    List<YaoPin> yaoPingXinXi(@Param(Constants.WRAPPER) QueryWrapper<?> queryWrapper);
+    List<YaoPin> selectDrug(@Param(Constants.WRAPPER) QueryWrapper<?> queryWrapper);
 
 }

+ 56 - 83
src/main/java/thyyxxk/webserver/service/heliyongyao/RationalUseServer.java

@@ -36,15 +36,14 @@ import java.util.stream.Collectors;
 @Service
 @Slf4j
 public class RationalUseServer {
-
     private final RationalUseDao dao;
     private final RationalUseSrvc http;
-    private final YiZhuLuRuDao yiZhuLuRuDao;
+    private final YiZhuLuRuDao orderDao;
 
-    public RationalUseServer(RationalUseDao dao, RationalUseSrvc http, YiZhuLuRuDao yiZhuLuRuDao) {
+    public RationalUseServer(RationalUseDao dao, RationalUseSrvc http, YiZhuLuRuDao orderDao) {
         this.dao = dao;
         this.http = http;
-        this.yiZhuLuRuDao = yiZhuLuRuDao;
+        this.orderDao = orderDao;
     }
 
     public ResultVo<JSONObject> rationalUseOfMedicine(String patNo, Integer times) {
@@ -56,8 +55,9 @@ public class RationalUseServer {
                 .eq("a.enter_oper", TokenUtil.getTokenUserId())
                 .eq("isnull(a.self_buy,'0')", "0")
                 .ne("a.serial", "00");
-        XinZhenYiZhu patInfo = yiZhuLuRuDao.huoQuHuanZheXinXi(patNo, times);
-        patInfo.setList(yiZhuLuRuDao.huoQuYiZhuShuJu(qw));
+        XinZhenYiZhu patInfo = orderDao.queryPatientInfo(patNo, times);
+        // 获取医嘱列表
+        patInfo.setList(orderDao.selectOrderNo(qw));
         JSONObject js = verify(patInfo);
         return ResultVoUtil.success(js);
     }
@@ -75,75 +75,40 @@ public class RationalUseServer {
     public JSONObject verify(XinZhenYiZhu param) {
         String userCode = TokenUtil.getTokenUserId();
         // 医生信息
-        Map<String, String> doctMap = yiShenXinXi(userCode);
+        Map<String, String> doctMap = doctorInfo(userCode);
         String baseXml = doctMap.get("baseXml");
-        String doct = doctMap.get("doct");
+        String doctXml = doctMap.get("doct");
         List<XinZhenYzActOrder> yp = new ArrayList<>();
         QueryWrapper<?> qw = new QueryWrapper<>();
-        List<String> yaoPinBianMa = new ArrayList<>();
+        List<String> drugList = new ArrayList<>();
         for (XinZhenYzActOrder item : param.getList()) {
             if (StringUtil.notBlank(item.getSerial())) {
                 if (!"00".equals(item.getSerial())) {
                     yp.add(item);
                     String key = item.getOrderCode().trim() + item.getSerial().trim();
-                    if (!yaoPinBianMa.contains(key)) {
-                        yaoPinBianMa.add(key);
+                    if (!drugList.contains(key)) {
+                        drugList.add(key);
                     }
                 }
             }
         }
-        if (ListUtil.isBlank(yaoPinBianMa)) {
+        if (ListUtil.isBlank(drugList)) {
             return new JSONObject();
         }
-        qw.in("rtrim(code) + rtrim(serial)", yaoPinBianMa);
-        Map<String, YaoPin> yaoPinMap = dao.yaoPingXinXi(qw).stream().collect(
+        qw.in("rtrim(code) + rtrim(serial)", drugList);
+        Map<String, YaoPin> drugMap = dao.selectDrug(qw).stream().collect(
                 Collectors.toMap(YaoPin::getId, a -> a, (k1, k2) -> k1)
         );
 
-        String detailsXml = yaoPinXinXi(param.getInpatientNo(), param.getAdmissTimes(), yp, doct, yaoPinMap);
+        String detailsXml = drugInfoFunc(param.getInpatientNo(), param.getAdmissTimes(), yp, doctXml, drugMap);
         String js = String.format("{\"BaseXml\": \"%s\", \"DetailsXml\" : \"%s\"}", baseXml, detailsXml);
         return http.rationalUse(js);
     }
 
-
-    /**
-     * 解析数据
-     *
-     * @param json
-     * @return
-     */
-    public Map<String, List<String>> parseTheData(JSONObject json) {
-        Map<String, List<String>> map = new HashMap<>();
-        try {
-            if (json.getInteger("result_lv") > 2) {
-                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) {
-                        if (map.containsKey(str)) {
-                            map.get(str).addAll(errorMsg);
-                        } else {
-                            map.put(str, errorMsg);
-                        }
-                    }
-                }
-            }
-            return map;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return map;
-        }
-    }
-
-    public Map<String, String> yiShenXinXi(String code) {
-        Map<String, String> yiShenXinXi = dao.yiShenXinXi(code);
-        if (yiShenXinXi == null || yiShenXinXi.isEmpty()) {
-            yiShenXinXi = new HashMap<>(Capacity.TWO);
+    public Map<String, String> doctorInfo(String code) {
+        Map<String, String> doctorInfo = dao.yiShenXinXi(code);
+        if (doctorInfo == null || doctorInfo.isEmpty()) {
+            doctorInfo = new HashMap<>(Capacity.TWO);
         }
 
         Map<String, String> map = new HashMap<>(Capacity.TWO);
@@ -152,20 +117,20 @@ public class RationalUseServer {
                 "<source>HIS</source>" +
                 "<hosp_code>H43010500370</hosp_code>" +
                 "<hosp_name>长沙泰和医院</hosp_name>" +
-                "<dept_code>" + nullToBlank(yiShenXinXi.get("dept_code")) + "</dept_code>" +
-                "<dept_name>" + nullToBlank(yiShenXinXi.get("dept_name")) + "</dept_name>" +
+                "<dept_code>" + nullToBlank(doctorInfo.get("dept_code")) + "</dept_code>" +
+                "<dept_name>" + nullToBlank(doctorInfo.get("dept_name")) + "</dept_name>" +
                 "<doct>" +
-                "<code>" + nullToBlank(yiShenXinXi.get("code")) + "</code>" +
-                "<name>" + nullToBlank(yiShenXinXi.get("name")) + "</name>" +
-                "<type>" + nullToBlank(yiShenXinXi.get("type")) + "</type>" +
-                "<type_name>" + nullToBlank(yiShenXinXi.get("type_name")) + "</type_name>" +
+                "<code>" + nullToBlank(doctorInfo.get("code")) + "</code>" +
+                "<name>" + nullToBlank(doctorInfo.get("name")) + "</name>" +
+                "<type>" + nullToBlank(doctorInfo.get("type")) + "</type>" +
+                "<type_name>" + nullToBlank(doctorInfo.get("type_name")) + "</type_name>" +
                 "</doct>" +
                 "</base_xml>";
         map.put("baseXml", baseXml);
-        String sb = "<dept_code>" + nullToBlank(yiShenXinXi.get("dept_code")) + "</dept_code>" +
-                "<dept_name>" + nullToBlank(yiShenXinXi.get("dept_name")) + "</dept_name>" +
-                "<doct_code>" + nullToBlank(yiShenXinXi.get("code")) + "</doct_code>" +
-                "<doct_name>" + nullToBlank(yiShenXinXi.get("name")) + "</doct_name>";
+        String sb = "<dept_code>" + nullToBlank(doctorInfo.get("dept_code")) + "</dept_code>" +
+                "<dept_name>" + nullToBlank(doctorInfo.get("dept_name")) + "</dept_name>" +
+                "<doct_code>" + nullToBlank(doctorInfo.get("code")) + "</doct_code>" +
+                "<doct_name>" + nullToBlank(doctorInfo.get("name")) + "</doct_name>";
         map.put("doct", sb);
         return map;
     }
@@ -177,18 +142,26 @@ public class RationalUseServer {
         return str.trim();
     }
 
-    public String yaoPinXinXi(String patNo,
-                              Integer times,
-                              List<XinZhenYzActOrder> yaoPinShuZu,
-                              String doct,
-                              Map<String, YaoPin> yaoPinMap) {
-        log.info("数据:{}", JSON.toJSONString(yaoPinShuZu));
+    /**
+     * @param patNo    住院号
+     * @param times    住院次数
+     * @param drugData 需要审核的药品
+     * @param doct     文档节点
+     * @param drugMap  药品的map用 编码和规格做key
+     * @return 返回节点
+     */
+    public String drugInfoFunc(String patNo,
+                               Integer times,
+                               List<XinZhenYzActOrder> drugData,
+                               String doct,
+                               Map<String, YaoPin> drugMap) {
+        log.info("数据:{}", JSON.toJSONString(drugData));
         StringBuilder sb = new StringBuilder();
         RationalUsePatient patient = dao.huanZheXinXi(patNo, times);
         if (patient == null) {
             throw new BizException(ExceptionEnum.LOGICAL_ERROR, "没有找到对应患者的信息。");
         }
-        XinZhenYiZhu patient1 = yiZhuLuRuDao.huoQuHuanZheXinXi(patNo, times);
+        XinZhenYiZhu patientInfo = orderDao.queryPatientInfo(patNo, times);
         // 中西药处方/医嘱类型标识
         // 就诊类型
         // 就诊号
@@ -203,7 +176,7 @@ public class RationalUseServer {
                 // 就诊号
                 .append("<treat_code>").append(patNo).append("_").append(times).append(DateUtil.formatDatetime(new Date(), "YYYYMMDD")).append("</treat_code>")
                 .append("<is_repeat>").append("1").append("</is_repeat>")
-                .append("<bed_no>").append(nullToBlank(patient1.getBedNo())).append("</bed_no>")
+                .append("<bed_no>").append(nullToBlank(patientInfo.getBedNo())).append("</bed_no>")
                 .append("<patient>")
                 .append("<pati_id>").append(patNo).append("_").append(times).append("</pati_id>")
                 .append("<name>").append(nullToBlank(patient.getName())).append("</name>")
@@ -226,13 +199,13 @@ public class RationalUseServer {
         sb.append("</allergic_data>");
         // 皮试节点,可循环
         sb.append("<skintest_data>");
-        List<XunHuanJieDian> piShiShuZu = new ArrayList<>();
-        if (ListUtil.isBlank(piShiShuZu)) {
-            XunHuanJieDian piShi = new XunHuanJieDian();
-            piShi.setCode("").setName("").setResult("");
-            piShiShuZu.add(piShi);
+        List<XunHuanJieDian> skinTestData = new ArrayList<>();
+        if (ListUtil.isBlank(skinTestData)) {
+            XunHuanJieDian skinTest = new XunHuanJieDian();
+            skinTest.setCode("").setName("").setResult("");
+            skinTestData.add(skinTest);
         }
-        for (XunHuanJieDian item : piShiShuZu) {
+        for (XunHuanJieDian item : skinTestData) {
             sb.append("<skintest>")
                     .append("<name>").append(nullToBlank(item.getName())).append("</name>")
                     .append("<code>").append(nullToBlank(item.getCode())).append("</code>")
@@ -242,7 +215,7 @@ public class RationalUseServer {
         sb.append("</skintest_data>");
         // 诊断
         sb.append("<diagnose_data>");
-        List<XunHuanJieDian> zhenDuanShuJu = new ArrayList<>();
+        List<XunHuanJieDian> diagnosticData = new ArrayList<>();
         JSONObject medicalRecordDiagnosticData = JSONObject.parseObject(dao.medicalRecordDiagnosticData(patNo, times));
         if (medicalRecordDiagnosticData != null) {
             JSONArray arr = medicalRecordDiagnosticData.getJSONArray("入院诊断");
@@ -253,13 +226,13 @@ public class RationalUseServer {
                     temp.setType("0");
                     temp.setCode(item.getString("code"));
                     temp.setName(item.getString("name"));
-                    zhenDuanShuJu.add(temp);
+                    diagnosticData.add(temp);
                 }
             }
         }
 
         // 诊断节点
-        xunHuanJieDian(sb, zhenDuanShuJu, "diagnose");
+        xunHuanJieDian(sb, diagnosticData, "diagnose");
         sb.append("</diagnose_data>")
                 .append("</patient>");
 
@@ -273,8 +246,8 @@ public class RationalUseServer {
                 .append("<pres_time>").append(DateUtil.formatDatetime(new Date())).append("</pres_time>")
                 // 药品信息节点,可循环
                 .append("<medicine_data>");
-        for (XinZhenYzActOrder item : yaoPinShuZu) {
-            YaoPin yp = yaoPinMap.get(item.getOrderCode().trim() + item.getSerial().trim());
+        for (XinZhenYzActOrder item : drugData) {
+            YaoPin yp = drugMap.get(item.getOrderCode().trim() + item.getSerial().trim());
             if (null == yp) {
                 yp = new YaoPin();
                 yp.setPackRetprice(BigDecimal.valueOf(1));