27#include <shared_mutex>
30#include <unordered_map>
198 [[nodiscard]]
bool is_alive() const noexcept;
246 std::uint64_t total_established,
247 std::uint64_t total_failed);
261 std::uint64_t studies,
262 std::uint64_t series,
263 std::uint64_t successful_stores,
264 std::uint64_t failed_stores);
277 std::string_view build_id = "");
Performs comprehensive health checks on PACS system components.
void register_check(std::string_view name, check_callback callback)
Register a custom health check.
void update_association_metrics(std::uint32_t active, std::uint32_t max, std::uint64_t total_established, std::uint64_t total_failed)
Update association metrics.
health_status get_cached_status() const
Get cached health status.
kcenon::pacs::storage::file_storage * storage_
Storage instance to monitor.
~health_checker()
Destructor - stops background checking if enabled.
void update_storage_metrics(std::uint64_t instances, std::uint64_t studies, std::uint64_t series, std::uint64_t successful_stores, std::uint64_t failed_stores)
Update storage metrics.
association_metrics associations_
Association metrics (updated externally)
health_checker & operator=(const health_checker &)=delete
kcenon::pacs::storage::index_database * database_
Database instance to monitor.
void set_database(kcenon::pacs::storage::index_database *database)
Set the database instance to monitor.
storage_metrics storage_metrics_
Storage metrics (updated externally)
std::chrono::system_clock::time_point last_check_time_
Timestamp of last check.
void unregister_check(std::string_view name)
Unregister a custom health check.
void set_config(const health_checker_config &config)
Update configuration.
void check_database(health_status &status)
Check database connectivity.
void set_storage(kcenon::pacs::storage::file_storage *storage)
Set the storage instance to monitor.
health_status get_status()
Get cached status or perform check if stale.
std::unordered_map< std::string, check_callback > custom_checks_
Custom health checks.
health_status check()
Perform a full health check.
version_info version_
Version information.
bool is_ready()
Perform a readiness check.
bool is_alive() const noexcept
Perform a quick liveness check.
health_checker_config config_
Configuration.
void set_version(std::uint16_t major, std::uint16_t minor, std::uint16_t patch, std::string_view build_id="")
Set version information.
const health_checker_config & config() const noexcept
Get current configuration.
void run_custom_checks(health_status &status)
Run all custom checks.
health_status cached_status_
Cached health status.
void check_storage(health_status &status)
Check storage availability.
std::shared_mutex mutex_
Mutex for thread safety.
health_checker(const health_checker &)=delete
Non-copyable.
health_checker()
Construct health checker with default configuration.
std::function< bool(std::string &error_message)> check_callback
Custom health check callback type.
Health status data structures for PACS system monitoring.
DICOM association statistics.
Configuration options for the health checker.
std::chrono::seconds cache_duration
Cache health check results for this duration.
std::chrono::seconds check_interval
Interval between automatic health checks.
std::chrono::milliseconds database_timeout
Timeout for database connectivity test.
std::chrono::milliseconds storage_timeout
Timeout for storage write test.
double storage_critical_threshold
Storage usage threshold for unhealthy status (percentage)
double storage_warning_threshold
Storage usage threshold for degraded status (percentage)
bool background_checks_enabled
Enable background health checking.
Comprehensive health status of the PACS system.
DICOM storage operation statistics.
PACS system version information.