Dhis2 System Info
by BLSQ
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
Clickhouse Io
ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.
Clickhouse Io
ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.
Analyzing Financial Statements
This skill calculates key financial ratios and metrics from financial statement data for investment analysis
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.
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.
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.
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.
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.
Xlsx
Spreadsheet toolkit (.xlsx/.csv). Create/edit with formulas/formatting, analyze data, visualization, recalculate formulas, for spreadsheet processing and analysis.
