zhoutg 4 years atrás
parent
commit
8e590e0400

+ 50 - 16
src/main/java/com/diagbot/facade/TestwordInfoFacade.java

@@ -14,17 +14,20 @@ import com.diagbot.service.TestwordInfoService;
 import com.diagbot.service.TestwordResService;
 import com.diagbot.service.impl.TestwordInfoServiceImpl;
 import com.diagbot.util.CoreUtil;
+import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.RetrievalVO;
 import com.diagbot.vo.SearchData;
 import com.diagbot.vo.StandConvertCrfVO;
+import com.diagbot.vo.TestwordInfoVO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -59,7 +62,7 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
     int getWordBatch = 100; // 每批次读取的数据行数
     int standConverSize = 100000; // 标准词返回的数量
 
-    public Map getWord() {
+    public Map getWord(TestwordInfoVO testwordInfoVO) {
         Map<String, String> res = new LinkedHashMap<>();
         Long start = System.currentTimeMillis();
 
@@ -86,10 +89,17 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
 
         // 模型处理数据
         WordCrfDTO wordCrfDTO = new WordCrfDTO();
-        List<TestwordInfo> testwordInfoList = this.page(new Page<>(1, getWordBatch), new QueryWrapper<TestwordInfo>()
+        QueryWrapper queryWrapper = new QueryWrapper<TestwordInfo>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("is_deal", 0)
-                .orderByAsc("id")).getRecords();
+                .eq("is_deal", 0);
+        if (ListUtil.isNotEmpty(testwordInfoVO.getIdList())) {
+            queryWrapper.in("id", testwordInfoVO.getIdList());
+        }
+        if (ListUtil.isNotEmpty(testwordInfoVO.getTypeList())) {
+            queryWrapper.in("type", testwordInfoVO.getTypeList());
+        }
+        queryWrapper.orderByAsc("id");
+        List<TestwordInfo> testwordInfoList = this.page(new Page<>(1, getWordBatch), queryWrapper).getRecords();
 
         while (ListUtil.isNotEmpty(testwordInfoList)) {
             List<TestwordRes> insertRes = new ArrayList<>(); // 结果集
@@ -134,6 +144,12 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
                         // 手术
                         CoreUtil.addSet(operateList, CoreUtil.getName(wordCrfDTO.getPastLabel().getOperations()));
                         break;
+                    case "出院医嘱":
+                        searchData.setPasts(text);
+                        wordCrfDTO = commonFacade.crf_process(searchData);
+                        // 药品
+                        CoreUtil.addSet(drugList, CoreUtil.getName(wordCrfDTO.getPastLabel().getMedicines()));
+                        break;
                     case "专科体格检查":
                         searchData.setVital(text);
                         wordCrfDTO = commonFacade.crf_process(searchData);
@@ -142,13 +158,24 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
                         CoreUtil.addSet(vitalList, CoreUtil.getName(wordCrfDTO.getVitalLabel().getClinicals()));
                         break;
                     case "辅助检查":
+                        searchData.setSymptom(text);
+                        wordCrfDTO = commonFacade.crf_process(searchData);
+                        // 化验
+                        CoreUtil.addSet(lisList, CoreUtil.getName(wordCrfDTO.getLis()));
+                        CoreUtil.addSet(lisList, getDetail(wordCrfDTO.getLis()));
+                        // 辅检
+                        CoreUtil.addSet(pacsResList, CoreUtil.getName(wordCrfDTO.getPacsLabel().getRes()));
+                        break;
                     case "实验室检查":
-                    case "影像学检查":
                         searchData.setSymptom(text);
                         wordCrfDTO = commonFacade.crf_process(searchData);
                         // 化验
                         CoreUtil.addSet(lisList, CoreUtil.getName(wordCrfDTO.getLis()));
                         CoreUtil.addSet(lisList, getDetail(wordCrfDTO.getLis()));
+                        break;
+                    case "影像学检查":
+                        searchData.setSymptom(text);
+                        wordCrfDTO = commonFacade.crf_process(searchData);
                         // 辅检
                         CoreUtil.addSet(pacsResList, CoreUtil.getName(wordCrfDTO.getPacsLabel().getRes()));
                         break;
@@ -164,6 +191,12 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
                         // 诊断
                         CoreUtil.addSet(diseaseList, CoreUtil.getName(wordCrfDTO.getDiag()));
                         break;
+                    case "手术名称":
+                        searchData.setPasts(text);
+                        wordCrfDTO = commonFacade.crf_process(searchData);
+                        // 手术
+                        CoreUtil.addSet(operateList, CoreUtil.getName(wordCrfDTO.getPastLabel().getOperations()));
+                        break;
                 }
             }
 
@@ -188,20 +221,18 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
             }
             // 更新处理标记
             for (TestwordInfo testwordInfo : testwordInfoList) {
+                testwordInfo.setGmtModified(DateUtil.now());
                 testwordInfo.setIsDeal(1);
             }
             testwordInfoService.saveOrUpdateBatch(testwordInfoList);
 
             // 获取下一批数据
