Jelajahi Sumber

Merge branch 'master' into innerDevelop

zhoutg 4 tahun lalu
induk
melakukan
553562f605

+ 106 - 94
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -129,115 +129,96 @@ public class CommonFacade {
     public StandConvert dataTypeGet(WordCrfDTO wordCrfDTO) {
         StandConvert standConvert = new StandConvert();
 
-        //所有症状(主诉、现病史)
+        //所有症状(主诉、现病史)
         List<String> clinicalList = new ArrayList<>();
         ChiefLabel chiefLabel = wordCrfDTO.getChiefLabel();
-        clinicalList.addAll(CoreUtil.getPropertyList(chiefLabel.getClinicals()));
+        CoreUtil.addList(clinicalList, CoreUtil.getPropertyList(chiefLabel.getClinicals()));
         PresentLabel presentLabel = wordCrfDTO.getPresentLabel();
-        clinicalList.addAll(CoreUtil.getPropertyList(presentLabel.getClinicals()));
+        CoreUtil.addList(clinicalList, CoreUtil.getPropertyList(presentLabel.getClinicals()));
         standConvert.setClinicalList(clinicalList);
 
-        //所有的疾病(主诉、现病史,诊断,既往史,下的诊断)
+        // 【所有疾病】
         DiagLabel diagLabel = wordCrfDTO.getDiagLabel();
         PastLabel pastLabel = wordCrfDTO.getPastLabel();
         List<String> diagList = new ArrayList<>();
-        CoreUtil.addList(diagList, CoreUtil.getPropertyList(chiefLabel.getDiags())); // 主诉诊断
-        CoreUtil.addList(diagList, CoreUtil.getPropertyList(presentLabel.getDiags())); // 现病史诊断
-        CoreUtil.addList(diagList, CoreUtil.getPropertyList(diagLabel.getDiags())); // 文本诊断
-        CoreUtil.addList(diagList, CoreUtil.getPropertyList(pastLabel.getDiags())); // 既往史诊断
-        // 开单项诊断
-        diagList.addAll(wordCrfDTO.getDiagOrder().stream().filter(x -> StringUtils.isBlank(x.getUniqueName()))
-                .map(x -> x.getName()).collect(Collectors.toList()));
-        // 结构化诊断
-        diagList.addAll(wordCrfDTO.getDiag().stream().filter(x ->
-                StringUtils.isBlank(x.getUniqueName()))
-                .map(x -> x.getName()).collect(Collectors.toList()));
-        // 选中诊断
+        // 1、主诉诊断
+        CoreUtil.addList(diagList, CoreUtil.getPropertyList(chiefLabel.getDiags()));
+        // 2、现病史诊断
+        CoreUtil.addList(diagList, CoreUtil.getPropertyList(presentLabel.getDiags()));
+        // 3、文本诊断
+        CoreUtil.addList(diagList, CoreUtil.getPropertyList(diagLabel.getDiags()));
+        // 4、既往史诊断
+        CoreUtil.addList(diagList, CoreUtil.getPropertyList(pastLabel.getDiags()));
+        // 5、开单项诊断
+        CoreUtil.addList(diagList, CoreUtil.filterUniqueList(wordCrfDTO.getDiagOrder()));
+        // 6、结构化诊断
+        CoreUtil.addList(diagList, CoreUtil.filterUniqueList(wordCrfDTO.getDiag()));
+        // 7、选中诊断
         if (wordCrfDTO.getDiseaseName() != null && StringUtils.isBlank(wordCrfDTO.getDiseaseName().getUniqueName())) {
             diagList.add(wordCrfDTO.getDiseaseName().getName());
         }
         standConvert.setDiaglList(diagList);
 
-        //所有化验(结构化数据)
+        // 【所有化验】
         List<String> allLis = new ArrayList<>();
-        //普通化验——取明细
-        List<Lis> lis = wordCrfDTO.getLis();
-        if (ListUtil.isNotEmpty(lis)) {
-            List<String> lis_unique = lis.stream().filter(x -> StringUtils.isBlank(x.getUniqueName()))
-                    //                    .map(x -> x.getName() + x.getDetailName()).collect(Collectors.toList());
-                    .map(x -> x.getDetailName()).collect(Collectors.toList());
-            allLis.addAll(lis_unique);
-        }
-        //开单化验——取套餐
-        List<Lis> lisOrder = wordCrfDTO.getLisOrder();
-        if (ListUtil.isNotEmpty(lisOrder)) {
-            List<String> lis_unique = lisOrder.stream().filter(x -> StringUtils.isBlank(x.getUniqueName()))
-                    .map(x -> x.getName()).collect(Collectors.toList());
-            allLis.addAll(lis_unique);
-        }
+        // 1、普通化验——取明细
+        CoreUtil.addList(allLis, CoreUtil.filterUniqueList(wordCrfDTO.getLis(), "detailName"));
+        // 2、开单化验——取套餐
+        CoreUtil.addList(allLis, CoreUtil.filterUniqueList(wordCrfDTO.getLisOrder()));
         standConvert.setLisList(allLis);
 
-        //所有辅助项目(结构化数据)
+        // 【所有辅助项目】
         List<String> allPacs = new ArrayList<>();
-        List<Item> pacsList = wordCrfDTO.getPacsLabel().getItem();
-        if (ListUtil.isNotEmpty(pacsList)) {
-            List<String> pacss_unique = pacsList.stream().filter(x -> StringUtils.isBlank(x.getUniqueName()))
-                    .map(x -> x.getName()).collect(Collectors.toList());
-            allPacs.addAll(pacss_unique);
-        }
-        // List<PacsNew> pacsNews = wordCrfDTO.getPacsLabel().getPacsNewList();
-        // if (ListUtil.isNotEmpty(pacsNews)) {
-        //     List<String> pacss_unique = pacsNews.stream().filter(x -> StringUtils.isBlank(x.getUniqueName()))
-        //             .map(x -> x.getName()).collect(Collectors.toList());
-        //     allPacs.addAll(pacss_unique);
-        // }
-        allPacs.addAll(wordCrfDTO.getPacs().stream().filter(x -> StringUtils.isBlank(x.getUniqueName()))
-                .map(x -> x.getName()).collect(Collectors.toList()));
-        //开单检查
-        allPacs.addAll(wordCrfDTO.getPacsOrder().stream().filter(z -> StringUtils.isBlank(z.getUniqueName())).map(x -> x.getName()).collect(Collectors.toList()));
+        // 1、模型解析辅检项目
+        CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacsLabel().getItem()));
+        // 2、结构化辅检项目
+        CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacs()));
+        // 3、开单辅检项目
+        CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacsOrder()));
         standConvert.setPacsList(allPacs);
