Professional Documents
Culture Documents
APPENDICES-EHEALTH
APPENDICES-EHEALTH
APPENDIX A.
Relevant Source Code
@extends('layout.master')
@section('content')
<style>
/* Update the styling */
.flex-container {
display: flex;
justify-content: center;
align-items: center;
/* background-color: #f1f1f1; */
padding: 10px;
height: auto;
/* Set height to fill the viewport */}
.flex-item {
/* flex: 1; */
margin: 10px;
display: flex;
justify-content: center;
align-items: center;}
.card {
background: #fff;
padding: 10px;
text-align: center;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
border-radius: 8px;
transition: all 0.3s ease;
display: flex;
flex-direction: column;
justify-content: space-between;
max-width: 600px;
/* Set max width for better readability */}
.card:hover {
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);}
canvas {
width: 100%;
height: 180px;
display: block;
margin: 20px auto;
/* Adjust margin for better centering */}
.card a {
text-decoration: none;
color: #333;
/* Set text color for readability */
font-size: 22px;
font-weight: bold;}
.card-link {
display: block;
padding: 20px;}
@media (max-width: 768px) {
.flex-container {
flex-direction: column;}
.flex-item {
margin: 10px 0;}
.card {
max-width: 100%;
/* Adjust width for smaller screens */}
canvas {
width: 90%;
height: 200px;
/* Adjust height for smaller screens */}
.card a {
font-size: 20px;
/* Adjust font size for smaller screens */}
#notificationContainer {
position: fixed;
top: 20px;
right: 20px;
max-width: 300px;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
border-radius: 5px;
padding: 10px;
display: none;
/* Initially hidden */
z-index: 1000;}
#notificationBox {
/* Add styling for the notification box as needed */
border: 1px solid #ddd;
padding: 15px;
background-color: #f9f9f9;
border-radius: 5px;}
#notificationContent {
display: flex;
align-items: center;}
#notificationIcon {
font-size: 30px;
margin-right: 10px;
color: #1877f2;
/* Facebook blue */}
#notificationMessage {
flex-grow: 1;
color: #333;}
/* Close button styling */
.closeButton {
cursor: pointer;
position: absolute;
top: 5px;
right: 10px;
font-size: 18px;
color: #aaa;}}
@keyframes popUpEffect {
0% {transform: scale(0.8);opacity: 0;}
50% {transform: scale(1);opacity: 1;}
100% { transform: scale(1);opacity: 1;}}
h1 {animation: popUpEffect 1.5s ease-out;
/* 1.5s duration with ease-out timing function */}
</style>
<h1> Dashboard </h1>
<div class="item p-3">
<!-- Individual notification content here -->
<!-- Replace 'notificationImage', 'notificationMessage', and 'notificationTime' with
actual data -->
<div class="row gx-2 justify-content-between align-items-center">
<div class="col-auto">
{{-- <img class="profile-image" src="{{ $notification->image }}" alt="" />
--}}
</div>
<div class="col">
<div class="info">
<div class="desc">
{{-- {{ $notification->message }} --}}
</div>
{{-- <div class="meta">{{ $notification->time }}</div> --}}
</div>
</div>
</div>
{{-- <a class="link-mask" href="{{ $notification->link }}"></a> --}}
</div>
{{-- @endforeach --}}
</div>
<div class="dropdown-menu-footer p-2 text-center">
{{-- <a href="{{ route('consultation.notifications') }}">View all</a> --}}
</div></div></div>
<div class="app-utilities col-auto">
<div class="flex-container">
{{-- <div class="flex-item">
<div class="card">
<a href="{{ route('report') }}">Daily Medicine
<canvas id="medicineChart"></canvas>
</a></div></div> --}}
<div class="flex-item">
<div class="card">
<a href="{{ route('report') }}">Monthly Consumption
<canvas id="medicineSupplyChart"></canvas>
</a>
</div>
</div>
<div class="flex-item">
<div class="card">
<a href="{{ route('inventory') }}">Equipment and Medicine Count
<canvas id="equipmentMedicineChart"></canvas>
</a>
</div>
</div>
</div>
<div class="flex-container">
<div class="flex-item">
<div class="card">
<a href="{{ route('students') }}"><small>Total Student</small> <small
id="studentsLabelCount">
</small>
<canvas id="myDonutChart"></canvas>
</a>
</div>
</div>
<div class="flex-item">
<div class="card">
<a href="{{ route('consultation') }}">
<h3>Diagnosed Consultations</h3>
<canvas id="diagnosedCountChart"></canvas>
</a>
</div>
</div>
@if (Auth::user()->role == 'nurse')
<div class="flex-item">
<div class="card">
<a href="{{ route('user') }}">
<h3>User Roles</h3>
<canvas id="userRoleChart"></canvas>
</a>
</div>
</div>
@endif
</div>
</div>
@stop
@push('js')
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
function toggleNotification() {
var notificationContainer = document.getElementById('notificationContainer');
notificationContainer.style.display = 'block';
// Simulate closing the notification after 5 seconds (adjust as needed)
setTimeout(function() {
hideNotification();
}, 5000);
}
function hideNotification(event) {
var notificationContainer = document.getElementById('notificationContainer');
// Check if the click event happened inside the notification, if not, hide it
if (!event || !notificationContainer.contains(event.target)) {
notificationContainer.style.display = 'none';
}
}
let myDonutChart;
// start for student chart
$(function() {
initialize();
$("#semester").on("change", function() {
initialize();
});
$('#schoolYear').on('change', function() {
initialize();
updateUsedData();
});
updateUsedData();
$('#test').on('click', function() {
$.ajax({
url: "{{ route('two-factor.enable') }}"
})
})
});
function initialize() {
$.ajax({
url: "{{ route('home') }}",
method: "get",
data: {
semester: $("#semester").val(),
schoolyear: $('#schoolYear').val()
},
success: function(response) {
console.log(response); // Log the response to verify data
$('#studentsLabelCount').html(response.students);
updateDonutChart(response.bsit, response.bsa);
},
error: function(xhr, status, error) {
console.error("AJAX Request Error: " + error);
console.log("Status: " + status);
}
});
}
// start student chart
function updateDonutChart(bsitCount, bsaCount) {
let ctx = document.getElementById('myDonutChart').getContext('2d');
if (myDonutChart) {
myDonutChart.destroy(); // Destroy the existing chart instance }
myDonutChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['BSIT', 'BSA'],
datasets: [{
data: [bsitCount, bsaCount],
backgroundColor: [
'#0056ed',
'#00ed2b'
]
}]
},
options: {}
});
}
// end student chart
// start equipment and medicine Chart
function createEquipmentMedicineChart(equipmentCount, medicineCount) {
// Convert values to integers, default to 0 if NaN or undefined
equipmentCount = parseInt(equipmentCount) || 0;
medicineCount = parseInt(medicineCount) || 0;
var ctx = document.getElementById('equipmentMedicineChart').getContext('2d');
var equipmentMedicineChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['Equipment', 'Medicine'],
datasets: [{
label: 'Equipment',
data: [equipmentCount, 0], // Values in respective positions
backgroundColor: '#d01bb8',
borderColor: '#d01bb8',
borderWidth: 1},
{
label: 'Medicine',
data: [0, medicineCount], // Values in respective positions
backgroundColor: '#57b1e6',
borderColor: '#57b1e6',
borderWidth: 1
}]},
options: {
indexAxis: 'y', // Change orientation to vertical
barPercentage: 0.5, // Adjust bar thickness
categoryPercentage: 0.5, // Adjust space between bars
scales: {
x: {
beginAtZero: true
}
}
}
});
}
// Get values from PHP, default to 0 if not set or invalid
var equipmentCount = <?php echo isset($equipment) ? (int) $equipment : 0; ?>;
var medicineCount = <?php echo isset($medicine) ? (int) $medicine : 0; ?>;
createEquipmentMedicineChart(equipmentCount, medicineCount);
// end equipment and medicine Chart
// consultaion
function createDiagnosedCountChart(diagnosedCount, pending,
notDiagnosedCount) {
if (!isNaN(diagnosedCount) && !isNaN(pending) && !
isNaN(notDiagnosedCount)) {
diagnosedCount = parseInt(diagnosedCount);
pending = parseInt(pending);
notDiagnosedCount = parseInt(notDiagnosedCount);
var ctx = document.getElementById('diagnosedCountChart').getContext('2d');
var myBarChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['Diagnosed', 'Pending', 'Not Diagnosed'],
datasets: [{
label: 'Diagnosed',
data: [diagnosedCount, 0, 0], // Values in respective positions
backgroundColor: '#005dff',
borderColor: '#005dff',
borderWidth: 1
},
{
label: 'Pending',
data: [0, pending, 0], // Values in respective positions
backgroundColor: '#0cf6e6',
borderColor: '#0cf6e6',
borderWidth: 1
},
{
label: 'Not Diagnosed',
data: [0, 0, notDiagnosedCount], // Values in respective positions
backgroundColor: '#ff0000',
borderColor: '#ff0000',
borderWidth: 1
}
]
},
options: {
responsive: true,
scales: {
yAxes: [{
ticks: {
beginAtZero: true,
precision: 0
}
}]
},
legend: {
display: true,
labels: {
fontColor: 'black'
}
}
}
});
} else {
console.error('Invalid or undefined values for the chart data.');}}
var diagnosedCount = {{ isset($approvedCount) ? $approvedCount : '0' }};
var pendingCount = {{ isset($pendingCount) ? $pendingCount : '0' }};
var declinedCount = {{ isset($declinedCount) ? $declinedCount : '0' }};
Evaluation Instrument
Republic of the Philippines
Isabela State University
Santiago City, Isabela
Name: ______________________________________________________________
Criteria 1 2 3 4 5
Functionality
1. The system performs the tasks assigned?
2. Shows accurate information and results?
3. The system provides security measure?
4. The system covers all the specified task user and
objectives?
5. The system can authorize users efficiently manage data
within the system (e.g., store, edit, delete)?
6. The system data collection process through surveys,
questionnaires, and other methods user-friendly and
effective?
Efficiency
1. The system operates quickly and efficiently?
2. The system requires less resources.
3. The system Does the Record Management System load
and respond quickly, even with large amounts of data?
4. The system is there any performance issues that hinder
user experience?
5. The system can the system be configured to prioritize
performance for specific tasks or users?
6. The system does the system efficiently utilize resources
without impacting performance?
Usability
1. The system be understood easily?
2. The system is easy to operate?
3. The system is user-friendly?
4. The system visually appealing and user-friendly?
5. The system is user to is easy to navigate?
6. The system has search function within the system to
locate specific data points?
Portability
1. The system requires less efforts to install?
2. The system can use everywhere?
3. The system makes the request faster and easier?
4. The system be learnt easily?
5. The system is adapted well to different screen size and
resolution?
Reliability
1. The system stored data securely and reliably within the
system?
2. The system-generated reports accurate and consistent
over time?
3. The system is there any data integrity issues that need to
be addressed?
4. The system provides clear error messages and when
information is not complete.?
5. The system is not freezing when the user browsing the
internet?
6. The system eHealth Mate meet the needs of its user under
normal operation?
Compatibility
1. The system eHealth Mate can perform its required
operations efficiently while sharing its environment and
information resources with system?
2. The system be easily integrated with existing student
information systems?
3. The system is compatible in major browser (e.g. Google
Chrome, Mozilla Firefox)?
4. The system adapts well to different screen sizes and
resolutions?
5. The system accessed and used on mobile devices (e.g.,
smartphones, tablets)?
6. The system Is eHealth Mate compatible with all major
operating systems (e.g., Windows, macOS, Linux)?
Security
1. The system has Record Management Program to adequate
security measures in place to protect user data and
privacy?
2. The system will only authorize the users granted
appropriate access levels and permissions based on their
roles?
3. The system had data stored securely and encrypted to
prevent unauthorized access?
4. The system had regular backups and recovery procedures
in place?
5. The system be used to identify it’s authorized user
through two-factor authentication for user accounts one is
the user account and the second one is One Time Pin
(OTP)?
Maintainability
1. The system can easily be modified?
2. The system can be tested easily?
3. The system can be analyze easily?
4. Can the system be deployed and configured easily in
different environments?
5. Can the system be easily extended with new features and
functionality?
Evaluators Signature
___________________
APPEDIX C.
Testing Results
Apache JMeter: Load Performance Testing
Start Threa Label Sampl Status Bytes Sent Latenc Connec
Time d /Pages e Time Byte y t Time
Name (ms) s (ms)
17:47:1 Threa Dashboard 746 Succes 1000 353 180 155
6 d s 4
Group
1-1
17:47:1 Threa Student 358 Succes 1001 369 21 0
6 d Information s 7
Group
1-1
17:47:1 Threa Inventory 435 Succes 1001 371 21 0
6 d s 3
Group
1-1
17:47:1 Threa Consultatio 377 Succes 1002 377 22 0
6 d n s 1
Group
1-1
17:47:1 Threa Reports 376 Succes 1001 365 21 0
6 d s 0
Group
1-1
17:47:1 Threa User & 374 Succes 1001 361 20 0
6 d Signatories s 3
Group
1-1
In summary, the load test results indicate successful responses across various
pages of the web application. The "Dashboard," "Student Information," "Inventory,"
"Consultation," "Reports," and "User & Signatories" pages all demonstrated rapid
response times, low latency, and instantaneous connection times. This efficient
performance ensures smooth operation and facilitates tasks such as managing
consultations, supplies, inventory, and reports for the campus nurse. The user-friendly
interface and dependable performance contribute to increased efficiency, reduced stress,
and improved productivity within the healthcare facility.
Lighthouse Tool
User Manual
APPENDIX F.
Documentation
FEASIB
We consulted our Capstone Adviser, Catleen Glo M. Feliciano, MIT, to refine the
objectives of our proposed eHealth Mate system for ISU Santiago Extension. With her
expertise, we ensured our goals matched the institution's needs. Ms. Feliciano's guidance
clarified aspects like system integration, security, and user training, preparing us for
developing a robust health record system. She emphasized continuous improvement and
stakeholder engagement, making our project more effective.
SKILL TESTING
We've completed the task that proves we're the developers of our system.
SYSTEM DEFENSE
After we trained the users, we give them a questionnaire that will evaluate
the system based on their experience while using the system.
IT EXPERT EVALUATION
IT EXPERT EVALUATION
IT EXPERT EVALUATION
IT EXPERT EVALUATION
We asked I.T. experts to evaluate the system using the questionnaire we provided.
DOCUMENT EDITING
We edit the documents to align it to the panelists feedback to correct the content
of our document to align it to the objectives of our research.
FINAL DEFENSE
Certificate of Implementation
APPENDIX H.
Grammarian Certificate
APPENDIX I.
Curriculum Vitae
Nathaniel M. Andoy
Address: Phase 1, EM Pinzon, Purok 5 Brgy. San Fabian Echague,
Isabela
Contact No.: 09380898179
Email: nathanielandoy707@gmail.com
Personal Information:
Gender: Male
Date of Birth: September 18, 2000
Age: 23 years old.
Religion: Mormons
Civil status: Single
Nationality: Filipino
Mother’s Name: Emma M. Leonidas
Father’s Name: Rodolfo B. Andoy
Education:
College Isabela State University Santiago Extension (2020-2024)
NIA, Batal, Santiago City
King A. Tumamao
Address: Quinsay street, purok 5 Divisoria
Santiago City, Isabela
Contact No.: 09269478525
Email: kingtumamao63@gmail.com
Personal Information:
Gender: Male
Date of Birth: May 23 2002
Age: 21years old.
Religion: INC
Civil status: Single
Nationality: Filipino
Mother’s Name: Imelda A. Tumamao
Father’s Name: Juanito A. Tumamao Sr.
Education:
College Isabela State University Santiago Extension (2020-2024)
NIA, Batal, Santiago City
Personal Information:
Gender: Male
Date of Birth: July 05, 2001
Age: 22 years old.
Religion: Iglesia Ni Cristo
Civil status: Single
Nationality: Filipino
Mother’s Name: Gloria F. Alvarez
Father’s Name: Glenn G. Alvarez Sr.
Education:
College Isabela State University Santiago Extension (2020-
2024)
NIA, Batal, Santiago City