Browse Source

Merge remote-tracking branch 'origin/master'

zhoutg 4 years ago
parent
commit
b4150fcbc1
26 changed files with 633 additions and 72 deletions
  1. 3 1
      src/main/java/com/diagbot/CdssCoreApplication.java
  2. 47 0
      src/main/java/com/diagbot/config/OgmConfigure.java
  3. 37 0
      src/main/java/com/diagbot/dto/DrugBillNeoDTO.java
  4. 4 4
      src/main/java/com/diagbot/dto/LisBillNeoDTO.java
  5. 34 0
      src/main/java/com/diagbot/dto/PacsBillNeoDTO.java
  6. 19 0
      src/main/java/com/diagbot/entity/node/AgeMax.java
  7. 9 8
      src/main/java/com/diagbot/entity/node/AgeMin.java
  8. 20 0
      src/main/java/com/diagbot/entity/node/AllergicMed.java
  9. 19 0
      src/main/java/com/diagbot/entity/node/ClinicalFinding.java
  10. 20 0
      src/main/java/com/diagbot/entity/node/ConflictMed.java
  11. 20 0
      src/main/java/com/diagbot/entity/node/Disease.java
  12. 8 8
      src/main/java/com/diagbot/entity/node/Gender.java
  13. 20 0
      src/main/java/com/diagbot/entity/node/Group.java
  14. 20 0
      src/main/java/com/diagbot/entity/node/LIS.java
  15. 46 6
      src/main/java/com/diagbot/entity/node/Medicine.java
  16. 20 0
      src/main/java/com/diagbot/entity/node/Operation.java
  17. 20 0
      src/main/java/com/diagbot/entity/node/PACS.java
  18. 20 0
      src/main/java/com/diagbot/entity/node/Procedure.java
  19. 5 6
      src/main/java/com/diagbot/entity/node/base/BaseNode.java
  20. 18 1
      src/main/java/com/diagbot/facade/BillFacade.java
  21. 51 9
      src/main/java/com/diagbot/facade/NeoFacade.java
  22. 98 0
      src/main/java/com/diagbot/repository/MedicineNode.java
  23. 11 0
      src/main/java/com/diagbot/repository/MedicineRepository.java
  24. 4 3
      src/main/java/com/diagbot/vo/BillNeoVO.java
  25. 57 26
      src/main/resources/application-local.yml
  26. 3 0
      src/main/resources/ogm.properties

+ 3 - 1
src/main/java/com/diagbot/CdssCoreApplication.java

@@ -11,6 +11,7 @@ import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
 import org.springframework.cloud.netflix.hystrix.EnableHystrix;
 import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.Configuration;
 
 
 /**
@@ -18,8 +19,9 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
  * @author: zhoutg
  * @time: 2018/8/7 9:26
  */
-@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
         JmxAutoConfiguration.class, ThymeleafAutoConfiguration.class })
+@Configuration
 @EnableFeignClients({ "com.diagbot.client" })
 @EnableHystrix
 @EnableHystrixDashboard

+ 47 - 0
src/main/java/com/diagbot/config/OgmConfigure.java

@@ -0,0 +1,47 @@
+package com.diagbot.config;
+
+import org.neo4j.ogm.config.ClasspathConfigurationSource;
+import org.neo4j.ogm.config.ConfigurationSource;
+import org.neo4j.ogm.session.SessionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;
+import org.springframework.data.neo4j.transaction.Neo4jTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+
+/**
+ * @Description:
+ * @Author: Mark
+ * @time: 2020/07/31 14:20
+ */
+@Configuration
+@EnableAutoConfiguration
+@EnableNeo4jRepositories(basePackages = "com.diagbot.repository")
+@EnableTransactionManagement
+public class OgmConfigure {
+
+    @Autowired
+    private ApplicationContext applicationContext;
+
+
+    @Bean
+    public SessionFactory sessionFactory() {
+        return new SessionFactory(configuration(), "com.diagbot.entity");
+    }
+
+    @Bean
+    public org.neo4j.ogm.config.Configuration configuration() {
+        ConfigurationSource properties = new ClasspathConfigurationSource("ogm.properties");
+        org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration.Builder(properties).build();
+        return configuration;
+    }
+
+    @Bean
+    public Neo4jTransactionManager transactionManager() throws Exception {
+        return new Neo4jTransactionManager(sessionFactory());
+    }
+}

