|
@@ -0,0 +1,199 @@
|
|
|
+package com.diagbot.facade;
|
|
|
+
|
|
|
+import com.diagbot.entity.KlConcept;
|
|
|
+import com.diagbot.entity.KlConceptCommon;
|
|
|
+import com.diagbot.entity.KlDisease;
|
|
|
+import com.diagbot.entity.KlLibraryInfo;
|
|
|
+import com.diagbot.entity.node.ExportNode;
|
|
|
+import com.diagbot.repository.ExportNodeRepository;
|
|
|
+import com.diagbot.repository.ExportRelationRepository;
|
|
|
+import com.diagbot.service.KlConceptCommonService;
|
|
|
+import com.diagbot.service.KlConceptService;
|
|
|
+import com.diagbot.service.KlDiseaseService;
|
|
|
+import com.diagbot.service.KlLibraryInfoService;
|
|
|
+import com.diagbot.util.Cn2SpellUtil;
|
|
|
+import com.diagbot.util.EntityUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description:
|
|
|
+ * @author: gaodm
|
|
|
+ * @time: 2021/1/21 9:34
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class ExportFacade {
|
|
|
+ @Autowired
|
|
|
+ private ExportNodeRepository exportNodeRepository;
|
|
|
+ @Autowired
|
|
|
+ private ExportRelationRepository exportRelationRepository;
|
|
|
+ @Autowired
|
|
|
+ private KlConceptService klConceptService;
|
|
|
+ @Autowired
|
|
|
+ private KlLibraryInfoService klLibraryInfoService;
|
|
|
+ @Autowired
|
|
|
+ private KlConceptCommonService klConceptCommonService;
|
|
|
+ @Autowired
|
|
|
+ private KlDiseaseService klDiseaseService;
|
|
|
+
|
|
|
+ public Boolean gdbExport() {
|
|
|
+ //图谱数据节点处理
|
|
|
+ graphNodeDeal();
|
|
|
+ //图谱关系处理
|
|
|
+ graphRelationDeal();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void graphNodeDeal() {
|
|
|
+ //疾病处理
|
|
|
+ List<ExportNode> nodes = exportNodeRepository.getDisease();
|
|
|
+ import2MySql(nodes, 100);
|
|
|
+ //药品通用名
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getDrug();
|
|
|
+ import2MySql(nodes, 101);
|
|
|
+ //药品剂型
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getDrugForm();
|
|
|
+ import2MySql(nodes, 102);
|
|
|
+ //症状
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getSymptom();
|
|
|
+ import2MySql(nodes, 103);
|
|
|
+ //体格检查结果
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getVital();
|
|
|
+ import2MySql(nodes, 105);
|
|
|
+ //手术和操作
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getOeration();
|
|
|
+ import2MySql(nodes, 106);
|
|
|
+ //实验室检查套餐
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getLisPackage();
|
|
|
+ import2MySql(nodes, 107);
|
|
|
+ //实验室检查子项目
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getLisItem();
|
|
|
+ import2MySql(nodes, 108);
|
|
|
+ //辅助检查项目
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getPacs();
|
|
|
+ import2MySql(nodes, 109);
|
|
|
+ //辅助检查子项目
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getPacsSubItem();
|
|
|
+ import2MySql(nodes, 110);
|
|
|
+ //辅助检查描述
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getPacsDesc();
|
|
|
+ import2MySql(nodes, 111);
|
|
|
+ //辅助检查结果
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getPacsResult();
|
|
|
+ import2MySql(nodes, 112);
|
|
|
+ //输血类型
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getTransfusion();
|
|
|
+ import2MySql(nodes, 113);
|
|
|
+ //科室
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getDept();
|
|
|
+ import2MySql(nodes, 115);
|
|
|
+ //性别
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getSex();
|
|
|
+ import2MySql(nodes, 116);
|
|
|
+ //其他过敏原
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getAllergen();
|
|
|
+ import2MySql(nodes, 119);
|
|
|
+ //医疗器械及物品
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getApparatus();
|
|
|
+ import2MySql(nodes, 120);
|
|
|
+ //药品化学物质类别
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getDrugTypeA();
|
|
|
+ import2MySql(nodes, 301);
|
|
|
+ //药品治疗学类别
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getDrugTypeB();
|
|
|
+ import2MySql(nodes, 302);
|
|
|
+ //药品药理学类别
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getDrugTypeC();
|
|
|
+ import2MySql(nodes, 303);
|
|
|
+ //药品解剖学类别
|
|
|
+ nodes.clear();
|
|
|
+ nodes = exportNodeRepository.getDrugTypeD();
|
|
|
+ import2MySql(nodes, 304);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void import2MySql(List<ExportNode> nodes, Integer type) {
|
|
|
+ List<KlLibraryInfo> libraryInfos = new ArrayList<>();
|
|
|
+ List<String> names = new ArrayList<>();
|
|
|
+ for (ExportNode exportNode : nodes) {
|
|
|
+ if (!names.contains(exportNode.getName())) {
|
|
|
+ KlLibraryInfo klLibraryInfo = new KlLibraryInfo();
|
|
|
+ klLibraryInfo.setName(exportNode.getName());
|
|
|
+ klLibraryInfo.setIsConcept(1);
|
|
|
+ klLibraryInfo.setTypeId(type);
|
|
|
+ klLibraryInfo.setSpell(Cn2SpellUtil.converterToFirstSpell(exportNode.getName()));
|
|
|
+ libraryInfos.add(klLibraryInfo);
|
|
|
+ names.add(exportNode.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ klLibraryInfoService.saveBatch(libraryInfos);
|
|
|
+ List<KlConcept> klConcepts = new ArrayList<>();
|
|
|
+ for (KlLibraryInfo klLibraryInfo : libraryInfos) {
|
|
|
+ KlConcept klConcept = new KlConcept();
|
|
|
+ klConcept.setLibId(klLibraryInfo.getId());
|
|
|
+ klConcept.setLibName(klLibraryInfo.getName());
|
|
|
+ klConcept.setLibType(type);
|
|
|
+ klConcepts.add(klConcept);
|
|
|
+ }
|
|
|
+ klConceptService.saveBatch(klConcepts);
|
|
|
+ Map<Long, KlConcept> map = EntityUtil.makeEntityMap(klConcepts, "libId");
|
|
|
+ for (KlLibraryInfo klLibraryInfo : libraryInfos) {
|
|
|
+ klLibraryInfo.setConceptId(map.get(klLibraryInfo.getId()).getId());
|
|
|
+ }
|
|
|
+ klLibraryInfoService.updateBatchById(libraryInfos);
|
|
|
+ if (type.equals(100)) {
|
|
|
+ Map<String, ExportNode> nodeMap = EntityUtil.makeEntityMap(nodes, "name");
|
|
|
+ List<KlConceptCommon> klConceptCommons = new ArrayList<>();
|
|
|
+ List<KlDisease> klDiseases = new ArrayList<>();
|
|
|
+ for (KlConcept klConcept : klConcepts) {
|
|
|
+ KlConceptCommon klConceptCommon = new KlConceptCommon();
|
|
|
+ klConceptCommon.setConceptId(klConcept.getId());
|
|
|
+ KlDisease klDisease = new KlDisease();
|
|
|
+ klDisease.setConceptId(klConcept.getId());
|
|
|
+ ExportNode exportNode = nodeMap.get(klConcept.getLibName());
|
|
|
+ if (null != exportNode) {
|
|
|
+ klConceptCommon.setSexType(Integer.valueOf(exportNode.getSex()));
|
|
|
+ String[] age = exportNode.getAgeRange().split("-");
|
|
|
+ klConceptCommon.setMinAge(Double.valueOf(age[0]));
|
|
|
+ if (age.length == 1) {
|
|
|
+ klConceptCommon.setMaxAge(200.0d);
|
|
|
+ } else {
|
|
|
+ klConceptCommon.setMaxAge(Double.valueOf(age[1]));
|
|
|
+ }
|
|
|
+ klDisease.setIcd10Code(exportNode.getIcd10Code());
|
|
|
+ klConceptCommons.add(klConceptCommon);
|
|
|
+ klDiseases.add(klDisease);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ klConceptCommonService.saveBatch(klConceptCommons);
|
|
|
+ klDiseaseService.saveBatch(klDiseases);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void graphRelationDeal() {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|