File tree Expand file tree Collapse file tree
src/mindlogger_data_export Expand file tree Collapse file tree Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments