Skip to content

Commit cde47f2

Browse files
committed
👔 Store null responses separately
1 parent c4d39cd commit cde47f2

1 file changed

Lines changed: 17 additions & 2 deletions

File tree

src/mindlogger_data_export/outputs.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,10 +616,25 @@ def _format(self, data: MindloggerData) -> list[NamedOutput]:
616616

617617
# Format each activity for REDCap
618618
outputs = []
619+
null_response_mask = pl.col("item_response") == "value: null"
619620
for wide_output in wide_outputs:
620621
activity_name = wide_output.name
621-
formatted_df = self._format_activity(wide_output.output, activity_name)
622-
outputs.append(NamedOutput(f"{activity_name}_redcap", formatted_df))
622+
# Split into responses and nulls
623+
response_df = wide_output.output.filter(~null_response_mask)
624+
null_df = wide_output.output.filter(null_response_mask)
625+
626+
# Add formatted responses to outputs
627+
formatted_df = self._format_activity(response_df, activity_name)
628+
if len(response_df) > 0:
629+
outputs.append(
630+
NamedOutput(name=f"{activity_name}_redcap", output=formatted_df)
631+
)
632+
633+
# Add null responses to separate table
634+
if len(null_df) > 0:
635+
outputs.append(
636+
NamedOutput(name=f"{activity_name}_null_responses", output=null_df)
637+
)
623638

624639
return outputs
625640

0 commit comments

Comments
 (0)