|
@@ -161,12 +161,15 @@ async def get_symptom_diseases(
|
|
}"""
|
|
}"""
|
|
)
|
|
)
|
|
async def get_disease_symptoms(
|
|
async def get_disease_symptoms(
|
|
- request: DiseaseSymptomsRequest
|
|
|
|
|
|
+ disease_id: str = Query(...,
|
|
|
|
+ description="疾病ID,应为标准医学术语ID。该参数用于查询该疾病的所有症状及其严重程度权重。",
|
|
|
|
+ examples="D001",
|
|
|
|
+ min_length=1)
|
|
):
|
|
):
|
|
try:
|
|
try:
|
|
# 实现获取疾病症状的逻辑
|
|
# 实现获取疾病症状的逻辑
|
|
search = SearchBusiness()
|
|
search = SearchBusiness()
|
|
- results = search.get_disease_symptoms(request.disease_id)
|
|
|
|
|
|
+ results = search.get_disease_symptoms(disease_id)
|
|
return StandardResponse(success=True, data=results)
|
|
return StandardResponse(success=True, data=results)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
logger.error(f"获取疾病症状失败: {str(e)}")
|
|
logger.error(f"获取疾病症状失败: {str(e)}")
|
|
@@ -271,12 +274,18 @@ class SimilarConceptsRequest(BaseModel):
|
|
response_model=StandardResponse
|
|
response_model=StandardResponse
|
|
)
|
|
)
|
|
async def search_concept(
|
|
async def search_concept(
|
|
- request: ConceptSearchRequest
|
|
|
|
|
|
+ query: str = Query(...,
|
|
|
|
+ description="概念名称,应为标准医学术语。该参数用于搜索匹配的概念节点。",
|
|
|
|
+ examples="糖尿病",
|
|
|
|
+ min_length=1),
|
|
|
|
+ type: str = Query(None,
|
|
|
|
+ description="概念类型,可选参数。用于限定搜索的概念类型。",
|
|
|
|
+ examples="疾病")
|
|
):
|
|
):
|
|
try:
|
|
try:
|
|
# 实现搜索医学概念的逻辑
|
|
# 实现搜索医学概念的逻辑
|
|
search = SearchBusiness()
|
|
search = SearchBusiness()
|
|
- results = search.search_concept(name=request.query, type=request.type)
|
|
|
|
|
|
+ results = search.search_concept(name=query, type=type)
|
|
return StandardResponse(success=True, data=results)
|
|
return StandardResponse(success=True, data=results)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
logger.error(f"搜索医学概念失败: {str(e)}")
|
|
logger.error(f"搜索医学概念失败: {str(e)}")
|
|
@@ -309,12 +318,15 @@ async def search_concept(
|
|
response_model=StandardResponse
|
|
response_model=StandardResponse
|
|
)
|
|
)
|
|
async def get_relations(
|
|
async def get_relations(
|
|
- request: ConceptRelationsRequest
|
|
|
|
|
|
+ concept_id: str = Query(...,
|
|
|
|
+ description="概念ID,应为标准医学术语ID。该参数用于查询该概念的相关关系。",
|
|
|
|
+ examples="D001",
|
|
|
|
+ min_length=1)
|
|
):
|
|
):
|
|
try:
|
|
try:
|
|
# 实现获取概念关系的逻辑
|
|
# 实现获取概念关系的逻辑
|
|
search = SearchBusiness()
|
|
search = SearchBusiness()
|
|
- results = search.get_relations(src_id=request.concept_id)
|
|
|
|
|
|
+ results = search.get_relations(src_id=concept_id)
|
|
return StandardResponse(success=True, data=results)
|
|
return StandardResponse(success=True, data=results)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
logger.error(f"获取概念关系失败: {str(e)}")
|
|
logger.error(f"获取概念关系失败: {str(e)}")
|
|
@@ -346,12 +358,18 @@ async def get_relations(
|
|
}""",
|
|
}""",
|
|
)
|
|
)
|
|
async def get_similar_concepts(
|
|
async def get_similar_concepts(
|
|
- request: SimilarConceptsRequest
|
|
|
|
|
|
+ concept_id: str = Query(...,
|
|
|
|
+ description="概念ID,应为标准医学术语ID。该参数用于查询该概念的相似概念。",
|
|
|
|
+ examples="D001",
|
|
|
|
+ min_length=1),
|
|
|
|
+ top_k: int = Query(5,
|
|
|
|
+ description="返回相似概念的数量限制,默认为5。",
|
|
|
|
+ ge=1, le=20)
|
|
):
|
|
):
|
|
try:
|
|
try:
|
|
# 1. 先根据ID获取节点名称
|
|
# 1. 先根据ID获取节点名称
|
|
search = SearchBusiness()
|
|
search = SearchBusiness()
|
|
- results = search.get_similar_concepts(id=request.concept_id, top_k=request.top_k)
|
|
|
|
|
|
+ results = search.get_similar_concepts(id=concept_id, top_k=top_k)
|
|
|
|
|
|
return StandardResponse(success=True, data=results)
|
|
return StandardResponse(success=True, data=results)
|
|
except Exception as e:
|
|
except Exception as e:
|