Initial commit
116
hospitalmanagement/.gitignore
vendored
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
# Django #
|
||||||
|
*.log
|
||||||
|
*.pot
|
||||||
|
*.pyc
|
||||||
|
__pycache__
|
||||||
|
db.sqlite3
|
||||||
|
media
|
||||||
|
|
||||||
|
# Backup files #
|
||||||
|
*.bak
|
||||||
|
|
||||||
|
# If you are using PyCharm #
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/dictionaries
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.xml
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
*.iws /out/
|
||||||
|
|
||||||
|
# Python #
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
.pytest_cache/
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
.hypothesis/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
# celery
|
||||||
|
celerybeat-schedule.*
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
|
||||||
|
# Sublime Text #
|
||||||
|
*.tmlanguage.cache
|
||||||
|
*.tmPreferences.cache
|
||||||
|
*.stTheme.cache
|
||||||
|
*.sublime-workspace
|
||||||
|
*.sublime-project
|
||||||
|
|
||||||
|
# sftp configuration file
|
||||||
|
sftp-config.json
|
||||||
|
|
||||||
|
# Package control specific files Package
|
||||||
|
Control.last-run
|
||||||
|
Control.ca-list
|
||||||
|
Control.ca-bundle
|
||||||
|
Control.system-ca-bundle
|
||||||
|
GitHub.sublime-settings
|
||||||
|
|
||||||
|
# Visual Studio Code #
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.history
|
||||||
21
hospitalmanagement/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 sumit kumar
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
81
hospitalmanagement/README.md
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
|
||||||
|
# Hospital Management
|
||||||
|

|
||||||
|
---
|
||||||
|
## screenshots
|
||||||
|
### Homepage
|
||||||
|

|
||||||
|
### Admin Dashboard
|
||||||
|

|
||||||
|
### Invoice
|
||||||
|

|
||||||
|
### Doctor list
|
||||||
|

