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)