share location
parent
c3760db0e0
commit
0c2b6adc27
|
@ -0,0 +1,6 @@
|
||||||
|
<action>
|
||||||
|
<field name="string">Share Location</field>
|
||||||
|
<field name="view_cls">form_popup</field>
|
||||||
|
<field name="model">clinic.share.location</field>
|
||||||
|
<field name="target">_popup</field>
|
||||||
|
</action>
|
|
@ -2,7 +2,7 @@
|
||||||
<head>
|
<head>
|
||||||
<field name="type_id"/>
|
<field name="type_id"/>
|
||||||
<button string="Options" dropdown="1">
|
<button string="Options" dropdown="1">
|
||||||
<!--<item string="Generate Visit" action="clinic_gen_visit"/>-->
|
<item string="Share Location" action="clinic_share_location"/>
|
||||||
</button>
|
</button>
|
||||||
</head>
|
</head>
|
||||||
<field name="number"/>
|
<field name="number"/>
|
||||||
|
@ -17,6 +17,7 @@
|
||||||
<field name="department_id" required="1"/>
|
<field name="department_id" required="1"/>
|
||||||
<field name="walkin"/>
|
<field name="walkin"/>
|
||||||
<field name="vascular_acc"/>
|
<field name="vascular_acc"/>
|
||||||
|
<field name="location" readonly="1"/>
|
||||||
<field name="active" invisible="1"/>
|
<field name="active" invisible="1"/>
|
||||||
<tabs>
|
<tabs>
|
||||||
<tab string="General">
|
<tab string="General">
|
||||||
|
@ -95,6 +96,7 @@
|
||||||
</group>
|
</group>
|
||||||
</tab>
|
</tab>
|
||||||
-->
|
-->
|
||||||
|
<!--
|
||||||
<tab string="HD Departments">
|
<tab string="HD Departments">
|
||||||
<field name="departments" nolabel="1"/>
|
<field name="departments" nolabel="1"/>
|
||||||
<group span="8" columns="1">
|
<group span="8" columns="1">
|
||||||
|
@ -107,6 +109,7 @@
|
||||||
<group span="4" columns="1">
|
<group span="4" columns="1">
|
||||||
</group>
|
</group>
|
||||||
</tab>
|
</tab>
|
||||||
|
-->
|
||||||
<tab string="Accounting" perm="clinic_patient_account">
|
<tab string="Accounting" perm="clinic_patient_account">
|
||||||
<field name="partner_id" domain='[["is_patient","=","true"]]'/>
|
<field name="partner_id" domain='[["is_patient","=","true"]]'/>
|
||||||
</tab>
|
</tab>
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<form model="clinic.share.location">
|
||||||
|
<group form_layout="stacked">
|
||||||
|
<!--
|
||||||
|
<template>
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
|
||||||
|
<span class="sr-only">Note:</span>
|
||||||
|
Please use commas (",") and locaiton code as separator between location such as: location_code1, location_code2 .
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
-->
|
||||||
|
<field name="location" span="8"/>
|
||||||
|
<field name="loc_select" selection="get_location" onchange="onchange_location" span="4"/>
|
||||||
|
<field name="patient_id" invisible="1" span="2"/>
|
||||||
|
</group>
|
||||||
|
<foot>
|
||||||
|
<button string="Share" type="primary" icon="share-alt" method="do_share"/>
|
||||||
|
<button string="Clear" type="default" method="do_clear"/>
|
||||||
|
</foot>
|
||||||
|
</form>
|
|
@ -135,5 +135,6 @@ from . import report_thai_wht_certif
|
||||||
from . import num2word
|
from . import num2word
|
||||||
from . import province
|
from . import province
|
||||||
from . import change_visit
|
from . import change_visit
|
||||||
|
from . import share_location
|
||||||
#from . import district
|
#from . import district
|
||||||
#from . import subdistrict
|
#from . import subdistrict
|
||||||
|
|
|
@ -74,9 +74,6 @@ class Patient(Model):
|
||||||
dpt_codes=set()
|
dpt_codes=set()
|
||||||
# main department
|
# main department
|
||||||
dpt_codes.update({obj.department_id.code})
|
dpt_codes.update({obj.department_id.code})
|
||||||
# hd department
|
|
||||||
for dpt in obj.departments:
|
|
||||||
dpt_codes.update({dpt.code})
|
|
||||||
# cycle settings
|
# cycle settings
|
||||||
for cline in obj.cycles:
|
for cline in obj.cycles:
|
||||||
dpt_codes.update({cline.department_id.code})
|
dpt_codes.update({cline.department_id.code})
|
||||||
|
@ -178,9 +175,8 @@ class Patient(Model):
|
||||||
"vascular_acc": fields.Many2One("clinic.vascular.access","Vascular Ac."),
|
"vascular_acc": fields.Many2One("clinic.vascular.access","Vascular Ac."),
|
||||||
'state': fields.Selection([['admit','Admit'],['dispose','Dispose']],'State'),
|
'state': fields.Selection([['admit','Admit'],['dispose','Dispose']],'State'),
|
||||||
'walkin': fields.Selection([['yes','Yes'],['no','No']],"Walkin"),
|
'walkin': fields.Selection([['yes','Yes'],['no','No']],"Walkin"),
|
||||||
'departments': fields.Many2Many("clinic.department","Departments"),
|
|
||||||
'department_names': fields.Text("Departments",function="_get_department_names"),
|
'department_names': fields.Text("Departments",function="_get_department_names"),
|
||||||
'location': fields.Char("Location",function="_get_location",store=True), #to filter
|
'location': fields.Char("Location"), #to filter
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_number(self,context={}):
|
def _get_number(self,context={}):
|
||||||
|
@ -275,7 +271,6 @@ class Patient(Model):
|
||||||
}
|
}
|
||||||
|
|
||||||
_sql_constraints=("clinic_patient_key_uniq","unique(name_check)","name should be unique"),
|
_sql_constraints=("clinic_patient_key_uniq","unique(name_check)","name should be unique"),
|
||||||
#_order="reg_date desc"
|
|
||||||
|
|
||||||
def check_idcard(self,card_type,idcard=''):
|
def check_idcard(self,card_type,idcard=''):
|
||||||
res=True
|
res=True
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
from netforce.access import get_active_user, set_active_user
|
||||||
|
from netforce.model import Model, fields, get_model
|
||||||
|
from netforce.database import get_connection
|
||||||
|
|
||||||
|
|
||||||
|
class ShareLocation(Model):
|
||||||
|
_name="clinic.share.location"
|
||||||
|
_transient=True
|
||||||
|
_select_patient=None
|
||||||
|
|
||||||
|
_fields={
|
||||||
|
'patient_id': fields.Many2One("clinic.patient","Patient",required=True),
|
||||||
|
'location': fields.Char("Location",required=True),
|
||||||
|
"loc_select": fields.Selection([],"Departments"),
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_location_user(self,patient_id=None,patient_only=False):
|
||||||
|
user_id=get_active_user()
|
||||||
|
user=get_model('base.user').browse(user_id)
|
||||||
|
department=user.department_id
|
||||||
|
loc=[]
|
||||||
|
if department and not patient_only:
|
||||||
|
loc.append(department.code)
|
||||||
|
if patient_id:
|
||||||
|
patient=get_model('clinic.patient').browse(patient_id)
|
||||||
|
self._select_patient=patient.id
|
||||||
|
department=patient.department_id
|
||||||
|
loc.append(department.code)
|
||||||
|
return loc
|
||||||
|
|
||||||
|
def default_get(self,field_names=None,context={},**kw):
|
||||||
|
refer_id=context.get("refer_id")
|
||||||
|
patient_id=None
|
||||||
|
location=''
|
||||||
|
if refer_id:
|
||||||
|
patient_id=int(refer_id)
|
||||||
|
patient=get_model('clinic.patient').browse(patient_id)
|
||||||
|
location=patient.location or ''
|
||||||
|
uloc=self.get_location_user(patient.id)
|
||||||
|
new_loc=[]
|
||||||
|
for loc_code in location.split(","):
|
||||||
|
if loc_code in uloc:
|
||||||
|
continue
|
||||||
|
new_loc.append(loc_code)
|
||||||
|
location=','.join(new_loc)
|
||||||
|
res={
|
||||||
|
'patient_id': patient_id,
|
||||||
|
'location': location,
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
|
||||||
|
def get_location(self,context={}):
|
||||||
|
user_id=get_active_user()
|
||||||
|
uloc=self.get_location_user(self._select_patient)
|
||||||
|
set_active_user(1)
|
||||||
|
res=get_model("clinic.department").search_read([],["code","name"])
|
||||||
|
set_active_user(user_id)
|
||||||
|
return [(r["code"],'%s [%s]'%(r['name'],r["code"])) for r in res if r['code'] not in uloc]
|
||||||
|
|
||||||
|
def onchange_location(self,context={}):
|
||||||
|
data=context['data']
|
||||||
|
location=data['location'] or ''
|
||||||
|
location=location.split(",")+[data['loc_select'] or '']
|
||||||
|
sloc=list(set(location))
|
||||||
|
data['location']=','.join([loc for loc in sloc if loc])
|
||||||
|
return data
|
||||||
|
|
||||||
|
def do_share(self,ids,context={}):
|
||||||
|
obj=self.browse(ids)[0]
|
||||||
|
patient=obj.patient_id
|
||||||
|
uloc=self.get_location_user(patient.id,patient_only=True)
|
||||||
|
new_loc=uloc
|
||||||
|
for loc_code in obj.location.split(","):
|
||||||
|
res=get_model('clinic.department').search([['code','=',loc_code]])
|
||||||
|
if not res:
|
||||||
|
raise Exception("Department code %s not found!"%(loc_code))
|
||||||
|
new_loc.append(loc_code)
|
||||||
|
main_loc=patient.department_id.code
|
||||||
|
if main_loc not in new_loc:
|
||||||
|
raise Exception("Can not delete main department %s"%(main_loc))
|
||||||
|
#TODO check user location
|
||||||
|
location=','.join(new_loc)
|
||||||
|
db=get_connection()
|
||||||
|
db.execute("update clinic_patient set location=%s where id=%s",location,patient.id)
|
||||||
|
return {
|
||||||
|
'next': {
|
||||||
|
'name': 'clinic_patient',
|
||||||
|
'mode': 'form',
|
||||||
|
'active_id': patient.id,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
def do_clear(self,ids,context={}):
|
||||||
|
obj=self.browse(ids)[0]
|
||||||
|
obj.write({
|
||||||
|
'location': '',
|
||||||
|
})
|
||||||
|
return {
|
||||||
|
'next': {
|
||||||
|
'name': 'clinic_share_location',
|
||||||
|
'mode': 'form',
|
||||||
|
'active_id': ids[0],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
ShareLocation.register()
|
||||||
|
|
Loading…
Reference in New Issue