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'
            }),
        )
    ]
Esempio n. 4
0
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'}),
        )]
Esempio n. 6
0
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'
            }),
        )
    ]
Esempio n. 7
0
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'
            }),
        )
    ]
Esempio n. 8
0
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
Esempio n. 10
0
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)
Esempio n. 11
0
 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', ]
    )]