|
||||||
|
---
|
||||||
|
## Functions
|
||||||
|
### Admin
|
||||||
|
- Signup their account. Then Login (No approval Required).
|
||||||
|
- Can register/view/approve/reject/delete doctor (approve those doctor who applied for job in their hospital).
|
||||||
|
- Can admit/view/approve/reject/discharge patient (discharge patient when treatment is done).
|
||||||
|
- Can Generate/Download Invoice pdf (Generate Invoice according to medicine cost, room charge, doctor charge and other charge).
|
||||||
|
- Can view/book/approve Appointment (approve those appointments which is requested by patient).
|
||||||
|
|
||||||
|
### Doctor
|
||||||
|
- Apply for job in hospital. Then Login (Approval required by hospital admin, Then only doctor can login).
|
||||||
|
- Can only view their patient details (symptoms, name, mobile ) assigned to that doctor by admin.
|
||||||
|
- Can view their discharged(by admin) patient list.
|
||||||
|
- Can view their Appointments, booked by admin.
|
||||||
|
- Can delete their Appointment, when doctor attended their appointment.
|
||||||
|
|
||||||
|
### Patient
|
||||||
|
- Create account for admit in hospital. Then Login (Approval required by hospital admin, Then only patient can login).
|
||||||
|
- Can view assigned doctor's details like ( specialization, mobile, address).
|
||||||
|
- Can view their booked appointment status (pending/confirmed by admin).
|
||||||
|
- Can book appointments.(approval required by admin)
|
||||||
|
- Can view/download Invoice pdf (Only when that patient is discharged by admin).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## HOW TO RUN THIS PROJECT
|
||||||
|
- Install Python(3.7.6) (Dont Forget to Tick Add to Path while installing Python)
|
||||||
|
- Open Terminal and Execute Following Commands :
|
||||||
|
```
|
||||||
|
pip install django==3.0.5
|
||||||
|
pip install django-widget-tweaks
|
||||||
|
pip install xhtml2pdf
|
||||||
|
```
|
||||||
|
- Download This Project Zip Folder and Extract it
|
||||||
|
- Move to project folder in Terminal. Then run following Commands :
|
||||||
|
```
|
||||||
|
py manage.py makemigrations
|
||||||
|
py manage.py migrate
|
||||||
|
py manage.py runserver
|
||||||
|
```
|
||||||
|
- Now enter following URL in Your Browser Installed On Your Pc
|
||||||
|
```
|
||||||
|
http://127.0.0.1:8000/
|
||||||
|
```
|
||||||
|
|
||||||
|
## CHANGES REQUIRED FOR CONTACT US PAGE
|
||||||
|
- In settins.py file, You have to give your email and password
|
||||||
|
```
|
||||||
|
EMAIL_HOST_USER = 'youremail@gmail.com'
|
||||||
|
EMAIL_HOST_PASSWORD = 'your email password'
|
||||||
|
EMAIL_RECEIVING_USER = 'youremail@gmail.com'
|
||||||
|
```
|
||||||
|
- Login to gmail through host email id in your browser and open following link and turn it ON
|
||||||
|
```
|
||||||
|
https://myaccount.google.com/lesssecureapps
|
||||||
|
```
|
||||||
|
## Drawbacks/LoopHoles
|
||||||
|
- Any one can be Admin. There is no Approval required for admin account. So you can disable admin signup process and use any logic like creating superuser.
|
||||||
|
- There should be at least one doctor in hospital before admitting patient. So first add doctor.
|
||||||
|
- On update page of doctor/patient you must have to update password.
|
||||||
|
|
||||||
|
## Disclaimer
|
||||||
|
This project is developed for demo purpose and it's not supposed to be used in real application.
|
||||||
|
|
||||||
|
## Feedback
|
||||||
|
Any suggestion and feedback is welcome. You can message me on facebook
|
||||||
|
- [Contact on Facebook](https://fb.com/sumit.luv)
|
||||||
|
- [Subscribe my Channel LazyCoder On Youtube](https://youtube.com/lazycoders)
|
||||||
0
hospitalmanagement/hospital/__init__.py
Normal file
18
hospitalmanagement/hospital/admin.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
from .models import Doctor,Patient,Appointment,PatientDischargeDetails
|
||||||
|
# Register your models here.
|
||||||
|
class DoctorAdmin(admin.ModelAdmin):
|
||||||
|
pass
|
||||||
|
admin.site.register(Doctor, DoctorAdmin)
|
||||||
|
|
||||||
|
class PatientAdmin(admin.ModelAdmin):
|
||||||
|
pass
|
||||||
|
admin.site.register(Patient, PatientAdmin)
|
||||||
|
|
||||||
|
class AppointmentAdmin(admin.ModelAdmin):
|
||||||
|
pass
|
||||||
|
admin.site.register(Appointment, AppointmentAdmin)
|
||||||
|
|
||||||
|
class PatientDischargeDetailsAdmin(admin.ModelAdmin):
|
||||||
|
pass
|
||||||
|
admin.site.register(PatientDischargeDetails, PatientDischargeDetailsAdmin)
|
||||||
5
hospitalmanagement/hospital/apps.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class HospitalConfig(AppConfig):
|
||||||
|
name = 'hospital'
|
||||||
76
hospitalmanagement/hospital/forms.py
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
from django import forms
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
from . import models
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#for admin signup
|
||||||
|
class AdminSigupForm(forms.ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model=User
|
||||||
|
fields=['first_name','last_name','username','password']
|
||||||
|
widgets = {
|
||||||
|
'password': forms.PasswordInput()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#for student related form
|
||||||
|
class DoctorUserForm(forms.ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model=User
|
||||||
|
fields=['first_name','last_name','username','password']
|
||||||
|
widgets = {
|
||||||
|
'password': forms.PasswordInput()
|
||||||
|
}
|
||||||
|
class DoctorForm(forms.ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model=models.Doctor
|
||||||
|
fields=['address','mobile','department','status','profile_pic']
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#for teacher related form
|
||||||
|
class PatientUserForm(forms.ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model=User
|
||||||
|
fields=['first_name','last_name','username','password']
|
||||||
|
widgets = {
|
||||||
|
'password': forms.PasswordInput()
|
||||||
|
}
|
||||||
|
class PatientForm(forms.ModelForm):
|
||||||
|
#this is the extrafield for linking patient and their assigend doctor
|
||||||
|
#this will show dropdown __str__ method doctor model is shown on html so override it
|
||||||
|
#to_field_name this will fetch corresponding value user_id present in Doctor model and return it
|
||||||
|
assignedDoctorId=forms.ModelChoiceField(queryset=models.Doctor.objects.all().filter(status=True),empty_label="Name and Department", to_field_name="user_id")
|
||||||
|
class Meta:
|
||||||
|
model=models.Patient
|
||||||
|
fields=['address','mobile','status','symptoms','profile_pic']
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class AppointmentForm(forms.ModelForm):
|
||||||
|
doctorId=forms.ModelChoiceField(queryset=models.Doctor.objects.all().filter(status=True),empty_label="Doctor Name and Department", to_field_name="user_id")
|
||||||
|
patientId=forms.ModelChoiceField(queryset=models.Patient.objects.all().filter(status=True),empty_label="Patient Name and Symptoms", to_field_name="user_id")
|
||||||
|
class Meta:
|
||||||
|
model=models.Appointment
|
||||||
|
fields=['description','status']
|
||||||
|
|
||||||
|
|
||||||
|
class PatientAppointmentForm(forms.ModelForm):
|
||||||
|
doctorId=forms.ModelChoiceField(queryset=models.Doctor.objects.all().filter(status=True),empty_label="Doctor Name and Department", to_field_name="user_id")
|
||||||
|
class Meta:
|
||||||
|
model=models.Appointment
|
||||||
|
fields=['description','status']
|
||||||
|
|
||||||
|
|
||||||
|
#for contact us page
|
||||||
|
class ContactusForm(forms.Form):
|
||||||
|
Name = forms.CharField(max_length=30)
|
||||||
|
Email = forms.EmailField()
|
||||||
|
Message = forms.CharField(max_length=500,widget=forms.Textarea(attrs={'rows': 3, 'cols': 30}))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#Developed By : sumit kumar
|
||||||
|
#facebook : fb.com/sumit.luv
|
||||||
|
#Youtube :youtube.com/lazycoders
|
||||||
51
hospitalmanagement/hospital/migrations/0001_initial.py
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-15 04:45
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='TeacherExtra',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('salary', models.PositiveIntegerField()),
|
||||||
|
('joindate', models.DateField(auto_now_add=True)),
|
||||||
|
('mobile', models.CharField(max_length=40)),
|
||||||
|
('status', models.BooleanField(default=False)),
|
||||||
|
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Patient',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('address', models.CharField(max_length=40)),
|
||||||
|
('mobile', models.CharField(max_length=40, null=True)),
|
||||||
|
('symptoms', models.CharField(max_length=100, null=True)),
|
||||||
|
('assignedDoctorId', models.PositiveIntegerField()),
|
||||||
|
('status', models.BooleanField(default=False)),
|
||||||
|
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Doctor',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('address', models.CharField(max_length=40)),
|
||||||
|
('mobile', models.CharField(max_length=40, null=True)),
|
||||||
|
('department', models.CharField(choices=[('Cardiologist', 'Cardiologist'), ('Dermatologists', 'Dermatologists'), ('Emergency Medicine Specialists', 'Emergency Medicine Specialists'), ('Allergists/Immunologists', 'Allergists/Immunologists'), ('Anesthesiologists', 'Anesthesiologists'), ('Colon and Rectal Surgeons', 'Colon and Rectal Surgeons')], default='Cardiologist', max_length=50)),
|
||||||
|
('status', models.BooleanField(default=False)),
|
||||||
|
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-15 04:46
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.DeleteModel(
|
||||||
|
name='TeacherExtra',
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-18 03:04
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0002_delete_teacherextra'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='patient',
|
||||||
|
name='admitDate',
|
||||||
|
field=models.DateField(auto_now=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-18 08:47
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0003_patient_admitdate'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='PatientDischargeDetails',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('patientId', models.PositiveIntegerField()),
|
||||||
|
('patientName', models.CharField(max_length=40)),
|
||||||
|
('assignedDoctorName', models.CharField(max_length=40)),
|
||||||
|
('address', models.CharField(max_length=40)),
|
||||||
|
('mobile', models.CharField(max_length=40, null=True)),
|
||||||
|
('symptoms', models.CharField(max_length=100, null=True)),
|
||||||
|
('admitDate', models.DateField()),
|
||||||
|
('releaseDate', models.DateField()),
|
||||||
|
('daySpent', models.PositiveIntegerField()),
|
||||||
|
('roomCharge', models.PositiveIntegerField()),
|
||||||
|
('medicineCost', models.PositiveIntegerField()),
|
||||||
|
('doctorFee', models.PositiveIntegerField()),
|
||||||
|
('OtherCharge', models.PositiveIntegerField()),
|
||||||
|
('total', models.PositiveIntegerField()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
23
hospitalmanagement/hospital/migrations/0005_appointment.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-20 02:15
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0004_patientdischargedetails'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Appointment',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('patientId', models.PositiveIntegerField()),
|
||||||
|
('doctorId', models.PositiveIntegerField()),
|
||||||
|
('appointmentDate', models.DateField(auto_now=True)),
|
||||||
|
('description', models.TextField(max_length=500)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-20 03:22
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0005_appointment'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='appointment',
|
||||||
|
name='status',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-20 04:53
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0006_appointment_status'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='appointment',
|
||||||
|
name='doctorName',
|
||||||
|
field=models.CharField(max_length=40, null=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='appointment',
|
||||||
|
name='patientName',
|
||||||
|
field=models.CharField(max_length=40, null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patient',
|
||||||
|
name='mobile',
|
||||||
|
field=models.CharField(max_length=40),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patient',
|
||||||
|
name='symptoms',
|
||||||
|
field=models.CharField(max_length=100),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-20 05:21
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0007_auto_20200520_1023'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='doctor',
|
||||||
|
name='profile_pic',
|
||||||
|
field=models.ImageField(null=True, upload_to='DoctorProfilePic/'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-23 05:48
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0008_doctor_profile_pic'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='doctor',
|
||||||
|
name='profile_pic',
|
||||||
|
field=models.ImageField(blank=True, null=True, upload_to=''),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-23 05:52
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0009_auto_20200523_1118'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='doctor',
|
||||||
|
name='profile_pic',
|
||||||
|
field=models.ImageField(blank=True, null=True, upload_to='static/DoctorProfilePic/'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-23 07:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0010_auto_20200523_1122'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='doctor',
|
||||||
|
name='profile_pic',
|
||||||
|
field=models.ImageField(blank=True, null=True, upload_to='DoctorProfilePic/'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-23 08:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0011_auto_20200523_1325'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='doctor',
|
||||||
|
name='profile_pic',
|
||||||
|
field=models.ImageField(blank=True, null=True, upload_to='profile_pic/DoctorProfilePic/'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-23 09:54
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0012_auto_20200523_1336'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='patient',
|
||||||
|
name='profile_pic',
|
||||||
|
field=models.ImageField(blank=True, null=True, upload_to='profile_pic/PatientProfilePic/'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-26 09:25
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0013_patient_profile_pic'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patientdischargedetails',
|
||||||
|
name='mobile',
|
||||||
|
field=models.CharField(max_length=10, null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-05-26 09:31
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0014_auto_20200526_1455'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='doctor',
|
||||||
|
name='mobile',
|
||||||
|
field=models.CharField(max_length=10, null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patient',
|
||||||
|
name='mobile',
|
||||||
|
field=models.CharField(max_length=10),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-06-22 18:30
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0015_auto_20200526_1501'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='doctor',
|
||||||
|
name='mobile',
|
||||||
|
field=models.CharField(max_length=20, null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patient',
|
||||||
|
name='mobile',
|
||||||
|
field=models.CharField(max_length=20),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patientdischargedetails',
|
||||||
|
name='mobile',
|
||||||
|
field=models.CharField(max_length=20, null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-06-22 18:35
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0016_auto_20200622_1830'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='appointment',
|
||||||
|
name='doctorId',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='hospital.Doctor'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='appointment',
|
||||||
|
name='patientId',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='hospital.Patient'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patient',
|
||||||
|
name='assignedDoctorId',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='hospital.Doctor'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patientdischargedetails',
|
||||||
|
name='patientId',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='hospital.Patient'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Generated by Django 3.0.5 on 2020-10-15 15:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hospital', '0017_auto_20200622_1835'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='appointment',
|
||||||
|
name='doctorId',
|
||||||
|
field=models.PositiveIntegerField(null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='appointment',
|
||||||
|
name='patientId',
|
||||||
|
field=models.PositiveIntegerField(null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patient',
|
||||||
|
name='assignedDoctorId',
|
||||||
|
field=models.PositiveIntegerField(null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='patientdischargedetails',
|
||||||
|
name='patientId',
|
||||||
|
field=models.PositiveIntegerField(null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
0
hospitalmanagement/hospital/migrations/__init__.py
Normal file
82
hospitalmanagement/hospital/models.py
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
from django.db import models
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
departments=[('Cardiologist','Cardiologist'),
|
||||||
|
('Dermatologists','Dermatologists'),
|
||||||
|
('Emergency Medicine Specialists','Emergency Medicine Specialists'),
|
||||||
|
('Allergists/Immunologists','Allergists/Immunologists'),
|
||||||
|
('Anesthesiologists','Anesthesiologists'),
|
||||||
|
('Colon and Rectal Surgeons','Colon and Rectal Surgeons')
|
||||||
|
]
|
||||||
|
class Doctor(models.Model):
|
||||||
|
user=models.OneToOneField(User,on_delete=models.CASCADE)
|
||||||
|
profile_pic= models.ImageField(upload_to='profile_pic/DoctorProfilePic/',null=True,blank=True)
|
||||||
|
address = models.CharField(max_length=40)
|
||||||
|
mobile = models.CharField(max_length=20,null=True)
|
||||||
|
department= models.CharField(max_length=50,choices=departments,default='Cardiologist')
|
||||||
|
status=models.BooleanField(default=False)
|
||||||
|
@property
|
||||||
|
def get_name(self):
|
||||||
|
return self.user.first_name+" "+self.user.last_name
|
||||||
|
@property
|
||||||
|
def get_id(self):
|
||||||
|
return self.user.id
|
||||||
|
def __str__(self):
|
||||||
|
return "{} ({})".format(self.user.first_name,self.department)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Patient(models.Model):
|
||||||
|
user=models.OneToOneField(User,on_delete=models.CASCADE)
|
||||||
|
profile_pic= models.ImageField(upload_to='profile_pic/PatientProfilePic/',null=True,blank=True)
|
||||||
|
address = models.CharField(max_length=40)
|
||||||
|
mobile = models.CharField(max_length=20,null=False)
|
||||||
|
symptoms = models.CharField(max_length=100,null=False)
|
||||||
|
assignedDoctorId = models.PositiveIntegerField(null=True)
|
||||||
|
admitDate=models.DateField(auto_now=True)
|
||||||
|
status=models.BooleanField(default=False)
|
||||||
|
@property
|
||||||
|
def get_name(self):
|
||||||
|
return self.user.first_name+" "+self.user.last_name
|
||||||
|
@property
|
||||||
|
def get_id(self):
|
||||||
|
return self.user.id
|
||||||
|
def __str__(self):
|
||||||
|
return self.user.first_name+" ("+self.symptoms+")"
|
||||||
|
|
||||||
|
|
||||||
|
class Appointment(models.Model):
|
||||||
|
patientId=models.PositiveIntegerField(null=True)
|
||||||
|
doctorId=models.PositiveIntegerField(null=True)
|
||||||
|
patientName=models.CharField(max_length=40,null=True)
|
||||||
|
doctorName=models.CharField(max_length=40,null=True)
|
||||||
|
appointmentDate=models.DateField(auto_now=True)
|
||||||
|
description=models.TextField(max_length=500)
|
||||||
|
status=models.BooleanField(default=False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class PatientDischargeDetails(models.Model):
|
||||||
|
patientId=models.PositiveIntegerField(null=True)
|
||||||
|
patientName=models.CharField(max_length=40)
|
||||||
|
assignedDoctorName=models.CharField(max_length=40)
|
||||||
|
address = models.CharField(max_length=40)
|
||||||
|
mobile = models.CharField(max_length=20,null=True)
|
||||||
|
symptoms = models.CharField(max_length=100,null=True)
|
||||||
|
|
||||||
|
admitDate=models.DateField(null=False)
|
||||||
|
releaseDate=models.DateField(null=False)
|
||||||
|
daySpent=models.PositiveIntegerField(null=False)
|
||||||
|
|
||||||
|
roomCharge=models.PositiveIntegerField(null=False)
|
||||||
|
medicineCost=models.PositiveIntegerField(null=False)
|
||||||
|
doctorFee=models.PositiveIntegerField(null=False)
|
||||||
|
OtherCharge=models.PositiveIntegerField(null=False)
|
||||||
|
total=models.PositiveIntegerField(null=False)
|
||||||
|
|
||||||
|
|
||||||
|
#Developed By : sumit kumar
|
||||||
|
#facebook : fb.com/sumit.luv
|
||||||
|
#Youtube :youtube.com/lazycoders
|
||||||
833
hospitalmanagement/hospital/views.py
Normal file
@@ -0,0 +1,833 @@
|
|||||||
|
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
|
||||||
0
hospitalmanagement/hospitalmanagement/__init__.py
Normal file
16
hospitalmanagement/hospitalmanagement/asgi.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
ASGI config for hospitalmanagement project.
|
||||||
|
|
||||||
|
It exposes the ASGI callable as a module-level variable named ``application``.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.core.asgi import get_asgi_application
|
||||||
|
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hospitalmanagement.settings')
|
||||||
|
|
||||||
|
application = get_asgi_application()
|
||||||
146
hospitalmanagement/hospitalmanagement/settings.py
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
"""
|
||||||
|
Django settings for hospitalmanagement project.
|
||||||
|
|
||||||
|
Generated by 'django-admin startproject' using Django 3.0.5.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/3.0/topics/settings/
|
||||||
|
|
||||||
|
For the full list of settings and their values, see
|
||||||
|
https://docs.djangoproject.com/en/3.0/ref/settings/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')
|
||||||
|
STATIC_DIR=os.path.join(BASE_DIR,'static')
|
||||||
|
|
||||||
|
|
||||||
|
# Quick-start development settings - unsuitable for production
|
||||||
|
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
|
||||||
|
|
||||||
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
|
SECRET_KEY = 'hpbv()ep00boce&o0w7z1h)st148(*m@6@-rk$nn)(n9ojj4c0'
|
||||||
|
|
||||||
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
|
DEBUG = True
|
||||||
|
|
||||||
|
ALLOWED_HOSTS = []
|
||||||
|
|
||||||
|
|
||||||
|
# Application definition
|
||||||
|
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'django.contrib.admin',
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
'django.contrib.messages',
|
||||||
|
'django.contrib.staticfiles',
|
||||||
|
'hospital',
|
||||||
|
'widget_tweaks',
|
||||||
|
]
|
||||||
|
|
||||||
|
MIDDLEWARE = [
|
||||||
|
'django.middleware.security.SecurityMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
]
|
||||||
|
|
||||||
|
ROOT_URLCONF = 'hospitalmanagement.urls'
|
||||||
|
|
||||||
|
TEMPLATES = [
|
||||||
|
{
|
||||||
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
|
'DIRS': [TEMPLATE_DIR,],
|
||||||
|
'APP_DIRS': True,
|
||||||
|
'OPTIONS': {
|
||||||
|
'context_processors': [
|
||||||
|
'django.template.context_processors.debug',
|
||||||
|
'django.template.context_processors.request',
|
||||||
|
'django.contrib.auth.context_processors.auth',
|
||||||
|
'django.contrib.messages.context_processors.messages',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
WSGI_APPLICATION = 'hospitalmanagement.wsgi.application'
|
||||||
|
|
||||||
|
|
||||||
|
# Database
|
||||||
|
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
|
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Password validation
|
||||||
|
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# Internationalization
|
||||||
|
# https://docs.djangoproject.com/en/3.0/topics/i18n/
|
||||||
|
|
||||||
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
|
TIME_ZONE = 'UTC'
|
||||||
|
|
||||||
|
USE_I18N = True
|
||||||
|
|
||||||
|
USE_L10N = True
|
||||||
|
|
||||||
|
USE_TZ = True
|
||||||
|
|
||||||
|
|
||||||
|
# Static files (CSS, JavaScript, Images)
|
||||||
|
# https://docs.djangoproject.com/en/3.0/howto/static-files/
|
||||||
|
|
||||||
|
STATIC_URL = '/static/'
|
||||||
|
|
||||||
|
STATICFILES_DIRS=[STATIC_DIR,]
|
||||||
|
|
||||||
|
MEDIA_ROOT=os.path.join(BASE_DIR,'static')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LOGIN_REDIRECT_URL='/afterlogin'
|
||||||
|
|
||||||
|
#for contact us give your gmail id and password
|
||||||
|
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
|
||||||
|
EMAIL_HOST = 'smtp.gmail.com'
|
||||||
|
EMAIL_USE_TLS = True
|
||||||
|
EMAIL_PORT = 587
|
||||||
|
EMAIL_HOST_USER = 'from@gmail.com' # this email will be used to send emails
|
||||||
|
EMAIL_HOST_PASSWORD = 'xyz' # host email password required
|
||||||
|
# now sign in with your host gmail account in your browser
|
||||||
|
# open following link and turn it ON
|
||||||
|
# https://myaccount.google.com/lesssecureapps
|
||||||
|
# otherwise you will get SMTPAuthenticationError at /contactus
|
||||||
|
# this process is required because google blocks apps authentication by default
|
||||||
|
EMAIL_RECEIVING_USER = ['to@gmail.com'] # email on which you will receive messages sent from website
|
||||||
114
hospitalmanagement/hospitalmanagement/urls.py
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
"""
|
||||||
|
|
||||||
|
Developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
Youtube :youtube.com/lazycoders
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.urls import path
|
||||||
|
from hospital import views
|
||||||
|
from django.contrib.auth.views import LoginView,LogoutView
|
||||||
|
|
||||||
|
|
||||||
|
#-------------FOR ADMIN RELATED URLS
|
||||||
|
urlpatterns = [
|
||||||
|
path('admin/', admin.site.urls),
|
||||||
|
path('',views.home_view,name=''),
|
||||||
|
|
||||||
|
|
||||||
|
path('aboutus', views.aboutus_view),
|
||||||
|
path('contactus', views.contactus_view),
|
||||||
|
|
||||||
|
|
||||||
|
path('adminclick', views.adminclick_view),
|
||||||
|
path('doctorclick', views.doctorclick_view),
|
||||||
|
path('patientclick', views.patientclick_view),
|
||||||
|
|
||||||
|
path('adminsignup', views.admin_signup_view),
|
||||||
|
path('doctorsignup', views.doctor_signup_view,name='doctorsignup'),
|
||||||
|
path('patientsignup', views.patient_signup_view),
|
||||||
|
|
||||||
|
path('adminlogin', LoginView.as_view(template_name='hospital/adminlogin.html')),
|
||||||
|
path('doctorlogin', LoginView.as_view(template_name='hospital/doctorlogin.html')),
|
||||||
|
path('patientlogin', LoginView.as_view(template_name='hospital/patientlogin.html')),
|
||||||
|
|
||||||
|
|
||||||
|
path('afterlogin', views.afterlogin_view,name='afterlogin'),
|
||||||
|
path('logout', LogoutView.as_view(template_name='hospital/index.html'),name='logout'),
|
||||||
|
|
||||||
|
|
||||||
|
path('admin-dashboard', views.admin_dashboard_view,name='admin-dashboard'),
|
||||||
|
|
||||||
|
path('admin-doctor', views.admin_doctor_view,name='admin-doctor'),
|
||||||
|
path('admin-view-doctor', views.admin_view_doctor_view,name='admin-view-doctor'),
|
||||||
|
path('delete-doctor-from-hospital/<int:pk>', views.delete_doctor_from_hospital_view,name='delete-doctor-from-hospital'),
|
||||||
|
path('update-doctor/<int:pk>', views.update_doctor_view,name='update-doctor'),
|
||||||
|
path('admin-add-doctor', views.admin_add_doctor_view,name='admin-add-doctor'),
|
||||||
|
path('admin-approve-doctor', views.admin_approve_doctor_view,name='admin-approve-doctor'),
|
||||||
|
path('approve-doctor/<int:pk>', views.approve_doctor_view,name='approve-doctor'),
|
||||||
|
path('reject-doctor/<int:pk>', views.reject_doctor_view,name='reject-doctor'),
|
||||||
|
path('admin-view-doctor-specialisation',views.admin_view_doctor_specialisation_view,name='admin-view-doctor-specialisation'),
|
||||||
|
|
||||||
|
|
||||||
|
path('admin-patient', views.admin_patient_view,name='admin-patient'),
|
||||||
|
path('admin-view-patient', views.admin_view_patient_view,name='admin-view-patient'),
|
||||||
|
path('delete-patient-from-hospital/<int:pk>', views.delete_patient_from_hospital_view,name='delete-patient-from-hospital'),
|
||||||
|
path('update-patient/<int:pk>', views.update_patient_view,name='update-patient'),
|
||||||
|
path('admin-add-patient', views.admin_add_patient_view,name='admin-add-patient'),
|
||||||
|
path('admin-approve-patient', views.admin_approve_patient_view,name='admin-approve-patient'),
|
||||||
|
path('approve-patient/<int:pk>', views.approve_patient_view,name='approve-patient'),
|
||||||
|
path('reject-patient/<int:pk>', views.reject_patient_view,name='reject-patient'),
|
||||||
|
path('admin-discharge-patient', views.admin_discharge_patient_view,name='admin-discharge-patient'),
|
||||||
|
path('discharge-patient/<int:pk>', views.discharge_patient_view,name='discharge-patient'),
|
||||||
|
path('download-pdf/<int:pk>', views.download_pdf_view,name='download-pdf'),
|
||||||
|
|
||||||
|
|
||||||
|
path('admin-appointment', views.admin_appointment_view,name='admin-appointment'),
|
||||||
|
path('admin-view-appointment', views.admin_view_appointment_view,name='admin-view-appointment'),
|
||||||
|
path('admin-add-appointment', views.admin_add_appointment_view,name='admin-add-appointment'),
|
||||||
|
path('admin-approve-appointment', views.admin_approve_appointment_view,name='admin-approve-appointment'),
|
||||||
|
path('approve-appointment/<int:pk>', views.approve_appointment_view,name='approve-appointment'),
|
||||||
|
path('reject-appointment/<int:pk>', views.reject_appointment_view,name='reject-appointment'),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
#---------FOR DOCTOR RELATED URLS-------------------------------------
|
||||||
|
urlpatterns +=[
|
||||||
|
path('doctor-dashboard', views.doctor_dashboard_view,name='doctor-dashboard'),
|
||||||
|
path('search', views.search_view,name='search'),
|
||||||
|
|
||||||
|
path('doctor-patient', views.doctor_patient_view,name='doctor-patient'),
|
||||||
|
path('doctor-view-patient', views.doctor_view_patient_view,name='doctor-view-patient'),
|
||||||
|
path('doctor-view-discharge-patient',views.doctor_view_discharge_patient_view,name='doctor-view-discharge-patient'),
|
||||||
|
|
||||||
|
path('doctor-appointment', views.doctor_appointment_view,name='doctor-appointment'),
|
||||||
|
path('doctor-view-appointment', views.doctor_view_appointment_view,name='doctor-view-appointment'),
|
||||||
|
path('doctor-delete-appointment',views.doctor_delete_appointment_view,name='doctor-delete-appointment'),
|
||||||
|
path('delete-appointment/<int:pk>', views.delete_appointment_view,name='delete-appointment'),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#---------FOR PATIENT RELATED URLS-------------------------------------
|
||||||
|
urlpatterns +=[
|
||||||
|
|
||||||
|
path('patient-dashboard', views.patient_dashboard_view,name='patient-dashboard'),
|
||||||
|
path('patient-appointment', views.patient_appointment_view,name='patient-appointment'),
|
||||||
|
path('patient-book-appointment', views.patient_book_appointment_view,name='patient-book-appointment'),
|
||||||
|
path('patient-view-appointment', views.patient_view_appointment_view,name='patient-view-appointment'),
|
||||||
|
path('patient-view-doctor', views.patient_view_doctor_view,name='patient-view-doctor'),
|
||||||
|
path('searchdoctor', views.search_doctor_view,name='searchdoctor'),
|
||||||
|
path('patient-discharge', views.patient_discharge_view,name='patient-discharge'),
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
#Developed By : sumit kumar
|
||||||
|
#facebook : fb.com/sumit.luv
|
||||||
|
#Youtube :youtube.com/lazycoders
|
||||||
16
hospitalmanagement/hospitalmanagement/wsgi.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
WSGI config for hospitalmanagement project.
|
||||||
|
|
||||||
|
It exposes the WSGI callable as a module-level variable named ``application``.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hospitalmanagement.settings')
|
||||||
|
|
||||||
|
application = get_wsgi_application()
|
||||||
21
hospitalmanagement/manage.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
"""Django's command-line utility for administrative tasks."""
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hospitalmanagement.settings')
|
||||||
|
try:
|
||||||
|
from django.core.management import execute_from_command_line
|
||||||
|
except ImportError as exc:
|
||||||
|
raise ImportError(
|
||||||
|
"Couldn't import Django. Are you sure it's installed and "
|
||||||
|
"available on your PYTHONPATH environment variable? Did you "
|
||||||
|
"forget to activate a virtual environment?"
|
||||||
|
) from exc
|
||||||
|
execute_from_command_line(sys.argv)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
4
hospitalmanagement/requirement.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
xhtml2pdf
|
||||||
|
Django==3.0.5
|
||||||
|
django-widget-tweaks==1.4.8
|
||||||
|
sqlparse==0.3.1
|
||||||
BIN
hospitalmanagement/static/images/admin.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
hospitalmanagement/static/images/adminpropic.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
hospitalmanagement/static/images/bg.jpg
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
hospitalmanagement/static/images/doctor.png
Normal file
|
After Width: | Height: | Size: 292 KiB |
BIN
hospitalmanagement/static/images/patient.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
hospitalmanagement/static/screenshots/admin_dashboard.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
hospitalmanagement/static/screenshots/admin_doctor.png
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
hospitalmanagement/static/screenshots/homepage.png
Normal file
|
After Width: | Height: | Size: 291 KiB |
BIN
hospitalmanagement/static/screenshots/invoice.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
178
hospitalmanagement/static/style.css
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
body {
|
||||||
|
|
||||||
|
padding-left: 240px;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
position: relative;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
background: #5bc995;
|
||||||
|
height: 100vh;
|
||||||
|
width: 240px;
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0;
|
||||||
|
z-index: 5;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.menu .avatar {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
padding: 2em 0.5em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.menu .avatar img {
|
||||||
|
width: 100px;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 4px solid #ffea92;
|
||||||
|
box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
.menu .avatar h2 {
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.menu ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
padding: 0.5em 1em 0.5em 3em;
|
||||||
|
font-size: 0.95em;
|
||||||
|
font-weight: regular;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: left 15px center;
|
||||||
|
background-size: auto 20px;
|
||||||
|
transition: all 0.15s linear;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.menu ul li.icon-dashboard {
|
||||||
|
background-image: url("http://www.entypo.com/images//gauge.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-customers {
|
||||||
|
background-image: url("http://www.entypo.com/images//briefcase.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-users {
|
||||||
|
background-image: url("http://www.entypo.com/images//users.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-calendar {
|
||||||
|
background-image: url("http://www.entypo.com/images//calendar.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu ul li:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.menu ul li:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 900px) and (min-width: 400px) {
|
||||||
|
body {
|
||||||
|
padding-left: 90px;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
.menu .avatar {
|
||||||
|
padding: 0.5em;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.menu .avatar img {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
.menu .avatar h2 {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 100px;
|
||||||
|
margin: 0;
|
||||||
|
min-width: 200px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: rgba(0, 0, 0, 0.4);
|
||||||
|
transform: translate3d(-20px, -50%, 0);
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu .avatar:hover h2 {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
height: 60px;
|
||||||
|
background-position: center center;
|
||||||
|
background-size: 30px auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.menu ul li span {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
border-radius: 4px;
|
||||||
|
top: 50%;
|
||||||
|
left: 80px;
|
||||||
|
transform: translate3d(-15px, -50%, 0);
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu ul li span:before {
|
||||||
|
content: '';
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: -5px;
|
||||||
|
border-top: 5px solid transparent;
|
||||||
|
border-bottom: 5px solid transparent;
|
||||||
|
border-right: 5px solid rgba(0, 0, 0, 0.5);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.menu ul li:hover span {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 400px) {
|
||||||
|
body {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
width: 230px;
|
||||||
|
box-shadow: 0 0 0 100em rgba(0, 0, 0, 0);
|
||||||
|
transform: translate3d(-230px, 0, 0);
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
position: absolute;
|
||||||
|
left: 100%;
|
||||||
|
background: #5bc995;
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger:before,
|
||||||
|
.menu .smartphone-menu-trigger:after {
|
||||||
|
content: '';
|
||||||
|
width: 50%;
|
||||||
|
height: 2px;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
position: absolute;
|
||||||
|
top: 45%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger:after {
|
||||||
|
top: 55%;
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
padding: 1em 1em 1em 3em;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
.menu:focus {
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
box-shadow: 0 0 0 100em rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
.menu:focus .smartphone-menu-trigger {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
49
hospitalmanagement/templates/hospital/aboutus.html
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load static %}
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
<style media="screen">
|
||||||
|
.jumbotron {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jumbotron h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<title>sumit</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
<br><br>
|
||||||
|
<center>
|
||||||
|
<h3 class='alert alert-success' style="margin-bottom:0px;">About Us !</h3>
|
||||||
|
</center>
|
||||||
|
<div class="jumbotron" style="margin-bottom: 0px;margin-top: 0px;">
|
||||||
|
<h1 class="display-4">Hello</h1>
|
||||||
|
<p class="lead">A service dedicated to Hospital Admin, Doctor and Patient.</p>
|
||||||
|
<hr class="my-4">
|
||||||
|
<p>Explore our Website.</p>
|
||||||
|
<p class="lead">
|
||||||
|
<a class="btn btn-primary btn-lg" href="/" role="button">HOME</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<br><br>
|
||||||
|
<!------ add appointment page by admin(sumit) ---------->
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Book Appointment Details</p>
|
||||||
|
</div>
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field appointmentForm.description class="form-control" placeholder="Description" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field appointmentForm.doctorId class="form-control" placeholder="doctor" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field appointmentForm.patientId class="form-control" placeholder="patient" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Book</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
102
hospitalmanagement/templates/hospital/admin_add_doctor.html
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<br><br><br>
|
||||||
|
<!------ signup page for doctor by admin(sumit) ---------->
|
||||||
|
<form method="post" enctype="multipart/form-data">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Add New Doctor To Hospital</p>
|
||||||
|
</div>
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.first_name class="form-control" placeholder="First Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.username class="form-control" placeholder="Username" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.department class="form-control" placeholder="Department" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.address class="form-control" placeholder="Address" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.last_name class="form-control" placeholder="Last Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.password class="form-control" placeholder="Password" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.mobile class="form-control" placeholder="Mobile" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.profile_pic required="required" class="form-control" placeholder="Profile Picture" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Register</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
{% endblock content %}
|
||||||
104
hospitalmanagement/templates/hospital/admin_add_patient.html
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<br><br><br>
|
||||||
|
<!------ signup page for doctor by admin(sumit) ---------->
|
||||||
|
<form method="post" enctype="multipart/form-data">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Admit Patient To Hospital</p>
|
||||||
|
</div>
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.first_name class="form-control" placeholder="First Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.username class="form-control" placeholder="Username" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.address class="form-control" placeholder="Address" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.symptoms class="form-control" placeholder="Symptoms" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.profile_pic required="required" class="form-control" placeholder="Profile Picture" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.last_name class="form-control" placeholder="Last Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.password class="form-control" placeholder="Password" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.mobile class="form-control" placeholder="Mobile" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.assignedDoctorId class="form-control" placeholder="Doctor" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Admit</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
{% endblock content %}
|
||||||
123
hospitalmanagement/templates/hospital/admin_appointment.html
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
||||||
|
<link href="http://netdna.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css">
|
||||||
|
<style type="text/css">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-blue {
|
||||||
|
background: linear-gradient(45deg, #4099ff, #73b4ff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-green {
|
||||||
|
background: linear-gradient(45deg, #2ed8b6, #59e0c5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-yellow {
|
||||||
|
background: linear-gradient(45deg, #FFB64D, #ffcb80);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-pink {
|
||||||
|
background: linear-gradient(45deg, #FF5370, #ff869a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card {
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
-webkit-transition: all 0.3s ease-in-out;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .card-block {
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card i {
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-xl-4">
|
||||||
|
<div class="card bg-c-blue order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-view-appointment">
|
||||||
|
<h6 class="m-b-20">View Appointment</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-calendar f-left"></i></h2>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-4">
|
||||||
|
<div class="card bg-c-green order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-add-appointment">
|
||||||
|
<h6 class="m-b-20">Book Appointment</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-book-medical f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-4">
|
||||||
|
<div class="card bg-c-yellow order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-approve-appointment">
|
||||||
|
<h6 class="m-b-20">Approve Appointment</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-check-circle f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
<br><br><br><br><br><br><br>
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Appointment Approvals Required</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Doctor Name</th>
|
||||||
|
<th>Patient Name</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Date</th>
|
||||||
|
<th>Approve</th>
|
||||||
|
<th>Reject</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for a in appointments %}
|
||||||
|
<tr>
|
||||||
|
<td> {{a.doctorName}}</td>
|
||||||
|
<td>{{a.patientName}}</td>
|
||||||
|
<td>{{a.description}}</td>
|
||||||
|
<td>{{a.appointmentDate}}</td>
|
||||||
|
<td><a class="btn btn-primary btn-xs" href="{% url 'approve-appointment' a.id %}"><span class="glyphicon glyphicon-ok"></span></a></td>
|
||||||
|
<td><a class="btn btn-danger btn-xs" href="{% url 'reject-appointment' a.id %}"><span class="glyphicon glyphicon-trash"></span></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Doctors   Applied For Registration</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Profile Picture</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Department</th>
|
||||||
|
<th>Approve</th>
|
||||||
|
<th>Reject</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for d in doctors %}
|
||||||
|
<tr>
|
||||||
|
<td> {{d.get_name}}</td>
|
||||||
|
<td> <img src="{% static d.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{d.mobile}}</td>
|
||||||
|
<td>{{d.address}}</td>
|
||||||
|
<td>{{d.department}}</td>
|
||||||
|
<td><a class="btn btn-primary btn-xs" href="{% url 'approve-doctor' d.id %}"><span class="glyphicon glyphicon-ok"></span></a></td>
|
||||||
|
<td><a class="btn btn-danger btn-xs" href="{% url 'reject-doctor' d.id %}"><span class="glyphicon glyphicon-trash"></span></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Patient Wants To Admit</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Profile Picture</th>
|
||||||
|
<th>Symptoms</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Approve</th>
|
||||||
|
<th>Reject</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for p in patients %}
|
||||||
|
<tr>
|
||||||
|
<td> {{p.get_name}}</td>
|
||||||
|
<td> <img src="{% static p.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{p.symptoms}}</td>
|
||||||
|
<td>{{p.mobile}}</td>
|
||||||
|
<td>{{p.address}}</td>
|
||||||
|
<td><a class="btn btn-primary btn-xs" href="{% url 'approve-patient' p.id %}"><span class="glyphicon glyphicon-ok"></span></a></td>
|
||||||
|
<td><a class="btn btn-danger btn-xs" href="{% url 'reject-patient' p.id %}"><span class="glyphicon glyphicon-trash"></span></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
357
hospitalmanagement/templates/hospital/admin_base.html
Normal file
@@ -0,0 +1,357 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load static %}
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="{% static '/style.css' %}">
|
||||||
|
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------
|
||||||
|
Social section
|
||||||
|
-----------------------------------------*/
|
||||||
|
footer {
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
background-color: black;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ftr {
|
||||||
|
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
|
||||||
|
font-size: 23px;
|
||||||
|
width: 60px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
margin: 5px 2px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa:hover {
|
||||||
|
opacity: 0.5;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-facebook {
|
||||||
|
background: #3B5998;
|
||||||
|
color: white;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-whatsapp {
|
||||||
|
background: #25d366;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-twitter {
|
||||||
|
background: #55ACEE;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-instagram {
|
||||||
|
background: #125688;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
|
||||||
|
padding-left: 240px;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
position: relative;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
background: #5bc995;
|
||||||
|
height: 100vh;
|
||||||
|
width: 240px;
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0;
|
||||||
|
z-index: 5;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.menu .avatar {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
padding: 2em 0.5em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.menu .avatar img {
|
||||||
|
width: 100px;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 4px solid #ffea92;
|
||||||
|
box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
.menu .avatar h2 {
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.menu ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
padding: 0.5em 1em 0.5em 3em;
|
||||||
|
font-size: 0.95em;
|
||||||
|
font-weight: regular;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: left 15px center;
|
||||||
|
background-size: auto 20px;
|
||||||
|
transition: all 0.15s linear;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.menu ul li.icon-dashboard {
|
||||||
|
background-image: url("http://www.entypo.com/images//gauge.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-customers {
|
||||||
|
background-image: url("http://www.entypo.com/images//briefcase.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-users {
|
||||||
|
background-image: url("http://www.entypo.com/images//users.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-calendar {
|
||||||
|
background-image: url("http://www.entypo.com/images//calendar.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu ul li:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.menu ul li:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 900px) and (min-width: 400px) {
|
||||||
|
body {
|
||||||
|
padding-left: 90px;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
.menu .avatar {
|
||||||
|
padding: 0.5em;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.menu .avatar img {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
.menu .avatar h2 {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 100px;
|
||||||
|
margin: 0;
|
||||||
|
min-width: 200px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: rgba(0, 0, 0, 0.4);
|
||||||
|
transform: translate3d(-20px, -50%, 0);
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu .avatar:hover h2 {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
height: 60px;
|
||||||
|
background-position: center center;
|
||||||
|
background-size: 30px auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.menu ul li span {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
border-radius: 4px;
|
||||||
|
top: 50%;
|
||||||
|
left: 80px;
|
||||||
|
transform: translate3d(-15px, -50%, 0);
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu ul li span:before {
|
||||||
|
content: '';
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: -5px;
|
||||||
|
border-top: 5px solid transparent;
|
||||||
|
border-bottom: 5px solid transparent;
|
||||||
|
border-right: 5px solid rgba(0, 0, 0, 0.5);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.menu ul li:hover span {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 400px) {
|
||||||
|
body {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
width: 230px;
|
||||||
|
box-shadow: 0 0 0 100em rgba(0, 0, 0, 0);
|
||||||
|
transform: translate3d(-230px, 0, 0);
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
position: absolute;
|
||||||
|
left: 100%;
|
||||||
|
background: #5bc995;
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger:before,
|
||||||
|
.menu .smartphone-menu-trigger:after {
|
||||||
|
content: '';
|
||||||
|
width: 50%;
|
||||||
|
height: 2px;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
position: absolute;
|
||||||
|
top: 45%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger:after {
|
||||||
|
top: 55%;
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
padding: 1em 1em 1em 3em;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
.menu:focus {
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
box-shadow: 0 0 0 100em rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
.menu:focus .smartphone-menu-trigger {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- partial:index.partial.html -->
|
||||||
|
<nav class="menu" tabindex="0">
|
||||||
|
<div class="smartphone-menu-trigger"></div>
|
||||||
|
<header class="avatar">
|
||||||
|
<img src="{% static "images/adminpropic.png" %}" />
|
||||||
|
<br><br>
|
||||||
|
<h6>Admin</h6>
|
||||||
|
<h2>{{request.user.first_name}}</h2>
|
||||||
|
</header>
|
||||||
|
<ul>
|
||||||
|
<li tabindex="0" class="icon-dashboard"> <a style="color:white; text-decoration:none;" href="/admin-dashboard"><span>Dashboard</span></a> </li>
|
||||||
|
<li tabindex="0" class="icon-customers"> <a style="color:white; text-decoration:none;" href="/admin-doctor"><span>Doctor</span></a></li>
|
||||||
|
<li tabindex="0" class="icon-users"> <a style="color:white; text-decoration:none;" href="/admin-patient"><span>Patient</span></a></li>
|
||||||
|
<li tabindex="0" class="icon-calendar"> <a style="color:white; text-decoration:none;" href="/admin-appointment"><span>Appointment</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- nav start -->
|
||||||
|
<div class="bs-example">
|
||||||
|
<nav class="navbar navbar-expand-md navbar-dark fixed-top" style="background:#337AB7;">
|
||||||
|
<a href="/admin-dashboard" class="navbar-brand">HOSPITAL MANAGEMENT</a>
|
||||||
|
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbarCollapse">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse justify-content-between" id="navbarCollapse">
|
||||||
|
<div class="navbar-nav" style=" margin-left: 90%;">
|
||||||
|
|
||||||
|
<a href="/logout" class="nav-item nav-link">Logout</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
<!-- nav end -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<!-- content start-->
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
|
<!-- content end-->
|
||||||
|
|
||||||
|
<br><br><br><br>
|
||||||
|
<footer>
|
||||||
|
<p>
|
||||||
|
<a id="ftr" href="https://facebook.com/sumit.luv/" class="fa fa-facebook"></a>
|
||||||
|
<a id="ftr" href="https://api.whatsapp.com/send?phone=919572181024&text=Hello%20Sumit.%0d%0aHow%20are%20you%20%3f%0d%0aI%20came%20from%20your%20website.&source=&data=#" class="fa fa-whatsapp"></a>
|
||||||
|
<a id="ftr" href="https://instagram.com/sumit.luv" class="fa fa-instagram"></a>
|
||||||
|
<a id="ftr" href="https://twitter.com/sumitkumar1503" class="fa fa-twitter"></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 col-sm-12">
|
||||||
|
<div style="color:#ffffff;" class="wow fadeInUp footer-copyright">
|
||||||
|
<p>Made in India <br>
|
||||||
|
Copyright © 2020 LazyCoder </p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
78
hospitalmanagement/templates/hospital/admin_dashboard.html
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
{%include 'hospital/admin_dashboard_cards.html'%}
|
||||||
|
<br><br><br><br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="panel panel-primary col-md-5" style="margin-left:2%;">
|
||||||
|
<div class="panel-heading" style="text-align:center;">
|
||||||
|
<h6 class="panel-title">Recent Doctors</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Department</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Status</th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for d in doctors %}
|
||||||
|
<tr>
|
||||||
|
<td> {{d.get_name}}</td>
|
||||||
|
<td>{{d.department}}</td>
|
||||||
|
<td>{{d.mobile}}</td>
|
||||||
|
{%if d.status%}
|
||||||
|
<td> <span class="label label-primary">Permanent</span></td>
|
||||||
|
{% else %}
|
||||||
|
<td> <span class="label label-success">On Hold</span></td>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="panel panel-primary col-md-5" style="margin-left:5%;">
|
||||||
|
<div class="panel-heading" style="text-align:center;">
|
||||||
|
<h6 class="panel-title">Recent Patient</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Symptoms</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Status</th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for p in patients %}
|
||||||
|
<tr>
|
||||||
|
<td> {{p.get_name}}</td>
|
||||||
|
<td>{{p.symptoms}}</td>
|
||||||
|
<td>{{p.mobile}}</td>
|
||||||
|
<td>{{p.address}}</td>
|
||||||
|
{%if p.status%}
|
||||||
|
<td> <span class="label label-primary">Admitted</span></td>
|
||||||
|
{% else %}
|
||||||
|
<td> <span class="label label-success">On Hold</span></td>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
188
hospitalmanagement/templates/hospital/admin_dashboard_cards.html
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title></title>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
.market-update-block {
|
||||||
|
padding: 2em 2em;
|
||||||
|
background: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block h3 {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 2.5em;
|
||||||
|
font-family: 'Carrois Gothic', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block h4 {
|
||||||
|
font-size: 1.2em;
|
||||||
|
color: #fff;
|
||||||
|
margin: 0.3em 0em;
|
||||||
|
font-family: 'Carrois Gothic', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block p {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height: 1.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-1 {
|
||||||
|
background: #ff0000;
|
||||||
|
margin-right: 0.8em;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-2 {
|
||||||
|
background: #FC8213;
|
||||||
|
margin-right: 0.8em;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-3 {
|
||||||
|
background: #1355f9;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-1:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-2:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-3:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-user-o {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #68AE00;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-user-md {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #FC8213;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-calendar {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #337AB7;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-left {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="market-updates">
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-1">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{doctorcount}}</h3>
|
||||||
|
<h4>Total Doctor</h4>
|
||||||
|
<p>Approval Required : {{pendingdoctorcount}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-user-md"></i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-2">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{patientcount}}</h3>
|
||||||
|
<h4>Total Patient</h4>
|
||||||
|
<p>Wants to Admit : {{pendingpatientcount}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-user-o"></i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-3">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{appointmentcount}}</h3>
|
||||||
|
<h4>Total Appointment</h4>
|
||||||
|
<p>Approve Appointments :{{pendingappointmentcount}} </p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-calendar"> </i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Discharge Patient</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Symptoms</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Discharge</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for p in patients %}
|
||||||
|
<tr>
|
||||||
|
<td> {{p.get_name}}</td>
|
||||||
|
<td>{{p.symptoms}}</td>
|
||||||
|
<td>{{p.mobile}}</td>
|
||||||
|
<td><a class="btn btn-primary btn-xs" href="{% url 'discharge-patient' p.id %}"><span class="glyphicon glyphicon-log-out"></span></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
135
hospitalmanagement/templates/hospital/admin_doctor.html
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
||||||
|
<link href="http://netdna.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css">
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-blue {
|
||||||
|
background: linear-gradient(45deg, #4099ff, #73b4ff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-green {
|
||||||
|
background: linear-gradient(45deg, #2ed8b6, #59e0c5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-yellow {
|
||||||
|
background: linear-gradient(45deg, #FFB64D, #ffcb80);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-pink {
|
||||||
|
background: linear-gradient(45deg, #FF5370, #ff869a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card {
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
-webkit-transition: all 0.3s ease-in-out;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .card-block {
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card i {
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-xl-3">
|
||||||
|
<div class="card bg-c-blue order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-view-doctor">
|
||||||
|
<h6 class="m-b-20">Doctor Record</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-user-nurse f-left"></i></h2>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-3">
|
||||||
|
<div class="card bg-c-green order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-add-doctor">
|
||||||
|
<h6 class="m-b-20">Register Doctor</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-user-plus f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-3">
|
||||||
|
<div class="card bg-c-yellow order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-approve-doctor">
|
||||||
|
<h6 class="m-b-20">Approve Doctor</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-check-circle f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-3">
|
||||||
|
<div class="card bg-c-pink order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-view-doctor-specialisation">
|
||||||
|
<h6 class="m-b-20">Doctor Specialisation</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-user-md f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
<br><br><br><br><br><br><br>
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load static %}
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<style>
|
||||||
|
.card {
|
||||||
|
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
|
||||||
|
max-width: 300px;
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
font-family: arial;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
color: grey;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
border: none;
|
||||||
|
outline: 0;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 8px;
|
||||||
|
color: white;
|
||||||
|
background-color: #000;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover,
|
||||||
|
a:hover {
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid-container {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: auto auto auto;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid-container">
|
||||||
|
<div class="grid-item">
|
||||||
|
<div class="card">
|
||||||
|
<img src="{% static "images/admin.png" %}" alt="John" style="width:100%">
|
||||||
|
<p class="title">ADMIN</p>
|
||||||
|
<p><button><a href="/adminclick">View</a></button></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid-item">
|
||||||
|
<div class="card">
|
||||||
|
<img src="{% static "images/doctor.png" %}" alt="John" style="width:100%">
|
||||||
|
<p class="title">DOCTOR</p>
|
||||||
|
<p><button><a href="/doctorclick">View</a></button></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid-item">
|
||||||
|
<div class="card">
|
||||||
|
<img src="{% static "images/patient.jpg" %}" alt="John" style="width:100%">
|
||||||
|
<p class="title">PATIENT</p>
|
||||||
|
<p><button><a href="/patientclick">View</a></button></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
137
hospitalmanagement/templates/hospital/admin_patient.html
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
||||||
|
<link href="http://netdna.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css">
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-blue {
|
||||||
|
background: linear-gradient(45deg, #4099ff, #73b4ff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-green {
|
||||||
|
background: linear-gradient(45deg, #2ed8b6, #59e0c5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-yellow {
|
||||||
|
background: linear-gradient(45deg, #FFB64D, #ffcb80);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-pink {
|
||||||
|
background: linear-gradient(45deg, #FF5370, #ff869a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card {
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
-webkit-transition: all 0.3s ease-in-out;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .card-block {
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card i {
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-xl-3">
|
||||||
|
<div class="card bg-c-blue order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-view-patient">
|
||||||
|
<h6 class="m-b-20">Patient Record</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-user-injured f-left"></i></h2>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-3">
|
||||||
|
<div class="card bg-c-green order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-add-patient">
|
||||||
|
<h6 class="m-b-20">Admit Patient</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-user-plus f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-3">
|
||||||
|
<div class="card bg-c-yellow order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-approve-patient">
|
||||||
|
<h6 class="m-b-20">Approve Patient</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-check-circle f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-3">
|
||||||
|
<div class="card bg-c-pink order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/admin-discharge-patient">
|
||||||
|
<h6 class="m-b-20">Discharge Patient</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-eject f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
<br><br><br><br><br><br><br>
|
||||||
|
{% endblock content %}
|
||||||
100
hospitalmanagement/templates/hospital/admin_update_doctor.html
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<br><br>
|
||||||
|
<!------ update page for doctor by admin(sumit) ---------->
|
||||||
|
<form method="post" enctype="multipart/form-data">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Update Doctor Details</p>
|
||||||
|
</div>
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.first_name class="form-control" placeholder="First Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.username class="form-control" placeholder="Username" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.mobile class="form-control" placeholder="Mobile" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.department class="form-control" placeholder="Department" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.last_name class="form-control" placeholder="Last Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.password class="form-control" placeholder="Password" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.address class="form-control" placeholder="Address" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.profile_pic class="form-control" placeholder="Profile Picture" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Update</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
103
hospitalmanagement/templates/hospital/admin_update_patient.html
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<br><br>
|
||||||
|
<!------ update page for doctor by admin(sumit) ---------->
|
||||||
|
<form method="post" enctype="multipart/form-data">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Update Doctor Details</p>
|
||||||
|
</div>
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.first_name class="form-control" placeholder="First Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.username class="form-control" placeholder="Username" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.address class="form-control" placeholder="Address" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.symptoms class="form-control" placeholder="Symptoms" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.profile_pic class="form-control" placeholder="Profile Picture" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.last_name class="form-control" placeholder="Last Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.password class="form-control" placeholder="Password" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.mobile class="form-control" placeholder="Mobile" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field patientForm.assignedDoctorId class="form-control" placeholder="Doctor" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Update</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Appointments</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Doctor Name</th>
|
||||||
|
<th>Patient Name</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Date</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for a in appointments %}
|
||||||
|
<tr>
|
||||||
|
<td> {{a.doctorName}}</td>
|
||||||
|
<td>{{a.patientName}}</td>
|
||||||
|
<td>{{a.description}}</td>
|
||||||
|
<td>{{a.appointmentDate}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
67
hospitalmanagement/templates/hospital/admin_view_doctor.html
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Doctors</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Profile Picture</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Department</th>
|
||||||
|
<th>Update</th>
|
||||||
|
<th>Delete</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for d in doctors %}
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td> {{d.get_name}}</td>
|
||||||
|
<td> <img src="{% static d.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{d.mobile}}</td>
|
||||||
|
<td>{{d.address}}</td>
|
||||||
|
<td>{{d.department}}</td>
|
||||||
|
<td><a class="btn btn-primary btn-xs" href="{% url 'update-doctor' d.id %}"><span class="glyphicon glyphicon-edit"></span></a></td>
|
||||||
|
<td><a class="btn btn-danger btn-xs" href="{% url 'delete-doctor-from-hospital' d.id %}"><span class="glyphicon glyphicon-trash"></span></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Department & Doctors</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Department</th>
|
||||||
|
<th>Doctor Name</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for d in doctors %}
|
||||||
|
<tr>
|
||||||
|
<td>{{d.department}}</td>
|
||||||
|
<td> {{d.get_name}}</td>
|
||||||
|
<td>{{d.mobile}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Patient</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Profile Picture</th>
|
||||||
|
<th>Symptoms</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Update</th>
|
||||||
|
<th>Delete</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for p in patients %}
|
||||||
|
<tr>
|
||||||
|
<td> {{p.get_name}}</td>
|
||||||
|
<td> <img src="{% static p.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{p.symptoms}}</td>
|
||||||
|
<td>{{p.mobile}}</td>
|
||||||
|
<td>{{p.address}}</td>
|
||||||
|
<td><a class="btn btn-primary btn-xs" href="{% url 'update-patient' p.id %}"><span class="glyphicon glyphicon-edit"></span></a></td>
|
||||||
|
<td><a class="btn btn-danger btn-xs" href="{% url 'delete-patient-from-hospital' p.id %}"><span class="glyphicon glyphicon-trash"></span></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
23
hospitalmanagement/templates/hospital/adminclick.html
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{% extends 'hospital/homebase.html' %}
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="jumbotron" style="margin-bottom:0px;">
|
||||||
|
<h1 class="display-4" style="text-align:center;">Hello, Admin</h1>
|
||||||
|
<p class="lead">Welcome to Hospital Management System.</p>
|
||||||
|
<hr class="my-4">
|
||||||
|
<p>You can access various features after Login/SignUp.</p>
|
||||||
|
<p class="lead">
|
||||||
|
<a class="btn btn-primary btn-lg" href="/adminsignup" role="button">SignUp</a>
|
||||||
|
<a class="btn btn-primary btn-lg" href="/adminlogin" role="button">Login</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
103
hospitalmanagement/templates/hospital/adminlogin.html
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
color: #aa082e;
|
||||||
|
background-color: #b6bde7;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<!--- login page for admin by admin(sumit) ---------->
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Admin Login Page</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field form.username class="form-control" placeholder="Username" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field form.password class="form-control" placeholder="Password" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Login</button>
|
||||||
|
<div class="text-center">Do not have account? <a href="adminsignup">Signup here</a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
110
hospitalmanagement/templates/hospital/adminsignup.html
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
color: #aa082e;
|
||||||
|
background-color: #b6bde7;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--- signup page for admin by admin(sumit) ---------->
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Add New Admin To Hospital</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field form.first_name class="form-control" placeholder="First Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field form.username class="form-control" placeholder="Username" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field form.last_name class="form-control" placeholder="Last Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field form.password class="form-control" placeholder="Password" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Submit</button>
|
||||||
|
<div class="text-center">Already have an account? <a href="adminlogin">Login here</a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
41
hospitalmanagement/templates/hospital/contactus.html
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load static %}
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<h3 class='alert alert-success'>Send Us Your Valuable Feedback !</h3>
|
||||||
|
|
||||||
|
<form method="POST">
|
||||||
|
<!-- Very Important csrf Token -->
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="form-group">
|
||||||
|
<p>
|
||||||
|
<h3>{{ form.as_p }}</h3>
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<input type="submit" value="Send Message" class='btn btn-primary btn-lg'>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</center>
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
45
hospitalmanagement/templates/hospital/contactussuccess.html
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load static %}
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
<style media="screen">
|
||||||
|
.jumbotron {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jumbotron h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
<br><br>
|
||||||
|
<div class="jumbotron">
|
||||||
|
<h1 class="display-4">Your message sent successfully !</h1>
|
||||||
|
<p class="lead">We will respond to your feedback soon</p>
|
||||||
|
<hr class="my-4">
|
||||||
|
<p>Check other features of website !</p>
|
||||||
|
<p class="lead">
|
||||||
|
<a class="btn btn-primary btn-lg" href="/" role="button">HOME</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
101
hospitalmanagement/templates/hospital/doctor_appointment.html
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
{% extends 'hospital/doctor_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
<br><br>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
||||||
|
<link href="http://netdna.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css">
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.menu{
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-blue {
|
||||||
|
background: linear-gradient(45deg, #4099ff, #73b4ff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-green {
|
||||||
|
background: linear-gradient(45deg, #2ed8b6, #59e0c5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
-webkit-transition: all 0.3s ease-in-out;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .card-block {
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card i {
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-xl-6">
|
||||||
|
<div class="card bg-c-blue order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/doctor-view-appointment">
|
||||||
|
<h6 class="m-b-20">View Your Appointment</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-calendar f-left"></i></h2>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-6">
|
||||||
|
<div class="card bg-c-green order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/doctor-delete-appointment">
|
||||||
|
<h6 class="m-b-20">Delete Appointment</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-eject f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
<br><br><br><br><br><br><br>
|
||||||
|
{% endblock content %}
|
||||||
342
hospitalmanagement/templates/hospital/doctor_base.html
Normal file
@@ -0,0 +1,342 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load static %}
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------
|
||||||
|
Social section
|
||||||
|
-----------------------------------------*/
|
||||||
|
footer {
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
background-color: black;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ftr {
|
||||||
|
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
|
||||||
|
font-size: 23px;
|
||||||
|
width: 60px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
margin: 5px 2px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa:hover {
|
||||||
|
opacity: 0.5;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-facebook {
|
||||||
|
background: #3B5998;
|
||||||
|
color: white;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-whatsapp {
|
||||||
|
background: #25d366;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-twitter {
|
||||||
|
background: #55ACEE;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-instagram {
|
||||||
|
background: #125688;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
|
||||||
|
padding-left: 240px;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
position: relative;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
background: #5bc995;
|
||||||
|
height: 100vh;
|
||||||
|
width: 240px;
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0;
|
||||||
|
z-index: 5;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.menu .avatar {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
padding: 2em 0.5em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.menu .avatar img {
|
||||||
|
width: 100px;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 4px solid #ffea92;
|
||||||
|
box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
.menu .avatar h2 {
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.menu ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
padding: 0.5em 1em 0.5em 3em;
|
||||||
|
font-size: 0.95em;
|
||||||
|
font-weight: regular;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: left 15px center;
|
||||||
|
background-size: auto 20px;
|
||||||
|
transition: all 0.15s linear;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.menu ul li.icon-dashboard {
|
||||||
|
background-image: url("http://www.entypo.com/images//gauge.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-customers {
|
||||||
|
background-image: url("http://www.entypo.com/images//briefcase.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-users {
|
||||||
|
background-image: url("http://www.entypo.com/images//users.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-calendar {
|
||||||
|
background-image: url("http://www.entypo.com/images//calendar.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu ul li:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.menu ul li:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 900px) and (min-width: 400px) {
|
||||||
|
body {
|
||||||
|
padding-left: 90px;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
.menu .avatar {
|
||||||
|
padding: 0.5em;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.menu .avatar img {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
.menu .avatar h2 {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 100px;
|
||||||
|
margin: 0;
|
||||||
|
min-width: 200px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: rgba(0, 0, 0, 0.4);
|
||||||
|
transform: translate3d(-20px, -50%, 0);
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu .avatar:hover h2 {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
height: 60px;
|
||||||
|
background-position: center center;
|
||||||
|
background-size: 30px auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.menu ul li span {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
border-radius: 4px;
|
||||||
|
top: 50%;
|
||||||
|
left: 80px;
|
||||||
|
transform: translate3d(-15px, -50%, 0);
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu ul li span:before {
|
||||||
|
content: '';
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: -5px;
|
||||||
|
border-top: 5px solid transparent;
|
||||||
|
border-bottom: 5px solid transparent;
|
||||||
|
border-right: 5px solid rgba(0, 0, 0, 0.5);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.menu ul li:hover span {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 400px) {
|
||||||
|
body {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
width: 230px;
|
||||||
|
box-shadow: 0 0 0 100em rgba(0, 0, 0, 0);
|
||||||
|
transform: translate3d(-230px, 0, 0);
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
position: absolute;
|
||||||
|
left: 100%;
|
||||||
|
background: #5bc995;
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger:before,
|
||||||
|
.menu .smartphone-menu-trigger:after {
|
||||||
|
content: '';
|
||||||
|
width: 50%;
|
||||||
|
height: 2px;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
position: absolute;
|
||||||
|
top: 45%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger:after {
|
||||||
|
top: 55%;
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
padding: 1em 1em 1em 3em;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
.menu:focus {
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
box-shadow: 0 0 0 100em rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
.menu:focus .smartphone-menu-trigger {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- partial:index.partial.html -->
|
||||||
|
<nav class="menu" tabindex="0">
|
||||||
|
<div class="smartphone-menu-trigger"></div>
|
||||||
|
<header class="avatar">
|
||||||
|
<img src="{% static doctor.profile_pic.url %}" alt="Profile Pic" />
|
||||||
|
<br><br>
|
||||||
|
<h6>Doctor</h6>
|
||||||
|
<h2>{{request.user.first_name}}</h2>
|
||||||
|
</header>
|
||||||
|
<ul>
|
||||||
|
<li tabindex="0" class="icon-dashboard"> <a style="color:white; text-decoration:none;" href="/doctor-dashboard"><span>Dashboard</span></a> </li>
|
||||||
|
<li tabindex="0" class="icon-users"> <a style="color:white; text-decoration:none;" href="/doctor-patient"><span>Patient</span></a></li>
|
||||||
|
<li tabindex="0" class="icon-calendar"> <a style="color:white; text-decoration:none;" href="/doctor-appointment"><span>Appointments</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<main>
|
||||||
|
<!-- nav start -->
|
||||||
|
<div class="bs-example">
|
||||||
|
<nav class="navbar navbar-expand-md navbar-dark fixed-top" style="background:#337AB7;">
|
||||||
|
<a href="/doctor-dashboard" class="navbar-brand">HOSPITAL MANAGEMENT</a>
|
||||||
|
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbarCollapse">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse justify-content-between" id="navbarCollapse">
|
||||||
|
<div class="navbar-nav" style=" margin-left: 90%;">
|
||||||
|
|
||||||
|
<a href="/logout" class="nav-item nav-link">Logout</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
<!-- nav end -->
|
||||||
|
<br><br>
|
||||||
|
<!-- content start-->
|
||||||
|
{% block content %}
|
||||||
|
{% endblock content %}
|
||||||
|
<!-- content end-->
|
||||||
|
<br><br><br><br><br><br><br>
|
||||||
|
<footer>
|
||||||
|
<p>
|
||||||
|
<a id="ftr" href="https://facebook.com/sumit.luv/" class="fa fa-facebook"></a>
|
||||||
|
<a id="ftr" href="https://api.whatsapp.com/send?phone=919572181024&text=Hello%20Sumit.%0d%0aHow%20are%20you%20%3f%0d%0aI%20came%20from%20your%20website.&source=&data=#" class="fa fa-whatsapp"></a>
|
||||||
|
<a id="ftr" href="https://instagram.com/sumit.luv" class="fa fa-instagram"></a>
|
||||||
|
<a id="ftr" href="https://twitter.com/sumitkumar1503" class="fa fa-twitter"></a>
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 col-sm-12">
|
||||||
|
<div style="color:#ffffff;" class="wow fadeInUp footer-copyright">
|
||||||
|
<p>Made in India <br>
|
||||||
|
Copyright © 2020 LazyCoder </p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</main>
|
||||||
|
<!-- partial -->
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
43
hospitalmanagement/templates/hospital/doctor_dashboard.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{% extends 'hospital/doctor_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
{%include 'hospital/doctor_dashboard_cards.html'%}
|
||||||
|
<br><br><br><br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="panel panel-primary" style="margin-left:15%;">
|
||||||
|
<div class="panel-heading" style="text-align:center;">
|
||||||
|
<h6 class="panel-title">Recent Appointments For You</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Patient Name</th>
|
||||||
|
<th>Picture</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Date</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for a,p in appointments %}
|
||||||
|
<tr>
|
||||||
|
<td>{{a.patientName}}</td>
|
||||||
|
<td> <img src="{% static p.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{a.description}}</td>
|
||||||
|
<td>{{p.mobile}}</td>
|
||||||
|
<td>{{p.address}}</td>
|
||||||
|
<td>{{a.appointmentDate}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,186 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title></title>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
.market-update-block {
|
||||||
|
padding: 2em 2em;
|
||||||
|
background: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block h3 {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 2.5em;
|
||||||
|
font-family: 'Carrois Gothic', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block h4 {
|
||||||
|
font-size: 1.2em;
|
||||||
|
color: #fff;
|
||||||
|
margin: 0.3em 0em;
|
||||||
|
font-family: 'Carrois Gothic', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block p {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height: 1.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-1 {
|
||||||
|
background: #ff0000;
|
||||||
|
margin-right: 0.8em;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-2 {
|
||||||
|
background: #FC8213;
|
||||||
|
margin-right: 0.8em;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-3 {
|
||||||
|
background: #1355f9;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-1:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-2:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-3:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-user-o {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #68AE00;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-check-circle-o {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #FC8213;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-calendar {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #337AB7;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-left {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="market-updates">
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-1">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{appointmentcount}}</h3>
|
||||||
|
<h4>Appointments For You</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-calendar"> </i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-2">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{patientcount}}</h3>
|
||||||
|
<h4>Patient Under You</h4>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-user-o"></i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-3">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{patientdischarged}}</h3>
|
||||||
|
<h4>Your Patient Discharged</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-check-circle-o" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{% extends 'hospital/doctor_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Delete Your Appointments</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Patient Name</th>
|
||||||
|
<th>Picture</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Delete</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for a,p in appointments %}
|
||||||
|
<tr>
|
||||||
|
<td>{{a.patientName}}</td>
|
||||||
|
<td> <img src="{% static p.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{a.description}}</td>
|
||||||
|
<td><a class="btn btn-danger btn-xs" href="{% url 'delete-appointment' a.id %}"><span class="glyphicon glyphicon-trash"></span></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
115
hospitalmanagement/templates/hospital/doctor_patient.html
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
{% extends 'hospital/doctor_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
||||||
|
<link href="http://netdna.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css">
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-blue {
|
||||||
|
background: linear-gradient(45deg, #4099ff, #73b4ff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-green {
|
||||||
|
background: linear-gradient(45deg, #2ed8b6, #59e0c5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-yellow {
|
||||||
|
background: linear-gradient(45deg, #FFB64D, #ffcb80);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-pink {
|
||||||
|
background: linear-gradient(45deg, #FF5370, #ff869a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card {
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
-webkit-transition: all 0.3s ease-in-out;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .card-block {
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card i {
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-xl-6">
|
||||||
|
<div class="card bg-c-blue order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/doctor-view-patient">
|
||||||
|
<h6 class="m-b-20">Your Patient Record</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-user-injured f-left"></i></h2>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-6">
|
||||||
|
<div class="card bg-c-pink order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/doctor-view-discharge-patient">
|
||||||
|
<h6 class="m-b-20">Your Discharged Patient</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-eject f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
<br><br><br><br><br><br><br>
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
{% extends 'hospital/doctor_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Your Appointments</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Patient Name</th>
|
||||||
|
<th>Picture</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Appointment Date</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for a,p in appointments %}
|
||||||
|
<tr>
|
||||||
|
<td>{{a.patientName}}</td>
|
||||||
|
<td> <img src="{% static p.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{a.description}}</td>
|
||||||
|
<td>{{p.mobile}}</td>
|
||||||
|
<td>{{p.address}}</td>
|
||||||
|
<td>{{a.appointmentDate}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
{% extends 'hospital/doctor_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Your Discharged Patient List</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
|
||||||
|
<th>Admit Date</th>
|
||||||
|
<th>Release Date</th>
|
||||||
|
<th>Symptoms</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for p in dischargedpatients %}
|
||||||
|
<tr>
|
||||||
|
<td> {{p.patientName}}</td>
|
||||||
|
<td>{{p.admitDate}}</td>
|
||||||
|
<td>{{p.releaseDate}}</td>
|
||||||
|
<td>{{p.symptoms}}</td>
|
||||||
|
<td>{{p.mobile}}</td>
|
||||||
|
<td>{{p.address}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
{% extends 'hospital/doctor_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<form action="/search" method="get" style="margin-left:70%;" class="form-inline my-2 my-lg-0">
|
||||||
|
<input class="form-control mr-sm-2" type="search" placeholder="Search" name="query" id="query" aria-label="Search">
|
||||||
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
{% if patients %}
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Your Total Patient List</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Profile Picture</th>
|
||||||
|
<th>Symptoms</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for p in patients %}
|
||||||
|
<tr>
|
||||||
|
<td> {{p.get_name}}</td>
|
||||||
|
<td> <img src="{% static p.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{p.symptoms}}</td>
|
||||||
|
<td>{{p.mobile}}</td>
|
||||||
|
<td>{{p.address}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{%else%}
|
||||||
|
<br><br><br>
|
||||||
|
<h4 style="text-align: center;color: red;">No Patient Found !!!</h4>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
.jumbotron {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jumbotron h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="jumbotron" style="margin-top: 0px;
|
||||||
|
margin-bottom: 0px;">
|
||||||
|
<h1 class="display-4">Hello {{request.user.first_name}}</h1>
|
||||||
|
<p class="lead">Your Account is not approved till now <br><br>Our Team is checking your profile <br><br> Soon your Account will be confirmed !!!</p>
|
||||||
|
<hr class="my-4">
|
||||||
|
<p>Check Later</p>
|
||||||
|
<p class="lead">
|
||||||
|
<a class="btn btn-primary btn-lg" href="/logout" role="button">Logout For Now</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
24
hospitalmanagement/templates/hospital/doctorclick.html
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{% extends 'hospital/homebase.html' %}
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="jumbotron" style="margin-bottom:0px;">
|
||||||
|
<h1 class="display-4" style="text-align:center;">Hello, Doctor</h1>
|
||||||
|
<p class="lead">Welcome to Hospital Management System.</p>
|
||||||
|
<hr class="my-4">
|
||||||
|
<p>You can access various features after Login/SignUp.</p>
|
||||||
|
<p class="lead">
|
||||||
|
<a class="btn btn-primary btn-lg" href="/doctorsignup" role="button">Apply</a>
|
||||||
|
<a class="btn btn-primary btn-lg" href="/doctorlogin" role="button">Login</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
104
hospitalmanagement/templates/hospital/doctorlogin.html
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
color: #aa082e;
|
||||||
|
background-color: #b6bde7;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<!--- login page for doctor by admin(sumit) ---------->
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Doctor Login Page</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field form.username class="form-control" placeholder="Username" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field form.password class="form-control" placeholder="Password" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Login</button>
|
||||||
|
<div class="text-center">Do not have account? <a href="doctorsignup">Signup here</a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
122
hospitalmanagement/templates/hospital/doctorsignup.html
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
color: #aa082e;
|
||||||
|
background-color: #b6bde7;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--- signup page for doctor by admin(sumit) ---------->
|
||||||
|
<form method="post" enctype="multipart/form-data">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Register In Hospital</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.first_name class="form-control" placeholder="First Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.username class="form-control" placeholder="Username" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.department class="form-control" placeholder="Department" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.address class="form-control" placeholder="Address" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.last_name class="form-control" placeholder="Last Name" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field userForm.password class="form-control" placeholder="Password" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.mobile class="form-control" placeholder="Mobile" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field doctorForm.profile_pic required="required" class="form-control" placeholder="Profile Picture" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Register</button>
|
||||||
|
<div class="text-center">Already have an account? <a href="doctorlogin">Login here</a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
203
hospitalmanagement/templates/hospital/download_bill.html
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style>
|
||||||
|
@page {
|
||||||
|
size: A4;
|
||||||
|
margin: 1cm;
|
||||||
|
|
||||||
|
@frame footer {
|
||||||
|
-pdf-frame-content: footerContent;
|
||||||
|
bottom: 0cm;
|
||||||
|
margin-left: 9cm;
|
||||||
|
margin-right: 9cm;
|
||||||
|
height: 1cm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: auto;
|
||||||
|
padding: 30px;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, .15);
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 24px;
|
||||||
|
font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table {
|
||||||
|
width: 100%;
|
||||||
|
line-height: inherit;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table td {
|
||||||
|
padding: 5px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr td:nth-child(2) {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.top table td {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.top table td.title {
|
||||||
|
font-size: 45px;
|
||||||
|
line-height: 45px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.information table td {
|
||||||
|
padding-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.heading td {
|
||||||
|
background: #eee;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.details td {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.item td {
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.item.last td {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.total td:nth-child(2) {
|
||||||
|
border-top: 2px solid #eee;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
.invoice-box table tr.top table td {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.information table td {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** RTL **/
|
||||||
|
.rtl {
|
||||||
|
direction: rtl;
|
||||||
|
font-family: Tahoma, 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rtl table {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rtl table tr td:nth-child(2) {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
<div class="invoice-box">
|
||||||
|
<table cellpadding="0" cellspacing="0">
|
||||||
|
<tr class="top">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="title">
|
||||||
|
<h5>Hospital Management</h5>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
|
||||||
|
Admit Date: {{admitDate}}<br>
|
||||||
|
Release Date: {{releaseDate}}<br>
|
||||||
|
Days Spent: {{daySpent}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="information">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Patient Name : {{patientName}}<br>
|
||||||
|
Patient Mobile : {{mobile}}<br>
|
||||||
|
Patient Addres : {{address}}<br>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Doctor Name :<br>
|
||||||
|
{{assignedDoctorName}}<br>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="information">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Disease and Symptoms :<br>
|
||||||
|
          {{symptoms}}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="information">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Charges :<br><br>
|
||||||
|
Room Charge of {{daySpent}} Days : {{roomCharge}}<br>
|
||||||
|
Doctor Fee : {{doctorFee}}<br>
|
||||||
|
Medicine Cost : {{medicineCost}}<br>
|
||||||
|
Other Charge : {{OtherCharge}} <br><br>
|
||||||
|
          Total Rupees : {{total}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
90
hospitalmanagement/templates/hospital/footer.html
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/*---------------------------------------
|
||||||
|
Social section
|
||||||
|
-----------------------------------------*/
|
||||||
|
footer {
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
background-color: black;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
padding: 20px;
|
||||||
|
font-size: 23px;
|
||||||
|
width: 60px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
margin: 5px 2px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa:hover {
|
||||||
|
opacity: 0.5;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-facebook {
|
||||||
|
background: #3B5998;
|
||||||
|
color: white;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-whatsapp {
|
||||||
|
background: #25d366;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-twitter {
|
||||||
|
background: #55ACEE;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-instagram {
|
||||||
|
background: #125688;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="https://facebook.com/sumit.luv/" class="fa fa-facebook"></a>
|
||||||
|
<a href="https://api.whatsapp.com/send?phone=919572181024&text=Hello%20Sumit.%0d%0aHow%20are%20you%20%3f%0d%0aI%20came%20from%20your%20website.&source=&data=#" class="fa fa-whatsapp"></a>
|
||||||
|
<a href="https://instagram.com/sumit.luv" class="fa fa-instagram"></a>
|
||||||
|
<a href="https://twitter.com/sumitkumar1503" class="fa fa-twitter"></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 col-sm-12">
|
||||||
|
<div style="color:#ffffff;" class="wow fadeInUp footer-copyright">
|
||||||
|
<p>Made in India <br>
|
||||||
|
Copyright © 2020 LazyCoder </p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
23
hospitalmanagement/templates/hospital/homebase.html
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{% include "hospital/navbar.html" %}
|
||||||
|
{%block content%}
|
||||||
|
|
||||||
|
{%endblock content%}
|
||||||
|
{% include "hospital/footer.html" %}
|
||||||
|
</body>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</html>
|
||||||
80
hospitalmanagement/templates/hospital/index.html
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
{% extends 'hospital/homebase.html' %}
|
||||||
|
{% load static %}
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style media="screen">
|
||||||
|
.jumbotron {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
background-image: url('{% static "images/bg.jpg" %}');
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jumbotron h5,
|
||||||
|
h3 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.alert {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.glow {
|
||||||
|
font-size: 50px;
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
-webkit-animation: glow 1s ease-in-out infinite alternate;
|
||||||
|
-moz-animation: glow 1s ease-in-out infinite alternate;
|
||||||
|
animation: glow 1s ease-in-out infinite alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes glow {
|
||||||
|
from {
|
||||||
|
text-shadow: 0 0 10px #eeeeee, 0 0 20px #000000, 0 0 30px #000000, 0 0 40px #000000, 0 0 50px #9554b3, 0 0 60px #9554b3, 0 0 70px #9554b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
text-shadow: 0 0 20px #eeeeee, 0 0 30px #ff4da6, 0 0 40px #ff4da6, 0 0 50px #ff4da6, 0 0 60px #ff4da6, 0 0 70px #ff4da6, 0 0 80px #ff4da6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="jumbotron" style="margin-bottom: 0px;margin-top: 0px;">
|
||||||
|
<br>
|
||||||
|
<h5 class="display-3 glow">You’ll Love the Way We Care for You</h5>
|
||||||
|
<br><br><br><br><br>
|
||||||
|
<p>
|
||||||
|
<h3>Emergency ?</h3>
|
||||||
|
|
||||||
|
<p class="lead">
|
||||||
|
<a class="btn btn-primary btn-lg" href="/patientclick" role="button">Take Appointment</a>
|
||||||
|
</p>
|
||||||
|
<br><br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br><br><br><br>
|
||||||
|
|
||||||
|
{% include "hospital/admin_doctor_patient_card.html" %}
|
||||||
|
<br><br><br>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
65
hospitalmanagement/templates/hospital/navbar.html
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load static %}
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
.bs-example {
|
||||||
|
margin: 0px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-brand {
|
||||||
|
font-size: 20px;
|
||||||
|
font-family: sans-serif;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="bs-example">
|
||||||
|
<nav class="navbar navbar-expand-md navbar-dark fixed-top" style="background:#337AB7;">
|
||||||
|
<a href="/" class="navbar-brand">Hospital Management</a>
|
||||||
|
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbarCollapse">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse justify-content-between" id="navbarCollapse">
|
||||||
|
<div class="navbar-nav">
|
||||||
|
|
||||||
|
<a href="/adminclick" class="nav-item nav-link">Admin</a>
|
||||||
|
<a href="/doctorclick" class="nav-item nav-link">Doctor</a>
|
||||||
|
<a href="/patientclick" class="nav-item nav-link">Patient</a>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="navbar-nav">
|
||||||
|
<a href="/aboutus" class="nav-item nav-link">About Us</a>
|
||||||
|
<a href="/contactus" class="nav-item nav-link">Contact Us</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
109
hospitalmanagement/templates/hospital/patient_appointment.html
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
{% extends 'hospital/patient_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
||||||
|
<link href="http://netdna.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css">
|
||||||
|
<style type="text/css">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-blue {
|
||||||
|
background: linear-gradient(45deg, #4099ff, #73b4ff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-green {
|
||||||
|
background: linear-gradient(45deg, #2ed8b6, #59e0c5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-yellow {
|
||||||
|
background: linear-gradient(45deg, #FFB64D, #ffcb80);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-c-pink {
|
||||||
|
background: linear-gradient(45deg, #FF5370, #ff869a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card {
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16);
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
-webkit-transition: all 0.3s ease-in-out;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .card-block {
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card i {
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-xl-6">
|
||||||
|
<div class="card bg-c-blue order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/patient-view-appointment">
|
||||||
|
<h6 class="m-b-20">View Your Appointment</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-calendar f-left"></i></h2>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 col-xl-6">
|
||||||
|
<div class="card bg-c-green order-card">
|
||||||
|
<div class="card-block">
|
||||||
|
<a href="/patient-book-appointment">
|
||||||
|
<h6 class="m-b-20">Book Appointment</h6>
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<h2 class="text-right"><i class="fas fa-book-medical f-left"></i></h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
<br><br><br><br><br><br><br><br>
|
||||||
|
{% endblock content %}
|
||||||
343
hospitalmanagement/templates/hospital/patient_base.html
Normal file
@@ -0,0 +1,343 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
{% load static %}
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>LazyCoder || sumit</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------
|
||||||
|
Social section
|
||||||
|
-----------------------------------------*/
|
||||||
|
footer {
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
background-color: black;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ftr {
|
||||||
|
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
|
||||||
|
font-size: 23px;
|
||||||
|
width: 60px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
margin: 5px 2px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa:hover {
|
||||||
|
opacity: 0.5;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-facebook {
|
||||||
|
background: #3B5998;
|
||||||
|
color: white;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-whatsapp {
|
||||||
|
background: #25d366;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-twitter {
|
||||||
|
background: #55ACEE;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-instagram {
|
||||||
|
background: #125688;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
|
||||||
|
padding-left: 240px;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
position: relative;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
background: #5bc995;
|
||||||
|
height: 100vh;
|
||||||
|
width: 240px;
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0;
|
||||||
|
z-index: 5;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.menu .avatar {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
padding: 2em 0.5em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.menu .avatar img {
|
||||||
|
width: 100px;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 4px solid #ffea92;
|
||||||
|
box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
.menu .avatar h2 {
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.menu ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
padding: 0.5em 1em 0.5em 3em;
|
||||||
|
font-size: 0.95em;
|
||||||
|
font-weight: regular;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: left 15px center;
|
||||||
|
background-size: auto 20px;
|
||||||
|
transition: all 0.15s linear;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.menu ul li.icon-dashboard {
|
||||||
|
background-image: url("http://www.entypo.com/images//gauge.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-customers {
|
||||||
|
background-image: url("http://www.entypo.com/images//briefcase.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-users {
|
||||||
|
background-image: url("http://www.entypo.com/images//users.svg");
|
||||||
|
}
|
||||||
|
.menu ul li.icon-calendar {
|
||||||
|
background-image: url("http://www.entypo.com/images//calendar.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu ul li:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.menu ul li:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 900px) and (min-width: 400px) {
|
||||||
|
body {
|
||||||
|
padding-left: 90px;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
.menu .avatar {
|
||||||
|
padding: 0.5em;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.menu .avatar img {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
.menu .avatar h2 {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 100px;
|
||||||
|
margin: 0;
|
||||||
|
min-width: 200px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: rgba(0, 0, 0, 0.4);
|
||||||
|
transform: translate3d(-20px, -50%, 0);
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu .avatar:hover h2 {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
height: 60px;
|
||||||
|
background-position: center center;
|
||||||
|
background-size: 30px auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.menu ul li span {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
border-radius: 4px;
|
||||||
|
top: 50%;
|
||||||
|
left: 80px;
|
||||||
|
transform: translate3d(-15px, -50%, 0);
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu ul li span:before {
|
||||||
|
content: '';
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: -5px;
|
||||||
|
border-top: 5px solid transparent;
|
||||||
|
border-bottom: 5px solid transparent;
|
||||||
|
border-right: 5px solid rgba(0, 0, 0, 0.5);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.menu ul li:hover span {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 400px) {
|
||||||
|
body {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
width: 230px;
|
||||||
|
box-shadow: 0 0 0 100em rgba(0, 0, 0, 0);
|
||||||
|
transform: translate3d(-230px, 0, 0);
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
position: absolute;
|
||||||
|
left: 100%;
|
||||||
|
background: #5bc995;
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger:before,
|
||||||
|
.menu .smartphone-menu-trigger:after {
|
||||||
|
content: '';
|
||||||
|
width: 50%;
|
||||||
|
height: 2px;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
position: absolute;
|
||||||
|
top: 45%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu .smartphone-menu-trigger:after {
|
||||||
|
top: 55%;
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
}
|
||||||
|
.menu ul li {
|
||||||
|
padding: 1em 1em 1em 3em;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
.menu:focus {
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
box-shadow: 0 0 0 100em rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
.menu:focus .smartphone-menu-trigger {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- partial:index.partial.html -->
|
||||||
|
<nav class="menu" tabindex="0">
|
||||||
|
<div class="smartphone-menu-trigger"></div>
|
||||||
|
<header class="avatar">
|
||||||
|
<img src="{% static patient.profile_pic.url %}" alt="Profile Pic" />
|
||||||
|
<br><br>
|
||||||
|
<h6>Patient</h6>
|
||||||
|
<h2>{{request.user.first_name}}</h2>
|
||||||
|
</header>
|
||||||
|
<ul>
|
||||||
|
<li tabindex="0" class="icon-dashboard"> <a style="color:white; text-decoration:none;" href="/patient-dashboard"><span>Dashboard</span></a> </li>
|
||||||
|
<li tabindex="0" class="icon-calendar"> <a style="color:white; text-decoration:none;" href="/patient-appointment"><span>Appointments</span></a></li>
|
||||||
|
<li tabindex="0" class="icon-users"> <a style="color:white; text-decoration:none;" href="/patient-view-doctor"><span>Doctors</span></a></li>
|
||||||
|
|
||||||
|
<li tabindex="0" class="icon-users"> <a style="color:white; text-decoration:none;" href="/patient-discharge"><span>Discharge</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<main>
|
||||||
|
<!-- nav start -->
|
||||||
|
<div class="bs-example">
|
||||||
|
<nav class="navbar navbar-expand-md navbar-dark fixed-top" style="background:#337AB7;">
|
||||||
|
<a href="/patient-dashboard" class="navbar-brand">HOSPITAL MANAGEMENT</a>
|
||||||
|
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbarCollapse">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse justify-content-between" id="navbarCollapse">
|
||||||
|
<div class="navbar-nav" style=" margin-left: 90%;">
|
||||||
|
|
||||||
|
<a href="/logout" class="nav-item nav-link">Logout</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
<!-- nav end -->
|
||||||
|
<br><br>
|
||||||
|
<!-- content start-->
|
||||||
|
{% block content %}
|
||||||
|
{% endblock content %}
|
||||||
|
<!-- content end-->
|
||||||
|
<br><br><br><br><br><br><br>
|
||||||
|
<footer>
|
||||||
|
<p>
|
||||||
|
<a id="ftr" href="https://facebook.com/sumit.luv/" class="fa fa-facebook"></a>
|
||||||
|
<a id="ftr" href="https://api.whatsapp.com/send?phone=919572181024&text=Hello%20Sumit.%0d%0aHow%20are%20you%20%3f%0d%0aI%20came%20from%20your%20website.&source=&data=#" class="fa fa-whatsapp"></a>
|
||||||
|
<a id="ftr" href="https://instagram.com/sumit.luv" class="fa fa-instagram"></a>
|
||||||
|
<a id="ftr" href="https://twitter.com/sumitkumar1503" class="fa fa-twitter"></a>
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 col-sm-12">
|
||||||
|
<div style="color:#ffffff;" class="wow fadeInUp footer-copyright">
|
||||||
|
<p>Made in India <br>
|
||||||
|
Copyright © 2020 LazyCoder </p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</main>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
{% extends 'hospital/patient_base.html' %}
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
text-align: center;
|
||||||
|
height: 80px;
|
||||||
|
background: -webkit-linear-gradient(left, #0072ff, #8811c5);
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-content {
|
||||||
|
padding: 5%;
|
||||||
|
border: 1px solid #ced4da;
|
||||||
|
margin-bottom: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnSubmit {
|
||||||
|
border: none;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
padding: 1%;
|
||||||
|
width: 20%;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #0062cc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<br><br>
|
||||||
|
{% if message %}
|
||||||
|
<script>
|
||||||
|
var a = "{{message}}";
|
||||||
|
alert(a);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
<!------ add appointment page by patient(sumit) ---------->
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="container register-form">
|
||||||
|
<div class="form">
|
||||||
|
<div class="note">
|
||||||
|
<p>Book Appointment Details</p>
|
||||||
|
</div>
|
||||||
|
<div class="form-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field appointmentForm.description class="form-control" placeholder="Description" %}
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
{% render_field appointmentForm.doctorId class="form-control" placeholder="doctor" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btnSubmit">Book</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
13
hospitalmanagement/templates/hospital/patient_dashboard.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{% extends 'hospital/patient_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
{%include 'hospital/patient_dashboard_cards.html'%}
|
||||||
|
<br><br><br><br>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,239 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title></title>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
.market-update-block {
|
||||||
|
padding: 2em 2em;
|
||||||
|
background: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block h3 {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 1.5em;
|
||||||
|
font-family: 'Carrois Gothic', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block h4 {
|
||||||
|
font-size: 1.2em;
|
||||||
|
color: #fff;
|
||||||
|
margin: 0.3em 0em;
|
||||||
|
font-family: 'Carrois Gothic', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block p {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height: 1.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-1 {
|
||||||
|
background: #ff0000;
|
||||||
|
margin-right: 0.8em;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-2 {
|
||||||
|
background: #4f5905;
|
||||||
|
margin-right: 0.8em;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-3 {
|
||||||
|
background: #1355f9;
|
||||||
|
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-1:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-2:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-block.clr-block-3:hover {
|
||||||
|
background: #3C3C3C;
|
||||||
|
transition: 0.5s all;
|
||||||
|
-webkit-transition: 0.5s all;
|
||||||
|
-moz-transition: 0.5s all;
|
||||||
|
-o-transition: 0.5s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-user-o,
|
||||||
|
i.fa.fa-map-marker {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #68AE00;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-info-circle,
|
||||||
|
i.fa.fa-list-alt {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #FC8213;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.market-update-right i.fa.fa-mobile,
|
||||||
|
i.fa.fa-calendar-o {
|
||||||
|
font-size: 3em;
|
||||||
|
color: #337AB7;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 49px;
|
||||||
|
-webkit-border-radius: 49px;
|
||||||
|
-moz-border-radius: 49px;
|
||||||
|
-o-border-radius: 49px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.market-update-left {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="market-updates">
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-1">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{doctorName}}</h3>
|
||||||
|
<h4>Doctor Name</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-user-o"> </i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-2">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{symptoms}}</h3>
|
||||||
|
<h4>Symptoms</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-info-circle"></i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-3">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{doctorMobile}}</h3>
|
||||||
|
<h4>Doctor Mobile</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-mobile" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="market-updates">
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-1">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{doctorAddress}}</h3>
|
||||||
|
<h4>Doctor Address</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-map-marker"> </i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-2">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{doctorDepartment}}</h3>
|
||||||
|
<h4>Doctor Department</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-list-alt"></i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-gd">
|
||||||
|
<div class="market-update-block clr-block-3">
|
||||||
|
<div class="col-md-8 market-update-left">
|
||||||
|
<h3>{{admitDate}}</h3>
|
||||||
|
<h4>Admit Date</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 market-update-right">
|
||||||
|
<i class="fa fa-calendar-o" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"> </div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
250
hospitalmanagement/templates/hospital/patient_discharge.html
Normal file
@@ -0,0 +1,250 @@
|
|||||||
|
{% extends 'hospital/patient_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>A simple, clean, and responsive HTML invoice template</title>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.invoice-box {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: auto;
|
||||||
|
padding: 30px;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, .15);
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 24px;
|
||||||
|
font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table {
|
||||||
|
width: 100%;
|
||||||
|
line-height: inherit;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table td {
|
||||||
|
padding: 5px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr td:nth-child(2) {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.top table td {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.top table td.title {
|
||||||
|
font-size: 45px;
|
||||||
|
line-height: 45px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.information table td {
|
||||||
|
padding-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.heading td {
|
||||||
|
background: #eee;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.details td {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.item td {
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.item.last td {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.total td:nth-child(2) {
|
||||||
|
border-top: 2px solid #eee;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
.invoice-box table tr.top table td {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.information table td {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** RTL **/
|
||||||
|
.rtl {
|
||||||
|
direction: rtl;
|
||||||
|
font-family: Tahoma, 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rtl table {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rtl table tr td:nth-child(2) {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.download {
|
||||||
|
text-align: center;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
|
||||||
|
{%if is_discharged%}
|
||||||
|
<div class="invoice-box">
|
||||||
|
<table cellpadding="0" cellspacing="0">
|
||||||
|
<tr class="top">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="title">
|
||||||
|
<h1>Hospital Management</h1>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
|
||||||
|
Admit Date: {{admitDate}}<br>
|
||||||
|
Release Date: {{releaseDate}}<br>
|
||||||
|
Days Spent: {{daySpent}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="information">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Patient Name : {{patientName}}<br>
|
||||||
|
Patient Mobile : {{mobile}}<br>
|
||||||
|
Patient Addres : {{address}}<br>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Doctor Name :<br>
|
||||||
|
{{assignedDoctorName}}<br>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="heading">
|
||||||
|
<td>
|
||||||
|
Disease and Symptoms
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="details">
|
||||||
|
<td>
|
||||||
|
{{symptoms}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="heading">
|
||||||
|
<td>
|
||||||
|
Item
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Price
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Room Charge of {{daySpent}} Days
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{roomCharge}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Doctor Fee
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{doctorFee}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Medicine Cost
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{medicineCost}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item last">
|
||||||
|
<td>
|
||||||
|
Other Charge
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{OtherCharge}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="total">
|
||||||
|
<td></td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Total Rupees : {{total}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
<div class="download">
|
||||||
|
<a style="background:red; width:500px;" href="{% url 'download-pdf' patientId %}">Download</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{%else%}
|
||||||
|
<h5 style="text-align:center;">You Are Not Discharged By Hospital !</h5>
|
||||||
|
<h5 style="text-align:center;">Your Treatment Is Going On !</h5><br><br>
|
||||||
|
<h6 style="text-align:center;">When You Will Be Discahrged. You Can Download Invoice.</h6>
|
||||||
|
{%endif%}
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
<br><br><br><br><br><br><br><br>
|
||||||
|
{% endblock content %}
|
||||||
240
hospitalmanagement/templates/hospital/patient_final_bill.html
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>A simple, clean, and responsive HTML invoice template</title>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.invoice-box {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: auto;
|
||||||
|
padding: 30px;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, .15);
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 24px;
|
||||||
|
font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table {
|
||||||
|
width: 100%;
|
||||||
|
line-height: inherit;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table td {
|
||||||
|
padding: 5px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr td:nth-child(2) {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.top table td {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.top table td.title {
|
||||||
|
font-size: 45px;
|
||||||
|
line-height: 45px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.information table td {
|
||||||
|
padding-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.heading td {
|
||||||
|
background: #eee;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.details td {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.item td {
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.item.last td {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.total td:nth-child(2) {
|
||||||
|
border-top: 2px solid #eee;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
.invoice-box table tr.top table td {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.information table td {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** RTL **/
|
||||||
|
.rtl {
|
||||||
|
direction: rtl;
|
||||||
|
font-family: Tahoma, 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rtl table {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rtl table tr td:nth-child(2) {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.download {
|
||||||
|
text-align: center;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
<div class="invoice-box">
|
||||||
|
<table cellpadding="0" cellspacing="0">
|
||||||
|
<tr class="top">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="title">
|
||||||
|
<h1>Hospital Management</h1>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
|
||||||
|
Admit Date: {{admitDate}}<br>
|
||||||
|
Release Date: {{todayDate}}<br>
|
||||||
|
Days Spent: {{day}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="information">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Patient Name : {{name}}<br>
|
||||||
|
Patient Mobile : {{mobile}}<br>
|
||||||
|
Patient Addres : {{address}}<br>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Doctor Name :<br>
|
||||||
|
{{assignedDoctorName}}<br>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="heading">
|
||||||
|
<td>
|
||||||
|
Disease and Symptoms
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="details">
|
||||||
|
<td>
|
||||||
|
{{symptoms}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="heading">
|
||||||
|
<td>
|
||||||
|
Item
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Price
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Room Charge of {{day}} Days
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{roomCharge}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Doctor Fee
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{doctorFee}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Medicine Cost
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{medicineCost}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item last">
|
||||||
|
<td>
|
||||||
|
Other Charge
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{OtherCharge}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="total">
|
||||||
|
<td></td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Total Rupees : {{total}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
<div class="download">
|
||||||
|
<a style="background:red; width:500px;" href="{% url 'download-pdf' patientId %}">Download</a>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
235
hospitalmanagement/templates/hospital/patient_generate_bill.html
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
{% extends 'hospital/admin_base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>A simple, clean, and responsive HTML invoice template</title>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.invoice-box {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: auto;
|
||||||
|
padding: 30px;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, .15);
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 24px;
|
||||||
|
font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table {
|
||||||
|
width: 100%;
|
||||||
|
line-height: inherit;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table td {
|
||||||
|
padding: 5px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr td:nth-child(2) {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.top table td {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.top table td.title {
|
||||||
|
font-size: 45px;
|
||||||
|
line-height: 45px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.information table td {
|
||||||
|
padding-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.heading td {
|
||||||
|
background: #eee;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.details td {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.item td {
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.item.last td {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.total td:nth-child(2) {
|
||||||
|
border-top: 2px solid #eee;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
.invoice-box table tr.top table td {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-box table tr.information table td {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** RTL **/
|
||||||
|
.rtl {
|
||||||
|
direction: rtl;
|
||||||
|
font-family: Tahoma, 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rtl table {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rtl table tr td:nth-child(2) {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<br><br><br>
|
||||||
|
<div class="invoice-box">
|
||||||
|
<table cellpadding="0" cellspacing="0">
|
||||||
|
<tr class="top">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="title">
|
||||||
|
<h1>Hospital Management</h1>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
|
||||||
|
Admit Date: {{admitDate}}<br>
|
||||||
|
Release Date: {{todayDate}}<br>
|
||||||
|
Days Spent: {{day}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="information">
|
||||||
|
<td colspan="2">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Patient Name : {{name}}<br>
|
||||||
|
Patient Mobile : {{mobile}}<br>
|
||||||
|
Patient Addres : {{address}}<br>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Doctor Name :<br>
|
||||||
|
{{assignedDoctorName}}<br>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="heading">
|
||||||
|
<td>
|
||||||
|
Disease and Symptoms
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="details">
|
||||||
|
<td>
|
||||||
|
{{symptoms}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="heading">
|
||||||
|
<td>
|
||||||
|
Item
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
Price
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Room Charge (Per Day)
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<input type="number" name="roomCharge" placeholder="In Rupees" value="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Doctor Fee
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<input type="number" name="doctorFee" placeholder="In Rupees" value="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item">
|
||||||
|
<td>
|
||||||
|
Medicine Cost
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<input type="number" name="medicineCost" placeholder="In Rupees" value="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="item last">
|
||||||
|
<td>
|
||||||
|
Other Charge
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<input type="number" name="OtherCharge" placeholder="In Rupees" value="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr class="total">
|
||||||
|
<td></td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<input type="submit" name="submit" value="Generate Bill">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{% extends 'hospital/patient_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title">Your Appointments</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Doctor Name</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Date</th>
|
||||||
|
<th>Status</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for a in appointments %}
|
||||||
|
<tr>
|
||||||
|
<td> {{a.doctorName}}</td>
|
||||||
|
<td>{{a.description}}</td>
|
||||||
|
<td>{{a.appointmentDate}}</td>
|
||||||
|
{%if a.status%}
|
||||||
|
<td> <span class="label label-primary">Confirmed</span></td>
|
||||||
|
{% else %}
|
||||||
|
<td> <span class="label label-success">Pending</span></td>
|
||||||
|
{% endif %}
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{% extends 'hospital/patient_base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{%load static%}
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
|
||||||
|
|
||||||
|
<style media="screen">
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<!--
|
||||||
|
written By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<form action="/searchdoctor" method="get" style="margin-left:70%;" class="form-inline my-2 my-lg-0">
|
||||||
|
<input class="form-control mr-sm-2" type="search" placeholder="Search" name="query" id="query" aria-label="Search">
|
||||||
|
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
{% if doctors %}
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h6 class="panel-title"> Total Doctor List</h6>
|
||||||
|
</div>
|
||||||
|
<table class="table table-hover" id="dev-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Profile Picture</th>
|
||||||
|
<th>Mobile</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Department</th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for d in doctors %}
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td> {{d.get_name}}</td>
|
||||||
|
<td> <img src="{% static d.profile_pic.url %}" alt="Profile Pic" height="40px" width="40px" /></td>
|
||||||
|
<td>{{d.mobile}}</td>
|
||||||
|
<td>{{d.address}}</td>
|
||||||
|
<td>{{d.department}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{%else%}
|
||||||
|
<br><br><br>
|
||||||
|
<h4 style="text-align: center;color: red;">No Doctor Found !!!</h4>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
developed By : sumit kumar
|
||||||
|
facebook : fb.com/sumit.luv
|
||||||
|
youtube : youtube.com/lazycoders
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||