web-dev-qa-db-ja.com

CommCareで親のすべての子ケースを検索するインスタンス構文

「家庭用」親ケースと「メンバー」子ケースを使用するアプリがあります。 「メンバー」訪問フォーム内で、特定の条件を満たす、その親にインデックス付けされている他の子ケースの数を検索できるようにしたい:

英語:mm_is_in_tb_treatment = 'yes'プロパティを使用して、この患者にインデックス付けされている他の子供ケースはいくつですか?

インスタンスパス:

instance('casedb')/casedb/case[@case_type='household']/ ... 

そして、この「メンバー」ケースの「世帯」を指定してから、この世帯の子ケースをフィルタリングし、次にフィルタリングする方法がわかりません

/mm_is_in_tb_treatment = 'yes'

インスタンスの構文が正しいと、出力はどうなりますか?その基準を満たす#件のケースが必要です。

1
Ali F

この場合、フォームにmemberケースをロードし、メンバーケースID idをロードできると仮定しています

/data/member_id

取得したいものは:

このケースの親の子であるすべてのmemberケースの数。メンバーケースにはプロパティmm_is_in_tb_treatment = 'yes'があります

現時点では、以下の完全なクエリを理解しやすくするため、親世帯のケースIDを格納するための新しい非表示値を作成できます。

新しい非表示値:/data/parent_id

instance('casedb')/casedb/case[@case_id = /data/member_id]/index/parent

その親の子であるすべてのケースは、次のように参照されます。

instance('casedb')/casedb/case[index/parent = /data/parent_id]

そのステートメントの最後に新しいフィルターを直接追加して、カウントを導入できます。

count(instance('casedb')/casedb/case[index/parent = /data/parent_id][mm_is_in_tb_treatment = 'yes']

必要に応じて、(安全のため)memberケースでオープンな子のみを含めるように指定することもできます。 1行の式が必要な場合は、親ID参照を折りたたむこともできます。

count(instance('casedb')/casedb/case[@case_type='member'][@status='open'][index/parent = instance('casedb')/casedb/case[@case_id = /data/member_id]/index/parent][mm_is_in_tb_treatment = 'yes']
4
Clayton Sims