def write_csv_aggregate()

in functions/source/loop/loop_lambda.py [0:0]


def write_csv_aggregate(bucket, dataframe, month, year, patient):
    ''' writes csv to augmented reporting folder for the final review
    '''
    print(f'patient  mrn {patient}')
    print('write_csv_aggregate is triggered')

    dataframe['mrn'] = patient
    if "MRN" in dataframe.columns:
        dataframe.drop(columns='MRN', inplace=True)
    client = boto3.client('s3')
    # setting up the final reporting file name scheme
    # aggregate_filename = f'for_reporting_aggregate/{year}/{month}.csv'
    
    aggregate_filename = f'for_reporting_aggregated/{year}/{month}.csv'
    analytic_filename = f'for_reporting_analytic/{year}/{month}.csv'


    try:
        # incase the aggregate file name already exist,
        # this will read the file, and add the csv to its body
        # reading the aggregate file object

        print(aggregate_filename)
        print(analytic_filename)
        aggregate_file = client.get_object(
            Bucket=bucket, Key=aggregate_filename)
        # parsing it
        body = aggregate_file['Body']
        # decodig it
        csv_string = body.read().decode('utf-8')
        print(csv_string)
        # convertingit to csv
        df_aggregate = pd.read_csv(StringIO(csv_string))
        # making a list of aggregate dataframe and new dataframe
        new_dataframe_aggregate = create_aggregate(dataframe)
        
        analytic_file = client.get_object(
            Bucket=bucket, Key=analytic_filename)
        # parsing it
        body_analytic = analytic_file['Body']
        print(body_analytic)
        # decodig it
        csv_string_analytic = body_analytic.read().decode('utf-8')
        # convertingit to csv
        df_analytic = pd.read_csv(StringIO(csv_string_analytic))

        df_aggregate_total= pd.concat([df_aggregate,new_dataframe_aggregate],  ignore_index=True, sort=False)
        df_analytic_total = pd.concat([df_analytic, dataframe], ignore_index=True, sort=False )
        for c in df_analytic.columns:
            if c[:3].lower() == 'unn':
                df_analytic.drop(columns  =c, inplace=True)
        
        write_dataframe_to_csv_on_s3(
            df_aggregate_total, aggregate_filename, bucket)
            
        write_dataframe_to_csv_on_s3(
            df_analytic_total, analytic_filename, bucket)
                
        print('writing to aggregate finished')
    except Exception:
        # incase the the file did not exist
        # setting df_aggregate to equal to our file
        print('failed try')
        df_aggregate = create_aggregate(dataframe)
        write_dataframe_to_csv_on_s3(
            df_aggregate, aggregate_filename, bucket)
        write_dataframe_to_csv_on_s3(
            dataframe, analytic_filename, bucket)