DICOM MCP Server

by ChristianHinge
Verified
""" DICOM configuration using Pydantic. """ import yaml from pathlib import Path from typing import Dict from pydantic import BaseModel class DicomNodeConfig(BaseModel): """Configuration for a DICOM node""" host: str port: int ae_title: str description: str = "" class CallingAETitleConfig(BaseModel): """Configuration for a calling AE title""" ae_title: str description: str = "" class DicomConfiguration(BaseModel): """Complete DICOM configuration""" nodes: Dict[str, DicomNodeConfig] calling_aets: Dict[str, CallingAETitleConfig] current_node: str current_calling_aet: str def load_config(config_path: str) -> DicomConfiguration: """Load DICOM configuration from YAML file. Args: config_path: Path to the configuration file Returns: Parsed DicomConfiguration object Raises: FileNotFoundError: If the configuration file doesn't exist ValueError: If the configuration is invalid """ path = Path(config_path) if not path.exists(): raise FileNotFoundError(f"Configuration file {path} not found") with open(path, 'r') as f: data = yaml.safe_load(f) try: return DicomConfiguration(**data) except Exception as e: raise ValueError(f"Invalid configuration in {path}: {str(e)}")