-            testwordInfoList = this.page(new Page<>(1, getWordBatch), new QueryWrapper<TestwordInfo>()
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("is_deal", 0)
-                    .orderByAsc("id")).getRecords();
+            testwordInfoList = this.page(new Page<>(1, getWordBatch), queryWrapper).getRecords();
         }
 
         long mid = System.currentTimeMillis();
         res.put("提词耗时", (mid - start) / 1000.0 + "秒");
-
+        // 提词后同义词转换
         wordConvert();
         long end = System.currentTimeMillis();
         res.put("同义词转换耗时", (end - mid) / 1000.0 + "秒");
@@ -251,10 +282,13 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
      */
     public List<TestwordRes> stringConvertRes(Set<String> stringList, String type) {
         List<TestwordRes> res = new ArrayList<>();
+        Date date = DateUtil.now();
         for (String s : stringList) {
             TestwordRes testwordRes = new TestwordRes();
             testwordRes.setWord(s);
             testwordRes.setType(type);
+            testwordRes.setGmtCreate(date);
+            testwordRes.setGmtModified(date);
             res.add(testwordRes);
         }
         return res;
@@ -277,10 +311,11 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
      * 同义词转换
      */
     public void wordConvert() {
-        List<TestwordRes> testwordInfoList = testwordResService.page(new Page<>(1, 20), new QueryWrapper<TestwordRes>()
+        QueryWrapper queryWrapper = new QueryWrapper<TestwordRes>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("is_deal", 0)
-                .orderByAsc("id")).getRecords();
+                .orderByAsc("id");
+        List<TestwordRes> testwordInfoList = testwordResService.page(new Page<>(1, 20), queryWrapper).getRecords();
 
         while(ListUtil.isNotEmpty(testwordInfoList)) {
             List<StandConvertCrfVO> convertCrfVOList = new ArrayList<>();
@@ -322,6 +357,7 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
                 }
             }
             StandConvertCrfBatchDTO standConvertCrfBatchDTO = testFacade.testStandConvertBatch(convertCrfVOList);
+            Date date = DateUtil.now();
             for (TestwordRes testwordRes : testwordInfoList) {
                 switch (testwordRes.getType()) {
                     case "症状":
@@ -349,13 +385,11 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
                         break;
                 }
                 testwordRes.setIsDeal(1);
+                testwordRes.setGmtModified(date);
             }
             testwordResService.saveOrUpdateBatch(testwordInfoList);
 
-            testwordInfoList = testwordResService.page(new Page<>(1, 20), new QueryWrapper<TestwordRes>()
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("is_deal", 0)
-                    .orderByAsc("id")).getRecords();
+            testwordInfoList = testwordResService.page(new Page<>(1, 20), queryWrapper).getRecords();
         }
     }
 

+ 0 - 28
src/main/java/com/diagbot/vo/TestwordInfoPageVO.java

@@ -1,28 +0,0 @@
-package com.diagbot.vo;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.Data;
-
-@Data
-public class TestwordInfoPageVO extends Page {
-    /**
-     * 主键
-     */
-    private Long id;
-
-    /**
-     * 是否删除,N:未删除,Y:删除
-     */
-    private String isDeleted;
-
-    /**
-     * 文本类型
-     */
-    private String type;
-
-    /**
-     * 是否处理,0:未使用,1:已处理
-     */
-    private Integer isDeal;
-
-}

+ 16 - 0
src/main/java/com/diagbot/vo/TestwordInfoVO.java

@@ -0,0 +1,16 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiParam;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TestwordInfoVO {
+
+    @ApiParam(defaultValue = "")
+    private List<Long> idList;
+
+    private List<String> typeList;
+
+}

+ 4 - 2
src/main/java/com/diagbot/web/TestwordInfoController.java

@@ -3,10 +3,12 @@ package com.diagbot.web;
 
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.TestwordInfoFacade;
+import com.diagbot.vo.TestwordInfoVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -31,8 +33,8 @@ public class TestwordInfoController {
     @ApiOperation(value = "提词API[zhoutg]",
             notes = "提词API")
     @PostMapping("/getword")
-    public RespDTO<Map<String, String>> getword() {
-        return RespDTO.onSuc(testwordInfoFacade.getWord());
+    public RespDTO<Map<String, String>> getword(@RequestBody TestwordInfoVO testwordInfoVO) {
+        return RespDTO.onSuc(testwordInfoFacade.getWord(testwordInfoVO));
     }
 
     @ApiOperation(value = "提词转换API[zhoutg]",