def single_patient(request, patient_id): patient = loader.get_patient(patient_id) xforms = CXFormInstance.view("patient/xforms", key=patient.get_id, include_docs=True) encounter_types = get_encounters(patient) options = TouchscreenOptions.default() # TODO: are we upset about how this breaks MVC? options.nextbutton.show = False options.backbutton = ButtonOptions(text="BACK", link=reverse("patient_select")) encounters = sorted(patient.encounters, key=lambda encounter: encounter.visit_date, reverse=True) # TODO: figure out a way to do this more centrally # Inject cases into encounters so we can show them linked in the view for encounter in patient.encounters: if encounter.get_xform(): encounter.dynamic_data["classification"] = get_classification(encounter.get_xform().namespace) encounter.dynamic_data["cases"] = [] for case in patient.cases: if case.encounter_id == encounter.get_id: encounter.dynamic_data["cases"].append(case) return render_to_response(request, "patient/single_patient_touchscreen.html", {"patient": patient, "encounters": encounters, "xforms": xforms, "encounter_types": encounter_types, "options": options })
def wrapped_view(request, *args, **kwargs): site = get_current_site() if site.type.slug in aggregation_levels: return view_func(request, *args, **kwargs) else: return render_to_response("bad_permissions.html", {"options": TouchscreenOptions.default()}, context_instance = RequestContext(request))
def not_found(request, template_name='404.html'): """ 404 error handler. """ t = loader.get_template(template_name) return HttpResponseServerError(t.render(RequestContext(request, {'STATIC_URL': settings.STATIC_URL, "options": TouchscreenOptions.default()})))
def server_error(request, template_name='500.html'): """ 500 error handler. """ # hat tip: http://www.arthurkoziel.com/2009/01/15/passing-mediaurl-djangos-500-error-view/ t = loader.get_template(template_name) return HttpResponseServerError(t.render(RequestContext(request, {'STATIC_URL': settings.STATIC_URL, "options": TouchscreenOptions.default()})))
def single_encounter(request, patient_id, encounter_id): patient = loader.get_patient(patient_id) encounters = [enc for enc in patient.encounters if enc.get_id == encounter_id] if not encounters: raise Exception("No matching encounter for id %s in patient %s" % (encounter_id, patient_id)) encounter = encounters[0] return render_to_response(request, "encounter/single_encounter.html", {"patient": patient, "encounter": encounter, "options": TouchscreenOptions.default()})
def clinic_report(request, view_name): url = reverse(view_name) view, args, kwargs = resolve(url) options = TouchscreenOptions.default() options.header = view.__doc__ options.backbutton = ButtonOptions(show=True, link=reverse("report_list"), text="BACK") return render_to_response(request, "reports/clinic_report_wrapper.html", {"options": options, "url": url})
def patient_case(request, patient_id, case_id): pat = CPatient.get(patient_id) found_case = None for case in pat.cases: if case.get_id == case_id: found_case = case break return render_to_response(request, "case/single_case.html", {"patient": pat, "case": found_case, "options": TouchscreenOptions.default()})
def test(request): dynamic = string_to_boolean(request.GET["dynamic"]) if "dynamic" in request.GET else True template = request.GET["template"] if "template" in request.GET \ else "touchscreen/example-inner.html" header = request.GET["header"] if "header" in request.GET \ else "Hello World!" pat_id = request.GET["id"] if "id" in request.GET \ else "000000000001" try: patient = loader.get_patient(pat_id) except Exception: patient = None if dynamic: return render_to_response(request, "touchscreen/wrapper-dynamic.html", {"header": header, "template": template, "patient": patient, "options": TouchscreenOptions.default()}) else: return render_to_response(request, template, {"patient": patient, "options": TouchscreenOptions.default()})
def new_user(request): if request.method == "POST": data = json.loads(request.POST.get('result')) if not data: return HttpResponseRedirect(reverse('bhoma_admin')) user = User() # HACK: all usernames and passwords are lowercased going into the db user.username = data.get("username").lower() user.set_password(data.get("password").lower()) user.first_name = data.get("fname") user.last_name = data.get("lname") user.email = "" user.is_staff = False # Can't log in to admin site user.is_active = True # Activated upon receipt of confirmation user.is_superuser = False # Certainly not user.last_login = datetime(1970,1,1) user.date_joined = datetime.utcnow() user.save() # have to have an object before you're allowed to edit M2M fields # so do groups/roles last role = data.get("role") if role: try: user.groups = [Group.objects.get(name=role)] except Group.DoesNotExist: logging.error("Unable to give role %s to %s -- permissions may " "not work. Did you forget to run syncdb recently?") return render_to_response(request, "auth/user_reg_complete.html", {"new_user": user, "options": TouchscreenOptions.admin() }) return render_to_response(request, "bhoma_touchscreen.html", {'form': {'name': 'add user', 'wfobj': 'wfNewUser'}, 'mode': 'workflow', 'dynamic_scripts': ["%swebapp/javascripts/user_reg.js" %\ settings.STATIC_URL,] })
def delete_user(request): if request.method == "POST": data = json.loads(request.POST.get('result')) if not data: return HttpResponseRedirect(reverse('bhoma_admin')) if string_to_boolean(data.get("confirm")): user = User.objects.get(username=data.get("username")) if request.user == user: return render_to_response(request, "touchscreen/error.html", {"error_text": "You can't delete the currently logged in user account. " "Please logout and log in as a different user", "options": TouchscreenOptions.admin()}) else: user.delete() return HttpResponseRedirect(reverse("bhoma_admin")) return render_to_response(request, "bhoma_touchscreen.html", {'form': {'name': 'delete user', 'wfobj': 'wfDeleteUser'}, 'mode': 'workflow', 'dynamic_scripts': ["%swebapp/javascripts/user_del.js" % \ settings.STATIC_URL,] })
def clinic_landing_page(req): return render_to_response(req, "clinic_landing_page.html", {"options": TouchscreenOptions.default(), "can_power_down_server": settings.BHOMA_CAN_POWER_DOWN_SERVER})
def report_list(request): template = "reports/report_list_ts.html" if is_clinic() else "reports/report_list.html" return render_to_response(request, template, {"options": TouchscreenOptions.default()})