Files
2026-01-16 09:26:04 +08:00

834 lines
31 KiB
Python

from django.shortcuts import render,redirect,reverse
from . import forms,models
from django.db.models import Sum
from django.contrib.auth.models import Group
from django.http import HttpResponseRedirect
from django.core.mail import send_mail
from django.contrib.auth.decorators import login_required,user_passes_test
from datetime import datetime,timedelta,date
from django.conf import settings
from django.db.models import Q
# Create your views here.
def home_view(request):
if request.user.is_authenticated:
return HttpResponseRedirect('afterlogin')
return render(request,'hospital/index.html')
#for showing signup/login button for admin(by sumit)
def adminclick_view(request):
if request.user.is_authenticated:
return HttpResponseRedirect('afterlogin')
return render(request,'hospital/adminclick.html')
#for showing signup/login button for doctor(by sumit)
def doctorclick_view(request):
if request.user.is_authenticated:
return HttpResponseRedirect('afterlogin')
return render(request,'hospital/doctorclick.html')
#for showing signup/login button for patient(by sumit)
def patientclick_view(request):
if request.user.is_authenticated:
return HttpResponseRedirect('afterlogin')
return render(request,'hospital/patientclick.html')
def admin_signup_view(request):
form=forms.AdminSigupForm()
if request.method=='POST':
form=forms.AdminSigupForm(request.POST)
if form.is_valid():
user=form.save()
user.set_password(user.password)
user.save()
my_admin_group = Group.objects.get_or_create(name='ADMIN')
my_admin_group[0].user_set.add(user)
return HttpResponseRedirect('adminlogin')
return render(request,'hospital/adminsignup.html',{'form':form})
def doctor_signup_view(request):
userForm=forms.DoctorUserForm()
doctorForm=forms.DoctorForm()
mydict={'userForm':userForm,'doctorForm':doctorForm}
if request.method=='POST':
userForm=forms.DoctorUserForm(request.POST)
doctorForm=forms.DoctorForm(request.POST,request.FILES)
if userForm.is_valid() and doctorForm.is_valid():
user=userForm.save()
user.set_password(user.password)
user.save()
doctor=doctorForm.save(commit=False)
doctor.user=user
doctor=doctor.save()
my_doctor_group = Group.objects.get_or_create(name='DOCTOR')
my_doctor_group[0].user_set.add(user)
return HttpResponseRedirect('doctorlogin')
return render(request,'hospital/doctorsignup.html',context=mydict)
def patient_signup_view(request):
userForm=forms.PatientUserForm()
patientForm=forms.PatientForm()
mydict={'userForm':userForm,'patientForm':patientForm}
if request.method=='POST':
userForm=forms.PatientUserForm(request.POST)
patientForm=forms.PatientForm(request.POST,request.FILES)
if userForm.is_valid() and patientForm.is_valid():
user=userForm.save()
user.set_password(user.password)
user.save()
patient=patientForm.save(commit=False)
patient.user=user
patient.assignedDoctorId=request.POST.get('assignedDoctorId')
patient=patient.save()
my_patient_group = Group.objects.get_or_create(name='PATIENT')
my_patient_group[0].user_set.add(user)
return HttpResponseRedirect('patientlogin')
return render(request,'hospital/patientsignup.html',context=mydict)
#-----------for checking user is doctor , patient or admin(by sumit)
def is_admin(user):
return user.groups.filter(name='ADMIN').exists()
def is_doctor(user):
return user.groups.filter(name='DOCTOR').exists()
def is_patient(user):
return user.groups.filter(name='PATIENT').exists()
#---------AFTER ENTERING CREDENTIALS WE CHECK WHETHER USERNAME AND PASSWORD IS OF ADMIN,DOCTOR OR PATIENT
def afterlogin_view(request):
if is_admin(request.user):
return redirect('admin-dashboard')
elif is_doctor(request.user):
accountapproval=models.Doctor.objects.all().filter(user_id=request.user.id,status=True)
if accountapproval:
return redirect('doctor-dashboard')
else:
return render(request,'hospital/doctor_wait_for_approval.html')
elif is_patient(request.user):
accountapproval=models.Patient.objects.all().filter(user_id=request.user.id,status=True)
if accountapproval:
return redirect('patient-dashboard')
else:
return render(request,'hospital/patient_wait_for_approval.html')
#---------------------------------------------------------------------------------
#------------------------ ADMIN RELATED VIEWS START ------------------------------
#---------------------------------------------------------------------------------
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_dashboard_view(request):
#for both table in admin dashboard
doctors=models.Doctor.objects.all().order_by('-id')
patients=models.Patient.objects.all().order_by('-id')
#for three cards
doctorcount=models.Doctor.objects.all().filter(status=True).count()
pendingdoctorcount=models.Doctor.objects.all().filter(status=False).count()
patientcount=models.Patient.objects.all().filter(status=True).count()
pendingpatientcount=models.Patient.objects.all().filter(status=False).count()
appointmentcount=models.Appointment.objects.all().filter(status=True).count()
pendingappointmentcount=models.Appointment.objects.all().filter(status=False).count()
mydict={
'doctors':doctors,
'patients':patients,
'doctorcount':doctorcount,
'pendingdoctorcount':pendingdoctorcount,
'patientcount':patientcount,
'pendingpatientcount':pendingpatientcount,
'appointmentcount':appointmentcount,
'pendingappointmentcount':pendingappointmentcount,
}
return render(request,'hospital/admin_dashboard.html',context=mydict)
# this view for sidebar click on admin page
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_doctor_view(request):
return render(request,'hospital/admin_doctor.html')
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_view_doctor_view(request):
doctors=models.Doctor.objects.all().filter(status=True)
return render(request,'hospital/admin_view_doctor.html',{'doctors':doctors})
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def delete_doctor_from_hospital_view(request,pk):
doctor=models.Doctor.objects.get(id=pk)
user=models.User.objects.get(id=doctor.user_id)
user.delete()
doctor.delete()
return redirect('admin-view-doctor')
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def update_doctor_view(request,pk):
doctor=models.Doctor.objects.get(id=pk)
user=models.User.objects.get(id=doctor.user_id)
userForm=forms.DoctorUserForm(instance=user)
doctorForm=forms.DoctorForm(request.FILES,instance=doctor)
mydict={'userForm':userForm,'doctorForm':doctorForm}
if request.method=='POST':
userForm=forms.DoctorUserForm(request.POST,instance=user)
doctorForm=forms.DoctorForm(request.POST,request.FILES,instance=doctor)
if userForm.is_valid() and doctorForm.is_valid():
user=userForm.save()
user.set_password(user.password)
user.save()
doctor=doctorForm.save(commit=False)
doctor.status=True
doctor.save()
return redirect('admin-view-doctor')
return render(request,'hospital/admin_update_doctor.html',context=mydict)
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_add_doctor_view(request):
userForm=forms.DoctorUserForm()
doctorForm=forms.DoctorForm()
mydict={'userForm':userForm,'doctorForm':doctorForm}
if request.method=='POST':
userForm=forms.DoctorUserForm(request.POST)
doctorForm=forms.DoctorForm(request.POST, request.FILES)
if userForm.is_valid() and doctorForm.is_valid():
user=userForm.save()
user.set_password(user.password)
user.save()
doctor=doctorForm.save(commit=False)
doctor.user=user
doctor.status=True
doctor.save()
my_doctor_group = Group.objects.get_or_create(name='DOCTOR')
my_doctor_group[0].user_set.add(user)
return HttpResponseRedirect('admin-view-doctor')
return render(request,'hospital/admin_add_doctor.html',context=mydict)
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_approve_doctor_view(request):
#those whose approval are needed
doctors=models.Doctor.objects.all().filter(status=False)
return render(request,'hospital/admin_approve_doctor.html',{'doctors':doctors})
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def approve_doctor_view(request,pk):
doctor=models.Doctor.objects.get(id=pk)
doctor.status=True
doctor.save()
return redirect(reverse('admin-approve-doctor'))
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def reject_doctor_view(request,pk):
doctor=models.Doctor.objects.get(id=pk)
user=models.User.objects.get(id=doctor.user_id)
user.delete()
doctor.delete()
return redirect('admin-approve-doctor')
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_view_doctor_specialisation_view(request):
doctors=models.Doctor.objects.all().filter(status=True)
return render(request,'hospital/admin_view_doctor_specialisation.html',{'doctors':doctors})
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_patient_view(request):
return render(request,'hospital/admin_patient.html')
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_view_patient_view(request):
patients=models.Patient.objects.all().filter(status=True)
return render(request,'hospital/admin_view_patient.html',{'patients':patients})
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def delete_patient_from_hospital_view(request,pk):
patient=models.Patient.objects.get(id=pk)
user=models.User.objects.get(id=patient.user_id)
user.delete()
patient.delete()
return redirect('admin-view-patient')
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def update_patient_view(request,pk):
patient=models.Patient.objects.get(id=pk)
user=models.User.objects.get(id=patient.user_id)
userForm=forms.PatientUserForm(instance=user)
patientForm=forms.PatientForm(request.FILES,instance=patient)
mydict={'userForm':userForm,'patientForm':patientForm}
if request.method=='POST':
userForm=forms.PatientUserForm(request.POST,instance=user)
patientForm=forms.PatientForm(request.POST,request.FILES,instance=patient)
if userForm.is_valid() and patientForm.is_valid():
user=userForm.save()
user.set_password(user.password)
user.save()
patient=patientForm.save(commit=False)
patient.status=True
patient.assignedDoctorId=request.POST.get('assignedDoctorId')
patient.save()
return redirect('admin-view-patient')
return render(request,'hospital/admin_update_patient.html',context=mydict)
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_add_patient_view(request):
userForm=forms.PatientUserForm()
patientForm=forms.PatientForm()
mydict={'userForm':userForm,'patientForm':patientForm}
if request.method=='POST':
userForm=forms.PatientUserForm(request.POST)
patientForm=forms.PatientForm(request.POST,request.FILES)
if userForm.is_valid() and patientForm.is_valid():
user=userForm.save()
user.set_password(user.password)
user.save()
patient=patientForm.save(commit=False)
patient.user=user
patient.status=True
patient.assignedDoctorId=request.POST.get('assignedDoctorId')
patient.save()
my_patient_group = Group.objects.get_or_create(name='PATIENT')
my_patient_group[0].user_set.add(user)
return HttpResponseRedirect('admin-view-patient')
return render(request,'hospital/admin_add_patient.html',context=mydict)
#------------------FOR APPROVING PATIENT BY ADMIN----------------------
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_approve_patient_view(request):
#those whose approval are needed
patients=models.Patient.objects.all().filter(status=False)
return render(request,'hospital/admin_approve_patient.html',{'patients':patients})
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def approve_patient_view(request,pk):
patient=models.Patient.objects.get(id=pk)
patient.status=True
patient.save()
return redirect(reverse('admin-approve-patient'))
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def reject_patient_view(request,pk):
patient=models.Patient.objects.get(id=pk)
user=models.User.objects.get(id=patient.user_id)
user.delete()
patient.delete()
return redirect('admin-approve-patient')
#--------------------- FOR DISCHARGING PATIENT BY ADMIN START-------------------------
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_discharge_patient_view(request):
patients=models.Patient.objects.all().filter(status=True)
return render(request,'hospital/admin_discharge_patient.html',{'patients':patients})
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def discharge_patient_view(request,pk):
patient=models.Patient.objects.get(id=pk)
days=(date.today()-patient.admitDate) #2 days, 0:00:00
assignedDoctor=models.User.objects.all().filter(id=patient.assignedDoctorId)
d=days.days # only how many day that is 2
patientDict={
'patientId':pk,
'name':patient.get_name,
'mobile':patient.mobile,
'address':patient.address,
'symptoms':patient.symptoms,
'admitDate':patient.admitDate,
'todayDate':date.today(),
'day':d,
'assignedDoctorName':assignedDoctor[0].first_name,
}
if request.method == 'POST':
feeDict ={
'roomCharge':int(request.POST['roomCharge'])*int(d),
'doctorFee':request.POST['doctorFee'],
'medicineCost' : request.POST['medicineCost'],
'OtherCharge' : request.POST['OtherCharge'],
'total':(int(request.POST['roomCharge'])*int(d))+int(request.POST['doctorFee'])+int(request.POST['medicineCost'])+int(request.POST['OtherCharge'])
}
patientDict.update(feeDict)
#for updating to database patientDischargeDetails (pDD)
pDD=models.PatientDischargeDetails()
pDD.patientId=pk
pDD.patientName=patient.get_name
pDD.assignedDoctorName=assignedDoctor[0].first_name
pDD.address=patient.address
pDD.mobile=patient.mobile
pDD.symptoms=patient.symptoms
pDD.admitDate=patient.admitDate
pDD.releaseDate=date.today()
pDD.daySpent=int(d)
pDD.medicineCost=int(request.POST['medicineCost'])
pDD.roomCharge=int(request.POST['roomCharge'])*int(d)
pDD.doctorFee=int(request.POST['doctorFee'])
pDD.OtherCharge=int(request.POST['OtherCharge'])
pDD.total=(int(request.POST['roomCharge'])*int(d))+int(request.POST['doctorFee'])+int(request.POST['medicineCost'])+int(request.POST['OtherCharge'])
pDD.save()
return render(request,'hospital/patient_final_bill.html',context=patientDict)
return render(request,'hospital/patient_generate_bill.html',context=patientDict)
# PDF generation via xhtml2pdf has been disabled to avoid freetype/reportlab runtime errors.
# Fallback: render the bill template as regular HTML so users can view/print it from the browser.
def download_pdf_view(request, pk):
dischargeDetails = models.PatientDischargeDetails.objects.all().filter(patientId=pk).order_by('-id')[:1]
if not dischargeDetails:
return render(request, 'hospital/download_bill.html', {})
context = {
'patientName': dischargeDetails[0].patientName,
'assignedDoctorName': dischargeDetails[0].assignedDoctorName,
'address': dischargeDetails[0].address,
'mobile': dischargeDetails[0].mobile,
'symptoms': dischargeDetails[0].symptoms,
'admitDate': dischargeDetails[0].admitDate,
'releaseDate': dischargeDetails[0].releaseDate,
'daySpent': dischargeDetails[0].daySpent,
'medicineCost': dischargeDetails[0].medicineCost,
'roomCharge': dischargeDetails[0].roomCharge,
'doctorFee': dischargeDetails[0].doctorFee,
'OtherCharge': dischargeDetails[0].OtherCharge,
'total': dischargeDetails[0].total,
}
return render(request, 'hospital/download_bill.html', context)
#-----------------APPOINTMENT START--------------------------------------------------------------------
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_appointment_view(request):
return render(request,'hospital/admin_appointment.html')
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_view_appointment_view(request):
appointments=models.Appointment.objects.all().filter(status=True)
return render(request,'hospital/admin_view_appointment.html',{'appointments':appointments})
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_add_appointment_view(request):
appointmentForm=forms.AppointmentForm()
mydict={'appointmentForm':appointmentForm,}
if request.method=='POST':
appointmentForm=forms.AppointmentForm(request.POST)
if appointmentForm.is_valid():
appointment=appointmentForm.save(commit=False)
appointment.doctorId=request.POST.get('doctorId')
appointment.patientId=request.POST.get('patientId')
appointment.doctorName=models.User.objects.get(id=request.POST.get('doctorId')).first_name
appointment.patientName=models.User.objects.get(id=request.POST.get('patientId')).first_name
appointment.status=True
appointment.save()
return HttpResponseRedirect('admin-view-appointment')
return render(request,'hospital/admin_add_appointment.html',context=mydict)
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def admin_approve_appointment_view(request):
#those whose approval are needed
appointments=models.Appointment.objects.all().filter(status=False)
return render(request,'hospital/admin_approve_appointment.html',{'appointments':appointments})
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def approve_appointment_view(request,pk):
appointment=models.Appointment.objects.get(id=pk)
appointment.status=True
appointment.save()
return redirect(reverse('admin-approve-appointment'))
@login_required(login_url='adminlogin')
@user_passes_test(is_admin)
def reject_appointment_view(request,pk):
appointment=models.Appointment.objects.get(id=pk)
appointment.delete()
return redirect('admin-approve-appointment')
#---------------------------------------------------------------------------------
#------------------------ ADMIN RELATED VIEWS END ------------------------------
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#------------------------ DOCTOR RELATED VIEWS START ------------------------------
#---------------------------------------------------------------------------------
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def doctor_dashboard_view(request):
#for three cards
patientcount=models.Patient.objects.all().filter(status=True,assignedDoctorId=request.user.id).count()
appointmentcount=models.Appointment.objects.all().filter(status=True,doctorId=request.user.id).count()
patientdischarged=models.PatientDischargeDetails.objects.all().distinct().filter(assignedDoctorName=request.user.first_name).count()
#for table in doctor dashboard
appointments=models.Appointment.objects.all().filter(status=True,doctorId=request.user.id).order_by('-id')
patientid=[]
for a in appointments:
patientid.append(a.patientId)
patients=models.Patient.objects.all().filter(status=True,user_id__in=patientid).order_by('-id')
appointments=zip(appointments,patients)
mydict={
'patientcount':patientcount,
'appointmentcount':appointmentcount,
'patientdischarged':patientdischarged,
'appointments':appointments,
'doctor':models.Doctor.objects.get(user_id=request.user.id), #for profile picture of doctor in sidebar
}
return render(request,'hospital/doctor_dashboard.html',context=mydict)
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def doctor_patient_view(request):
mydict={
'doctor':models.Doctor.objects.get(user_id=request.user.id), #for profile picture of doctor in sidebar
}
return render(request,'hospital/doctor_patient.html',context=mydict)
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def doctor_view_patient_view(request):
patients=models.Patient.objects.all().filter(status=True,assignedDoctorId=request.user.id)
doctor=models.Doctor.objects.get(user_id=request.user.id) #for profile picture of doctor in sidebar
return render(request,'hospital/doctor_view_patient.html',{'patients':patients,'doctor':doctor})
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def search_view(request):
doctor=models.Doctor.objects.get(user_id=request.user.id) #for profile picture of doctor in sidebar
# whatever user write in search box we get in query
query = request.GET['query']
patients=models.Patient.objects.all().filter(status=True,assignedDoctorId=request.user.id).filter(Q(symptoms__icontains=query)|Q(user__first_name__icontains=query))
return render(request,'hospital/doctor_view_patient.html',{'patients':patients,'doctor':doctor})
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def doctor_view_discharge_patient_view(request):
dischargedpatients=models.PatientDischargeDetails.objects.all().distinct().filter(assignedDoctorName=request.user.first_name)
doctor=models.Doctor.objects.get(user_id=request.user.id) #for profile picture of doctor in sidebar
return render(request,'hospital/doctor_view_discharge_patient.html',{'dischargedpatients':dischargedpatients,'doctor':doctor})
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def doctor_appointment_view(request):
doctor=models.Doctor.objects.get(user_id=request.user.id) #for profile picture of doctor in sidebar
return render(request,'hospital/doctor_appointment.html',{'doctor':doctor})
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def doctor_view_appointment_view(request):
doctor=models.Doctor.objects.get(user_id=request.user.id) #for profile picture of doctor in sidebar
appointments=models.Appointment.objects.all().filter(status=True,doctorId=request.user.id)
patientid=[]
for a in appointments:
patientid.append(a.patientId)
patients=models.Patient.objects.all().filter(status=True,user_id__in=patientid)
appointments=zip(appointments,patients)
return render(request,'hospital/doctor_view_appointment.html',{'appointments':appointments,'doctor':doctor})
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def doctor_delete_appointment_view(request):
doctor=models.Doctor.objects.get(user_id=request.user.id) #for profile picture of doctor in sidebar
appointments=models.Appointment.objects.all().filter(status=True,doctorId=request.user.id)
patientid=[]
for a in appointments:
patientid.append(a.patientId)
patients=models.Patient.objects.all().filter(status=True,user_id__in=patientid)
appointments=zip(appointments,patients)
return render(request,'hospital/doctor_delete_appointment.html',{'appointments':appointments,'doctor':doctor})
@login_required(login_url='doctorlogin')
@user_passes_test(is_doctor)
def delete_appointment_view(request,pk):
appointment=models.Appointment.objects.get(id=pk)
appointment.delete()
doctor=models.Doctor.objects.get(user_id=request.user.id) #for profile picture of doctor in sidebar
appointments=models.Appointment.objects.all().filter(status=True,doctorId=request.user.id)
patientid=[]
for a in appointments:
patientid.append(a.patientId)
patients=models.Patient.objects.all().filter(status=True,user_id__in=patientid)
appointments=zip(appointments,patients)
return render(request,'hospital/doctor_delete_appointment.html',{'appointments':appointments,'doctor':doctor})
#---------------------------------------------------------------------------------
#------------------------ DOCTOR RELATED VIEWS END ------------------------------
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#------------------------ PATIENT RELATED VIEWS START ------------------------------
#---------------------------------------------------------------------------------
@login_required(login_url='patientlogin')
@user_passes_test(is_patient)
def patient_dashboard_view(request):
patient=models.Patient.objects.get(user_id=request.user.id)
doctor=models.Doctor.objects.get(user_id=patient.assignedDoctorId)
mydict={
'patient':patient,
'doctorName':doctor.get_name,
'doctorMobile':doctor.mobile,
'doctorAddress':doctor.address,
'symptoms':patient.symptoms,
'doctorDepartment':doctor.department,
'admitDate':patient.admitDate,
}
return render(request,'hospital/patient_dashboard.html',context=mydict)
@login_required(login_url='patientlogin')
@user_passes_test(is_patient)
def patient_appointment_view(request):
patient=models.Patient.objects.get(user_id=request.user.id) #for profile picture of patient in sidebar
return render(request,'hospital/patient_appointment.html',{'patient':patient})
@login_required(login_url='patientlogin')
@user_passes_test(is_patient)
def patient_book_appointment_view(request):
appointmentForm=forms.PatientAppointmentForm()
patient=models.Patient.objects.get(user_id=request.user.id) #for profile picture of patient in sidebar
message=None
mydict={'appointmentForm':appointmentForm,'patient':patient,'message':message}
if request.method=='POST':
appointmentForm=forms.PatientAppointmentForm(request.POST)
if appointmentForm.is_valid():
print(request.POST.get('doctorId'))
desc=request.POST.get('description')
doctor=models.Doctor.objects.get(user_id=request.POST.get('doctorId'))
appointment=appointmentForm.save(commit=False)
appointment.doctorId=request.POST.get('doctorId')
appointment.patientId=request.user.id #----user can choose any patient but only their info will be stored
appointment.doctorName=models.User.objects.get(id=request.POST.get('doctorId')).first_name
appointment.patientName=request.user.first_name #----user can choose any patient but only their info will be stored
appointment.status=False
appointment.save()
return HttpResponseRedirect('patient-view-appointment')
return render(request,'hospital/patient_book_appointment.html',context=mydict)
def patient_view_doctor_view(request):
doctors=models.Doctor.objects.all().filter(status=True)
patient=models.Patient.objects.get(user_id=request.user.id) #for profile picture of patient in sidebar
return render(request,'hospital/patient_view_doctor.html',{'patient':patient,'doctors':doctors})
def search_doctor_view(request):
patient=models.Patient.objects.get(user_id=request.user.id) #for profile picture of patient in sidebar
# whatever user write in search box we get in query
query = request.GET['query']
doctors=models.Doctor.objects.all().filter(status=True).filter(Q(department__icontains=query)| Q(user__first_name__icontains=query))
return render(request,'hospital/patient_view_doctor.html',{'patient':patient,'doctors':doctors})
@login_required(login_url='patientlogin')
@user_passes_test(is_patient)
def patient_view_appointment_view(request):
patient=models.Patient.objects.get(user_id=request.user.id) #for profile picture of patient in sidebar
appointments=models.Appointment.objects.all().filter(patientId=request.user.id)
return render(request,'hospital/patient_view_appointment.html',{'appointments':appointments,'patient':patient})
@login_required(login_url='patientlogin')
@user_passes_test(is_patient)
def patient_discharge_view(request):
patient=models.Patient.objects.get(user_id=request.user.id) #for profile picture of patient in sidebar
dischargeDetails=models.PatientDischargeDetails.objects.all().filter(patientId=patient.id).order_by('-id')[:1]
patientDict=None
if dischargeDetails:
patientDict ={
'is_discharged':True,
'patient':patient,
'patientId':patient.id,
'patientName':patient.get_name,
'assignedDoctorName':dischargeDetails[0].assignedDoctorName,
'address':patient.address,
'mobile':patient.mobile,
'symptoms':patient.symptoms,
'admitDate':patient.admitDate,
'releaseDate':dischargeDetails[0].releaseDate,
'daySpent':dischargeDetails[0].daySpent,
'medicineCost':dischargeDetails[0].medicineCost,
'roomCharge':dischargeDetails[0].roomCharge,
'doctorFee':dischargeDetails[0].doctorFee,
'OtherCharge':dischargeDetails[0].OtherCharge,
'total':dischargeDetails[0].total,
}
print(patientDict)
else:
patientDict={
'is_discharged':False,
'patient':patient,
'patientId':request.user.id,
}
return render(request,'hospital/patient_discharge.html',context=patientDict)
#------------------------ PATIENT RELATED VIEWS END ------------------------------
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#------------------------ ABOUT US AND CONTACT US VIEWS START ------------------------------
#---------------------------------------------------------------------------------
def aboutus_view(request):
return render(request,'hospital/aboutus.html')
def contactus_view(request):
sub = forms.ContactusForm()
if request.method == 'POST':
sub = forms.ContactusForm(request.POST)
if sub.is_valid():
email = sub.cleaned_data['Email']
name=sub.cleaned_data['Name']
message = sub.cleaned_data['Message']
send_mail(str(name)+' || '+str(email),message,settings.EMAIL_HOST_USER, settings.EMAIL_RECEIVING_USER, fail_silently = False)
return render(request, 'hospital/contactussuccess.html')
return render(request, 'hospital/contactus.html', {'form':sub})
#---------------------------------------------------------------------------------
#------------------------ ADMIN RELATED VIEWS END ------------------------------
#---------------------------------------------------------------------------------
#Developed By : sumit kumar
#facebook : fb.com/sumit.luv
#Youtube :youtube.com/lazycoders