AgentSkillsCN

dhis2-data-elements

从DHIS2中提取数据元素与数据元素组。适用于数据元素的元数据、数据组,或类别选项组合。对于一般的DHIS2请求,可通过dhis2技能进行路由。

SKILL.md
--- frontmatter
name: dhis2-data-elements
description: Extract data elements and data element groups from DHIS2. Use for data element metadata, groups, or category option combos. Routed via dhis2 skill for general DHIS2 requests.

DHIS2 Data Elements

Extract data element metadata from DHIS2 instances.

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

Get Data Elements

python
# Get all data elements
data_elements = dhis.meta.data_elements()

# With pagination
data_elements = dhis.meta.data_elements(
    page=1,
    pageSize=500
)

# With filters
data_elements = dhis.meta.data_elements(
    filters=["domainType:eq:AGGREGATE"]  # Only aggregate data elements
)

# Custom fields
data_elements = dhis.meta.data_elements(
    fields="id,name,shortName,valueType,aggregationType,domainType"
)

Get Data Element Groups

python
# Get all groups
groups = dhis.meta.data_element_groups()

# With filters
groups = dhis.meta.data_element_groups(
    filters=["name:ilike:malaria"]
)

Get Category Option Combos

python
# Get all category option combos
cocs = dhis.meta.category_option_combos()

# With filters
cocs = dhis.meta.category_option_combos(
    filters=["name:ne:default"]
)

DataFrame Helper Methods

Add Data Element Names to Data

python
# If you have a DataFrame with data element IDs
df = dhis.meta.add_dx_name_column(
    dataframe=df,
    dx_id_column="dataElement"
)
# Adds 'dataElement_name' column

Add Category Option Combo Names

python
df = dhis.meta.add_coc_name_column(
    dataframe=df,
    coc_column="categoryOptionCombo"
)
# Adds 'categoryOptionCombo_name' column

Custom API Endpoint (Alternative)

For endpoints not covered by toolbox methods:

python
# Get data elements with full details
response = dhis.api.get(
    "dataElements",
    params={
        "fields": "id,name,shortName,code,valueType,aggregationType,"
                  "categoryCombo[id,name,categoryOptionCombos[id,name]]",
        "paging": False
    }
)
data_elements = response.get("dataElements", [])

Get Data Element by ID

python
def get_data_element(dhis, de_id: str) -> dict:
    """Get single data element with full details."""
    return dhis.api.get(
        f"dataElements/{de_id}",
        params={
            "fields": "*,categoryCombo[*,categoryOptionCombos[*]],"
                      "dataElementGroups[id,name]"
        }
    )

Get Data Elements by Group

python
def get_data_elements_by_group(dhis, group_id: str) -> list:
    """Get all data elements in a group."""
    response = dhis.api.get(
        "dataElements",
        params={
            "fields": "id,name,shortName,valueType",
            "filter": f"dataElementGroups.id:eq:{group_id}",
            "paging": False
        }
    )
    return response.get("dataElements", [])

Common Filters

FilterDescription
domainType:eq:AGGREGATEAggregate data elements
domainType:eq:TRACKERTracker data elements
valueType:eq:NUMBERNumeric values
valueType:eq:INTEGERInteger values
name:ilike:malariaName contains
dataElementGroups.id:eq:xyzIn specific group

Value Types

TypeDescription
NUMBERDecimal number
INTEGERWhole number
INTEGER_POSITIVEPositive integer
INTEGER_ZERO_OR_POSITIVEZero or positive
TEXTFree text
LONG_TEXTLong text
BOOLEANYes/No
TRUE_ONLYOnly true value

Output Fields

Common fields to request:

code
id,name,shortName,code,
valueType,aggregationType,domainType,
categoryCombo[id,name],
dataElementGroups[id,name],
description,formName