Skip to content

Instantly share code, notes, and snippets.

@binhngoc17
Created April 14, 2014 03:02
Show Gist options
  • Save binhngoc17/10612847 to your computer and use it in GitHub Desktop.
Save binhngoc17/10612847 to your computer and use it in GitHub Desktop.
Generate aggregate data
from datetime import datetime
import csv
cpi = {}
cpi['2012'] = 1.09
cpi['2011'] = 1.043
cpi['2010'] = 1.019
cpi['2009'] = 1
cpi['2008'] = 0.98
cpi['2007'] = 0.929
cpi['2006'] = 0.892
# I want to put some output for a certain year
cur_admit_id = ''
with open('core/final_set.csv', 'r') as infile:
reader = csv.reader(infile, delimiter=',', quotechar='"')
labels = reader.next()
count = 0
label_mapping = {}
for k in labels:
label_mapping[k] = count
count +=1
admission_items = {}
for values in reader:
try:
date_of_admit = datetime.strptime(values[label_mapping['DATEOFADM']], '%d/%m/%Y')
date_of_discharge = datetime.strptime(values[label_mapping['DATEDISCHARGE']], '%d/%m/%Y')
except:
continue
admission_items[values[label_mapping['HRN']]] = admission_items.get(values[label_mapping['HRN']], [])
admission_items[values[label_mapping['HRN']]].append(values)
for k,v in admission_items.iteritems():
print k
result_item = {}
for i in range(count):
if i == label_mapping['DATEOFADM'] or i == label_mapping['DATEDISCHARGE']:
items = [datetime.strptime(item[i], '%d/%m/%Y') for item in v]
else:
items = [item[i] for item in v]
if i == label_mapping['HOSPITALBILL']:
result_item[i] = sum([float(v) for v in items])
elif i == label_mapping['BILLCAT'] or i == label_mapping['WARDTYPE']:
result_item[i] = ':'.join(items)
else:
result_item[i] = items[0]
result_item[count] = result_item[label_mapping['DATEDISCHARGE']] - result_item[label_mapping['DATEOFADM']]
result_item[count] = result_item[count].days
year_of_admission = int(result_item[label_mapping['DATEOFADM']].strftime('%Y'))
result_item[count+1] = year_of_admission - int(result_item[label_mapping['YMDOB']])
result_item[label_mapping['HOSPITALBILL']] \
= result_item[label_mapping['HOSPITALBILL']] * cpi[str(year_of_admission)]
print ','.join(['"%s"' % str(item) for item in result_item.values()])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment