Procházet zdrojové kódy

现病史中提取化验

kongwz před 4 roky
rodič
revize
86b45d9b0f

+ 1 - 1
src/main/java/com/diagbot/dto/WordCrfDTO.java

@@ -27,7 +27,7 @@ import java.util.List;
  */
 @Data
 public class WordCrfDTO {
-
+    private Long hospitalId;
     // 年龄
     private Integer age;
     // 性别(1:男,2:女)

+ 59 - 0
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -32,12 +32,15 @@ import java.util.stream.Collectors;
 public class CommonFacade {
     @Autowired
     CRFServiceClient crfServiceClient;
+    @Autowired
+    LisConfigFacade lisConfigFacade;
 
     //组装好的label
     public WordCrfDTO crf_process(SearchData searchData) {
 
         AIAnalyze aiAnalyze = new AIAnalyze(crfServiceClient);
         WordCrfDTO wordCrfDTO = new WordCrfDTO();
+        wordCrfDTO.setHospitalId(searchData.getHospitalId());
         wordCrfDTO.setAge(searchData.getAge());
         wordCrfDTO.setSex(searchData.getSex());
         if (ListUtil.isNotEmpty(searchData.getLis())) {
@@ -65,6 +68,9 @@ public class CommonFacade {
             wordCrfDTO.setDiag(searchData.getDiag());
         }
         aiAnalyze.aiProcess(searchData, wordCrfDTO);
+        List<Lis> lisList = processPresentLisPacs(wordCrfDTO);
+        wordCrfDTO.getLis().addAll(lisList);
+        wordCrfDTO.setLis(wordCrfDTO.getLis());
         return wordCrfDTO;
     }
 
@@ -268,5 +274,58 @@ public class CommonFacade {
         return pushVO;
     }
 
+    public List<Lis> processPresentLisPacs(WordCrfDTO wordCrfDTO){
+        PresentLabel presentLabel = wordCrfDTO.getPresentLabel();
+        List<com.diagbot.model.entity.Lis> lises = presentLabel.getLises();
+        List<Lis> lisList = new ArrayList<>();
+        if(ListUtil.isNotEmpty(lises)){
+            List<String> lisNames = lises.stream().map(x -> x.getBigItem().getName()).distinct().collect(Collectors.toList());
+            Map<String, Map<String, Map<String, Long>>> configMap = lisConfigFacade.getConfigMap(wordCrfDTO.getHospitalId(), lisNames, null);
+            if(configMap.size() > 0){
+                lises.stream().forEach(x ->{
+
+                    String bigName = x.getBigItem().getName();//大项名
+                    String detailName = x.getName();//小项名
+                    String value = x.getPd().getValue();
+                    String unit = x.getPd().getUnit();
+                    if(configMap.containsKey(bigName)){
+                        Map<String, Map<String, Long>> uniqueDetailMap = configMap.get(bigName);
+                        if(uniqueDetailMap.containsKey(detailName)){
+
+                            List<String> uniques = uniqueDetailMap.get(detailName).keySet().stream().collect(Collectors.toList());//所有的公表项
+                            if(ListUtil.isNotEmpty(uniques)){
+                                List<Lis> lisStream = uniques.stream().map(z -> {
+                                    Lis lis = new Lis();
+                                    lis.setDetailName(detailName);
+                                    lis.setName(bigName);
+                                    lis.setUniqueName(z);
+                                    lis.setValue(Double.parseDouble(value));
+                                    lis.setUnits(unit);
+                                    return lis;
+                                }).collect(Collectors.toList());
+                                lisList.addAll(lisStream);
+                            }
+
+                        }else {
+                            Lis lis = new Lis();
+                            lis.setUnits(unit);
+                            lis.setValue(Double.parseDouble(value));
+                            lis.setDetailName(detailName);
+                            lis.setName(bigName);
+                            lisList.add(lis);
+                        }
+                    }else {
+                        Lis lis = new Lis();
+                        lis.setUnits(unit);
+                        lis.setValue(Double.parseDouble(value));
+                        lis.setDetailName(detailName);
+                        lis.setName(bigName);
+                        lisList.add(lis);
+                    }
+                });
+            }
+        }
+        return lisList;
+    }
 }
 

+ 1 - 0
src/main/java/com/diagbot/facade/PushFacade.java

@@ -188,6 +188,7 @@ public class PushFacade {
                 TreatDTO treatDTO = new TreatDTO();
                 List<TreatDTO> collect = pushVO.getDiagVo().getDiags().stream().map(x -> {
                     treatDTO.setName(x.getName());
+                    treatDTO.setUniqueName(x.getName());
                     return treatDTO;
                 }).collect(Collectors.toList());
                 pushDTO.setGeneraTreat(collect);