-        //所有药品(现病史、既往史)
+
+        // 【所有药品】
         List<String> drugList = new ArrayList<>();
-        //1、现病史中的药品
-        drugList.addAll(CoreUtil.getPropertyList(presentLabel.getMedicines()));
-        drugList.addAll(CoreUtil.getPropertyList(presentLabel.getTakeMedicine()));
-        //2、既往史(药物过敏)
-        drugList.addAll(CoreUtil.getPropertyList(pastLabel.getAllergyMedicines()));
-        //3、开单药品
-        drugList.addAll(wordCrfDTO.getDrugOrder().stream().filter(z -> StringUtils.isBlank(z.getUniqueName())).map(x -> x.getName()).collect(Collectors.toList()));
-        standConvert.setDrugList(drugList);
-        //4、医嘱药品
-        drugList.addAll(wordCrfDTO.getDrug().stream().filter(z -> StringUtils.isBlank(z.getUniqueName())).map(x -> x.getName()).collect(Collectors.toList()));
+        // 1、主诉药品
+        CoreUtil.addList(drugList, CoreUtil.getPropertyList(chiefLabel.getMedicines()));
+        // 2、现病史药品
+        CoreUtil.addList(drugList, CoreUtil.getPropertyList(presentLabel.getMedicines()));
+        // 3、既往史(药物过敏)
+        CoreUtil.addList(drugList, CoreUtil.getPropertyList(pastLabel.getAllergyMedicines()));
+        // 4、既往史(药物)
+        CoreUtil.addList(drugList, CoreUtil.getPropertyList(pastLabel.getMedicines()));
+        // 5、开单药品
+        CoreUtil.addList(drugList, CoreUtil.filterUniqueList(wordCrfDTO.getDrugOrder()));
+        // 6、结构化药品
+        CoreUtil.addList(drugList, CoreUtil.filterUniqueList(wordCrfDTO.getDrug()));
         standConvert.setDrugList(drugList);
 
