Просмотр исходного кода

推理入参预处理改并行

zhaops 5 лет назад
Родитель
Сommit
9904b7a570

+ 160 - 0
aipt-service/src/main/java/com/diagbot/aggregate/SearchItemAggregate.java

@@ -0,0 +1,160 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.dto.LisResult;
+import com.diagbot.dto.PacsResult;
+import com.diagbot.enums.FeatureTypeEnum;
+import com.diagbot.enums.SysTypeEnum;
+import com.diagbot.facade.TransferFacade;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.SearchVo;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/11/14 16:11
+ */
+@Component
+public class SearchItemAggregate {
+    @Autowired
+    private TransferFacade transferFacade;
+
+    @DataProvider("assembleSearchData")
+    public SearchVo assembleSearchData(@InvokeParameter("searchVo") SearchVo searchVo,
+                                       @InvokeParameter("isConnect") Boolean isConnect,
+                                       @DataConsumer("setLisArr") List<LisResult> lisArr,
+                                       @DataConsumer("setPacsStr") String pacs,
+                                       @DataConsumer("setDiag") String diag,
+                                       @DataConsumer("setDiseaseName") String diseaseName,
+                                       @DataConsumer("setLisOrder") String lisOrder,
+                                       @DataConsumer("setPacsOrder") String pacsOrder) {
+        if (isConnect) {
+            //化验转公表项处理
+            searchVo.setLisArr(lisArr);
+            //下面转换仅限数据引擎模式
+            if (searchVo.getSysType().equals(SysTypeEnum.LTAPI_SERVICE.getKey())) {
+                //辅检预处理
+                searchVo.setPacs(pacs);
+                //诊断预处理
+                searchVo.setDiag(diag);
+                //治疗方案诊断转换
+                searchVo.setDiseaseName(diseaseName);
+                //化验开单项
+                searchVo.setLisOrder(lisOrder);
+                //辅检开单项
+                searchVo.setPacsOrder(pacsOrder);
+            }
+        }
+        return searchVo;
+    }
+
+    /**
+     * 化验增加公表项
+     *
+     * @param searchVo
+     * @return
+     */
+    @DataProvider("setLisArr")
+    public List<LisResult> setLisArr(@InvokeParameter("searchVo") SearchVo searchVo) {
+        List<LisResult> lisArr = searchVo.getLisArr();
+        lisArr = transferFacade.addLisUniqueName(lisArr, searchVo.getHosCode());
+        return lisArr;
+    }
+
+    /**
+     * 辅检转内部项目名称
+     *
+     * @param searchVo
+     * @return
+     */
+    @DataProvider("setPacsStr")
+    public String setPacsStr(@InvokeParameter("searchVo") SearchVo searchVo) {
+        String pacs = "";
+        if (StringUtil.isNotBlank(searchVo.getPacs())) {
+            pacs += searchVo.getPacs() + ";";
+        }
+        List<PacsResult> pacsArr = searchVo.getPacsArr();
+        if (ListUtil.isNotEmpty(pacsArr)) {
+            List<PacsResult> convertPacsArr = transferFacade.addPacsUniqueName(pacsArr, searchVo.getHosCode());
+            for (PacsResult pacsResult : convertPacsArr) {
+                String pacsResultString = "";
+                if (StringUtils.isNotBlank(pacsResult.getUniqueName())) {
+                    pacsResultString = pacsResult.getUniqueName() + ":";
+                } else {
+                    pacsResultString = pacsResult.getName() + ":";
+                }
+                pacsResultString += pacsResult.getResult() + ";";
+                pacs += pacsResultString;
+            }
+        }
+        return pacs;
+    }
+
+    /**
+     * 诊断转内部名称
+     *
+     * @param searchVo
+     * @return
+     */
+    @DataProvider("setDiag")
+    public String setDiag(@InvokeParameter("searchVo") SearchVo searchVo) {
+        String diag = "";
+        if (StringUtil.isNotBlank(searchVo.getDiag())) {
+            diag = transferFacade.strConvert(searchVo.getDiag(), searchVo.getHosCode(), FeatureTypeEnum.Feature_Type_Disease.getKey());
+        }
+        return diag;
+    }
+
+    /**
+     * 获取治疗方案诊断转内部名称
+     *
+     * @param searchVo
+     * @return
+     */
+    @DataProvider("setDiseaseName")
+    public String setDiseaseName(@InvokeParameter("searchVo") SearchVo searchVo) {
+        String diseaseName = "";
+        if (StringUtil.isNotBlank(searchVo.getDiseaseName())) {
+            diseaseName = transferFacade.strConvert(searchVo.getDiseaseName(), searchVo.getHosCode(), FeatureTypeEnum.Feature_Type_Disease.getKey());
+        }
+        return diseaseName;
+    }
+
+    /**
+     * 化验开单项映射公表名称
+     *
+     * @param searchVo
+     * @return
+     */
+    @DataProvider("setLisOrder")
+    public String setLisOrder(@InvokeParameter("searchVo") SearchVo searchVo) {
+        String lisOrder = "";
+        if (StringUtil.isNotBlank(searchVo.getLisOrder())) {
+            lisOrder = transferFacade.strConvert(searchVo.getLisOrder(), searchVo.getHosCode(), FeatureTypeEnum.Feature_Type_Lis.getKey());
+        }
+        return lisOrder;
+    }
+
+    /**
+     * 辅检开单项转内部项目名称
+     *
+     * @param searchVo
+     * @return
+     */
+    @DataProvider("setPacsOrder")
+    public String setPacsOrder(@InvokeParameter("searchVo") SearchVo searchVo) {
+        String pacsOrder = "";
+        if (StringUtil.isNotBlank(searchVo.getPacsOrder())) {
+            pacsOrder = transferFacade.strConvert(searchVo.getPacsOrder(), searchVo.getHosCode(), FeatureTypeEnum.Feature_Type_Pacs.getKey());
+        }
+        return pacsOrder;
+    }
+}

