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

6 months ago
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})