class HnsccRequisitionAdmin(BaseRequisitionModelAdmin): def __init__(self, *args, **kwargs): super(HnsccRequisitionAdmin, self).__init__(*args, **kwargs) form = HnsccRequisitionForm visit_model = HnsccVisit visit_fieldname = 'hnscc_visit' dashboard_type = 'hnscc' label_template_name = 'requisition_label' actions = [ print_requisition_label, export_as_csv_action( "Export as csv", fields=[], delimiter=',', exclude=[ 'id', 'revision', 'hostname_created', 'hostname_modified', 'user_created', 'user_modified' ], ) ] def formfield_for_foreignkey(self, db_field, request, **kwargs): panel_pk = request.GET.get('panel', 0) if db_field.name == 'panel': kwargs["queryset"] = Panel.objects.filter(pk=panel_pk) if db_field.name == 'aliquot_type': if Panel.objects.filter(pk=panel_pk): if Panel.objects.get(pk=panel_pk).aliquot_type.all(): kwargs["queryset"] = Panel.objects.get( pk=panel_pk).aliquot_type.all() return super(BaseRequisitionModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
class AliquotAdmin(BaseModelAdmin): date_hierarchy = 'created' actions = [ print_aliquot_label, create_order, export_as_csv_action( "Export as csv", fields=[], delimiter=',', exclude=[ 'id', 'revision', 'hostname_created', 'hostname_modified', 'user_created', 'user_modified' ], ) ] list_display = ("aliquot_identifier", 'subject_identifier', 'processing', 'related', 'to_receive', 'drawn', "aliquot_type", 'aliquot_condition', 'is_packed', 'created', 'user_created', 'hostname_created') search_fields = ('aliquot_identifier', 'receive__receive_identifier', 'receive__registered_subject__subject_identifier') list_filter = ('aliquot_type', 'aliquot_condition', 'created', 'user_created', 'hostname_created') list_per_page = 15
class MaternalConsentAdmin(BaseConsentModelAdmin): form = MaternalConsentForm inlines = [ MaternalConsentUpdateInlineAdmin, ] def __init__(self, *args, **kwargs): super(MaternalConsentAdmin, self).__init__(*args, **kwargs) # remove these fields from admin fields list, default values should apply for fld in ['witness_name', 'is_literate', 'guardian_name']: self.fields.remove(fld) actions = [ export_as_csv_action( description="CSV Export of Maternal Consent", fields=[], delimiter=',', exclude=[ 'created', 'modified', 'user_created', 'user_modified', 'revision', 'id', 'hostname_created', 'hostname_modified', 'last_name', 'identity', 'confirm_identity', 'first_name' ], extra_fields=OrderedDict({ 'subject_identifier': 'registered_subject__subject_identifier', 'gender': 'registered_subject__gender', 'dob': 'registered_subject__dob', 'registered': 'registered_subject__registration_datetime' }), ) ]
class MaternalVisitAdmin(BaseAppointmentModelAdmin): form = MaternalVisitForm visit_model_instance_field = 'maternal_visit' requisition_model = MaternalRequisition dashboard_type = 'maternal' list_display = ( 'appointment', 'report_datetime', 'reason', "info_source", 'created', 'user_created', ) list_filter = ( 'report_datetime', 'reason', 'appointment__appt_status', 'appointment__visit_definition__code', ) search_fields = ( 'appointment__registered_subject__subject_identifier', 'appointment__registered_subject__registration_identifier', 'appointment__registered_subject__first_name', 'appointment__registered_subject__identity', ) fields = ( "appointment", "report_datetime", "info_source", "info_source_other", "reason", "reason_missed", 'survival_status', 'date_last_alive', "comments", ) actions = [export_as_csv_action(description="CSV Export of Maternal Visit", fields=[], delimiter=',', exclude=['created', 'modified', 'user_created', 'user_modified', 'revision', 'id', 'hostname_created', 'hostname_modified' ], extra_fields=OrderedDict( {'subject_identifier': 'appointment__registered_subject__subject_identifier', 'gender': 'appointment__registered_subject__gender', 'dob': 'appointment__registered_subject__dob', 'registered': 'appointment__registered_subject__registration_datetime'}), )]
class RegisteredSubjectModelAdmin (BaseRegisteredSubjectModelAdmin): """ModelAdmin subclass for models with a ForeignKey to 'registered_subject'""" dashboard_type = 'infant' actions = [export_as_csv_action(description="CSV Export of registered_subject", fields=[], delimiter=',', exclude=['created', 'modified', 'user_created', 'user_modified', 'revision', 'id', 'hostname_created', 'hostname_modified' ], extra_fields=OrderedDict( {'subject_identifier': 'registered_subject__subject_identifier', 'gender': 'registered_subject__gender', 'dob': 'registered_subject__dob', 'registered': 'registered_subject__registration_datetime'}), )]
class InfantOffStudyAdmin(OffStudyModelAdmin): form = InfantOffStudyForm fields = ( "registered_subject", "infant_visit", "report_datetime", "offstudy_date", "reason", "reason_other", "has_scheduled_data", "comment", ) list_filter = ('created', 'modified', 'user_created', 'user_modified') radio_fields = {"has_scheduled_data": admin.VERTICAL} def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "infant_visit": if request.GET.get('infant_visit'): kwargs["queryset"] = InfantVisit.objects.filter( id=request.GET.get('infant_visit')) return super(InfantOffStudyAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) actions = [ export_as_csv_action( description="CSV Export of Off Study", fields=[], delimiter=',', exclude=[ 'created', 'modified', 'user_created', 'user_modified', 'revision', 'id', 'hostname_created', 'hostname_modified' ], extra_fields=OrderedDict({ 'subject_identifier': 'registered_subject__subject_identifier', 'gender': 'registered_subject__gender', 'dob': 'registered_subject__dob', 'registered': 'registered_subject__registration_datetime' }), ) ]
class InfantVisitAdmin(BaseAppointmentModelAdmin): form = InfantVisitForm dashboard_type = 'infant' requisition_model = InfantRequisition list_filter = ('created', ) search_fields = ( 'appointment__registered_subject__subject_identifier', 'appointment__registered_subject__registration_identifier', 'appointment__registered_subject__first_name', 'appointment__registered_subject__identity', ) fields = ("appointment", "report_datetime", "reason", "reason_missed", "study_status", "info_source", "info_source_other", "survival_status", "date_last_alive", "information_provider", "information_provider_other", "comments") radio_fields = { "study_status": admin.VERTICAL, "survival_status": admin.VERTICAL, "information_provider": admin.VERTICAL, } actions = [ export_as_csv_action( description="CSV Export of registered_subject", fields=[], delimiter=',', exclude=[ 'created', 'modified', 'user_created', 'user_modified', 'revision', 'id', 'hostname_created', 'hostname_modified' ], extra_fields=OrderedDict({ 'subject_identifier': 'appointment__registered_subject__subject_identifier', 'gender': 'appointment__registered_subject__gender', 'dob': 'appointment__registered_subject__dob', 'registered': 'appointment__registered_subject__registration_datetime' }), ) ]
class SubjectRequisitionAdmin(BaseRequisitionModelAdmin): visit_model = SubjectVisit visit_attr = 'subject_visit' def __init__(self, *args, **kwargs): super(SubjectRequisitionAdmin, self).__init__(*args, **kwargs) self.list_filter.append('community') self.list_filter.insert(0, PocVLRequsitionFilter) self.list_filter.append(SubjectRequisitionSurveyFilter) self.list_display.append('is_poc_vl') visit_model = SubjectVisit visit_fieldname = 'subject_visit' dashboard_type = 'subject' form = SubjectRequisitionForm label_template_name = 'requisition_label' actions = [ print_requisition_label, export_as_csv_action( "Export as csv", fields=[], delimiter=',', exclude=[ 'id', 'revision', 'hostname_created', 'hostname_modified', 'user_created', 'user_modified' ], ) ] def formfield_for_foreignkey(self, db_field, request, **kwargs): panel_pk = request.GET.get('panel', 0) if db_field.name == 'panel': kwargs["queryset"] = Panel.objects.filter(pk=panel_pk) if db_field.name == 'aliquot_type': if Panel.objects.filter(pk=panel_pk): if Panel.objects.get(pk=panel_pk).aliquot_type.all(): kwargs["queryset"] = Panel.objects.get( pk=panel_pk).aliquot_type.all() return super(BaseRequisitionModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
def get_actions(self, request): actions = super(BaseVisitTrackingModelAdmin, self).get_actions(request) actions['export_as_csv_action'] = ( export_as_csv_action( exclude=['id', self.visit_attr], extra_fields=OrderedDict( {'subject_identifier': '{}__appointment__registered_subject__subject_identifier'.format(self.visit_attr), 'visit_report_datetime': '{}__report_datetime'.format(self.visit_attr), 'gender': '{}__appointment__registered_subject__gender'.format(self.visit_attr), 'dob': '{}__appointment__registered_subject__dob'.format(self.visit_attr), 'visit_reason': '{}__reason.format(self.visit_attr)'.format(self.visit_attr), 'visit_status': '{}__appointment__appt_status'.format(self.visit_attr), 'visit': '{}__appointment__visit_definition__code'.format(self.visit_attr), 'visit_instance': '{}__appointment__visit_instance'.format(self.visit_attr)}), ), 'export_as_csv_action', 'Export to CSV with visit and demographics') return actions
class BaseHouseholdStructureModelAdmin(BaseModelAdmin): actions = [ export_as_csv_action("Export as csv", fields=[], exclude=[ 'id', ]) ] def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "household_structure": if request.GET.get('household_structure'): kwargs["queryset"] = HouseholdStructure.objects.filter( id__exact=request.GET.get('household_structure', 0)) else: self.readonly_fields = list(self.readonly_fields) try: self.readonly_fields.index('household_structure') except ValueError: self.readonly_fields.append('household_structure') return super(BaseHouseholdStructureModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
def get_actions(self, request): actions = super(MaternalVisitModelAdmin, self).get_actions(request) if issubclass(self.model, BaseConsentedUuidModel): actions['export_as_csv_action'] = ( export_as_csv_action( delimiter=',', exclude=[ 'id', self.visit_model_foreign_key, 'revision', 'modified', 'created', 'hostname_created', 'hostname_modified', 'user_modified', 'user_created' ], extra_fields=OrderedDict({ 'subject_identifier': self.visit_model_foreign_key + '__appointment__registered_subject__subject_identifier', 'visit_report_datetime': '%s__report_datetime' % self.visit_model_foreign_key, 'gender': self.visit_model_foreign_key + '__appointment__registered_subject__gender', 'dob': self.visit_model_foreign_key + '__appointment__registered_subject__dob', 'visit_reason': self.visit_model_foreign_key + '__reason', 'visit_status': self.visit_model_foreign_key + '__appointment__appt_status', 'visit': self.visit_model_foreign_key + '__appointment__visit_definition__code', 'visit_instance': self.visit_model_foreign_key + '__appointment__visit_instance' }), ), 'export_as_csv_action', "Export to CSV with visit and demographics") return actions
class HouseholdMemberAdmin(BaseHouseholdMemberAdmin): form = HouseholdMemberForm date_hierarchy = 'modified' actions = [ export_as_csv_action( "Export as csv", fields=[ 'initials', 'gender', 'age_in_years', 'member_status', 'present_today', 'study_resident', 'relation', 'eligible_member', 'eligible_subject' ], extra_fields={ 'plot_identifier': 'household_structure__household__plot__plot_identifier' }) ] def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "household_structure": if request.GET.get('household_structure'): kwargs["queryset"] = HouseholdStructure.objects.filter( id__exact=request.GET.get('household_structure', 0)) else: self.readonly_fields = list(self.readonly_fields) try: self.readonly_fields.index('household_structure') except ValueError: self.readonly_fields.append('household_structure') return super(HouseholdMemberAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) fields = [ 'household_structure', 'first_name', 'initials', 'gender', 'age_in_years', 'present_today', 'inability_to_participate', 'inability_to_participate_other', 'study_resident', 'relation', 'personal_details_changed', 'details_change_reason' ] radio_fields = { "gender": admin.VERTICAL, "relation": admin.VERTICAL, "present_today": admin.VERTICAL, "inability_to_participate": admin.VERTICAL, "study_resident": admin.VERTICAL, "personal_details_changed": admin.VERTICAL, "details_change_reason": admin.VERTICAL } list_display = ('first_name', 'initials', 'household_structure', 'updated', 'to_locator', 'hiv_history', 'relation', 'visit_attempts', 'member_status', 'inability_to_participate', 'eligible_member', 'eligible_subject', 'enrollment_checklist_completed', 'enrollment_loss_completed', 'reported', 'refused', 'is_consented', 'eligible_htc', 'created', 'hostname_created') search_fields = [ 'first_name', 'household_structure__id', 'household_structure__household__household_identifier', 'household_structure__household__id', 'household_structure__household__plot__plot_identifier', 'household_structure__household__plot__id', 'relation', 'id' ] list_filter = ( 'household_structure__survey__survey_name', 'present_today', 'study_resident', 'member_status', 'inability_to_participate', 'survival_status', 'eligible_member', 'eligible_subject', 'enrollment_checklist_completed', 'enrollment_loss_completed', 'reported', 'refused', 'is_consented', 'eligible_htc', 'target', 'hiv_history', 'household_structure__household__community', 'modified', 'hostname_created', 'user_created', 'visit_attempts', 'auto_filled', 'updated_after_auto_filled', ) def get_fieldsets(self, request, obj=None): fields = self.fields if not obj: try: fields.remove('personal_details_changed') fields.remove('details_change_reason') except ValueError: pass return [(None, {'fields': fields})] list_per_page = 15
def get_actions(self, request): actions = super(SubjectReferralAdmin, self).get_actions(request) actions[ 'export_as_csv_action'] = ( # This is a django SortedDict (function, name, short_description) export_as_csv_action( delimiter=',', encrypt=False, strip=True, exclude=[ 'exported', 'exported_datetime', self.visit_attr, 'revision', 'hostname_created', 'hostname_modified', 'created', 'modified', 'user_created', 'user_modified', 'comment' ], extra_fields=OrderedDict({ 'first_name': self.visit_attr + '__appointment__registered_subject__first_name', 'last_name': self.visit_attr + '__appointment__registered_subject__last_name', 'initials': self.visit_attr + '__appointment__registered_subject__initials', 'dob': self.visit_attr + '__appointment__registered_subject__dob', 'identity': self.visit_attr + '__appointment__registered_subject__identity', 'identity_type': self.visit_attr + '__appointment__registered_subject__identity_type', })), 'export_as_csv_action', 'Export Referrals to CSV') actions['export_referrals_for_cdc_action'] = ( export_referrals_for_cdc_action( delimiter='|', encrypt=False, strip=True, exclude=[ 'comment', 'created', 'exported', 'hostname_created', 'hostname_modified', 'in_clinic_flag', 'modified', 'referral_clinic_other', 'scheduled_appt_date', 'revision', 'subject_visit', 'user_created', 'user_modified'], extra_fields=OrderedDict( {'plot_identifier': self.visit_attr + \ '__household_member__household_structure__household__plot__plot_identifier', 'dob': self.visit_attr + '__appointment__registered_subject__dob', 'first_name': self.visit_attr + '__appointment__registered_subject__first_name', 'identity': self.visit_attr + '__appointment__registered_subject__identity', 'identity_type': self.visit_attr + '__appointment__registered_subject__identity_type', 'initials': self.visit_attr + '__appointment__registered_subject__initials', 'last_name': self.visit_attr + '__appointment__registered_subject__last_name', }) ), 'export_referrals_for_cdc_action', 'Export Referrals in CDC format (Manual)') return actions
class BaseHouseholdModelAdmin(BaseModelAdmin): actions = [export_as_csv_action( "Export as csv", fields=[], exclude=['id', ] )]