def accounts_outstanding(request): """ """ from ocemr.forms import SelectDateRangeForm form_valid=0 if request.method == 'POST': form = SelectDateRangeForm(request.POST) if form.is_valid(): date_start_in = form.cleaned_data['date_start'] if form.cleaned_data['date_end']==None: date_end_in = form.cleaned_data['date_start'] else: date_end_in = form.cleaned_data['date_end'] form_valid=1 else: form = SelectDateRangeForm() if not form_valid: return render(request, 'popup_form.html', { 'title': 'Enter Date Range For Report', 'form_action': '/reports/accounts_outstanding/', 'form': form, }) from ocemr.models import Visit, CashLog field_names=[ 'patient', 'billed', 'collected', 'owed', ] headers={ 'patient': 'Patient', 'billed': 'Total Billed', 'collected': 'Total Collected', 'owed': 'Amount Owed', } dt_start = datetime(date_start_in.year,date_start_in.month,date_start_in.day,0,0,0) dt_end = datetime(date_end_in.year,date_end_in.month,date_end_in.day,23,59,59) summary_rows=[] for v in Visit.objects.filter(finishedDateTime__gte=dt_start,finishedDateTime__lte=dt_end): billed=v.cost collected=0 for c in CashLog.objects.filter(visit=v): collected += c.amount if collected < v.cost: existing = filter(lambda person: person['patient'] == v.patient, summary_rows) if existing: summary_rows.remove(existing[0]) billed += existing[0]['billed'] collected += existing[0]['collected'] summary_rows.append({'patient': v.patient, 'billed': billed, 'collected':collected, 'owed':billed-collected}) return dump_csv( "outstanding_accounts-%s-%s.csv"%(date_start_in.strftime("%Y%m%d"), date_end_in.strftime("%Y%m%d")),field_names, headers, summary_rows )
def accounts_outstanding(request): """ """ from ocemr.forms import SelectDateRangeForm form_valid=0 if request.method == 'POST': form = SelectDateRangeForm(request.POST) if form.is_valid(): date_start_in = form.cleaned_data['date_start'] if form.cleaned_data['date_end']==None: date_end_in = form.cleaned_data['date_start'] else: date_end_in = form.cleaned_data['date_end'] form_valid=1 else: form = SelectDateRangeForm() if not form_valid: return render_to_response('popup_form.html', { 'title': 'Enter Date Range For Report', 'form_action': '/reports/accounts_outstanding/', 'form': form, },context_instance=RequestContext(request)) from ocemr.models import Patient, Visit, CashLog field_names=[ 'patient', 'billed', 'collected', 'owed', ] headers={ 'patient': 'Patient', 'billed': 'Total Billed', 'collected': 'Total Collected', 'owed': 'Amount Owed', } dt_start = datetime(date_start_in.year,date_start_in.month,date_start_in.day,0,0,0) dt_end = datetime(date_end_in.year,date_end_in.month,date_end_in.day,23,59,59) summary_rows=[] for p in Patient.objects.all( ): billed=0 collected=0 for v in Visit.objects.filter(patient=p,finishedDateTime__gte=dt_start,finishedDateTime__lte=dt_end): billed += v.cost for c in CashLog.objects.filter(visit=v): collected += c.amount if collected < billed: summary_rows.append({'patient': p, 'billed': billed, 'collected':collected, 'owed':billed-collected}) return dump_csv( "outstanding_accounts-%s-%s.csv"%(date_start_in.strftime("%Y%m%d"), date_end_in.strftime("%Y%m%d")),field_names, headers, summary_rows )
def cashflow(request): """ """ if not request.user.is_staff: return HttpResponse( "Permission Denied." ) from ocemr.forms import SelectDateRangeForm form_valid=0 if request.method == 'POST': form = SelectDateRangeForm(request.POST) if form.is_valid(): date_start_in = form.cleaned_data['date_start'] if form.cleaned_data['date_end']==None: date_end_in = form.cleaned_data['date_start'] else: date_end_in = form.cleaned_data['date_end'] form_valid=1 else: form = SelectDateRangeForm() if not form_valid: return render(request, 'popup_form.html', { 'title': 'Enter Date Range For Report', 'form_action': '/reports/cashflow/', 'form': form, }) field_names=[ 'date', 'totbill', 'totcoll', 'diff', ] headers={ 'date': 'Date', 'totbill': 'Total Billed', 'totcoll': 'Total Collected', 'diff': 'Total Difference', } summary_rows=[] from ocemr.models import Visit, CashLog curdate = date_start_in total_billed = 0 total_collected = 0 while curdate <= date_end_in: billed=0 collected=0 dt_start = datetime(curdate.year,curdate.month,curdate.day,0,0,0) dt_end = datetime(curdate.year,curdate.month,curdate.day,23,59,59) for v in Visit.objects.filter(finishedDateTime__gte=dt_start,finishedDateTime__lte=dt_end): billed += v.cost for c in CashLog.objects.filter(addedDateTime__gte=dt_start,addedDateTime__lte=dt_end): collected += c.amount summary_rows.append({'date':curdate,'totbill':billed,'totcoll':collected,'diff':billed-collected}) total_billed += billed total_collected += collected curdate = curdate + timedelta(1) summary_rows.append({'date':'Total','totbill':total_billed, 'totcoll':total_collected,'diff':total_billed-total_collected}) return dump_csv( "cashflow-%s-%s.csv"%(date_start_in.strftime("%Y%m%d"), date_end_in.strftime("%Y%m%d")), field_names, headers, summary_rows )
def cashflow(request): """ """ if not request.user.is_staff: return HttpResponse( "Permission Denied." ) from ocemr.forms import SelectDateRangeForm form_valid=0 if request.method == 'POST': form = SelectDateRangeForm(request.POST) if form.is_valid(): date_start_in = form.cleaned_data['date_start'] if form.cleaned_data['date_end']==None: date_end_in = form.cleaned_data['date_start'] else: date_end_in = form.cleaned_data['date_end'] form_valid=1 else: form = SelectDateRangeForm() if not form_valid: return render_to_response('popup_form.html', { 'title': 'Enter Date Range For Report', 'form_action': '/reports/cashflow/', 'form': form, },context_instance=RequestContext(request)) field_names=[ 'date', 'totbill', 'totcoll', 'diff', ] headers={ 'date': 'Date', 'totbill': 'Total Billed', 'totcoll': 'Total Collected', 'diff': 'Total Difference', } summary_rows=[] from ocemr.models import Visit, CashLog curdate = date_start_in total_billed = 0 total_collected = 0 while curdate <= date_end_in: billed=0 collected=0 dt_start = datetime(curdate.year,curdate.month,curdate.day,0,0,0) dt_end = datetime(curdate.year,curdate.month,curdate.day,23,59,59) for v in Visit.objects.filter(finishedDateTime__gte=dt_start,finishedDateTime__lte=dt_end): billed += v.cost for c in CashLog.objects.filter(addedDateTime__gte=dt_start,addedDateTime__lte=dt_end): collected += c.amount summary_rows.append({'date':curdate,'totbill':billed,'totcoll':collected,'diff':billed-collected}) total_billed += billed total_collected += collected curdate = curdate + timedelta(1) summary_rows.append({'date':'Total','totbill':total_billed, 'totcoll':total_collected,'diff':total_billed-total_collected}) return dump_csv( "cashflow-%s-%s.csv"%(date_start_in.strftime("%Y%m%d"), date_end_in.strftime("%Y%m%d")), field_names, headers, summary_rows )
def accounts_outstanding(request): """ """ from ocemr.forms import SelectDateRangeForm form_valid = 0 if request.method == 'POST': form = SelectDateRangeForm(request.POST) if form.is_valid(): date_start_in = form.cleaned_data['date_start'] if form.cleaned_data['date_end'] == None: date_end_in = form.cleaned_data['date_start'] else: date_end_in = form.cleaned_data['date_end'] form_valid = 1 else: form = SelectDateRangeForm() if not form_valid: return render_to_response('popup_form.html', { 'title': 'Enter Date Range For Report', 'form_action': '/reports/accounts_outstanding/', 'form': form, }, context_instance=RequestContext(request)) from ocemr.models import Patient, Visit, CashLog field_names = [ 'patient', 'billed', 'collected', 'owed', ] headers = { 'patient': 'Patient', 'billed': 'Total Billed', 'collected': 'Total Collected', 'owed': 'Amount Owed', } dt_start = datetime(date_start_in.year, date_start_in.month, date_start_in.day, 0, 0, 0) dt_end = datetime(date_end_in.year, date_end_in.month, date_end_in.day, 23, 59, 59) summary_rows = [] for p in Patient.objects.all(): billed = 0 collected = 0 for v in Visit.objects.filter(patient=p, finishedDateTime__gte=dt_start, finishedDateTime__lte=dt_end): billed += v.cost for c in CashLog.objects.filter(visit=v): collected += c.amount if collected < billed: summary_rows.append({ 'patient': p, 'billed': billed, 'collected': collected, 'owed': billed - collected }) return dump_csv( "outstanding_accounts-%s-%s.csv" % (date_start_in.strftime("%Y%m%d"), date_end_in.strftime("%Y%m%d")), field_names, headers, summary_rows)