Skip to main content

2023 New Features

Master Data Management

User Interactions

Add / Edit Administration Attribute

  • Step 1: Click the "Add Attribute" button.
  • Step 2: Fill in the attribute name and select the type (e.g., "Value","Option", "Multiple Option", "Aggregate").
  • Step 3: If the attribute type is "Option,Multiple Option or Aggregate" click the "+" button to add more options.
  • Step 4: Click "Submit" to save.
  • Step 5: Confirmation message appears.
  • Step 6: Options to return to the attributes list, add another attribute, or manage existing attributes.

API: administration-crud

Add / Edit Administration

  • Step 1: Click "Add New Administration" or select an administrative area to edit.
  • Step 2: Select Level Name.
  • Step 3: Select the parent administration using a cascading drop-down.
  • Step 4: Fill in administration details (name, parent, and code).
  • Step 5: Fill in attributes and their values.
    • For Value type: Input Number
    • For Option and Multiple Option type: Drop-down option
    • For Aggregate: It will shows table with 2 columns, the columns are: name, value
      • Name: the dissagregation name
      • Value: Input Number
  • Step 6: Click "Submit" to save.
  • Step 7: Confirmation message appears.
  • Step 8: Options to return to administration list.

API: administration-crud

Database Overview

Entities Table

postablecolumnnulldtypelendefault
1Entitiesid Integer  
2Entitiesname Text  

Entity Data Table

postablecolumnnulldtypelendefault
1Entity Dataid Integer  
2Entity Dataentity_id Integer  
3Entity Dataname Text  
4Entity Dataadministration_id Integer  

Entity Attributes

postablecolumnnulldtypelendefault
1Entity Attributesid Integer  
2Entity Attributesentity_id Integer  
3Entity Attributesname Text  

Entity Attributes Options

postablecolumnnulldtypelendefault
1Entity Attributes Optionsid Integer  
2Entity Attributes Optionsentity_attribute_id Integer  
3Entity Attributes Optionsname Text  

Entity Values

postablecolumnnulldtypelendefault
1Entity Valuesid Integer  
2Entity Valuesentity_data_id Integer  
3Entity Valuesentity_attribute_id Integer  
4Entity Valuesvalue Text  

Administration Table

postablecolumnnulldtypelendefault
1administratoridNObigint administrator_id_seq
2administratorcodeYEScharacter varying255 
3administratornameNOtext  
4administratorlevel_idNObigint  
5administratorparent_idYESbigint  
6administratorpathYEStext  

Administration Attributes

postablecolumnnulldtypelendefault
1Administration Attributesid Integer  
2Administration Attributeslevel_id Integer  
3
Administration Attribute
code

Text

Unique (Auto-Generated)
4Administration AttributesType Enum (Number, Option, Aggregate)
  
5Administration Attributesname Text  

Administration Attributes Options

postablecolumnnulldtypelendefault
1Administration Attributes Optionsid Integer  
2Administration Attributes Optionsadministration_attributes_id Integer  
3Administration Attributes Optionsname Text  

Administration Values

postablecolumnnulldtypelendefault
1Administration Valuesid Integer  
2Administration Valuesadministration_id Integer  
3Administration Valuesadministration_attributes_idInteger   
4Administration Valuesvalue Integer  
5
Administrative Values
option

Text


Rules:

  • Attribute Type: Numeric
    • value: NOT NULL
    • option: NULL
  • Attribute Type: Option
    • value: NULL
    • option: NOT NULL
  • Attribute Type: Aggregate
    • value: NOT NULL
    • option: NOT NULL

Validation for Option Type

  • If parent has a value for a particular administration_attributes_id, then invalidate the children input.
  • If children have a value for a particular administration_attributes_id, then override the children value.

Materialized View for Aggregation

Visualization Query

idtypenameattributeoptionvalue
1administrationBantulWater Points TypeDugwell1
2entityBantul SchoolType of schoolHighschool1

API Endpoints

Administration Endpoints

