Healthwatchh
Healthwatchh
A Capstone Project
Presented to the Faculty of
College of Computer Studies
Laguna State Polytechnic University
San Pablo City Campus
San Pablo City
In Partial Fulfillment
of the Requirements for the Degree
Bachelor of Science in Information Technology
By:
Brual, Aislinn
Estrellado, Jem Jenica V.
Ramos, Jericho C.
Segovia, Lyca P.
January 2024
ii
Date: _____________________
DEDICATION
To those who held our hands when the path felt steep and cheered us
on when the finish line felt distant, we dedicate this journey first to our family,
who encouraged us to finish this project throughout our journey. They inspire
and provide us with strength whenever we’re hopeless and want to give up.
laughter, late nights, and unwavering support that gave us the courage to finish
this project.
track. The trust you placed in us let us step beyond our comfort zone and turn
this project into an opportunity for our newly acquired skills. We appreciate that
you were more than simply a teacher; you were a guide, an encourager, and a
To the San Nicolas Health Workers, you are the heroes on the frontlines,
served as the inspiration for our project, which was our small way of saying
thank you for all of your wonderful service. We hope that this project contributes
Finally, I would like to express our sincere gratitude to Almighty God for
being our guiding force during this journey. Your kindness kept us going while
we were doubting ourselves, and your light showed us how to proceed. Without
your guidance and blessings, we would never have met our goals.
iv
ACKNOWLEDGEMENT
First and foremost, we give thanks and praises to the Almighty Lord for
his many favors during our capstone project, from helping us come up with the
to Mrs. Joanna E. De Torres, our capstone project professor, for sharing her
knowledge with us students and offering support during this capstone project.
adviser, for being our rock and our source of support for every decision we took
on the project. His enthusiasm, genuineness, and drive have greatly inspired
We would like to express our sincere gratitude to the panelists for our
capstone project, led by Mr. Ronnel A. Dela Cruz, as well as to Mrs. Jennelyn
Espinueva, Ms. Joanna E. De Torres, Mr. Joesua R. Manzanero, and Mr. Marco
Jr. N. Del Rosario for their outstanding contributions that helped our capstone
Studies.
support. Finally, we should pat ourselves on the back for persevering through
these doubts and completing this capstone project to benefit the college and
the industry.
v
ABSTRACT
The developers created a health management system for the capstone project
entitled, “The Development of HealthWatch: A Health Management System for
San Nicolas Health Unit”. HealthWatch provides a centralized platform for
patient record management, medical history, patient health status,
consultations, diagnoses, and other clinical and administrative functions within
the San Nicolas Health Unit. The purpose is to revolutionize the manual way
health units manage their processes and be able to identify the prevalent
diseases using a visual map. The project methodology consists of Project
design, the outline of the system; Project Development, the phases of the
development of the project: Project Procedure, the testing and evaluation
methods, and its results where the system is tested using functionality,
compatibility, and evaluated using ISO/IEC 25010 to evaluate the functional
suitability, performance efficiency, usability, reliability, and security. The
developers were able to conclude that objectives that are set are achieved,
functions are working properly, and respondents show satisfaction with a total
mean of 4.36 with an interpretation of “Very Good” from IT Experts and a total
mean of 4.59 with an interpretation of “Excellent” from Non-IT based on the
testing and evaluation results conducted.
vi
TABLE OF CONTENTS
PRELIMINARIES PAGE NUMBER
Title Page ……………………………………………………………………………i
Approval Sheet ……………………………………………………………………..ii
Dedication ………..………………………………………………………………...iii
Acknowledgement…..……………………………………………………………..iv
Abstract ……………………..………………………………………………………v
Table of Contents ……………………………..…………………………………..vi
List of Figures ………………………………………………..…………………...viii
List of Tables ……………………………………………………………..……….xii
APPENDICES
LIST OF FIGURES
of Health Watch
of Health Watch
of Health Watch
of Health Watch
of Health Watch
of Health Watch
in Health Watch
39 - 40 Dashboard of HealthWatch 64
of HealthWatch
of HealthWatch
of HealthWatch
of HealthWatch
of HealthWatch
of HealthWatch
of HealthWatch
of HealthWatch
xi
of HealthWatch
of HealthWatch
71 Reports of HealthWatch 82
72 Settings of HealthWatch 82
xii
LIST OF TABLES
1 Functionality Testing 56
Evaluation Result
of Infants/Babies Page
Non-IT Respondents
IT Expert Respondents
1
CHAPTER I
THE PROJECT AND ITS BACKGROUND
Introduction
and significantly affecting how people interact, live, and work. Technology
immediately, and more. This is also not limited to a single field or industry but
spans various sectors including the healthcare industry. The use of digital
2023). These improvements can be achieved in the healthcare industry with the
results, and any other relevant information. This data is readily accessible to
diagnoses (Bashir, 2016). For healthcare workers, HMSs offer invaluable tools
for clinical decision support. By analyzing trends and identifying potential risks,
these systems can help clinicians provide preventive care and intervene early
management systems are the electronic health record and clinic management
system.
2
medical records. These software programs manage insurance and billing for
can dedicate more time to patient care by using CMSs to improve operational
Project Context
workflow efficiency.
307.7 feet above mean sea level. Its population as determined by the 2020
Census was 7,255. This represented 2.54% of the total population of San
a nurse at San Nicolas Health Unit, the health unit is using a practical manual
system to manage all the files and all the recording processes in the health unit,
such as manual recording and searching of patient paper records like patient
information, medical histories, and many more, and these lead to inaccuracies
terms of record-keeping, as they just keep all the important papers of the
patients in drawers, this resulted in file misplacements because files were not
prevalent diseases.
To address the issues and challenges currently faced by the San Nicolas
and other administrative and clinical functions within the San Nicolas Health
Unit. This will help the San Nicolas Health Unit to be well organized, as they will
developed system. This also provides a visual map that will display color-coded
4
Project Purpose
San Nicolas Health Unit is a developed project that will help the nurse and the
and natality and mortality rates. This data can be used to identify areas where
Patients
The system is also designed to help other system developers. They can
use this program or system for their study, by implementing suggestions and
addressing the system’s limitations, they can also enhance or improve the
system.
5
Project Objectives
General Objective
Specific Objectives
a. Dashboard
b. Patient Menu
c. Consultation Menu
d. Immunization Menu
g. Reports Menu
h. Settings Menu
San Nicolas Health Unit, a web-based application that will give ease to all
paperwork and manual recording processes of the San Nicolas Health Unit.
The system can generate reports every time it is needed and may also be
updated. It contains eight menus such as: (1) Dashboard, which displays the
deaths. There is a bar graph for natality and mortality that allows for a quick and
easy comparison of natality and mortality rates every year. Also has a pie chart
for the total of patients grouped by sex, and a pie chart for the total patients
grouped by age. (2) Patients Menu, where the nurse administrator can search,
view, edit, delete, and add new patient records or information, also can filter
information in terms of sex, id, name, date registered, and actions. (3)
Consultation Menu, where the nurse administrator can also search, view, edit
delete, and add new patient records, and can filter information in terms of sex,
id, name, first visit, recent visit, diagnosis, and actions. The project can also be
used to generate medical history, current symptoms, and any other relevant
details. (4) Immunization of Senior Citizens Menu, which displays the relevant
data of senior citizens and the nurse administrator can view, update, and track
displays the relevant information on infants and newborns. It can also add new
records and search records for infants and newborns. (6) Records of Natality and
Mortality Menu, which displays the summary of all total numbers of births and
deaths that take place within a particular population. (7) User Management
menu, where the admin nurse can add a new user. (8) Reports Menu, which
7
displays a visual map that consists of the patient’s name, address, date
With all the mentioned scope above, the developed project has the
following limitations: Patients who do not currently reside in San Nicolas San
Pablo City Laguna are not covered by the system. The only person who has
access to the full project is the health unit staff and cannot be accessed without
Management System for San Nicolas Health Unit. The conceptual model of the
project served as a guide for the developers to easily identify the requirements
components: the input, process, output, and evaluation. The input component
9
design, and user experience (UX) design. It is essential to have a clear and
NextJS, Tailwind CSS, Flowbite, MySQL, VS Code, Node JS, XAMPP, and
browser.
component is the process. The process deals with the overall process of the
integration and testing, and deployment. Under the first phase, the developers
evaluated the requirements. The second phase is the system design wherein it
Health Unit. The fourth phase is the integration and testing to ensure that the
system works properly. After a series of tests, it will finally come to the
The third component of the conceptual model of the project is the output or the
project itself. This component offers the result of the interaction that
10
transpired between the input and the process. After development, the system
system was tested and evaluated to know if the functions and other capabilities
were working.
refers to the system developed by the developers that streamline the processes
Doctor’s Assessment – refers to the feature that presents the patient's health
Dashboard – refers to the feature that displays the summary of all the patient
records.
Death Rate Menu – refers to the feature of the developed system that can be
medical conditions.
Immunization Sheet Form for Senior Citizens – refers to a page that will
Login Page – refers to a simple way for users to access their health
11
information.
Map – refers to a feature that displays the patient’s name, address, findings,
and diagnosis.
Patient Menu – refers to the feature of the developed system that allows to add
User Management – refers to the feature that allows the user to create a new
CHAPTER II
REVIEW OF RELATED LITERATURE AND STUDIES
This chapter presents the review of literature and studies for the
information.
Related Literature
projects aimed at improving the quality of life of its residents. In 2017, the
barangay completed the construction of a new barangay hall, which now serves
as the center of local governance and community services. The new hall
conference room, and offices for barangay officials and staff. In 2018, the
barangay also completed the construction of a new covered court, which serves
as a venue for sports and other community activities. The covered court has
become a popular gathering place for residents, particularly the youth, who use
community, with a strong sense of pride and identity. Its residents continue to
work together to build a better future for themselves and future generations.The
Health Center in San Nicolas is suffering from the loss of other patient records
and there is not enough storage for paper records, so sometimes it is not known
Health Center
healthcare service delivery. This study aimed to examine the roles of trust and
based on data collected from 769 survey samples. Multigroup analyses were
Australians are born overseas, and one-in-five speak English as their second
Diverse (CALD) populations. These people have varied health needs and face
studies that synthesized these challenges. This study aimed to explore issues
Australia.
Google Scholar, etc.) for original articles published between December 2019
14
and September 2021. A total of 53 articles were selected and analyzed using
diseases and the early stages of the pandemic, based on a review of records
(Vargas, 2022).
clinics are separated into groups based on the types of diseases. Some people
suffer from one or more diseases, and need to choose doctors for each disease
type for their treatments in private hospitals in Sri Lanka. However, there are
still several major issues in private clinic management systems, for which no
effective solution has been found. The existing system's huge problem is poor
coordination between doctors, patients and medical staff. The other problem is
patients face lots of difficulties in maintaining their medical record books for
clinic management system using a prototype model. Finally, to test the function
of this clinic management system with the user to ensure that it works as
and xampp as the webserver. This system is intended to assist the clinic
15
clinic counter and line up to make an appointment. Patients only need to select
the date and doctor available through this system. This can save time and
administrators and doctors to easily search for specific patient data. Besides,
records of these activities are kept in the database. The system can also
generate patient reports. Thus, the patient can refer back to the report in the
CMS, in short, is a HealthTech software tool that helps medical staffs such as
doctors, nurses, and clinic assistants to better manage their clinic, improve
clinic efficiency, streamline clinic operations, make accurate claims for patients,
reduce clinic expenditure and staff manual labor, and provide patients with
quality treatment and care to their patients. UNO CMS is the ideal clinic
One of the main problems captured with the significant ongoing clinical
main objectives of this study are to make this manual clinic process an
automated, time-saving and efficient one, and to add more value to this
significant process of the health sector, with a newly added feature – the
16
diabetic prediction system. This proposed system is highly beneficial for doctors
in the process of updating or retrieving patients’ records. The main focus here
is to automate the diabetic clinic as the first step. This paper presents a clearer
clarification of the objective of this study and the relevance and motivation of
Health Management
organizations. They may also manage their employees and should be aware of
how healthcare laws, technology and regulations affect their work environments
which covers: the health and safety work organization and policy in a company.
The planning process for accident and ill health prevention. The line
the practice of acquiring, analyzing and protecting digital and traditional medical
17
information is handled digitally with the benefit of the internet, server power
that affect health care quality, access, and outcomes, ultimately improving the
broad range of topics including the impact of social, cultural, economic, and
Management System
processes, practices, and resources that guide the enterprise and its
continuous improvement.
18
what we do is look at the organization from a systemic perspective and pick out
the elements that we believe strongly influence what we want that specific
communicate with patients and their families about their health. EMR makes it
Browser
explore content on the World Wide Web. These pieces of content, including
pictures, videos, and web pages, are connected using hyperlinks and classified
According to Marek & Marta (2019), Users can access, manage, and
efficiencies, WBISs are made to make data collection, storage, analysis, and
Database
and retrieve massive amounts of data with efficiency reliably and securely.
Databases are used to store and manage data such as consumer information,
most popular kinds of databases, arranges data into tables that are connected
by relationships.
Relational Database
include its capacity to uphold data integrity, facilitate sophisticated queries and
data analysis, and enable numerous concurrent users to view and alter data.
20
Relational databases can also manage massive amounts of data and are very
scalable. An instance of a relational database is one that divides data into one
or more tables, each of which has a set of rows (also known as records) and
columns. (Also called fields). The common fields in each table, 15 referred to
as keys, are used to construct the relationships between the tables. Because
Development Tools
XAMPP Server
gives programmers access to a full web server environment for creating and
Apache, MySQL, PHP, and Perl. Because the package is available for
systems can use it. XAMPP is particularly helpful for developers who need to
work with PHP and MySQL because it offers a preconfigured environment that
makes it simple to get started with these technologies. The popular tool for
The developers used XAMPP as a local host server and for creating
technology that can make it simple and quick for web developers to build and
Visual Studio
possible for both its internal engineers and anyone else who wants to utilize C#
The developersl used Visual Studio where will organize and structure
and debugging capabilities that make it easier for developers to write high-
NextJS
using the Next.js React framework. This framework has several benefits for
both the development team and the apps created for clients. It is recommended
The developer used NextJS that will be the server and front-end
application. Users may become progressively irritated when websites and apps
take longer than milliseconds to load because they fall short of their
Tailwind CSS
Without leaving your HTML or creating a single line of new CSS, you can use
utility classes to adjust the layout, color, spacing, font, shadows, and more to
method, any modifications you make to CSS could damage your entire site.
The developers used Tailwind CSS to keep everything organized for the
the developer can alter them without being concerned that doing so will ruin
Flowbite
drawers, and more designed using Flowbite components and based on the
tooltips, navbars, modals, and drawers, are all based on the well-liked open-
source component library Flowbite, which enables us to use them to build more
design.
Using the most recent UI/UX development tools from the open-source
community, such as Tailwind CSS and Flowbite, you can rapidly get started
constructing an application for your project with the aid of this admin dashboard.
23
NodeJS
language JavaScript, which is among the most widely used in the world.
The developers used Node.js to run NextJS on our local machine. This
quickly.
XAMPP
gives programmers access to a full web server environment for creating and
Apache, MySQL, PHP, and Perl. Because the package is available for
systems can use it. XAMPP is particularly helpful for developers who need to
work with PHP and MySQL because it offers a pre-configured environment that
makes it simple to get started with these technologies. The popular tool for
XAMPP is strong and adaptable technology that can make it simple and quick
24
MySQL
According to Singer (2020), After Oracle, MySQL was the second most
Related Studies
clinicians and patients to access electronic records easily, which will minimize
manually, and enhance the benefits and profits of the clinic. The system was
designed, implemented, tested, and validated, and it complies with the specified
appointment scheduling. The HealthWatch for San Nicolas Health Center may
this system's conversion of all manual tasks into computerized processes, the
found more quickly, and patient wait times could be reduced before they
26
received treatment.
Like the developers’ developed system, it will benefit the clinic, staff, and
patients. The system will have the features of Electronic Medical Records which
efficiently.
Management System for Medi Ehsan clinic to address problems such as the
patient data. The objectives are to design and develop a system using a
prototype model, test its functionality, and improve clinic management. The
system uses PHP as the programming language and xampp as the webserver.
Patients can easily make appointments and change them, while administrators
and doctors can search for patient data and generate reports. The system
The system was like the developed system because it also has patient
app was designed using Agile methodology with a Mobile-D approach and has
prescriptions, and make cashless payments, while the admin can manage
conducted, and an overall score of 82.7 out of 100 was obtained. The CMAS
app is designed to be easy to use for clinics with limited resources and can help
and invoicing process for patients, including tracking payments and generating
invoices.
files are computerized and stored online for accessibility and portability.
However, the proponents limit the online feature of the system to doctors and
28
staff only. Web access of the patients is not included. The system has a secure
log-in for doctors and staff. Managing appointments is also integrated and
The system was like the developers developed system because both
records.
From the point of view of Islam A., et al (2018), they have designed and
e- prescription. The main objectives of the project are, to design and develop a
inform patients about their tentative waiting time. Though the application is built
especially for an eye hospital, it can be used in any hospital with minimum
customization.
both systems help healthcare providers improve patient care and streamline
administrative tasks.
access the system's features and functions, they must log in with their current
store relevant data like blood pressure, weight, disease, and more from the
patients' visits here. Based on the patient's diagnosis, management can write a
prescription for the patient's specific illness. Utilizing the framework, the center's
administration can undoubtedly recover the patient history with the facility. It
likewise produces a printable and downloadable PDF Report for patient visit
records and infection records. In terms of website features, both systems may
messaging between patients and providers. However, the specific features and
functionality of each system will depend on the vendor and the needs of the
clinic.
Klinika
who are working from different hospitals. Klinika’s innovative system provides
CHAPTER III
METHODOLOGY
Project Design
Fishbone Diagram
Management System for San Nicolas Health Unit. It represents the skeletal
structure of like a fish, the issue is the head, and the causes are at the spine.
The diagram above is used for root cause analysis to identify and show the
The causes are divided into the following categories: Policy, Procedure,
Method, and Measurement. As shown in the diagram the main problems are
and failure to obtain consent can lead to medical errors and substandard care.
The structure above starts with the researchers complying with the
requirements and the proper designing of the website. Each of the major areas
can be further broken down into smaller, more specific tasks. It presents the
for San Nicolas Health Unit. The first set of requirements involved consultation
with the client, gathering, and analysis to conduct a survey, evaluate the data
gathered from the respondents, and identify the possible features and
capabilities on the part of the developers. The second is system design, which
develops project design and verifies system requirements. The third step is the
ISO/IEC 25010 where the evaluation procedure is carried out. Finally, the
deployment of the system to the client consists of the actual demonstration and
Flowchart
Management System for San Nicolas Health Unit, with the help of the diagram
above, this will also support the project team to stay organized, on track, and
Therefore, the process starts when the patient arrives and continues with
workers will make a record in consultation form. Also, if the patient is already
registered, they will record the patient's current health condition. The nurse
34
Medications and prescriptions are provided to the patient by the nurse and the
nurse will give an appointment if the patient needs to have a follow-up session.
Figure 5 shows the flow of the proposed system is shown. The user must
be going to log in first and straight ahead to the homepage of the system. When
patient information in consultation and if the patient is not registered patient, the
user must add the patient record first before going to select form. Additionally,
the records are saved for consultation, dashboard, and reports and nurses give
prescriptions and medicine to the patient. The patient will leave after the
process.
System Main Interface to access the system, the administrator should log in
with his or her username and password. Once logged in, the admin will choose
36
from the following menu displayed in the main interface of the system: The
following menus that the admin can choose are; Dashboard, which displays the
summary of all the patients. Patients Menu, where you can add new patient
records, and where you can view the patient information. Consultation Menu,
which will be used by the patient to generate medical history, current symptoms,
and any other relevant details. Immunization of Senior Citizens Menu, which
displays the relevant data of senior citizens and where you can view, update,
and track immunizations for their patients. Immunization of Infants Menu, which
displays the relevant information on infants. It can also add new records and
search records for infants and newborns. Records of Mortality and Natality data
Menu, which displays the summary of all total numbers of births and deaths that
take place within a particular population. User Management menu, where you
can add a new user. Reports Menu, which displays the essential information
about a patient's health status, diagnosis, treatment, and other relevant details.
Figure 7 shows the dashboard page. The administrator and user can
view the summary of all total of the patients, total consultations, total
Figure 8 shows the patient’s page. The administrator and user can input
the relevant information of the patients. It can search, view, edit, delete, and
add new patient records or information, also can filter information in terms of
Figure 9 shows the consultations page. The administrator and user can
input the relevant medical history of the patients. It can also search, view, edit
delete, and add new patient records, and can filter information in terms of sex,
administrator and user can input and view the relevant details of the senior
and user can input and view the relevant details of the infants. It can also add
Figure 12. Flowchart for Records of Mortality and Natality Data Page
Figure 12 shows the records of mortality and natality data page. The
administrator can input the relevant details of the births and deaths that take
Figure 13 shows the user management page. The admin can search for
registered user records by making use of search bar; can add, update, and
delete users.
Figure 14 shows the reports page. The administrator can view the
relevant details of the patient’s health status. It displays a visual map that
Wireframes
Admin must click the "Sign in" button after entering their password and email
next time they visit the website, they can check the "Remember me" checkbox.
If they forget their password, they can click the "Forgot password?" button to
reset it. If they don't have an account yet, they can click the "Don't have an
This figure shows the dashboard page displays the summary of the total
This figure shows the Patients menu. It consists of different features like
Name, Sex, Date Registered, Actions, Search by name, Sex, Columns, and
This figure shows the Patient Record “Add New” feature. This contains the
following fields: Last Name, Middle Name, Sex, Birth Date, Date Registered,
Father’s Name, Mother’s Name, Email Address, Mobile Number, and other
personal information. This feature allows the admin and users to create a new
a list of options an admin can select from when consulting with a patient. The
44
patient consultation will be displayed on this page and users and nurse can
This figure shows the new consultation record, in which the admin and
user will select the patient's personal information first before knowing the
patient's condition.
This figure shows the medical history form that will be filled by the admin
and users. This includes personal medical history, past surgical history, and
45
date done. This page is not required, admin and users can take the next step.
Figure 22. New Consultation Record “Cont. Medical History” of Health Watch
This figure shows the cont. medical history form that will be filled by the
admin and users. This includes family medical history, past surgical history, and
date done. This page is not required, admin and users can take the next step.
This figure shows social history on the consultations page. This includes
when the patient is smoking, taking alcohol or illicit drugs, and if the patient is
sexually active after that admin and nurse can take the next step.
46
immunocompromised and other immunizations. The admin and users can take
Figure 26. New Consultation Record “Pertinent Findings Per System” of Health Watch
This figure shows pertinent findings per system on the consultation page.
examination. This page also includes if the patient needs to have a diagnosis
and medicine prescriptions. The admin and user can take the next step.
Figure 28. Immunization Sheet Form for Senior Citizens in Health Watch
This figure shows the immunization sheet form for senior citizens. This
interface will show a column containing the Date of assessment, Osca ID No.,
Name, and Complete Address of Senior Citizens. The admin can search here and
This figure shows the immunization sheet form for infants. This interface
will show the personal information of the child like Name, Date of Birth, Name
49
of Parents, etc. The admin can search here and add more records.
This figure shows the Death Rate Menu. It contains the death records of
the people from San Nicolas. The column contains date died, types, category,
This figure shows the user management page contains a search bar,
name, sex, date register, and actions. This feature allows the user to create a
new user record for a patient in the Health Watch system. This contains an
50
email, first name, middle name, last name, and sex. After that, click the submit
record button.
This figure shows the new consultation record for personal information, it
contains name, address, date of birth, and other pertinent identifiers, for certain
This figure shows the system settings. It contains the user profile such as
the user's personal information (Full Name & Sex) and account information
51
(Email Address and password). The admin can also change information or
Figure 34 shows the Use Case Diagram of the nurse administrator. The
nurse administrator of health unit can view and create patient records. They
can view, create and edit patient records and can view the medical histories.
Moreover, the nurse administrator can also set an appointment and reports as
and edit immunization of infants. The nurse administrator can add new users.
Figure 35. Use Case Diagram for Barangay Health Workers User
Figure 35 shows the Use Case Diagram of the barangay health workers
view, create, and edit patient records. They can view and edit immunization of
senior citizen. Moreover, the barangay health workers administrator can also
view and edit records of mortality and natality data as well as can change
Figure 36. Use Case Diagram for Barangay Nutrition Scholars User
Figure 36 shows the Use Case Diagram of the barangay health workers
view, create, and edit patient records. They can view and edit immunization of
infants. Moreover, the barangay health workers administrator can also view and
edit records of mortality and natality data as well as can change credentials like
Project Development
where progress flows steadily toward the conclusion like a waterfall through the
phases of a project. The developers will use this type of development model
aside from every phase being specific and direct to the point, all the stages
presented were easy to understand. Another reason why the developers have
decided to use this waterfall model is that a schedule can be set with deadlines
for each stage of development and a product can proceed through the
Phase 1: Requirements
The developers attended a meeting with the San Nicolas Health Unit’s staff
the goals and requirements for the San Nicolas Health Unit was supported by
Phase 2: Design
Use case diagrams and the wireframe for the web application's user
interface were all used by the developers to create the plan during the design
phase, which enabled the developers to assess the system's hardware and
software requirements.
Phase 3: Implementation
Currently, the designers will create the system's actual source code that
allows XAMPP Server, Visual Studio, Web Browser, NextJS, Tailwind CSS,
Phase 4: Testing
In the 4th stage of the model, the developers performed different testing
Phase 5: Deployment
After the test runs, the administrator, who was properly certified to use
The project used several tests such as functionality testing and browser
compatibility testing and evaluation using ISO 25010 in terms of product quality.
Project Testing
Functionality Testing
The developers performed the testing to ensure that the system meets
its objectives. It also measured the interface, and all its functions are properly
working. This helped the developers to know if the system can be easily
understood and used by the administrator and employees. Testing the system
also helped the developers to know what the system needed to improve.
Path or Failed
The first column of the table indicates which button has been clicked. The
second column Navigation Path shows which page will be displayed after
clicking a specific button. The third column Expected Result determines whether
it proceeds to the navigation path. The action column shows if the action can be
clicked. The Actual Result displays the result or outcome of clicking a given
button. The last column is the status which is either passed or failed. If it is
passed, the Expected Result is displayed in the Actual Result and if it is not,
57
are used to ensure that the developed project can be viewed correctly and also
used to check that the design and layout are consistent through various checks.
the Similar Web (2023), the top three web browsers are Google Chrome,
Browsers
Chrome
Edge
Firefox
developers. The first column of the table consists of Google Chrome, Microsoft
Edge, and Mozilla Firefox which is used for testing. The second column
Expected Result indicates if the browser that has been used is to probable
browser.
58
Project Evaluation
developers used ISO/IEC 25010 to evaluate the system. ISO/IEC 25010 itself
security. The system was evaluated by Ten (10) non–IT respondents, one (1)
nurse, ten (10) I.T Professionals, five (5) BHW Barangay Health Workers, and
Functional suitability - used to test the functions if it does have met the stated
Usability - used to test if the system will be easy to understand the use for the
specified users to achieve the specified goals with effectiveness, efficiency, and
Security - used to test if the user has data access that is appropriate to their
numerical table that contains the scale used to evaluate the system. Likert
scale, a five-point scale used in survey research, where respondents rate their
level of agreement with a statement. Although not synonymous, the scale was
Statistical Treatment
Scale Interpretation
4.51-5.00 Excellent
2.51-3.50 Good
1.51-2.50 Fair
1.00-1.50 Poor
interpreted as "Poor".
60
CHAPTER IV
RESULTS AND DISCUSSION
project description as well as its capabilities and limitations. The chapter also
includes the project testing and evaluation results after the implementation of
the system.
Hardware Requirements
This section shows the hardware requirements used for the development
Software Requirements
• NextJS
• Tailwind CSS
• Flowbite
61
• MySQL
• VS Code
• NodeJS
• XAMPP
• Ngrok
This section discusses the human resource requirements that are needed
configuring features to meet the specific needs of the San Nicolas Health
Unit. The Administrator also generates reports and statistics from the
system, which can be used to track the health status of the population
The users are individuals who enter, verify, correct, analyze, or obtain
information from patient records. All users of the patient record ultimately
patient record.
62
Knowledge Requirements
Project Description
Health Management System for San Nicolas Health Unit” was developed for
Barangay San Nicolas Health Center to improve its efficiency and effectiveness
automate many of the manual tasks that San Nicolas Health Unit currently
perform, such as medical records, medical history, patient’s health status, and
reports.
Project Features
Health Management System for San Nicolas Health Unit. It also includes
Screen Hierarchy
This figure shows a typical sign-in page for the Health Management
System. It is a simple way for users to access their health information. To sign
in, users need to enter their email address and password in the input fields and
click the "Sign in" button. If users want to be automatically signed in the next
time visiting the website, users can check the "Remember me" checkbox. If the
password is forgotten, users can click the "Forgot password?" button to reset
it. If account is not created yet, click the "Don't have an account yet! Sign up"
This figure shows the dashboard page displays the summary of the total
features like Name, Sex, Date Registered, Actions, Search by name, Sex,
Columns, and Add New. This form will display all the patient records.
This figure shows the Patient Record “Add New” feature. This contains
the following fields: Last Name, Middle Name, Sex, Birth Date, Date Registered,
Number, and lastly Member Type. This feature allows the user to create a new
record for a patient in the Health Watch system. To create a new patient record,
66
users simply need to enter the required information in the corresponding fields
and click the Submit Record button. The system will then create a new record
for the patient and redirect the user to the patient's dashboard. This feature
allows the admin and users to create a new record for a patient in the
HealthWatch.
the names of the patients are not displayed on the consultation page, the
The figure shows the geographic information. The nurse can drag the
map to locate the location or search from the address bar. This mapping is for
or condition the patient is now experiencing, such as the start, certainly, and
historyThis figure shows the medical history form that will be filled by the admin
and users. This includes personal medical history, past surgical history, and
date done. This page is not required, admin and users can take the next step.
69
members, which may be useful in determining any possible genetic factors. The
information on every surgery or operating procedure the patient has ever had
This figure shows social history on the consultations page. This includes
when the patient is smoking, taking alcohol or illicit drugs, and if the patient is
sexually active after that admin and nurse can take the next step.
70
history. This may cover children’s vaccinations, booster shots, and any recent
The figure shows if the patient or pedia clients aged 0-24 months old.
The form is required includes the body length head circumference, skinfold
71
thickness, hip, limbs, abdomen waist circumference and middle and upper arm
circumference. After that nurse the nurse can take the next step.
Figure 51. New Consultation Record “Family Planning, Mestrual, and Pregnancy
History” of HealthWatch
This form will show if the patient is female and aged 18 above. The form
duration, pads per, and interval cycle. Also, includes not required information
like, birth control method, if the patient is menopause, pregnancy history, type
respiratory rate, visual activity, and blood type. Physical examination is required
Figure 53. New Consultation Record “Pertinent Findings per System” of HealthWatch
Figure 54. New Consultation Record “Pertinent Findings per System” of HealthWatch
during the examination of each bodily system, including the chest, breast,
lungs, heart, and abdomen, and any recent pertinent findings per system.
74
Figure 55. New Consultation Record “Pertinent Findings per System” of HealthWatch
Inside the immunization sheet form, a button will show the senior citizen
interface. This interface showcases all the immunizations for adults or senior
citizens submitted by the patients. The patient fills up this immunization sheet
to. The admin/user can view the new queue consultation record from
shows the infants/ babies interface. This interface will show the personal
information of the child and the date of registration. It also includes child
protection of birth and status, immunization, nutritional status low birth weight
given iron, and breastfeeding of newborn to 12 months old babies. It can also
This figure shows the Death Rate Menu. This feature can be used to
track the health and growth of Brgy. San Nicolas. It consists of different features
like Type, Category, Sex, Actions, Columns, and Add new. It has edit and delete
This figure shows the New Death Rate. This feature can be used to track
the health and growth of Brgy. San Nicolas. It consists of different features like
This figure shows the user management page contains a search bar,
name, sex, date register, and actions. This feature allows the user to create a
new user record in the Health Watch system. This contains an email, first name,
middle name, last name, and sex. After that, click the submit record button.
enter email, first name, last name, middle name, and sex. The password is
The figure shows the reports of the developed system. The page has
diagnosis like essentially normal and cough. The nurse or users can search the
name of the patient that have diagnosis. Also, there is an option date started
This figure shows the setting of system. In the setting admin and user
can change their personal information and account information like email and
• The project can generate medical history, current symptoms, and other
relevant details.
• The project can display the relevant data on seniors, relevant information
on infants and newborns, and the summary of all total numbers of births
and deaths.
• The only person with access to the full project is the Health Center Staff
in San Nicolas.
professionals.
Project Testing
stated functions and meets its objectives. It tests each feature of the system by
providing appropriate input and verifying the output against the functional
Proceed to Show
Rember me Remember
Remember Click Remember PASSED
Button me Page
me Page me Page
Proceed to
Forgot Forgot Show Forgot
Forgot
Password Password Click Password PASSED
Password
Button Page Page
Page
Table 4 shows the Functionality Testing in Login Page. The first column
shows all the buttons on Login Page. Each button has its task to perform
according to its function. All the buttons successfully executed its intended
actions. Therefore, the results of the testing of each button are passed.
85
first column shows all the Page. Each button has its task to perform according
to its function. All the buttons successfully executed its intended actions.
Total Patients
Proceed to Show Patients
View all Patients Page Click PASSED
Patients Page Page
Button
Total
Proceed to Show
Consultations Consultations
Consultations Click Consultations PASSED
View all Page
Page Page
Button
Total
Proceed to Show
Immunizations Immunizations
Immunizations Click Immunizations PASSED
View all Page
Page Page
Button
column shows all the Page. Each button has its task to perform according to its
function. All the buttons successfully executed its intended actions. Therefore,
column shows all the Page. Each button has its task to perform according to its
function. All the buttons successfully executed its intended actions. Therefore,
Proceed to Show
Consultations
Sex Button Consultations Click Consultations PASSED
Page
Page Page
Proceed to Show
Columns Consultations
Consultations Click Consultations PASSED
Button Page
Page Page
Proceed to
New Show New
Add New New
Consultation Click Consultation PASSED
Button Consultation
Record Page Record Page
Record Page
Proceed to
New Show New
Patient Name New
Consultation Click Consultation PASSED
Button Consultation
Record Page Record Page
Record Page
Proceed to
New Show New
Member Type New
Consultation Click Consultation PASSED
Button Consultation
Record Page Record Page
Record Page
Proceed to
New Show New
Next Step New
Consultation Click Consultation PASSED
Button Consultation
Record Page Record Page
Record Page
Proceed to Show
Consultations
View Button Consultations Click Consultations PASSED
Page
Page Page
Proceed to Show
Consultations
Edit Button Consultations Click Consultations PASSED
Page
Page Page
Proceed to Show
Consultations
Delete Button Consultations Click Consultations PASSED
Page
Page Page
88
column shows all the Page. Each button has its task to perform according to its
function. All the buttons successfully executed its intended actions. Therefore,
Proceed to Show
Immunizations
Immunizations Immunizations
Record Button of Senior Click PASSED
of Senior of Senior
Citizen Page
Citizen Page Citizen Page
Proceed to Show
Immunizations
Calendar Immunizations Immunizations
of Senior Click PASSED
Button of Senior of Senior
Citizen Page
Citizen Page Citizen Page
Proceed to Show
Immunizations
Immunizations Immunizations
Save Button of Senior Click PASSED
of Senior of Senior
Citizen Page
Citizen Page Citizen Page
Proceed to Show
Immunizations
Immunizations Immunizations
Delete Button of Senior Click PASSED
of Senior of Senior
Citizen Page
Citizen Page Citizen Page
Citizen Page. The first column shows all the Page. Each button has its task to
perform according to its function. All the buttons successfully executed its
intended actions. Therefore, the results of the testing of each button are
passed.
89
Proceed to Show
Immunization
Immunization Immunization
of
Record Button of Click of PASSED
Infants/Babies
Infants/Babies Infants/Babies
Page
Page Page
Proceed to Show
Immunization
Immunization Immunization
of
Status Button of Click of PASSED
Infants/Babies
Infants/Babies Infants/Babies
Page
Page Page
Proceed to Show
Immunization
Immunization Immunization
Calendar of
of Click of PASSED
Button Infants/Babies
Infants/Babies Infants/Babies
Page
Page Page
Proceed to Show
Immunization
Immunization Immunization
of
Save Button of Click of PASSED
Infants/Babies
Infants/Babies Infants/Babies
Page
Page Page
Proceed to Show
Immunization
Immunization Immunization
of
Delete Button of Click of PASSED
Infants/Babies
Infants/Babies Infants/Babies
Page
Page Page
Infants/Babies Page. The first column shows all the Page. Each button has its
task to perform according to its function. All the buttons successfully executed
its intended actions. Therefore, the results of the testing of each button are
passed.
90
Proceed to
Death Rate Show Death
Sex Button Death Rate Click PASSED
Page Rate Page
Page
Proceed to
Columns Death Rate Show Death
Death Rate Click PASSED
Button Page Rate Page
Page
Proceed to
Add New Death Rate Show Death
Death Rate Click PASSED
Button Page Rate Page
Page
Proceed to
Death Rate Show Death
View Button Death Rate Click PASSED
Page Rate Page
Page
Proceed to
Death Rate Show Death
Edit Button Death Rate Click PASSED
Page Rate Page
Page
Proceed to
Death Rate Show Death
Delete Button Death Rate Click PASSED
Page Rate Page
Page
Proceed to
Death Rate Show Death
Page Button Death Rate Click PASSED
Page Rate Page
Page
Proceed to
Submit Death Rate Show Death
Death Rate Click PASSED
Record Button Page Rate Page
Page
Table 11 shows the Functionality Testing in Death Rate Page. The first
column shows all the Page. Each button has its task to perform according to its
function. All the buttons successfully executed its intended actions. Therefore,
Proceed to
User Show User
User
Search Button Management Click Management PASSED
Management
Page Page
Page
Proceed to
User Show User
User
Sex Button Management Click Management PASSED
Management
Page Page
Page
Proceed to
User Show User
Columns User
Management Click Management PASSED
Button Management
Page Page
Page
Proceed to
User Show User
User
View Button Management Click Management PASSED
Management
Page Page
Page
Proceed to
User Show User
User
Edit Button Management Click Management PASSED
Management
Page Page
Page
Proceed to
User Show User
User
Delete Button Management Click Management PASSED
Management
Page Page
Page
Proceed to
User Show User
User
Page Button Management Click Management PASSED
Management
Page Page
Page
Proceed to
User Show User
User
Submit Button Management Click Management PASSED
Management
Page Page
Page
The first column shows all the Page. Each button has its task to perform
according to its function. All the buttons successfully executed its intended
actions. Therefore, the results of the testing of each button are passed.
93
column shows all the Page. Each button has its task to perform according to its
function. All the buttons successfully executed its intended actions. Therefore,
Save
Proceed to Show Settings
Changes Settings Page Click PASSED
Settings Page Page
Button
column shows all the Page. Each button has its task to perform according to its
function. All the buttons successfully executed its intended actions. Therefore,
Project Evaluation
Table 16. shows the results of the evaluation of the non-IT respondents.
rating of 4.41 from non-IT respondents. This means that some of the non-IT
respondents agreed that the developed project is functional as it has been rated
as Very Good, and able to provide the specific needs and requirements of the
rating of 4.57 from non-IT respondents. This means that the non-IT respondents
from the non-IT respondents. This means that the non-IT respondents agreed
from the non-IT respondents. This means that the non-IT respondents agreed
that the developed project performs consistently and reliably under normal
operation.
96
from the non-IT respondents. This means that the non-IT respondents generally
agree that the developed project can protect sensitive data and ensure that
Overall, the developed project obtained a rating of 4.59 from the non-IT
rating of 4.35 from non-IT respondents. This means that some of the non-IT
respondents agreed that the developed project is functional as it has been rated
as Very Good, and able to provide the specific needs and requirements of the
rating of 4.27 from non-IT respondents. This means that the non-IT respondents
the non-IT respondents. This means that the non-IT respondents agreed that the
from the non-IT respondents. This means that the non-IT respondents agreed
that the developed project performs consistently and reliably under normal
operation.
from the non-IT respondents. This means that the non-IT respondents generally
agree that the developed project can protect sensitive data and ensure that
Overall, the developed project obtained a rating of 4.36 from the non-IT
respondents and was interpreted as “Very Good”. This means that non-IT
CHAPTER V
SUMMARY OF FINDINGS, CONCLUSIONS, AND RECOMMENDATIONS
the system.
Summary of Findings
proved:
and effectiveness of patient care at the San Nicolas Health Unit. The system
has also improved the health unit's ability to track patient health information and
identify trends. The health unit's staff has been positive about the new system
Based on the findings of the evaluation processes that were carried out,
both Non-IT and IT experts expressed satisfaction and approval with the project
that was developed. In the evaluation conducted using ISO/IEC 25010, the
system gained a total mean score of 4.36 with an interpretation of “Very Good”
from Non-IT.
efficient, reliable, and secure. It also meets the functional needs of the users.
99
Conclusions
Management System for San Nicolas Health Unit, these are the conclusions
history, and medical history. Clinicians can prevent mistakes and make
better judgments about patient care with the use of this information.
total score of “4.34” (Very Good) from the IT experts using ISO/IEC
25010.
Recommendations
nurse and other barangay health workers in the San Nicolas Health Unit. On
the system.
1. Add a feature that allows patients to view their medical records online.
2. To enable better planning of the health unit workers and to minimize the
4. The immunization table is too long and shows too much information, just
display only the most important info then add a view more button for
to data security, it must have additional security to make sure that the
7. Kindly put the doctor’s name or nurse on duty and from the reports tab
kindly indicate the PDF documents in order for the patient to have a hard
Bibliography
https://www.sciencedirect.com/science/article/pii/S0747563221003496?casa_
token=aCgRtCGPUuEAAAAA:rBN_rEFD7dqHgMnyozinfLT5D_LAdKFfV0Dt_
EHHbo3GGl6xnhDq6P3CVjQHYf32Q7JLPzVlbu8
https://bmcpublichealth.biomedcentral.com/articles/10.1186/s12889-022-
13256-z
http://ir.kdu.ac.lk/handle/345/5188
https://publisher.uthm.edu.my/periodicals/index.php/aitcs/article/view/2209
software
careers/what-is-healthcare-management/
https://www.hsa.ie/eng/topics/managing_health_and_safety/safety_and_healt
h_management_systems/
management-definitions-and-examples.html
health-management/301/overview
basics/
support.com/management_system.html
Liu, K., & Tao, D. (2022). The roles of trust, personalization, loss of privacy, and
https://www.sciencedirect.com/science/article/pii/S0747563221003496?casa_
token=aCgRtCGPUuEAAAAA:rBN_rEFD7dqHgMnyozinfLT5D_LAdKFfV0Dt_
EHHbo3GGl6xnhDq6P3CVjQHYf32Q7JLPzVlbu8
https://bmcpublichealth.biomedcentral.com/articles/10.1186/s12889-022-
13256-z
103
http://ir.kdu.ac.lk/handle/345/5188
https://publisher.uthm.edu.my/periodicals/index.php/aitcs/article/view/2209
system-software
104
Appendices
105
Appendix A
Gantt Chart
106
GANTT CHART
ACTIVITY MAY (2023) JUNE (2023) JULY (2023) AUGUST (2023)
WEEK WEEK WEEK WEEK
1 2 3 4 5 1 2 3 4 1 2 3 4 1 2 3 4 5
Requirements
Design
Implementation
or system
development
Projecting
Testing
Documentation
Legend
Segovia, Lyca
Ramos, Jericho
Brual, Aislinn
Estrellado, Jem Jenica
108
Appendix B
Testing and Evaluation Instrument
109
110
Appendix C
Pictures Taken During Testing and Evaluation
111
Functionality Sustainability
112
Performance Efficiency
113
Usability
114
Reliability
115
Security
116
117
Appendix D
IT Expert’s Profile
119
120
121
122
123
124
125
126
127
Appendix E
Evaluation Result Matrix
128
Appendix E
User’s Manual
130
5 – Select the calendar menu for the senior citizens date information.
5 – Select the calendar menu for the infants/babies date information and
6 – Select the calendar menu for the infants/babies date information about low
7 – Select the calendar menu for the infants/babies date records about
immunization.
144
9 – Select the calendar menu for the infants/babies date information, and
2 – Click columns.
3 – Select sex.
6 – Click to cancel.
4 – Click to cancel.
5 - Click the location pin to display the name, address, date consulted, findings,
and diagnosis.
Appendix G
Source Code
150
placeholder="[email protected]" Consultation
onChange={(e) => import {
setCredentials((prev) => ({ Button,
...prev, Chip,
email: e.target.value, Dropdown,
})) DropdownItem,
} DropdownMenu,
value={credentials.email} DropdownSection,
required DropdownTrigger,
/> Input,
<Input Pagination,
type="password" Selection,
label="Your password" SortDescriptor,
labelPlacement="outside" Spinner,
placeholder="••••••••" Table,
onChange={(e) => TableBody,
setCredentials((prev) => ({ TableCell,
...prev, TableColumn,
password: e.target.value, TableHeader,
})) TableRow,
} User,
value={credentials.password} useDisclosure,
required import { useToast } from
/> '@/components/providers/ToastProvider'
<div className="flex items-center ;
justify-between"> import ViewConsultations from
<Checkbox '@/components/reusables/Modals/Consu
size="sm">Remember me</Checkbox> ltations/ViewConsultations';
<Link href="/auth/forgot- const COLUMNS: Column[] = [
password" size="sm"> { name: 'ID', uid: 'id', sortable: false },
Forgot password? { name: 'NAME', uid: 'name', sortable:
</Link> true },
</div> { name: 'SEX', uid: 'sex', sortable: false },
<Button { name: 'FIRST VISIT', uid: 'firstVisit',
type="submit" sortable: true },
color="primary" { name: 'RECENT VISIT', uid:
radius="sm" 'dateEncountered', sortable: true },
isLoading={loading} { name: 'DIAGNOSIS', uid: 'diagnosis',
disabled={loading} sortable: false },
fullWidth { name: 'ACTIONS', uid: 'actions',
> sortable: false },
Sign in ];
</Button> type ColumnType = (typeof
</form> COLUMNS)[number]['uid'];
</div>
</div> const INITIAL_VISIBLE_COLUMNS:
</div> ColumnType[] = [
</main> 'name',
); 'dateEncountered',
} 'diagnosis',
'actions',
152
Dashboard 'Nov',
import { Link } from '@nextui-org/react'; 'Dec',
import { ];
LuActivity, export default function Dashboard() {
LuArrowDown, const { data: dashboardData } =
LuArrowUp, trpc.dashboard.stats.useQuery();
LuClipboard, const { data: dashboardGraph } =
LuFrown, trpc.dashboard.graphs.useQuery();
LuPill,
} from 'react-icons/lu'; return (
<MainLayout>
import cn from 'classnames'; <h2 className="text-medium font-
semibold mb-4">Last 30 days</h2>
import { <div className="grid grid-cols-1
Chart as ChartJS, sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-4">
ArcElement, <div className="rounded-lg
Tooltip, overflow-hidden bg-white dark:border
Legend, shadow dark:bg-inherit dark:border-gray-
CategoryScale, 600">
LinearScale, <div className="px-5 py-4">
BarElement, <div className="grid grid-cols-
Title, [auto_1fr] gap-4">
} from 'chart.js'; <span className="rounded-lg bg-
slate-500 w-12 h-12 grid justify-center
import { Pie, Bar } from 'react-chartjs-2'; items-center text-white text-xl">
<LuActivity />
ChartJS.register( </span>
ArcElement, <div>
Tooltip, <h3 className="text-gray-400
Legend, font-medium text-sm">
CategoryScale, Total Patients
LinearScale, </h3>
BarElement, <div className="flex items-end
Title, gap-2">
); <p className="text-2xl font-
bold leading-tight">
import MainLayout from
'@/components/layouts/MainLayout'; {dashboardData?.patient_current ?? 0}
import { trpc } from '@/utils/trpc'; </p>
<div
const labels = [ className={cn({
'Jan', 'flex gap-1': true,
'Feb', 'text-green-400':
'Mar',
'Apr', (dashboardData?.patient_current ?? 0) >=
'May',
'Jun', (dashboardData?.patient_previous ?? 0),
'Jul', 'text-red-400':
'Aug',
'Sep', (dashboardData?.patient_current ?? 0) <
'Oct',
153
} },
>; ulcer: {
label: 'Peptic Ulcer',
export const ILLNESS: Illness = { returnType: true,
allergy: { },
label: 'Allergy', pneumonia: {
placeholder: 'Please specify', label: 'Pneumonia',
returnType: '', returnType: true,
}, },
asthma: { thyroid: {
label: 'Asthma', label: 'Thyroid Disease',
returnType: true, returnType: true,
}, },
cancer: { ptb: {
label: 'Cancer', label: 'PTB',
placeholder: 'Please specify', placeholder: 'Please specify',
returnType: '', returnType: '',
}, },
cerebrovascular: { etb: {
label: 'Cerebrovascular Disease', label: 'Extrapulmonary Tuberculosis',
returnType: true, placeholder: 'Please specify',
}, returnType: '',
coronary_artery: { },
label: 'Coronary Artery Disease', uti: {
returnType: true, label: 'Urinary Tract Infection',
}, returnType: true,
diabetes: { },
label: 'Diabetes Mellitus', mental_illness: {
returnType: true, label: 'Mental Illness',
}, returnType: true,
emphysema: { },
label: 'Emphysema', others: {
returnType: true, label: 'Others',
}, placeholder: 'Please specify',
epilepsy: { returnType: '',
label: 'Epilepsy / Seizure Disorder', },
returnType: true, };
},
hepatitis: { export default function
label: 'Hepatitis', MedicalHistory(props:
placeholder: 'Please specify', MedicalHistoryProps) {
returnType: '', const { data, setter } = useConsultation();
}, selection: {
hyperlipedemia: { ...(prev.selection ?? {}),
label: 'Hyperlipedemia', [props.type]: {
returnType: true, ...(prev.selection?.[props.type] ??
}, {}),
hypertension: { illnesses: {
label: 'Hypertension', ...values.reduce((a, b) => {
placeholder: 'Highest BP', return {
returnType: '', ...a,
158
const listPatientsQuery =
Personal Information trpc.patients.read.useQuery({
import { limit: 100,
Button, q: debouncedQueryValue,
Input, });
Select,
SelectItem, const { data: patient } =
useDisclosure, trpc.patients.findById.useQuery({
} from '@nextui-org/react'; id: patientId,
import moment from 'moment'; withImmunization: true,
import { Key, useEffect, useState } from withMedicalHistory: true,
'react'; withMenstrualHistory: true,
withPregnancyHistory: true,
import { trpc } from '@/utils/trpc'; withSocialHistory: true,
});
import useDebounce from
'@/hooks/useDebounce'; const onPatientSelectionChange = (keys:
Key[]) => {
import { useConsultation } from const selectedKey = keys[0];
'@/components/providers/ConsultationPr
ovider'; if (selectedKey) {
setPatientId(selectedKey.toString());
import { HandlePropChange } from } else {
'@/types'; setPatientId('');
import { Consultation, PatientAdditional } }
from '@/types/database'; return (
import { MemberType } from <>
'@/schemas/patient.schema'; <TypeAhead
className="mb-2"
import DatePicker from inputProps={{
'../../inputs/DatePicker'; label: 'Patient Name',
import TypeAhead from labelPlacement: 'outside',
'../../inputs/TypeAhead'; placeholder: 'Search for patient...',
import AddEditPatient from onChange: (e) =>
'../../Modals/Patients/AddEditPatient'; setQuery(e.target.value),
import { PatientAdditionalInsertable } value: query,
from '@/types/entities'; setValue: setQuery,
isClearable: true,
export default function isRequired: true,
PersonalInformation() { onClear: () => setter({}),
const { setter, data } = useConsultation(); }}
const [query, setQuery] = data={(listPatientsQuery.data?.data
useState<string>(''); ?? []).map((v) => ({
const [patientId, setPatientId] = key: v.id,
useState<string>(''); label: [v.first_name,
v.last_name].join(' '),
const debouncedQueryValue = ...v,
useDebounce<string>(query); }))}
const { isOpen, onOpen, onOpenChange
} = useDisclosure(); onSelectionChange={onPatientSelectionC
hange}
159
: ''
isLoading={listPatientsQuery.isLoading} }${patient?.sex ? ` / ${patient?.sex}`
noDataAvailable={ : ''}`}
<div className="flex flex-col justify- isDisabled
center items-center gap-4 py-5"> />
<p className="text-gray-500 text- <DatePicker
center"> inputProps={{
No patient record available. type: 'text',
</p> label: 'Birth day',
<Button variant="light" labelPlacement: 'outside',
color="primary" onPress={() => radius: 'sm',
onOpen()}> placeholder: '-',
Create New Record isDisabled: true,
</Button> }}
</div> // eslint-disable-next-line
} @typescript-eslint/no-empty-function
> onChange={() => {}}
{(item) => ( value={
<p className="flex justify-between patient?.birth_date ?
items-center"> moment(patient.birth_date).toDate() :
{item.label} null selectedKeys={
<span className="text-xs text- data.additional?.member_type
default-500/80"> ? [(data.additional?.member_type
?? '').toLowerCase() as Key]
{moment(item.birth_date).format('MMM. : []
DD, YYYY')} }
</span> onChange={(e) =>
</p>
)} handlePatientAdditionalPropChange(
</TypeAhead> 'member_type',
<div className="grid grid-cols-2 gap- e.target.value.toUpperCase() as
4"> keyof MemberType,
<Input )
type="text" }
label="Age/Sex" >
labelPlacement="outside" {['Member', 'Dependent'].map((m)
radius="sm" => (
placeholder=" " <SelectItem key={m.toLowerCase()}
value={`${ textValue={m}>
patient?.birth_date {m}
? </SelectItem>
moment().diff(moment(patient?.birth_dat ))}
e), 'years') <= 2 </Select>
? `${moment().diff( <Input
moment(patient?.birth_date), type="text"
'months', label="ATC"
)} mos old` labelPlacement="outside"
: `${moment().diff( placeholder=" "
moment(patient?.birth_date), radius="sm"
'years', isRequired
)} yrs old` onValueChange={(value) =>
160
handleConsultationPropChange('atc', 'Wheezes',
value)} 'Lumps Over Breast',
value={data.consultation?.atc ?? ''} 'Crackles or Rales',
/> 'Retractions',
</div> 'Others',
<AddEditPatient ],
isOpen={isOpen} },
onOpenChange={onOpenChange} HEART: {
firstName={query.split(' ').slice(0, - label: 'Heart',
1).join(' ')} findings: [
lastName={query.split(' ').pop() ?? ''} 'Essentially Normal',
/> 'Displaced Apex Beat',
</> 'Heaves or Trills',
); 'Irregular Rhythm',
} 'Muffled Heart Sounds',
'Murmurs',
Pertinent Findings Per System 'Pericardial Bulge',
'Others',
import { useEffect, useState } from 'react'; ],
import { Input, Radio, RadioGroup, },
Textarea } from '@nextui-org/react'; ABDOMEN: {
label: 'Abdomen',
import { useConsultation } from findings: [
'@/components/providers/ConsultationPr 'Essentially Normal',
ovider'; 'Abdominal Rigidity',
import { HandlePropChange } from 'Hyperactive Bowel Sounds',
'@/types'; 'Palpable Masses',
import { ConsultationPFPSUpdate } from 'Tympanitic or Dull Abdomen',
'@/types/database'; 'Uterine Contraction',
'Others',
const FINDINGS_PER_SYSTEM = { ],
HEENT: { },
label: 'HEENT', GENITOURINARY: {
findings: [ label: 'Genitourinary',
'Essentially Normal', findings: [
'Abnormal Papillary Reaction', 'Essentially Normal',
'Cervical Lymphadenopathy', 'Blood Stained in Internal
'Dry Mucus Membrane', Examination',
'Icteric Sclerae', 'Cervical Dilation',
'Pale Conjunctiva', 'Presence of Abnormal Discharge',
'Sunken Eyeball', 'Others',
'Sunken Fontanelle', ],
'Others', },
], DIGITAL_RECTAL: {
}, label: 'Digital Rectal Examination',
CHEST: { findings: [
label: 'Chest / Breast / Lungs', 'Essentially Normal',
findings: [ 'Enlarge Prostate',
'Essentially Normal', 'Mass',
'Asymmetrical Chest Expansion', 'Hemorrhoids',
'Decreased Breath Sounds', 'Pus',
161
'Others', : []),
], ...(data.patient?.birth_date
}, ?
SKIN_EXTREMITIES: { moment().diff(moment(data.patient.birth
label: 'Skin / Extremities', _date), 'months') <= 24
findings: [ ?[
'Essentially Normal', {
'Edema or Sweating', title: (
'Clubbing', <p className="whitespace-
'Decreased Mobility', nowrap">Pedia Physical Examination</p>
'Cold Clammy', ),
'Pale Nailbeds', content: <PediaClient />,
'Cyanosis or Mottled Skin', },
'Weak Pulses', ]
'Others', :[
], {
}, title: <p className="whitespace-
NEUROLOGICAL: { nowrap">Physical Examination</p>,
label: 'Neurological Examination', content: <PhysicalExamination />,
findings: [ },
'Essentially Normal', ]
'Abnormal Gait', : []),
'Abnormal Position Sense', {
'Abnormal Sensation', title: <p className="whitespace-
'Abnormal Reflexes', nowrap">Pertinent Findings Per
'Poor Memory', System</p>,
'Poor Muscle Strength', content: <PertinentFindingsPerSystem
'Poor Coordination', />,
'Others', },
], {
}, title: <p className="whitespace-
}; nowrap">Doctor's Assessment</p>,
content: <DoctorAssessment />,
export default function },
PertinentFindingsPerSystem() { ];
const { data, setter } = useConsultation();
const resetForm = () => setter({});
const [findingsPerSystem,
setFindingsPerSystem] = useState<{ const handleSubmit = async (
[key in keyof typeof e: FormEvent<HTMLFormElement>,
FINDINGS_PER_SYSTEM]?: { onClose: () => void,
selected: string; ) => {
value: string; try {
};nowrap"> setLoading(true);
Family Planning, Menstrual, and
Pregnancy History const {
</p> patient,
), additional,
content: <MenstrualHistory />, immunization,
}, // medical_history,
] menstrual_history,
162
pregnancy_history, last_period:
selection, typeof
social_history, menstrual_history?.last_period ===
consultation, 'string'
} = data; ?
moment(menstrual_history.last_period).t
if (patient === undefined) { oDate()
throw new Error('Please select a :
patient to proceed.'); menstrual_history?.last_period,
} }
: undefined,
if (consultation === undefined) { pregnancy_history:
throw new Error('Please fill out the
consultation form to proceed.'); computeAgeInMonths(patient?.birth_dat
} e) <= 24 ||
patient?.sex === 'Male'
const { pedia_client } = consultation; ? undefined
: pregnancy_history,
const result = medical_history: {
parseConsultationWithPatient.safeParse({ family: selection?.family
patient, ?{
additional, ...selection?.family,
immunization, past_surgical:
social_history: selection.family.past_surgical,
past_surgical_date:
computeAgeInMonths(patient?.birth_dat selection.family.past_surgical_date,
e) <= 24 }
? undefined : undefined,
:{ personal: selection?.personal
...social_history, ?{
sexually_active: ...selection?.personal,
typeof past_surgical:
social_history?.sexually_active === selection.personal.past_surgical,
'number' past_surgical_date:
? social_history.sexually_active selection.personal.past_surgical_date,
=== 1 }
: : undefined,
social_history?.sexually_active, },
}, consultation: {
menstrual_history: ...consultation,
pedia_client:
computeAgeInMonths(patient?.birth_dat
e) <= 24 || computeAgeInMonths(patient?.birth_dat
patient?.sex === 'Male' e) > 24
? undefined ? undefined
: menstrual_history : pedia_client,
?{ },
...menstrual_history, });
has_family_planning:
!!menstrual_history?.has_family_planning if (!result.success) {
, console.log(result.error.errors);
163
throw new
Error(result.error.errors[0].message); if (params.step <
} STEPS.length - 1) {
return params.next();
type Input = }
inferProcedureInput<AppRouter['consulta
tions']['create']>; handleSubmit(e,
const input: Input = { onClose).catch((err) => console.log(err));
...result.data, }}
}; >
await <ModalBody>{params.content}</ModalB
tCreateConsultation.mutateAsync(input); ody>
resetForm(); <ModalFooter>
onClose(); <Button
color="default"
addToast({ type="button"
message: 'Successfully created a new variant="light"
consultation.', onPress={params.step > 0 ?
type: 'success', params.previous : onClose}
}); >
} catch (err) { {params.step > 0 ? 'Previous
if (err instanceof Error) { Step' : 'Cancel'}
addToast({ </Button>
message: err.message, <Button
autoClose: 5000, color="primary"
type: 'danger', type="submit"
}); isLoading={loading}
} isDisabled={loading}
} finally { >
setLoading(false); {params.step < STEPS.length
} -1
}; ? 'Next Step'
: 'Submit Record'}
return ( </Button>
<> </ModalFooter>
<Modal {...defaultProps} {...props}> </form>
<ModalContent> )}
{(onClose) => ( </Stepper>
<> </>
<ModalHeader className="flex )}
flex-col gap-1"> </ModalContent>
New Consultation Record </Modal>
</ModalHeader> </>
<Stepper steps={STEPS}> );
{(params) => ( }
<form
action="" Edit Consultation
method="POST"
onSubmit={(e) => { import { trpc } from '@/utils/trpc';
e.preventDefault(); import {
164
addToast({ variant="light"
message: 'Successfully updated a onPress={params.step > 0 ?
consultation.', params.previous : onClose}
type: 'success', >
}); {params.step > 0 ? 'Previous
} catch (err) { Step' : 'Cancel'}
if (err instanceof Error) { </Button>
addToast({ <Button
message: err.message, color="primary"
autoClose: 5000, type="submit"
type: 'danger', isLoading={loading}
}); isDisabled={loading}
} >
} finally { {params.step < STEPS.length -
setLoading(false); 1
} ? 'Next Step'
}; : 'Save Changes'}
</Button>
return ( </ModalFooter>
<Modal {...defaultProps} {...restProps}> </form>
<ModalContent> )}
{(onClose) => ( </Stepper>
<> </>
<ModalHeader className="flex )}
flex-col gap-1"> </ModalContent>
Update Consultation Record </Modal>
</ModalHeader> );
<Stepper steps={STEPS}> }
{(params) => (
<form View Consultation
action=""
method="POST" import { trpc } from '@/utils/trpc';
onSubmit={(e) => { import {
e.preventDefault(); Button,
Link,
if (params.step < STEPS.length Modal,
- 1) { ModalBody,
return params.next(); ModalContent,
} ModalHeader,
ModalProps,
handleSubmit(e, useDisclosure,
onClose).catch((err) => console.log(err)); } from '@nextui-org/react';
import moment from 'moment';
}}
import { FormEvent, useEffect, useState } from
> 'react';
import EditConsultation from
<ModalBody>{params.content}</ModalB './EditConsultation';
ody> import { useConsultation } from
<ModalFooter> '@/components/providers/ConsultationProvid
<Button er';
color="default"
type="button" type ViewConsultationModalProps =
Omit<ModalProps, 'children'> & {
167
Appendix H
Curriculum Vitae
172
173
174
175
176