def report_context(self): self.report_template_path = "patient_info.html" ret = super(PatientInfoReport, self).report_context ret['view_mode'] = 'info' patient_info = PatientInfoDisplay(ret['patient']) # check user role: user = self.request.couch_user if is_pm_or_pi(user): ret['edit_patient_info_url'] = self.get_form_url(self.pm_app_dict, self.latest_pm_build, PM_APP_PM_MODULE, PM_PM2, ret['patient']['_id']) elif is_cm(user): ret['edit_patient_info_url'] = self.get_form_url(self.cm_app_dict, self.latest_cm_build, CM_APP_PD_MODULE, PM2, ret['patient']['_id']) elif is_chw(user): ret['edit_patient_info_url'] = self.get_form_url(self.chw_app_dict, self.latest_chw_build, CHW_APP_PD_MODULE, PM2, ret['patient']['_id']) if is_pm_or_pi(user): ret['upcoming_appointments_url'] = self.get_form_url(self.pm_app_dict, self.latest_pm_build, PM_APP_PM_MODULE, PM_PM2, ret['patient']['_id']) elif is_cm(user): ret['upcoming_appointments_url'] = self.get_form_url(self.cm_app_dict, self.latest_cm_build, CM_APP_PD_MODULE, PM2, ret['patient']['_id']) elif is_chw(user): ret['upcoming_appointments_url'] = self.get_form_url(self.chw_app_dict, self.latest_chw_build, CHW_APP_MA_MODULE, AP2, ret['patient']['_id']) ret['general_information'] = patient_info.general_information ret['contact_information'] = patient_info.contact_information ret['most_recent_lab_exams'] = patient_info.most_recent_lab_exams ret['allergies'] = patient_info.allergies return ret
def report_context(self): self.report_template_path = "patient_info.html" ret = super(PatientInfoReport, self).report_context ret['view_mode'] = 'info' patient_info = PatientInfoDisplay(ret['patient']) # check user role: user = self.request.couch_user if is_pm_or_pi(user): ret['edit_patient_info_url'] = self.get_form_url(self.pm_app_dict, self.latest_pm_build, PM_APP_PM_MODULE, PM_PM2, ret['patient']['_id']) elif is_cm(user): ret['edit_patient_info_url'] = self.get_form_url(self.cm_app_dict, self.latest_cm_build, CM_APP_PD_MODULE, PM_PM2, ret['patient']['_id']) elif is_chw(user): ret['edit_patient_info_url'] = self.get_form_url(self.chw_app_dict, self.latest_chw_build, CHW_APP_PD_MODULE, PM2, ret['patient']['_id']) if is_pm_or_pi(user): ret['upcoming_appointments_url'] = self.get_form_url(self.pm_app_dict, self.latest_pm_build, PM_APP_PM_MODULE, PM_PM2, ret['patient']['_id']) elif is_cm(user): ret['upcoming_appointments_url'] = self.get_form_url(self.cm_app_dict, self.latest_cm_build, CM_APP_PD_MODULE, PM_PM2, ret['patient']['_id']) elif is_chw(user): ret['upcoming_appointments_url'] = self.get_form_url(self.chw_app_dict, self.latest_chw_build, CHW_APP_MA_MODULE, AP2, ret['patient']['_id']) ret['general_information'] = patient_info.general_information ret['contact_information'] = patient_info.contact_information ret['most_recent_lab_exams'] = patient_info.most_recent_lab_exams ret['allergies'] = patient_info.allergies return ret
def options(self): user = self.request.couch_user cm = dict(val=CONFIG['cm_role'], text=ugettext_noop("Care Manager")) chw = dict(val=CONFIG['chw_role'], text=ugettext_noop("Community Health Worker")) options = [] if isinstance(user, WebUser) or is_succeed_admin(user) or is_pm_or_pi(user): options = [ dict(val='', text=ugettext_noop("All Roles")), dict(val=CONFIG['pm_role'], text=ugettext_noop("Project Manager")), cm, chw ] else: role = user.user_data['role'] if role == CONFIG['cm_role']: options.append(cm) self.selected = cm['val'] elif role == CONFIG['chw_role']: options.append(chw) self.selected = chw['val'] return options
def report_context(self): ret = {} try: case = self.get_case() has_error = False except ResourceNotFound: has_error = True case = None if case is None: self.report_template_path = "patient_error.html" if has_error: ret['error_message'] = "Patient not found" else: ret['error_message'] = "No patient selected" return ret def get_form_url(app_dict, app_build_id, module_idx, form, case_id=None): try: module = app_dict['modules'][module_idx] form_idx = [ix for (ix, f) in enumerate(module['forms']) if f['xmlns'] == form][0] except IndexError: form_idx = None return html.escape(get_cloudcare_form_url(domain=self.domain, app_build_id=app_build_id, module_id=module_idx, form_id=form_idx, case_id=case_id) + '/enter/') try: cm_app_dict = get_cloudcare_app(case['domain'], SUCCEED_CM_APPNAME) latest_cm_build = get_app_build(cm_app_dict) pm_app_dict = get_cloudcare_app(case['domain'], SUCCEED_PM_APPNAME) latest_pm_build = get_app_build(pm_app_dict) chw_app_dict = get_cloudcare_app(case['domain'], SUCCEED_CHW_APPNAME) latest_chw_build = get_app_build(pm_app_dict) except ResourceNotFound as ex: self.report_template_path = "patient_error.html" ret['error_message'] = ex.message return ret ret['patient'] = case ret['root_url'] = '?patient_id=%s' % case['_id'] ret['view_mode'] = self.view_mode ret['patient_status_access'] = self.patient_status_access ret['submission_user_access'] = self.submission_user_access if self.view_mode == 'info': self.report_template_path = "patient_info.html" patient_info = PatientInfoDisplay(case) # check user role: user = self.request.couch_user if is_pm_or_pi(user): ret['edit_patient_info_url'] = get_form_url(pm_app_dict, latest_pm_build, PM_APP_PM_MODULE, PM_PM2, case['_id']) elif is_cm(user): ret['edit_patient_info_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_PD_MODULE, PM2, case['_id']) elif is_chw(user): ret['edit_patient_info_url'] = get_form_url(chw_app_dict, latest_chw_build, CHW_APP_PD_MODULE, PM2, case['_id']) if is_pm_or_pi(user): ret['upcoming_appointments_url'] = get_form_url(pm_app_dict, latest_pm_build, PM_APP_PM_MODULE, PM_PM2, case['_id']) elif is_cm(user): ret['upcoming_appointments_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_PD_MODULE, PM2, case['_id']) elif is_chw(user): ret['upcoming_appointments_url'] = get_form_url(chw_app_dict, latest_chw_build, CHW_APP_MA_MODULE, AP2, case['_id']) ret['general_information'] = patient_info.general_information ret['contact_information'] = patient_info.contact_information ret['most_recent_lab_exams'] = patient_info.most_recent_lab_exams ret['allergies'] = patient_info.allergies elif self.view_mode == 'submissions': if self.submission_user_access: tabular_context = super(PatientInfoReport, self).report_context tabular_context.update(ret) self.report_template_path = "patient_submissions.html" tabular_context['patient_id'] = self.request_params['patient_id'] return tabular_context else: self.report_template_path = "patient_error.html" ret['error_message'] = "Cannot access report(incorrect user role)" return ret elif self.view_mode == 'interactions': self.report_template_path = "patient_interactions.html" ret['problem_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_PD_MODULE, PD1, case['_id']) ret['huddle_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_HUD_MODULE, HUD2, case['_id']) ret['cm_phone_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_CM_MODULE, CM6, case['_id']) ret['chw_phone_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_CHW_MODULE, CHW3, case['_id']) ret['cm_visits_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_APPOINTMENTS_MODULE, AP2, case['_id']) ret['anti_thrombotic_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_MEDICATIONS_MODULE, PD2AM, case['_id']) ret['blood_pressure_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_MEDICATIONS_MODULE, PD2BPM, case['_id']) ret['cholesterol_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_MEDICATIONS_MODULE, PD2CHM, case['_id']) ret['depression_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_MEDICATIONS_MODULE, PD2DIABM, case['_id']) ret['diabetes_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_MEDICATIONS_MODULE, PD2DEPM, case['_id']) ret['smoking_cessation_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_MEDICATIONS_MODULE, PD2SCM, case['_id']) ret['other_meds_url'] = get_form_url(cm_app_dict, latest_cm_build, CM_APP_MEDICATIONS_MODULE, PD2OM, case['_id']) ret['interaction_table'] = [] for visit_key, visit in enumerate(VISIT_SCHEDULE): if case["randomization_date"]: target_date = (case["randomization_date"] + timedelta(days=visit['days'])).strftime(OUTPUT_DATE_FORMAT) else: target_date = EMPTY_FIELD interaction = { 'url': '', 'name': visit['visit_name'], 'target_date': target_date, 'received_date': EMPTY_FIELD, 'completed_by': EMPTY_FIELD, 'scheduled_date': EMPTY_FIELD } for key, action in enumerate(case['actions']): if visit['xmlns'] == action['xform_xmlns']: interaction['received_date'] = action['date'].strftime(INTERACTION_OUTPUT_DATE_FORMAT) try: user = CouchUser.get(action['user_id']) interaction['completed_by'] = user.raw_username except ResourceNotFound: interaction['completed_by'] = EMPTY_FIELD del case['actions'][key] break if visit['show_button']: interaction['url'] = get_form_url(cm_app_dict, latest_cm_build, visit['module_idx'], visit['xmlns'], case['_id']) if 'scheduled_source' in visit and case.get_case_property(visit['scheduled_source']): interaction['scheduled_date'] = format_date(case.get_case_property(visit['scheduled_source']), INTERACTION_OUTPUT_DATE_FORMAT) ret['interaction_table'].append(interaction) medication = [] for med_prop in MEDICATION_DETAILS: medication.append(getattr(case, med_prop, EMPTY_FIELD)) ret['medication_table'] = medication elif self.view_mode == 'plan': self.report_template_path = "patient_plan.html" elif self.view_mode == 'status': if self.patient_status_access: self.report_template_path = "patient_status.html" ret['disenroll_patient_url'] = get_form_url(pm_app_dict, latest_pm_build, PM_APP_PM_MODULE, PM3) ret['change_patient_data_url'] = get_form_url(pm_app_dict, latest_pm_build, PM_APP_PM_MODULE, PM4) else: self.report_template_path = "patient_error.html" ret['error_message'] = "Only PMs can disenrollment participants" return ret else: raise Http404 return ret
def patient_status_access(self): user = self.request.couch_user if user and is_pm_or_pi(user): return True return False
ret['error_message'] = ex.message return ret ret['patient'] = case ret['root_url'] = '?patient_id=%s' % case['_id'] ret['view_mode'] = self.view_mode ret['patient_status_access'] = self.patient_status_access ret['submission_user_access'] = self.submission_user_access if self.view_mode == 'info': self.report_template_path = "patient_info.html" patient_info = PatientInfoDisplay(case) # check user role: user = self.request.couch_user if is_pm_or_pi(user): ret['edit_patient_info_url'] = get_form_url( pm_app_dict, latest_pm_build, PM_APP_PM_MODULE, PM2) elif is_cm(user): ret['edit_patient_info_url'] = get_form_url( cm_app_dict, latest_cm_build, CM_APP_PD_MODULE, PM2) elif is_chw(user): ret['edit_patient_info_url'] = get_form_url( chw_app_dict, latest_chw_build, CHW_APP_PD_MODULE, PM2) if is_pm_or_pi(user): ret['upcoming_appointments_url'] = get_form_url( pm_app_dict, latest_pm_build, PM_APP_PM_MODULE, PM2) elif is_cm(user): ret['upcoming_appointments_url'] = get_form_url( cm_app_dict, latest_cm_build, CM_APP_PD_MODULE, PM2)