🎵Djie Ding Sranangman by Sonora Paramarera
Welcome!
Insiders call #3
Logistics
Reminder: please reserve support questions for the forum
👋 Welcome
🚀 Product roadmap update
⚡ Lightning talk from Rudo Kemper
🍿 Deep dive: Prevent duplicates or show summary with Entities
Agenda
Lightning talk 🍿
Deep dive
Entities to prevent duplicates or show summary
User requests
Link two forms so they access each others’ data
Flow submissions from one form into another
Let forms access all submission data on device
Share resource lists across forms (e.g. districts)
Link submissions about the same subject
Show a summary of data collected on devices
The challenge
Multi-step
workflows
The challenge
Every 6 months
Register person
Deliver stove
Measure stove impact
Entities help
automate workflows
Our solution
You can think of…
CSVs in the cloud
Shared database
Should I use Entities?
Our solution
Data shared between forms that can be updated at any time adds complexity!
Make sure it’s worth it for your workflow
⚠️
Accessing Entities
instance('people')/root/item[place=${place}]/visits
List lookup expressions
Filter
(same as a choice filter)
Your entity list
Desired property
pulldata("people", "visits", "place", ${place})
instance('people')/root/item[place=${place}]/visits
List lookup expressions
Filter
(same as a choice filter)
Your entity list
Desired property
pulldata("people", "visits", "place", ${place})
Understanding list lookups
instance: places
root
item
name: c2139aae-5…�label: Ifedore
geometry: 5.09 7.35 12 0
population: 270900
enumerator: 6234
item
name: f1ad1a8a-c…�label: Magama
geometry: 5.05 10.46 11 0�
population: 311300
enumerator: 2742
instance('places')/root/item[enumerator='6234']/label
instance: people
root
item
name: da0ee575-d…�label: Xue - 2341745
place: c2139aae-5…
visits: 1
last_visit: 2024-5-1
phone: 2341745
item
name: c51c32ac-1…�label: Dia - 9868545��place: c2139aae-5…
visits: 3
last_visit: 2024-4-12
phone: 9868545
instance: places
root
item
name: c2139aae-5…�label: Ifedore
geometry: 5.09 7.35 12 0
population: 270900
enumerator: 6234
item
name: f1ad1a8a-c…�label: Magama
geometry: 5.05 10.46 11 0�
population: 311300
enumerator: 2742
count(instance('places')/root/item[population > 300000])
instance: people
root
item
name: da0ee575-d…�label: Xue - 2341745
place: c2139aae-5…
visits: 1
last_visit: 2024-5-1
phone: 2341745
item
name: c51c32ac-1…�label: Dia - 9868545��place: c2139aae-5…
visits: 3
last_visit: 2024-4-12
phone: 9868545
instance: places
root
item
name: c2139aae-5…�label: Ifedore
geometry: 5.09 7.35 12 0
population: 270900
enumerator: 6234
item
name: f1ad1a8a-c…�label: Magama
geometry: 5.05 10.46 11 0�
population: 311300
enumerator: 2742
sum(instance('people')/root/item[visits > 1]/visits)
instance: people
root
item
name: da0ee575-d…�label: Xue - 2341745
place: c2139aae-5…
visits: 1
last_visit: 2024-5-1
phone: 2341745
item
name: c51c32ac-1…�label: Dia - 9868545��place: c2139aae-5…
visits: 3
last_visit: 2024-4-12
phone: 9868545
instance: places
root
item
name: c2139aae-5…�label: Ifedore
geometry: 5.09 7.35 12 0
population: 270900
enumerator: 6234
item
name: f1ad1a8a-c…�label: Magama
geometry: 5.05 10.46 11 0�
population: 311300
enumerator: 2742
sum(instance('people')/root/item[place=${place}]/visits))
instance: people
root
item
name: da0ee575-d…�label: Xue - 2341745
place: c2139aae-5…
visits: 1
last_visit: 2024-5-1
phone: 2341745
item
name: c51c32ac-1…�label: Dia - 9868545��place: c2139aae-5…
visits: 3
last_visit: 2024-4-12
phone: 9868545
instance: places
root
item
name: c2139aae-5…�label: Ifedore
geometry: 5.09 7.35 12 0
population: 270900
enumerator: 6234
item
name: f1ad1a8a-c…�label: Magama
geometry: 5.05 10.46 11 0�
population: 311300
enumerator: 2742
Questions
Next steps
@adailycloud
Prevent duplicates
Prevent duplicates
The concept
With unique
ID to match on
count(instance('people')/root/item[id=${id}])
Prevent duplicates
Prevent user
from submitting
count(instance('people')/root/item[id=current()/.]) = 0
Prevent duplicates
Warn user but
allow to continue
count(instance('people')/root/item[id=${id}]) > 0
Prevent duplicates
Without unique
ID to match on
Prevent duplicates
Notes
Prevent duplicates
Show work summary
Show summary
count(instance('people')/root/item)
The concept
Show summary
count(instance('people')/root/item[created_by=${enumerator}])
sum(instance('people')/root/item[place=${place}]/hh_members)
if(${enrolled_percent} < 50, "Let's keep trying hard to get to our goal!", "We're getting close!")
Examples
Note:
recompute on edit
Work summary
Next steps
@adailycloud
Coming up
Survey
Insiders call #3
Next steps