-        //所有手术(现病史、既往史)
+        // 【所有手术】
         List<String> operationList = new ArrayList<>();
-        //1、现病史中的手术
-        operationList.addAll(CoreUtil.getPropertyList(presentLabel.getOperations()));
-        //2、既往史中的手术
-        operationList.addAll(CoreUtil.getPropertyList(pastLabel.getOperations()));
-        //3.开单手术
-        operationList.addAll(wordCrfDTO.getOperationOrder().stream().filter(z -> StringUtils.isBlank(z.getUniqueName())).map(x -> x.getName()).collect(Collectors.toList()));
-        standConvert.setOperationList(operationList);
-        //4.手术及操作
-        operationList.addAll(wordCrfDTO.getOperation().stream().filter(z -> StringUtils.isBlank(z.getUniqueName())).map(x -> x.getName()).collect(Collectors.toList()));
-        //5.选中的诊断
+        // 1、现病史手术
+        CoreUtil.addList(operationList, CoreUtil.getPropertyList(presentLabel.getOperations()));
+        // 2、既往史手术
+        CoreUtil.addList(operationList, CoreUtil.getPropertyList(pastLabel.getOperations()));
+        // 3、开单手术
+        CoreUtil.addList(operationList, CoreUtil.filterUniqueList(wordCrfDTO.getOperationOrder()));
+        // 4、结构化手术
+        CoreUtil.addList(operationList, CoreUtil.filterUniqueList(wordCrfDTO.getOperation()));
+        // 5、选中手术
         if (wordCrfDTO.getOperationName() != null && StringUtils.isBlank(wordCrfDTO.getOperationName().getUniqueName())) {
             operationList.add(wordCrfDTO.getOperationName().getName());
         }
         standConvert.setOperationList(operationList);
-        //所有体征
+
+        // 【所有体征】(临床表现、体征结果)
         List<String> vitalList = new ArrayList<>();
         VitalLabel vitalLabel = wordCrfDTO.getVitalLabel();
-        vitalList.addAll(CoreUtil.getPropertyList(vitalLabel.getVitals()));
-        vitalList.addAll(CoreUtil.getPropertyList(vitalLabel.getClinicals()));
+        CoreUtil.addList(vitalList, CoreUtil.getPropertyList(vitalLabel.getVitals()));
+        CoreUtil.addList(vitalList, CoreUtil.getPropertyList(vitalLabel.getClinicals()));
         standConvert.setVitalList(vitalList);
 
-        // 输血
+        // 输血
         List<String> transfusionList = new ArrayList<>();
-        if (ListUtil.isNotEmpty(wordCrfDTO.getTransfusionOrder())) {
-            transfusionList.addAll(wordCrfDTO.getTransfusionOrder().stream().filter(z -> StringUtils.isBlank(z.getUniqueName())).map(x -> x.getName()).collect(Collectors.toList()));
-        }
+        CoreUtil.addList(transfusionList, CoreUtil.filterUniqueList(wordCrfDTO.getTransfusionOrder()));
         standConvert.setTransfusionList(transfusionList);
 
         return standConvert;
