Project

General

Profile

Download (2.22 KB) Statistics
| Branch: | Tag: | Revision:
61861b9b Jérôme Schneider
# -*- coding: utf-8 -*-
4376fbf4 Jérôme Schneider
9f39f12f Jérôme Schneider
from calebasse.lookups import CalebasseLookup
677c2c8d Jérôme Schneider
from calebasse.dossiers.models import PatientRecord, PatientAddress
6a664659 Serghei MIHAI
from itertools import chain
4376fbf4 Jérôme Schneider
9f39f12f Jérôme Schneider
class PatientRecordLookup(CalebasseLookup):
4376fbf4 Jérôme Schneider
model = PatientRecord
cd8a83dc Jérôme Schneider
search_field = 'last_name'
61861b9b Jérôme Schneider
homonym = False
4376fbf4 Jérôme Schneider
def get_query(self,q,request):
cd8a83dc Jérôme Schneider
kwargs = { "%s__istartswith" % self.search_field : q }
fb771100 Serghei MIHAI
not_closed_filter_field = 'last_state__status__name'

cd8a83dc Jérôme Schneider
qs = self.model.objects.filter(**kwargs).order_by(self.search_field)
fb771100 Serghei MIHAI
4376fbf4 Jérôme Schneider
if request.COOKIES.has_key('home-service'):
8f89c608 Jérôme Schneider
service = request.COOKIES['home-service'].upper().replace('-', ' ')
4376fbf4 Jérôme Schneider
qs = qs.filter(service__name=service)
61861b9b Jérôme Schneider
#nb = qs.count()
#nb_distinct = qs.distinct('display_name').count()
#if nb != nb_distinct:
# self.homonym = True
qs.prefetch_related('last_state__status')
fb771100 Serghei MIHAI
qs.query.order_by = [not_closed_filter_field, ]
6a664659 Serghei MIHAI
# filtering all closed records to put them at the end
separation_criteria = {'last_state__status__name': 'Clos'}
closed = qs.filter(**separation_criteria)
qs = qs.exclude(**separation_criteria)

fb771100 Serghei MIHAI
qs = qs.order_by('-%s' % not_closed_filter_field)

6a664659 Serghei MIHAI
return chain(qs, closed)
4376fbf4 Jérôme Schneider
4e4c4c50 Jérôme Schneider
def get_result(self, obj):
return self.format_item_display(obj)

def format_match(self, obj):
return self.format_item_display(obj)

def format_item_display(self,obj):
text = obj.last_name.upper() + ' ' + obj.first_name
a6638759 Jérôme Schneider
if obj.paper_id or obj.last_state:
text += u' ('
cffbd8a2 Jérôme Schneider
if obj.paper_id:
a6638759 Jérôme Schneider
text += obj.paper_id
if obj.last_state:
text += u' - '
61861b9b Jérôme Schneider
if obj.last_state:
a6638759 Jérôme Schneider
text += obj.last_state.status.name
if obj.paper_id or obj.last_state:
text += u')'
4e4c4c50 Jérôme Schneider
return unicode(text)
cffbd8a2 Jérôme Schneider
9f39f12f Jérôme Schneider
class PatientAddressLookup(CalebasseLookup):
677c2c8d Jérôme Schneider
model = PatientAddress
search_field = 'display_name'

def get_query(self, q, request):
qs = super(PatientAddressLookup, self).get_query(q, request)
if request.session.has_key('patientrecord_id'):
qs = qs.filter(patientcontact__id=request.session['patientrecord_id'])
return qs