コード例 #1
0
ファイル: reports.py プロジェクト: dcmul/rapidsms
def malnut(request, object_id=None, per_page="0", rformat="pdf"):
    '''List @Risk Malnutrition Cases per clinic '''
    pdfrpt = PDFReport()

    fourteen_days = timedelta(days=30)
    today = datetime.now()

    duration_start = day_start(today - fourteen_days)
    duration_end = today

    pdfrpt.setTitle(_("%(app_name)s: @Risk Malnutrition Cases from"\
                     " %(start_date)s to %(end_date)s"\
                     % {'start_date': duration_start.date(),
                        'end_date': duration_end.date(),
                        'app_name': Cfg.get("app_name")}))
    #pdfrpt.setRowsPerPage(66)
    pdfrpt.setNumOfColumns(2)
    pdfrpt.setLandscape(True)

    if object_id is None and not request.POST:
        clinics = Location.objects.filter(type__name="Clinic")
        for clinic in clinics:
            queryset, fields = \
                ReportAllPatients.malnutrition_at_risk(duration_start, \
                                                       duration_end, clinic)
            c = clinic
            subtitle = _("%(clinic)s: @Risk Malnutrition Cases from "\
                "%(start_date)s to %(end_date)s" % \
                {'clinic': c.name, 'start_date': duration_start.date(), \
                 'end_date': duration_end.date()})
            pdfrpt.setTableData(queryset, fields, subtitle, \
                        [0.2 * inch, 0.4 * inch, 1 * inch, 0.3 * inch, \
                         .3 * inch, .8 * inch, .5 * inch, .2 * inch, \
                         0.5 * inch, 0.8 * inch, 1 * inch])
            if (int(per_page) == 1) is True:
                pdfrpt.setPageBreak()
                pdfrpt.setFilename("/tmp/malnutrition_at_risk")
    else:
        if request.POST['clinic']:
            object_id = request.POST['clinic']
            object_id = Location.objects.get(id=object_id)
        queryset, fields = \
            ReportAllPatients.malnutrition_at_risk(duration_start, \
                                                   duration_end, object_id)

        subtitle = _("%(clinic)s: @Risk Malnutrition Cases from "\
                "%(start_date)s to %(end_date)s" % \
                {'clinic': object_id.name, \
                 'start_date': duration_start.date(), \
                 'end_date': duration_end.date()})
        pdfrpt.setTableData(queryset, fields, subtitle, \
                        [0.2 * inch, 0.4 * inch, 1 * inch, 0.3 * inch, \
                         .3 * inch, .8 * inch, .5 * inch, .2 * inch, \
                         0.5 * inch, 0.8 * inch, 1 * inch])
        pdfrpt.setFilename("/tmp/malnutrition_at_risk")

    return pdfrpt.render()
コード例 #2
0
ファイル: reports.py プロジェクト: dcmul/rapidsms
def malnutrition_screening(request, object_id=None, per_page="0", \
                           rformat="pdf"):
    ''' Malnutrition Screening Form Originally for SN CC '''
    pdfrpt = []
    pdfrpt = PDFReport()

    #fourteen_days = timedelta(days=30)
    today = datetime.now()

    #duration_start = day_start(today - fourteen_days)
    #duration_end = today

    pdfrpt.setTitle("%(app_name)s: Formulaire de Depistage" % \
                   {'app_name': Cfg.get("app_name")})
    #pdfrpt.setRowsPerPage(66)
    pdfrpt.setNumOfColumns(1)
    pdfrpt.setLandscape(True)
    pdfrpt.setFontSize(10)
    if object_id is None and not request.POST:
        sites = Location.objects.filter(type__name="Site")
        for site in sites:
            queryset, fields = \
                ReportAllPatients.malnutrition_screening_info(site)
            subtitle = _("%(site_name)s: Registre des Enfants pour: " % \
                         {'site_name': site.name})
            pdfrpt.setTableData(queryset, fields, subtitle, \
                            [0.4 * inch, 1.5 * inch, 0.4 * inch, 0.5 * inch, \
                             0.5 * inch, 1.0 * inch, 0.9 * inch, 1.0 * inch, \
                             0.7 * inch, 0.7 * inch, 0.7 * inch, 0.7 * inch, \
                             0.8 * inch, 1.0 * inch])
            if (int(per_page) == 1) is True:
                pdfrpt.setPageBreak()
                pdfrpt.setFilename("/tmp/malnutrition_at_risk")
    else:
        if request.POST['zone']:
            site_id = request.POST['zone']
            site = Location.objects.get(id=site_id)
            queryset, fields = \
                ReportAllPatients.malnutrition_screening_info(site)

            subtitle = _("Registre des Enfants pour: %(site_name)s" % \
                         {'site_name': site.name})
        # no nom sex dob age mere sms numero pb poids oedems
        # ddepistage consulter
            pdfrpt.setTableData(queryset, fields, subtitle, \
                            [0.4 * inch, 1.5 * inch, 0.4 * inch, 0.5 * inch, \
                             0.5 * inch, 1.0 * inch, 0.9 * inch, 1.0 * inch, \
                             0.7 * inch, 0.7 * inch, 0.7 * inch, 0.7 * inch, \
                             0.8 * inch, 1.0 * inch])
            filename = "/tmp/formulaire_de_depistage" + \
                    datetime.today().strftime("%Y_%m_%d_%H_%M_%S")

            pdfrpt.setFilename(filename)

    return pdfrpt.render()
