|
@@ -1,6 +1,8 @@
|
|
# 导入FastAPI及相关模块
|
|
# 导入FastAPI及相关模块
|
|
|
|
+import json
|
|
|
|
+
|
|
import uvicorn
|
|
import uvicorn
|
|
-from fastapi import FastAPI
|
|
|
|
|
|
+from fastapi import FastAPI,Query
|
|
from fastapi_mcp import FastApiMCP
|
|
from fastapi_mcp import FastApiMCP
|
|
from py_tools.logging import logger
|
|
from py_tools.logging import logger
|
|
|
|
|
|
@@ -109,12 +111,37 @@ class DiseaseInfoRequest(BaseModel):
|
|
response_description="""返回疾病名称的字符串列表,格式为:
|
|
response_description="""返回疾病名称的字符串列表,格式为:
|
|
["疾病名称1", "疾病名称2", ...]""")
|
|
["疾病名称1", "疾病名称2", ...]""")
|
|
async def get_symptom_diseases(
|
|
async def get_symptom_diseases(
|
|
- request: SymptomDiseasesRequest
|
|
|
|
|
|
+ symptoms: List[str] = Query(...,
|
|
|
|
+ description="""症状名称列表,应为标准医学术语。
|
|
|
|
+ 该参数用于查询与输入症状相关的疾病列表。
|
|
|
|
+ 示例值:["头痛", "发热", "咳嗽"]""",
|
|
|
|
+ examples=["头痛", "发热", "咳嗽"],
|
|
|
|
+ min_length=1)
|
|
):
|
|
):
|
|
|
|
+ """
|
|
|
|
+ 根据症状列表获取相关疾病
|
|
|
|
+
|
|
|
|
+ Args:
|
|
|
|
+ symptoms: 症状名称列表,每个症状应为标准医学术语
|
|
|
|
+ 示例: ["头痛", "发热", "咳嗽"]
|
|
|
|
+
|
|
|
|
+ Returns:
|
|
|
|
+ StandardResponse: 包含相关疾病列表的标准响应
|
|
|
|
+
|
|
|
|
+ Raises:
|
|
|
|
+ HTTPException: 当查询过程中发生错误时抛出500异常
|
|
|
|
+
|
|
|
|
+ Notes:
|
|
|
|
+ - 症状名称建议使用标准医学术语,避免口语化表达
|
|
|
|
+ - 多个症状同时查询时,返回的是这些症状共同相关的疾病
|
|
|
|
+ - 空列表将返回空结果
|
|
|
|
+ """
|
|
try:
|
|
try:
|
|
|
|
+ #打印request
|
|
|
|
+ logger.info(f"symptoms: {symptoms}")
|
|
# 实现获取症状相关疾病的逻辑
|
|
# 实现获取症状相关疾病的逻辑
|
|
search = SearchBusiness()
|
|
search = SearchBusiness()
|
|
- results = search.get_symptom_diseases(request.symptoms)
|
|
|
|
|
|
+ results = search.get_symptom_diseases(symptoms)
|
|
return StandardResponse(success=True, data=results)
|
|
return StandardResponse(success=True, data=results)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
logger.exception(f"获取症状相关疾病失败: {str(e)}")
|
|
logger.exception(f"获取症状相关疾病失败: {str(e)}")
|