+ 37 - 0
src/main/java/com/diagbot/dto/DrugBillNeoDTO.java

@@ -2,6 +2,9 @@ package com.diagbot.dto;
 
 import lombok.Data;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @description: 药品开单合理性图谱数据
  * @author: Mark
@@ -9,5 +12,39 @@ import lombok.Data;
  */
 @Data
 public class DrugBillNeoDTO {
+    // 禁忌性别
+    private String gender;
+
+    // 年龄最小值
+    private Integer minage;
+
+    // 年龄最大值
+    private Integer maxage;
+
+    // 临床表现
+    private List<String> clinicfindings = new ArrayList<>();
+
+    // 禁忌手术
+    private List<String> operations = new ArrayList<>();
+
+    // 禁忌操作
+    private List<String> procedures = new ArrayList<>();
+
+    // 禁忌实验室检查
+    private List<String> lis = new ArrayList<>();
+
+    // 禁忌辅助检查
+    private List<String> PACS = new ArrayList<>();
+
+    // 禁忌过敏药品
+    private List<String> allergicmeds = new ArrayList<>();
+
+    // 禁忌疾病
+    private List<String> disease = new ArrayList<>();
+
+    // 禁用人群
+    private List<String> group = new ArrayList<>();
 
+    // 配伍禁忌
+    private List<String> conflictmeds = new ArrayList<>();
 }

+ 4 - 4
src/main/java/com/diagbot/dto/LisBillNeoDTO.java

@@ -15,16 +15,16 @@ public class LisBillNeoDTO {
     private String gender;
 
     // 年龄最小值
-    private int minage;
+    private Integer minage;
 
     // 年龄最大值
-    private int maxage;
+    private Integer maxage;
 
     // 临床表现
     private List<String> clinicfindings;
 
     // 服用药品
-    private List<String> meds;
+    private List<String> prescribe;
 
     // 禁忌过敏药品
     private List<String> allergmeds;
@@ -36,7 +36,7 @@ public class LisBillNeoDTO {
     private List<String> procedures;
 
     // 禁忌辅助检查
-    private List<String> PACS;
+    private List<String> pacs;
 
     // 禁忌疾病
     private List<String> disease;

+ 34 - 0
src/main/java/com/diagbot/dto/PacsBillNeoDTO.java

@@ -2,6 +2,8 @@ package com.diagbot.dto;
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @description: 辅检开单合理性图谱数据
  * @author: Mark
@@ -9,5 +11,37 @@ import lombok.Data;
  */
 @Data
 public class PacsBillNeoDTO {
+    // 禁忌性别
+    private String gender;
+
+    // 年龄最小值
+    private Integer minage;
+
+    // 年龄最大值
+    private Integer maxage;
+
+    // 临床表现
+    private List<String> clinicfindings;
+
+    // 服用药品
+    private List<String> prescribe;
+
+    // 禁忌过敏药品
+    private List<String> allergmeds;
+
+    // 禁忌手术
+    private List<String> operations;
+
+    // 禁忌操作
+    private List<String> procedures;
+
+    // 禁忌实验室检查
+    private List<String> lis;
+
+    // 禁忌疾病
+    private List<String> disease;
+
+    // 禁用人群
+    private List<String> group;
 
 }

+ 19 - 0
src/main/java/com/diagbot/entity/node/AgeMax.java

@@ -0,0 +1,19 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "年龄最大值")
+public class AgeMax extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌年龄最大值", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 9 - 8
src/main/java/com/diagbot/entity/node/AgeMin.java

@@ -1,20 +1,21 @@
 package com.diagbot.entity.node;
 
-import lombok.Getter;
-import lombok.Setter;
+import com.diagbot.model.ai.model.Relation;
+import lombok.Data;
 import com.diagbot.entity.node.base.BaseNode;
-import org.neo4j.ogm.annotation.Labels;
+import lombok.EqualsAndHashCode;
 import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
 
 import java.io.Serializable;
 import java.util.Set;
 
-@Getter
-@Setter
+//@Data
+//@EqualsAndHashCode(callSuper = false)
 @NodeEntity(label = "年龄最小值")
-public class AgeMin extends BaseNode implements Serializable {
+public class AgeMin extends BaseNode {
 
-    @Labels
-    private Set<String> labels;
+    @Relationship(type="药品通用名禁忌年龄最小值", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
 
 }

+ 20 - 0
src/main/java/com/diagbot/entity/node/AllergicMed.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.Labels;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "过敏药品")
+public class AllergicMed extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌过敏药品", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 19 - 0
src/main/java/com/diagbot/entity/node/ClinicalFinding.java

@@ -0,0 +1,19 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "临床表现")
+public class ClinicalFinding extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌临床表现", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 20 - 0
src/main/java/com/diagbot/entity/node/ConflictMed.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.Labels;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "配伍")
+public class ConflictMed extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌配伍", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 20 - 0
src/main/java/com/diagbot/entity/node/Disease.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.Labels;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "疾病")
+public class Disease extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌疾病", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 8 - 8
src/main/java/com/diagbot/entity/node/Gender.java

