Currently, if you are constructing a RowPerObject dataset, and you call the "addColumns()" method with another RowPerObject dataset as a parameter, the implementation is to flatten this out.
For example, if you add a RowPerEncounter DataSetDefinition with columns "date" and "type" into a RowPerPatient DataSetDefinition, and there are 0-3 rows for each patient in the RowPerEncounter DataSetDefinition, the resulting RowPerPatient DataSetDefinition would have 3x2 columns added to it: 1_date, 1_type, 2_date, 2_type, 3_date, 3_type.
Following discussions on last weeks design call with Burke, Mike, and Ben, we decided that by default this flattening should not occur, but that this should be left as an optional task for a later transform step. Instead, the column value should be the matching DataSet rows. This could either be implemented a "List<DataSetRow>" or as a "DataSet" which is just a subset of the full RowPerEncounterDataSet for each row.