コード例 #3
0
ファイル: reports.py プロジェクト: dcmul/rapidsms
def patients_by_age(request, object_id=None, per_page="0", rformat="pdf"):
    ''' Children Screening per age for SN CC '''
    pdfrpt = PDFReport()

    #pdfrpt.setTitle(_("ChildCount Senegal: Listing Enfant par Age"))
    pdfrpt.setTitle(_(Cfg.get("app_name") + \
                ": Listing Enfant par Age" ))
    #pdfrpt.setRowsPerPage(66)
    pdfrpt.setNumOfColumns(1)
    pdfrpt.setLandscape(True)
    pdfrpt.setFontSize(10)
    if object_id is None and not request.POST:
        age_mois = 0
        cases = Case.objects.order_by("location").distinct()
        queryset, fields = ReportAllPatients.by_age(age_mois, cases)
        subtitle = _("Registre des Enfants pour: ") #%(site.name)
        pdfrpt.setTableData(queryset, fields, subtitle, \
                    [0.2 * inch, 1.5 * inch, 0.5 * inch, 0.7 * inch, \
                     0.5 * inch, 1.5 * inch,1.0 * inch, 0.5 * inch, 0.7 * inch, \
                     0.5 * inch, 0.5 * inch, 0.7 * inch, 1.5 * inch, \
                     1 * inch])
        if (int(per_page) == 1) is True:
            pdfrpt.setPageBreak()
        pdfrpt.setFilename("/tmp/Listing_Enfant")

    else:
        cases = Case.objects.order_by("location").distinct()

        if request.POST['age']:
            age_mois = int(request.POST['age'])
            str_age = request.POST['age']

            queryset, fields = ReportAllPatients.by_age(age_mois, cases)

            subtitle = _("Registre des Enfants de : %(age)s mois" % \
                         {'age': str_age})
        # no nom sex dob age mere sms numero pb poids oedems
        #depistage consulter
            pdfrpt.setTableData(queryset, fields, subtitle, \
                        [0.2 * inch, 1.5 * inch, 0.5 * inch, 0.7 * inch, \
                         0.5 * inch, 1.5 * inch,1.0 * inch, 0.5 * inch, 0.7 * inch, \
                         0.5 * inch, 0.5 * inch, 0.7 * inch, 1.5 * inch, \
                         1 * inch])
            filename = "/tmp/Listing_Enfant_" + \
                datetime.today().strftime("%Y_%m_%d_%H_%M_%S")

            pdfrpt.setFilename(filename)

    return pdfrpt.render()
コード例 #4
0
ファイル: reports.py プロジェクト: dcmul/rapidsms
def dead_cases_report(request, rformat="pdf"):
    '''List of Cases/Patient per CHW'''
    today = datetime.now().strftime("%d %B,%Y")
    pdfrpt = PDFReport()
    pdfrpt.setLandscape(True)
    title = _("%(app_name)s: Dead Cases report as of %(date)s" % \
               {'app_name': Cfg.get("app_name"), 'date': today})
    pdfrpt.setTitle(title)
    pdfrpt.setNumOfColumns(1)
    queryset, fields = \
        ReportAllPatients.death_report_by_provider()
    if queryset:
        pdfrpt.setTableData(queryset, fields, title, \
                    [0.3 * inch, 0.4 * inch, 1 * inch, 0.4 * inch, \
                     0.5 * inch, 0.8 * inch, 0.5 * inch, 1 * inch, \
                     0.6 * inch, 1.4 * inch, 1.5 * inch, 1 * inch, \
                     1.3 * inch, 1.2 * inch])
    pdfrpt.setFilename("/tmp/deathreport_")

    return pdfrpt.render()
