Dhis2 System Info

by BLSQ

data

Get DHIS2 system information including version, database details, and server configuration. Use for version checks or server capabilities. Routed via dhis2 skill for general DHIS2 requests.

Skill Details

Repository Files

1 file in this skill directory


name: dhis2-system-info description: Get DHIS2 system information including version, database details, and server configuration. Use for version checks or server capabilities. Routed via dhis2 skill for general DHIS2 requests.

DHIS2 System Info

Get system information, version details, and server configuration from DHIS2.

Prerequisites: Client setup from dhis2 skill (assumes dhis is initialized)

Overview

The system info endpoints provide:

  • DHIS2 version and build information
  • Database type and version
  • Server configuration and capabilities
  • System settings and flags

Get System Info

def get_system_info(dhis) -> dict:
    """Get complete system information."""
    return dhis.api.get("system/info")

# Usage
info = get_system_info(dhis)

# Key fields
print(f"DHIS2 Version: {info.get('version')}")
print(f"Revision: {info.get('revision')}")
print(f"Build Time: {info.get('buildTime')}")
print(f"Database: {info.get('databaseInfo', {}).get('name')}")
print(f"Server Date: {info.get('serverDate')}")

Common System Info Fields

Field Description Example
version DHIS2 version 2.40.2
revision Build revision abc1234
buildTime When built 2024-01-15T10:30:00.000
serverDate Current server time 2024-06-15T14:30:00.000
calendar Calendar system iso8601, ethiopian
dateFormat Date format yyyy-MM-dd
contextPath Server context path /dhis
systemId Unique system ID OU-abc123

Database Info

db_info = info.get("databaseInfo", {})
print(f"DB Name: {db_info.get('name')}")           # e.g., "PostgreSQL"
print(f"DB User: {db_info.get('user')}")           # e.g., "dhis"
print(f"DB URL: {db_info.get('url')}")             # Connection URL
print(f"Spatial Support: {db_info.get('spatialSupport')}")  # True/False

Check Version Compatibility

def check_version(dhis, min_version: str = "2.38") -> bool:
    """Check if DHIS2 version meets minimum requirement."""
    info = dhis.api.get("system/info")
    version = info.get("version", "0.0.0")

    # Parse version (handle formats like "2.40.2" or "2.40.2-SNAPSHOT")
    version_parts = version.split("-")[0].split(".")
    min_parts = min_version.split(".")

    for i in range(min(len(version_parts), len(min_parts))):
        v = int(version_parts[i])
        m = int(min_parts[i])
        if v > m:
            return True
        elif v < m:
            return False

    return True

# Usage
if check_version(dhis, "2.40"):
    print("DHIS2 version is 2.40 or higher")
    # Use newer API features
else:
    print("DHIS2 version is below 2.40")
    # Use legacy API endpoints

Get System Settings

def get_system_settings(dhis, keys: list = None) -> dict:
    """Get system settings."""
    if keys:
        params = {"key": keys}
        return dhis.api.get("systemSettings", params=params)
    return dhis.api.get("systemSettings")

# Get all settings
settings = get_system_settings(dhis)

# Get specific settings
settings = get_system_settings(dhis, keys=[
    "keyAnalyticsMaxLimit",
    "keyDatabaseServerCpus",
    "keySystemNotificationsEmail"
])

Common System Settings

Key Description
keyAnalyticsMaxLimit Max rows in analytics queries
keyDatabaseServerCpus Number of CPUs for analytics
keyIgnoreAnalyticsApprovalYearThreshold Approval threshold
keyGoogleAnalyticsUA Google Analytics ID
keyStyle System UI style
keyFlag Country flag
keyApplicationTitle Application title
keyEmailHostName SMTP host

Get Server Capabilities

