瀏覽代碼

处理高危的药品和手术信息

MarkHuang 4 年之前
父節點
當前提交
4af8c39b9c

+ 11 - 23
src/main/java/com/diagbot/facade/HighRiskFacade.java

@@ -9,6 +9,7 @@ import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.process.HighRiskProcess;
 import com.diagbot.process.HighRiskProcess;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.BillNeoVO;
+import com.diagbot.vo.HighRiskNeoVO;
 import com.diagbot.vo.IndicationPushVO;
 import com.diagbot.vo.IndicationPushVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
@@ -38,10 +39,10 @@ public class HighRiskFacade {
      */
      */
     public void highRiskFac(IndicationPushVO indicationPushVO, WordCrfDTO wordCrfDTO, IndicationDTO res) {
     public void highRiskFac(IndicationPushVO indicationPushVO, WordCrfDTO wordCrfDTO, IndicationDTO res) {
         // 高风险图谱接口调用
         // 高风险图谱接口调用
-        // BillNeoVO billNeoVO = fillBillNeo(wordCrfDTO);
-        // List<BillNeoDTO> billNeoDTOList = neoFacade.getBillNeo(billNeoVO);
+        HighRiskNeoVO highRiskNeoVO = fillHighRiskNeo(wordCrfDTO);
+        List<HighRiskNeoDTO> highRiskNeoDTOList = neoFacade.getHighRiskNeo(highRiskNeoVO);
         // TODO 测试数据开始
         // TODO 测试数据开始
-        List<HighRiskNeoDTO> highRiskNeoDTOList = new ArrayList<>();
+//        List<HighRiskNeoDTO> highRiskNeoDTOList = new ArrayList<>();
         HighRiskNeoDTO highRiskNeoDTO = new HighRiskNeoDTO();
         HighRiskNeoDTO highRiskNeoDTO = new HighRiskNeoDTO();
         highRiskNeoDTO.setName("安眠药");
         highRiskNeoDTO.setName("安眠药");
         highRiskNeoDTO.setStandname("安眠药");
         highRiskNeoDTO.setStandname("安眠药");
@@ -61,35 +62,22 @@ public class HighRiskFacade {
     }
     }
 
 
 
 
-    public BillNeoVO fillBillNeo(WordCrfDTO wordCrfDTO) {
-        BillNeoVO billNeoVO = new BillNeoVO();
+    public HighRiskNeoVO fillHighRiskNeo(WordCrfDTO wordCrfDTO) {
+        HighRiskNeoVO highRiskNeoVO = new HighRiskNeoVO();
 
 
         List<Item> items = wordCrfDTO.getDrugOrder();
         List<Item> items = wordCrfDTO.getDrugOrder();
 
 
         for (Item item : items) {
         for (Item item : items) {
-            billNeoVO.getDrugList().put(item.getName(), item.getUniqueName());
+            highRiskNeoVO.getDrugList().put(item.getName(), item.getUniqueName());
         }
         }
 
 
-        List<Pacs> pacslist = wordCrfDTO.getPacsOrder();
-        for (Pacs pacs : pacslist) {
-            billNeoVO.getPacsList().put(pacs.getName(), pacs.getUniqueName());
-        }
+        items = wordCrfDTO.getOperationOrder();
 
 
-        List<Lis> lislist = wordCrfDTO.getLisOrder();
-        for (Lis lis : lislist) {
-            if (StringUtil.isBlank(lis.getDetailName())) {
-                billNeoVO.getLisList().put(lis.getName(), lis.getUniqueName());
-            }
-            else {
-                billNeoVO.getLisDetailList().put(lis.getDetailName(), lis.getUniqueName());
-            }
+        for (Item item : items) {
+            highRiskNeoVO.getOperationList().put(item.getName(), item.getUniqueName());
         }
         }
 
 
-        List<Item> diags = wordCrfDTO.getDiagOrder();
-        for (Item item : diags) {
-            billNeoVO.getDiagList().put(item.getName(), item.getUniqueName());
-        }
 
 
-        return billNeoVO;
+        return highRiskNeoVO;
     }
     }
 }
 }

+ 47 - 20
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -3,10 +3,7 @@ package com.diagbot.facade;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
-import com.diagbot.dto.BillNeoDTO;
-import com.diagbot.dto.PushDTO;
-import com.diagbot.dto.StandConvertCrfBatchDTO;
-import com.diagbot.dto.StandConvertCrfDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.node.Disease;
 import com.diagbot.entity.node.Disease;
 import com.diagbot.entity.node.Medicine_Code;
 import com.diagbot.entity.node.Medicine_Code;
 import com.diagbot.entity.node.OralMedicine;
 import com.diagbot.entity.node.OralMedicine;
