|
@@ -64,16 +64,19 @@ async def test(node_name: str = Query(...,
|
|
db: Session = Depends(get_db)) -> list[str]:
|
|
db: Session = Depends(get_db)) -> list[str]:
|
|
return None
|
|
return None
|
|
|
|
|
|
-@router.post("/disease_symptoms", response_model=StandardResponse,operation_id="医疗知识图谱目标节点查询", summary="根据医疗知识图谱获取医疗相关信息",
|
|
|
|
- description="""根据三元组的起始节点名称和关系名称,查询目标节点列表。
|
|
|
|
- 该接口主要用于医疗知识图谱查询场景,例如:通过输入疾病名称和相关关系类型,
|
|
|
|
- 返回该疾病对应的相关症状、治疗方法等信息。
|
|
|
|
- 典型应用场景包括:
|
|
|
|
- - 症状查询:输入疾病名称和"疾病相关症状"关系
|
|
|
|
- - 诊断依据查询:输入疾病名称和"诊断依据"关系
|
|
|
|
- - 鉴别诊断查询:输入疾病名称和"疾病相关鉴别诊断"关系""",
|
|
|
|
- response_description="""返回目标节点名称的字符串列表,格式为:
|
|
|
|
- ["节点名称1", "节点名称2", ...]""")
|
|
|
|
|
|
+@app.post("/disease_symptoms",
|
|
|
|
+ response_model=StandardResponse,
|
|
|
|
+ operation_id="get_disease_symptoms",
|
|
|
|
+ summary="获取疾病相关症状",
|
|
|
|
+ description="根据疾病ID获取该疾病的所有症状及其严重程度权重",
|
|
|
|
+ response_description="""返回包含症状列表和症状严重程度权重的JSON结构,格式为:
|
|
|
|
+ {
|
|
|
|
+ "success": bool,
|
|
|
|
+ "data": {
|
|
|
|
+ {"symptoms": [], "severity_weights": {}}
|
|
|
|
+ }
|
|
|
|
+ }"""
|
|
|
|
+)
|
|
async def get_disease_symptoms(
|
|
async def get_disease_symptoms(
|
|
request: DiseaseSymptomsRequest
|
|
request: DiseaseSymptomsRequest
|
|
):
|
|
):
|
|
@@ -150,7 +153,31 @@ class SimilarConceptsRequest(BaseModel):
|
|
concept_id: str
|
|
concept_id: str
|
|
top_k: int = 5
|
|
top_k: int = 5
|
|
|
|
|
|
-@router.post("/search_concept", response_model=StandardResponse)
|
|
|
|
|
|
+@router.post("/search_concept",
|
|
|
|
+ operation_id="医学概念搜索",
|
|
|
|
+ summary="根据名称和类型搜索医学概念",
|
|
|
|
+ description="""根据概念名称和类型搜索医学概念节点。
|
|
|
|
+ 该接口主要用于医疗知识图谱中的概念搜索场景,例如:
|
|
|
|
+ - 通过输入疾病名称和类型搜索相关疾病概念
|
|
|
|
+ - 通过输入症状名称和类型搜索相关症状概念
|
|
|
|
+ - 通过输入药物名称和类型搜索相关药物概念
|
|
|
|
+
|
|
|
|
+ 典型应用场景包括:
|
|
|
|
+ - 疾病概念搜索
|
|
|
|
+ - 症状概念搜索
|
|
|
|
+ - 药物概念搜索""",
|
|
|
|
+ response_description="""返回标准响应格式,包含匹配的概念列表。
|
|
|
|
+ 格式为:
|
|
|
|
+ {
|
|
|
|
+ "success": bool,
|
|
|
|
+ "data": {
|
|
|
|
+ "concepts": [
|
|
|
|
+ {"id": str, "name": str, "type": str}
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ }""",
|
|
|
|
+ response_model=StandardResponse
|
|
|
|
+)
|
|
async def search_concept(
|
|
async def search_concept(
|
|
request: ConceptSearchRequest
|
|
request: ConceptSearchRequest
|
|
):
|
|
):
|
|
@@ -163,7 +190,31 @@ async def search_concept(
|
|
logger.error(f"搜索医学概念失败: {str(e)}")
|
|
logger.error(f"搜索医学概念失败: {str(e)}")
|
|
raise HTTPException(500, detail=StandardResponse.error(str(e)))
|
|
raise HTTPException(500, detail=StandardResponse.error(str(e)))
|
|
|
|
|
|
-@router.post("/get_relations", response_model=StandardResponse)
|
|
|
|
|
|
+@app.post("/get_relations",
|
|
|
|
+ operation_id="医学概念关系查询",
|
|
|
|
+ summary="根据概念ID查询相关关系",
|
|
|
|
+ description="""根据概念ID查询该概念的相关关系。
|
|
|
|
+ 该接口主要用于医疗知识图谱中的关系查询场景,例如:
|
|
|
|
+ - 通过输入疾病概念ID查询相关症状概念ID
|
|
|
|
+ - 通过输入症状概念ID查询相关疾病概念ID
|
|
|
|
+ - 通过输入药物概念ID查询相关治疗方法概念ID
|
|
|
|
+
|
|
|
|
+ 典型应用场景包括:
|
|
|
|
+ - 疾病症状关系查询
|
|
|
|
+ - 症状疾病关系查询
|
|
|
|
+ - 药物治疗方法关系查询""",
|
|
|
|
+ response_description="""返回标准响应格式,包含相关关系列表。
|
|
|
|
+ 格式为:
|
|
|
|
+ {
|
|
|
|
+ "success": bool,
|
|
|
|
+ "data": {
|
|
|
|
+ "relations": [
|
|
|
|
+ {"relation_type": str, "target_id": str, "target_name": str}
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ }""",
|
|
|
|
+ response_model=StandardResponse
|
|
|
|
+)
|
|
async def get_relations(
|
|
async def get_relations(
|
|
request: ConceptRelationsRequest
|
|
request: ConceptRelationsRequest
|
|
):
|
|
):
|
|
@@ -176,7 +227,30 @@ async def get_relations(
|
|
logger.error(f"获取概念关系失败: {str(e)}")
|
|
logger.error(f"获取概念关系失败: {str(e)}")
|
|
raise HTTPException(500, detail=StandardResponse.error(str(e)))
|
|
raise HTTPException(500, detail=StandardResponse.error(str(e)))
|
|
|
|
|
|
-@router.post("/get_similar_concepts", response_model=StandardResponse)
|
|
|
|
|
|
+@app.post("/get_similar_concepts", response_model=StandardResponse,
|
|
|
|
+ operation_id="相似概念查询",
|
|
|
|
+ summary="根据概念ID查询相似概念",
|
|
|
|
+ description="""根据概念ID查询该概念的相似概念。
|
|
|
|
+ 该接口主要用于医疗知识图谱中的相似概念查询场景,例如:
|
|
|
|
+ - 通过输入疾病概念ID查询相关症状概念ID
|
|
|
|
+ - 通过输入症状概念ID查询相关疾病概念ID
|
|
|
|
+ - 通过输入药物概念ID查询相关治疗方法概念ID
|
|
|
|
+
|
|
|
|
+ 典型应用场景包括:
|
|
|
|
+ - 疾病相似概念查询
|
|
|
|
+ - 症状相似概念查询
|
|
|
|
+ - 药物相似概念查询""",
|
|
|
|
+ response_description="""返回标准响应格式,包含相似概念列表。
|
|
|
|
+ 格式为:
|
|
|
|
+ {
|
|
|
|
+ "success": bool,
|
|
|
|
+ "data": {
|
|
|
|
+ "similar_concepts": [
|
|
|
|
+ {"id": str, "name": str, "similarity": str}
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ }""",
|
|
|
|
+)
|
|
async def get_similar_concepts(
|
|
async def get_similar_concepts(
|
|
request: SimilarConceptsRequest
|
|
request: SimilarConceptsRequest
|
|
):
|
|
):
|