Skip to main content

openIMIS Backend calcrule_validations reference module

How we can configure strategy for validation?

  • The schema within the Benefit Plan/Programme entity holds a crucial role in this process.
  • For instance, validationCalculation in the schema triggers a specific validation strategy. Similarly, in the duplications section of the schema, setting uniqueness: true signifies the need for duplication checks based on the record's field value.
  • Based on the provided schema below (from programme/benefit plan), it indicates that validations will run for the email field (validationCalculation), and duplication checks will be performed for national_id (uniqueness: true)
{
   "$id":"https://example.com/beneficiares.schema.json",
   "type":"object",
   "title":"Record of beneficiares",
   "$schema":"http://json-schema.org/draft-04/schema#",
   "properties":{
      "email":{
         "type":"string",
         "description":"email address to contact with beneficiary",
         "validationCalculation":{
            "name":"EmailValidationStrategy"
         }
      },
      "able_bodied":{
         "type":"boolean",
         "description":"Flag determining whether someone is able bodied or not"
      },
      "national_id":{
         "type":"string",
         "uniqueness":true,
         "description":"national id"
      },
      "educated_level":{
         "type":"string",
         "description":"The level of person when it comes to the school/education/studies"
      },
      "chronic_illness":{
         "type":"boolean",
         "description":"Flag determining whether someone has such kind of illness or not"
      },
      "national_id_type":{
         "type":"string",
         "description":"A type of national id"
      },
      "number_of_elderly":{
         "type":"integer",
         "description":"Number of elderly"
      },
      "number_of_children":{
         "type":"integer",
         "description":"Number of children"
      },
      "beneficiary_data_source":{
         "type":"string",
         "description":"The source from where such beneficiary comes"
      }
   },
   "description":"This document records the details beneficiares"
}
  • In essence, to create a custom validation rule applicable to a schema field, you'll need to define a class in python file within the strategies folder (The filename should conclude with _validation_strategy.py).
  • The example of validation class implementation:
from dataclasses import asdict

from calcrule_validations.strategies.base_strategy import BaseValidationsStrategy
from calcrule_validations.strategies.validation_strategy_interface import ValidationResult


class YourCustomValidationStrategy(BaseValidationsStrategy):
    VALIDATION_CLASS = "YourCustomValidationStrategy"

    @classmethod
    def validate(cls, field_name, field_value, **kwargs):
        return asdict(ValidationResult(
            success=False,
            field_name=field_name,
            note="<YOUR VALIDATION NOTE>"
        ))

  • The VALIDATION_CLASS property plays a significant role in defining the value for the validationCalculation: name property within the JSON schema of the schema for the Benefit Plan/Programme entity.
  • The validation implementation needs to be executed within the validate method. It's expected to return a ValidationResult as a dictionary structured as follows:
    return asdict(ValidationResult(
        success=False,
        field_name=field_name,
        note="<YOUR VALIDATION NOTE>"
    ))
  • For a valid condition, the expected return should resemble the following:
    return asdict(ValidationResult(
        success=True,
        field_name=field_name,
        note="Ok"
    ))
  • The signature of validate method is def validate(cls, field_name, field_value, **kwargs)

Metadata

Release files for openimis-be-calcrule-validations 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openimis-be-calcrule-validations 1.2.0
File Size Uploaded
openimis_be_calcrule_validations-1.2.0.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openimis-be-calcrule-validations 1.2.0
File Interpreter ABI Platform
openimis_be_calcrule_validations-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.6 kB

Release files / openimis_be_calcrule_validations-1.2.0.tar.gz

Download URL openimis_be_calcrule_validations-1.2.0.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
86ca86a70c8af76f6d9ae1bdaef8d9f62a4ba0f4b54e94b223ec5c5c570406b1
BLAKE2b-256 checksum
How to use checksums
a48ebde9bfaaf0f8226216e9756394d20d8eca2bd5488e537e6ebe5acd75c1d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / openimis_be_calcrule_validations-1.2.0-py3-none-any.whl

Download URL openimis_be_calcrule_validations-1.2.0-py3-none-any.whl
Size 13.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
626bedd2f1c60a3a9a61f57ebe2de481e0cb7d71b1baaf63394c3dccb5219485
BLAKE2b-256 checksum
How to use checksums
f0d0ba8d1407d012f8cc4f957e989224a3db41347691b1854b9e30b17b4c1eb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page