@@ -14,24 +11,11 @@ import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.CommonException;
 import com.diagbot.model.ai.ModelAI;
 import com.diagbot.model.ai.ModelAI;
-import com.diagbot.repository.DiseaseNode;
-import com.diagbot.repository.DiseaseRepository;
-import com.diagbot.repository.LisNode;
-import com.diagbot.repository.LisPackNode;
-import com.diagbot.repository.LisPackRepository;
-import com.diagbot.repository.LisRepository;
-import com.diagbot.repository.MedicineCodeRepository;
-import com.diagbot.repository.MedicineNode;
-import com.diagbot.repository.MedicineRepository;
-import com.diagbot.repository.PACSNode;
-import com.diagbot.repository.PacsRepository;
+import com.diagbot.repository.*;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.vo.BillNeoVO;
-import com.diagbot.vo.PushNeoVO;
-import com.diagbot.vo.StandConvert;
-import com.diagbot.vo.StandConvertCrfVO;
+import com.diagbot.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
@@ -63,6 +47,8 @@ public class NeoFacade {
     @Autowired
     @Autowired
     DiseaseRepository diseaseRepository;
     DiseaseRepository diseaseRepository;
     @Autowired
     @Autowired
+    OperationRepository operationRepository;
+    @Autowired
     MedicineCodeRepository medicineCodeRepository;
     MedicineCodeRepository medicineCodeRepository;
     @Autowired
     @Autowired
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
@@ -144,7 +130,7 @@ public class NeoFacade {
         List<BillNeoDTO> billNeoDTOs = new ArrayList<>();
         List<BillNeoDTO> billNeoDTOs = new ArrayList<>();
 
 
         billNeoDTOs.addAll(getDrugBill(billNeoVO.getDrugList()));
         billNeoDTOs.addAll(getDrugBill(billNeoVO.getDrugList()));
-        // billNeoDTOs.addAll(getPacsBill(billNeoVO.getPacsList()));
+        billNeoDTOs.addAll(getPacsBill(billNeoVO.getPacsList()));
         billNeoDTOs.addAll(getLisDetailBill(billNeoVO.getLisDetailList()));
         billNeoDTOs.addAll(getLisDetailBill(billNeoVO.getLisDetailList()));
         billNeoDTOs.addAll(getLisBill(billNeoVO.getLisList()));
         billNeoDTOs.addAll(getLisBill(billNeoVO.getLisList()));
 
 
@@ -153,6 +139,21 @@ public class NeoFacade {
 
 
 
 
 
 
+    /**
+     * 处理高危项目图谱数据
+     * @param highRiskNeoVO
+     * @return
+     */
+    public List<HighRiskNeoDTO> getHighRiskNeo(HighRiskNeoVO highRiskNeoVO) {
+        List<HighRiskNeoDTO> highRiskNeoDTOS = new ArrayList<>();
+
+        highRiskNeoDTOS.addAll(getHighRiskDrugList(highRiskNeoVO.getDrugList()));
+        highRiskNeoDTOS.addAll(getHighRiskOperationList(highRiskNeoVO.getOperationList()));
+        return highRiskNeoDTOS;
+    }
+
+
+
     /**
     /**
      * 处理处方开单合理性
      * 处理处方开单合理性
      */
      */
@@ -226,6 +227,32 @@ public class NeoFacade {
     }
     }
 
 
 
 
+    /**
+     * 处理高危药品数据
+     * @param drugs
+     * @return
+     */
+    public List<HighRiskNeoDTO> getHighRiskDrugList(Map<String, String> drugs) {
+        MedicineNode medicineNode = new MedicineNode();
+        List<HighRiskNeoDTO> highRiskNeoDTOS = medicineNode.getHighRiskDrug(drugs, medicineRepository);
+
+        return highRiskNeoDTOS;
+    }
+
+
+    /**
+     * 处理高危手术和操作数据
+     * @param operations
+     * @return
+     */
+    public List<HighRiskNeoDTO> getHighRiskOperationList(Map<String, String> operations) {
+        OperationNode operationNode = new OperationNode();
+        List<HighRiskNeoDTO> highRiskNeoDTOS = operationNode.getHighRiskOperation(operations, operationRepository);
+
+        return highRiskNeoDTOS;
+    }
+
+
     /**
     /**
      * 标准词转换
      * 标准词转换
      *
      *

+ 24 - 4
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -1,9 +1,6 @@
 package com.diagbot.repository;
 package com.diagbot.repository;
 
 
-import com.diagbot.dto.BillNeoDTO;
-import com.diagbot.dto.DrugBillNeoDTO;
-import com.diagbot.dto.DrugInfoDTO;
-import com.diagbot.dto.NodeNeoDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.node.*;
 import com.diagbot.entity.node.*;
 import com.diagbot.util.NeoUtil;
 import com.diagbot.util.NeoUtil;
 
 
@@ -181,5 +178,28 @@ public class MedicineNode {
         return medslist;
         return medslist;
     }
     }
 
 
+
+
+    /**
+     * 获取高危药品数据
+     */
+    public List<HighRiskNeoDTO> getHighRiskDrug(Map<String, String> drugsterm, MedicineRepository medicineRepository) {
+        List<HighRiskNeoDTO> highRiskNeoDTOS = new ArrayList<>();
+        HighRiskNeoDTO highRiskNeoDTO;
+        String drugname;
+        Medicine medicine;
+
+        for (String term : drugsterm.keySet()) {
+            highRiskNeoDTO = new HighRiskNeoDTO();
+
+            drugname = drugsterm.get(term);
+            highRiskNeoDTO.setName(term);
+            highRiskNeoDTO.setStandname(drugname);
+
+            medicine = medicineRepository.findByNameIs(drugname);
+        }
+
+        return highRiskNeoDTOS;
+    }
 }
 }
 
 

