Bladeren bron

Merge branch 'master' into innerDevelop

gaodm 4 jaren geleden
bovenliggende
commit
26334923b6

+ 1 - 1
src/main/java/com/diagbot/entity/node/YiBaoDiseaseName.java

@@ -38,7 +38,7 @@ public class YiBaoDiseaseName extends BaseNode  {
 	@Relationship(type = "医保疾病名称相关体征", direction = Relationship.OUTGOING)
 	private Set<Vital> vitals = new HashSet<>();
 
-	@Relationship(type = "医保疾病名称相关实验室检查名称", direction = Relationship.OUTGOING)
+	@Relationship(type = "医保疾病名称相关化验套餐名称", direction = Relationship.OUTGOING)
 	private Set<LisName> lisnames = new HashSet<>();
 
 	@Relationship(type = "医保疾病名称相关辅助检查名称", direction = Relationship.OUTGOING)

+ 68 - 28
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -260,6 +260,29 @@ public class NeoFacade {
         if (lisPushVo != null) {
             lises = lisPushVo.getLises();
         }
+
+        if (pushDisBySpecialLis(age, sex, neoPushDTOS, lises)) return neoPushDTOS;
+
+        // 症状、体征推送出的疾病
+        pushDisBySymptomOrVital(pushVO, allDis);
+        //化验推出的疾病
+        pushDisByLis(allDis, lises);
+        //辅检推出的疾病
+        pushDisByPacs(pushVO, allDis);
+        filterAndSort(neoPushDTOS, allDis, sex, age);
+
+        return neoPushDTOS;
+    }
+
+    /**
+     * 化验特异性推送疾病
+     * @param age
+     * @param sex
+     * @param neoPushDTOS
+     * @param lises
+     * @return
+     */
+    private boolean pushDisBySpecialLis(Double age, Integer sex, List<NeoPushDTO> neoPushDTOS, List<Lis> lises) {
         if (ListUtil.isNotEmpty(lises)) {
             List<String> lis_dis = lises.parallelStream()
                     .map(x -> nodeRepository.getDisByLis_Special(x.getName(), x.getUniqueName() + x.getResult()))
@@ -267,12 +290,50 @@ public class NeoFacade {
             if (ListUtil.isNotEmpty(lis_dis)) {
                 filterAndSort(neoPushDTOS, lis_dis, sex, age);
                 if (ListUtil.isNotEmpty(neoPushDTOS)) {
-                    return neoPushDTOS;
+                    return true;
                 }
             }
         }
+        return false;
+    }
+
+    /**
+     * 辅检推送疾病
+     * @param pushVO
+     * @param allDis
+     */
+    private void pushDisByPacs(NeoPushVO pushVO, List<String> allDis) {
+        PacsPushVo pacsPushVo = pushVO.getPacsPushVo();
+        if (pacsPushVo != null) {
+            List<Item> pacs = pacsPushVo.getPacs();
+            if (ListUtil.isNotEmpty(pacs)) {
+                List<String> pacsNames = pacs.stream().map(x -> x.getUniqueName()).collect(Collectors.toList());
+                List<String> allDis_byPacsResult = getDisByPacsResult(pacsNames);
+                allDis.addAll(allDis_byPacsResult);
+            }
+        }
+    }
+
+    /**
+     * 化验推送疾病
+     * @param allDis
+     * @param lises
+     */
+    private void pushDisByLis(List<String> allDis, List<Lis> lises) {
+        if (ListUtil.isNotEmpty(lises)) {
+            List<String> lis_dis = lises.parallelStream()
+                    .map(x -> nodeRepository.getDisByLis(x.getName(), x.getUniqueName() + x.getResult()))
+                    .flatMap(List::stream).collect(Collectors.toList());
+            allDis.addAll(lis_dis);
+        }
+    }
 
-        // 如果没有诊断名称,则通过其它信息推送诊断
+    /**
+     * 症状和体征推送疾病
+     * @param pushVO
+     * @param allDis
+     */
+    private void pushDisBySymptomOrVital(NeoPushVO pushVO, List<String> allDis) {
         ChiefPushVo chiefPushVo = pushVO.getChiefPushVo();
         PresentPushVo presentPushVo = pushVO.getPresentPushVo();
         List<String> symptoms = new ArrayList<>();
@@ -290,29 +351,8 @@ public class NeoFacade {
         }
         symptoms = Stream.of(symptom_chief, symptom_present).flatMap(Collection::stream).distinct().collect(Collectors.toList());
         //症状、体征推疾病
-        List<String> allDis_bySymptom = getDisBySymptom(symptoms, age, sex);
+        List<String> allDis_bySymptom = getDisBySymptom(symptoms);
         allDis.addAll(allDis_bySymptom);
-        //化验推出的疾病
-        if (ListUtil.isNotEmpty(lises)) {
-            List<String> lis_dis = lises.parallelStream()
-                    .map(x -> nodeRepository.getDisByLis(x.getName(), x.getUniqueName() + x.getResult()))
-                    .flatMap(List::stream).collect(Collectors.toList());
-            allDis.addAll(lis_dis);
-        }
-
-        //辅检推出的疾病
-        PacsPushVo pacsPushVo = pushVO.getPacsPushVo();
-        if (pacsPushVo != null) {
-            List<Item> pacs = pacsPushVo.getPacs();
-            if (ListUtil.isNotEmpty(pacs)) {
-                List<String> pacsNames = pacs.stream().map(x -> x.getUniqueName()).collect(Collectors.toList());
-                List<String> allDis_byPacsResult = getDisByPacsResult(pacsNames, age, sex);
-                allDis.addAll(allDis_byPacsResult);
-            }
-        }
-        filterAndSort(neoPushDTOS, allDis, sex, age);
-
-        return neoPushDTOS;
     }
 
     private void filterAndSort(List<NeoPushDTO> neoPushDTOS, List<String> allDis, int gender_code, double age) {
@@ -350,17 +390,17 @@ public class NeoFacade {
         });
     }
 
-    public List<String> getDisBySymptom(List<String> symptoms, Double age, Integer sex) {
+    public List<String> getDisBySymptom(List<String> symptoms) {
         List<String> symptomCache = getSymptomCache();
         //取交集
         symptoms.retainAll(symptomCache);
         long start = System.currentTimeMillis();
-        List<String> allDis_bySymptom = pushDisBySymptom(symptomNameRepository, symptoms, age, sex);
+        List<String> allDis_bySymptom = pushDisBySymptom(symptomNameRepository, symptoms);
         long end = System.currentTimeMillis();
         return allDis_bySymptom;
     }
 
-    public List<String> getDisByPacsResult(List<String> pacsResult, Double age, Integer sex) {
+    public List<String> getDisByPacsResult(List<String> pacsResult) {
 
         /*List<PacsResult> byNameIn = pacsResultRepository.findByNameIn(pacsResult);
         List<String> allDis = byNameIn.stream()
@@ -378,7 +418,7 @@ public class NeoFacade {
      * @param symptoms
      * @return
      */
-    public List<String> pushDisBySymptom(SymptomNameRepository symptomNameRepository, List<String> symptoms, Double age, Integer sex) {
+    public List<String> pushDisBySymptom(SymptomNameRepository symptomNameRepository, List<String> symptoms) {
         List<String> allDis = Lists.newArrayList();
         /*List<Symptom> byNameIn = symptomNameRepository.findByNameIn(symptoms);
         allDis = byNameIn.parallelStream()

+ 15 - 0
src/main/java/com/diagbot/facade/TestFacade.java

@@ -20,6 +20,7 @@ import com.diagbot.vo.IndicationPushVO;
 import com.diagbot.vo.ItemExt;
 import com.diagbot.vo.StandConvertCrfVO;
 import com.diagbot.vo.TestAllVO;
+import com.diagbot.vo.TestExport;
 import com.diagbot.vo.TestIndicationVO;
 import com.diagbot.vo.TestLineVO;
 import io.github.lvyahui8.spring.facade.DataFacade;
@@ -31,6 +32,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -62,6 +64,19 @@ public class TestFacade {
     @Autowired
     CacheFacade cacheFacade;
 
+    /**
+     * 测试导出
+     *
+     */
+    public static void exportExcel(HttpServletResponse response) {
+        List<Lis> lisList = new ArrayList<>();
+        Lis lis1 = new Lis();
+        lis1.setName("血常规");
+        lisList.add(lis1);
+        ExcelUtils.exportExcel(lisList, null, "sheet1", TestExport.class, "名称.xls", response, 12.8f);
+        // ExcelUtils.exportExcel(lisList, "化验导出名称", "导出", TestExport.class, "名称", response);
+    }
+
     /**
      * 开单项数据测试
      *

+ 9 - 1
src/main/java/com/diagbot/rule/GroupRule.java

@@ -42,7 +42,7 @@ public class GroupRule {
                                 "妊娠", type, billNeoMaxDTO.getType());
                         billMsgList.add(commonBillMsg);
                     }
-                    // 诊断里包含“妊娠”
+                    // 诊断里包含“妊娠” 或者 包含“孕几周”
                     List<Item> diag = wordCrfDTO.getDiag();
                     for (Item item : diag) {
                         if (item.getUniqueName().contains("妊娠")) {
@@ -50,6 +50,14 @@ public class GroupRule {
                                     billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
                                     item.getUniqueName(), type, billNeoMaxDTO.getType());
                             billMsgList.add(commonBillMsg);
+                        } else {
+                            String regex = "孕.{1,4}周.*"; // 孕xx周
+                            if (item.getUniqueName().matches(regex)) {
+                                BillMsg commonBillMsg = MsgUtil.getCommonBillMsg(
+                                        billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
+                                        item.getUniqueName(), type, billNeoMaxDTO.getType());
+                                billMsgList.add(commonBillMsg);
+                            }
                         }
                     }
                     break;

+ 23 - 0
src/main/java/com/diagbot/vo/TestExport.java

@@ -0,0 +1,23 @@
+package com.diagbot.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 测试导出
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+@Data
+public class TestExport implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Excel(name="名称", width = 40, orderNum = "1", isImportField = "true")
+    private String name;
+}

+ 9 - 0
src/main/java/com/diagbot/web/TestController.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -42,6 +43,14 @@ public class TestController {
         return RespDTO.onSuc(testFacade.importExcel(file, testLineVO));
     }
 
+    @ApiOperation(value = "导出[zhoutg]",
+            notes = "导出")
+    @PostMapping("/testExport")
+    public RespDTO<Map<String, Object>> testExport(HttpServletResponse response) {
+        testFacade.exportExcel(response);
+        return RespDTO.onSuc(null);
+    }
+
     @ApiOperation(value = "开单合理性【输血】测试API[zhoutg]",
             notes = "idNum:指定行测试<br>" +
                     "sheetIndex:sheet的下标,默认为0,表示第一个sheet")