diff --git a/figures/components-macro.drawio b/figures/components-macro.drawio new file mode 100644 index 0000000..3789b1c --- /dev/null +++ b/figures/components-macro.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/figures/components-macro.png b/figures/components-macro.png new file mode 100644 index 0000000..f60cc9c Binary files /dev/null and b/figures/components-macro.png differ diff --git a/figures/icon-bloodpressure.svg b/figures/icon-bloodpressure.svg new file mode 100644 index 0000000..47b6201 --- /dev/null +++ b/figures/icon-bloodpressure.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + diff --git a/figures/icon-bluetooth.svg b/figures/icon-bluetooth.svg new file mode 100644 index 0000000..1ee4e36 --- /dev/null +++ b/figures/icon-bluetooth.svg @@ -0,0 +1,53 @@ + + + + + + + + + + diff --git a/figures/icon-cloud.svg b/figures/icon-cloud.svg new file mode 100644 index 0000000..e6a8f0f --- /dev/null +++ b/figures/icon-cloud.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/figures/icon-database.svg b/figures/icon-database.svg new file mode 100644 index 0000000..b709301 --- /dev/null +++ b/figures/icon-database.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/figures/icon-graph.svg b/figures/icon-graph.svg new file mode 100644 index 0000000..9300fd4 --- /dev/null +++ b/figures/icon-graph.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/figures/icon-notification.svg b/figures/icon-notification.svg new file mode 100644 index 0000000..d627eea --- /dev/null +++ b/figures/icon-notification.svg @@ -0,0 +1,62 @@ + + + + + + + + + + diff --git a/figures/icon-smartwatch.svg b/figures/icon-smartwatch.svg new file mode 100644 index 0000000..39f71d1 --- /dev/null +++ b/figures/icon-smartwatch.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figures/icon-stethoscope.svg b/figures/icon-stethoscope.svg new file mode 100644 index 0000000..9ace3b5 --- /dev/null +++ b/figures/icon-stethoscope.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/figures/icon-thermometer.svg b/figures/icon-thermometer.svg new file mode 100644 index 0000000..39c2e07 --- /dev/null +++ b/figures/icon-thermometer.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + diff --git a/figures/icon-user.svg b/figures/icon-user.svg new file mode 100644 index 0000000..23cc4a2 --- /dev/null +++ b/figures/icon-user.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/proposal/proposal.tex b/proposal/proposal.tex index d399fcc..07db082 100644 --- a/proposal/proposal.tex +++ b/proposal/proposal.tex @@ -39,38 +39,38 @@ Clinical deterioration is a critical concern in healthcare, particularly for vulnerable populations such as the elderly and chronically ill patients. It refers to a decline in a patient's health status and may lead to adverse outcomes, including hospitalization, longer stays in intensive care units, and increased healthcare costs. -Early warning scores (EWS) have been widely adopted internationally for early detection of deteriorating patients\cite{downey_strengths_2017}. +Early warning scores (EWS) have been widely adopted internationally for preemptive detection of deteriorating patients\cite{downey_strengths_2017}. A large body of scientific evidence validates the effectiveness of EWS in assessing severity of illness, and in predicting adverse clinical events, -such as severe deterioration, likelihood of ICU admission, and mortality, both on hospital wards\cite{subbe_validation_2001, buist_association_2004, paterson_prediction_2006, alam_exploring_2015, bilben_national_2016, brekke_value_2019} +such as severe deterioration, likelihood of intensive care unit (ICU) admission, and mortality, both in hospital wards\cite{subbe_validation_2001, buist_association_2004, paterson_prediction_2006, alam_exploring_2015, bilben_national_2016, brekke_value_2019} and in ambulatory care \cite{ehara_effectiveness_2019, burgos-esteban_effectiveness_2022, paganelli_conceptual_2022}. -Two common implementations are the \textit{Modified Early Warning Score} (MEWS) and the -\textit{National Early Warning Score 2} (NEWS2)\cite{burgos-esteban_effectiveness_2022}. +Two commonly used clinical scores are the \textit{National Early Warning Score 2} (NEWS2) and the +\textit{Modified Early Warning Score} (MEWS)\cite{burgos-esteban_effectiveness_2022}. Both are calculated by capturing various vital parameters from the patient at a specific point in time, followed by numerical aggregation of the -captured data according to the specifically used score\cite{subbe_validation_2001, noauthor_national_2017}. -For MEWS, each type of vitals parameter is assigned an individual score based on which range it is in. +captured data according to the score being used\cite{subbe_validation_2001, noauthor_national_2017}. +For MEWS, each measured physiological parameter is assigned an individual score based on which range it is in. +The ranges for scoring each parameter are shown in table \ref{mews-table}. The individual scores are then added together to produce the final MEWS. -The ranges for individual scores for each type of vital parameter is shown in table \ref{mews-table}. \begin{table}[!h] \noindent\adjustbox{max width=\textwidth}{ \begin{NiceTabular}{l>{\columncolor{red!15}}c>{\columncolor{orange!15}}c>{\columncolor{yellow!15}}c>{\columncolor{green!15}}c>{\columncolor{yellow!15}}c>{\columncolor{orange!15}}c>{\columncolor{red!15}}c}[hvlines,colortbl-like] \hline - & $\mathbf{+3}$ & $\mathbf{+2}$ & $\mathbf{+1}$ & $\mathbf{+0}$ & $\mathbf{+1}$ & $\mathbf{+2}$ & $\mathbf{+3}$ \\ + Individual Score & $\mathbf{+3}$ & $\mathbf{+2}$ & $\mathbf{+1}$ & $\mathbf{+0}$ & $\mathbf{+1}$ & $\mathbf{+2}$ & $\mathbf{+3}$ \\ \hline - Systolic Blood Pressure [mmHg] & $<70$ & $71-80$ & $81-100$ & $101-199$ & & $\geq 200$ & \\ + \textbf{Systolic Blood Pressure} [mmHg] & $<70$ & $71-80$ & $81-100$ & $101-199$ & & $\geq 200$ & \\ \hline - Heart Rate [bpm] & & $<40$ & $41-50$ & $51-100$ & $101-110$ & $111-129$ & $\geq 130$ \\ + \textbf{Heart Rate} [bpm] & & $<40$ & $41-50$ & $51-100$ & $101-110$ & $111-129$ & $\geq 130$ \\ \hline - Respiratory Rate [bpm] & & $<9$ & & $9-14$ & $15-20$ & $21-29$ & $\geq 30$ \\ + \textbf{Respiratory Rate} [bpm] & & $<9$ & & $9-14$ & $15-20$ & $21-29$ & $\geq 30$ \\ \hline - Temperature [°C] & & $<35$ & & $35-38.4$ & & $\geq 38.5$ & \\ + \textbf{Temperature} [°C] & & $<35$ & & $35-38.4$ & & $\geq 38.5$ & \\ \hline - AVPU score & & & & alert & reacting to voice & reacting to pain & unresponsive \\ + \textbf{AVPU} & & & & alert & reacting to voice & reacting to pain & unresponsive \\ \hline \end{NiceTabular} } -\caption{\label{mews-table}MEWS calculation thresholds} +\caption{\label{mews-table}MEWS calculation ranges} \end{table} Traditionally, doctors and nursing staff perform collection and evaluation of the data manually, inputting data into an EWS-calculator by hand. @@ -87,7 +87,6 @@ commercially available\cite{noauthor_visi_nodate, noauthor_equivital_nodate, noa %Javanbakht et al. found that continuous vitals monitoring is more cost-effective than intermittent monitoring\cite{javanbakht_cost_2020}, however the findings of this study should be taken lightly due to potential bias reporting. - \section{Motivation} % TODO EWS makes prediction value better than monitoring abnormalities in single vital signs @@ -105,20 +104,21 @@ assess their practicability for remote monitoring of at-risk patients at home. Some studies have examined monitoring vital signs of at-home-patients for abnormalities in an experimental setting, however in most of them, no automated EWS calculations were made\cite{archip_iot_2016, azimi_medical_2016, chowdary_efficient_2018, yeri_iot_2020, lee_all-day_2020, athira_design_2020, phaltankar_curaband_2021, thippeswamy_prototype_2021}. In 2015, Anzanpour et al. developed a monitoring system which collects vitals data and calculates EWS, however due to limited or nonexistent -availability of wireless sensors for all vital signs relevant to EWS, the work was limited to using a laboratory prototype +availability of wireless sensors for all relevant vital signs, the work was limited to using a laboratory prototype and required manual interaction in transferring vitals data\cite{anzanpour_internet_2015}. Sahu et al. documented their development of an EWS-supported digital early warning system using the PM6750\cite{sahu_internet--things-enabled_2022}, an experimental vitals data monitoring device capable of taking continuous measurements in a laboratory setting\cite{noauthor_pm6750_nodate}. -However, their methodology of real-time EWS calculation using data gathered in the laboratory is inconsistent and was not demonstrated. +However, the methodology they used to calculate EWS in real-time with laboratory data is both inconsistent and weak. -In summary, with the current availability of wearable, networked biosensors and the effectiveness of EWS in medical facilities, combining -both aspects presents an important and interesting research opportunity which could help reduce mortality and improve clinical outcomes -for patients at risk of deterioration, both in their homes and on the go. +In summary, with the current availability of wearable, networked biosensors and the validated effectiveness of EWS in medical facilities, +combining both aspects presents an important and interesting research opportunity which could help reduce mortality and improve clinical +outcomes for patients at risk of deterioration, both in their homes and on the go. %Patients appreciate the face-to-face aspect of early warning score monitoring as it allows for reassurance, social interaction, and gives them further opportunity to ask questions about their medical care\cite{downey_patient_2018}. %Taking continuous measurements is superior to measuring intermittently\cite{gronbaek_continuous_2023, shaik_remote_2023}. +\newpage \section{Objectives} The objective of this research is to explore the practical feasibility of using an existing, clinically validated EWS to remotely monitor @@ -127,42 +127,68 @@ utilizing smart medical sensor devices. Taking measurements using the devices should be as easy and unintrusive as possible for the patient, enabling them to take vital sign readings easily from the comfort of their home or while out of the house. -MEWS will be used as an EWS for deterioration monitoring. -Furthermore, individual vital signs will be monitored for abnormalities. -The following vital signs will be captured: +This will be accomplished by developing and subsequently evaluating a digital system capable of capturing, processing and monitoring patient +vitals data. +The system will consist of a network of smart medical sensors and a centralized web application used to store and process the data. +Patients and, potentially, medical staff can interact with the application to visualize and utilize captured data. +In addition to monitoring individual physiological parameters for abnormalities, the application will calculate the patient's current +MEWS, and send alerts when an increased risk of deterioration is detected. +A visualization depicting the main flow of data in the system is shown in figure \ref{system-components-macro}. +\begin{center} + \begin{figure}[h] + \includegraphics[width=\textwidth]{../figures/components-macro.png} + \caption{\label{system-components-macro}Data flow of the proposed early warning system} + \end{figure} +\end{center} + +The following vital signs will be captured and processed by the application: \begin{itemize} \item Heart Rate (HR) \item Blood Pressure (BP) - \item Respiratory Rate (RR) \item Body Temperature (TEMP) \item Blood Oxygen Saturation (SPO2) + \item Respiratory Rate (RR) + \footnote{ + Determining the respiration rate of a mobile subject accurately using currently available electronic monitoring equipment + presents a major challenge. + Leveraging available SPO2 readings alongside asking the subject whether they are experiencing any shortness of breath + may, however, provide a suitable compromise. + } \item AVPU Score + \footnote{ + Determining the AVPU score of a patient requires examination by qualified medical staff, but prompting + the user to answer a simple question coherently to determine whether they are alert or not may be a suitable option. + } \end{itemize} -The following smart medical devices will be used to take vital sign measurements: - +The devices listed in table \ref{device-table} will be used to measure the patient's vital signs, while +the web application and its alert system prompts the patient periodically to take new measurements. \begin{table}[!h] \noindent\adjustbox{max width=\textwidth}{ \begin{NiceTabular}{lll}[hvlines,colortbl-like] \hline \textbf{Device Name} & \textbf{Device Type} & \textbf{Captured Vitals Parameter} \\ \hline - \href{https://www.withings.com/de/en/scanwatch}{Withings Scanwatch} & Wearable Smartwatch & HR, SPO2, RR (sleeping) \\ + \href{https://www.withings.com/de/en/scanwatch}{Withings Scanwatch} & Wearable Smartwatch & HR, SPO2, RR (while asleep) \\ \hline \href{https://www.withings.com/de/en/thermo}{Withings Thermo} & Handheld Smart Thermometer & TEMP \\ \hline \href{https://www.withings.com/de/en/bpm-core}{Withings BPM Core} & Smart Blood Pressure Cuff & BP, HR \\ \hline + Patient's phone & Smartphone & AVPU \\ + \hline \end{NiceTabular} } -\caption{\label{device-table}Smart Devices used for data capture} +\caption{\label{device-table}Smart devices used for data capture} \end{table} -This will be accomplished by designing and developing a web application that can capture and process vitals data from a wide range of -smart medical sensors, and accurately calculates the MEWS based on the captured data. -If the calculated value lies outside of the acceptable MEWS threshold, both the patient and medical staff can be alerted, -allowing preemptive action to be taken. +Following the technical implementation of the described system, its day-to-day usability and effectiveness will be evaluated in +a case study. +% TODO set timescale +A test subject, representing a patient recently dismissed from an accident and emergency hospital department (A\&E) will be using +the system for a week both from home and while away from home. +\newpage \section{Tasks} \newpage