@@ -253,40 +234,71 @@ public class CommonFacade {
         List<Item> pacsList = wordCrfDTO.getPacsLabel().getItem();
         VitalLabel vitalLabel = wordCrfDTO.getVitalLabel();
 
-        //症状回填
+        //症状回填
         CoreUtil.setPropertyList(chiefLabel.getClinicals(), map.get(StandConvertEnum.symptom.toString()));
         CoreUtil.setPropertyList(presentLabel.getClinicals(), map.get(StandConvertEnum.symptom.toString()));
-        //诊断回填
-        CoreUtil.setPropertyList(diagLabel.getDiags(), map.get(StandConvertEnum.disease.toString())); // 文本诊断
-        CoreUtil.setPropertyList(chiefLabel.getDiags(), map.get(StandConvertEnum.disease.toString())); // 主诉诊断
-        CoreUtil.setPropertyList(presentLabel.getDiags(), map.get(StandConvertEnum.disease.toString())); // 现病史诊断
-        CoreUtil.setPropertyList(pastLabel.getDiags(), map.get(StandConvertEnum.disease.toString())); // 既往史诊断
-        CoreUtil.setPropertyList(wordCrfDTO.getDiagOrder(), "name", "uniqueName", map.get(StandConvertEnum.disease.toString())); // 开单项诊断
-        CoreUtil.setPropertyList(wordCrfDTO.getDiag(), "name", "uniqueName", map.get(StandConvertEnum.disease.toString())); // 结构化诊断
-        CoreUtil.setPropertyList(wordCrfDTO.getDiseaseName(), "name", "uniqueName", map.get(StandConvertEnum.disease.toString())); // 选中诊断
-        //药品回填
+
+        // 【诊断回填】
+        // 1、主诉诊断
+        CoreUtil.setPropertyList(chiefLabel.getDiags(), map.get(StandConvertEnum.disease.toString()));
+        // 2、现病史诊断
+        CoreUtil.setPropertyList(presentLabel.getDiags(), map.get(StandConvertEnum.disease.toString()));
+        // 3、文本诊断
+        CoreUtil.setPropertyList(diagLabel.getDiags(), map.get(StandConvertEnum.disease.toString()));
+        // 4、既往史诊断
+        CoreUtil.setPropertyList(pastLabel.getDiags(), map.get(StandConvertEnum.disease.toString()));
+        // 5、开单项诊断
+        CoreUtil.setPropertyList(wordCrfDTO.getDiagOrder(), "name", "uniqueName", map.get(StandConvertEnum.disease.toString()));
+        // 6、结构化诊断
+        CoreUtil.setPropertyList(wordCrfDTO.getDiag(), "name", "uniqueName", map.get(StandConvertEnum.disease.toString()));
+        // 7、选中诊断
+        CoreUtil.setPropertyList(wordCrfDTO.getDiseaseName(), "name", "uniqueName", map.get(StandConvertEnum.disease.toString()));
+
+        // 【药品回填】
+        // 1、主诉药品
+        CoreUtil.setPropertyList(chiefLabel.getMedicines(), map.get(StandConvertEnum.drug.toString()));
+        // 2、现病史药品
         CoreUtil.setPropertyList(presentLabel.getMedicines(), map.get(StandConvertEnum.drug.toString()));
-        CoreUtil.setPropertyList(presentLabel.getTakeMedicine(), map.get(StandConvertEnum.drug.toString()));
+        // 3、既往史(药物过敏)
         CoreUtil.setPropertyList(pastLabel.getAllergyMedicines(), map.get(StandConvertEnum.drug.toString()));
+        // 4、既往史(药物)
+        CoreUtil.setPropertyList(pastLabel.getMedicines(), map.get(StandConvertEnum.drug.toString()));
+        // 5、开单药品
         CoreUtil.setPropertyList(wordCrfDTO.getDrugOrder(), "name", "uniqueName", map.get(StandConvertEnum.drug.toString()));
+        // 6、结构化药品
         CoreUtil.setPropertyList(wordCrfDTO.getDrug(), "name", "uniqueName", map.get(StandConvertEnum.drug.toString()));
-        //化验回填
+
+        // 【化验回填】
+        // 1、普通化验
         CoreUtil.setPropertyList(lis, "detailName", "uniqueName", map.get(StandConvertEnum.lis.toString()));
+        // 2、开单化验——取套餐
         CoreUtil.setPropertyList(wordCrfDTO.getLisOrder(), "name", "uniqueName", map.get(StandConvertEnum.lis.toString()));
-        //辅助检查回填
+
+        // 【辅助项目回填】
+        // 1、模型解析辅检项目
         CoreUtil.setPropertyList(pacsList, "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
+        // 2、结构化辅检项目
         CoreUtil.setPropertyList(wordCrfDTO.getPacs(), "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
+        // 3、开单辅检项目
         CoreUtil.setPropertyList(wordCrfDTO.getPacsOrder(), "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
-        //体征回填
+
+        // 【体征回填】
         CoreUtil.setPropertyList(vitalLabel.getVitals(), map.get(StandConvertEnum.vital.toString()));
         CoreUtil.setPropertyList(vitalLabel.getClinicals(), map.get(StandConvertEnum.vital.toString()));
-        //手术回填
+
+        // 【手术回填】
+        // 1、现病史手术
         CoreUtil.setPropertyList(presentLabel.getOperations(), map.get(StandConvertEnum.operation.toString()));
+        // 2、既往史手术
         CoreUtil.setPropertyList(pastLabel.getOperations(), map.get(StandConvertEnum.operation.toString()));
+        // 3、开单手术
         CoreUtil.setPropertyList(wordCrfDTO.getOperationOrder(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
+        // 4、结构化手术
         CoreUtil.setPropertyList(wordCrfDTO.getOperation(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
+        // 5、选中手术
         CoreUtil.setPropertyList(wordCrfDTO.getOperationName(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
-        //输血回填
+
+        //【输血回填】
         CoreUtil.setPropertyList(wordCrfDTO.getTransfusionOrder(), "name", "uniqueName", map.get(StandConvertEnum.transfusion.toString()));
     }
 

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

@@ -63,6 +63,7 @@ public class PushFacade {
         process.setDebug(debug);
 
         CoreUtil.getDebugStr(l1, "本次调用总计耗时", debug);
+        CoreUtil.getDebugObject("数据", debug, wordCrfDTO);
         return process;
     }
 

+ 2 - 2
src/main/java/com/diagbot/model/ai/BeHospitalizedAI.java

@@ -348,8 +348,8 @@ public class BeHospitalizedAI extends ModelAI {
         }
         entityProcessPacs.extractEntity(aiOut, pacsLabel,false);
         //服用药品
-        List<Medicine> medicines = takeMedicine(presentLabel);
-        presentLabel.setTakeMedicine(medicines);
+        // List<Medicine> medicines = takeMedicine(presentLabel);
+        // presentLabel.setTakeMedicine(medicines);
         wordCrfDTO.setPresentLabel(presentLabel);
 
     }

+ 1 - 1
src/main/java/com/diagbot/model/label/PresentLabel.java

@@ -41,7 +41,7 @@ public class PresentLabel extends GeneralLabel {
     //现病史中所有时间实体存入
     private List<PD> pds = new ArrayList<>();
     //现病史一般情况之后的服用药品
-    List<Medicine> takeMedicine = new ArrayList<>();
+    // List<Medicine> takeMedicine = new ArrayList<>();
     //体征内容
     private List<Vital> vitals = new ArrayList<>();
 

+ 1 - 1
src/main/java/com/diagbot/process/BillProcess.java

@@ -181,7 +181,7 @@ public class BillProcess {
             allergyDrug.add(operaData);
         }
         CoreUtil.addList(allergyAll, chiefLabel.getMedicines()); // 主诉药品
-        CoreUtil.addList(allergyAll,  presentLabel.getTakeMedicine()); // 现病史药品
+        CoreUtil.addList(allergyAll,  presentLabel.getMedicines()); // 现病史药品
         CoreUtil.addList(allergyAll, pastLabel.getMedicines());  // 既往史药品
         CoreUtil.addList(allergyAll, allergyDrug);  // 结构化药品
 

+ 43 - 3
src/main/java/com/diagbot/util/CoreUtil.java

@@ -19,6 +19,7 @@ import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @description:
@@ -850,9 +851,48 @@ public class CoreUtil {
         }
     }
 
+    /**
+     * 筛选对象列表中“uniqueName”字段为空的数据,返回targetProperty字段列表
+     *
+     * @param list
+     * @param <T>
+     * @return
+     */
+    public static <T> List<String> filterUniqueList(List<T> list, String targetProperty) {
+        if (ListUtil.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list.stream()
+                .filter(r -> StringUtil.isBlank((String)getFieldValue(r, "uniqueName")))
+                .map(r -> (String)getFieldValue(r, targetProperty))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 筛选对象列表中“uniqueName”字段为空的数据,返回“name”字段列表
+     *
+     * @param list
+     * @param <T>
+     * @return
+     */
+    public static <T> List<String> filterUniqueList(List<T> list) {
+        if (ListUtil.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list.stream()
+                .filter(r -> StringUtil.isBlank((String)getFieldValue(r, "uniqueName")))
+                .map(r -> (String)getFieldValue(r, "name"))
+                .collect(Collectors.toList());
+    }
+
     public static void main(String[] args) {
-        String ageStr = ".545458";
-        System.out.println(Double.parseDouble(ageStr));
-        System.out.println(isNumbers(ageStr));
+        // List<Item> list = new ArrayList<>();
+        // Item item = new Item();
+        // item.setUniqueName(null);
+        // item.setName("aaa");
+        // list.add(item);
+        // // list = null;
+        // List<String> res = getNoUniqueList(list);
+        // System.out.println(res);
     }
 }