refactor
parent
4440a5a312
commit
c1e2142629
|
@ -2,6 +2,6 @@
|
|||
<field name="string">Patients</field>
|
||||
<field name="view_cls">multi_view</field>
|
||||
<field name="model">clinic.patient</field>
|
||||
<field name="tabs">[["All",[]],["Archived",[["active","=","False"]]],["Social Security",[["type","=","sc"]]],["NHSO(30฿)",[["type","=","nhso"]]],["Personal",[["type","=","personal"]]],["Others",[["type","=","others"]]]]</field>
|
||||
<field name="tabs">[["All",[]],["Archived",[["active","=","False"]]],["Social Security",[["type","=","sc"]]],["UC",[["type","=","uc"]]],["Others",[["type","=","others"]]]]</field>
|
||||
<field name="menu">clinic_menu</field>
|
||||
</action>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<action>
|
||||
<field name="string">Visit Dialy</field>
|
||||
<field name="string">Visit Board</field>
|
||||
<field name="view_cls">report</field>
|
||||
<field name="model">clinic.visit.dialy</field>
|
||||
<field name="report_template">visit_dialy</field>
|
||||
<field name="report_template_xls">visit_dialy</field>
|
||||
<field name="model">clinic.visit.board</field>
|
||||
<field name="report_template">visit_board</field>
|
||||
<field name="report_template_xls">visit_board</field>
|
||||
<field name="menu">clinic_menu</field>
|
||||
</action>
|
|
@ -1,6 +1,6 @@
|
|||
<action>
|
||||
<field name="view_cls">form_view</field>
|
||||
<field name="model">clinic.import.payment</field>
|
||||
<field name="view_xml">import_clinic_nhso</field>
|
||||
<field name="view_xml">import_clinic_uc</field>
|
||||
<field name="menu">account_menu</field>
|
||||
</action>
|
|
@ -1,4 +1,4 @@
|
|||
<form model="clinic.data.nhso">
|
||||
<form model="clinic.data.uc">
|
||||
<field name="name"/>
|
||||
<field name="epostat"/>
|
||||
<field name="hdrate"/>
|
|
@ -1,5 +1,4 @@
|
|||
<!--<list model="clinic.data.nhso" colors='{"#9f9":[["type","=","success"]],"red":[["type","=","fail"]]}'>-->
|
||||
<list model="clinic.data.nhso">
|
||||
<list model="clinic.data.uc">
|
||||
<field name="name"/>
|
||||
<field name="epostat"/>
|
||||
<field name="hdrate"/>
|
|
@ -34,7 +34,7 @@
|
|||
<item string="Schedules" action="clinic_schedule"/>
|
||||
<item string="Visits">
|
||||
<item string="Visits" action="clinic_visit"/>
|
||||
<item string="Visit Dialy" action="clinic_visit_dialy"/>
|
||||
<item string="Visit Board" action="clinic_visit_board"/>
|
||||
<item string="Generate Visit" action="clinic_gen_visit_form"/>
|
||||
</item>
|
||||
<item string="HD Cases">
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<header string="IMPORT PAYMENT"/>
|
||||
<!--<item string="Medical Government" action="import_clinic_mg"/>-->
|
||||
<item string="Social Security" action="import_clinic_sc"/>
|
||||
<item string="NHSO 30฿" action="import_clinic_nhso"/>
|
||||
<item string="UC" action="import_clinic_uc"/>
|
||||
<divider/>
|
||||
<header string="IMPORT DATA"/>
|
||||
<!--<item string="Medical Government" action="clinic_import_payment"/>-->
|
||||
<item string="Social Security" action="clinic_data_sc"/>
|
||||
<item string="NHSO 30฿" action="clinic_data_nhso"/>
|
||||
<item string="UC" action="clinic_data_uc"/>
|
||||
</item>
|
||||
</item>
|
||||
</inherit>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<list model="clinic.personal">
|
||||
<field name="number"/>
|
||||
<field name="name"/>
|
||||
<field name="level_id"/>
|
||||
<field name="categ_id"/>
|
||||
<field name="type"/>
|
||||
<field name="state"/>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<form model="clinic.visit.dialy">
|
||||
<form model="clinic.visit.board">
|
||||
<field name="date_from" span="2"/>
|
||||
<field name="date_to" span="2"/>
|
||||
<field name="patient_id" span="2"/>
|
||||
</form>
|
|
@ -1,12 +1,10 @@
|
|||
<inherit model="settings" inherit="fin_settings">
|
||||
<field name="retained_earnings_account_id" position="after">
|
||||
<separator string="Clinic"/>
|
||||
<field name="ar_mg_id"/>
|
||||
<field name="ap_mg_id"/>
|
||||
<field name="ar_sc_id"/>
|
||||
<field name="ap_sc_id"/>
|
||||
<field name="ar_nhso_id"/>
|
||||
<field name="ap_nhso_id"/>
|
||||
<field name="ar_uc_id"/>
|
||||
<field name="ap_uc_id"/>
|
||||
<field name="ap_nurse_id"/>
|
||||
<field name="ap_doctor_id"/>
|
||||
<field name="hospital_code"/>
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
<form title="Import Medical Government">
|
||||
<group span="6" columns="1">
|
||||
<field name="file"/>
|
||||
</group>
|
||||
<group span="6" columns="1">
|
||||
<separator string="Result"/>
|
||||
<field name="result" nolabel="1" height="240" width="540"/>
|
||||
</group>
|
||||
<foot replace="1">
|
||||
<button string="Import Data" method="import_nhso" type="primary" icon="arrow-right"/>
|
||||
</foot>
|
||||
</form>
|
|
@ -1,13 +0,0 @@
|
|||
<form title="Import NHSO">
|
||||
<group span="6" columns="1">
|
||||
<field name="file"/>
|
||||
</group>
|
||||
<group span="6" columns="1">
|
||||
<!--<separator string="Result"/>-->
|
||||
<!--<field name="result" nolabel="1" height="240" width="540"/>-->
|
||||
</group>
|
||||
<foot replace="1">
|
||||
<button string="Import Data" method="import_nhso" type="primary" icon="arrow-right"/>
|
||||
<!--<button string="Post" method="post" type="success"/>-->
|
||||
</foot>
|
||||
</form>
|
|
@ -0,0 +1,10 @@
|
|||
<form title="Import UC">
|
||||
<group span="6" columns="1">
|
||||
<field name="file"/>
|
||||
</group>
|
||||
<group span="6" columns="1">
|
||||
</group>
|
||||
<foot replace="1">
|
||||
<button string="Import Data" method="import_uc" type="primary" icon="arrow-right"/>
|
||||
</foot>
|
||||
</form>
|
|
@ -16,7 +16,7 @@ from . import patient_comorbidity
|
|||
from . import patient_morbidity
|
||||
from . import race
|
||||
from . import visit
|
||||
from . import visit_dialy
|
||||
from . import visit_board
|
||||
from . import hd_case
|
||||
from . import hd_case_line
|
||||
from . import hd_case_personal
|
||||
|
@ -37,8 +37,7 @@ from . import cycle_dialy_line
|
|||
from . import gen_visit
|
||||
from . import gen_visit_line
|
||||
from . import fin_setting
|
||||
from . import import_data_mg
|
||||
from . import import_data_nhso
|
||||
from . import import_data_uc
|
||||
from . import import_data_sc
|
||||
from . import payment
|
||||
from . import account_payment
|
||||
|
|
|
@ -3,11 +3,9 @@ from netforce.model import Model, fields
|
|||
class Settings(Model):
|
||||
_inherit="settings"
|
||||
_fields={
|
||||
"ap_mg_id": fields.Many2One("account.account","Account Payment Medical Government"),
|
||||
"ap_nhso_id": fields.Many2One("account.account","Account Payment NHSO 30B"),
|
||||
"ap_uc_id": fields.Many2One("account.account","Account Payment UC"),
|
||||
"ap_sc_id": fields.Many2One("account.account","Account Payment Social Security"),
|
||||
"ar_mg_id": fields.Many2One("account.account","Account Recieve Medical Government"),
|
||||
"ar_nhso_id": fields.Many2One("account.account","Account Recieve NHSO 30B"),
|
||||
"ar_uc_id": fields.Many2One("account.account","Account Recieve UC"),
|
||||
"ar_sc_id": fields.Many2One("account.account","Account Recieve Social Security"),
|
||||
"ap_nurse_id": fields.Many2One("account.account","Account Payment Nurse"),
|
||||
"ap_doctor_id": fields.Many2One("account.account","Account Payment Doctor"),
|
||||
|
|
|
@ -34,7 +34,7 @@ class GenVisit(Model):
|
|||
'doctor_id': fields.Many2One("clinic.personal","Doctor",domain=[['type','=','doctor']]),
|
||||
'department_id': fields.Many2One("clinic.department","Department"),
|
||||
'duration': fields.Integer("Duration (hrs)", function="_get_duration"),
|
||||
"patient_type": fields.Selection([("mg","Medical Government"),("sc","Social Security"),("nhso","NHSO (30฿)"),("personal","Personal"),("others","Others")],"Patient Type"),
|
||||
"patient_type": fields.Selection([("sc","Social Security"),("uc","UC."),("personal","Personal"),("others","Others")],"Patient Type"),
|
||||
'patient_categ_id': fields.Many2One("clinic.patient.categ", "Patient Category"),
|
||||
'nurse_categ_id': fields.Many2One("clinic.personal.categ", "Nurse Category", domain=[['type','=','nurse']]),
|
||||
}
|
||||
|
|
|
@ -358,8 +358,8 @@ class HDCase(Model):
|
|||
account_id=setting.ar_mg_id.id
|
||||
elif patient_type=='sc':
|
||||
account_id=setting.ar_sc_id.id
|
||||
elif patient_type=='nhso':
|
||||
account_id=setting.ar_nhso_id.id
|
||||
elif patient_type=='uc':
|
||||
account_id=setting.ar_uc.id
|
||||
|
||||
for fee_line in fee_lines:
|
||||
fee_line['account_id']=account_id
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
from netforce.model import Model, fields
|
||||
|
||||
class ImportDataMG(Model):
|
||||
_name="clinic.data.mg"
|
||||
_transient=True
|
||||
_fields={
|
||||
'name': fields.Char("Name"),
|
||||
}
|
||||
|
||||
|
||||
ImportDataMG.register()
|
|
@ -1,7 +1,7 @@
|
|||
from netforce.model import Model, fields
|
||||
|
||||
class ImportDataNHSO(Model):
|
||||
_name="clinic.data.nhso"
|
||||
class ImportDataUC(Model):
|
||||
_name="clinic.data.uc"
|
||||
_transient=True
|
||||
_fields={
|
||||
'name': fields.Char("Name"),
|
||||
|
@ -23,4 +23,4 @@ class ImportDataNHSO(Model):
|
|||
}
|
||||
|
||||
|
||||
ImportDataNHSO.register()
|
||||
ImportDataUC.register()
|
|
@ -85,7 +85,7 @@ class ImportPayment(Model):
|
|||
#titles=[title for title, value in lines[0].items()]
|
||||
return lines
|
||||
|
||||
def import_nhso(self,ids,context={}):
|
||||
def import_uc(self,ids,context={}):
|
||||
obj=self.browse(ids)[0]
|
||||
fname=obj.file
|
||||
fpath=get_file_path(fname)
|
||||
|
@ -94,16 +94,16 @@ class ImportPayment(Model):
|
|||
lines=self.read_xml(fpath,node='HDBills')
|
||||
if not lines:
|
||||
raise Exception("Wrong file")
|
||||
data_nhso=get_model("clinic.data.nhso")
|
||||
nhso_ids=data_nhso.search([])
|
||||
data_nhso.delete(nhso_ids)
|
||||
data_uc=get_model("clinic.data.uc")
|
||||
uc_ids=data_uc.search([])
|
||||
data_uc.delete(uc_ids)
|
||||
result=""
|
||||
result+="Match: %s"%(50)
|
||||
result+="\n"
|
||||
result+="*"*50
|
||||
for line in lines:
|
||||
# TODO need to check match or not
|
||||
data_nhso.create(line)
|
||||
data_uc.create(line)
|
||||
line['type']='success'
|
||||
print(line)
|
||||
result+="\n"
|
||||
|
|
|
@ -4,10 +4,8 @@ from netforce.model import Model, fields, get_model
|
|||
from netforce.access import get_active_company, get_active_user, set_active_user
|
||||
|
||||
PATIENT_TYPE={
|
||||
"mg":"Medical Government",
|
||||
"sc":"Social Security",
|
||||
"nhso":"NHSO (30฿)",
|
||||
"personal": "Personal",
|
||||
"uc":"UC",
|
||||
"others": "Others",
|
||||
}
|
||||
|
||||
|
@ -29,7 +27,7 @@ class Patient(Model):
|
|||
return res # -> {1: 30, 2: 45,.....}
|
||||
|
||||
_fields={
|
||||
"type": fields.Selection([("sc","Social Security"),("nhso","NHSO (30฿)"),("personal","Personal"),("others","Others")],"Patient Type",required=True),
|
||||
"type": fields.Selection([("sc","Social Security"),("uc","UC"),("others","Others")],"Patient Type",required=True),
|
||||
"number": fields.Char("Patient No.",required=True,search=True),
|
||||
"hn": fields.Char("REF/HN",search=True),
|
||||
"name": fields.Char("Name",required=True,search=True),
|
||||
|
@ -126,7 +124,7 @@ class Patient(Model):
|
|||
if not categ_ids:
|
||||
raise Exception("Category: %s not found"%categ_name)
|
||||
partner_id=None
|
||||
if patient_type in ("mg","sc","nhso"):
|
||||
if patient_type in ("mg","sc","uc"):
|
||||
partner_obj=get_model("partner")
|
||||
for partner in partner_obj.search_browse([]):
|
||||
if partner.categ_id.id in categ_ids:
|
||||
|
|
|
@ -149,13 +149,13 @@ class ReportHDCaseSummary(Model):
|
|||
'action_options': 'mode=list&search_domain=%s&tab_no=2'%dom,
|
||||
}
|
||||
|
||||
# all patient who are nhso in hospital on select month
|
||||
# all patient who are uc in hospital on select month
|
||||
dom=[]
|
||||
time_start='%s-%s-01'%(year,str(crr_month).zfill(2))
|
||||
time_stop='%s-%s-%s'%(year,str(crr_month).zfill(2),crr_total_day)
|
||||
dom.append(['reg_date','>=',time_start])
|
||||
dom.append(['reg_date','<=',time_stop])
|
||||
dom.append(['type','=','nhso'])
|
||||
dom.append(['type','=','uc'])
|
||||
npatients=get_model("clinic.patient").search(dom)
|
||||
dom=replace_quote('%s'%dom)
|
||||
items['topic7']={
|
||||
|
@ -171,7 +171,7 @@ class ReportHDCaseSummary(Model):
|
|||
time_stop='%s-%s-%s'%(year,str(crr_month).zfill(2),crr_total_day)
|
||||
dom.append(['reg_date','>=',time_start])
|
||||
dom.append(['reg_date','<=',time_stop])
|
||||
dom.append(['type','=','personal'])
|
||||
dom.append(['type','=','others'])
|
||||
npatients=get_model("clinic.patient").search(dom)
|
||||
dom=replace_quote('%s'%dom)
|
||||
items['topic8']={
|
||||
|
@ -197,8 +197,8 @@ class ReportHDCaseSummary(Model):
|
|||
titles={
|
||||
'prod_name': 'ชื่อยา',
|
||||
'sc': utils.PATIENT_TYPE['sc'],
|
||||
'nhso': utils.PATIENT_TYPE['nhso'],
|
||||
'personal': utils.PATIENT_TYPE['personal'],
|
||||
'uc': utils.PATIENT_TYPE['uc'],
|
||||
'others': utils.PATIENT_TYPE['others'],
|
||||
}
|
||||
medicals=get_model("clinic.report.medical.summary").get_report_data(ids=[],context=context)['lines']
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ class ReportMedicalSummary(Model):
|
|||
products={}
|
||||
for prod in get_model("product").search_browse([['type','=','stock']]):
|
||||
products[prod.code]={}
|
||||
for patient_type in ('sc','nhso','personal'):
|
||||
for patient_type in ('sc','uc','others'):
|
||||
products[prod.code][patient_type]={
|
||||
'qty': 0,
|
||||
'name': prod.name,
|
||||
|
@ -86,7 +86,7 @@ class ReportMedicalSummary(Model):
|
|||
'prod_id': records[patient_type]['prod_id'],
|
||||
'total': 0,
|
||||
}
|
||||
for patient_type in ('sc','nhso','personal'):
|
||||
for patient_type in ('sc','uc','others'):
|
||||
line.update({
|
||||
patient_type: records[patient_type]['qty'] or 0,
|
||||
})
|
||||
|
@ -101,8 +101,8 @@ class ReportMedicalSummary(Model):
|
|||
titles={
|
||||
'prod_name': 'ชื่อยา',
|
||||
'sc': utils.PATIENT_TYPE['sc'],
|
||||
'nhso': utils.PATIENT_TYPE['nhso'],
|
||||
'personal': utils.PATIENT_TYPE['personal'],
|
||||
'uc': utils.PATIENT_TYPE['uc'],
|
||||
'others': utils.PATIENT_TYPE['others'],
|
||||
}
|
||||
year=int(year)+543
|
||||
data={
|
||||
|
|
|
@ -1,17 +1,22 @@
|
|||
DAYS={ 'th_TH': ['จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์', 'อาทิตย์']
|
||||
, 'en_US': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
DAYS={
|
||||
'th_TH': ['จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์', 'อาทิตย์'],
|
||||
'th_TH2': ['จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์', 'อาทิตย์'],
|
||||
'en_US': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
|
||||
}
|
||||
|
||||
MONTHS={ 'th_TH': [None, 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม']
|
||||
, 'en_US': [None, 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
|
||||
MONTHS={
|
||||
'th_TH': [None, 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'],
|
||||
'th_TH2': [None, 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],
|
||||
'en_US': [None, 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
|
||||
}
|
||||
|
||||
PATIENT_TYPE={
|
||||
"mg":"Medical Government",
|
||||
"sc":"ปกส.",
|
||||
"nhso":"สปกส.",
|
||||
"personal": "จ่ายเอง",
|
||||
"others": "อื่นๆ",
|
||||
"uc":"uc.",
|
||||
"others": "จ่ายเอง",
|
||||
}
|
||||
|
||||
PERSONAL_TYPE={
|
||||
|
@ -30,3 +35,35 @@ TOPICS={
|
|||
'topic7': {'name': 'จำนวนผู้ป่วยเบิก สปกส.', 'unit': 'คน'},
|
||||
'topic8': {'name': 'จำนวนผู้ป่วยจ่ายเอง', 'unit': 'คน'},
|
||||
}
|
||||
|
||||
def date2thai(date, format='%(BY)s-%(m)s-%(d)s', lang='th_TH'):
|
||||
'''
|
||||
>>> date2thai('2011-12-31', lang='th_TH')
|
||||
'2554-12-31'
|
||||
>>> date2thai('2011-12-31', format='%(Td)s %(d)s %(Tm)s, %(By)s', lang='en_US')
|
||||
'Saturday 31 December, 54'
|
||||
>>> print date2thai('2011-12-31', format='%(Td)s %(d)s %(Tm)s, %(By)s', lang='th_TH')
|
||||
เสาร์ 31 ธันวาคม, 54
|
||||
>>> date2thai('2000-06-08', lang='th_TH')
|
||||
'2543-06-08'
|
||||
>>> date2thai('2000-06-08', format='%(Td)s %(d)s %(Tm)s, %(By)s', lang='en_US')
|
||||
'Thursday 08 June, 43'
|
||||
>>> print date2thai('2000-06-08', format='%(Td)s %(d)s %(Tm)s, %(By)s', lang='th_TH')
|
||||
พฤหัสบดี 08 มิถุนายน, 43
|
||||
'''
|
||||
|
||||
if not date or not date.count('-') == 2:
|
||||
return ''
|
||||
|
||||
year, month, day = date.split('-')
|
||||
|
||||
#dow = DateTime.Date(int(year), int(month), int(day)).day_of_week
|
||||
dow = datetime(int(year),int(month),int(day)).weekday()
|
||||
|
||||
return format % { 'BY': int(year) + 543
|
||||
, 'By': int(year[2:]) + 43
|
||||
, 'Tm': MONTHS[lang][int(month)]
|
||||
, 'Td': DAYS[lang][dow]
|
||||
, 'm': month
|
||||
, 'd': int(day) # XXX remove zero
|
||||
}
|
||||
|
|
|
@ -155,9 +155,8 @@ class Visit(Model):
|
|||
|
||||
|
||||
patient_type={
|
||||
"mg":"Medical Government",
|
||||
"sc":"Social Security",
|
||||
"nhso":"NHSO (30฿)",
|
||||
"uc":"UC",
|
||||
"personal": "Personal",
|
||||
"others": "Others",
|
||||
}
|
||||
|
@ -166,7 +165,7 @@ class Visit(Model):
|
|||
if not categ_ids:
|
||||
raise Exception("Partner Category: %s not found"%categ_name)
|
||||
partner_id=None
|
||||
if obj.patient_id.type in ("mg","sc","nhso"):
|
||||
if obj.patient_id.type in ("mg","sc","uc"):
|
||||
partner_obj=get_model("partner")
|
||||
for partner in partner_obj.search_browse([]):
|
||||
if partner.categ_id.id in categ_ids:
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
import time
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
#from calendar import monthrange
|
||||
from netforce.model import Model, fields, get_model
|
||||
from netforce.access import get_active_company
|
||||
|
||||
from . import utils
|
||||
|
||||
DRT=5
|
||||
|
||||
class VisitBoard(Model):
|
||||
_name="clinic.visit.board"
|
||||
_string="Visit Board"
|
||||
_transient=True
|
||||
|
||||
_fields={
|
||||
"date_from": fields.Date("From", required=True),
|
||||
"date_to": fields.Date("To", required=True),
|
||||
'patient_id': fields.Many2One("clinic.patient","Patient"),
|
||||
}
|
||||
|
||||
_defaults={
|
||||
'date_from': lambda *a: time.strftime("%Y-%m-%d"),
|
||||
'date_to': lambda *a: (datetime.now()+timedelta(days=DRT)).strftime("%Y-%m-%d"),
|
||||
}
|
||||
|
||||
def get_report_data(self,ids,context={}):
|
||||
company_id=get_active_company()
|
||||
company=get_model("company").browse(company_id)
|
||||
|
||||
date_from=datetime.now().strftime("%Y-%m-%d")
|
||||
date_to=(datetime.now()+timedelta(days=DRT)).strftime("%Y-%m-%d")
|
||||
patient_id=None
|
||||
if ids:
|
||||
obj=self.browse(ids)[0]
|
||||
date_from=obj.date_from
|
||||
date_to=obj.date_to
|
||||
patient_id=obj.patient_id.id
|
||||
|
||||
time_start='%s 00:00:00'%(date_from)
|
||||
time_stop='%s 23:59:59'%(date_to)
|
||||
|
||||
dom=[]
|
||||
dom.append(['time_start','>=','%s'%time_start])
|
||||
dom.append(['time_stop','<=','%s'%time_stop])
|
||||
if patient_id:
|
||||
dom.append(['patient_id','=',patient_id])
|
||||
|
||||
lines=[]
|
||||
empty_line={
|
||||
'no': '',
|
||||
'number': '',
|
||||
'visit_id': None,
|
||||
'cycle_name': '',
|
||||
'cycle_color': '',
|
||||
'patient_name': '',
|
||||
'patient_type': '',
|
||||
'doctor_name': '',
|
||||
'hd_case_number': '',
|
||||
'hd_case_id': None,
|
||||
'success_color': '',
|
||||
'date':'',
|
||||
'title': True,
|
||||
'details':'',
|
||||
}
|
||||
|
||||
types={}
|
||||
no=1
|
||||
for visit in get_model("clinic.visit").search_browse(dom):
|
||||
hd_case_id=None
|
||||
hd_case_number=''
|
||||
if visit.hd_cases:
|
||||
hd_case=visit.hd_cases[0]
|
||||
hd_case_id=hd_case.id,
|
||||
hd_case_number=hd_case.number,
|
||||
number=visit.number
|
||||
if number=='/':
|
||||
number='รอการรรักษา'
|
||||
cycle=visit.cycle_id
|
||||
patient=visit.patient_id
|
||||
visit_date=visit.visit_date
|
||||
visit_color=''
|
||||
if visit.state=='confirmed':
|
||||
visit_color='#99ff99'
|
||||
elif visit.state=='cancelled':
|
||||
visit_color='#D84B4B',
|
||||
line={
|
||||
'number': number,
|
||||
'visit_id': visit.id,
|
||||
'cycle_name': cycle.name,
|
||||
'cycle_color': cycle.color,
|
||||
'patient_name': patient.name,
|
||||
'patient_type': utils.PATIENT_TYPE.get(patient.type,''),
|
||||
'doctor_name': visit.doctor_id.name,
|
||||
'hd_case_number': hd_case_number,
|
||||
'hd_case_id': hd_case_id,
|
||||
'visit_color': visit_color,
|
||||
'date': visit_date,
|
||||
'title': False,
|
||||
'details':'',
|
||||
'no': no,
|
||||
}
|
||||
lines.append(line)
|
||||
no+=1
|
||||
if not types.get(visit_date):
|
||||
ptype={}
|
||||
[ptype.setdefault(t,0) for t in utils.PATIENT_TYPE.keys()]
|
||||
types[visit_date]=ptype
|
||||
types[visit_date][patient.type]+=1
|
||||
|
||||
dates=[]
|
||||
index=0
|
||||
for line in lines:
|
||||
date=line['date']
|
||||
if date not in dates:
|
||||
line=empty_line.copy()
|
||||
total_qty=0
|
||||
for qty in types[date].values():
|
||||
total_qty+=qty
|
||||
line['cycle_name']=utils.date2thai(date,format='%(Td)s %(d)s %(Tm)s',lang="th_TH2"),
|
||||
line['details']='รวม %s: %s'%(total_qty,', '.join('%s %s'%(utils.PATIENT_TYPE[k],v) for k,v in types[date].items()))
|
||||
lines.insert(index,line)
|
||||
dates.append(date)
|
||||
index+=1
|
||||
|
||||
has_duration=False
|
||||
if date_from != date_to:
|
||||
has_duration=True
|
||||
data={
|
||||
'lines': lines,
|
||||
'date': utils.date2thai(date_from,format='ประจำวัน%(Td)s ที่ %(d)s %(Tm)s %(BY)s'),
|
||||
'company_name': company.name,
|
||||
'company_parent_name': company.parent_id.name,
|
||||
'has_duration': has_duration,
|
||||
'date_from': utils.date2thai(date_from,format='%(d)s %(Tm)s %(By)s',lang="th_TH2"),
|
||||
'date_to': utils.date2thai(date_to,format='%(d)s %(Tm)s %(By)s',lang="th_TH2"),
|
||||
}
|
||||
|
||||
return data
|
||||
|
||||
VisitBoard.register()
|
|
@ -1,102 +0,0 @@
|
|||
import time
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from calendar import monthrange
|
||||
from netforce.model import Model, fields, get_model
|
||||
from netforce.access import get_active_company
|
||||
|
||||
from . import utils
|
||||
|
||||
class VisitDialy(Model):
|
||||
_name="clinic.visit.dialy"
|
||||
_string="Visit Dialy"
|
||||
_transient=True
|
||||
|
||||
_fields={
|
||||
"date_from": fields.Date("From", required=True),
|
||||
"date_to": fields.Date("To", required=True),
|
||||
}
|
||||
|
||||
_defaults={
|
||||
'date_from': lambda *a: time.strftime("%Y-%m-%d"),
|
||||
'date_to': lambda *a: (datetime.now()+timedelta(days=7)).strftime("%Y-%m-%d"),
|
||||
}
|
||||
|
||||
def get_report_data(self,ids,context={}):
|
||||
company_id=get_active_company()
|
||||
company=get_model("company").browse(company_id)
|
||||
|
||||
date_from=datetime.now().strftime("%Y-%m-%d")
|
||||
date_to=(datetime.now()+timedelta(days=7)).strftime("%Y-%m-%d")
|
||||
|
||||
if ids:
|
||||
obj=self.browse(ids)[0]
|
||||
date_from=obj.date_from
|
||||
date_to=obj.date_to
|
||||
|
||||
time_start='%s 00:00:00'%(date_from)
|
||||
time_stop='%s 23:59:59'%(date_to)
|
||||
|
||||
month=int(date_from[5:7])
|
||||
year=date_from[0:4]
|
||||
day=date_from[8:10]
|
||||
month_str=utils.MONTHS['th_TH'][month]
|
||||
dom=[]
|
||||
dom.append(['time_start','>=','%s'%time_start])
|
||||
dom.append(['time_stop','<=','%s'%time_stop])
|
||||
lines=[]
|
||||
|
||||
empty_line={
|
||||
'number': '',
|
||||
'visit_id': None,
|
||||
'cycle_name': '',
|
||||
'cycle_color': '',
|
||||
'patient_name': '',
|
||||
'doctor_name': '',
|
||||
'hd_case_number': '',
|
||||
'hd_case_id': None,
|
||||
'success_color': '',
|
||||
}
|
||||
for obj in get_model("clinic.visit").search_browse(dom):
|
||||
hd_case_id=None
|
||||
hd_case_number=''
|
||||
if obj.hd_cases:
|
||||
hd_case=obj.hd_cases[0]
|
||||
hd_case_id=hd_case.id,
|
||||
hd_case_number=hd_case.number,
|
||||
number=obj.number
|
||||
if number=='/':
|
||||
number='รอการรรักษา'
|
||||
cycle=obj.cycle_id
|
||||
line={
|
||||
'number': number,
|
||||
'visit_id': obj.id,
|
||||
'cycle_name': cycle.name,
|
||||
'cycle_color': cycle.color,
|
||||
'patient_name': obj.patient_id.name,
|
||||
'doctor_name': obj.doctor_id.name,
|
||||
'hd_case_number': hd_case_number,
|
||||
'hd_case_id': hd_case_id,
|
||||
'success_color': obj.state=='confirmed' and '#99ff99' or ''
|
||||
}
|
||||
lines.append(line)
|
||||
|
||||
year=int(year)+543
|
||||
date_str='%s %s %s'%(day,month_str,year)
|
||||
has_duration=False
|
||||
if date_from != date_to:
|
||||
has_duration=True
|
||||
|
||||
data={
|
||||
'lines': lines,
|
||||
'date': date_str,
|
||||
'company_name': company.name,
|
||||
'company_parent_name': company.parent_id.name,
|
||||
'has_duration': has_duration,
|
||||
'date_from': date_from,
|
||||
'date_to': date_to,
|
||||
}
|
||||
|
||||
return data
|
||||
|
||||
VisitDialy.register()
|
|
@ -136,8 +136,8 @@
|
|||
<thead>
|
||||
<th>{{prod_name}}</th>
|
||||
<th>{{sc}}</th>
|
||||
<th>{{nhso}}</th>
|
||||
<th>{{personal}}</th>
|
||||
<th>{{uc}}</th>
|
||||
<th>{{others}}</th>
|
||||
<th>รวม</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -147,8 +147,8 @@
|
|||
<a href="/ui#name=product&active_id={{prod_id}}&mode=form"> {{prod_name}} </a>
|
||||
</td>
|
||||
<td>{{sc}}</td>
|
||||
<td>{{nhso}}</td>
|
||||
<td>{{personal}}</td>
|
||||
<td>{{uc}}</td>
|
||||
<td>{{others}}</td>
|
||||
<td>{{total}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
<thead>
|
||||
<th>{{prod_name}}</th>
|
||||
<th>{{sc}}</th>
|
||||
<th>{{nhso}}</th>
|
||||
<th>{{personal}}</th>
|
||||
<th>{{uc}}</th>
|
||||
<th>{{others}}</th>
|
||||
<th>รวม</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -22,8 +22,8 @@
|
|||
<a href="/ui#name=product&active_id={{prod_id}}&mode=form"> {{prod_name}} </a>
|
||||
</td>
|
||||
<td>{{sc}}</td>
|
||||
<td>{{nhso}}</td>
|
||||
<td>{{personal}}</td>
|
||||
<td>{{uc}}</td>
|
||||
<td>{{others}}</td>
|
||||
<td>{{total}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
<center>
|
||||
<h2>ตารางนัดผู้ป่วย</h2>
|
||||
<h3>
|
||||
{{parent_company_name}} {{company_name}}<br/>
|
||||
</h3>
|
||||
<h4>
|
||||
{{#if has_duration}}
|
||||
ระหว่างวันที่ {{date_from}} ถึง {{date_to}}
|
||||
{{else}}
|
||||
{{date}}
|
||||
{{/if}}
|
||||
</h4>
|
||||
</center>
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<th>รอบ</th>
|
||||
<th>#</th>
|
||||
<th>เลขที่อ้างอิง</th>
|
||||
<th>ผู้ป่วย</th>
|
||||
<th>สิทธ์</th>
|
||||
<th>แพทย์</th>
|
||||
<th>HD Case</th>
|
||||
<th>หมายเหตุ</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each lines }}
|
||||
<tr style="background-color:{{visit_color}}">
|
||||
{{#if title}}
|
||||
<td style="background-color:{{cycle_color}}"><b>{{cycle_name}}</b></td>
|
||||
<td colspan="7" style="text-align:right;"><b>{{details}}</b></td>
|
||||
{{else}}
|
||||
<td style="background-color:{{cycle_color}}">{{cycle_name}}</td>
|
||||
<td style="background-color:{{visit_color}}">{{no}}</td>
|
||||
<td style="background-color:{{visit_color}}"><a href="/ui#name=clinic_visit&active_id={{visit_id}}&mode=form">{{number}}</a></td>
|
||||
<td style="background-color:{{visit_color}}">{{patient_name}}</td>
|
||||
<td style="background-color:{{visit_color}}">{{patient_type}}</td>
|
||||
<td style="background-color:{{visit_color}}">{{doctor_name}}</td>
|
||||
<td style="background-color:{{visit_color}}"><a href="/ui#name=clinic_hd_case&active_id={{hd_case_id}}&mode=form">{{hd_case_number}}</a></td>
|
||||
<td style="background-color:{{visit_color}}">{{note}}</td>
|
||||
{{/if}}
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
<tfoot>
|
||||
</tfoot>
|
||||
</table>
|
|
@ -1,37 +0,0 @@
|
|||
<center>
|
||||
<h2>ตารางนัดผู้ป่วย</h2>
|
||||
<h3>
|
||||
{{parent_company_name}} {{company_name}}<br/>
|
||||
</h3>
|
||||
<h4>
|
||||
{{#if has_duration}}
|
||||
ระหว่างวันที่ {{date_from}} ถึง {{date_to}}
|
||||
{{else}}
|
||||
ประจำวันที่ {{date}}
|
||||
{{/if}}
|
||||
</h4>
|
||||
</center>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<th>รอบ</th>
|
||||
<th>Ref.</th>
|
||||
<th>ผู้ป่วย</th>
|
||||
<th>แพทย์</th>
|
||||
<th>HD Case</th>
|
||||
<th>หมายเหตุ</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each lines }}
|
||||
<tr style="background-color: {{success_color}}">
|
||||
<td style="background-color: {{cycle_color}}">{{cycle_name}}</td>
|
||||
<td><a href="/ui#name=clinic_visit&active_id={{visit_id}}&mode=form">{{number}}</a></td>
|
||||
<td>{{patient_name}}</td>
|
||||
<td>{{doctor_name}}</td>
|
||||
<td><a href="/ui#name=clinic_hd_case&active_id={{hd_case_id}}&mode=form">{{hd_case_number}}</a></td>
|
||||
<td>{{note}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
<tfoot>
|
||||
</tfoot>
|
||||
</table>
|
|
@ -1,4 +1,7 @@
|
|||
=======
|
||||
- change personal -> stuff -> link to employee
|
||||
- add level to the list of the stuff
|
||||
|
||||
- design
|
||||
- auto complete hd after time out
|
||||
- create payment for each type of patient
|
||||
|
|
Loading…
Reference in New Issue