You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

211 lines
10 KiB

import datetime
import uuid
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views import View
from .models import *
class ChooseLoginView(View): # 选择登录
def get(self, request):
return render(request, 'chooselogin.html')
class PatientLoginView(View): # 患者登录
def get(self, request):
return render(request, 'patientlogin.html')
def post(self, request):
phone = request.POST.get('phone','')
password = request.POST.get('password','')
patient_list = Patient.objects.filter(phone=phone, password=password)
if patient_list:
print(type(patient_list[0]))
request.session.clear()
request.session['patient'] = patient_list[0].name
return HttpResponseRedirect("/patientcenter/")
else:
return HttpResponseRedirect("/patientlogin/")
class DoctorLoginView(View):
def get(self, request):
return render(request, 'doctorlogin.html')
def post(self, request):
phone = request.POST.get('phone','')
password = request.POST.get('password','')
doctor_list = Doctor.objects.filter(phone=phone, password=password)
if doctor_list:
request.session['doctor'] = doctor_list[0].name
request.session['doctor_image'] = str(doctor_list[0].img)
return HttpResponseRedirect("/doctorcenter/")
else:
return HttpResponseRedirect("/doctorlogin/")
class PatientRegisterView(View): # 患者注册
def get(self, request):
return render(request, 'patientregister.html')
def post(self, request):
phone = request.POST.get('phone','')
patientlist = Patient.objects.filter(phone=phone)
if patientlist:
return render(request, 'patientregister.html',{"err":1,"tips":"该号码已被注册"})
else:
password = request.POST.get('password','')
name = request.POST.get('name','')
sex = request.POST.get('sex','')
age = request.POST.get('age','')
patient = Patient.objects.create(phone=phone, password=password, name=name, sex=sex, age=age)
if patient:
return HttpResponseRedirect("/patientlogin/")
return HttpResponseRedirect("/patientregister/")
class PatientCenterView(View):
def get(self, request):
patient = request.session.get('patient','')
print(patient)
return render(request, 'patientcenter.html',{"patient_name":patient})
class ChooseDepartmentView(View):
def get(self, request):
department_list = Department.objects.filter().all()
return render(request, 'choosedepartment.html',{"department_list":department_list})
class ChooseDoctorAndTimeView(View):
def get(self, request, department_id):
department_id = int(department_id)
department_name= Department.objects.get(id=department_id).name
doctor_list = Doctor.objects.filter(department_id=department_id)
doctor_time_number_list = []
for doctor in doctor_list:
doctor_time_number_list.append([doctor,TimeNumber.objects.get(doctor_id=doctor.id)])
tomorrow =(datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d")
return render(request, 'choosedoctorandtime.html',{"department_name":department_name,"doctor_time_number_list":doctor_time_number_list,"tomorrow":tomorrow,"department_id":department_id})
class ConfirmRegistrationView(View):
def get(self, request, department_id, doctor_id, consultation_hour):
time_number = TimeNumber.objects.get(doctor_id=doctor_id)
if consultation_hour[:2] == '08' and time_number.eight == 0:
return
elif consultation_hour[:2] == '09' and time_number.nine == 0:
return
elif consultation_hour[:2] == '10' and time_number.ten == 0:
return
elif consultation_hour[:2] == '11' and time_number.eleven == 0:
return
elif consultation_hour[:2] == '14' and time_number.fourteen == 0:
return
elif consultation_hour[:2] == '15' and time_number.fifteen == 0:
return
elif consultation_hour[:2] == '16' and time_number.sixteen == 0:
return
elif consultation_hour[:2] == '17' and time_number.seventeen == 0:
return
department_id = int(department_id)
doctor_id = int(doctor_id)
patient = request.session.get('patient','')
doctor = Doctor.objects.get(id=doctor_id)
department = Department.objects.get(id=department_id)
patient_name = patient
doctor_name = doctor
registration_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
consultation_hour = (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d")+" "+consultation_hour
patient_id = Patient.objects.filter(name=patient).first().id
address = department.address
registration_price =doctor.registration_price
return render(request, 'confirmregistration.html',{"patient_name":patient_name,"doctor_name":doctor_name,"registration_time":registration_time,"consultation_hour":consultation_hour,"patient_id":patient_id,"address":address,"registration_price":registration_price,"doctor_id":doctor_id})
def post(self, request,*args,**kwargs):
registration_time = request.POST.get('registration_time','')
consultation_hour = request.POST.get('consultation_hour','')
illness = request.POST.get('illness','')
doctor_id = request.POST.get('doctor_id','')
patient_id = request.POST.get('patient_id','')
address = request.POST.get('address','')
out_trade_num = uuid.uuid4().hex
payway = '支付宝'
status = '已支付,未检查'
register =Register.objects.filter(consultation_hour=consultation_hour,patient_id=patient_id)
if register:
return render(request, 'confirmregistration.html',{"message":"支付失败,该时间段已有挂号单"})
else:
Register.objects.create(registration_time=registration_time,consultation_hour=consultation_hour,illness=illness,address=address,out_trade_num=out_trade_num,payway=payway,status=status,patient_id=patient_id,doctor_id=doctor_id)
time_number = TimeNumber.objects.filter(doctor_id=doctor_id).first()
if consultation_hour[11:13] == '08':
time_number.eight = time_number.eight - 1
elif consultation_hour[11:13] == '09':
time_number.nine = time_number.nine - 1
elif consultation_hour[11:13] == '10':
time_number.ten = time_number.ten - 1
elif consultation_hour[11:13] == '11':
time_number.eleven = time_number.eleven - 1
elif consultation_hour[11:13] == '14':
time_number.fourteen = time_number.fourteen - 1
elif consultation_hour[11:13] == '15':
time_number.fifteen = time_number.fifteen - 1
elif consultation_hour[11:13] == '16':
time_number.sixteen = time_number.sixteen - 1
elif consultation_hour[11:13] == '17':
time_number.seventeen = time_number.seventeen - 1
time_number.save()
return render(request, 'confirmregistration.html',{"message":"支付成功"})
class PatientShowRegistrationView(View):
def get(self, request):
patient = Patient.objects.filter(name=request.session.get('patient','')).first()
register_list = Register.objects.filter(patient_id=patient.id)
return render(request, 'patientshowregistration.html',{"register_list":register_list})
class DoctorCenterView(View):
def get(self, request):
doctor =request.session.get('doctor','')
doctor_image = request.session.get('doctor_image','')
return render(request, 'doctorcenter.html',{"doctor":doctor,"doctor_image":doctor_image})
class DoctorShowRegistrationView(View):
def get(self, request):
doctor = request.session.get('doctor','')
doctor = Doctor.objects.filter(name=doctor).first()
try:
register_list =doctor.register_set.order_by('consultation_hour').filter(status='已支付,未检查').all()
except Exception as e:
print(e)
register_list=[]
return render(request, 'doctorshowregistration.html',{"register_list":register_list,"doctor_image":doctor.img})
def post(self, request):
register_id = request.POST.get('register_id','')
register = Register.objects.get(id=register_id)
register.status = '已检查'
print(register.consultation_hour)
consultation_hour = str(register.consultation_hour)[11:13]
register.save()
doctor =request.session.get('doctor','')
doctor =Doctor.objects.filter(name=doctor).first()
time_number = TimeNumber.objects.filter(doctor_id=doctor.id).first()
if consultation_hour == '08':
time_number.eight = time_number.eight + 1
elif consultation_hour == '09':
time_number.nine = time_number.nine + 1
elif consultation_hour == '10':
time_number.ten = time_number.ten + 1
elif consultation_hour == '11':
time_number.eleven = time_number.eleven + 1
elif consultation_hour == '14':
time_number.fourteen = time_number.fourteen + 1
elif consultation_hour == '15':
time_number.fifteen = time_number.fifteen + 1
elif consultation_hour == '16':
time_number.sixteen = time_number.sixteen + 1
elif consultation_hour == '17':
time_number.seventeen = time_number.seventeen + 1
time_number.save()
try:
register_list =doctor.register_set.order_by('consultation_hour').filter(status='已支付,未检查').all()
except Exception as e:
print(e)
register_list=[]
return render(request, 'doctorshowregistration.html',{"register_list":register_list,"doctor_image":doctor.img})