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