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

80 lines
1.9 KiB
Python
Executable file

#!/usr/bin/xvfb-run python
# -*- coding: utf-8 -*-
### PYTHON
from datetime import *
import random
import time
import logging
FORMAT = '%(asctime)s %(levelname)s %(message)s'
logging.basicConfig(format=FORMAT, level=logging.INFO)
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'ntuh.settings'
import six
if six.PY2:
import sys
reload(sys) # Reload does the trick!
sys.setdefaultencoding('utf8')
### PUBLIC
from dateutil.relativedelta import *
from django.db.models import *
import django
django.setup()
### PRIVATE
# from ntuhgov import xportal
from ntuhgov.portal_selenium import Login, ReportPathology, CTMR
from registry.models import *
def main():
req_no_of_random_items = 13
qs = PathologyReport.objects.all()
possible_ids = list(qs.values_list('PersonID', flat=True))
possible_ids = random.choices(possible_ids, k=req_no_of_random_items)
SECONDS_LEFT = 300
for PersonID in possible_ids:
seconds = random.randint(0, SECONDS_LEFT)
logging.info((PersonID, 'sleep', seconds, 'of', SECONDS_LEFT))
SECONDS_LEFT -= seconds
time.sleep(seconds)
reports = CTMR(PersonID)
for r in reports:
p, created = XrayTextReport.objects.get_or_create(ReportKey = r['ReportKey'])
p.ChartNo = r['ChartNo']
p.ReportKey = r['ReportKey']
p.ReportCode = r['ReportCode']
p.PersonID = r['PersonID']
p.OrderDesc = r['OrderDesc']
p.ExamDate = r['ExamDate'].replace('/', '-').split(' ')[0]
if '*' not in r['ReportDate']:
p.ReportDate = r['ReportDate'].replace('/', '-').split(' ')[0]
p.Impression = r['Impression']
logging.info(p.__dict__)
p.Exam = r['Exam']
p.url = r['url']
p.html = r['html']
p.save()
if __name__ == '__main__':
main()