Designing a household survey for odk collect

Dear ODKers,

I have been tasked with programming a household survey using ODK
Collect. The survey has the following sections:

  1. Collect a list of all household members from oldest to youngest.
    For each household member ask a number of questions.
  2. For each child under five years of age ask questions about nutrition.
  3. For each child-bearing age woman in the household ask about malaria
    knowledge.

Given my knowledge of XForms and Collect 1.1.5, I see two approaches
to implementing this survey:

  1. Move all sections into loop #1. As we're collecting information on
    each household member, if this household member is a child under five
    ask the appropriate group of questions, if the household member is a
    child-bearing age woman ask the questions about malaria knowledge.

  2. Have the surveyor maintain a paper list of household members that
    assigns ID numbers to each household member. The loops #2 and #3 have
    no knowledge of what was input in loop #1 and we rely on the surveyor
    to put the right household member IDs into loops #2 and #3.

Any suggestions for alternative solutions?

Andrew

These are definitely the two possibilities in a single form. Another option
is to consider separate forms but that would even have more issues getting
data from one form into another.

Option 1 is certainly the easiest. However, it depends on how many
questions there are about the child or woman. If it is only a few, then
this is definitely the way to go. If the nutrition/malaria questions are
extensive then it may not work so well to dive deep about one person.

Option 2 depends on how well XPATH expressions are supported in JR and
whether you can reference data in different iterations of loop #1 and even
determine how many iterations there were. In practice, though, this
approach isn't all that different than Option 1 as you still have to dive
into the details of each person one at a time.

I would go with 1 unless your field staff complains about the approach.

Gaetano

··· On Mon, Aug 8, 2011 at 1:45 PM, Andrew Marder wrote:

Dear ODKers,

I have been tasked with programming a household survey using ODK
Collect. The survey has the following sections:

  1. Collect a list of all household members from oldest to youngest.
    For each household member ask a number of questions.
  2. For each child under five years of age ask questions about nutrition.
  3. For each child-bearing age woman in the household ask about malaria
    knowledge.

Given my knowledge of XForms and Collect 1.1.5, I see two approaches
to implementing this survey:

  1. Move all sections into loop #1. As we're collecting information on
    each household member, if this household member is a child under five
    ask the appropriate group of questions, if the household member is a
    child-bearing age woman ask the questions about malaria knowledge.

  2. Have the surveyor maintain a paper list of household members that
    assigns ID numbers to each household member. The loops #2 and #3 have
    no knowledge of what was input in loop #1 and we rely on the surveyor
    to put the right household member IDs into loops #2 and #3.

Any suggestions for alternative solutions?

Andrew

--
Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en

Hi Gaetano,

Thanks for the quick feedback.

These are definitely the two possibilities in a single form. Another option
is to consider separate forms but that would even have more issues getting
data from one form into another.

Option 1 is certainly the easiest. However, it depends on how many
questions there are about the child or woman. If it is only a few, then
this is definitely the way to go. If the nutrition/malaria questions are
extensive then it may not work so well to dive deep about one person.

Option 2 depends on how well XPATH expressions are supported in JR and
whether you can reference data in different iterations of loop #1 and even
determine how many iterations there were. In practice, though, this
approach isn't all that different than Option 1 as you still have to dive
into the details of each person one at a time.

The part I haven't figured out is how to get a counter in the repeat.
For instance if I was writing this in Python I would do something
like:

members =
while household has more members:
members.append( new household member )

for i in range(len(members)):
if members[i].age <5:
ask questions for child under five

The XPath I need to access will look like /household/member[i]/age. Is
this currently possible?

··· On Mon, Aug 8, 2011 at 5:24 PM, Gaetano Borriello wrote:

I would go with 1 unless your field staff complains about the approach.

Gaetano

On Mon, Aug 8, 2011 at 1:45 PM, Andrew Marder andrew.ei.marder@gmail.com wrote:

Dear ODKers,