+ 14 - 61
aipt-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -2,25 +2,20 @@ package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSONObject;
 import com.diagbot.client.bean.ResponseData;
-import com.diagbot.dto.LisResult;
-import com.diagbot.dto.PacsResult;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.enums.FeatureTypeEnum;
 import com.diagbot.enums.SysTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.SearchVo;
 import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -50,7 +45,8 @@ public class PushFacade {
         PushDTO pushDTO = new PushDTO();
         //是否对接
         Boolean isConnect = transferFacade.isConnect(searchVo.getHosCode(), searchVo.getSysType());
-        searchVo = assembleSearchData(searchVo, isConnect);
+        //入参预处理
+        searchVo = precSearchData(searchVo, isConnect);
         ResponseData data = clinicalFacade.processClinicalData(searchVo);
 
         String featureType = searchVo.getFeatureType();
@@ -112,7 +108,8 @@ public class PushFacade {
         String diseaseName = searchVo.getDiseaseName();
         //是否对接
         Boolean isConnect = transferFacade.isConnect(searchVo.getHosCode(), searchVo.getSysType());
-        searchVo = assembleSearchData(searchVo, isConnect);
+        //入参预处理
+        searchVo = precSearchData(searchVo, isConnect);
         ResponseData data = clinicalFacade.processClinicalData(searchVo);
         Map<String, JSONObject> treat = data.getTreat();
         if (StringUtil.isBlank(searchVo.getDiseaseName())) {
@@ -128,65 +125,21 @@ public class PushFacade {
     }
 
     /**
-     * 辅检结构化结果拼接文本
-     *
-     * @param pacsArr
-     * @return
-     */
-    public String getPacsString(List<PacsResult> pacsArr) {
-        String pacsString = "";
-        for (PacsResult pacsResult : pacsArr) {
-            String pacsResultString = "";
-            if (StringUtils.isNotBlank(pacsResult.getUniqueName())) {
-                pacsResultString = pacsResult.getUniqueName() + ":";
-            } else {
-                pacsResultString = pacsResult.getName() + ":";
-            }
-            pacsResultString += pacsResult.getResult() + ";";
-            pacsString += pacsResultString;
-        }
-        return pacsString;
-    }
-
-
-    /**
-     * 推理入参转换
+     * searchData入参预处理
      *
      * @param searchVo
      * @param isConnect
      * @return
      */
-    public SearchVo assembleSearchData(SearchVo searchVo, Boolean isConnect) {
-        //化验转公表项处理
-        if (isConnect) {
-            List<LisResult> lisArr = searchVo.getLisArr();
-            lisArr = transferFacade.addLisUniqueName(lisArr, searchVo.getHosCode());
-            searchVo.setLisArr(lisArr);
-        }
-
-        //下面转换仅限数据引擎模式
-        if (isConnect && searchVo.getSysType().equals(SysTypeEnum.LTAPI_SERVICE.getKey())) {
-            //辅检预处理
-            List<PacsResult> pacsArr = searchVo.getPacsArr();
-            if (ListUtil.isNotEmpty(pacsArr)) {
-                List<PacsResult> convertPacsArr = transferFacade.addPacsUniqueName(pacsArr, searchVo.getHosCode());
-                searchVo.setPacs(searchVo.getPacs() + ";" + getPacsString(convertPacsArr));
-            }
-
-            //诊断预处理
-            if (StringUtil.isNotBlank(searchVo.getDiag())) {
-                searchVo.setDiag(transferFacade.strConvert(searchVo.getDiag(), searchVo.getHosCode(), FeatureTypeEnum.Feature_Type_Disease.getKey()));
-            }
-
-            //治疗方案诊断转换
-            if (StringUtil.isNotBlank(searchVo.getDiseaseName())) {
-                searchVo.setDiseaseName(transferFacade.strConvert(searchVo.getDiseaseName(), searchVo.getHosCode(), FeatureTypeEnum.Feature_Type_Disease.getKey()));
-            }
-
-            //化验开单项
-            searchVo.setLisOrder(transferFacade.strConvert(searchVo.getLisOrder(), searchVo.getHosCode(), FeatureTypeEnum.Feature_Type_Lis.getKey()));
-            //辅检开单项
-            searchVo.setPacsOrder(transferFacade.strConvert(searchVo.getPacsOrder(), searchVo.getHosCode(), FeatureTypeEnum.Feature_Type_Pacs.getKey()));
+    public SearchVo precSearchData(SearchVo searchVo, Boolean isConnect) {
+        try {
+            Map<String, Object> inputParams = new HashMap<>();
+            inputParams.put("searchVo", searchVo);
+            inputParams.put("isConnect", isConnect);
+            searchVo
+                    = dataBeanAggregateQueryFacade.get("assembleSearchData", inputParams, SearchVo.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
         }
         return searchVo;
     }