kongwz 4 роки тому
батько
коміт
658a82b03e

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

@@ -6,16 +6,7 @@ import com.diagbot.client.CRFServiceClient;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.model.ai.process.EntityProcessClinic;
-import com.diagbot.model.ai.process.EntityProcessDiag;
-import com.diagbot.model.ai.process.EntityProcessFamily;
-import com.diagbot.model.ai.process.EntityProcessLis;
-import com.diagbot.model.ai.process.EntityProcessMarital;
-import com.diagbot.model.ai.process.EntityProcessMenses;
-import com.diagbot.model.ai.process.EntityProcessPacsNew;
-import com.diagbot.model.ai.process.EntityProcessPast;
-import com.diagbot.model.ai.process.EntityProcessPersonal;
-import com.diagbot.model.ai.process.EntityProcessVital;
+import com.diagbot.model.ai.process.*;
 import com.diagbot.model.entity.Diag;
 import com.diagbot.model.entity.GeneralDesc;
 import com.diagbot.model.entity.Lis;
@@ -311,6 +302,7 @@ public class BeHospitalizedAI extends ModelAI {
         EntityProcessClinic entityProcessClinic = new EntityProcessClinic();
         PresentLabel presentLabel = entityProcessClinic.extractEntity(aiOut);
 
+
         ChiefLabel chiefLabel = wordCrfDTO.getChiefLabel();
         chiefLabel.setClinicals(presentLabel.getClinicals());
         chiefLabel.setDiags(presentLabel.getDiags());
@@ -325,16 +317,27 @@ public class BeHospitalizedAI extends ModelAI {
         if (aiOut == null) {
             return;
         }
+
+
         //放置入inputinfo
         EntityProcessClinic entityProcessClinic = new EntityProcessClinic();
         PresentLabel presentLabel = entityProcessClinic.extractEntity(aiOut);
+
         presentLabel.setText(wordCrfDTO.getPresentLabel().getText());
         List<Lis> lis = loadLises(aiOut);
         presentLabel.setLises(lis);
+
+        EntityProcessPacs entityProcessPacs = new EntityProcessPacs();
+        PacsLabel pacsLabel = presentLabel.getPacsLabel();
+        if(pacsLabel == null){
+            pacsLabel = new PacsLabel();
+        }
+        entityProcessPacs.extractEntity(aiOut,pacsLabel);
         //服用药品
         List<Medicine> medicines = takeMedicine(presentLabel);
         presentLabel.setTakeMedicine(medicines);
         wordCrfDTO.setPresentLabel(presentLabel);
+
     }
 
     /**
@@ -691,7 +694,9 @@ public class BeHospitalizedAI extends ModelAI {
         if (aiOut == null) {
             return;
         }
-        EntityProcessPacsNew entityProcessPacsNew = new EntityProcessPacsNew();
+        EntityProcessPacs entityProcessPacs = new EntityProcessPacs();
+        entityProcessPacs.extractEntity(aiOut,pacsLabel);
+//        EntityProcessPacsNew entityProcessPacsNew = new EntityProcessPacsNew();
         // Map<String, PacsNew> map = entityProcessPacsNew.extractEntity(aiOut);
         //
         // List<PacsNew> pacsNewList = pacsLabel.getPacsNewList();

+ 12 - 28
src/main/java/com/diagbot/model/ai/process/EntityProcessClinic.java

@@ -4,23 +4,7 @@ package com.diagbot.model.ai.process;
 import com.alibaba.fastjson.JSONObject;
 import com.diagbot.model.ai.model.EntityEnum;
 import com.diagbot.model.ai.model.Lemma;
-import com.diagbot.model.entity.Aggravate;
-import com.diagbot.model.entity.BeHospitalizedWay;
-import com.diagbot.model.entity.BodyPart;
-import com.diagbot.model.entity.Cause;
-import com.diagbot.model.entity.Clinical;
-import com.diagbot.model.entity.Degree;
-import com.diagbot.model.entity.Diag;
-import com.diagbot.model.entity.General;
-import com.diagbot.model.entity.GeneralDesc;
-import com.diagbot.model.entity.Medicine;
-import com.diagbot.model.entity.Modification;
-import com.diagbot.model.entity.Operation;
-import com.diagbot.model.entity.PD;
-import com.diagbot.model.entity.Property;
-import com.diagbot.model.entity.Relief;
-import com.diagbot.model.entity.Treat;
-import com.diagbot.model.entity.Trend;
+import com.diagbot.model.entity.*;
 import com.diagbot.model.label.PresentLabel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -115,17 +99,17 @@ public class EntityProcessClinic extends EntityProcess {
 //            presentLabel.setPacses(pacses);
 
             // TODO 辅检
-            // EntityProcessPacsNew entityProcessPacsNew = new EntityProcessPacsNew();
-            // Map<String, PacsNew> pacsNewMap = entityProcessPacsNew.extractEntity(aiOut);
-            // List<PacsNew> collect = new ArrayList<>();
-            // if(pacsNewMap.size() > 0){
-            //     pacsNewMap.forEach((item,pacsNew)->{
-            //         pacsNew.setName(item);
-            //         pacsNew.setResult(presentLabel.getText());
-            //         collect.add(pacsNew);
-            //     });
-            // }
-            // presentLabel.setPacsNewList(collect);
+//             EntityProcessPacsNew entityProcessPacsNew = new EntityProcessPacsNew();
+//             Map<String, PacsNew> pacsNewMap = entityProcessPacsNew.extractEntity(aiOut);
+//             List<PacsNew> collect = new ArrayList<>();
+//             if(pacsNewMap.size() > 0){
+//                 pacsNewMap.forEach((item,pacsNew)->{
+//                     pacsNew.setName(item);
+//                     pacsNew.setResult(presentLabel.getText());
+//                     collect.add(pacsNew);
+//                 });
+//             }
+//             presentLabel.setPacsNewList(collect);
 
             //治疗
             List<Lemma> cureLemmas = createEntityTree(aiOut, EntityEnum.CURE.toString());

+ 58 - 88
src/main/java/com/diagbot/model/ai/process/EntityProcessPacs.java

@@ -1,114 +1,84 @@
 package com.diagbot.model.ai.process;
 
 import com.alibaba.fastjson.JSONObject;
+import com.diagbot.biz.push.entity.Item;
 import com.diagbot.model.ai.model.EntityEnum;
 import com.diagbot.model.ai.model.Lemma;
-import com.diagbot.model.entity.*;
-import org.apache.commons.lang3.StringUtils;
+import com.diagbot.model.entity.BodyPart;
+import com.diagbot.model.entity.Pacs;
+import com.diagbot.model.label.PacsLabel;
+import com.diagbot.util.ListUtil;
+import com.google.common.collect.Lists;
 
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 public class EntityProcessPacs extends EntityProcess {
 
-    public List<Pacs> extractEntity(JSONObject aiOut, Map<String, String> name_uniqueName) {
-        //辅检情况
-        List<Pacs> pacses = new ArrayList<>();
-        List<Lemma> pacsLemmas = createEntityTree(aiOut, EntityEnum.AUXILIARY_EXAMINATION.toString());
+    public void extractEntity(JSONObject aiOut, PacsLabel pacsLabel) {
+        // 获取描述和部位的关系
+        Map<String, List<BodyPart>> bodyMap = new LinkedHashMap<>();
+        List<Lemma> pacsLemmas = createEntityTree(aiOut, EntityEnum.AUXILIARY_DESCRIPT.toString());
         for (Lemma lemma : pacsLemmas) {
-            Pacs pacs = new Pacs();
-            if(StringUtils.isBlank(lemma.getText().trim())){
-                continue;
-            }
-            pacs.setName(lemma.getText());
-            if(name_uniqueName.containsKey(lemma.getText())){
-                pacs.setStandName(lemma.getText());
-            }
+            List<BodyPart> bodyPartList = new ArrayList<>();
             if (lemma.isHaveChildren()) {
-                List<BodyPart> bodyPartList = new ArrayList<>();
-                List<Diag> diseaseList = new ArrayList<>();
                 for (Lemma relationLemma : lemma.getRelationLemmas()) {
-                    if (relationLemma.getProperty().equals(EntityEnum.AUXILIARY_DESCRIPT.toString())) {
-                        pacs.setPacsValues(addPacsValue(relationLemma));
-                    } else if (relationLemma.getProperty().equals(EntityEnum.BODY.toString())) {
-                        bodyPartList.add(addBodyPart(relationLemma));
-//                        pacs.setBodyPart(addBodyPart(relationLemma));
-                    } else if(relationLemma.getProperty().equals(EntityEnum.DIEASE.toString())){
-                        diseaseList.add(addDiag(relationLemma));
-                    } else if (relationLemma.getProperty().equals(EntityEnum.OUTERCOURTYARD.toString())) {
-                        pacs.setOuterCourtyard(addOuterCourtyard(relationLemma));
+                    if (relationLemma.getProperty().equals(EntityEnum.BODY.toString())) {
+                        BodyPart bodyPart = new BodyPart();
+                        bodyPart.setName(relationLemma.getText());
+                        bodyPart.setStandName(relationLemma.getText());
+                        bodyPartList.add(bodyPart);
                     }
                 }
-                pacs.setBodyPartList(bodyPartList);
-                pacs.setDisease(diseaseList);
+                bodyMap.put(lemma.getText(), bodyPartList);
             }
-            pacses.add(pacs);
-        }
-        //辅检时间(不是辅检具体项目时间)
-        List<Lemma> pdLemmas = createEntityTree(aiOut, EntityEnum.TIME.toString());
-        for (Lemma lemma : pdLemmas) {
-            PD pd = new PD();
-            pd.setName(lemma.getText());
-            Pacs pacs = new Pacs();
-            pacs.setPd(pd);
-            pacses.add(pacs);
         }
-        return pacses;
-    }
 
-    /**
-     * 添加辅助检查描述
-     *
-     * @param relationLemma
-     * @return
-     */
-    private PacsValue addPacsValue(Lemma relationLemma) {
-        PacsValue pacsValue = new PacsValue();
-        pacsValue.setName(relationLemma.getText());
-        pacsValue.setStandName(relationLemma.getText());
-        return pacsValue;
-    }
-
-    /**
-     * 添加身体部位
-     *
-     * @param relationLemma
-     * @return
-     */
-    private BodyPart addBodyPart(Lemma relationLemma) {
-        BodyPart bodyPart = new BodyPart();
-        bodyPart.setName(relationLemma.getText());
-        bodyPart.setStandName(relationLemma.getText());
-        return bodyPart;
-    }
-
-    private Diag addDiag(Lemma relationLemma) {
-        Diag bodyPart = new Diag();
-        bodyPart.setName(relationLemma.getText());
-        bodyPart.setStandName(relationLemma.getText());
-        return bodyPart;
-    }
-
-    /**
-     * 添加外院
-     *
-     * @param relationLemma
-     * @return
-     */
-    private OuterCourtyard addOuterCourtyard(Lemma relationLemma) {
-        OuterCourtyard outerCourtyard = new OuterCourtyard();
-        outerCourtyard.setName(relationLemma.getText());
-        if (relationLemma.isHaveChildren()) {
-            outerCourtyard.setPd(findTime(relationLemma));
-            for (Lemma lemma : relationLemma.getRelationLemmas()) {
-                if (lemma.getProperty().equals(EntityEnum.AUXILIARY_DESCRIPT.toString())) {
-                    outerCourtyard.setPacsValue(addPacsValue(lemma));
-                    break;
+        //辅助检查
+        List<Lemma> pacsAll = createEntityTree(aiOut, EntityEnum.AUXILIARY_EXAMINATION.toString());
+        List<Pacs> disList = new ArrayList<>();
+        for (Lemma lemma : pacsAll) {
+            if (lemma.isHaveChildren()) {
+                for (Lemma relationLemma : lemma.getRelationLemmas()) {
+                    if (relationLemma.getProperty().equals(EntityEnum.DIEASE.toString())) {
+                        // 辅检诊断信息
+                        Pacs dis = new Pacs();
+                        dis.setName(relationLemma.getText());
+                        dis.setStandName(relationLemma.getText());
+                        disList.add(dis);
+                    }
                 }
             }
         }
-        return outerCourtyard;
+        //所有项目
+        List<Item> collect = Lists.newArrayList();
+        if(ListUtil.isNotEmpty(pacsAll)){
+                collect = pacsAll.stream().map(x -> {
+                Item item = new Item();
+                item.setName(x.getText());
+                item.setUniqueName(x.getText());
+                return item;
+            }).collect(Collectors.toList());
+        }
+        //描述和部位的关系
+        List<Pacs> pacsResults = Lists.newArrayList();
+        if(bodyMap != null && bodyMap.size() > 0){
+            bodyMap.forEach((x,y) -> {
+                Pacs pacs = new Pacs();
+                pacs.setName(x);
+                pacs.setStandName(x);
+                pacs.setBodyPartList(y);
+                pacsResults.add(pacs);
+            });
+        }
+
+        pacsLabel.setDisease(disList);
+        pacsLabel.setItem(collect);
+        pacsLabel.setPacsResults(pacsResults);
+
     }
 
 }