本仓库为远程超声诊断平台的统一代码仓库,包含前端、后端、AI质控模块以及专网实时通信中间件。 采用 Monorepo 结构管理,方便统一版本控制,支持针对不同医院/客户进行定制化开发。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

54 lines
1.6 KiB

from flask import Flask, request, jsonify
from flask_cors import CORS
import asyncio
from qc_engine import QCManager
app = Flask(__name__)
CORS(app, supports_credentials=True)
# 初始化质控管理器
qc_manager = QCManager()
@app.route('/')
def hello():
return 'Ultrasound AI QC Engine is running.'
@app.route('/h', methods=["POST"])
def zhipu():
"""
对接前端的质控接口
"""
user_info = request.get_json()
# 构造传递给 QCManager 的数据
report_data = {
"report": user_info.get("report", ""),
"patient_info": user_info.get("patient_info", {}),
"examinePart": user_info.get("examinePart", ""),
"image_urls": user_info.get("image_urls", [])
}
# 运行异步质控逻辑
try:
# 在 Flask 同步路由中运行异步方法
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
final_analysis = loop.run_until_complete(qc_manager.run_qc(report_data))
loop.close()
# 为了兼容旧前端代码,将结果放入 error_report 字段
# 此时 final_analysis 已经是包含 Markdown 和 JSON 的字符串
return jsonify({
'error_report': final_analysis,
'corrected_report': '建议查看下方的原地纠错建议。'
})
except Exception as e:
print(f"质控运行出错: {e}")
return jsonify({
'error_report': f"AI 质控分析暂时不可用: {str(e)}",
'corrected_report': ''
}), 500
if __name__ == '__main__':
# 注意:生产环境建议使用 gunicorn
app.run(host='0.0.0.0', port=5000)