コード例 #5
0
ファイル: views.py プロジェクト: dcmul/rapidsms
def commands_pdf(request):
    '''List of supported commands and their format'''
    pdfrpt = PDFReport()
    pdfrpt.setLandscape(True)
    pdfrpt.setNumOfColumns(2)
    pdfrpt.setFilename("shortlist")
    header("Malnutrition Monitoring Report")

    p("MUAC +PatientID MUACMeasurement Edema (E/N) Symptoms")
    pre("Example: MUAC +1410 105 E V D Or      MUAC +1385 140 n")

    header("Malaria Rapid Diagnostic Test Reports (MRDT)")
    p("MRDT +PatientID RDTResult (Y/N) BedNet (Y/N) Symtoms")
    pre("Example: MRDT +28 Y N D CV")

    pre('''\

     Code | Symptom                 | Danger Sign
     =============================================
      CG  |  Coughing               |
      D   |  Diarrhea               |  CMAM
      A   |  Appetite Loss          |  CMAM
      F   |  Fever                  |  CMAM
      V   |  Vomiting               |  CMAM, RDT
      NR  |  Nonresponsive          |  CMAM, RDT
      UF  |  Unable to Feed         |  CMAM, RDT
      B   |  Breathing Difficulty   |  RDT
      CV  |  Convulsions/Fits       |  RDT
      CF  |  Confusion              |  RDT
     ==============================================
    ''')

    header("Death Report")
    p("DEATH LAST FIRST GENDER AGE  DateOfDeath (DDMMYY) CauseOfDeath "\
      "Location Description")
    pre("Example: DEATH RUTH BABE M 50m 041055 S H Sudden heart attack")

    header("Child Death Report")
    p("CDEATH +ID DateOfDeath(DDMMYY) Cause Location Description")
    pre("Example: CDEATH +782 101109 I C severe case of pneumonia")

    pre('''\
    CauseOfDeath - Likely causes of death
    ===========================
    P   |   Pregnancy related
    B   |   Child Birth
    A   |   Accident
    I   |   Illness
    S   |   Sudden Death
    ===========================
    ''')

    pre('''\
    Location - where the death occurred
    ===================================================
    H   |   Home
    C   |   Health Facility
    T   |   Transport - On route to Clinic/Hospital
    ===================================================
    ''')

    header("Birth Report")
    p("BIRTH Last First Gender(M/F) DOB (DDMMYY) WEIGHT Location "\
      "Guardian Complications")
    pre("BIRTH Onyango James M 051009 4.5 C Anyango No Complications")

    header("Inactive Cases")
    p("INACTIVE +PID ReasonOfInactivity")
    pre(" INACTIVE +23423 immigrated to another town(Siaya)")

    header("Activate Inactive Cases")
    p("ACTIVATE +PID ReasonForActivating")
    pre(" ACTIVATE +23423 came back from Nairobi")

    pdfrpt.setElements(Elements)
    return pdfrpt.render()
コード例 #6
0
ファイル: reports.py プロジェクト: dcmul/rapidsms
def patients_by_chw(request, object_id=None, per_page="0", rformat="pdf"):
    '''List of Cases/Patient per CHW'''
    today = datetime.now().strftime("%d %B,%Y")
    pdfrpt = PDFReport()
    pdfrpt.setLandscape(True)
    pdfrpt.setPrintOnBothSides(True)
    
    pdfrpt.setTitle(_("%(app_name)s: Cases Reports by CHW as of %(date)s") % {'date': today,'app_name':Cfg.get("app_name")})
    
    pdfrpt.setNumOfColumns(2)
    #pdfrpt.setRowsPerPage(88)
    if object_id is None:
        if request.POST and request.POST['zone']:
         #   providers = Case.objects.filter(location=request.POST['zone']).\
          #      values('reporter', 'location').distinct()
            providers = Reporter.objects.filter(location=request.POST['zone'])
            #per_page = "1"
        else:
            providers = Reporter.objects.all()
         #   providers = Case.objects.order_by("location").\
         #                   values('reporter', 'location').distinct()
        
            
        for reporter in providers:
            queryset, fields = ReportAllPatients.by_provider(reporter)
            if queryset:
                cinfo = {'loc': reporter.location,
                         'lname': reporter.last_name,
                         'fname': reporter.first_name,
                         'date': today}
                c = _("%(loc)s: %(lname)s %(fname)s: %(date)s" % cinfo)
                pdfrpt.setTableData(queryset, fields, c, \
                            [0.3 * inch, 0.4 * inch, 1 * inch, 0.4 * inch, \
                             0.3 * inch, 0.8 * inch, 0.5 * inch, 1 * inch, \
                             0.8 * inch])
                if (int(per_page) == 1) is True:
                    pdfrpt.setPageBreak()
                pdfrpt.setFilename("/tmp/report_per_page")
    else:
        if request.POST and request.POST['provider']:
            object_id = request.POST['provider']
        reporter = Reporter.objects.get(id=object_id)
        queryset, fields = ReportAllPatients.by_provider(reporter)
        if queryset:
            cinfo = {'loc': reporter.location,
                     'lname': reporter.last_name,
                     'fname': reporter.first_name,
                     'date': today}
            c = _("%(loc)s: %(lname)s %(fname)s: %(date)s" % cinfo)
            if rformat == "csv" or (request.POST \
                                and request.POST["format"].lower() == "csv"):
                file_name = reporter.last_name + ".csv"
                file_name = file_name.replace(" ", "_").replace("'", "")
                return handle_csv(request, queryset, fields, file_name)

            pdfrpt.setTableData(queryset, fields, c, \
                            [0.3 * inch, 0.4 * inch, 1 * inch, 0.4 * inch, \
                             0.3 * inch, 0.4 * inch, 0.5 * inch, 1 * inch, \
                             1 * inch])
            if (int(per_page) == 1) is True:
                pdfrpt.setPageBreak()
            pdfrpt.setFilename("/tmp/report_per_page")

    return pdfrpt.render()