834 lines
31 KiB
Python
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
|