|
@@ -62,14 +62,16 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
|
|
|
|
AIAnalyze aiAnalyze = new AIAnalyze(crfServiceClient);
|
|
AIAnalyze aiAnalyze = new AIAnalyze(crfServiceClient);
|
|
|
|
|
|
- RetrievalVO retrievalVO = new RetrievalVO();
|
|
|
|
- retrievalVO.setType(9);
|
|
|
|
- retrievalVO.setInputStr("");
|
|
|
|
- retrievalVO.setSize(10000);
|
|
|
|
- RetrievalDTO data = retrievalFacade.index(retrievalVO);
|
|
|
|
- List<String> symptomStand = data.getSymptomNames();
|
|
|
|
|
|
+ // 症状标准词
|
|
|
|
+ List<String> symptomStand = getStandWord(9, 10000).getSymptomNames();
|
|
|
|
+ // 诊断标准词
|
|
|
|
+ List<String> diseaseStand = getStandWord(4, 100000).getDiseaseNames().stream().map(r -> r.getName()).collect(Collectors.toList());
|
|
|
|
+ // 药品标准词
|
|
|
|
+ List<String> drugStand = getStandWord(5, 100000).getDrugNames().stream().map(r -> r.getName()).collect(Collectors.toList());
|
|
|
|
+ // 手术标准词
|
|
|
|
+ List<String> operateStand = getStandWord(6, 100000).getOperationNames().stream().map(r -> r.getName()).collect(Collectors.toList());
|
|
|
|
|
|
- //模型处理数据
|
|
|
|
|
|
+ // 模型处理数据
|
|
WordCrfDTO wordCrfDTO = new WordCrfDTO();
|
|
WordCrfDTO wordCrfDTO = new WordCrfDTO();
|
|
List<TestwordInfo> testwordInfoList = this.page(new Page<>(1, 100), new QueryWrapper<TestwordInfo>()
|
|
List<TestwordInfo> testwordInfoList = this.page(new Page<>(1, 100), new QueryWrapper<TestwordInfo>()
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
@@ -77,6 +79,8 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
.orderByAsc("id")).getRecords();
|
|
.orderByAsc("id")).getRecords();
|
|
|
|
|
|
while (ListUtil.isNotEmpty(testwordInfoList)) {
|
|
while (ListUtil.isNotEmpty(testwordInfoList)) {
|
|
|
|
+ List<TestwordRes> insertRes = new ArrayList<>(); // 结果集
|
|
|
|
+
|
|
Set<String> symptomList = new LinkedHashSet<>();
|
|
Set<String> symptomList = new LinkedHashSet<>();
|
|
Set<String> diseaseList = new LinkedHashSet<>();
|
|
Set<String> diseaseList = new LinkedHashSet<>();
|
|
Set<String> drugList = new LinkedHashSet<>();
|
|
Set<String> drugList = new LinkedHashSet<>();
|
|
@@ -88,34 +92,43 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
String type = bean.getType();
|
|
String type = bean.getType();
|
|
if ("主诉".equals(type) || "现病史".equals(type)) {
|
|
if ("主诉".equals(type) || "现病史".equals(type)) {
|
|
SearchData searchData = new SearchData();
|
|
SearchData searchData = new SearchData();
|
|
- searchData.setChief(text);
|
|
|
|
|
|
+ searchData.setSymptom(text);
|
|
aiAnalyze.aiProcess(searchData, wordCrfDTO);
|
|
aiAnalyze.aiProcess(searchData, wordCrfDTO);
|
|
- CoreUtil.addSet(symptomList, CoreUtil.getName(wordCrfDTO.getChiefLabel().getClinicals()));
|
|
|
|
|
|
+ // 临床表现
|
|
|
|
+ CoreUtil.addSet(symptomList, CoreUtil.getName(wordCrfDTO.getPresentLabel().getClinicals()));
|
|
|
|
+ // 诊断
|
|
|
|
+ CoreUtil.addSet(diseaseList, CoreUtil.getName(wordCrfDTO.getPresentLabel().getDiags()));
|
|
|
|
+ // 药品
|
|
|
|
+ CoreUtil.addSet(drugList, CoreUtil.getName(wordCrfDTO.getPresentLabel().getMedicines()));
|
|
|
|
+ // 手术
|
|
|
|
+ CoreUtil.addSet(operateList, CoreUtil.getName(wordCrfDTO.getPresentLabel().getOperations()));
|
|
|
|
+ // // 化验
|
|
|
|
+ // CoreUtil.addSet(drugList, CoreUtil.getName(wordCrfDTO.getPresentLabel().getDiags()));
|
|
|
|
+ // // 辅检
|
|
|
|
+ // CoreUtil.addSet(diseaseList, CoreUtil.getName(wordCrfDTO.getPresentLabel().getDiags()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if (symptomList != null && symptomList.size() > 0) {
|
|
|
|
- List<TestwordRes> testwordResList = testwordResFacade.list(new QueryWrapper<TestwordRes>()
|
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
- .in("word", symptomList)
|
|
|
|
- .eq("type", "症状")
|
|
|
|
- );
|
|
|
|
- // 剔除已存在
|
|
|
|
- removeWord(symptomList, testwordResList);
|
|
|
|
- // 剔除标准
|
|
|
|
- symptomList.removeAll(symptomStand);
|
|
|
|
- List<TestwordRes> insertSypmotom = stringConvertRes(symptomList, "症状");
|
|
|
|
- // 保存
|
|
|
|
- if (ListUtil.isNotEmpty(insertSypmotom)) {
|
|
|
|
- testwordResService.saveBatch(insertSypmotom);
|
|
|
|
- }
|
|
|
|
|
|
+ // 处理症状
|
|
|
|
+ dealBusiness(symptomList, "症状", symptomStand, insertRes);
|
|
|
|
+ // 处理诊断
|
|
|
|
+ dealBusiness(diseaseList, "诊断", diseaseStand, insertRes);
|
|
|
|
+ // 处理药品
|
|
|
|
+ dealBusiness(drugList, "药品", drugStand, insertRes);
|
|
|
|
+ // 处理手术
|
|
|
|
+ dealBusiness(operateList, "手术", operateStand, insertRes);
|
|
|
|
|
|
- for (TestwordInfo testwordInfo : testwordInfoList) {
|
|
|
|
- testwordInfo.setIsDeal(1);
|
|
|
|
- }
|
|
|
|
|
|
+ // 保存结果
|
|
|
|
+ if (ListUtil.isNotEmpty(insertRes)) {
|
|
|
|
+ testwordResService.saveBatch(insertRes);
|
|
|
|
+ }
|
|
|
|
+ // 更新处理标记
|
|
|
|
+ for (TestwordInfo testwordInfo : testwordInfoList) {
|
|
|
|
+ testwordInfo.setIsDeal(1);
|
|
}
|
|
}
|
|
testwordInfoService.saveOrUpdateBatch(testwordInfoList);
|
|
testwordInfoService.saveOrUpdateBatch(testwordInfoList);
|
|
|
|
|
|
|
|
+ // 获取下一批数据
|
|
testwordInfoList = this.page(new Page<>(1, 100), new QueryWrapper<TestwordInfo>()
|
|
testwordInfoList = this.page(new Page<>(1, 100), new QueryWrapper<TestwordInfo>()
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
.eq("is_deal", 0)
|
|
.eq("is_deal", 0)
|
|
@@ -127,6 +140,47 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
return res;
|
|
return res;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ public RetrievalDTO getStandWord(Integer type, Integer size) {
|
|
|
|
+ RetrievalVO retrievalVO = new RetrievalVO();
|
|
|
|
+ retrievalVO.setType(type);
|
|
|
|
+ retrievalVO.setInputStr("");
|
|
|
|
+ retrievalVO.setSize(size);
|
|
|
|
+ return retrievalFacade.index(retrievalVO);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 处理业务
|
|
|
|
+ * @param list
|
|
|
|
+ * @param type
|
|
|
|
+ * @param standList
|
|
|
|
+ */
|
|
|
|
+ public void dealBusiness(Set<String> list, String type, List<String> standList, List<TestwordRes> insertRes) {
|
|
|
|
+ if (list != null && list.size() > 0) {
|
|
|
|
+ List<TestwordRes> testwordResList = testwordResFacade.list(new QueryWrapper<TestwordRes>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .in("word", list)
|
|
|
|
+ .eq("type", type)
|
|
|
|
+ );
|
|
|
|
+ // 剔除数据库已存在
|
|
|
|
+ removeWord(list, testwordResList);
|
|
|
|
+ // 剔除标准
|
|
|
|
+ list.removeAll(standList);
|
|
|
|
+ // 转换成实体类
|
|
|
|
+ List<TestwordRes> insert = stringConvertRes(list, type);
|
|
|
|
+ // 保存
|
|
|
|
+ if (ListUtil.isNotEmpty(insert)) {
|
|
|
|
+ insertRes.addAll(insert);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * string转实体类
|
|
|
|
+ * @param stringList
|
|
|
|
+ * @param type
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
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<>();
|
|
for (String s : stringList) {
|
|
for (String s : stringList) {
|
|
@@ -138,6 +192,11 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
return res;
|
|
return res;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 剔除数据库已存在的数据
|
|
|
|
+ * @param stringList
|
|
|
|
+ * @param testwordResList
|
|
|
|
+ */
|
|
public void removeWord(Set<String> stringList, List<TestwordRes> testwordResList) {
|
|
public void removeWord(Set<String> stringList, List<TestwordRes> testwordResList) {
|
|
if (ListUtil.isEmpty(testwordResList)) {
|
|
if (ListUtil.isEmpty(testwordResList)) {
|
|
return ;
|
|
return ;
|