Skip to main content
Glama

Medical Calculator MCP Service

qtc_rautaharju_calculator.py4.16 kB
""" QTc Rautaharju Calculator """ from typing import Dict, Any from medcalc import ( BaseCalculator, CalculatorInfo, Parameter, ParameterType, ValidationResult, CalculationResult, register_calculator ) from medcalc.utils import round_number @register_calculator("qtc_rautaharju") class QTcRautaharjuCalculator(BaseCalculator): """QTc Rautaharju计算器实现""" def get_info(self) -> CalculatorInfo: return CalculatorInfo( id=59, name="QTc Rautaharju Calculator", category="cardiology", description="Calculate corrected QT interval using Rautaharju formula", parameters=[ Parameter( name="qt_interval", type=ParameterType.NUMERIC, required=True, unit="msec", min_value=200, max_value=800, description="QT interval in milliseconds" ), Parameter( name="heart_rate", type=ParameterType.NUMERIC, required=True, unit="bpm", min_value=30, max_value=250, description="Heart rate in beats per minute" ) ] ) def validate_parameters(self, parameters: Dict[str, Any]) -> ValidationResult: """验证参数""" errors = [] info = self.get_info() param_defs = {p.name: p for p in info.parameters} # 获取参数值 qt_interval = self.get_param_value(parameters, "qt_interval", param_defs["qt_interval"]) heart_rate = self.get_param_value(parameters, "heart_rate", param_defs["heart_rate"]) # 验证QT间期范围 if qt_interval is not None: error_msg = self.validate_numeric_range(qt_interval, param_defs["qt_interval"]) if error_msg: errors.append(error_msg) # 验证心率范围 if heart_rate is not None: error_msg = self.validate_numeric_range(heart_rate, param_defs["heart_rate"]) if error_msg: errors.append(error_msg) return ValidationResult( is_valid=len(errors) == 0, errors=errors ) def calculate(self, parameters: Dict[str, Any]) -> CalculationResult: """执行计算""" info = self.get_info() param_defs = {p.name: p for p in info.parameters} qt_interval = self.get_param_value(parameters, "qt_interval", param_defs["qt_interval"]) heart_rate = self.get_param_value(parameters, "heart_rate", param_defs["heart_rate"]) # 计算QTc: QTc = QT间期 * (120 + 心率) / 180 qtc = round_number(qt_interval * (120 + heart_rate) / 180) # 生成解释 explanation = self._generate_explanation(qt_interval, heart_rate, qtc) return CalculationResult( value=qtc, unit="msec", explanation=explanation, metadata={ "qt_interval": qt_interval, "heart_rate": heart_rate, "formula": "QTc = QT * (120 + HR) / 180" } ) def _generate_explanation(self, qt_interval: float, heart_rate: float, qtc: float) -> str: """生成计算解释""" explanation = "The corrected QT interval using the Rautaharju formula is computed as QTc = QT interval x (120 + HR) / 180, " explanation += "where QT interval is in msec, and HR is the heart rate in beats per minute.\n\n" explanation += f"The QT interval is {qt_interval} msec.\n" explanation += f"The patient's heart rate is {heart_rate} beats per minute.\n" explanation += f"Hence, plugging in these values, we will get {qt_interval} x (120 + {heart_rate}) / 180 = {qtc}.\n" explanation += f"The patient's corrected QT interval (QTc) is {qtc} msec." return explanation

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/winninghealth/medcalcmcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server