@@ -1,20 +1,20 @@
 package com.diagbot.entity.node;
 
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
 import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
 import org.neo4j.ogm.annotation.Labels;
 import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
 
 import java.io.Serializable;
 import java.util.Set;
 
-@Getter
-@Setter
+@Data
+//@EqualsAndHashCode(callSuper = false)
 @NodeEntity(label = "性别")
-public class Gender extends BaseNode implements Serializable {
-
-    @Labels
-    private Set<String> labels;
+public class Gender extends BaseNode  {
 
+    @Relationship(type="药品通用名禁忌性别", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
 }

+ 20 - 0
src/main/java/com/diagbot/entity/node/Group.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.Labels;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "人群")
+public class Group extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌人群", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 20 - 0
src/main/java/com/diagbot/entity/node/LIS.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.Labels;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "实验室检查")
+public class LIS extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌实验室检查", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 46 - 6
src/main/java/com/diagbot/entity/node/Medicine.java

@@ -1,20 +1,60 @@
 package com.diagbot.entity.node;
 
-import lombok.Getter;
-import lombok.Setter;
+import com.diagbot.entity.relationship.Medicine_AgeMin;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Data;
 import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
 import org.neo4j.ogm.annotation.Labels;
 import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
 
 import java.io.Serializable;
+import java.util.HashSet;
 import java.util.Set;
 
-@Getter
-@Setter
+@Data
+@EqualsAndHashCode(callSuper = false)
 @NodeEntity(label = "药品通用名")
 public class Medicine extends BaseNode implements Serializable {
 
-    @Labels
-    private Set<String> labels;
+    @Relationship(type = "药品通用名禁忌年龄最小值", direction = Relationship.OUTGOING)
+    private AgeMin ageMin;
+
+    @Relationship(type = "药品通用名禁忌年龄最大值", direction = Relationship.OUTGOING)
+    private AgeMax agemax;
+
+    @Relationship(type = "药品通用名禁忌性别", direction = Relationship.OUTGOING)
+    private Gender gender;
+
+
+    @Relationship(type = "药品通用名禁忌临床表现", direction = Relationship.OUTGOING)
+    private Set<ClinicalFinding> clinicalfindings = new HashSet<>();
+
+
+    @Relationship(type = "药品通用名禁忌实验室检查", direction = Relationship.OUTGOING)
+    private Set<LIS> lisset = new HashSet<>();
+
+    @Relationship(type = "药品通用名禁忌辅助检查", direction = Relationship.OUTGOING)
+    private Set<PACS> pacsset = new HashSet<>();
+
+    @Relationship(type = "药品通用名禁忌过敏药品", direction = Relationship.OUTGOING)
+    private Set<AllergicMed> allergicmeds = new HashSet<>();
+
+    @Relationship(type = "药品通用名禁忌手术", direction = Relationship.OUTGOING)
+    private Set<Operation> operations = new HashSet<>();
+
+    @Relationship(type = "药品通用名禁忌操作", direction = Relationship.OUTGOING)
+    private Set<Procedure> procedures = new HashSet<>();
+
+    @Relationship(type = "药品通用名禁忌疾病", direction = Relationship.OUTGOING)
+    private Set<Disease> diseases = new HashSet<>();
+
+    @Relationship(type = "药品通用名禁忌人群", direction = Relationship.OUTGOING)
+    private Set<Group> groups = new HashSet<>();
+
+    @Relationship(type = "药品通用名禁忌配伍", direction = Relationship.OUTGOING)
+    private Set<ConflictMed> conflictmeds = new HashSet<>();
 
 }