+ 26 - 0
src/main/java/com/diagbot/repository/OperationNode.java

@@ -1,11 +1,13 @@
 package com.diagbot.repository;
 package com.diagbot.repository;
 
 
 
 
+import com.diagbot.dto.HighRiskNeoDTO;
 import com.diagbot.dto.OperationInfoDTO;
 import com.diagbot.dto.OperationInfoDTO;
 import com.diagbot.entity.node.Operation;
 import com.diagbot.entity.node.Operation;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 public class OperationNode {
 public class OperationNode {
 
 
@@ -32,4 +34,28 @@ public class OperationNode {
         return opslist;
         return opslist;
     }
     }
 
 
+
+
+    /**
+     * 获取高危手术和操作数据
+     */
+    public List<HighRiskNeoDTO> getHighRiskOperation(Map<String, String> opsterm, OperationRepository operationRepository) {
+        List<HighRiskNeoDTO> highRiskNeoDTOS = new ArrayList<>();
+        HighRiskNeoDTO highRiskNeoDTO;
+        String opname;
+        Operation operation;
+
+        for (String term : opsterm.keySet()) {
+            highRiskNeoDTO = new HighRiskNeoDTO();
+
+            opname = opsterm.get(term);
+            highRiskNeoDTO.setName(term);
+            highRiskNeoDTO.setStandname(opname);
+
+            operation = operationRepository.findByNameIs(opname);
+        }
+
+        return highRiskNeoDTOS;
+    }
+
 }
 }

+ 1 - 1
src/main/java/com/diagbot/repository/PACSNode.java

@@ -122,7 +122,7 @@ public class PACSNode {
 
 
             pacsBillNeoDTO = new PacsBillNeoDTO();
             pacsBillNeoDTO = new PacsBillNeoDTO();
 
 
-            pacs = pacsRepository.findByNameIs(pacsname);
+            pacs = pacsRepository.findByNameIs(pacsname).get(0);
 
 
             if (pacs != null) {
             if (pacs != null) {
                 pacsBillNeoDTO = PacstoPACSDTO(pacs);
                 pacsBillNeoDTO = PacstoPACSDTO(pacs);

+ 1 - 1
src/main/java/com/diagbot/repository/PacsRepository.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 
 public interface PacsRepository extends Neo4jRepository<PACS, Long> {
 public interface PacsRepository extends Neo4jRepository<PACS, Long> {
 
 
-    PACS findByNameIs(String name);
+    List<PACS> findByNameIs(String name);
 
 
     List<PACS> findByNameLike(String name);
     List<PACS> findByNameLike(String name);
 }
 }

+ 16 - 0
src/main/java/com/diagbot/vo/HighRiskNeoVO.java

@@ -0,0 +1,16 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+public class HighRiskNeoVO {
+
+    // 药品入参
+    private Map<String, String> drugList = new HashMap<>();
+
+    // 手术和操作入参
+    private Map<String, String> operationList = new HashMap<>();
+}