Project

General

Profile

« Previous | Next » 

Revision f8d1732b

Added by Mikaël Ates about 11 years ago

statistics: add statistic for open files at a given date (fixes #3996).

View differences:

calebasse/statistics/statistics.py
33 33
            intervenants sont indiqués, seuls ceux-ci sont pris en compte.
34 34
            """
35 35
    },
36
    'active_patients' :
36
    'active_patients_by_state_only' :
37 37
        {
38
        'display_name': 'Enfants en file active',
38
        'display_name': "Dossiers actifs selon l'état du dossier à une date donnée",
39
        'category': 'Patients',
40
        'comment': """Listes des patients dont le dossier était actif à une date donnée.
41
            Rappel des états actifs des dossiers : CMPP : diagnostic
42
            ou traitement, CAMSP : suivi, SESSAD: Traitement.
43
            La date par défaut est aujourd'hui.
44
            """
45
    },
46
    'active_patients_with_act' :
47
        {
48
        'display_name': 'Dossiers actifs et inactifs avec un acte validé ou non sur une période',
39 49
        'category': 'Patients',
40 50
        'comment': """Listes des patients ayant eu au moins un acte proposé
41 51
            durant la période indiquée. Les patients sont scindés en quatre
......
625 635
    data_tables.append(data)
626 636
    return [data_tables]
627 637

  
628
def active_patients(statistic):
638
def active_patients_by_state_only(statistic):
639
    if not statistic.in_service:
640
        return None
641
    if not statistic.in_start_date:
642
        statistic.in_start_date = datetime.today()
643
    active_states = None
644
    if statistic.in_service.name == 'CMPP':
645
        active_states = ('TRAITEMENT', 'DIAGNOSTIC')
646
    elif statistic.in_service.name == 'CAMSP':
647
        active_states = ('SUIVI', )
648
    else:
649
        active_states = ('TRAITEMENT', )
650
    patients = [(p.last_name, p.first_name, p.paper_id) \
651
        for p in PatientRecord.objects.filter(service=statistic.in_service) \
652
            if p.get_state_at_day(
653
                statistic.in_start_date).status.type in active_states]
654
    data_tables_set=[[[['En date du :', formats.date_format(statistic.in_start_date, "SHORT_DATE_FORMAT"), len(patients)]]]]
655
    data = []
656
    data.append(['Nom', 'Prénom', 'N° Dossier'])
657
    p_list = []
658
    for ln, fn, pid in patients:
659
        ln = ln or ''
660
        if len(ln) > 1:
661
            ln = ln[0].upper() + ln[1:].lower()
662
        fn = fn or ''
663
        if len(fn) > 1:
664
            fn = fn[0].upper() + fn[1:].lower()
665
        p_list.append((ln, fn, str(pid or '')))
666
    data.append(sorted(p_list,
667
        key=lambda k: k[0]+k[1]))
668
    data_tables_set[0].append(data)
669
    return data_tables_set
670

  
671
def active_patients_with_act(statistic):
629 672
    def process(patients_list, title):
630 673
        data_tables = []
631 674
        data = []

Also available in: Unified diff