80 lines
1.9 KiB
Python
Executable file
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()
|