Administration CRUD (POST & PUT)
{
  "parent_id": 1,
  "name": "Village A",
  "code": "VA",
  "attributes": [{
      "attribute":1,
      "value": 200,
    },{
      "attribute":2,
      "value": "Rural",
    },{
      "attribute":3,
      "value": ["School","Health Facilities"],
    },{
      "attribute":4,
      "value": {"Rice": 100,"Corn": 200},
    }
  ]
}
Administration Detail (GET)
{
  "id": 2,
  "name": "Tiati",
  "code": "BT",
  "parent": {
    "id": 1,
    "name": "Baringo",
    "code": "B"
  },
  "level": {
    "id": 1,
    "name": "Sub-county"
  },
  "childrens": [{
    "id": 2,
    "name": "Tiati",
    "code": "BT"
  }],
  "attributes": [{
      "attribute":1,
      "type": "value",
      "value": 200,
    },{
      "attribute":2,
      "type": "option",
      "value": "Rural",
    },{
      "attribute":3,
      "type": "multiple_option",
      "value": ["School","Health Facilities"],
    },{
      "attribute":4,
      "type": "aggregate",
      "value": {"Improved": 100,"Unimproved": 200},
    }
  ]
}
Administration List (GET)
{
  "current": "self.page.number",
  "total": "self.page.paginator.count",
  "total_page": "self.page.paginator.num_pages",
  "data":[
    {
      "id": 2,
      "name": "Tiati",
      "code": "BT",
      "parent": {
        "id": 1,
        "name": "Baringo",
      },
      "level": {
        "id": 1,
        "name": "Sub-county"
      }
    }
]}
Administration Attributes CRUD (POST & PUT)
{
  "name": "Population",
  "type": "value",
  "options": []
}
Administration Attributes (GET)
[{
  "id": 1,
  "name": "Population",
  "type": "value",
  "options": []
},{
  "id": 2,
  "name": "Wheter Urban or Rural",
  "type": "option",
  "options": ["Rural","Urban"]
},{
  "id": 3,
  "name": "HCF and School Availability",
  "type": "multiple_option",
  "options": ["School","Health Care Facilities"]
},{
  "id": 4,
  "name": "JMP Status",
  "type": "aggregate",
  "options": ["Improved","Unimproved"]
}]

Attribute Types

Option & Multiple Option Values

Use Case

We have a dataset that contains categorical information about the types of land use for various regions. This data will be utilized to classify and analyze land use patterns at the county level.

Feature

To achieve this, we will need to define option values for an attribute. In this scenario, the workflow is as follows:

Define Attribute

  • Attribute Name: Land Use Type
  • Attribute Code: <Unique Identifier>Land_Use_Type
  • Type: Categorical (Option Values)
  • Administration Level: County

Define Option Values

  • Option Name: Residential
    • Option Code: Residential
  • Option Name: Commercial
    • Option Code: Commercial
  • Option Name: Agricultural
    • Option Code: Agricultural

Upload Data for Counties

CountyAttribute CodeValue
County ALand_Use_TypeResidential
County BLand_Use_TypeCommercial
County CLand_Use_TypeAgricultural

In this case, we define the "Option Values" for the "Land Use Type" attribute, allowing us to categorize land use patterns at the county level. The actual data for individual counties is then uploaded using the defined options.

Single Numeric Values

Use Case

We possess household counts from the 2019 census that correspond to the RTMIS administrative list at the sub-county level. This data can be employed to compute the household coverage per county, which is calculated as (# of households in that sub-county in RTMIS / # from the census).

Feature

To achieve this, we need to store the population value for individual sub-counties as part of their attributes. In this scenario, the workflow is as follows:

Define Attribute

  • Attribute Name: Census HH Count
  • Attribute Code: <Unique Identifier>Census_HH_Count
  • Type: Single Numeric Value
  • Administration Level: Sub-County

Upload Data for Individual Sub-Counties

Sub-CountyAttribute CodeValue
CHANGAMWECensus_HH_Count46,614
JOMVUCensus_HH_Count53,472

In this case, the values for the county level will be automatically aggregated.

Disaggregated Numeric Values

Use Case

We aim to import data from the CLTS platform or the census regarding the count of different types of toilets, and we have a match at the sub-county level. This data will serve as baseline values for visualization.

Feature

For this use case, we need to store disaggregated values for an attribute. To do so, we will:

Define the Attribute

  • Attribute Name: Census HH Toilet Count
  • Attribute Code: <Unique Identifier>Census_HH_Toilet_Count
  • Type: Disaggregated Numeric Values
  • Disaggregation: “Improved”, “Unimproved”
  • Administration Level: Sub-County

Upload Data for Individual Sub-Counties

Sub-CountyAttribute CodeDisaggregationValue
CHANGAMWECensus_HH_Toilet_CountImproved305,927
CHANGAMWECensus_HH_Toilet_CountUnimproved70,367