Subject Types can be created through the App Designer.1. Go to App Designer > Subject Types > Add New Subject Type
Fields can be added to forms through the App Designer. You can reach the form through different means.
- Go to App Designer > Forms > Select the form
- Go to App Designer > Subject Types, Programs or Encounter Types > Select the form you need to edit
- Navigate to the section/page you wish to add the field to. If required, add a new section/page As you hover over the left portion, you will see a + button. Click on it to add a new field. Each Form field has a few components.
- Question - This is what shows up in your form
- Concept - This is the internal name of the field. It is also shown in patient dashboards, reports etc. Normally, we keep the name of the concept to be the same as the question. Remember that there can only be one concept with a certain name in the entire system. Also, a concept can be used only once in a form. Based on the data type of the concept, you will have a few questions to answer to configure it correctly.
- Rule - There are three rules that you can configure for a question -
- Show/Hide question - This is used to show or hide the question based on a certain condition.
- Validation Rule - Based on conditions, you might show an error to the user
- Value Rule - Based on conditions, you might set an answer value The rules section is available by clicking on "RULE" section on the left side of the question
Concept DataType - Description Numeric concepts - Numeric concepts are used to capture numbers. When creating a numeric concept, you can define normal ranges and absolute ranges. In the field application, if an observation for a concept collected goes beyond the normal range, then it is highlighted in red. Values above the absolute range are not allowed. For instance for concept: Blood Pressure (Systolic), you can choose a Numeric concept with ranges.
Coded concepts (and NA concepts) - Coded concepts are those that have a fixed set of answers. For instance for Blood Group you would choose a coded concept with values: A+, B+, AB+, etc.
These answers are also defined as concepts of NA datatype.
ID datatype - A concept of Id datatype is used to store autogenerated ids. See Creating identifiers for more information on creating autogenerated ids. For instance PatientIDs, TestIDs, etc.
Media concepts (Image, Video and Audio) - Images and videos can be captured using Image and Video concept datatypes. For audio recording, Audio datatype can be used.
Text (and Notes) concepts - The Text data type helps capture one-line text while the Notes datatype is used to capture longer form text.
Date and time concepts - There are different datatypes that can be used to capture date and time. Date* - A simple date with no time Time* - Just the time of day, with no date DateTime* - To store both date and time in a single observation Duration* - To capture durations such as 4 weeks, 2 days etc. Location concepts - Location concepts can be used to capture locations based on the location types configured in your implementation. Location concepts have 3 attributes:
- Within Catchment - Denotes whether the location to be captured would be within the catchment already assigned to your field workers. This attribute defaults to true and is mandatory.
- Lowest Level(s) - Denotes the lowest location type(s) you intend to capture via form elements using this concept. This attribute is mandatory.
- Highest Level - Denotes the highest location type that you would like to capture via form elements using this concept. This attribute is optional. Subject concepts - Subject concepts can be used to link to other subjects. Each Subject concept can map to a single subject type. Any form element using this concept can capture one or multiple subjects of the specified subject type. Phone Number concepts - For capturing the phone number. It comes with a 10 digit validation. OTP verification can be enabled by turning on the "Switch on Verification" option. Avni uses msg91 for OTP messages, so msg91 Auth key and Template need to be step up using the admin app. Group Affiliation concepts - Whenever automatic addition of a subject to a group is required Group Affiliation concept can be used. It provides the list of all the group subjects in the form and choosing any group will add that subject to that group when the form is saved. Encounter - Encounter concepts can be used to link an encounter to any form. Each Encounter concept can map to a single encounter type. It should also provide the scope to search that encounter. Also, name identifiers can be constructed by specifying the concepts used in the encounter form. Any form element using this concept can capture one or multiple encounters of the specified encounter type.
Skip logic is implemented through rules in Avni. Every field on the Form Designer has a "Rule" section. You can configure skip logic by adding the logic and then clicking on "Show/Hide question".
Yes. Regular expression validations are available for Text concepts in Avni. When you choose a text concept for a question, you get to fill in two other fields - "Validation Regex" and "Validation Description Key". These allow you to enter the regex, and a description of the error message to show when the text does not match the regular expression
Yes. You can make a form available only to specific user groups by adding the group(s) to the form's "User Group" section. The User Group section is available on the Admin section.
Consider what data you need to collect in each stage of the program. Every stage is a different encounter type, and ia associated with a form. Encounter Type rules can be configured to ensure that only forms that are relevant at any point are shown in the app
This can be achieved by adding skip logic rule on the form fields
Yes. Avni can be rolled out in multiple languages at once. To have your app in multiple languages,
- Set up your language in Admin -> Languages
- Go to Translations and download translations. Make changes in the zip file as appropriate and upload the translations back into the system
- Usually an external tool like lokalise is used to add translations to the downloaded zip file
In the form designer, go to the field you want to mark as mandatory. Check the box, and it will be shown as mandatory. Remember that a field is mandatory only if it is visible. If you have created a visibility rule through which your form field is not visible, then the mandatory field on it will not be respected.
Yes. Media concepts (image, video and audio) can be used to capture photos, videos, and audio in Avni. Choose the right data type to capture the media that you need
You can create a follow-up by creating a new encounter type. If you want it to be scheduled at a particular point in time, it can be done through the Visit Schedule Rule. You can find the Visit Schedule rule in the "Rules" section of a form. You can navigate to the form either through the "Forms" section of the App Designer or through the "Encounter Types"/"Programs"/"Subject Types" section of the Admin section.
Yes. You can edit a form after it has been deployed by going to the form either through the "Forms" section of the App Designer or through the "Encounter Types"/"Programs"/"Subject Types" section of the Admin section. Any changes you make will be available to users once they sync the app. Older filled forms will still have any questions you delete, but they cannot be modified anymore.
In the Forms section, a form has a "Clone form" option. This can be used to duplicate an existing form.
By applying a validation rule on that particular numeric field
For a calculated field, a javacript snippet needs to written, sharing sample -
use strict'; ({params, imports}) => { const programEncounter = params.entity; const individual = programEncounter.programEnrolment.individual; const moment = imports.moment; const formElement = params.formElement; const _ = imports.lodash; let visibility = true; let value = null; let answersToSkip = []; let validationErrors = [];
const totalParticipants = individual.getGroupSubjects();
const participants = programEncounter.getObservationReadableValue("d81c0be9-77fb-4673-af36-4b28773a6378");
if(participants && participants.length > 0) value = totalParticipants.length - participants.length;
else value = totalParticipants.length;
return new imports.rulesConfig.FormElementStatus(formElement.uuid, visibility, value, answersToSkip, validationErrors);
};
Yes, form access can be configured on basis of the user's role. Under Webapp >> User groups >> Select the user group >> Permissions Under permissions tab there will be different permissions for each entity in Avni, based on requirement it can be configured
A Subject is the base entity for which data is collected. A subject can be a person, a household, a class, or even non-human entities like a waterbody or a toilet.
A Program is used to monitor a subject over a defined period.
Every program has an enrolment form (entry point) and an exit form (exit point).
Example: Pregnancy can be a program, with ANC and Delivery as program encounters. The enrolment form may capture one-time details like LMP and EDD.
In addition, subjects can have general encounters that are not tied to a program.
Example: Monitoring a waterbody daily without any enrolment or exit.
Maternal Health / Pregnancy Workflow in Avni
- Create the Subject
Type: Person
Purpose: Represents the pregnant woman whose health is being tracked.
- Registration Form
Contains: Basic personal and demographic details.
Captured once at the time of creating the subject.
- Configure the Program
Program Name: Pregnancy / Maternal Health
Program Components:
Enrolment Form
Captures one-time pregnancy details:
Last Menstrual Period (LMP)
Expected Delivery Date (EDD)
Height, weight
Previous pregnancy details
ANC (Antenatal Care) Forms
Scheduled automatically based on LMP date.
Tracks visits, vitals, investigations, and interventions during pregnancy.
Delivery Form
Captures delivery details, mode of delivery, complications, birth outcomes.
PNC (Postnatal Care) Forms
Scheduled after delivery.
Tracks maternal and newborn health.
Exit Form
Marks the completion of the program for that subject.
- Scheduling
All ANC and PNC visits are scheduled based on the LMP or delivery date.
Reminders and follow-ups can be set automatically.
- Data Flow
Subject created → registration form filled
Subject enrolled into Pregnancy Program → enrolment form captures one-time pregnancy details
ANC visits tracked and scheduled automatically
Delivery recorded → triggers PNC scheduling
PNC visits tracked
Exit form completes the program This structure ensures complete lifecycle tracking of maternal health, from registration to postnatal follow-up, with automated scheduling based on pregnancy dates.
Modeling Household → Individual Relationships in Avni
- Define Relationships
Navigate to: Webapp → App Designer → Relationships → Define
Here you can define the types of relationships that exist between individuals in a household.
Examples: Mother, Father, Daughter, Son
You can also specify which gender each relationship applies to.
- Configure Relationship Types
Go to: Webapp → App Designer → Relationship Types → Add New
Create a relationship and its reverse.
Example:
Mother → Son → reverse is Son → Mother
Mother → Daughter → reverse is Daughter → Mother
Father → Son → reverse is Son → Father
Father → Daughter → reverse is Daughter → Father
- Usage
Once defined, these relationships can be assigned to individuals within a household.
This enables tracking of household members, family hierarchies, and dependent relationships.
Recurring visits for a subject can be tracked by configuring the Visit Schedule Rule under the subject registration form in Webapp → App Designer. You can use the drop-down rule designer to set fixed-frequency visits for any form. For more complex or custom scheduling, a JavaScript rule can be written. Sample rules are available in the README documentation
Setting Up a Longitudinal Data Collection Workflow in Avni
Understand Longitudinal Data Collection
Avni is designed for longitudinal data collection, allowing you to capture data for a subject (the on-ground entity) over time, at predefined intervals and frequencies.
This ensures structured, continuous tracking of any subject, such as a person, household, or facility.
Configure Data Collection
Define your subjects and forms in Webapp → App Designer.
Set up visit schedules, program encounters, or recurring forms to capture data at the required frequency.
Export Longitudinal Data
Navigate to Webapp → Longitudinal Export.
You can download the data in a format that maintains the chronological order of observations for each subject.
This gives you a ready-to-analyze dataset showing how data for a subject changes over time.
Handling Referrals Between Workers in Avni
Set Up User Roles
Navigate to Webapp → User Groups.
Create different roles or user groups based on responsibilities.
Assign appropriate permissions to each group and add the respective users.
Schedule Referral Visits
Using the scheduling feature, you can assign referral visits to the appropriate worker.
These visits appear in the assigned user’s task list for follow-up.
Use Offline Report Cards
Configure offline report cards to highlight records that require referrals.
The responsible user can track and act on these referrals even when offline.
Managing Cases that Get Closed and Reopened in Avni
Cases Configured as Programs
When a subject is enrolled in a program, it can be exited (closed) using the Program Exit feature.
Reopening Cases
If a case needs to be reopened, you can undo the program exit.
This makes the subject/case available again for data recording and collection.
Configuring Multi-Step Service Delivery in Avni
- Independent Services
If the services are independent of each other, Avni allows multiple program enrolments for a subject at the same time.
Example: A person can be enrolled in both:
Pregnancy Program
Mental Health Program
Each program runs independently, with its own forms, schedules, and follow-ups.
- Dependent Services / Multi-Step Workflow
If the service delivery steps are dependent on each other, you can configure them within the same program:
Use assessment forms scheduled at predefined intervals.
Add logic rules to trigger specific forms based on previous data or conditions.
Example:
Step 1: Initial assessment
Step 2: Trigger counseling form if certain risk indicators are recorded in Step 1
Step 3: Follow-up visit forms automatically scheduled based on Step 2 outcomes
Linking a Child Record to a Household Subject in Avni
Yes, you can link a child (or any individual) to a household subject in Avni.
Avni provides a built-in feature to:
Add members to a household
Designate the head of the household
Additionally, you can define relationships between household members to make the mapping clearer
Managing Subjects Across Multiple Programs in Avni
Avni allows a single subject to be enrolled in multiple programs simultaneously.
There is no extra setup required to manage this.
Each program runs independently, with its own forms, schedules, and follow-ups, allowing flexible tracking of different services for the same subject.
This makes it easy to monitor multiple aspects of a subject’s data without conflicts or additional management overhead.
Modeling Seasonal Data Collection (e.g., Crops) in Avni
1.Schedule Forms at Predefined Times
In Avni, forms can be scheduled to appear at specific times of the year using predefined scheduling rules or logic.
This allows you to capture seasonal crop information at the right time for each subject (e.g., farm, field).
- Use Conditional Logic for Fields
If the same form is used across seasons, you can hide or show fields dynamically based on:
Season
Crop type
Other user input or data logic
This ensures that only relevant information is captured during each season.
Multiple approaches in Avni allow flexible and accurate collection of seasonal data without creating separate forms for each season.
- One-Time Survey
Can be captured:
Within the subject registration form itself
Or as a general encounter outside any program
Ideal for surveys or data collection that happens only once per subject.
- Ongoing Case
Best managed using a program in Avni.
Programs allow you to:
Track the enrolment of the subject
Capture multiple encounters over time (e.g., ANC visits, monitoring forms)
Record exit of the case along with exit reasons (e.g., completed, migrated, dropped out)
Suitable for scenarios requiring longitudinal tracking and multiple touchpoints.
In Avni, data can be collected against a specific location, and users (data entry personnel) can be assigned access to a predefined set of locations. This ensures that each user records data only for the locations they are responsible for. Additionally, MIS reports can be configured with location filters, allowing supervisors and managers to analyze and monitor data across multiple locations efficiently. This setup makes it easy to manage data collection, access control, and reporting for projects spread over different geographic areas.
Yes, Avni allows you to assign subjects to specific users or teams using the subject assignment feature. This can be configured under Webapp → App Designer → Subject Types → Select Subject, where the toggle “Sync by direct assignment” enables syncing of subjects directly assigned to users. The actual assignment of subjects can then be easily performed from Webapp → Assignment, ensuring that users or teams only access the subjects they are responsible for.
Baseline data is typically collected at the start of a program, while follow-up data is recorded at subsequent visits. In Avni, both baseline and follow-up data collection can be easily configured using form visit scheduling, allowing you to define when each form should be filled for a subject, ensuring structured and timely data capture throughout the program.
In Avni, registering a school as a subject can be avoided if no specific information needs to be captured against it. Instead, the school can be configured as a location, and classes and students can be registered under the same school location. Classes can be set up as group subjects, and students as person subject types, assigned to their respective classes. Forms can then be configured for any subject or class where data needs to be captured—for example, classrooms can have daily attendance forms scheduled, which users can fill out directly from the app, enabling efficient tracking of students within the school.
Avni does support identifiers, and multiple identifiers can be created and used for the same subject. However, since Avni is primarily an offline data collection tool, there are certain corner cases where duplicate identifiers may get assigned—for example, when the same user enters data on two devices or when the web-based data entry app is used. In such situations, it can become difficult to support and debug issues. Therefore, we generally do not recommend using multiple identifiers unless they are strictly distributed or tracked on the ground, where duplication risks are minimized.
Avni provides the ability to capture GPS location data with each form submission. This can be enabled for any user by going to Webapp → Admin → Users, selecting the desired user, and toggling “Track Location” to true. Once enabled, the GPS coordinates will automatically be recorded whenever that user fills out a form, ensuring location tracking for each encounter.
If a case is managed as a program in Avni, users can decide when it should be closed based on their training and then complete the exit form with the correct exit information. Alternatively, closure criteria can be built into the workflow by assessing the data entered in each form and guiding the user to exit the program when predefined conditions are met. With some customization, the user flow within forms can also be structured to prompt or direct users toward program closure at the right time, ensuring consistency in case management.
Yes, in Avni you can link data from one form into another. This is done using form element rules with JavaScript, which allow you to fetch data from previous forms and use it within the current form. Once fetched, the data can also be processed further based on your requirements, enabling seamless continuity across different forms.
// SAMPLE RULE EXAMPLE: Calculate BMI from Height and Weight 'use strict'; ({ params, imports }) => { const programEnrolment = params.entity; // Current program enrolment const formElement = params.formElement; // The form element this rule is linked to
// Fetch observations for Height and Weight (update names as per your form) let height = programEnrolment.findObservation("Height of women"); let weight = programEnrolment.findObservation("Weight of women");
height = height && height.getValue(); weight = weight && weight.getValue();
let value = '';
// If both height and weight are valid numbers, calculate BMI if (_.isFinite(weight) && _.isFinite(height)) { value = ruleServiceLibraryInterfaceForSharingModules .common .calculateBMI(weight, height); }
// Return the BMI value into the current form element
return new imports.rulesConfig.FormElementStatus(formElement.uuid, true, value);
};
Replace "Height of women" and "Weight of women" with the exact observation names in your form.
calculateBMI is already available in the shared rule service library, so no need to manually code the math.
This rule is from the Pregnancy Program Enrolment form
No, Avni does not allow you to block form submission if a rule fails. Instead, when a rule fails, it creates an entry in the rule failure table, which helps developers or implementors identify and debug the issue. This ensures that data collection is not disrupted in the field, while still allowing backend teams to track and resolve rule-related errors.
Avni does not provide an in-app alert or notification feature. However, abnormal values like high blood pressure can still be highlighted during data entry. For example, while configuring a numeric field (such as BP Diastolic) in the App Designer, you can set thresholds (e.g., High Normal = 80). If a user enters a value above this, it will automatically be highlighted in red to indicate an abnormal condition. Additionally, these abnormal values can be included in decisions within the form, and the resulting decision outcomes can be displayed in the program summary of that individual, making it easier to track and review cases of high blood pressure. Furthermore, an offline report card can be configured to list and navigate to such cases, allowing field teams to easily identify and follow up on individuals with high BP.
Within a rule it can be easily accessed from the drop down avaiable. Or else in case you want to customise the rule further it can written in javascript like this- individual.getAgeInYears() < 5
No, Avni does not have a built-in notification or alert triggering system. However, this need can be addressed by configuring an offline report card on the supervisor’s app dashboard. The report card can be designed to display highlighted cases—such as abnormal conditions or referrals—that supervisors need to track. This way, instead of receiving notifications, supervisors can regularly review the dashboard to monitor the cases that require their attention.
In Avni, conditional program enrollment can be handled using the Enrolment Eligibility Check Rule available under program configuration. You can add a custom rule here to define the eligibility criteria for a subject. When an individual does not meet the defined conditions, the option to enroll them in that program will not appear on their profile.
There are a few Javascript libraries that are present by default in the Avni rules. This include lodash and momentjs.
Security restrictions limit the addition of other Javascript libraries within the rules
//Sample rule to autopopulate the height of child from his previously filled encounter - 'use strict'; ({params, imports}) => { const programEncounter = params.entity; const moment = imports.moment; const formElement = params.formElement; const _ = imports.lodash; let visibility = true; let value = null; let answersToSkip = []; let validationErrors = [];
let obs = programEncounter.programEnrolment.findLatestObservationFromEncounters('Height', programEncounter);
if(obs) { value=obs.getReadableValue(); }
return new imports.rulesConfig.FormElementStatus(formElement.uuid, visibility, value, answersToSkip, validationErrors); };
OR it can be easily achieved via rule designer
A phone number is typically added as a Text concept with a validation rule. There are different regex rules that you can write. Some examples are
^[0-9]{10}$ - 10 digits only ((+)((0[ -])|((91 )))((\d{12})+|(\d{10})+))|\d{5}([- ]*)\d{6} - All different kinds of phone numbers
You can add two dates when you schedule a visit. Due Date - The earliest date on which a visit is expected to happen Overdue Date - The latest date by when a visit is expected to happen
Visits that are due and overdue can be shown on the app on the dashboard, and on reports. This allows users to understand which visits are due to be completed, and which ones have gone past the due date
Yes, sample rule to fetch height from a previous encounter is - 'use strict'; ({params, imports}) => { const programEncounter = params.entity; const moment = imports.moment; const formElement = params.formElement; const _ = imports.lodash; let visibility = true; let value = null; let answersToSkip = []; let validationErrors = [];
let obs = programEncounter.programEnrolment.findLatestObservationFromEncounters('Height', programEncounter);
if(obs) { value=obs.getReadableValue(); }
return new imports.rulesConfig.FormElementStatus(formElement.uuid, visibility, value, answersToSkip, validationErrors); }; OR it can be easily achieved via rule designer
Under subject config on webapp there is a toggle for Unique names - If active then user can't register a subject with duplicate names within their catchment
This can achieved via a visit scheduling rule of the form from the form after which the next followup should be scheduled. It can be configured via webapp >> app designer >> form >> Visit scheduling rule
Sample rule to calculate - "use strict"; ({params, imports}) => { const programEncounter = params.entity; const formElement = params.formElement;
let edd = programEncounter.programEnrolment .getObservationReadableValueInEntireEnrolment('Estimated Date of Delivery', programEncounter); let dateOfDelivery = programEncounter.getObservationReadableValue('Date of delivery');
const value = imports.motherCalculations .gestationalAgeForEDD(edd,dateOfDelivery);
return new imports.rulesConfig.FormElementStatus(formElement.uuid, true, value); };
You can add a validation rule in the registration form to through a validation if the age limit is not matched. Until validation error is not resolved the registration couldn't be saved
For referral workflows, multiple rules can be used -- Decision rules, program Summary rules and Custom offline report cards
If a rule fails in the avni app, its entry will be available on Web app >> App designer >> Rule failures >> Find the rule failure with individual uuid or the timestamp, it will have further details of the rule failure which can be used to debug the issue and fix it accordingly
No, only rules alone cant be exported. Reviewing code is easy on the webapp interface itself.
Yes, Avni can be used fully offline for a week or even longer, since data is stored locally on the device. The only thing to keep in mind is that offline use works reliably as long as another user is not using the app for the same set of individuals or doing data entry for the same records during that period. Once you reconnect to the internet, all pending data will sync back to the server.
You can change the app language directly from the Avni mobile app. Just open the app, go to More, tap on your username at the top, and then select from the available languages. Once selected, the app will switch to the chosen language immediately.
On the field app home screen, you’ll see a search icon at the top right. Tap on it, select the subject type you want to look for, and then enter the subject details (like name, ID, or other identifiers). After clicking the submit button, the app will display a list of matching records.
Yes, Avni allows to edit the registration information.
Avni allows to do data entry for the back dates, just select the date on top of the visit while filling the form
There is no feature to delete a record from the Avni mobile app. So a field user wont be able to do so. Avni allows to void the record which can be reverted by undo void
You can check sync status from the sync button on the home screen (top right corner). If your data is fully synced, there will be no numbers showing on the sync icon. If numbers are visible, it means there are pending activities waiting to be synced.
Yes, you can. On the subject profile or the program profile, all completed encounters are displayed, allowing you to review past data entries.
You can simply void the subject
Webapp >> Assignments >> Search the subject and update the user detail for assignment
Yes, until unless you have the permission, you can edit the forms easily in Avni
Logging out wont loose data, once u login back without any other action on the app, the data will sync
Raise an urgent support ticket with proper details on the Freshdesk link provided by Avni team
In case there are duplicate subjects registered then void one of them.
Yes, but avoid using Avni app with same login details on different devices
Similar to other apps, on Google play store>> Avni >> Install updates
Make sure after login the sync was successfull 100%
You can download data from Webapp >> Longitudinal export >> It will give you a csv file
No, currently there is no automatic data export. Avni has its won backups running so nothing to worry
added to git
added to git
added to git
added to git
added to git
added to git
In Avni single select or mutliselect fields can be created from Webapp >> App Designer>> Form >> New form element >> New concept >> Select Coded datatype >> Add predefined options as answers. Then mark the field if can be single select or multi select
Avni provides comprehensive bulk data upload functionality through the Admin web console:
-
Supported uploads:
- Subjects (individuals/entities)
- Program enrollments
- Program encounters
- General encounters
- Locations and catchments
- Users and their catchments
-
Process: Download sample CSV templates from the Admin interface, fill with your data, and upload
-
Validation: Basic level of form validations and rules executions are done during upload - mandatory fields are enforced, hidden fields are ignored based on form element rules
-
Automated processing: Visit schedules and decisions are automatically created based on your configured logic
Answer: Avni provides comprehensive communication capabilities through SMS and WhatsApp integrations:
- Password reset OTP and user credential sharing
- Phone number verification for beneficiaries
- Multi-language support with secure authentication
- Trigger WhatsApp messages on events (registration, enrollment, visits)
- Bulk and individual messaging capabilities
Use cases: Health camp reminders, ANC visit alerts, motivational content, field worker notifications
Setup: Organizations need MSG91 and Glific accounts configured in Avni.
Avni does not support API monitoring. Avni does provide RESTful External APIs which can be leveraged to fetch data from Avni or Push data to Avni, API docs for which are available here.
Yes, for locations, we can do it through Location concepts:
-
Location concept type: Supports hierarchical location selection
-
Configuration attributes:
- Within Catchment: Whether locations must be within assigned catchments
- Lowest Level(s): The most granular location types to capture
- Highest Level: The broadest location type to capture
-
Implementation: Location concepts automatically provide cascading selection based on your configured location hierarchy (state → district → village)
-
Catchment control: Can restrict selections to locations within field workers' assigned areas or across the entire Location heirarchy of the organisation.
Coded concepts can be structured in multiple levels with parent-child relationships:
- Level 1: Primary categories (e.g., "Health Services")
- Level 2: Sub-categories (e.g., "Maternal Health", "Child Health")
- Level 3: Specific services (e.g., "ANC Visit", "PNC Visit", "Immunization") We can configure FormElementRules to show / hide Answer Concepts at lower levels based on the selection of higher level concepts.
Answer: Questions in Avni are based on Concepts, which are reusable across forms:
- Concept reuse: Once a concept is created, it can be used in multiple forms
- Form element creation: Add the same concept to different forms as form elements
- Consistency: Using the same concept ensures data consistency across forms
- UUID-based: Concepts use UUIDs internally, so the same concept can have different display names via translations
The documentation emphasizes that concepts should be considered "programming keywords" representing ideas that can be reused across multiple forms.
Answer: No in Avni Forms, we cannot hide a field from data collectors but keep it for admins. What you see in the form is what gets stored. You may additionally create Read-Only Form Elements or Configure Decision Concepts which are auto-generated based on the form data.
Answer: Avni supports user language preferences that determine the language used throughout the Avni Mobile App, including forms, report cards, menu items, and button text. Avni does not have form-specific default language configuration.
- Translation framework: Avni supports multiple languages for all user-facing content
- Language-specific translations: Create translations for each supported language
- Default language: Configure the primary language for your organization
- Form element translations: All form elements can have language-specific display text
Yes, through FormElement / FormElementGroup Rules, we can implement validation to restrict date fields to future dates only.
There is a User level "Track Location" setting that needs to be enabled for Geographical coordinates to be captured. Switches on location tracking on the Field App during first time create of Subject or Encounter.
Yes, we can auto-calculate values based on other form elements. Example: Calculate BMI from height and weight, or compute totals from multiple numeric fields.
We do not recommend this approach, rather based on Business need, recommend setting up a Program or Encounter form that should be used to capture change in subject's status post registration.
You can move questions up or down when designing the form in the Avni web app. Just drag and drop them into the order you want.
Yes. Avni lets you create a question with multi-select options. While creating the question, select
Date type = Coded Type = Multiselect This will let users tick more than one option for that question.
Yes. It can be done by writing a rule stating that after the first value is entered and form saved, this question should not be editable again.
This is also possible with rules. You can write a validation rule: if Field A is empty, then Field B must be filled (i.e. generate validation error if both are empty).
You can add this as a question group. While adding the question in the form, add this as a question group and add the queston as Contact Number 1, Contact Number 2 ...
No, not currently
No. Avni does not support automatic case closure based on time. Once the program reaches the end, the user must manually exit the beneficiary from the program by clicking the Exit button available next to the program enrollment form.
Yes. It can be done by writing a rule stating that after a certain period or after filling in some other encounter, this form should not appear again.
Yes. It can be done by setting Concept type = Coded, Data type = Single Select (Yes/No), and marking it as Required.
Yes. It can be done by writing a rule. For more details, kindly refer to avni readme for rule details
In Avni, there are two concepts for handling images: Image and ImageV2, where the main difference is that ImageV2 also captures the location of the image. To configure this, navigate to WebApp → App Designer → Form, create a new form element, and add a new concept with the data type set as either Image or ImageV2. You can then select whether it should be Single Select or Multi Select, and save the element. Additionally, if more specific image dimensions are required, you can define the width and height within the form element settings.
Yes, you can create dynamic labels based on other fields by adding a rule to the field, either manually or by using the Rule Builder. For detailed steps, refer to the Avni documentation on ReadMe or reach out to our support team for assistance.
You can implement conditional skip logic either by manually writing a rule or by using the Rule Builder. To do this, go to App Designer, then create a new form or open an existing form. You will find the Rule option next to Details, where you can define the skip logic as needed.
Currently, there is no feature available for reminders, but users can track upcoming encounters by adding a dashboard card for it to the dashboard.
To create a repeatable group of fields, go to WebApp → App Designer → Form, create a new form element, and add a new concept with the data type set to Question Group. This allows you to add multiple fields under it. You will find a checkbox labeled Repeatable — enable it to configure the group as repeatable.
Go to WebApp → App Designer → Form, create a new form element, and add a new concept with the data type set to Numeric. You will need to manually write a rule to ensure the system only accepts decimal values. To learn how to create this rule, refer to the Avni documentation or reach out to our support team for assistance.
Go to Admin → User Groups, create a new group named Supervisor, and add all users who need supervisor access to this group. Then, click on Permissions, select the program, and toggle the Enrollment option to enable it. This ensures that only users in the Supervisor group can enroll program. Note: Make sure to disable (untoggle) the enrollment option for all other user groups so that only supervisors have this permission.
Yes, this can be done by enabling the View Only permission for the respective user groups.
Go to App Designer → Create a new form or open an existing form, then create a new form element and add a new concept with the data type set to Location. This will allow you to capture and record the GPS coordinates.
Yes we can do my adding the rule in the form
Webapp>> App Designer >> Form >> Coded concep field >> form element rule of the field >> The rule designer allows to select action of displaying "Value" with some conditions. Generate and save the rule
By default, Avni assigns cases based on location. Each user is linked to a catchment. And each catchment is a set of locations
- Create a Subject Type
Go to Webapp → App Designer → Subject Types → Create New.
Give it a name like Person or Individual.
Select Person from the subject type dropdown.
On save, a default registration form is created.
This form already includes first name, last name, age, gender, and location. You can add more fields as needed.
2.Create a Program
Go to Webapp → App Designer → Programs → Create New.
Name it Chronic Disease.
On save, Avni automatically creates an Enrolment Form and an Exit Form.
3 Create Encounters
Go to Webapp → App Designer → Encounters → Create New.
Select your program (Chronic Disease).
Give the encounter a name.
Avni automatically creates and maps the form for this encounter.
Customize Forms
Go to Forms and edit the Registration, Enrolment, Exit, and Encounter forms.
Add fields, rules, and logic as per your requirements.
Yes. In Avni, you can register subjects and enter data against them. Under subject creation, you also have User as a type of subject. This means you can create a subject type for users or facilities and then do data collection and monitoring for them as well.
- Create a Subject Type
Go to Webapp → App Designer → Subject Types → Create New.
Name it Person or Individual.
Select Person from the dropdown.
On save, a default registration form is created with fields like name, age, gender, and location. Add child-specific fields if needed.
2.Create a Program
Go to Webapp → App Designer → Programs → Create New.
If the program name is set to Child, Avni automatically generates growth charts for enrolled children.
On save, the Enrolment Form and Exit Form are created automatically.
3.Create Encounters
Go to Webapp → App Designer → Encounters → Create New.
Select the Nutrition Tracking (or Child) program.
Give the encounter a name (e.g., Monthly Nutrition Check).
A form for this encounter is created and mapped automatically.
4.Customize Forms
Go to Forms and edit the Registration, Enrolment, Exit, and Encounter forms.
If the program is for children, make sure to include Height and Weight concepts in the forms—these are required for growth chart generation.
You can also add other nutrition-related fields (e.g., dietary intake, supplementation) and set rules or logic as needed.
Yes. You can create separate subject types for Teacher, Student, and Guardian. Then, by using the subject type concept in the forms, you can link them together. For example, a Teacher can be added in the Student form (or vice versa), and a Guardian can also be linked to the Student.
You can further enhance this by:
Using summary rules to show the linked values (e.g., Teacher or Guardian name) at the top of a profile.
If you click on the Teacher’s name in a Student’s profile, it will take you directly to the Teacher’s profile.
Yes, a subject can be enrolled in multiple programs at a time
Create a program named Child. Then add a checklist rule at the form level rules and vaccine details in the checklist JSON. The JSON contains information about vaccines and their schedules. Sample rule code and a sample JSON are available in the Avni README documentation.
Yes. This can be achieved in multiple ways:
1.Train users to monitor the condition during each follow-up and exit the program when the milestone is reached.
2.Use a decision rule to highlight when a condition is met, and show it as a counselling point to exit the program.
3.Apply a worklist updation rule to prompt exit on the next button. A sample worklist updation rule is available in the Avni README documentation.
Yes. Avni is designed to support interventions at both the household and individual level. You can also map individuals to households, so data is linked and tracked together.
Avni supports scheduling visits in advance using the visit schedule rule. By configuring the rule logic, you can set up seasonal or recurring visits—such as annual surveys, quarterly check-ins, or any other periodic follow-up.
Yes. Subject assignment can be done for multiple users, even if th
Migration of subjects is not supported in the mobile app. However, within a catchment, users can update the subject’s address to reflect their temporary location.
Yes. Dropouts and their reasons can be captured in program exit forms. You can then track exit cases through the mobile app, custom reports, or using the longitudinal export.
Yes. Avni provides an out-of-the-box approval mechanism. Permissions for approving or rejecting entities can be given to specific users through user groups. To include an entity in the approval workflow, simply enable the approval setting while creating the entity in the App Designer.
This can be done by adding an age-based condition in the visit schedule rule designer. That way, children and adults can each have their own visit schedules.
You can model disaster relief beneficiaries in Avni by:
1.Creating a Subject Type – e.g., Individual or Household, depending on whether relief is tracked per person or per family.
2.Designing Registration Forms – include fields like name, age, gender, address, disaster-affected status, and relief needs.
3.Creating a Program – e.g., Disaster Relief Support. On save, an enrolment and exit form are created automatically.
-
Adding Encounters – e.g., Relief Distribution, Shelter Support, Medical Check-up.
-
Customizing Forms – capture details such as type of relief provided, date, follow-up needs, or referrals.
-
Using Rules (optional) – to highlight vulnerable groups (children, elderly, disabled) or track milestones like completion of relief support.
Yes. Eligibility checks can be added in the visit schedule rule designer. Based on these conditions, workflows can branch—for example, scheduling different visits or follow-ups only if the subject meets certain criteria.
While this is not a usual situation, Avni does not prevent you from adding the same member to multiple households. Go to a household on the app and add any member that you want
Avni considers individuals and groups as subject types. A group subject type is a subject type that allows you to add members. This can be used to model households, classrooms and much more.
Create two different subject types, one for the individual and another for the group. Register them separately and add members to the group subject type
Yes, you can create a single program with multiple enrollments. To do this, go to App Designer → Create or edit a program, then look for the "Allow Multiple Enrollments" option. Enable it to allow the system to support multiple enrollments for that program.
Yes, this is possible, but your administrator needs to set it up first.
Why it's possible:
Avni has built-in features specifically designed for tracking child growth The system can automatically calculate growth charts and detect malnutrition It can remind you when children need their next check-up How you can use it:
Ask your supervisor or IT administrator to set up the "Child Growth Monitoring" program for you Once set up, you'll see a "Child Program" option in your mobile app When you register a new child, fill in their weight, height, and age The app will automatically show you if the child's growth is normal or needs attention The app will tell you when to schedule the next visit for each child
Yes, this works automatically once your program is set up.
Why it's possible:
Avni is smart enough to know that older children need fewer check-ups than babies The system can automatically adjust visit schedules based on the child's age This helps you focus more time on children who need it most How it works for you:
When you enroll a baby (0-2 years), the app will schedule monthly visits For toddlers (2-5 years), it will automatically change to every 3 months For older children, visits become less frequent (maybe once a year) You don't need to remember this - the app will show you the correct schedule Your dashboard will always show you who needs a visit and when
Yes, you can easily check and update your forms.
Why it's possible:
Avni automatically keeps your forms up to date The app shows you when new forms are available You can update forms even when you have poor internet connection How you can do it:
Open your Avni app Look for a "Sync" button (usually at the top or in settings) Tap "Sync" - this will check for new forms and updates If you see "Last synced: [recent date/time]" then your forms are current If sync hasn't happened recently, try: Make sure you have internet connection Pull down on the main screen to refresh Go to Settings and tap "Force Sync" The app will show you if any forms were updated
Yes, you can switch between different health programs easily.
Why it's possible:
Many health workers handle multiple programs (like child health AND maternal health) Avni lets you switch between programs without closing the app Each program has its own forms and people to track How you can do it:
On your main screen, look for a program selector (might say "Child Health" or "Maternal Care") Tap on it to see all programs you're assigned to Select the program you want to work on The app will show you only the people and forms for that program To switch programs, just tap the program selector again and choose a different one Your work in each program is kept separate - no mixing up of data
Yes, your app shows you exactly who you're responsible for.
Why it's possible:
Avni knows which areas and people you're assigned to work with The app filters to show only your assigned people You can search and sort to find people quickly How you can do it:
To find someone specific: Use the search box at the top Type their name or ID number To filter your list: Look for filter options (might show "All", "Due for visit", "Overdue") Select the filter you want The app organizes people by: Who needs a visit today Who is overdue for a visit Who you've recently visited
Yes, you can register new people even without internet.
Why it's possible:
Avni works offline - it saves everything on your phone first When you get internet connection later, it uploads the data automatically This is very helpful when working in remote areas How you can do it:
Open your Avni app (works even without internet bars) Tap "Register" or "Add New Person" Fill out the registration form completely Tap "Save" - the information is stored on your phone You'll see the person added to your list immediately When you get internet connection: The app will automatically upload the new registration You'll see a sync notification The person's data is now safely stored on the server
Yes, your partially filled information is automatically saved.
Why it's possible:
Avni automatically saves what you've filled in as you type If you leave a form incomplete, your information stays there when you come back Only completely finished forms get sent to the server How it works:
Start filling out a form for someone If you can't complete it right now, just go back or close the form Your filled information is automatically saved on your phone Later, go back to that person's profile Tap on the incomplete form - you'll see all your previous answers are still there Continue filling from where you left off Only when you complete the entire form and submit it will it sync to the server Incomplete forms stay only on your phone until you finish them
Yes, the system will catch this and help fix it.
Why it's handled:
Sometimes two health workers might register the same person by mistake Avni is smart enough to detect when this might happen The system helps merge duplicate records safely How it works:
Before registering someone new, always search first: Use the search box to look for their name Check if they're already in the system If you accidentally register someone who already exists: The system will notice during sync Your supervisor will get a notification about possible duplicates Your administrator can then: Compare the two records Merge them into one correct record Keep all the important information from both Always search before registering to avoid this problem
Yes, you can update someone's status when they pass away.
Why it's possible:
Unfortunately, this sometimes happens in health programs Avni needs to know so it stops scheduling visits for that person All their previous health records are kept for reporting How you can do it:
Find the person in your subject list Tap on their name to open their profile Look for "Update Status" or "Mark as Deceased" option Tap on it and confirm the action Fill in the date if asked Save the changes The person will: No longer appear in your active visit list Stop getting scheduled for future visits Their historical data remains for reports
Yes, your app shows you exactly what work you need to do each day.
Why it's possible:
Avni creates a personalized schedule for each health worker It shows you who to visit and when You can plan your week and track your progress.
You'll see: People who need visits today (usually highlighted) People due for visits this week Overdue visits (often shown in red) For each day, you can see: How many people to visit Their names and locations What type of visit (check-up, follow-up, etc.) As you complete visits, they'll be marked as done Your progress for the week is shown as completed vs. remaining tasks
After login >> home dashboard>> More >> Change password
By default dashboard displays card to show overdue and due visits both for the subject selected
By editing subject registration form
Yes, within same login you can do data entry for multiple programs
Avni supports upload of signatures as files. However, direct signature using a stylus or finger on the mobile application does not exist
Yes. On the App Designer, there are two options - the ability to design the exact fields that you can search subjects by, and also decide which fields should be present in the search result fields.
To set this up, go to App Designer -> Search Fields. Configure fields that are relevant to each subject typs. Go to Search Result Fields -> Add the fields you would want to see there.
Remember that search result fields only show registration fields, and not all questions on every form
If you have a paid account, you can use the ticketing system that you have to raise the issue. If not, join the community Discord channel at https://discord.gg/4pcgcQW8pk. The community is pretty friendly, you should be able to find your answer
App updates from the PlayStore work seamlessly. Remember not to delete or uninstall your app. If you do so, you will lose all unsynced data
On the Avni app, the top right button is the sync button. If there is data that has not yet synced to the server, it will show a badge with the number of items left to sync. If you don't see a badge, the data is in sync with the server.
The app does not specifically show which items have not yet been synced
To achieve this, there is a feature called "Drafts". On your Admin-> Organisation Details, enable Draft Save option. It will automatically save the form, but will not be sent to the server until you finally save the details
There are a few options to achieve this.
If there are multiple users, and a user needs to work on a specific language, you will first need to set up that language and add translations to it. A user can go to their profile on the "More" menu of the home screen of the app, and choose the language of their choice.
You can also add your question in multiple languages within the question itself to achieve this if you want both languages to show up at once
Since the data comes from field users, it is best not to collect sensitive information if it does not directly help with the programme. If it directly helps, then the field users will need to use them, therefore there is little value in hiding it from them.
If you consider one form in your application to be sensitive, and want to prevent a cadre of workers from accessing it, you can achieve this using User Groups and Permissions. These options are available in the Admin section
On Android: Settings → Location → Mode → High accuracy (uses GPS + WiFi + mobile networks).
Ask users to wait a few seconds outdoors before capturing, so the GPS can “lock on” to satellites.
Ensure permissions for location services are granted to the Avni app.
Cheaper phones may only give ±20–50m accuracy. Higher-end phones can get within 3–5m. If precision is critical (e.g., mapping households), budget for better devices.
You can go to the form and edit it back to what you want. A direct "Undo" option does not exist on Avni
When I sign in to Avni, it says catchment not set up. What are catchments, and how do I set them up?
Avni works on the basis of catchments, where a user needs to be assigned a group of locations (called catchment). This ringfences the data on their phones to just the area they work in, reducing data usage and storage, preventing accidental changes, improving performance.
In order to work on the Avni field app, you first need to set up
- Locations
- Catchments
Once you set up a catchment, you should assign the catchment to the user through the Users section on the Admin screens
Avni has been designed for people with relatively low mobile phone literacy and areas with patchy internet availability. The security measures have been designed to ensure they are able to use the app. As a result, the app does not ask for a login if you have not explicitly logged out.
Security features of the mobile phone is expected to keep the data private with the owner of the phone
If you prefer, or if you are at a place where your phone might be used by others, we recommend you logout of the app before handing over the phone to others.
I signed out from Avni and am now at the field. The app is taking me to the sign-in screen. What can I do?
Unfortunately, signing in requires internet connection and cannot be performed offline
At this point, 2 factor authentication is unavailable on Avni
Avni is designed to work in offline settings where the app is a primary work app. Any information to the user can be conveyed by directly showing it on the app.
The Broadcasts feature helps with any broadcasts, and Whatsapp broadcasts can be used to send Whatsapp messages to a user if required.
Data going to the cloud is encrypted. In the cloud databases, data is stored encrypted
Avni is open source tool that provides similar to commcare, ODK
Avni stands out for advanced case management features, customizable decision support algorithms, multi-language support, offline capabilities, full control over data, and a high level of security/privacy. It is fully open-source, making it more flexible and cost-effective compared to many proprietary competitors like CommCare.
Self Service: User independently configures and customizes the platform.
Assisted Self Service: Avni provides guidance and support, but the application is primarily built by the user.
Samanvay Managed Service: End-to-end solution where Avni sets up, customizes, and manages the platform for the organization.
Yes , multiple languages can be added to the app and as per need toggle between different languages
Data will available near to real time basis as offine data needs to be synced by users. Auto sync is available that happens every 1 hour but it depends on moinle phone sand app setting
No, it is an open source with 3 different options . More details https://avniproject.org/pricing