adm-ntuh-net/ntuh/tbi.py
2024-12-12 10:19:16 +08:00

91 lines
2.6 KiB
Python
Executable file

#!/usr/bin/xvfb-run python
# -*- coding: utf-8 -*-
import sys
reload(sys) # Reload does the trick!
sys.setdefaultencoding('utf8')
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ntuh.settings")
import django
django.setup()
from django.db.models.loading import get_models
loaded_models = get_models()
from dateutil.relativedelta import *
from django.db.models import *
# from ntuhgov import xportal
from ntuhgov import portal_spynner
from registry.models import *
import datetime
import json
import shlex
import subprocess
import time
from dateutil.relativedelta import relativedelta
def calculate_age(born):
today = datetime.date.today()
try:
birthday = born.replace(year=today.year)
except ValueError: # raised when birth date is February 29 and the current year is not a leap year
birthday = born.replace(year=today.year, month=born.month+1, day=1)
if birthday > today:
return today.year - born.year - 1
else:
return today.year - born.year
lastyear = today = datetime.date.today()+relativedelta(years=-1)
# print lastyear
FILTER = (Q(HTML__icontains='trauma')
| Q(HTML__icontains='brain injur') | Q(HTML__icontains='head injur')
| Q(HTML__icontains='concussion') | Q(HTML__icontains='contusion')
| Q(HTML__icontains='epidural h') | Q(HTML__contains='EDH')
| Q(HTML__icontains='subdural h') | Q(HTML__contains='SDH')
| Q(HTML__icontains='腦部') | Q(HTML__contains='頭骨')
)
# FILTER = Q(HTML__icontains='腦部')
#FILTER = Q(HTML__icontains='injury') | Q(HTML__icontains='trauma') | Q(HTML__icontains='epidural') | Q(HTML__icontains='subdural')
for note in DischargeNote.objects.filter(OutDate__gte='2014-09-16', DeptName='').filter(FILTER).order_by('-OutDate', 'ChartNo'):
inp = Inpatient.objects.get(ChartNo=note.ChartNo)
age = calculate_age(inp.Birthday)
print note.ChartNo, age
if not 20 <= age <= 50:
continue
html_file = 'doc/%s_%s.html' % (note.OutDate, note.ChartNo)
pdf_file = 'doc/%s_%s.pdf' % (note.OutDate, note.ChartNo)
if os.path.isfile(pdf_file):
continue
f = open(html_file, 'w')
HTML = note.HTML.replace(inp.Name, '*'*len(inp.Name))
HTML = HTML.replace('<head>', '<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">')
f.write(HTML)
f.close
cmd = 'xvfb-run wkhtmltopdf %s %s' % (html_file, pdf_file)
print cmd
subprocess.call(shlex.split(cmd))
time.sleep(1)
# print inp.Name
# print note.HTML.replace(inp.Name, '*'*len(inp.Name))
# print note.OutDate
# exit()