+

+ 20 - 0
src/main/java/com/diagbot/entity/node/Operation.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.Labels;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "手术")
+public class Operation extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌手术", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 20 - 0
src/main/java/com/diagbot/entity/node/PACS.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.Labels;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "辅助检查")
+public class PACS extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌辅助检查", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 20 - 0
src/main/java/com/diagbot/entity/node/Procedure.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.node;
+
+import lombok.Data;
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import org.neo4j.ogm.annotation.Labels;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.Set;
+
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "操作")
+public class Procedure extends BaseNode  {
+
+    @Relationship(type="药品通用名禁忌操作", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

+ 5 - 6
src/main/java/com/diagbot/entity/node/base/BaseNode.java

@@ -1,8 +1,7 @@
 package com.diagbot.entity.node.base;
 
 import jdk.nashorn.internal.objects.annotations.Property;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
 import org.neo4j.ogm.annotation.*;
 
 import java.io.Serializable;
@@ -15,16 +14,16 @@ import java.util.Set;
  * @author: MarkHuang
  * @time: 2020/3/23 15:30
  */
-@Getter
-@Setter
+@Data
 public class BaseNode implements Serializable {
     @Id
     @GeneratedValue
     private Long nodeId;
 
+    @Labels
+    private Set<String> labels;
+
     @Property(name = "name")
     private String name;
 
-//    @Labels
-//    private Set<String> labels;
 }

+ 18 - 1
src/main/java/com/diagbot/facade/BillFacade.java

@@ -9,6 +9,10 @@ import com.diagbot.vo.StandConvert;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import com.diagbot.biz.push.entity.Item;
+
+import java.util.List;
+
 import java.util.Map;
 
 /**
@@ -41,11 +45,24 @@ public class BillFacade {
         wordBillCrfDTO = commonFacade.dataTypeSet(wordBillCrfDTO, typeStand);
 
         // 图谱接口调用
-        BillNeoVO billNeoVO = new BillNeoVO();
+        BillNeoVO billNeoVO = fillBillNeo(indicationPushVO);
+
         BillNeoDTO billNeoDTO = neoFacade.getBillNeo(billNeoVO);
 
         // 规则开发 TODO
         neoFacade.getDrugCache();
         return null;
     }
+
+
+    public BillNeoVO fillBillNeo(IndicationPushVO indicationPushVO) {
+        BillNeoVO billNeoVO = new BillNeoVO();
+
+        List<Item> items = indicationPushVO.getDrug();
+        for (Item item : items) {
+            billNeoVO.getDrugList().add(item.getName());
+        }
+
+        return billNeoVO;
+    }
 }

+ 51 - 9
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -1,8 +1,14 @@
 package com.diagbot.facade;
 
 import com.diagbot.dto.BillNeoDTO;
+import com.diagbot.dto.DrugBillNeoDTO;
+import com.diagbot.entity.node.Medicine;
+import com.diagbot.entity.relationship.Medicine_AgeMin;
+import com.diagbot.repository.MedicineNode;
+import com.diagbot.repository.MedicineRepository;
 import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.StandConvert;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Component;
 
@@ -19,15 +25,8 @@ import java.util.Map;
 @Component
 public class NeoFacade {
 
-    /**
-     * 处理开单合理性图谱数据
-     * @param billNeoVO
-     * @return
-     */
-    public BillNeoDTO getBillNeo(BillNeoVO billNeoVO) {
-        // TODO 待处理业务
-        return null;
-    }
+    @Autowired
+    MedicineRepository medicineRepository;
 
     /**
      * 返回药品缓存信息
@@ -41,6 +40,49 @@ public class NeoFacade {
         return res;
     }
 
+
+
+    /**
+     * 处理开单合理性图谱数据
+     * @param billNeoVO
+     * @return
+     */
+    public BillNeoDTO getBillNeo(BillNeoVO billNeoVO) {
+
+        BillNeoDTO billNeoDTO = new BillNeoDTO();
+
+        billNeoDTO.setDrugBillNeoDTOList(getDrugBill(billNeoVO.getDrugList()));
+
+        return billNeoDTO;
+    }
+
+
+
+    /**
+     * 处理处方开单合理性
+     */
+    public List<DrugBillNeoDTO> getDrugBill(List<String> meds) {
+        List<DrugBillNeoDTO> drugBillNeoDTOS = new ArrayList<>();
+        DrugBillNeoDTO drugBillNeoDTO;
+
+        MedicineNode medicineNode = new MedicineNode();
+        Medicine medicine;
+
+        for (String medname : meds) {
+            medicine = medicineRepository.findByNameIs(medname);
+
+            if (medicine!=null) {
+//                System.out.println(medicine.toString());
+                drugBillNeoDTO = medicineNode.MedicinetoDrugDTO(medicine);
+                drugBillNeoDTOS.add(drugBillNeoDTO);
+            }
+            break;
+        }
+        return drugBillNeoDTOS;
+    }
+
+
+
     /**
      * 标准词转换
      *

+ 98 - 0
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -0,0 +1,98 @@
+package com.diagbot.repository;
+
+import com.diagbot.dto.DrugBillNeoDTO;
+import com.diagbot.entity.node.*;
+
+import java.util.Set;
+
+public class MedicineNode {
+
+    private String age_ch = "岁";
+
+    public DrugBillNeoDTO MedicinetoDrugDTO(Medicine medicine) {
+        DrugBillNeoDTO drugBillNeoDTO = new DrugBillNeoDTO();
+
+        AgeMin ageMin = medicine.getAgeMin();
+        String ageMin_val = (ageMin==null)?"":ageMin.getName();
+        ageMin_val = ageMin_val.replace(age_ch, "").trim();
+        drugBillNeoDTO.setMinage(Integer.parseInt(ageMin_val));
+
+
+        AgeMax ageMax = medicine.getAgemax();
+        String ageMax_val = (ageMax==null)?"":ageMax.getName();
+        ageMax_val = ageMax_val.replace(age_ch, "").trim();
+        drugBillNeoDTO.setMaxage(Integer.parseInt(ageMax_val));
+
+
+        Gender gender = medicine.getGender();
+        String gender_val = (gender==null)?"":gender.getName();
+        drugBillNeoDTO.setGender(gender_val);
+
+
+        Set<ClinicalFinding> clinicalfindings = medicine.getClinicalfindings();
+        for (ClinicalFinding clinicalFinding : clinicalfindings) {
+            String clinicalfinding_val = (clinicalFinding == null) ? "" : clinicalFinding.getName();
+            drugBillNeoDTO.getClinicfindings().add(clinicalfinding_val);
+        }
+
+
+        Set<LIS> lisset = medicine.getLisset();
+        for (LIS lis : lisset) {
+            String lis_val = (lis == null) ? "" : lis.getName();
+            drugBillNeoDTO.getLis().add(lis_val);
+        }
+
+
+        Set<PACS> pacsset = medicine.getPacsset();
+        for (PACS pacs : pacsset) {
+            String pacs_val = (pacs == null) ? "" : pacs.getName();
+            drugBillNeoDTO.getPACS().add(pacs_val);
+        }
+
+
+        Set<AllergicMed> allergicmeds = medicine.getAllergicmeds();
+        for (AllergicMed allergicmed: allergicmeds) {
+            String allergicmed_val = (allergicmed == null) ? "" : allergicmed.getName();
+            drugBillNeoDTO.getAllergicmeds().add(allergicmed_val);
+        }
+
+
+        Set<Operation> operations = medicine.getOperations();
+        for (Operation operation : operations) {
+            String operation_val = (operation == null) ? "" : operation.getName();
+            drugBillNeoDTO.getOperations().add(operation_val);
+        }
+
+
+        Set<Procedure> procedures = medicine.getProcedures();
+        for (Procedure procedure : procedures) {
+            String procedure_val = (procedure == null) ? "" : procedure.getName();
+            drugBillNeoDTO.getProcedures().add(procedure_val);
+        }
+
+
+        Set<Disease> diseases = medicine.getDiseases();
+        for (Disease disease : diseases) {
+            String disease_val = (disease == null) ? "" : disease.getName();
+            drugBillNeoDTO.getDisease().add(disease_val);
+        }
+
+
+        Set<Group> groups = medicine.getGroups();
+        for (Group group : groups) {
+            String group_val = (group == null) ? "" : group.getName();
+            drugBillNeoDTO.getGroup().add(group_val);
+        }
+
+
+        Set<ConflictMed> conflictmeds = medicine.getConflictmeds();
+        for (ConflictMed conflictMed : conflictmeds) {
+            String conflict_val = (conflictMed == null) ? "" : conflictMed.getName();
+            drugBillNeoDTO.getConflictmeds().add(conflict_val);
+        }
+
+
+        return drugBillNeoDTO;
+    }
+}
+

+ 11 - 0
src/main/java/com/diagbot/repository/MedicineRepository.java

@@ -0,0 +1,11 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.Medicine;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+
+public interface MedicineRepository extends Neo4jRepository<Medicine, Long> {
+
+    Medicine findByNameIs(String name);
+}
+

+ 4 - 3
src/main/java/com/diagbot/vo/BillNeoVO.java

@@ -2,17 +2,18 @@ package com.diagbot.vo;
 
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
 public class BillNeoVO {
 
     // 化验入参
-    private List<String> lisList;
+    private List<String> lisList = new ArrayList<>();
 
     // 辅检入参
-    private List<String> pacsList;
+    private List<String> pacsList = new ArrayList<>();
 
     // 药品入参
-    private List<String> drugList;
+    private List<String> drugList = new ArrayList<>();
 }

+ 57 - 26
src/main/resources/application-local.yml

@@ -34,34 +34,65 @@ feign:
     max-connections: 1000 # 默认值
     max-connections-per-route: 250 # 默认值
 
-# 驱动配置信息
+
+
 spring:
+  # 驱动配置信息
   datasource:
-    dynamic:
-      primary: neo4j
-      # 数据库配置
-      datasource:
-        neo4j:
-          driver-class-name: org.neo4j.jdbc.Driver
-          url: jdbc:neo4j:http://192.168.3.150:7478
-          username: neo4j
-          password: root
-          #定义初始连接数
-          initialSize: 0
-          #定义最大连接数
-          maxActive: 20
-          #定义最大空闲
-          maxIdle: 20
-          #定义最小空闲
-          minIdle: 1
-          #定义最长等待时间
-          maxWait: 60000
-        mysql:
-          driver-class-name: com.mysql.cj.jdbc.Driver
-          platform: mysql
-          url: jdbc:mysql://192.168.2.236:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
-          username: root
-          password: lantone
+    druid:
+      driver-class-name: com.mysql.cj.jdbc.Driver
+      platform: mysql
+      url: jdbc:mysql://192.168.2.236:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+      # 连接池的配置信息
+      #定义初始连接数
+      initialSize: 5
+      #定义最大连接数
+      maxActive: 20
+      #定义最大空闲
+      maxIdle: 20
+      #定义最小空闲
+      minIdle: 1
+      #定义最长等待时间
+      maxWait: 60000
+
+  #      uri: bolt://192.168.3.150:7690
+  #    driver-class-name: org.neo4j.jdbc.Driver
+  #    url: jdbc:neo4j:http://192.168.3.150:7478
+  #    username: neo4j
+  #    password: root
+#spring:
+#  datasource:
+#    dynamic:
+#      primary: neo4j
+#      # 数据库配置
+#      datasource:
+#        neo4j:
+#          driver: org.neo4j.ogm.drivers.http.driver.HttpDriver
+#          uri: http://192.168.3.150:7478
+##          driver-class-name: org.neo4j.jdbc.Driver
+##          url: jdbc:neo4j:http://192.168.3.150:7478
+#          username: neo4j
+#          password: root
+#          # 连接池的配置信息
+#          #定义初始连接数
+#          initialSize: 5
+#          #定义最大连接数
+#          maxActive: 20
+#          #定义最大空闲
+#          maxIdle: 20
+#          #定义最小空闲
+#          minIdle: 1
+#          #定义最长等待时间
+#          maxWait: 60000
+#        mysql:
+#          driver-class-name: com.mysql.cj.jdbc.Driver
+#          platform: mysql
+#          url: jdbc:mysql://192.168.2.236:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+#          username: root
+#          password: lantone
+#
 
   #redis
   redis:

+ 3 - 0
src/main/resources/ogm.properties

@@ -0,0 +1,3 @@
+URI=http://192.168.3.150:7478
+username=neo4j
+password=root