I have been tasked with programming a household survey using ODK
Collect. The survey has the following sections:

  1. Collect a list of all household members from oldest to youngest.
    For each household member ask a number of questions.
  2. For each child under five years of age ask questions about nutrition.
  3. For each child-bearing age woman in the household ask about malaria
    knowledge.

Given my knowledge of XForms and Collect 1.1.5, I see two approaches
to implementing this survey:

  1. Move all sections into loop #1. As we're collecting information on
    each household member, if this household member is a child under five
    ask the appropriate group of questions, if the household member is a
    child-bearing age woman ask the questions about malaria knowledge.

  2. Have the surveyor maintain a paper list of household members that
    assigns ID numbers to each household member. The loops #2 and #3 have
    no knowledge of what was input in loop #1 and we rely on the surveyor
    to put the right household member IDs into loops #2 and #3.

Any suggestions for alternative solutions?

Andrew

--
Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en

--
Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en

To solve a similar problem we used relative paths,for eg.
../age<5

Regards
Deepak

Hi Gaetano,

Thanks for the quick feedback.

These are definitely the two possibilities in a single form. Another
option
is to consider separate forms but that would even have more issues
getting
data from one form into another.

Option 1 is certainly the easiest. However, it depends on how many
questions there are about the child or woman. If it is only a few, then
this is definitely the way to go. If the nutrition/malaria questions are
extensive then it may not work so well to dive deep about one person.

Option 2 depends on how well XPATH expressions are supported in JR and
whether you can reference data in different iterations of loop #1 and
even

··· On Aug 9, 2011 3:15 AM, "Andrew Marder" wrote: > On Mon, Aug 8, 2011 at 5:24 PM, Gaetano Borriello wrote: >> determine how many iterations there were. In practice, though, this >> approach isn't all that different than Option 1 as you still have to dive >> into the details of each person one at a time. > > The part I haven't figured out is how to get a counter in the repeat. > For instance if I was writing this in Python I would do something > like: > > members = [] > while household has more members: > members.append( new household member ) > > for i in range(len(members)): > if members[i].age <5: > ask questions for child under five > > The XPath I need to access will look like /household/member[i]/age. Is > this currently possible? > >> >> I would go with 1 unless your field staff complains about the approach. >> >> Gaetano >> >> >> >> On Mon, Aug 8, 2011 at 1:45 PM, Andrew Marder >> >>> Dear ODKers, >>> >>> I have been tasked with programming a household survey using ODK >>> Collect. The survey has the following sections: >>> >>> 1. Collect a list of all household members from oldest to youngest. >>> For each household member ask a number of questions. >>> 2. For each child under five years of age ask questions about nutrition. >>> 3. For each child-bearing age woman in the household ask about malaria >>> knowledge. >>> >>> Given my knowledge of XForms and Collect 1.1.5, I see two approaches >>> to implementing this survey: >>> >>> 1. Move all sections into loop #1. As we're collecting information on >>> each household member, if this household member is a child under five >>> ask the appropriate group of questions, if the household member is a >>> child-bearing age woman ask the questions about malaria knowledge. >>> >>> 2. Have the surveyor maintain a paper list of household members that >>> assigns ID numbers to each household member. The loops #2 and #3 have >>> no knowledge of what was input in loop #1 and we rely on the surveyor >>> to put the right household member IDs into loops #2 and #3. >>> >>> Any suggestions for alternative solutions? >>> >>> Andrew >>> >>> -- >>> Post: opendatakit@googlegroups.com >>> Unsubscribe: opendatakit+unsubscribe@googlegroups.com >>> Options: http://groups.google.com/group/opendatakit?hl=en >> >> -- >> Post: opendatakit@googlegroups.com >> Unsubscribe: opendatakit+unsubscribe@googlegroups.com >> Options: http://groups.google.com/group/opendatakit?hl=en >> > > -- > Post: opendatakit@googlegroups.com > Unsubscribe: opendatakit+unsubscribe@googlegroups.com > Options: http://groups.google.com/group/opendatakit?hl=en