|
@@ -286,7 +286,8 @@ class CDSSHelper(GraphHelper):
|
|
symptom_same_edge = ['症状同义词', '症状同义词2.0']
|
|
symptom_same_edge = ['症状同义词', '症状同义词2.0']
|
|
department_edge = ['belongs_to','所属科室']
|
|
department_edge = ['belongs_to','所属科室']
|
|
allowed_links = symptom_edge+department_edge+symptom_same_edge
|
|
allowed_links = symptom_edge+department_edge+symptom_same_edge
|
|
- #allowed_links = symptom_edge + department_edge
|
|
|
|
|
|
+ # allowed_links = symptom_edge + department_edge
|
|
|
|
+
|
|
# 将输入的症状名称转换为节点ID
|
|
# 将输入的症状名称转换为节点ID
|
|
# 由于可能存在同名节点,转换后的节点ID数量可能大于输入的症状数量
|
|
# 由于可能存在同名节点,转换后的节点ID数量可能大于输入的症状数量
|
|
node_ids = []
|
|
node_ids = []
|
|
@@ -313,11 +314,25 @@ class CDSSHelper(GraphHelper):
|
|
logger.debug(f"node {node} not found")
|
|
logger.debug(f"node {node} not found")
|
|
node_ids = node_ids_filtered
|
|
node_ids = node_ids_filtered
|
|
|
|
|
|
|
|
+ # out_edges = self.graph.out_edges(disease, data=True)
|
|
|
|
+ # for edge in out_edges:
|
|
|
|
+ # src, dest, edge_data = edge
|
|
|
|
+ # if edge_data["type"] not in department_edge:
|
|
|
|
+ # continue
|
|
|
|
+ # dest_data = self.entity_data[self.entity_data.index == dest]
|
|
|
|
+ # if dest_data.empty:
|
|
|
|
+ # continue
|
|
|
|
+ # department_name = self.entity_data[self.entity_data.index == dest]['name'].tolist()[0]
|
|
|
|
+ # department_data.extend([department_name] * results[disease]["count"])
|
|
|
|
+
|
|
|
|
+
|
|
results = self.step1(node_ids,node_id_names, input, allowed_types, allowed_links,max_hops,DIESEASE)
|
|
results = self.step1(node_ids,node_id_names, input, allowed_types, allowed_links,max_hops,DIESEASE)
|
|
|
|
|
|
#self.validDisease(results, start_nodes)
|
|
#self.validDisease(results, start_nodes)
|
|
results = self.validDisease(results, start_nodes)
|
|
results = self.validDisease(results, start_nodes)
|
|
|
|
|
|
|
|
+ sorted_score_diags = sorted(results.items(), key=lambda x: x[1]["count"], reverse=True)[:10]
|
|
|
|
+
|
|
# 调用step2方法处理科室、检查和药品信息
|
|
# 调用step2方法处理科室、检查和药品信息
|
|
results = self.step2(results,department_edge)
|
|
results = self.step2(results,department_edge)
|
|
|
|
|
|
@@ -479,7 +494,7 @@ class CDSSHelper(GraphHelper):
|
|
# todo 目前是取入边,出边是不是也有用?
|
|
# todo 目前是取入边,出边是不是也有用?
|
|
for edge in self.graph.in_edges(temp_node, data=True):
|
|
for edge in self.graph.in_edges(temp_node, data=True):
|
|
src, dest, edge_data = edge
|
|
src, dest, edge_data = edge
|
|
- if src not in visited and depth + 1 < max_hops:
|
|
|
|
|
|
+ if src not in visited and depth + 1 < max_hops and edge_data['type'] in allowed_links:
|
|
# print(f"put into queue travel from {src} to {dest}")
|
|
# print(f"put into queue travel from {src} to {dest}")
|
|
weight = edge_data['weight']
|
|
weight = edge_data['weight']
|
|
try :
|
|
try :
|
|
@@ -495,6 +510,7 @@ class CDSSHelper(GraphHelper):
|
|
weight = 10
|
|
weight = 10
|
|
except Exception as e:
|
|
except Exception as e:
|
|
print(f'Error processing file {weight}: {str(e)}')
|
|
print(f'Error processing file {weight}: {str(e)}')
|
|
|
|
+
|
|
queue.append((src, depth + 1, path, int(weight), data))
|
|
queue.append((src, depth + 1, path, int(weight), data))
|
|
# else:
|
|
# else:
|
|
# print(f"skip travel from {src} to {dest}")
|
|
# print(f"skip travel from {src} to {dest}")
|
|
@@ -596,9 +612,8 @@ class CDSSHelper(GraphHelper):
|
|
else:
|
|
else:
|
|
edges = KGEdgeService(next(get_db())).get_edges_by_nodes(src_id=disease, category='所属科室')
|
|
edges = KGEdgeService(next(get_db())).get_edges_by_nodes(src_id=disease, category='所属科室')
|
|
#edges有可能为空,这里需要做一下处理
|
|
#edges有可能为空,这里需要做一下处理
|
|
- if len(edges) == 0:
|
|
|
|
- continue
|
|
|
|
- departments = [edge['dest_node']['name'] for edge in edges]
|
|
|
|
|
|
+ if len(edges) > 0:
|
|
|
|
+ departments = [edge['dest_node']['name'] for edge in edges]
|
|
# 处理查询结果
|
|
# 处理查询结果
|
|
for department in departments:
|
|
for department in departments:
|
|
total += 1
|
|
total += 1
|