def get_server_capabilities(dhis) -> dict:
    """Analyze server capabilities based on system info."""
    info = dhis.api.get("system/info")

    return {
        "version": info.get("version"),
        "is_v40_plus": check_version(dhis, "2.40"),
        "is_v38_plus": check_version(dhis, "2.38"),
        "has_tracker_api": check_version(dhis, "2.38"),  # New tracker API
        "has_spatial": info.get("databaseInfo", {}).get("spatialSupport", False),
        "calendar": info.get("calendar"),
        "date_format": info.get("dateFormat"),
        "system_id": info.get("systemId")
    }

# Usage
caps = get_server_capabilities(dhis)
if caps["has_tracker_api"]:
    # Use /api/tracker endpoints
    pass
else:
    # Use legacy /api/trackedEntityInstances endpoints
    pass

Check Analytics Tables Status

def get_analytics_status(dhis) -> dict:
    """Get analytics tables generation status."""
    try:
        status = dhis.api.get("resourceTables/analytics")
        return status
    except:
        return {"status": "unknown"}

# Usage
analytics_status = get_analytics_status(dhis)
print(f"Last analytics update: {analytics_status.get('lastUpdated')}")

Get Server Time

def get_server_time(dhis) -> str:
    """Get current server date/time."""
    info = dhis.api.get("system/info")
    return info.get("serverDate")

# Useful for scheduling and time-based queries
server_time = get_server_time(dhis)

Complete System Report

def generate_system_report(dhis) -> dict:
    """Generate a comprehensive system report."""
    info = get_system_info(dhis)
    settings = get_system_settings(dhis)

    return {
        "instance": {
            "version": info.get("version"),
            "revision": info.get("revision"),
            "build_time": info.get("buildTime"),
            "system_id": info.get("systemId"),
            "context_path": info.get("contextPath")
        },
        "database": {
            "type": info.get("databaseInfo", {}).get("name"),
            "user": info.get("databaseInfo", {}).get("user"),
            "spatial_support": info.get("databaseInfo", {}).get("spatialSupport")
        },
        "localization": {
            "calendar": info.get("calendar"),
            "date_format": info.get("dateFormat")
        },
        "server": {
            "current_time": info.get("serverDate"),
            "java_version": info.get("javaVersion"),
            "os_name": info.get("osName"),
            "os_version": info.get("osArchitecture")
        },
        "settings": {
            "analytics_max_limit": settings.get("keyAnalyticsMaxLimit"),
            "application_title": settings.get("keyApplicationTitle")
        }
    }

Use Cases

Scenario What to Check
API compatibility version, check_version()
Spatial queries databaseInfo.spatialSupport
Multi-calendar support calendar
Data freshness serverDate, analytics status
Troubleshooting Full system report

Related Skills

Xlsx

Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas

data

Clickhouse Io

ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.

datacli

Clickhouse Io

ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.

datacli

Analyzing Financial Statements

This skill calculates key financial ratios and metrics from financial statement data for investment analysis

data

Data Storytelling

Transform data into compelling narratives using visualization, context, and persuasive structure. Use when presenting analytics to stakeholders, creating data reports, or building executive presentations.

data

Kpi Dashboard Design

Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use when building business dashboards, selecting metrics, or designing data visualization layouts.

designdata

Dbt Transformation Patterns

Master dbt (data build tool) for analytics engineering with model organization, testing, documentation, and incremental strategies. Use when building data transformations, creating data models, or implementing analytics engineering best practices.

testingdocumenttool

Sql Optimization Patterns

Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries. Use when debugging slow queries, designing database schemas, or optimizing application performance.

designdata

Anndata

This skill should be used when working with annotated data matrices in Python, particularly for single-cell genomics analysis, managing experimental measurements with metadata, or handling large-scale biological datasets. Use when tasks involve AnnData objects, h5ad files, single-cell RNA-seq data, or integration with scanpy/scverse tools.

arttooldata

Xlsx

Spreadsheet toolkit (.xlsx/.csv). Create/edit with formulas/formatting, analyze data, visualization, recalculate formulas, for spreadsheet processing and analysis.

tooldata

Skill Information

Category:Data
Last Updated:1/30/2026